python
PyPI を安全に利用するために、先日デフォルトで https を利用する pip がリリースされました。 ですがこれで終わりではありません。 pip や easy_install は PyPI のページからリンクを辿ってスクレイピングしてパッケージを探しています。リンク先がhttps…
最初の wsaccel は UTF-8 のバリデート処理だけを高速化していたのですが、 WebSocket Frame のマスク処理も1バイトごとビットでxorをとる処理だったので高速化するようにして、 0.5 をリリースしました。 Tornado はUTF-8のバリデートをしていない (このバ…
個人的に今 dotCloud がアツいです。無料枠を無制限に使える、WebSocketに対応している、設定の自由度がメチャ高いので、ちょっと作ったものを他人に見せたり自分の携帯から見たりするために気軽に作れちゃいます。 さて、 dotCloud で golang を使うとか、 …
wsaccel で、 UTF-8 のバリデートだけでなく、同じく1バイトずつの処理である mask も Cython で実行するようになりました。 UTF-8 のバリデートはテキストフレームのみに行われる処理であり、JSONをバイナリだと言って転送してバリデートをJSONデコーダに…
Python の WebSocket ライブラリの Autobahn と ws4py は、テキストフレームを受信した時にその内容が正しい UTF-8 になっているかどうかをバリデートしています。 このバリデートが1バイトずつの処理を Python でやっているために、 PyPy を使ってない場合…
ちょっと調べてみたら、想像してたよりもライブラリが充実していたので、各ライブラリの特徴をまとめておきます。 AutobahnPython Autobahn が Python 用にサーバー、クライアント用のライブラリを提供しています。 AutoBahn Python は Pure Python で Twist…
id:hnw に感化されて、 Project Eular で遊び始めました。 今のところ Python 3.3 と Haskell で挑戦していて、 Python ならだいたい1分〜5分で解けるけど Haskell だとまだまだどう書いたらいいのかわからない場面が多いですね。これからgoもやっていきます…
Haskellのカッコいいところを紹介してみる をみて、 Python と比較してみようと思います。 以下、 heading は上記記事の heading の引用で、 Python のことではなく Haskell の特徴です。 数学や英語の知識で「読める」表現が多い 一応、 instanceof など多…
Merry, Xmas. Python advent calendar 2012 (#python_adv) 24日目の記事を、ミクパの再放送をBGMにお送りします。 今日は Flask のイケてないところとのつきあいかたを紹介します。 循環 import 問題 app.py 1ファイルだけの構成から成長してファイルを分け…
ipython と virtualenv を同時に使う方法 - Ian Lewis はとても便利な設定なので参考にさせてもらっていたんだけれど、 IPython 0.12 からは設定の方法が変わったのでこの設定方法では動かなくなった。IPython 0.12 での設定方法は、 (1) ipython profile cr…
Ubuntu 12.04 でもまだUbuntuパッケージとして Python 2.6 が提供されているのですが、将来消えるのかもしれないのでそろそろ後方互換性確保用の 2.6 は自前ビルドをしておくことにしました。Python をビルドするとき、 Ubuntu 11.10 からだと思うのですが、…
Python では、下らない問題は、賢く綺麗に解決しようとせずに、 Python 本体が持っている柔軟さを使って強引に解決する方が楽な場合があります。 問題ごとに綺麗な仕組みを作ってしまうと、新しく Python を覚えるひとは無数にある下らない問題の数だけ用意…
更新が滞っているので、 Python-dev の ML の内容を伝える記事を気が向いた時に書くことにします。Python 3.3a1 がリリースされましたが、その直後にコミットされたのが、文字列リテラルのu プリフィックスです。この prefix は、 Python 2 と 3 に同一のコ…
Python のデーモン型のプログラム(具体的に言うと Loggerhead という bzr のリポジトリブラウザ)が大量(具体的に言うと100MB以上)メモリを食っていたので、それを調べた時のメモ。まず、本当にそれだけのメモリを利用しているのかどうかを meliae という…
2011 Pythonアドベントカレンダー(Python3) - connpass の3日目を担当します。Python 3 がリリースされてから、 Python の進化は主に Python 3 で行われ、そこから Python 2 にバックポートできるものがバックポートされています(例: GCのチューニング、辞…
Python のバイナリパッケージは、Linux 環境ではあまり使われない。 ソースからインストールする文化があるのと、Unicode の内部表現を選択する configure オプションなどによってバイナリ互換性が失われるケースがあるからだ。でも、同じLinuxディストリビ…
あるいは、Pythonは参照カウント方式だからGILを排除できないという誤解に対する回答。参照カウントってアトミックなインクリメント・デクリメントさえあればセマフォとか使わないでも並列化できるんで、パフォーマンスが滅茶苦茶落ちるということはない。参…
一部の問題は解くのに利用したパラメータがハードコードされている値と違うことがありますが、一応5000問全部解きました。全体: https://github.com/methane/gdd11/tree/master/slideCythonコード: https://github.com/methane/gdd11/blob/master/slide/_sli…
https://github.com/methane/gdd11/blob/master/hitori/hitori.py問題読んだあとシャワー浴びながら考えて、深さ優先探索で事足りることを確信して一気に書いた。
https://github.com/methane/gdd11/tree/master/webgame普通は Chrome エクステンションとか FireBug のコンソールとかで挑戦すると思うんだけど、HTMLのソースを見た方が早いので、スクレイピングで解いた。
ローカルのファイルシステムの監視。WindowsではGetDirectoryChangesW(だったっけ?)とかいうAPIがあって、Linuxにはinotifyがあるし、Macにもなにか手段があるはずなんだけど、 http://packages.python.org/watchdog/installation.html watchdog というラ…
常識かと思ってたけど、、、 while True: thread.join(0.5) join() メソッドを呼ぶときに、タイムアウトを設定して、ループする。こうすると、KeyboardInterruptを受け取れる。
Pythonの標準ライブラリにはプロファイラがあるが、これは deterministic profiler という種類のプロファイラだ。関数が呼び出されたときと関数から抜けるときに登録したコールバック関数を呼び出す仕組みが用意されており、そのコールバック関数で時間を測…
Flash製アプリの試験用のアクセスパターンを作りたくて gevent を使って簡単なproxy serverを作った。localhostの8000版で立ち上がるので、FoxyProxy などで、特定のドメインに対する proxy として登録してやると、リクエストを再現するのに必要なデータをms…
次の2つのスクリプトは同じに見える。 #!/usr/bin/env python import os for i in xrange(100): cmd = "tail -f /var/log/syslog | cat " os.system(cmd) #!/usr/bin/env python import subprocess for i in xrange(100): cmd = "tail -f /var/log/syslog | …
原則として、PILはeasy_installやpipで問題が起こりやすいので、手動で python setup.py install を行う。*1Ubuntu Natty では、 libjpeg や libpng をはじめ、多くのライブラリファイルが /usr/lib ではなくて /usr/lib/x86_64-linux-gnu *2に置かれている…
Pythonでサブプロセスと対話する - 西尾泰和のはてなダイアリーPython のファイルは、通常のファイルの読み込みの効率を考えて大きめ(8192バイト)のバッファリングを行っているので、ソケット通信やパイプで問題になるケースがある。問題になるケースの一つ…
+ "", "0", [], [0], [1], 0, 1 のうち、 bool(obj) が True になるのはどれか? + True, False, None との比較に == ではなく is を使うことが推奨されるのはなぜか? + s = 'foo'; t = 'foo'; print s is t; の結果が未定義なのはなぜか? + [[0] for i in…
文字列を適当な長さで区切って diff を表示する - forest book のお題だけど、読み逃してる条件が無ければ textwrap で充分。 import textwrap def limit_characters(line, start, width): return textwrap.wrap(line[start:], width) def test_limit_charac…
ごちゃっとしたプロジェクトで、setup.pyみたいなファイルだけでそのプロジェクトのビルドや配置が完結できない場合に役に立つのが paver。でも、そのためにみんなに paver をインストールしてもらうのが気が引ける、という場合、 paver minilib というコマ…