D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2006年05月


mixiで会社のコミュニティを作ってみた。そして最初の書き込みが麻雀大会のお知らせ。なんだ、この会社。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


期間限定でDELLの20インチディスプレイが4万円弱も安くなってたので購入。ビバデュアルディスプレイ。


f:id:lestrrat:20060531130849j:image:w100



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


従姉妹がなんか送ってくれたー。イチジクとかも入ってる!わーい。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


ハテナオヤさんのはてブでみた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
});


    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


逃避とか色々かねて、以前より懸案だった「モニター、キーボード、マウスのついていない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)を読まなかったらきっとなんもわからんかった。ぼへぼへ。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


なんかロシア人が俺のパッチ使えとうるさかったので、Class::DBI::Pgリリース。0.08_02文句が出なかったらこれで0.09にする。


某社に納品。某社のDBいじり中。時間かかりそう。某案件のマルチスレッド部分にタイマーを仕掛けてみてる。pthreadわけわかんね。


某バーテンさんにメール。DB作りたい作りたい。某案件のデータベース構築、一部のデータ入力が完成。やった。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


超落ち込んできた。友達の人妻とエロトークしたら大分収まったw



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


朝のコーディング時間。やっぱこの2時間は使わないと損損。


住所等を抜き出すプログラムを書きながらTV。「黒バラ」でかつらボクサーの話題の間になぜかBGMが「とくダネ!」。ワロス。トランスポーターの女の子、かわいー。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


べつやくれいの「ココロミクン」購入。おもろ。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


思ってたより心が折れてたので、連荘でバー。コニャックとか色々飲みつつ葉巻。葉巻は色々試してみてきていたが、やっとうまい!と思うものに出会えた。Romeo y Julieta のリザーブ。これはうまい。葉巻の味がちょっと唇に残り、甘くてうっとり。


帰りに亀屋がしまっててちょっと残念。モルトがらみのビジネスしたいなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


潮時かと思いますよ!そろそろ引くデス。いい感じだったけどね。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr



  • MySQLにテーブルサイズとクエリ発行数のトレードオフってのはどんなんだろう。

  • 今日のおべんきょ:一キロ範囲は緯度経度でざっくり区切ると、約44秒x32秒になるのでこれで計算できる。




    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


Perl Jamの新譜ビデオがグーグルビデオにあったと。これ、久しぶりにいい感じの曲だなー。弾きたい、弾きたい。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


書いたのに消しちゃったよ。


Data::FormValidator使って、多分初めて(!)「まとも」なフォームを書いた。いやぁ、意外と面倒くさいな。コマンドラインツールのほうが好きだ、俺(笑)


ともあれ、これでデータを流し込む作業開始できる。次は流し込むバイト探し。ついでにプログラムもかけるいいバイトいねぇかなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


サジェスチョンがあったので"require"というパラメターを実装した。動的に生成されたモジュールに対しての実ファイルがあった場合にrequireするというもの。以前Module::Pluggableで俺がやったのと基本的には一緒。ただし、今回実装したのは動的に生成されたモジュールに対してのみ。俺の以前書いたヤツはあるネームスペースに存在するものを全てrequireする。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


バイト探し関連で飯食って1時過ぎに家に帰ったのだけど、今4:59。あ、あれ・・・



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


ざばざば。先週はプールが清掃中とかでいけなかった。今日はゆっくり目にざばざばと。やっぱここのプール人が少なくていいわ・・・



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


帰り際にメールが来て(多分特に用無し状態においては初めて)ちと会話。すげぇ舞い上がったのだが、やっぱり何回考えても「これって・・・高校生状態だよな・・・」と自分の挙動を反省。



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr


俺の作ったマグロの煮付けがうますぎる。本当にうまい。く、今日は日本酒がない・・・



    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

このページのトップヘ