この前書いてみたのは、Template Toolkitの練習ということでDBを見ることしかできないやつでした。というわけでinsert、update、deleteとかもできるような機能があるものを作ろうと思った。
世の中にははてなダイアリーをローカルのテキストファイルからアップロードするはてダラというものがあります*1。僕はTsukuba.Rのプレゼンで、はてなグループのキーワードのプレゼンモードをよく使います。だから、はてなグループのキーワードもローカルで編集してアップロードまで自動でやって欲しい!!ということでRubyでアップロードするスクリプトを書いたり、Emacsのメジャーモードを書いてみたりしています。前置きここまで。
なので、はてなグループのキーワードが書いてあるテキストが手元にあります。こんな感じ。
/Users/syou6162/hatena_keyword/syou6162% ls | tail
ニューラルネットワーク.txt
ブルーオーシャン戦略.txt
ブーツストラップ法.txt
フュ−チャーリスト宣言.txt
ステルスマーケティング.txt
意味が分かる位相空間論.txt
バイラルマーケティング.txt
頭がいい人、悪い人の仕事術.txt
我らクレイジー☆エンジニア主義.txt
さおだけ屋はなぜつぶれないのか?.txt
ということでこれをつっこんでオフラインでもはてなグループっぽく見れるようにすればいいじゃない、ということでやってみた。githubに上げておいた。
こんな感じですでにあるキーワードの内容を見れるようにしてみたり、新規キーワードを作成できるようにしたり、キーワードを削除することができるようにしたり、編集できるようにしたり。
Text::Hatenaを使ってはてな記法からhtmlに加工してます。
細かいところ
DBIx::MoCo
id:onishiからはてなの内製ORマッパーであるDBIx::MoCoについて解説。MoCoはid:jkondo開発とのこと。
http://eighteentillidie.com/2008/08/entry-948.html
ということでDBIx::MoCoというORマッパを使うらしいので、今回作ったものでも使うことにしてみました。ORマッパとか初めてなのでなんのことやらよく分からないんですが
- SQLを直接書かなくてよい
- DB側とPerl側のオブジェクトを関連付ける→mapping
ということなのかな。
DBIx::MoCo - search.cpan.orgを参考に関連付けのようなところを書いていきました。本当にSQLが出てこない!!insertするところのプログラムが
Keyword->create( keyword => $name, content => $content, last_edit => $last_edit );
という感じで書ける。あとCache::Memcachedも使ってみたんだけど、あんまり早くならないorz。どっか間違ったんだろうなー。
html、css
デザイン的な能力が本当になくて泣ける。インターンではjsもあるとかまじですか、、、という感じだけどjsを今からやってもあまり意味がない気がするのでperlやりますが。2ペインにするところとかこの辺参考にした。
MVCのMとC
MCVでいうところのModelとControllerのところがよく分かっていないらしく、ごちゃごちゃになっている。。。説明を読むとなんとなく分かったような気分になるんだけど、実際のコードでどう設計すればいいのかが分かってない。Catalystでも使ってみると分かる…ものなんだろうか。
テスト
週末にPerlのオブジェクト指向をもう一回抑えないと、、、ということでデザパタのVisitorパターンを実装してそのテストまで書きました。なので、普通(?)のコードのテストはどういう風にすればいいかが分かった。だけど、WebとかDB周りのテストってどういう風にやればいいのかが分かってない。来週までにこの辺を抑えておきたいなーと思います。
*1:で、今それを使って書いているわけだが