Python

Python で無限大を得る方法

最近知ったのでメモ。float の引数に文字列で "inf" を渡すと inf オブジェクトが返ってきます。 >>> float("inf") inf inf に何を足しても inf です。 >>> inf = float("inf") >>> inf + 1 inf >>> inf + 1 == inf True inf から inf を引いたり、 inf に 0…

PyPI Author になりました

Pyxis は現在オープンソース化を目指して開発が進められています。 その第一歩として Pyxis で利用しているパッケージをオープンソースで公開することにしました。 http://code.google.com/p/pyxis-webframework/ tw.starrating は Amazon の 5つ星みたいな…

Paste:URLMap で VirtualHost

Paste の URLMap を利用すると VirtualHost と同じようなことができる。 [DEFAULT] debug = false email_to = foo@example.com smtp_server = localhost error_email_from = foo@example.com [server:main] use = egg:Paste#http host = 0.0.0.0 port = 5000…

mimetypes.guess_type problem

http://lucumr.pocoo.org/2009/3/1/the-1000-speedup-or-the-stdlib-sucks http://bugs.python.org/issue5401 実行時間を計測してみました。試行1: >>> import timeit >>> setup = "from mimetypes import guess_type" >>> stmt = "guess_type('test.jpg')" …

PEP372 Adding an ordered dictionary to collections

PEP372 Adding an ordered dictionary to collections2008年6月 Armin Ronacher 氏による投稿。早く Python の標準パッケージに取り込んでほしい。Pyxis ではサードパーティの _ordereddict を利用している。posted by id:junya_hayashi

pip の bundle 機能

Pylons および依存パッケージを1つの pybundle ファイルにまとめる。 $ pip bundle pylons.pybundle Pylons 以下のようなパッケージ一覧ファイルを用意して、 requirement オプションで渡すとベター $ cat requirements.txt Beaker==1.2.2 FormEncode==1.2.1…

Porting to Python 3: Do’s and Don’ts

http://lucumr.pocoo.org/cogitations/2008/12/07/porting-to-python-3-dos-and-donts/ の翻訳です。原文のライセンスに従い、この翻訳は Creative Commons ライセンス (http://creativecommons.org/licenses/by-nc-sa/2.0/at/deed.ja) に従います。翻訳の誤…

mod_wsgi: WSGIDaemonProcess

mod_wsgi には embeded mode (Apache のプロセスと一心同体) とdaemon mode があるのですが、小さなWSGIスクリプト以外では daemon mode を使った方が応用が利きます。 そこで、mod_wsgi の daemon mode について調べてみました。まず、 mod_wsgi の daemon …

Pylons におけるデバッグ方法

社内向けに書いたドキュメントですが、汎用的で役に立ちそうなので、少し手を入れて公開することにしました。 ログ出力 ファイルの先頭でログ出力用オブジェクトをを初期化し、以下のようにログを書き出してください。 import logging log = logging.getLogg…

Jinja2

Armin Ronacher が blog に Jinja2 のことを書いていました。http://lucumr.pocoo.org/cogitations/2008/04/13/jinja2-making-things-awesome/それによると、Jinja 2.x では、テンプレートの dynamic inheritance や ネームスペース付きのインクルード({% i…

Pythonの落とし穴

久しぶりに Python の基本的な構文でハマりました。 class ContactForm(BaseForm): class fields(WidgetsList): name = TextField( label_text=u"お名前",) name_kana = TextField( label_text=u"フリガナ",) email = TextField( label_text=u"メールアドレ…

mod_wsgi で WSGI アプリケーションを動かす

Python 合宿で WSGI を多人数で気軽に動かす方法を聞かれたのですが、 mod_wsgi を使えばできると思って、やってみました。 mod_wsgi のインストール 手元のVM は Ubuntu なので、checkinstall でソースからインストールします。 $ sudo aptitude install ap…

SQLAlchemy のメモ

今、Controller でやっていることの一部を MapperExtension SessionExtension でやるとすっきりしそう。MapperExtension, SessionExtension では、insert や commit といった操作の前後にフックをかけられる。Posted by id:junya_hayashi

WSGIをネットワークに例える

先日、WSGIはネットワーク図に似ているよね、という話題で盛り上がりました。 そのときに描いた図がこれです。Cascadeミドルウェアがハブ、Routesがルーター、AuthKitがファイアウォールといった感じで対応しています。それからつい最近、Ian Bickingの過去…

独立した複数のPylons Application を一度に動かす方法

いまだにPaste のことをちゃんと理解していなかった。 paste.app_factory paste.composite_factory paste.filter_app_factory このあたりは、ちゃんと押さえておかなくてはならない。 [filter:main] use = egg:Pyxis#pyxiscomposite /blog = blog /wiki = wi…

Python の raw 文字列を用いて正規表現を書く

任意の文字列に \' をマッチさせようとして、混乱したので書きます。 例題 pattern: \' string: backslash \' single quote 以下、raw 文字列を使った場合と使わない場合で、それぞれ書き方の答え pattern も string も raw 文字列 >>> re.findall(r'\\\'', …

DBに格納したmakoテンプレートをレンダリングする(2)

結局、次のように実装しました。 # -*- coding: utf-8 -*- import inspect import pylons from pylons.templating import render from mako.template import Template from mako.lookup import TemplateLookup class MakoStringProcessor(object): """ rende…

paster setup-app --name=wiki development.ini

When your are using some kind of middleware (ex. "Paste#urlmap") in development.ini, maybe you would like to run a command like this... $ paster setup-app --name=wiki development.ini In default, this command would not behave as expected. (…