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 とか古すぎで動かなかったので新しいサーバを借りなおしたりしました。これが一番大変でした。

2010年 02月 27日



2010年 02月 26日


2010年 02月 25日



2010年 02月 23日

デバッグの基本は問題の切り分けなのだから、下手にあんまりいじってはいけないのだけれども、人生はみじかく試行錯誤ができないために、どうしようもないことは多々ある



todo

jsdeferred の recipe をかく

gerry++