22042007 Python turbogears
TurboGearsのTrac にスクリーンキャストが幾つかあったので英語の勉強も兼ねて見てた。
TurboTunesTutorial.movでCatwalkの使い方が解説されてた。
22042007 Python turbogears
TurboGearsのTrac にスクリーンキャストが幾つかあったので英語の勉強も兼ねて見てた。
TurboTunesTutorial.movでCatwalkの使い方が解説されてた。
13042007 Python turbogears
DBICの場合はexport DBIC_TRACE=1でOKなんだけど、SQLObjectだと_connection.debugアトリビュートにTrueを突っ込むらしい。
Personってクラスがある場合
Person._connection.debug = True
これで実際に発行されるSQL文がトレースできる。
が、個々のクラスでこんなことするのは結構めんどくさいので、DBICみたいに環境変数で設定できないかと調べた。
seraphyの日記 - Pyhon2.5でSQLObjectを使ってみる
コネクションのURIにパラメータとして「Debug=True」と指定しているため、実行時にSQLObjectのトレース情報がコンソール画面に表示される。
URIにパラメータ渡すようにすればいいらしいので、環境変数がセットされているかどうかでURIにパラメータ渡すかどうか決めるように設定ファイルをいじればよいみたいだ。
10042007 Python turbogears
TurboGearsでなんか作ってて、とりあえずテスト用になんかデータをモデルに突っ込んでおきたい場合
tg-admin shell
で対話的にモデルを操作できるのが便利。あとはtg-admin toolsでcatwarkとか。
単純なモデルの場合はこれで十分だったりするんだけど、ちょっと複雑になるとスクリプトから操作したい。
コネクションの書き方が違うみたいなので、少し悩んだ挙句、
from turbogears import update_config update_config(configfile="dev.cfg",modulename="myapp.config") from myapp.model import *
とやるといいらしいことがわかった。普通にSQLObjectだと下のように書くようだ。
from sqlobject import * connection_string = 'sqlite:///home/kzfm/myapp/devdata.sqlite' connection = connectionForURI(connection_string) sqlhub.processConnection = connection
これで、feedparserを使ってRSSをとってきてテストデータを作ってみた。
from turbogears import update_config update_config(configfile="dev.cfg",modulename="pectin.config") from pectin.model import * import feedparser rss_sites = ['/index.rss10', \ 'http://kzfm.vox.com/library/posts/atom.xml'] for rss in rss_sites: f = feedparser.parse(rss) newfeed = Feed(url=rss,link=f.feed.link, \ title=f.feed.title,description=f.feed.subtitle) for e in f.entries: newentry = Entry(read=False, link=e.link, title=e.title, \ content=e.content[0].value ,feed=newfeed) hub.commit()
なんかeがエラーキャッチみたいだけどentryってことで。あと、feedparserはatomとかrssとか考えなくてもいいみたいで便利。
ちなみに、今はイントラで使う用にちょっとしたRSSリーダーを作ろうとしている。会社ではfeed on feeds使ってるんだけど、LDRに慣れてしまうと、ストレスが溜まりまくってどうしようもない。せめて、キー操作が欲しいのそれぐらいやれそうな簡易なやつを作ってみることにした。
ではじめて使ったRSSリーダーであるglucoseにちなんでペクチンという名前にしてみた。
ベタすぎ。
01042007 turbogears
英語強化年間ということで、GoogleのTechTalksを見るようにしているが、実際に見てみると面白いのが結構あるし、なによりスライドが読みやすくて、かなりよいかもな感じ。めぼしいものはローカルに落としてGoogle Video Playerで見てます。
で、Google TechTalksじゃないけど今日見たWebAppの話は面白かった。Rails,Zope,TG,Djangoの比較をしているのだけどわかりやすい。
Better Web Application Framework
ただしこのプレゼンいつ撮ったのかわからないんだけど、最後のスライドに関しては、現在のTurbogearsはauthもi18nも対応していると思うし、本も出てるのでそこそこいい位置にいるのではなかろうか?と思った。
あと、RoRはレガシーのシステム(特にプライマリーキーがなかったり、無駄に複合キーだったりとやたら奇抜なDB)とインテグレートしにくいよとかいってたけど、RoRでシステム構築する人達は、現実的にはそこらへんどうやって解決してるんでしょ?
31032007 bioinformatics turbogears
ふと、毒性評価のチームが「病理とかの画像にタグつけて管理したいなぁ」とのたまうので、
ほう、それはイントラflickrクローンみたいなものに落書き機能をつけてタグとコメントで管理できる洒落たツールが欲しいということか?
それいいじゃん!ということでいけそうか試してみた。
Making a Flickr Killer With TurboGearsを参考に喜久酔ひっかけながらもそもそと手を動かすこと30分。
おーCRUDくらいまでできた。
SQLiteのText型ってBLOB突っ込めんの知らんかったが、実際はバイナリはデータベースに突っ込むよりはファイル管理のほうがいいのかな。タグ付けは自分で書いてもいいし、Tastyにお任せしてもいい気がする。
落書き機能(病理画像に着目ポイントを書き込む機能)はAjaxかAS3でつくる。
gimpとかphotoshopのレイヤーみたいに重ねる感じにすればいいと思うんだけど。そのうち、まとまった時間をとってやる。
17032007 Python turbogears reportlab
Produce PDF Pages with TurboGears, Cheetah, and ReportLab を見つけたので早速やってみた。
ReportLabはpdfを生成するライブラリらしい。ドキュメント読むと面白そうなんだけど、グラフ作成とかの部分はちょっと使いにくそうかナァ。むしろmatplotlibかRpyにグラフ作成は任せて、できた画像を入れ込むほうが使いやすいかな。
それから、tg-admin infoして気付いたけど、CheetahはTGの標準モジュールだった。
プレゼン資料作成用にPythonPointというXMLからpdfのスライドを作成するライブラリも一緒に入ってた。XMLじゃなくてYAMLから生成できるともっと便利に使えそう。Sporkのテキストファイルをpdfにできるようにしてもいいかもしれん。
07032007 flex2 turbogears
最近、イントラで使っているシステムのUIに関して考えさせられるような事が立て続けに起きて、創薬系のシステムはAjaxとかのwebだけの枠組み以上のものがやっぱ必要なのかナァと感じている。
で、いつものようにリーダーチェックしてたら、
Creating a Flex application using the TurboGears frameworkなんつーものをみっけた。
flex2とturbogearsで簡単な住所録を作るっていうチュートリアルで、JSON使ったCRUDの過程を追えておもしろい。こんな感じでCatalystとFlexを連携させても面白いんじゃなかろうかと思ったし、これだとflashなので表現に幅がでて色々できて楽しいかもんと。
早速適当に流し読みして放ってあった、WEB+DB PRESS Vol.37のflex2の章なんかを見ながらflex2の勉強などはじめてみた。
以下のリンクも参考にした。
週末集中してなんか作ってみよう。
19022007 Python turbogears
TurboGearsのテンプレートエンジンのKidって使いやすい感じだなぁ思ったので、週末何でかなーってジムの自転車漕ぎながら考えてた。
TurboGears: Kid Template System — nagosui.org
多くのテンプレートシステムでは、タグをミスマッチな状態にしておくことが可能になっています。KidにおいてはあなたのテンプレートはvalidなXMLになります。つまりあなたは、ミスマッチなタグが存在しないことを保証されているのです。
CatalystのTTなんかはブロックでくみ上げるイメージになるのでブロック内でif-elseとかごちゃごちゃやりだすと手が付けられなくなってくるけど、KidはXMLだからDOMTreeみたいな思考パターンになって処理のイメージがしやすいのかナァってのが今の結論。つまり、TTは面構造(PROCESSとか)なのに対し、Kidは木構造(defとか)だと。
Kidも使い込んでいくと、嫌なとことか目についてくるだろうからまた変わるかもしれんけど。
16022007 Python turbogears
相変わらず、暇を見つけてはTurboGearsで。メジャーなO/Rマッパーが二つあるみたいなのでちょっと調べた。
turbogears-jaにも資料があった。
SQLObject = CDBI SQLAlchemy = DBIC
というイメージでよいのかな。てかCDBIがアクティブレコードパターンだっていう記述を見た事がないので、さらに追っかけてみるとActiveRecord パターンに近い実装らしい。じゃぁActiveRecordパターンに足りない部分はなんなの?が知りたくなったので更に調べてみた。
うーん微妙に掴めきれてない気が。
ちゃんと読んでみようか。
14022007 turbogears
TurboGearsのシンプルブログツールとして紹介されているCBlogをいれてみた。
このツールは、Development modeとProduction modeに分かれているのだけど、Production modeでは何故か動かなかった。ていうかエラーもでなかったのでちょっと原因不明。
Development modeで起動すると、こんな感じのblogっぽいテンプレートが出てきて、あとはwebからユーザーの設定とかすればすぐに使えそうだ。roleとか設定できるので多人数での書き込みも考慮されているっぽい。
という感触だけど、色々と勉強になりそうなのでコード読んでみる。