mixiで会社のコミュニティを作ってみた。そして最初の書き込みが麻雀大会のお知らせ。なんだ、この会社。
2006年05月
デュアルディスプレイ
ワインとチーズ
従姉妹がなんか送ってくれたー。イチジクとかも入ってる!わーい。
Jcode vs Unicode::Japanese
ハテナオヤさんのはてブでみたUnicode::Japaneseなんだけど、とりあえずベンチマークをとってみたら
daisuke@beefcake daisuke$ perl benchmark/h2z.pl
Rate unicode_japanese jcode
unicode_japanese 1236/s -- -32%
jcode 1825/s 48% --
daisuke@beefcake daisuke$
おりょ、Jcodeのほうがかなり速いね。こんな感じのコード。ふーむ。
my $obj = Jcode->new($str_h);
my $z = $obj->h2z->euc;
$obj = Jcode->new($str_z);
my $h = $obj->z2h->euc;
}
sub unicode_japanese
{
my $obj = Unicode::Japanese->new($str_h);
my $z = $obj->h2z->get;
$obj = Unicode::Japanese->new($str_z);
my $h = $obj->z2h->get;
}
cmpthese(10_000, {
jcode => \&jcode,
unicode_japanese => \&unicode_japanese
});
lighttpd + FastCGI + Catalystを試してみる
逃避とか色々かねて、以前より懸案だった「モニター、キーボード、マウスのついていないMac Miniで皆の音楽をためて、コントロールする」という事を実装した。で、小さいプロジェクトだし、割とストレートにできそうだからlighttpd + FastCGI + Catalystを試してみた。
ちょっとハックが必要だったのがMac::iTunes。まずなんもドキュメントに書いてない!get_current_track_artist()とか存在さえも隠蔽されてる(笑)Security through obscurityかっつーのw。あとはプレイリストの内容を表示するのにget_track_names_in_playlistを直接ハックして
(良い子の皆さんはまねしないように)ページングできるようにしてみた。基本的にはAppleScriptの内容をこんな感じに変更:
# 前提:ユーザーから$limit, $offset, $playlistを指定してもらう
my $script = <<"SCRIPT";
set myPlalist to "$playlist"
return count of tracks in playlist myPlaylist
SCRIPT
my $psize = $self->tell( $script );
if ($limit > $psize) {
$limit = $psize;
$offset = 0;
} elsif ($limit + $offset > $psize) {
$limit = $psize - $offset;
}
my $start = $offset + 1;
my $end = $offset + $limit;
$script = <<"SCRIPT";
set myPlaylist to "$playlist"
set myString to ""
repeat with i from $offset to $end
set thisName to name of track i in playlist myPlaylist
set myString to mystring & thisName & return
end repeat
return myString
SCRIPT
my $result = $self->tell($script);
my @list = split /\015/, $result;
return \@list
これをApp::Controller::iTunes からたたく:
# play / pause / stopとかは全部一緒
sub play : Local
{
my($self, $c) = @_;
my $itunes = Mac::iTunes->controller;
$itunes->play;
$c->response->redirect('/itunes/status'); # 現在の状況を表示ページ
}
sub library : Local
{
my($self, $c) = @_;
my $itunes = Mac::iTunes->controller;
my $page = $c->req->param('p');
my $limit = 100;
my $offset = ($page - 1) * $limit + 1;
# ↓ちょっとこの辺の呼び出し方はてきとー
my $list = $itunes->get_track_names_in_playlist('Library', 100, 0);
my $position = $offset;
foreach my $name (@$list) {
# トラック番号がないと後でどーしようもない
push @tracks, { position => $position++, name => $name };
}
$c->stash->{tracks} = \@tracks;
$c->stath->{template} = 'library.tt';
}
こんな感じ。テンプレートはまぁ想像できるんじゃなかろうか。で、あとはlighttpdをどこん、と起動しておしまい。Mac::iTunesのソースコード(特にMac::iTunes::AppleScript)を読まなかったらきっとなんもわからんかった。ぼへぼへ。
仕事。
なんかロシア人が俺のパッチ使えとうるさかったので、Class::DBI::Pgリリース。0.08_02文句が出なかったらこれで0.09にする。
某社に納品。某社のDBいじり中。時間かかりそう。某案件のマルチスレッド部分にタイマーを仕掛けてみてる。pthreadわけわかんね。
某バーテンさんにメール。DB作りたい作りたい。某案件のデータベース構築、一部のデータ入力が完成。やった。
わー
超落ち込んできた。友達の人妻とエロトークしたら大分収まったw
朝コーディング
朝のコーディング時間。やっぱこの2時間は使わないと損損。
住所等を抜き出すプログラムを書きながらTV。「黒バラ」でかつらボクサーの話題の間になぜかBGMが「とくダネ!」。ワロス。トランスポーターの女の子、かわいー。
べつやくれい
べつやくれいの「ココロミクン」購入。おもろ。
またバー
思ってたより心が折れてたので、連荘でバー。コニャックとか色々飲みつつ葉巻。葉巻は色々試してみてきていたが、やっとうまい!と思うものに出会えた。Romeo y Julieta のリザーブ。これはうまい。葉巻の味がちょっと唇に残り、甘くてうっとり。
帰りに亀屋がしまっててちょっと残念。モルトがらみのビジネスしたいなぁ。
そろそろ
潮時かと思いますよ!そろそろ引くデス。いい感じだったけどね。
メモ
- MySQLにテーブルサイズとクエリ発行数のトレードオフってのはどんなんだろう。
- 今日のおべんきょ:一キロ範囲は緯度経度でざっくり区切ると、約44秒x32秒になるのでこれで計算できる。
Life Wasted
Perl Jamの新譜ビデオがグーグルビデオにあったと。これ、久しぶりにいい感じの曲だなー。弾きたい、弾きたい。
出発進行
書いたのに消しちゃったよ。
Data::FormValidator使って、多分初めて(!)「まとも」なフォームを書いた。いやぁ、意外と面倒くさいな。コマンドラインツールのほうが好きだ、俺(笑)
ともあれ、これでデータを流し込む作業開始できる。次は流し込むバイト探し。ついでにプログラムもかけるいいバイトいねぇかなぁ。
Class::DBI::Loader 0.33
サジェスチョンがあったので"require"というパラメターを実装した。動的に生成されたモジュールに対しての実ファイルがあった場合にrequireするというもの。以前Module::Pluggableで俺がやったのと基本的には一緒。ただし、今回実装したのは動的に生成されたモジュールに対してのみ。俺の以前書いたヤツはあるネームスペースに存在するものを全てrequireする。
あれ、なんでこんな時間
バイト探し関連で飯食って1時過ぎに家に帰ったのだけど、今4:59。あ、あれ・・・
プール
ざばざば。先週はプールが清掃中とかでいけなかった。今日はゆっくり目にざばざばと。やっぱここのプール人が少なくていいわ・・・
メール
帰り際にメールが来て(多分特に用無し状態においては初めて)ちと会話。すげぇ舞い上がったのだが、やっぱり何回考えても「これって・・・高校生状態だよな・・・」と自分の挙動を反省。
萌え
マグロの煮付けがうますぎる
俺の作ったマグロの煮付けがうますぎる。本当にうまい。く、今日は日本酒がない・・・