集中力をあげてきた

久しぶりの月曜日はいつも元気!今週もがんばるー。

お仕事

心・技・体が揃ってきた。さらに集中力をあげていく。

開発

今日は ajax リクエスト周りの処理を実装した。Pyramid のルーティングとビューの関連付けが分からなくて、ググったら stackoverflow にいくつか見つかるけど、その中でこれが一番分かりやすかった。

Pyramid の URL ルーティングとビューの関連付けは Configurator の add_view() で行っているようだけど、これがドキュメント見てもパラメーターがたくさんあって分からない。

Kotti は、このパラメーターの context を使って、context に紐づく URL にビューを追加している。で、ajax リクエスト向けには "xhr=True" を設定して新たにビューを追加するだけで良かった。すごく簡単で context ベースだから js 側でもリクエスト URL を気にする必要がないし、POST パラメーターもかなり削減できる。

Pyramid will allow you to become productive quickly, and will grow with you; it won’t hold you back when your application is small and it won’t get in your way when your application becomes large.

Pyramid Introduction — The Pyramid Web Framework v1.10.4

Pyramid は開発者と共に成長し、必要になるまでその開発者のやり方を邪魔しないといったことが書かれてるけど、add_view() 関数1つとってもパラメーターがたくさんあって、もちろん私は全て理解できないけど、いまは context ベースのビュー追加と通常と ajax リクエストのビュー追加を覚えた。

知れば知るほど、その凄さが分かってくるような、そういう気持ちになった。

AWS (EMR) の API は、UTC の日付時刻データを文字列で返すため、それを任意のタイムゾーンへ変換する方法を調べた。Linux/Mac OS X だと、"/usr/share/zoneinfo" 配下のタイムゾーンファイルを使うみたい。

from operator import methodcaller
from dateutil.parser import parse
from dateutil import tz

format_date = methodcaller("strftime", "%Y/%m/%d %H:%M:%S")

def main():
    """
    >>> main()
    UTC: 2012/07/19 05:04:28
    JST: 2012/07/19 14:04:28
    HKHKG: 2012/07/19 13:04:28
    """
    dt = parse(u'2012-07-19T05:04:28Z')
    print "UTC:", format_date(dt)

    local_dt = dt.astimezone(tz.tzlocal())
    print "JST:", format_date(local_dt)

    hongkong_dt = dt.astimezone(tz.gettz('Asia/Hong_Kong'))
    print "HKHKG:", format_date(hongkong_dt)
  • map に渡す関数のキーワード引数の変更

個人的にリスト内包表記よりも map() が好き。ふと、キーワード引数なら partial() (カリー化?) を使ってできるかな?とやってみたらできた!

def f(x, y=2):
    return x ** y

def cube(data):
    """
    >>> cube(range(2, 5))
    [8, 27, 64]
    """
    from functools import partial
    return map(partial(f, y=3), data)

Kotti のデフォルト UI は Bootstrap を使っている。

これまで触れる機会がなかったけど、シンプルでドキュメントみたら、かなり充実している気がする。本当は前に使ったことがある jquery-ui を使おうと思ってたけど、せっかくの機会だからこのまま twitter bootstrap を使う。未知のライブラリ/ツールに触れるのは楽しいね。