✖
土曜日は完全休養日にしようと思いどこにもでかけなかった。が、家にいるとコードを書いてしまい、徹夜してしまった。意味がない……
日曜日はおかげで13時ぐらいに目が醒めた。植物園にいって春の花の展示会みたいなのを見て、あとはいつも通り上賀茂・今宮神社にいった。
途中、ヘッドフォンが断線してしまったので、新しいのをビックカメラまで買いにいった。
PHILIPS ヘッドホン SHP2700 cho45
なんとなく PHILIPS のヘッドフォンを買うことは行く前に決めてて (普段家で使っているのが気にいっているので)、試聴できればいいと思いビックカメラにいったのだけれど、PHILIPS のヘッドフォンの試聴は一切できないようで、大量に audio-technica のヘッドフォンばかり並んでいた。audio-technica の開放の安いやつにしようかとも思ったのだけれど、試聴してみても (もともと audio-technica のヘッドフォンは高音がキツくて好きじゃない) 微妙だったので、仕方なく多少博打になるのは承知にうえ、上記の SHP2700 を買った。今アマゾン見たらだいぶ安くて吹く。ビックカメラほんと高いな。もうビックカメラでは買わない。
ヘッドフォン自体はとても良くて、装着感もいいし、音も好みなので、ガッカリしない感じでよかった。PHILIPS はかなりコストパフォーマンス高くていいなぁ。
関連エントリー
- 最近のヘッドフォン事情 特にヘッドフォン新しく買ったりというのはしていなくて、というのも通勤中・仕事中はノイズキャンセルがついている QC15 一択しかなくて他のを...
- ✖ 最近ずっと音楽聴くとき SHP8900 使ってたけど、UR/40 を久しぶりに使ってみてこのヘッドフォン (UR/40) は本当にいいものだ...
- ガルパンの Blu-ray は DTS Headphone:X で聞くとよい ガールズ&パンツァー 劇場版 (特装限定版) [Blu-ray] cho45 渕上舞 ★ 5.0 / 5.0 cho45 最高すぎて見まくっ...
- 特にトピックなし 最近やってるのは MIDI2LR のコントローラ 部品の納品待ち フルバランスのヘッドフォンアンプ DDC -> DAC でアナログにした時...
- シミュレーションしたヘッドフォンアンプを作ってみる いくつか回路をシミュレーションしたが、ClassAA のヘッドフォンアンプは今まで作ったことがなく、ブリッジの応用の部分がかっこいいので、実...
はてなダイアリーライクなブログ 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 とか古すぎで動かなかったので新しいサーバを借りなおしたりしました。これが一番大変でした。



