2010年 03月 01日



土曜日は完全休養日にしようと思いどこにもでかけなかった。が、家にいるとコードを書いてしまい、徹夜してしまった。意味がない……

日曜日はおかげで13時ぐらいに目が醒めた。植物園にいって春の花の展示会みたいなのを見て、あとはいつも通り上賀茂・今宮神社にいった。

途中、ヘッドフォンが断線してしまったので、新しいのをビックカメラまで買いにいった。

PHILIPS ヘッドホン SHP2700 - Philips(フィリップス)

Philips(フィリップス)

3.0 / 5.0

なんとなく PHILIPS のヘッドフォンを買うことは行く前に決めてて (普段家で使っているのが気にいっているので)、試聴できればいいと思いビックカメラにいったのだけれど、PHILIPS のヘッドフォンの試聴は一切できないようで、大量に audio-technica のヘッドフォンばかり並んでいた。audio-technica の開放の安いやつにしようかとも思ったのだけれど、試聴してみても (もともと audio-technica のヘッドフォンは高音がキツくて好きじゃない) 微妙だったので、仕方なく多少博打になるのは承知にうえ、上記の SHP2700 を買った。今アマゾン見たらだいぶ安くて吹く。ビックカメラほんと高いな。もうビックカメラでは買わない。

ヘッドフォン自体はとても良くて、装着感もいいし、音も好みなので、ガッカリしない感じでよかった。PHILIPS はかなりコストパフォーマンス高くていいなぁ。

はてなダイアリーライクなブログ CGI プログラム

Perl のことを CGI って呼ぶような時代がいつ終わったのかは知りませんが、CGI で動き常用できるブログ・ダイアリーシステムが欲しいと思いはじめたのでサクっと Perl で書いてみました。

「常用できるブログシステム」の要件というのは、僕にとっては以下の通りで、必要最低限の実装になっています。

  • その場編集機能が使える
  • はてな記法が使える
    • でも自動リンクは特にいらない
  • タグが使える
    • はてなダイアリのカテゴリは所謂タグです

今まで散々 blosxom のクローンを作ってきましたが、RDB をデータストアに使ったブログシステムは初めてつくる気がしました。blosxom クローンとの違いは編集機能ですね。

git clone して git submodule update --init して対象サーバに rsync すれば動くようになっていると思います (そのように開発をしているので)

その場編集

jQuery と JSDeferred つかったらすぐできました

はてな記法

Text-Hatena があるので簡単…… と思いきや、Text-Hatena はちょっと思い通りにフォーマットしてくれないので、はてな記法っぽい別のオレオレ記法をつくることにしました。

別に拡張してるわけじゃないので X は変なんですが、とりあえず CPAN に上げるつもりもないので保留してます。Extensible の略だ、とか言い張ったりできないかな

にした

内容的にはダイアリの記法とほぼ一緒ですが、自動改行のルールが異なるのと、見出し記法を構造化するような感じになっています。(互換モードにできるようにもなってます)。あと自動リンクの記法はモジュール側では最低限に自動リンク、使う側で定義するような設計になっています。

バックエンド実装のメモ

前々からちゃんと使ってみたかった DBIx-Skinny と、フレームワークを毎回書くような人間に死ぬほど便利な Plack を利用しています。

Skinny はとりあえず的なインクリメンタル開発がやりやすいし、基本的に SQL そのまんま書いてどうにかできるのがとても楽で良かったです。データベース接続部分に不明瞭な部分がないので、恐れずにテストも書けるのもよかったです。

僕はちょっとでも複雑なものは search_named しか使わないようにしたので

sub select {
	my ($self, $sql, $hash, $array, $name) = @_;
	unless ($name) {
		($name) = ($sql =~ /FROM ([^\s]+)/i)
	}
	[ $self->search_named($sql, $hash || {}, $array || [], $name) ];
}

というのをモデルクラスに定義してつかってます。風流な table 名抜き出しが入っていますが、結局 SQL 書くのがこの場合僕だけなので理にかなってます。

他にも Pager 実装とかをするにあたり、なかなか風流な SQL の文字列置換を実装しましたが、メタプログラミングだと思えば気持ちわるくありません (という言い訳しないといけない程度に気持ちわるいです)

あとは deploy したかったサーバの Perl のバージョンが 5.6 とか古すぎで動かなかったので新しいサーバを借りなおしたりしました。これが一番大変でした。