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.

2005年10月


恒例歌丸一門会。歌丸さんは「文七元結」。なかなかよかったので「牡丹燈籠」のように本になってるのだったら読みたいなぁ、と思ったのだけど


CDしかないみたいだな


そういえば桂花丸がクビになった話が出たのだがわざわざ「2chとかには書かないでくださいね」って言ってた。会場がお年寄りだらけでわからないと思ってたのかもしらんが・・・か、書いちゃおうかなぁ・・・



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


今日は臨時教師の予定です・・・いったい何を教えよう。



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


id:naoya経由で



はてブから L 社では DateTime を使ってるっぽい雰囲気を感じたので、Time::Piece + Date::Simple から脱却し、DateTime を使ってみようと思った。


http://tokuhirom.dnsalias.org/~tokuhirom/tokulog/2145.html



L社で最初にDateTime使ってたのは多分おいらだー、とこっそり言ってみる。


さて、DateTimeは開発側で結構ごにょごにょやってきたわけだけど、"formatter"という概念がしっかりしてててClass::DBIととても使いやすい。



package My::CDBI;
use strict;
use base qw(Class::DBI);
use Class::DBI::LazyInflate;
use DateTime;
use DateTime::Format::Pg;

sub pg_inflate_datetime { DateTime::Format::Pg->parse_datetime(shift) }
sub pg_deflate_datetime { DateTime::Format::Pg->format_datetime(shift) }
sub pg_inflate_duration { DateTime::Format::Pg->parse_duration(shift) }
sub pg_deflate_duration { DateTime::Format::Pg->format_duration(shift) }

sub has_datetime
{
my $class = shift;
my $field = shift;

$class->has_lazy(
$field => 'DateTime',
inflate => \&pg_inflate_datetime,
deflate => \&pg_deflate_datetime,
);
}

sub has_interval
{
my $class = shift;
my $field = shift;

$class->has_lazy(
$field => 'DateTime::Duration',
inflate => \&pg_inflate_duration,
deflate => \&pg_delfate_duration
);
}

これで普通~にDateTimeオブジェクトをTIMESTAMPやらINTERVALやらで使える。



CREATE TABLE foo (
id PRIMARY KEY,
foo_timestamp TIMESTAMP
);

package My::CDBI::Child;
use strict;
use base qw(My::CDBI)

__PACKAGE__->has_datetime('foo_timestamp');

package main;
my $foo = My::CDBI::Child->retrieve('hoge');
print $foo->foo_timestamp->ymd, "\n";

ただDateTimeは遅くて、それをどうにかしようと思ってDT::TimeZoneをXS化しようとしてたのだけど、全部XS化しようとしても全然はやくならないんだよねぇ。というわけでそのコードは今はCVSの別ブランチにほげられてるはず。とほほ。



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


ビビンバ、豆腐、白和え



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


なんか、うーん。B級好きなら見る価値はありだが、これは希に見るひどい話だ・・・



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


夜9時か10時くらいに撃沈したと思ったら次の日午後12時まで起きなかった。俺にしてはありえないくらいの激15時間睡眠。いや~、本当によく寝た。



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


午前2時半くらいにFile::Extract-0.03をアップロードしたのだけど、なんかBuild distした時にmanifestがアップデートされてなくて新ファイルが全然インクルードされてなかった・・・


あうー。しょうがないので昨日偶然見つけたCAM::PDFでPDF内のテキストを抽出できるようにファイルを足してみたりして、0.04をアップロード。CAM::PDF、ちょっとテストした分には遅いけど使えそう・・・かなぁ?



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


この前Tさんと話してたりして思ったんだが、俺はやっぱり「インターネットを作った」世代ではなくて「インターネットがあって当たり前」の世代なんだよなぁ。開発する時にネットワークはつながってて当たり前。必要な物はインターネットに最低限ヒントが落ちてて当たり前。逆に言うとネット接続がないとPCなんて俺にとってかなり無用の長物だし・・・


なにはともあれ、開発の際の意識とか、結構そういうところで左右されてるなぁと。



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


日本に帰ってきて・・・というか、多分初めて健康診断っていうものをやってきた。日本に帰ってきてから勤めたところで健康診断をする機会は何回かあったんだが、その悉くで健康診断の日取りまで決めた後、でも実際に診断を行う前に会社を辞めてしまったので今までやっていなかったのだ。


お昼すぎからの診断だったのでお昼は抜けと言われてたのだが、結局お昼どころか朝も抜いて某所へ。「くれぐれもお願いします」と頼まれてしまったのでHろゆきとUさんと待ち合わせ。っていうか、俺が二人の問診票持たされてるし・・・最低30分くらいは遅れてくるんだろうなぁと思って待っていたのだが意外にもHろゆきがまず5分遅れで到着。Uさんもそのあとついたので早速現地へ。


今日は尿検査、身長体重測定、血圧、視力、聴力、心電図、診察、血液検査、眼底検査をやった。ほとんどの結果はまた後日なのだけど、とりあず視力は以前より落ちてなくて1.5と1.0。多分右目が1.0なんだろうな。これだけ毎日長時間パソコンを触ってるのに我ながら対したもんだ。眼底検査は残像が残っておもしろかった。


ってなことをして1時間強。軽くご飯を食べてさいなら。



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


File::ExtractをCPANにアップしてみた。RTFとかしかないのだけど、他のファイルタイプからの抽出はまたそのうちできるだろー、と。



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


おいおいおいおい・・・なんでぷっすまに乙部さんが・・・あほか。



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


この間結婚した友人達がご飯をおごってくれた。あとお礼に名刺入れもらったよ!わーい。



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


今日一瞬時間が空いた時に宮川さんと会話した内容から作ったですよ:



use File::Extract;
use File::Extract::Filter::Exec;

my $extract = File::Extract->new(
filters => {
'text/plain' => [
File::Extract::Filter::Exec->new(cmd => "perl -pe 's/^/\$. /'")
]
}
);
$extract->extract($file);

ってな感じでフィルターするコマンドを実行してからファイルの内容を抽出できる。上記の例の場合はプレーンテキストファイルの行頭に行番号をいれてから抽出する。


初めてIPC::Open2使ったけど、なかなか便利やねぇ。ちなみに perl -pe とかでIPC::Open2を使う場合ファイルハンドルのクローズタイミングがポイントですよ(一回ひっかかってデバッグ時間2時間を費やしてしまった・・・)



my ($read, $write);
open2($read, $write, "perl -pe 's/^/\$. /'");

while (<$source>) {
print $write, $_;
}

close($write); # ここで閉じないと、perl が終了しない

while (<$read>) {
print $_;
}


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


さー、そろそろ帰ろうかと思うが、一体今からどんな夕飯を食えばいいのだ。ウチには何もないよーな気がする・・・うーん、うーん。



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


寝れなかったのに朝からUSA社の人達を案内してサーバーのインストールとかほげほげ。昼も色々。あ、そういえばカラスが車にひかれて死ぬ瞬間を見てしまった。


オフィスのソファで20分くらい爆睡。RTのメール、設定できたぞ。後はスパムフィルタ。よくわけわからんのだけどね・・・という訳でメモ



http://www.soundwave.net/~wmono/rt/


http://traxel.com/doc/spamassassin-setup.html




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


mod_senna書いてたらこんな時間になってしまった・・・明日も朝から仕事なのに・・・



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


以前使ってたAxKitが1.7RCになった。遅い、遅すぎる。2年程の期間が空いていたわけだけれども、この間に世界は先へ進み、俺はMasonに移行してしまった。とてもよいXMLのフレームワークだったのに、もったいないとしかいいようがない。



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


な、なんか筋肉痛だなぁ~



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

このページのトップヘ