TMTOWTDI

最新Pythonエクスプローラ眺めてたら、import thisって打つとpythonistaの心構えみたいなのが出てくることを知った。

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.

...

Namespaces are one honking great idea -- let's do more of those!

ほう。で、perlでも

perl --slogan

とかで

TMTOWTDI(There's More Than One Way To Do It.)

こういう風にスローガンが出ないもんかと探してみたけど、オプションにもモジュールにも見当たらなかった。

そういえば、最近言語の設計思想とかそんなのがなんとなく感じられるようになってきた。こんなのとか今読むと、タメになるなぁとか。もちろん去年のYAPCのトークも。

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にちなんでペクチンという名前にしてみた。

ベタすぎ。

Rapid Web Applications With Turbogears:読んだ

結局買って読んだ。結論は

面白い、買って読め

って感じ。

ただし、comのほうではtypoが多いとか言われてたけど、確かにやたらとtypoが目立つ。

筆者の言い訳コメントがあったけど、どうかなぁ。

My only defense is that people clearly wanted a good enough book NOW, rather than a perfect book later.

特に、chapter4,5のあたりは、簡単にアプってみようヨ!っていう導入的に重要な部分だと思うが、Typo。しかもクラスが単数だったり複数だったりしてちょっと嫌。手動かすつもりだったら気をつけるべし。とはいえ、すぐに気付くようなミスなのであんま気にならないというか、むしろ楽しんでこなせたけど。

SQLObject,CherryPy,Kid,MochiKitそれぞれに割と詳しく書かれていて、読んでてわかりやすかった。特にMochiKitはページを結構割いていたような。けど1.4の説明なの。

あと、AppendixでSQLAlchemyにも触れてたけどGenshiには触れていない。

最初に書いたように、読んでて面白かったけど、なんか作りながらもう一回読むと更に面白いと思うので、適当なものを作る。多分イントラで使えるようなRSSReaderだと思うけど(今使ってるのが気に入らないから)。

TurboGearsでpdfを出力する

Produce PDF Pages with TurboGears, Cheetah, and ReportLab を見つけたので早速やってみた。

ReportLabはpdfを生成するライブラリらしい。ドキュメント読むと面白そうなんだけど、グラフ作成とかの部分はちょっと使いにくそうかナァ。むしろmatplotlibRpyにグラフ作成は任せて、できた画像を入れ込むほうが使いやすいかな。

それから、tg-admin infoして気付いたけど、CheetahはTGの標準モジュールだった。

プレゼン資料作成用にPythonPointというXMLからpdfのスライドを作成するライブラリも一緒に入ってた。XMLじゃなくてYAMLから生成できるともっと便利に使えそう。Sporkのテキストファイルをpdfにできるようにしてもいいかもしれん。

jythonが2.2betaになってた

ここのところ更新がなかったので、もしかして終わっちゃったのかなと思っていたjythonが2.2betaになってた。

The Jython Projectから早速ダウンロードしてインストール。

これでpythonからjavaのライブラリが使えるが、ケモインフォ的にはCDKdatasetをいじったりとか。あとRなんかで色々出来る気がする。

あと、QSAR用のレポジトリ欲しいナァ。論文に投稿するんだったら、sdfと活性値をsubmitしないと駄目みたいなPDBっぽい約束事とかあれば、いいと思うんだけど。再利用性が悪くてかなわん。

最新Pythonエクスプローラ

週末はU隊長の実家でみんなのPython読み返したり、scipyとかmatplotlibいじったりしてた。

で、さっき戻ってきて夕飯食べてたらいいもんが届いた。

よこぜきで買った飛露喜の特別純米を呑みながら読もう。

scipy+matplotlib+ipython

綺麗なグラフが描きたいのでmatplotlibを触ってみたりしている。あとdensity plotとかも描きたいのでscipyとかチョコチョコ入れてみたり。対話的に処理すんならipythonがええよって書いてあったので、使ってみてるけどまだよさがわかってない。もう少し使ってみないと。

で、明日はU隊長の実家に行くので、今は携帯用のレッツノートにcpanminiのアップデートをしている。あとはpython関係も全部入れてドキュメントのpdfもusbメモリに入れといた。あそこは田舎すぎてネットにつながらん(携帯もソフトバンクは不可)ので。

svkも入れときゃよかった。

こんな感じで、いつも集中して開発するぞとか思って旅立つんだけど、結局酒呑んで酔いどれてんだよなぁ。

ヨコゼキ侮れん!

てか、ヨコゼキ最高!あの巨大冷蔵庫に入るとワクワクすんね。

kidってなかなかいいかも

TurboGearsのテンプレートエンジンのKidって使いやすい感じだなぁ思ったので、週末何でかなーってジムの自転車漕ぎながら考えてた。

TurboGears: Kid Template System — nagosui.org

多くのテンプレートシステムでは、タグをミスマッチな状態にしておくことが可能になっています。KidにおいてはあなたのテンプレートはvalidなXMLになります。つまりあなたは、ミスマッチなタグが存在しないことを保証されているのです。

CatalystのTTなんかはブロックでくみ上げるイメージになるのでブロック内でif-elseとかごちゃごちゃやりだすと手が付けられなくなってくるけど、KidはXMLだからDOMTreeみたいな思考パターンになって処理のイメージがしやすいのかナァってのが今の結論。つまり、TTは面構造(PROCESSとか)なのに対し、Kidは木構造(defとか)だと。

Kidも使い込んでいくと、嫌なとことか目についてくるだろうからまた変わるかもしれんけど。

SQLObjectとSQLAlchemyの違い

相変わらず、暇を見つけてはTurboGearsで。メジャーなO/Rマッパーが二つあるみたいなのでちょっと調べた。

turbogears-jaにも資料があった。

SQLObject = CDBI
SQLAlchemy = DBIC

というイメージでよいのかな。てかCDBIがアクティブレコードパターンだっていう記述を見た事がないので、さらに追っかけてみるとActiveRecord パターンに近い実装らしい。じゃぁActiveRecordパターンに足りない部分はなんなの?が知りたくなったので更に調べてみた。

うーん微妙に掴めきれてない気が。

ちゃんと読んでみようか。

新しいBLOGっぽいもの(欲しい機能とか)

ペインはpein。

最近blogって窮屈すぎだよなって思ってて、Ajaxとか最近のフレームワークでZen Gardenよりもはっちゃけなものつくれんかなぁとは思ってる。RSS配信してんだかから、逆にデザインとかは何やってもいいんじゃん、むしろ好きにやらせてくれな感じ。

ProductName Lifeform
Future Sound of London
Astralwerks / 1577円 ( 1994-05-26 )


the future sound of londonみたいなサイトなのにちゃんとRSS配信してまっせ、みたいな。

カテゴリ要らない

ビバマイクロコンテンツのこのご時世、基本的にRSSリーダーで読むんでしょ?とか。アグリゲータみたいなのでマージされたりフィルタリングされたりして再構成されていくんだったら、自分で構成する必要性ってあんまないじゃん。

だから、カテゴリとか要らない、タグで十分な気がしてる。それも、自分が自分のSBSでブックマークするノリでいいんじゃないかと。大体plaggerとかアグリゲータ使うの前提だと、自分のサイト内でカテゴリ分けをする行為の意味って希薄な気がする。セルフブックマークの延長で考えておけばいいんじゃないのとか。

コメントもいらないかも

SBSに長文のコメント貼り付ければ、それはブログとほとんど変わらんよなっていうしょうもないことに気がついて、ブログなんてURIに対するコメントか、URIじゃないものに対するコメントか別に区別しなかったら結局似たようなもんじゃんとか思って、SBSの枠組みの中に組み込めばいいんじゃないの?

はてなとかlivedoorのコメントをAPIかなんかでとってきて表示すればいいんだよ。スレッドが欲しいわけじゃないしな。けどスレッドっぽい流れのとき困るからコメントはあったほうがいいのかな。はてなブックマークにコメントにコメントする機能がつくんだったらコメントいらないや。トラックバックだけで十分。

permalinkどうすっかな

悩む。超整理法っぽく日付パーマリンクでいいのかな?これはわからん。

rssはいる。

コンテンツ読むのは基本的にRSSリーダーなんだろうから、RSSだけ用意しておけばいいんじゃないの? blogっぽい3ペインとか2ペインとかはもういらんのじゃなかろうか。

ホメパゲっぽい表現してもRSSさえ配信していれば問題ないような、、、。

ってかあの頃のカオスをもう一度。どうせRSSで読むんだったら、CatalystとかのMVCフレームワークで、viewのとこでblogっぽい出力する必要ないじゃんなんて思ってる。

というわけで、よくわからん自分好みのツールをTurboGearsで作ってみたいなぁという気運が高まっているのは事実。