Hatena::ブログ(Diary)

Nubilumの日記 このページをアンテナに追加 RSSフィード Twitter

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

できること

  1. println:一行毎に色つけてechoできる
  2. printAsHTML:HTML記法でechoをデコレーションできる
    (対応タグはfont、b、strong、u、blinkと独自タグreverseのみ)
  3. 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("このまま実行しますか?"));

f:id:Nubilum:20111107235015p:image

なんでこんなん作ったん?

コマンドラインPHPスクリプトを叩く時に、エラーメッセージと正常系メッセージが普通に流れてると、ごちゃごちゃでよーわからんくなるので。というか、なったので。

ぐぐった感じだとPythonとかはPHPに比べると楽に実装できるようなので、いらんなーと思ったので、今回はPHPで。

反省点

printAsHTML、実装した後に気づいたが、これ普通にDOMとして解析したほうがコードがめっちゃシンプルになったよなぁ。。。

今のままだとバグありそうだし、あとで直そ。

2011-11-03

Google Developer Day 2011 Japan 開始前

というわけで、GDD2011JP参加してきました。

1記事に無理やりまとめても見づらいので、基本セッション毎に記事分けて、逐次更新します。

差し当たり、ここでは入口付近の写真でものっけます。

続きを読む

基調講演

基調講演行きます。

真面目なレポートはオフィシャルですでに書いてあるので、ざっくり噛み砕きます。

http://googledevjp.blogspot.com/

続きを読む

デベロッパー向けのAndroidマーケット情報

  • 発表者:Tony Chan
  • 概要:開発者向けのAndroidマーケットの新機能について

続きを読む

Webアプリでのマネタイズ

続きを読む

HTML5&Flash、Youtubeの高速化

  • 発表者:Greg Schechter, Phil Harnish
  • 概要:FlashHTML5のお互いの利点、そしてHTML5の今後
  • 余談:会場で配られた赤青メガネはここで使いました

続きを読む

閉会〜懇親会

すべてのセッションを見終え、Igniteを横目に携帯を充電。

ダンスやら漫才やら相当盛り上がっていたようなので、参加しなかったのちょい後悔。。。

次回は見たいなぁ。


運営に関わった方、参加された方、お疲れさまでした!


以下、ちょっとだけ写真。

続きを読む