すんげー暇なのでP3。
2006年08月
この半日をまとめるとこうなる。
ビアガーデン→麻雀。11時ちょっと前に起床して仕事。半日遅れだけど、公約達成。
タラコスパでも作るかなぁ。
なんか違う気がするぞ
前のエントリに書いたようにやってみて一応動くんだけど、イマイチエレガントでないのと、なんかCatalyst側から呼び出す時に問題があるので考えていたのだが、
my $schema1 = Hoge::Schema->connection(..., { AutoCommit => 0 });
my $schema2 = Hoge::Schema->connection(..., { AutoCommit => 1 });
すればいいだけか、ひょっとして。今までずっとSchemaはインスタンスじゃなくてクラスとして使ってたからちょっと気づかなかった。
Catalyst/DBIx::Class で、二つ以上のDB接続を保持
本物のデータはトランザクションベースで、もし全体として整合性が保たれない事があるなら全てロールバックしたい。もう一つ、ログ用の接続はAutoCommitで来る端からコミットしたい。
どうやるんだ、これ?後でちょっと調べよう。多分Schema二つ作ればいいんじゃないのかな、って気がする。
Hoge::Schema
Hoge::AutoCommitSchema
みたいなことをすればいいような気がする!
アホになっている
フラッシュかなんかで俺がタイプしている画面を見せたかった。↓はっと気づいて書くのをやめたところ。
$self->context->{log_rs}->create({
message => "Sex
・・・なんでだ?我ながらなんでだ?別にたまってねぇぞ?
腹減った。
今日は異常に腹減ってる。昨日の夜かなり少なめにしておいたからなぁ。
キタキタ
今日は完全にサビシンボウモードだ。うへー
ってことで四軒目
PostgreSQL now()でちょっとはまる。
ドキュメント読むとちゃんと書いてあるんだけど、now()は「現在のトランザクションが始まった時間」であって、「現在時刻」ではない。つまりcommit()するまでに作った全てのnow()が同じ時刻になるんだよね。
これ、日記才人を書いてた時に薄々知ってたけど、ちゃんとこれと向き合わなくてはいけないのが今回が初めて。とりあえず回避方法というか、ちゃんと順番に並べるためにBIGSERIALなカラムとTIMESTAMP = now()のカラムを使ってそーとする事にした。
まぁ、しょうがないね。
Senna::Snippet、動くようにした。
sen_snipを使う時にはどうしてもopen_tagとclose_tagの領域を確保したまままわさないといけないのだが、PerlからSV内のSvPVXの値を保持しておくとかするとどうにもならんので、結局新たにstructを作って、char *を保持しておくようにしてみた。
これでid:yappoさんもハッピーさ!さっきSenna-0.50_04.tar.gzをアップしたよ!
でも正直すっっっっっっっっげぇ面倒。
Senn-Perl そろそろ出すか?
0.50_03でバグ報告ないからそろそろ0.50として出すかなぁー
素麺
台所の片付け。〆はキッチンハイター。素麺。
Senna::Snippet
直してるけど、opentagとclosetagがうまくいかん!変な文字列がまざる!うがーーー
強靭な精神力
バーの前を通って帰る。暑いしね。ジントニックいいよね。ああ、二杯目にダイキリもいいよね。シェリートニック。〆に強いものでね。スコッチとかね。マティーニとかね。
・・・って思いながら今日は休肝日なんだ!と心の中で声高に叫んで帰ってきたのであります。
Pizza @ Savoy
http://www.delicious.ne.jp/html/toku02/kiji02/kiji02_0208_05.htm
SAVOYで二人でピザ二枚。一枚がオーダーして5分ででてきて、10分で食ってしまった。その後すぐ次のがでてきて、もう終わり。結局店には30分くらいしかいなかったよ(笑)
でもうまかったー。サクサクピザ。そんなにゴテゴテものは乗ってないんだけど、さっぱりうまい。きっとチーズもいいもの使ってるとみた。
そんなわけで。
今日はもう朝起きた瞬間から(8時50分)ずーーーーーーーーーっとコード書き。途中、回転寿司いきてぇ!とか思ったけどそれでもコード書き。
ようやくちょっと区切りがいいところまで来たので、これから風呂はいるよ。いくらコード職人でも風呂にははいらんと・・・
よっしゃ。
読みも直った。色々動いてるぞー。
発見
/var/senna/logだ。
なんじゃこれ
nohup /usr/local/libexec/mysqld --basedir=/usr/local --datadir=/usr/local/var --user=mysql --pid-file=/usr/local/var/s0005.pid --skip-locking --port=3306 --socket=/tmp/mysql.sock >>/usr/local/var/s0005.err 2>&1
エラー
File size limit exceeded
どのファイルみても2GB超えてないのに・・・
はまった JOIN with DBIx::Class
DBIx::ClassでJOINを使用するには二つ目のハッシュにjoin要素を入れるんだが、ここにセットする名前ではまった。
My::Schema->resultset("Hoge")->search(
{ "hoga.poop" => $poop },
{
join => "hoga"
}
);
ってやってると、No such relationship...とか言われちゃう。色々と中身を見て最終的に
DBIx::Class::ResultSource->relationship_info($relation);
がundef返してる。さらに確かめるためにrelationshipの中身を見る:
use Data::Dumper;
print STDERR (My::Schema->resultset("Hoge")->result_source->_relationships), "\n";
で見ると、JOIN対象のテーブル名が"hoga"なのにたいして、ここで指定する名前はhogasと複数形になってる。ということで解決策:
My::Schema->resultset("Hoge")->search(
{ "hogas.poop" => $poop },
{
join => "hogas"
}
);
いやー、1時間くらいはまった。
中華
jeeten、最近よくいくなぁ。鴨の薫製の揚げたヤツ、感動的にうまい。