Jiftyはスイスイッと気持ちヨサゲ

DjangoTurbogears ってsql文を書いたりしなくていいので楽だナァと。djangoだとクラス定義して

$ python manage.py syncdb

ってやればいいし、Turbogearsも同様に

$ tg-admin sql create

でうまくやってくれる。で、そういえばYAPCJiftyもそんなこと発表してたのを思い出して、大量のモジュールと共にインストールしてみた。

練習用に使ったサンプルはJifty::Manual::Tutorial。ちなみにJiftyのバージョンは0.60912。

最初の流れはCatalystと違って、アプリケーションだけつくれば、ビューとかコントローラー作る必要ないみたい。いきなりモデルをつくりはじめるわけだが、もちろんデータベースの設定はSQL文など書かなくてよくて、

column title =>
      type is 'text',
      label is 'Title',
      default is 'Untitled post';

column body => 
      type is 'text',
      label is 'Content',
      render_as 'Textarea';

とハッシュっぽく記述しておいて、

jifty schema --setup

これだけ。あとはテンプレートまわりをいじるわけだが、僕の使ったバージョン(0.60912)だとwebではなくshare/web/だった。また、テンプレートシステムにMason利用しているので、実用Perlプログラミングなど読み返しながら。

ProductName 実用 Perlプログラミング 第2版
Simon Cozens
オライリージャパン / 3360円 ( 2006-03-01 )


%でperl式を挿入する場合%は行頭から始めないといけない(間にスペースとかをいれてはいけない)ことを理解していなくてちょっとはまった(下の部分)。

% while (my $post = $posts->next) {
 <dt><%$post->title%></dt>
 <dd><%$post->body%></dd>
% }

Masonってなんかphpっぽいな。今回Jiftyの触りしかいじってないけど、アプリ作成すると、オンラインドキュメントも一緒に作られるので、これを読むのがなかなか面白い感じ。あとMasonも暇があればなんかで使ってみよう。でもMason使うとビューとコントローラーの切り分けが曖昧になってきちゃうような気がするんだよナァ、、、

あーめんどうだ、テンプレートに直接書いちゃえ!

みたいな(うーん実際はどうなんだろうか)。

というわけで、一通りサンプルを作ってみて、感想を。Jiftyは(RoR,djangoもそうだけど)フルスタックなのでサクサク開発できそうで、なにより使っていて気持ち良い。

Catalystと使い分けできれば生産性は上がるかな。ちょっとしたもの作る場合にはJiftyはいいと思った。

MT距離ってのがいまいちつかめてない

CRANのNewsletterが更新されていたので、一昨日の帰りの新幹線の中で読んでたら、fingerprintっていうパッケージが追加されてた。

CRAN - Package fingerprint

This package contains functions to manipulate binary fingerprints of arbitrary length. A fingerprint is represented by an object of S4 class 'fingerprint' which is internally represented a vector of integers, such that each element represents the position in the fingerprint that is set to 1. The bitwise logical functions in R are overridden so that they can be used directly with 'fingerprint' objects. Distances metrics are also available. Fingerprints can be converted to Euclidean vectors (i.e., points on the unit hypersphere)i and can also be folded using XOR. Arbitrary fingerprint formats can be handled via line handlers. Currently handlers are provided for CDK, MOE and BCI fingerprint data.

CDKとかMOE,BCI用のハンドラがついてるようです。で、Similarity metricは何使えんのかな?とマニュアル読んでみると、

  • tanimoto
  • euclidean
  • mt
  • dice

の4つ。このなかで、MT係数って聞いたことないナァ。ちょっと調べてみたけどわからなかったので直接ソースを読んでみることにした。はじめてのパッケージイントロスペクション。

で読んでみたら、あー、Rのパッケージ読むの単なる食わず嫌いだったかも。思ったよりややこしいことはしてませんな、これからは積極的に読んだほうがいいかもと思った。

というわけで、ちょっとまとめておいた。前提としてフィンガープリントの共通のビットが立つかどうかを下の表であらわしておく。

fp1 bitありfp1 bitなし
fp2 bitありCB
fp2 bitなしAD

tanimoto

まずはわかりやすいタニモト係数から。

 dist <- c / (a+b+c)

dは考慮されない、つまりビットの立たないもの同士は類似とみなされない。

euclidean

dist <- sqrt((d+c) / (a+b+c+d))

ユークリッド距離はお互いビットが立ってないという情報も似ていると判断されるわけですな。

dice

dist <- c / (.5*a + .5*b + c)

diceの距離も基本的にはタニモトと一緒。僕はあまり使わない。

mt

size <- length(fp1)

t1 <- c/(size-d)
t0 <- d/(size-c)
phat <- ((size-d) + c)/(2*size)
dist <- (2-phat)*t1/3 + (1+phat)*t0/3

t1はc/(a+b+c)、t0はd/(a+b+d)とかける。phatは全フィンガープリントでのビットの立っている割合(ビットの密度)。ビットの密度を考慮してるのはわかったんだが、t1,t0の分母の意味がちょっと理解できてないかも(aとbの情報を考慮してんだろうな)。おそらくビットの密度に偏りがある場合にできるだけ補正できるような距離なのかなとか思った。タニモトにビットが立たない場合の情報の扱いを加えた感じか。

と、ここまで考えてやっと気付いた。

MTってもしかしてModified Tanimoto?

ビンゴだった。

わすれな草

肥後橋ってカレーの激戦区らしくて、南蛮亭とかいうところ探してうろうろしてたら、なんか美味しそうだったので。

わすれな草

水を使わずトマトとヨーグルトで仕上げたカレーだそうだ。

チキンカレー

トマトの酸味が効いててうまい。こんだけトマトの酸味が効いてると、もうちょい辛くてクローブが効いててもよいかなと思う。

満足。

わすれな草

High Society

ProductName High Society
High Contrast
Breakbeat Science / 2288円 ( 2004-09-28 )


もうちっと重いほうが好き。でもTwilight's Last Gleamingは名曲だと思ふ。

Drive In , Drive By / St Elmo

baron

http://www.cisco-records.co.jp/cgi/title/techno/detail_175034.php

BBKの買うのはDuppy Man以来ではなかろうか(しかもまたピクチャー買っちゃったし)。

切な目の、微妙なリキッドっぷりがシブイ。

plaggerでRule::Fresh

統計学関連なんでもありをPlaggerでGmailに送るようにしたのだが、うまくいかない。

日付しかパーズしてないのに毎日三回チェックしちゃだめジャン。

というわけで、時間もパーズするように書き換えたのだけどうま拾ってくれてないっぽい。

2006/10/30(Mon) 13:18
\d{4}/\d{2}/\d{2}\(\w{3}\) \d{2}:\d{2}

%Y/%m/%d(%a) %H:%M

これだとDateしか引っ張れない。DateTimeあたりで躓いてんのかなぁ、、、わからん。あとでちゃんと調べることにして取り合えずRule::Dedupedで重複チェックを。

あと、デバッグするのにPublish::CSVに出してたのだけど、こういう場合は普通どこに出力するのがよいのだろうか?

上等カレー本店

福島駅からちょっと歩いたところにある上等カレー本店。

上等カレー

カレーショップみたいな外観だけど、中に入ると和食の店みたいな店内でちょっとギャップに驚く。

上等カレー

トンカツカレーを注文。黄身が別盛りでついてくる。

トンカツカレー

甘いのに辛いという不思議な味わい。

とまとの里 信濃路

ラーメンデータベース経由で。

宝天麺というトマトラーメンを注文。

注文受けるとおもむろにトマトスープ具材その他を中華なべでいためはじめます。 酸味は意外にスープにあってた。具にはセロリとか白菜が入ってた。麺はストレートやや硬めでなかなか。
スープはあっさりしてるけどニンニクがやたら多いので注意。おばちゃんがひたすらニンニクむいてるだけのことはある。

なかなかうまい。

RB-338がフリーになってた

RB-338がフリーソフトになってたので、ダウンロードして遊んでます。とか思ったら1年も前の話なのね。いまさらだった。

「Rebirth RB-338」:本格テクノをフリーソフトで!

昔は3万とか4万とかしたよな(確か)

ところで、関係ないけどorgaのvividかっこよすぎ。そして明日から大阪です。

藤堂

行こうと思ってから三ヶ月ほど機会に恵まれなかったが、やっとめん処 藤堂に行ってきた。136よりは県道通ったほうが入りやすいかも。

藤堂

清澄の塩を注文。

清澄

スープの旨みというか甘みが感じられて、醤油より塩のほうが好きかも。個人的には毎度は醤油、藤堂は塩だと思う。U隊長はチャーシューを絶賛してたけど、僕はスープが凄いと思った。

あと、子供つれてたんで嫌がられるかナァと思ってたんだけど、店内広々としてるし、店員さんも凄く良かったので、時間とか考えれば子連れでもあまり気兼ねしなくていいのかも。

そういえば、喜八郎、毎度なんかも子供にフレンドリーだよな。

藤堂