Archive for February 2009

Werkzeugで遊ぼう! - とりあえず編

written by shn, on Feb 27, 2009 8:49:00 PM.

ザインに入信したので次はWerkzeugだ!

Werkzeugは小気味の良いWSGIのユーティリティ集で、やはりpocooタンが開発している。pocooタンかわいいよpocooタン
C#よりC++, MFCよりWTL, apacheよりnginxな男はDjangoよりWerkzeugを選ぶのである。

前置きはおいといて、まず開発支援系の機能から試していくことに。

run_simple

werkzeugのHTTPサーバを使った最小コードはこんな感じかしら。手元でテストする分には十分げ

wz_first.py

#! -*- coding:utf-8 -*-
from werkzeug import run_simple

class WSGIApplication(object):
    def __call__(self, environ, start_response):
        writer = start_response('200 OK', [('Content-Type', 'text/plain; charset=utf-8')])
        return ['Hello', 'הלו', 'こんにちわ']

def main():
    run_simple('localhost', 8080, WSGIApplication(), use_reloader=True)

if __name__ == '__main__':
    main()

use_reloader=Trueにすると、forkして、コードに変更がありしだい子プロセスを立ち上げなおす。

スクリプト

wekrzeug.scriptを使うと、コマンドラインからいろいろ出来る!

def main()
    from werkzeug import script

    action_runserver = script.make_runserver(WSGIApplication, use_reloader=True)
    action_shell = script.make_shell(lambda: {'app': WSGIApplication})
    script.run()

コマンドラインから、script.run()を呼び出したフレームのaction_xxxを呼び出せる。
例えば、$ python wz_first.py runserverすると、action_runserverさんが呼び出される。

ワースゴイヤ!

Pythonの最小セット

written by shn, on Feb 24, 2009 6:28:00 PM.

Python(2.6@win32)を起動するだけなら、以下のlibがあれば良いようだ

site
    os
        ntpath (win32)
            stat
            genericpath
            warning
                linecache
                types
        UserDict(win32)
            _abcoll
                abc
        copy_reg

    encodings
        codecs

site.pyはいじって、site-packages等を読み込まないようにしている。

sys.setdefaultencoding('utf-8')とかしないなら、encodings以下もいらないのかな。codings:utf-8なんてスクリプトが読めなくなるかな。

_zipimportは組込みなので、上記パッケージはzipできる。zipすると57KBととてもスッキリ

Boost.Python@MSVCでpython-debuggingが

written by shn, on Feb 23, 2009 6:20:00 PM.

多分これと一緒。 Boost.Pythonをpython-debuggingにしてビルドしたものを使うと、Pythonの関数を呼んだ時に逝くという問題。 環境は恐らくWindowsのみで、うちの場合はboost 1.38.0, MSVC 9, Python 2.6。

原因はpython-debugging=onにしてできる、boost_python-vc90-mt-gy-1_38.dllPython26.dllと、Python26_d.dllの両方にリンクしてるからっぽい。

深く追うのがめんどくさかったので、tools\build\v2\tools\python.jam L:102に、condition = <python-debugging>on ;を挿入して無理矢理解決。

ざっと見た感じ、tools\build\v2\build\toolset.jam L:32initを空で呼んでいるせいで、 python.jamのinitに$(condition)が渡されてないのかなぁ、と。

bjamの引数に-d 7とか渡すとbjam内の引数と関数呼び出しを全部出力できて便利。 (ref: bjam usage)

Zineになりました。

written by shn, on Feb 22, 2009 3:45:00 AM.

WordPressからZineになりました。
Zineといってもセックス教団 ザインの事ではなく、Werkzeug, Jinja2の作者のArmin Ronacherのブログソフトウェアですね。
Pythonで書いてあるブログソフトウェアの中では一番の有望株なんじゃないでしょうか。
インターフェースはWordpressにクリソツ。

みなさんが気になるのは、なんでブログツール変えてんのよって事だと思います。
語るも涙、読むも涙の物語になるのですが、簡単に言えばHDDが吹っ飛んだんですね。
Seagateでも無いのに。 Doblogでも無いのに。

あとはもう五月雨式に
新しいHDDが要る。 > どうせならSSDにしようか。 > SSDにするならAtomにすれば電気代浮くかも! > やってきました秋葉原 > 腹が減ったので久々にじゃんがら > 秋葉に来たついでにドコモショップいったら、クレーマーが貧乏ゆすりしながらクレームしてた > 帰ってセットアップ > ケースを使おうと思ってたHPのML 115はトルクスで唖然 > BIOSがデネー! と思ったら、ジャンパいじらないと出ないらしい。 > DVDよみこまねぇ!と思ったら、ML 115につけてたのはCDドライブで唖然 > FreeBSD 7.1を入れたよ > ダイエット中なのにじゃんがら食べたのがばれて怒られる。
という感じです。