友達が遊びたそうにしてたので、お茶して飯。意外とバーでも飯が食えて幸せ。帰り際、小腹が減っていたのだが、そこは我慢してプルジュレのみ。
2006年09月
今日はキレイにする日。
仕事をしている合間に髪の毛を切った(バリカンで剃った)。爪を切った。風呂に入った。歯を磨いた。シャンプーを詰め替えた。流しをキレイにした。
3年くらい前の曲
今耳コピしたのでメモ
Am9 / F9 イントロ+verse
C G F Dm ブリッジ
Am F Am F サビのイントロ
C G F Dm サビ最後
F#m D F#m D
Bm D A E7 (くりかえし) Am9 間奏
SiteMap
http://search.cpan.org/~jasonk/WWW-Google-SiteMap-1.09/lib/WWW/Google/SiteMap.pm
ほうほう、いやぁ無知でしたなぁ。こんなのあったんだ。
ポーチドエッグ
初めてポーチドエッグ作った!うへへ。ふわふわ。
大盛り
DBIx::Class with Parallel::ForkManager
普通に
my $schema = Hoge::Schema->connect(...);
my $pfm = Paralle::ForkManager->new(10);
while (...) {
$pfm->start and next;
...
$pfm->finish;
}
$pfm->wait_all_children;
っていう普通の使い方ならうまくいくんだが、なんかの条件が重なると
(in cleanup) Can't call method "STORE" on an undefined value at /usr/local/lib/perl5/site_perl/5.8.8/DBIx/Class/Storage/DBI.pm line 1126 during global destruction.
ってなことになる。なんでだろ。
1関数につきどれくらいの行数?
コンパクトにまとまってるなら多少長めでもいいと思うんだけど、基本的にはやっぱり1関数100行単位にしたい。あと、ループが長くなる場合は確実に短めを希望。
while ($hoge) {
hoge
hoge
hoge
...
...
...
}
より、
while ($hoge) {
process_one_loop();
}
|>
だな。ってことでリファクターをしようかと思うんだけど、どうしようかなぁ。
四ヶ月越しの想い。
ついに四ヶ月越しの想いが実った。とは言え、酒だ。某バーで、何個かのレアモルトの中から毎月投票をして上位2位をあける、というイベントをしているわけなんだが、この中の1978年もののPort Ellenが毎回必ず3位。ずっと3位。
そういうわけで毎月毎月投票をしていたのに飲めずに想いは募るばかり。そして今月・・・またも3位!でも今回はとうとうあけていただいたのでようやく想いを遂げた。
うまかったわぁ~。やっぱいいわ、Port Ellen。
TRANSAMERICA
よーやくTRANSAMERICA見てきた。連れが前売り券買ってきてくれたのでちょっと安上がり。すこーし席が前すぎたけど、別に動きが大きい映画じゃなくてよかった。
あの映画、正直主演の女優さんは偉いなぁ。普通あんな役やりたかないだろうに。演技もよかったし、かなり満足。Kevin Zegersはなんか若かりし頃(バスケットボールダイアリーズの頃)のディカプリオを彷彿とさせた。
あとはマッチポイント見に行かないとなぁ。
変な夢
すっげぇ変な夢みた。結婚している知り合いが俺の知らない男と一緒にある集まりに来ていて、その人が誰なのか聞くに聞けない。だけどあきらかに友達という以上に仲がいい。あれー、と思ってると、実は結婚してるのは俺がしってるはずの旦那さんのほうじゃなくてそっちの知らない男のほうで、なんかしらんけど二重生活を送っている、という・・・。これじゃあ漫画を通り越して「こたえてちょうーだい!」の世界だわ・・・。
もちろんただの夢ですが、夢の中ですげぇびっくり。
ちょっとショック
先日クライアントと話をしていた時に、「ソースコード管理とか、コメントとかばっちりに決まってるじゃないですか!」って言ってsvnnotifyのメールのフォルダーとかPODの説明書とか見せたら「なんだ、ちゃんとやってるんですね!」って言われてしまい、正直ショック。ある程度の量のコードを書くなら当たり前だと思うんだよね・・・。
個人でコード書いている人でも、ソースコード管理を使わない人は正直信じられない。百歩譲って天才でなおかつ自分以外の誰もコードを触らないならいいけど、普通のプログラマーがソースコード管理しないなんて、自分の力を過信しすぎだと思う。そんなんで仕事になるかっつーの。機能をひとつ入れるたびにそれを一塊として必ずコミットですよ!
というわけで、これだけマトモにエンジニアリングを普段から語っているのにそういう無責任な人と同一のカテゴリに分類されてたのがちょっとショック。
ちなみに、俺みたいなソースコード管理大好き人間はRPGゲームをする時でもこまめにセーブするはずだ(しかも何個もスロットを使ってセーブしてるはずだ)。間違いない。復活の呪文が唱えられないなんてそんな怖い事できるかw
これまた当たり前ですが、CREATE SEQUENCE + トランザクション
BEGIN;
CREATE SEQUENCE hoge_seq;
SELECT nextval('hoge_seq');
-->ここでエラー、ROLLBACK
すると、hoge_seqの存在そのものもトランザクションがROLLBACKされてしまうわけで、結局なかった事になってしまう。ユニークID作成用に自動的にsequenceを作るコードを書いたら一回失敗して、2回目に走らせる時にエラーになってしまって驚いたので。
当たり前なんだけど cp vs File::Copy
当たり前なんだけど、File::Copyを使うよりcpを使ったほうが全然仕事が速い。ってことで、いつもやってるヤツでcpがどこにあるかをprobe:
my @cmds = qw(cp); # 他にrmとかも欲しければ・・・
my @paths = qw(/usr/local/bin /usr/bin /bin);
my %commands;
foreach my $cmd (@cmds) {
foreach my $path (@paths) {
my $fullpath = File::Spec->catfile($path, $cmd);
if (-x $fullpath) {
$commands{$cmd} = $fullpath;
last;
}
}
}
これでやっとくと、/bin/cpだろうが/usr/bin/cpだろうがOK。もちろん、トロイの木馬だったら目も当てられませんが・・・。で、こいつを使って、
sub copy_file
{
my($from, $to) = @_;
my $cmd = $commands{cp};
if ($cmd) {
system($cmd, $from, $to);
} else {
require File::Copy;
File::Copy::copy($from, $to);
}
}
で一丁上がり。
地震だ地震だ
ガクガクっと来たよ。
VOX
pg_dump
ローカルでpostgresql 8.1.2、サーバーが8.1.4だと
pg_dump: server version: 8.1.4; pg_dump version: 8.1.2
pg_dump: aborting because of version mismatch (Use the -i option to proceed anyway.)
うほー。多分大丈夫だと思うけど、一応いま再コンパイル中。
タイ料理→ワイン
今日はみなさんでタイ料理。この店、主導権は客にはない。あくまで店のおばちゃんが勝手におすすめしてかってに注文を聞き間違えて出したいものを出してくるw 今日はマナガツオの揚げ物で唐辛子に当たって被害者続出。わしはビール3杯。
家に帰ってきて、この間9本も頼んだワインが今朝届いたのでワイン。テーブルワインはうまいね。しかし、ワインは他の人と一緒に飲みたい酒だねぇ。
ほげほげ。
仕事のつきあいって色々あるよねー。
飯
最近行った店:宮崎料理、スパイス料理、ベルギービール、バー"A"、バー"B"、スペイン料理。
わー、色々くってんなぁ。バー"A"のほうはいい店なのにその人は絶対つれてけないと思ってた人といけたのでちょっと満足。タムデュー飲んでたな。俺はハイランドパークとブローラがうまかった。