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だと思うけど(今使ってるのが気に入らないから)。

[Google TechTalks] Opportunities For Pharmacogenomics and Personalized Medicine

PharmGKBのGoogle TechTalks、結構意欲的というか面白い。

Web ServiceAPIがあるので、うまく使うといいかも。

Obminimizeで構造立ち上げ

Open Babelが2.1にあがっていた。changelogを見てたら、MMベースの構造立ち上げが実装されていたが、どうも最近のことらしい。

というわけで、obminimizeというコマンドを使うと構造を立ち上げることができて、その後、mopacでちょこっと構造最適化をやってから、PyQuanteでエネルギー求めるとかいう事がLLでやれるようになるのでいい感じ。

WWW::MechanizeとWWW::Selenium

違いってなんだろかって思ってたんだけど。

use WWW::Mechanize

ただ一点注意で、Mech は賢いのですが JavaScript の動作はエミュレートしません。なので、Ajax 部分などクライアント側のテストには向いていません。

クライアント側の挙動のテストを行なうには、実際のブラウザのエンジンを使うのが一番でしょう。これは、Selenium というウェブアプリテストスイートがあります。

Selenium コアは JavaScript によるアプリですが、ドメインをまたげない制限を回避するソリューションとして、プロキシサーバーとして動作する Selenium RC という Java アプリも用意されています。そのプロキシサーバーに対しては各種プログラミング言語から直接テストをたたく API が用意されていますが、Perl 用も WWW::Selenium として CPAN にあります。

AjaxのテストはWWW::Seleniumでと。

TurboGearsだとSelenium4Gears ってのがあるらしい。

NuVJ欲しい

物欲の春です。

動画がyoutubeにあがってた

まじで欲しいナァ。

Azure

久々にSoma買った。ヴァイナル買うのは130番くらい以来ではなかろうか?(Azureは216番)

溶けて透きとおるような繰り返しと、気持ちのいい音圧。途中に入るノイジーなブレイクが高揚感を煽る。

9分近くあるけど、長さを感じさせない気持ちの良い繰り返し。Part1,part2ともによいが、Part1のほうが好み。

あとSoma Subscriptionが気になる。レーベル自体が好きなのでこっちはおとくかも。

たけちゃんにぼしラーメン

YAPCでは昼何を食べるかも重要(YAPCに限ったことではないけど)。

というわけで、代々木まででていってたけちゃんにぼしラーメンへ。

平打ち麺の醤油。麺は腰があってうまい。となりのおっさんのつけ麺美味そうだなぁ。

ってことで、YAPC二日目もたけにぼでつけ麺。

酸味の効いたスープで、これまた美味い。が、つけ麺だとすぐにスープがぬるくなってしまうのがちょっと難。

スープ割がうまかった。

YAPC::Asia 2007 二日目

二日目の午前はT101+102,午後はTsuda Hall。

DBICのセッション3本ともよかった。

DBICは怖くないよ。噛み付かないよ。

mizzyさんのプレゼンのassurerは、僕の仕事ではあんまつかわないかなぁと今まで勝手に思ってたのであまりちゃんと調べたことなかったんだけど、プレゼン聴いてたら、むしろ自分の仕事まわりでバリバリ活躍しそうじゃんと。なので後で触る。

Catalystを使ったBlogのAngerwhaleがなんか面白そうな匂いがしたので、帰ってきてから早速見てみた。ここが詳しい。僕が欲しいもんとはちょっと違う感じだけど、面白そうなのでインストールしていじってみる。

で、今回はなんといってもMJD。

背を向けたときにTシャツに、、、、、

use Inline Python;シャツとか欲しい。

正直刺激をうけすぎた二日間だったヨ。

YAPC::Asia 2007 一日目

yapcasia2007

全部楽しめたが、特にMJDのparserの話が面白かった。けど、lispとかもっと分かっていれば更に楽しめたんだろうなぁ。