2009-01-01から1年間の記事一覧

','.join() がなぜキモイのか

Ruby厨とPython厨が平行線の議論をしていたので、まとめてみる。 オブジェクト指向的にキモイ? str.join() 処理での登場人物は2人いる。連結文字(区切り文字=separator)、連結される文字列の列だ。 この二つを比べると、「連結される文字列の列」が情報的に…

Windows上での IPython というか Python+readline について

Windows 用 Python に移植された readline は二つある。 ひとつは、 UNC Python Tools の Python readline http://sourceforge.net/project/showfiles.php?group_id=82407&package_id=84552 もうひとつは、 IPython の開発元が開発している PyReadline http:…

PyQt 4.5 リリース

ダウンロードページはこちら。 http://www.riverbankcomputing.co.uk/software/pyqt/download今回から Python 3.0 がサポートされている。

print_function

http://d.hatena.ne.jp/kazkun/20090529/1243560131 他の言語の経験が長いためか、Pythonの面倒なところ、嫌なところはたくさんでてくる。※例えばprintで最後を改行もせず空白も空けない事ができないとか、副作用を持ったプロシジャが値を返してくれないとか…

PyQT 4.5 もうすぐ

Python 3.0 に対応したり、signal/slot周りをPythonicに改良した PyQT 4.5 が早ければ今週末にもリリースされる。 PyQtアプリの開発環境構築〜開発〜配布までをまとめた本でも書けば流行るのかな。

logging.basicConfig() はすべてのログ出力に先立って呼び出す必要がある

logging.basicConfig() はルートロガーがまだ初期化されていない場合に初期化する関数だけど、一度でもログを出力すると自動でルートロガーが初期化されてしまうので basicConfig() は無効になってしまう。 import logging import foo ... if __name__ == '_…

IPython の起動が重くなったら

history のためすぎを疑う。%clear shadow_compress か %clear shadow_nuke かを試すと良い。詳しくは %clear?

Pythonプログラムがメモリを大量に使っているとき

もし想定以上のメモリを Python プログラムが消費しているのであれば、ループの中で循環参照が生まれていることや、回収不能オブジェクト(循環参照なうえに __del__ メソッドが存在するためにgcがどこから循環を切っていいのか判らないオブジェクト)が存在し…

lxml ではなるべく attrib を使わない方が良い

lxml の Element.attrib は、 _Attrib という libxml への Proxy オブジェクトを生成する。この Proxy オブジェクトは、 _Element という Proxy オブジェクトと循環参照になっている。 大規模なxml処理においては、この循環参照によって gc の間にメモリを食…

日本語Windowsでmercurialを使うときは、 win32mbcs よりも fixutf8 を使おう

mercurialに付属する拡張 win32mbcs は、 0x5c 問題は解決してくれるものの、cp932のファイル名をそのままリポジトリに入れてしまうというhgの仕様自体は変えない。 それに対してfixutf8拡張は、ファイルアクセスAPIをごっそりすげ替えてutf8のbyte文字列で…

PyQt で画像を扱う等するプログラムをfreezeするときの注意

"site-packages/PyQt4/plugins" 以下に配置されているファイルはQtのプラグインで、たとえば "plugins/imageformats" 配下に gif やら jpeg やらの codec が入ってる。 PyQtを使うアプリをpy2exeなどでfreezeすると、これらのcodecが利用不可能になり、JPEG…

PyQtのライセンス

http://d.hatena.ne.jp/gunyara-python/20090508/pyqt45_lxml_install_and_acquire_windows_binary 最近LGPL 2.1もライセンスの選択肢に入ったので、もはや避ける理由もないだろう。 Qtのライセンスは4.5から GPL/LGPL/商用ライセンス になったけど、PyQt4.4…

py2exe では 'mbcs' が使えない

'mbcs' はPython起動時に site.py で適当なcp???へのaliasとして登録される。 py2exeではsite.pyが動かないので'mbcs'は使えない。 py2exe のオプションで、site.pyの代わりになるスクリプトを指定可能だったはずだけど、とりあえず今は社内ツールで使ってた…

bzrでlaunchpadから高速にbranchするには

bzr

Launchpadのbzrが1.13にupgradeされた。クライアント側が1.14を使えば速くなる。 あと、httpはどうしても遅い。Launchapdにアカウント作って、bzr+sshを使うべき。

VirtualBox Guest SMP 対応?

http://www.virtualbox.org/changeset/19015 wktk

Ubuntu Linux で virtualenv した Python を使うと、 meld やら hamster やらが動かない

Ubuntu Jaunty に upgrade した。 幾つかの拡張モジュールが動かなくなったのを期に、常用のPython環境を自分でビルドしたものからvirtualenvに変更。 .bashrc で PATH に追加した。 すると、meldをはじめ幾つかのパッケージが動かなくなった。見てみると、 …

Python 2.6.2 の logging モジュール regression 続き

前回の日記で報告した http://bugs.python.org/issue5768 と同じような問題が FileHandler にもあった。 http://bugs.python.org/issue5170Python 2.6.2 を使っている人は、この問題もFixされてから、 python26-maint から logging パッケージをダウンロード…

Python 2.6.2 リリース && 日本人に取っては割とキツいバグ混入

loggingモジュールがunicodeメッセージをエンコードして出力するか否かを判定する部分の 単純なミスで、unicodeメッセージが出力ストリームの .encoding にエンコードされない。 logging.error(u"ほげ")とかやると文字化けする。 http://bugs.python.org/iss…

Ubuntu 9.04 Jaunty Jackalope を VMWare Player で動かすとマウス統合が動かない問題の解決法

Jaunty を VMWare にインストールしたら、マウス統合が動かなかった。原因は、 xserver-xorg-input-vmmouse が マウスが vmmouse かどうかを判定するのに vmmouse_detect というコマンドを使っているんだけど、そのコマンドが存在しないこと。解決法は、 mde…

new-style class はえー

Python のドキュメントビルドシステムになってる Sphinx + docutils を最適化中。以下はPython の trunk で html ドキュメントをビルドするのにかかった時間 @ Core2 Duo 6300 (1.86GHz) # 最適化前 333.76user 64.36system 6:39.46elapsed 99%CPU (0avgtext…

Pythonの次のバージョン管理システムがMercurialに決定

1年くらい前から、マスターのSubversionとミラーのMercurial/Bazaar/Gitを運用して、Subversionの次のSCMを選んでいたPython。 Gitはもっと前に却下されていたんだけど、とうとう今日、GuidoがMercurialに決定したとMLでアナウンスした。理由は、 Mercurial…

<del datetime="2009-03-29T19:59:21+09:00">mod_wsgi の daemonモードは Linux では sendfile を使えない</del>

ソースコード読んでたら気づいた。 LinuxではUnix domain socketに対してsendfileできないから、daemonモードではsendfile使わないらしい。その場合に 'file_wrapper' 自体を提供していたかどうかは忘れた。environ['wsgi.file_wrapper'] がsendfileを使って…

Py3k はまだ下位互換性を捨てながら進化するべきじゃないか

http://gihyo.jp/dev/serial/01/pythonhacks/0006 format()メソッドはこの演算子を置き換える目的があり追加された機能です。%演算子は,近い将来廃止されることが予告されています。 Python 3.0.1 (r301:69556, Feb 16 2009, 16:14:21) [GCC 4.3.2] on linu…

mod_wsgi は VirtualHost 単位でないと Daemon を分けられない?

WSGIDaemonProcess ディレクティブは、server config か virtual host の context で使える。 http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess なので、 Location 毎にProcessを分けるとかはできない。社内でオレサーバー…

Python3.0 への移行準備

http://coreblog.org/ats/why-python-30-is-still-deprecated 最も大きな理由。それはCで書かれたエクステンションの3.0対応がけっこう大変だから。 ... データベース接続モジュール,テンプレートエンジンとか,お世話になっているCエクステンションは多い…

php vs Python

php を Python と比べると、月に500円のレンタルサーバーで使えるって事以外に良いところ無いよね。 仕様が非合理的(Webアプリも書くプログラマではなく、プログラムも書くWebページ作成者をターゲットにしてる??) 定期的にたたかれてるのに何でみんな使…

インクリメントの速度

php

$ cat test.php $ time php test.php real 0m15.714s user 0m15.073s sys 0m0.588s $ vim test.php $ cat test.php

IPython with Qt

Qt4をIPython上から使う場合、Windows上で普通に ipython を起動すると、QApplicationを作った後のシェルの反応が重くなる。ipython -q4thread で起動するとサクサク。他にも、wxPython, Qt3, Tk なんかのスレッドもある。ipythonの起動オプションは見ておく…

Hack the Cell 2009

振り返り 2月頭に引っ越しで、1月中は引っ越し準備、2月は毎週末スノボ+引っ越しの片付けという状況の中参加したHack the Cell 2009。 1月末にルールの詳細が規定され、それが「当然こういう事だろ」と考えていたものと大幅に違ったためにやる気を喪失して…

MTP用転送ソフト探し中

音楽管理環境をWindowsからLinuxに移行したい。現在持っている音楽フォーマットはいろいろ。flacがメインだけど、ゲームのディレクトリから持ってきた音楽はoggだったりするし、wmaもあったりする。 現在持っている音楽プレーヤーは、iriver T30 (MTP:Media …

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。