Python

名前解決がパフォーマンスに与える影響

http://blog.miraclelinux.com/asianpen/2008/05/python-code-rea.html#more でも実験されていますが、もう少し細かいケースで試してみました。scope_test.py def with_local(num): l = [] l_value = True for i in xrange(num): l.append(l_value) def with…

Python Code Reading 01

5/9 19:00 - 行ってきました。予備知識的な資料をまとめて発表する係、ソースコードリーディングの進行をする係でした。へたくそな進行でしたが、柴田さんはじめ皆さんに色々つっこんでいただいて勉強になりました。資料はこちらに上げてあります。 http://g…

tw.forms

数日前に新しいサーバをセットアップしてて気がついたこと。ToscaWidgetsでのフォームの実装twFormsの名前がtw.formsに変わっていた。だもんで easy_install twFormsがこけた。 easy_install tw.formsとしましょう。というだけの話。 ただし最新版では色々モ…

whichコマンド

which コマンドの実装 id:t2y-1979:20080409#1207749772whichはPATHを頭から調べて最初に見つけたものを返すので、 順序を保持しないsetに入れるとまずい ループをbreakしないと最後に見つけたものを出力してしまう と思います。 >>> set(['a', 'b', 'c', 'd…

テストケース生成スクリプト

最近「テスト可能なコードが良いコード」と教わり、そういう観点でコーディングを進めてみようと思ってます。今考えてる進め方はこんな感じです。 まず、実際に使うためのコードを大まかに書きます。この時点では、ほとんどメソッド名だけ。頭の中でなるべく…

Pythonで転置インデックスによる検索システム

山下たつをさんの転置インデックスによる検索システムを作ってみよう!のコードをPythonで真似してみました。Python2.5じゃないと動きません。 ファイルフォーマットや使い方はそのままですが、フォーマット検査をちゃんとやってないです。正規表現のキャプ…

ブログの内容をマインドマップ風に表示する「ブログ関心マップ」

ミニサービスを新しく公開しました。ブログのURLを入力すると、フィードを探してテキストを読み込み、マインドマップ風の「関心マップ」を生成して表示します。要Flash Player 9です。ブログ関心マップ このブログを読み込ませると上のようになります。色分…

TurboGearsアプリのロケール設定

TurboGearsのメモ。Mariciは一応英語と日本語の表示に対応している。(一部英語のみの箇所もあったり混乱があるので整備中)TurboGearsはデフォルトでブラウザの言語設定を判別してくれるのだけど、ユーザ設定などでロケールをユーザごとに制御したい場合も…

マインドマップ風Webサービス Marici

現在所属している会社でこんなものを作ってます、というのをちょっとだけご紹介します。 PythonのフレームワークTurboGearsで作っています。TurboGearsに関しては開発過程で気がついたTipsなどいくつかありますので、またあとで書きます。Marici自分の考えの…

テスト時に自動でcreateTable

TurboGearsのテスト時のDBにはたいていsqlite:///:memory:を使う。余計な環境を気にする必要がないのでこれは便利だと思う。 ただし、毎回テーブルをcreateしなおす必要がある。以下SQLObjectの話。「tg-admin quickstart -i」で自動生成したregister_model.…

ASPN : Python Cookbook : Autoslots

インスタンス変数を固定する__slots__というのがある。それを自動で設定するメタクラスのレシピ。 inspectモジュールでソースコードを取ってきて構文解析させるという強引な方法をとっているようだ。メタクラスについてはASPN : Python Cookbook : Semi-auto…

Tumblrへの投稿メール文字化け対策

Tumblrをメモ代わりに使おうかなと思った。Tumblrはメール投稿のための送信先アドレスを発行してくれるのだけど、日本語が文字化けする。 なので別アドレスで中継してAPIにPOSTするスクリプトを書いた。誰かすでに作ってそうだが・・・。 POSTできるのはとり…

ASPN : Python Cookbook : Unix rename (mv) front-end with GNU Readline

対話的なmvコマンド。元のファイルだけ引数として渡すと、バッファ上で第2引数を編集して実行できる。 べつに便利そうじゃないが・・・。調べたこと readlineモジュール rlcompleterモジュール shutilモジュール readlineモジュール コマンドライン表示をい…

ASPN : Python Cookbook : emulate collections.defaultdict

Python2.5では標準モジュールにdefaultdictという辞書型のクラスがあってキーが存在しない時のデフォルト値を設定できる。 プチ便利そうなので何かの出現回数のカウントアップとかはこれで。 で、2.4以前でも同じことをするためのレシピ。調べたこと default…

ASPN : Python Cookbook : subscriptable generator

内部キャッシュを使っていてリストのようにアクセスできるジェネレータ、とのこと。 ジェネレータって関数のジェネレータとは違うよね。 キャッシュにはSQLObjectを使っていて富豪的な感じ。PickleColにオブジェクトをそのまんまつっこんでいる。三項演算子…

ASPN : Python Cookbook : Callback Pattern

今日もデコレータ。コールバック関数を書くための簡単フレームワーク的なレシピで、昨日のデコレータの使い方と全然違う。メタクラスを使えばもっとエレガントに書けるかも、とのこと。クラスのstaticmethodをデコレータとして、デコレートされた関数オブジ…

ASPN : Python Cookbook : Recursion/loop prevention function decorator

引数を監視して無限ループを検出するデコレータ。状態を持つデコレータはこうすればきれいに書けるのか。 return decorate()でインスタンスを返す。こいつに__call__を実装しとけばデコレータ関数として呼ばれる。__call__は、引数がすでに使われているかど…

ASPN : Python Cookbook : print statement: battle with UnicodeEncodeError

Python Workshop the Edgeの懇親会で少し話に出たけど、UnicodeEncodeError、UnicodeDecodeErrorの動きが微妙に分からない。同じ標準出力に吐くのでも、ファイルにリダイレクトしたらエラーになるとか。でこれはエラーが出る場合は16進表記で書き出すという…

ASPN : Python Cookbook : Semi-automatic resource management with AutoClose

"Python does not make any guarantee at all about *when* the destructor will be called."というわけで、__del__に書いたコードが想定どおりに動かないケースが紹介されている。 で終了時に確実にインスタンスの後かたづけをするためのレシピ。AutoClose…

twipediajpのその後ですが。

add返しは手動でやってるので、このところの体調不良もあってタイムラグが出てしまいました。 addしてくれた方、遅くなってすみません。 スクリプト自体も自宅ネットワークの不調などで落ちていた時間が多々あったようです。 DMしてくれた方、返信できてなか…

Wikipediaを検索してくれるTwitterロボットユーザ

ずっと使ってなかったここを使うか。 Pythonの練習をかねて、Twitterのダイレクトメッセージを受け取り、Wikipediaを調べて返信するロボットユーザを作ってみました。下にソースを載せます。 Python2.4+elementtree or Python2.5で動いてます。 実際のロボッ…