出社。

ThinkPad がサスペンドから復帰しねえええええ、とか思ったらディスプレイが外部出力のみのモードになってるだけだった。

by typester / at 2005-12-27T11:08:00 / life / Comment

退社。

by typester / at 2005-12-27T02:41:00 / life / Comment

現実逃避 素晴らしい洞察

宇宙の人にはてぶで現実逃避とかコメントされてた。

by typester / at 2005-12-26T10:56:00 / life / Comment

出社。

by typester / at 2005-12-26T10:31:00 / life / Comment

フェアトレードブレンド 100g

ニュー袋

もっていった豆袋があまりにもぼろぼろだったので、店員が見るに見かねて新しいのにかえてくれた。袋値引きのまま!

by typester / at 2005-12-25T19:37:00 / life · starbucks / Comment

ニューカメラ

ゲッツ!!

by typester / at 2005-12-25T17:37:00 / photo · life / Comment

むむ

create table playlist ( id integer not null, song integer not null, timestamp integer not null, primary key (id) );

create table song (
       id integer not null,
       name text,
       artist integer not null,
       album integer not null,
       parimary key (id)
);

create table album (
       id integer not null,
       name text,
       artist integer not null,
       primary key (id)
);

create table artist (
       id integer not null,
       name text,
       primary key (id)
);

とかって DB(SQLite) 構成で、

package DBIC::Playlist;
use base 'DBIx::Class::Core';
__PACKAGE__->belongs_to( song => 'DBIC::Song' );

package DBIC::Song;
use base 'DBIx::Class::Core';
__PACKAGE__->has_many( playlists => 'DBIC::Playlist' );
__PACKAGE__->belongs_to( artist => 'DBIC::Artist' );
__PACKAGE__->belongs_to( album  => 'DBIC::Album' );

package DBIC::Album;
use base 'DBIx::Class::Core';
__PACKAGE__->has_many( songs => 'DBIC::Song' );
__PACKAGE__->belongs_to( artist => 'DBIC::Artist' );

package DBIC::Artist;
use base 'DBIx::Class::Core';
__PACKAGE__->has_many( songs  => 'DBIC::Song' );
__PACKAGE__->has_many( albums => 'DBIC::Album' );

こうしたとして、ここで最新10件の playlist を取得したいとするとき、

my $playlists = DBIC::Playlist->search( {}, { order_by => 'timestamp desc', rows => 10 } );

とかすると $playlists->first->song とか他のテーブルのもの読みにいくときにいちいち SQL が発行されるのであれよね。

ここで

my $playlists = DBIC::Playlist->search( {}, { order_by => 'timestamp desc', rows => 10, prefetch => [qw/song/] } );

とかすれば song テーブルは最初の SQL で JOIN して一緒に持ってきてくれる。

それはいいんだけど、その先の song.album とかもとってきてほしいんだけど、むりっすか!

この状況でたとえばテンプレート内で

[% WHILE (playlist = playlists.next) %]
  album: [% playlist.song.artist.name %]
[% END %]

とかやると毎回 artist テーブルにクエリ投げる SQL がよばれるわけですよ。かっけぇ。。

どーすんのがいいのだろう。

by typester / at 2005-12-25T13:30:00 / perl / Comment

あー

ううむ。

by typester / at 2005-12-25T07:53:00 / life / Comment

emacs で設定ファイル

いじりまくりだぜ?

by typester / at 2005-12-24T22:09:00 / life / Comment

サブテク忘年会

いやーおもろい話がいっぱい聞けた。

感想:

  • Yappo さんはすごい
  • tokuhirom はメモ魔。メモ魔に悪いやつはいない
  • にぽたんさんのいろんな話 (眠くて最後のへんあんまり聞いてなかった!)

つーかかけないことおおすg

by typester / at 2005-12-24T21:50:00 / life / Comment

152 153 154 155 156 157 158 159 160 161

(Page 156 of 203)