VideoCaptureを試してみる。
Django勉強会 Disk 4
Django勉強会 Disk 4があるということで、
http://www.djangoproject.jp/etude/4/
id:Voluntasさまの日記に
「発表できるネタがあれば発表したい!」
とコメントした。
そしたら、即entryされていた(笑
さて、ネタを作るぞ。
そういや、サイボウズ・ラボは初訪問だ。
なんかおやつを持っていって置き去りにしていこう。
PythonのC拡張でcleanup用のコードを呼びたい!
PythonでC拡張を書くとき、
初期化用の関数はあるのだが(PyMODINIT_FUNC)、
後始末用の関数がない…
こういうときはどうするのがいいのかなあ。
自前で呼べっていうのもめんどくさそうだし。
2日目。
Djangoのドキュメントを読みまくる。
複数カラムでのUNIQUE制約は、
class Model(models.Model): class Meta: unique_together = (("column1", "column2"),)
う〜ん、悩む。
以下のようなモデルがある場合、
class Parent(models.Model): name = models.CharField(maxlength=128) class Child(models.Model): name = models.CharField(maxlength=128) parent = models.ForeignKey(Parent, related_name='children') class GrandChild(models.Model): name = models.CharField(maxlength=128) parent = models.ForeignKey(Child, related_name='children') class Mago(models.Model): name = models.CharField(maxlength=128) parent = models.ForeignKey(Child, related_name='magotachi')
以下のようなテンプレートで表示を行いたい。
・Parent.name
・children[0].name
・children.children[0].name
・children.children[1].name
・children.magotachi[0].name
・children.magotachi[1].name
・children.magotachi[2].name
・children[1].name
・children.magotachi[0].name
・children[2].name
・children.children[0].name
はて、どうするのがスマート&高速なんだろうか…
常山さんに、satchmoのコードが参考になるよ!と教えていただいた。
http://www.satchmoproject.com/trac/browser/satchmo/trunk/satchmo/product/models.py
階層を無限に持てるカテゴリのModelらしい。
get_all_childrenのあたりを参考にすればよさそうだ。
やはり、自前で辿ってリストを作るしかないようだ…
flattenの元ネタはここのようだ。
よくよく考えたら、ジェネレータが適するタイプの問題じゃないかな、これ。
ジェネレータで書いてみよう。
こんな感じで書いてみたけどようわからん。
class Parent(models.Model): name = models.CharField(maxlength=128) class Child(models.Model): name = models.CharField(maxlength=128) parent = models.ForeignKey(Parent, related_name='children') def children_array(self): for c in self.children.all(): yield c def magotachi_array(self): for m in self.magotachi.all(): yield m class GrandChild(models.Model): name = models.CharField(maxlength=128) parent = models.ForeignKey(Child, related_name='children') class Mago(models.Model): name = models.CharField(maxlength=128) parent = models.ForeignKey(Child, related_name='magotachi')
複雑なレンダリングについて他にも例を見たければ, {% if %} や {% for %}, {% ifequal %} , {% ifchanged %} のソースを参照してください.ソースは django/template/defaulttags.py にあります.
ということで、defaulttags.pyを読もう。うん。
…と思いつつ、メシを食って帰って瞑想していたら、
djangoを使わなくてもいいんじゃね…という結論に達した。
スレッド式掲示板はdjangoでは書きづらい、という噂も聞いたし、
ORMapperはあんまり必要じゃない感じのアプリケーションだしね。
というわけで、
- スケールするテンプレートエンジン
を探すことにしよう。
Admin画面だけ別でDjangoを素で使おう。
さかとくさんの記事を読む。
そしてまた瞑想に入る…
を読む。
うん、ClearSilverしかあるまいな!!
と思って周りのメンバーに聞いてみると、
ClearSilverはTracで使われているテンプレートエンジンらしい。
ClearSilverもMakoも文法がキモいらしいが…
とにかくスケールしたい、でも利便性も欲しい場合にはどちらがいいかねぇ…
C言語でも使えるClearSilverをいっぺんちゃんと追ってみるか。
1日目(随時更新)
小田急が遅れて、ロマンスカーに危うく乗り遅れそうになる。
危険危険。
ロマンスカーの中でftのプログラムを開始。
とりあえず、掲示板で閲覧するときにタグ等の情報を送るようにする。
ft.fileとft.dbの機能分担が微妙になってきた。あとでリファクタリング。
explorerのインスタンスがインタプリタ持ちっぱなしになってしまう。
山喜旅館に到着。ぱちぱち。
http://www.ito-yamaki.co.jp/
地下の会議室でプログラム再開。
wxPython側は一応完成。大きなファイルの場合の取り扱い
(キャンセル付きプログレスバー)を実装しなければいけないけど、
とりあえずサーバサイドに着手。
サーバサイドはとりあえずDjango。
ひさし振りにやると忘れている…
まず、
Model.objects.get(unique_column='key')
って感じで1件データを取得するんだけど、
データが無い場合に投げられる例外は、
Model.DoesNotExistらしい。以下のページにあった。
でも、僕が本当に欲しかったものは、
Model.objects.get_or_create(unique_column='key')
だった。
存在しない場合はDoesNotExistをトラップして新しいインスタンスを作っていたよ。
やべーやべー初心者やべー。
というか、人のソースを読むべきなような気がしてきた。
Mercurial、面白そうだけど、親切な本が出るの待ち。
http://www.dodgson.org/omo/t/?date=20070118
svn diff | wc -lをしようと思ったけど、
Windows環境でTortoiseSVNしか入れていないんだった。
'RelatedManager' object is not iterableとエラーが出た。
あきらめて寝ようかと思って部屋に帰る。
だが、ついデバッグ。
ForeignKeyを逆方向に辿って得られるものは
RelatedManagerという全てのインスタンスを返すあくまでマネジャであって、
その一覧を取得するには.all()しないといけないようだ。
明日は〜明日は〜温泉〜 しかしッ…
今日Amazonから届いたプライベートなモノ。
(ちなみに、Amazonプライム会員です…)
- 作者: 木尾士目
- 出版社/メーカー: 講談社
- 発売日: 1998/05/20
- メディア: コミック
- 購入: 1人 クリック: 46回
- この商品を含むブログ (51件) を見る
- 作者: ひぐちアサ
- 出版社/メーカー: 講談社
- 発売日: 2001/06/20
- メディア: コミック
- 購入: 28人 クリック: 738回
- この商品を含むブログ (178件) を見る
- 作者: ひぐちアサ
- 出版社/メーカー: 講談社
- 発売日: 2002/03/19
- メディア: コミック
- 購入: 22人 クリック: 107回
- この商品を含むブログ (109件) を見る
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2007/06/21
- メディア: Video Game
- 購入: 3人 クリック: 81回
- この商品を含むブログ (170件) を見る
- 出版社/メーカー: 東映ビデオ
- 発売日: 2007/06/21
- メディア: DVD
- クリック: 12回
- この商品を含むブログ (5件) を見る
明日はたぶんコレが届く。
- 作者: ポールグレアム,野田開,Paul Graham
- 出版社/メーカー: オーム社
- 発売日: 2007/03/01
- メディア: 単行本
- 購入: 10人 クリック: 146回
- この商品を含むブログ (128件) を見る
あさってはたぶんコレが届く。
- 出版社/メーカー: 任天堂
- 発売日: 2007/06/23
- メディア: Video Game
- 購入: 3人 クリック: 233回
- この商品を含むブログ (418件) を見る
いたストは荒井&上野コンビがいいと今でも思うんだけどなあ…
と思いつつ、パッケージを開けてはならない!
だって明日はPython温泉初日だもん!
しかも、事前にやっておくべきことっていうのが
まだ出来ていないんだもん!!!…
と、とりあえずロマンスカーの指定席は購入したよ!