2012-03-24
Djangoでプロファイラを使うためのツール
PythonにはcProfileやhotshotのような便利なプロファイラが言語自体に組み込まれてます。
ですが、これをDjangoのようなWebフレームワークと連携するのは、結構骨です。で、いい感じにプロファイラないかなーと思ったら、すでにとっくに誰かが作ってました。
で、備忘録の意味も込めてメジャーなものを書いときます。
1.django-debug-toolbar
だいたいここに書いてある。
http://d.hatena.ne.jp/shohu33/20090920/1253467859
解析内容はリクエスト内容、実行されたSQLと処理速度、セッティングファイルの内容とかが見れる。
重いSQLの検出に、自分でqueriesをぐるぐる回してprintするよか手間的にも視覚的にも全然見やすいので便利。
Flaskでも使えるらしい。
http://noisyobject.blogspot.jp/2011/05/debugtoolbarflask.html
2.django_extensions
djangoの拡張コマンドが入ってる。
http://code.google.com/p/django-command-extensions/
その中のrunprofileserverを叩くと、リクエスト処理時にデフォルトでtmp下に.profファイルを作ってくれる。コマンドのオプションでprofファイルの形式も設定できて、KCacheGrindを使うとGUIで子細にpythonプログラムの実行状況が確認できるようです。
オプションや結果は下記リンク先のような感じ。
http://packages.python.org/django-extensions/runprofileserver.html
結果をGUIで確認するためのツールKcacheGrind(brewではQCacheGrind)は、brewでやったらインストールに若干手間取りました。makeする時間が長かったのと、--with-qt3supportオプションつけろやゴルァって怒られたのが主な原因ですが。
brew install qt --with-qt3support brew install qcachegrind
若干表示内容が違うかもしれんので、kcachegrindコマンドのほうもちゃんとインストールして試してみたいところ。
2011-12-12 やること

2011-11-30
Django1.3.1のFieldクラスのrelプロパティ
忘れるので書いとく。
追ってみた感じだと、外部リレーションのオブジェクトが入る。
具体的にはdjango.db.models.fields.related.pyのManyToManyRel、OneToOneRel、ManyToOneRelのいずれか。対象Fieldが外部キーの場合に、どういうリレーションを貼っているかを表現してるっぽい。意味はクラス名のまんまかと。
2011-11-07
PHPのechoをデコレーションするライブラリ
作りました。
Code
https://github.com/nubilum/Console
できること
- println:一行毎に色つけてechoできる
- printAsHTML:HTMLの記法でechoをデコレーションできる
(対応タグはfont、b、strong、u、blinkと独自タグreverseのみ) - confirm:PHPで対話式の処理が行える。
使い方
Console::println("test", 'green', 'black'); Console::printAsHTML("<font bgcolor='green' color='white'><b>テスト</b><reverse>するよ!</reverse></font>"); Console::printAsHTML("<font bgcolor='black' color='blue'><u>テスト</u><r>するよ!</r></font>"); Console::printAsHTML("<blink><strong><u>テスト</u>するよ!<>>><><><></strong></blink>"); var_dump(Console::confirm("このまま実行しますか?"));
なんでこんなん作ったん?
コマンドラインでPHPスクリプトを叩く時に、エラーメッセージと正常系メッセージが普通に流れてると、ごちゃごちゃでよーわからんくなるので。というか、なったので。
ぐぐった感じだとPythonとかはPHPに比べると楽に実装できるようなので、いらんなーと思ったので、今回はPHPで。
反省点
printAsHTML、実装した後に気づいたが、これ普通にDOMとして解析したほうがコードがめっちゃシンプルになったよなぁ。。。
今のままだとバグありそうだし、あとで直そ。
2011-11-03
Google Developer Day 2011 Japan 開始前
というわけで、GDD2011JP参加してきました。
1記事に無理やりまとめても見づらいので、基本セッション毎に記事分けて、逐次更新します。
差し当たり、ここでは入口付近の写真でものっけます。
ウェブアプリにおけるデータアクセスと本人認証のためのOAuthとOpenID
Google, GDD2011JP, OAuth, OpenID
- 発表者: @tmaesaka
- 発表資料:あとで公開されるらしい
デベロッパー向けのAndroidマーケット情報
- 発表者:Tony Chan
- 概要:開発者向けのAndroidマーケットの新機能について
Webアプリでのマネタイズ
- 発表者:Peng Ying
- 概要:Chrome Web Storeで儲ける方法について
- 発表資料:http://bit.ly/gddmoney

