Python's strftime dislikes years before 1900

>>> birthday = datetime.datetime(year=1879, month=3, day=19) >>> birthday.strftime("%y/%m/%d") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: year=979 is before 1900; the datetime strftime() methods require year >= 190</module></stdin>…

Review Board

これのおかげで個人的にかなり開発の助けになってます。 皆で寸評できるので差し戻しといったこともなくなって快適開発生活♪

Python で無限大を得る方法

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

RHEL 4 への qdbm-1..8.77 インストールではまった

コンパイルはできるのだが、 $ make checkでテストに失敗する。2〜3時間格闘したが、結局原因は NFS だった。 ローカルディスクで "make check" すると成功。 Cent OS 5 では NFS でもテストに失敗しなかったので、RHEL 4 の NFS 特有の問題か。 RHEL 4 の場…

virtualenv 下で sitecustomize.py が機能しない

virtualenv 下で sitecusotomize.py が機能しないと思ったら、Hardy のせいでした。 https://bugs.launchpad.net/ubuntu/+source/diveintopython/+bug/197219 Hardy では /usr/lib/python2.x/sitecustomize.py が置かれているため、 virtualenv 側で lib/pyt…

Dynamic inheritance

Mako で、条件によって継承テンプレートを変えたかったので、 <%inherit file="/${ c.flg and 'foo' or 'bar' }/index.tpl" /> としたら怒られた。inherit の中では、種々の変数はcontext 変数から取得しないといけないらしい。(参考) 正しくは <%inherit …

Jinja2 Buffet Plugin

Pylons 0.9.6.2 から Jinja2 を利用するための Buffet Plugin を記述しました。 なお、最新の Pylons 0.9.7 はデフォルトで Jinja2 に対応しています。 # -*- coding: utf-8 -*- from jinja2 import Environment from jinja2 import FileSystemLoader, Packa…

PyPI Author になりました

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

書評: 10日で覚える Python 入門教室

初めての経験なのですが、書籍を頂いたのでご紹介いたします。CMS コミュニケーションズの穂刈さん、寺田さんたちが著者に名を連ねている「10日で覚える Python 入門教室」です。翔泳社から送って頂きました。Python の書籍といえば、これまでオライリーの「…

スキル不足?

開発に比してドキュメントの更新が追従しきれていません。 エンジニア気質の面子が多いためか、ソースコードを書くのは得意でも、 それらを一般向けに翻訳する作業はどうも苦手なようで… 開発そのものとは別物ですが、今後の課題に挙げられそうです。

jQuery

Pyxisではフォーム制御にToscaWidgetsを利用しているのですが、 その中でjQueryを提供しているモジュールがあります。 これを活用しない手はない!とうことでただ今鋭意勉強中…jQueryで作る Ajaxアプリケーション作者: 沖林正紀出版社/メーカー: 技術評論社…

気分一新

これまであまり頻繁に更新していませんでしたが、 これからはマメにつけていきたいと思いますので、 どうぞよろしくお願いいたします。

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) に従います。翻訳の誤…

Python Descriptors

いろいろ使えて面白そう。あとでしっかり勉強しよう。 How-To Guide for Descriptors Python Descriptors, Part 1 of 1 Python Descriptors, Part 2 of 2 posted by id:junya_hayashi

レコードの前後のデータを取得する

「pubdate」「modified_at」「id」の3つのフィールドをキーにソートして、特定のレコードの前後を取得する。 def get_neighbors(entry): query = Session.query(DiaryModel) # get neighbors peers = query.filter_by(pubdate=entry.pubdate)\ .order_by(Dia…

VietNam 出張 2

2ヶ月間も更新していないですね、ごめんなさい。 開発が進んでいないわけではなくて、むしろかなり進みました。社内的に、Pyxis を用いたBasic, Lite などの製品を開発しています。8月は丸々VietNam出張でした。数は少ないですが、VietNam 支社でも Pythonis…

Vietnam 出張

6月20日(金)〜6月29日(日)の日程で、Pyxisを用いた開発のトレーニングのために、Vietnam (支社)に出張してきました。Vietnam で印象的だったのは、バイク・バイク・バイク!道はバイクの洪水なうえ信号が少ないため、空気の読めない人は道を渡れません(笑)。…

mod_wsgi: WSGIDaemonProcess

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

SQLAlchemy で任意の select 結果にモデルを結びつける

Mapping a Class against Arbitrary Selectsこんなこともできるんですね。統計情報(アクセスログとか)を扱いたい場合など、group_by の結果をモデルに結び付けて、Pyxis の管理画面で活用できそうです。posted by id:junya_hayashi

Composite patterns in Toscawidgets

Here are two composite patterns. One for Widget, and the other for Validator and Schema.posted by id:junya_hayashi

みんな意外と if __name__ == "__main__" を使っている

site-packages の下で __main__ とか検索すると面白い。皆さん、パッケージのデバッグ用コードをたくさん書いています。posted by id:junya_hayashi

Toscawidgets の Widget の作成例

Toscawidgets のサンプルが少なくて、ちょっと凝ったWidget を作るのに苦労したので共有しときます。 TwoStepSelectField 1番目のSingleSelectField で絞り込み、2番目のSingleSelectField でデータを選択するフィールドセットを実装しました。 twostep.py #…

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"メールアドレ…