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.

2007年03月


camelCaseMethodsに耐えられなかったので、その名の通り、JSON::Anyのバックエンドももちろん選択できるし、メソッド名も指定できるようにしてみた



BEGIN { $JSON::Any::FUNCTION_STYLE = 'Syck' }
use JSON::Any qw(XS Syck);

JSON::Any->Dump($hoge);

とりあえず作ってみて、作者にメールしてみた。



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


mysql+sennaでdrop indexすると全く同じサイズのsennaインデックスが作られるみたいなんだけど、なんで?しかもTIMESTAMPなカラムに対してDROPしてるんだから、関係ないsennaインデックスが作られる必要はないと思うんだけど。



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



G D/G
No you're not the first
Em D/F#
Yes I have had a past
Em A?
Though I'm not your first
D G
I intend to be the last

聞き取れた分。検索してもでてこなかった。誰の曲?


追記1:Janis Ianらしいというところまで発見したが、どうしても該当の曲がみつけられん・・・新曲?


追記2:あ、ここに→http://www.jti.co.jp/sstyle/manners/ad/change/tvcm/tvcm05.html


追記3:コード足してみた。もう少し細かい音が入ってる気がする。



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



http://lists.scsys.co.uk/pipermail/catalyst/2007-March/012769.html



YAPCでちょっとかぶるネタを喋るつもりなんだけど、これは時間の都合上これは含めない予定なので先にこっちに晒しておく。


NEXT.pmを使うとダイアモンド型のクラス継承構成の場合、



package Example::A;
package Example::B; @ISA = qw(Example::A);
package Example::C; @ISA = qw(Example::A);
package Example::D; @ISA = qw(Example::B Example::C);

# 上記で全てのクラスに
# sub new { shift->NEXT::new(@_) }
# が定義されてると仮定

呼び出し順はD -> B -> A -> Cで、最後に呼ばれるべきベースクラスAがCより先に呼ばれる。もしA内でbless()を呼んでいるのであれば、



sub Example::A::new {
my $class = shift;
my $self = bless {}, $class;
$self->NEXT::new(@_); # あれ、ベースクラスなのにnew()ですか・・・
}

sub Example::B::new {
my $class = shift;
my $self = $class->NEXT::new(@_);

# 初期化
}

sub Example::C::new {
my $class = shift;
# あれ、$class はすでにbless()されとる?
my $self = $class->NEXT::new(@_);

# 初期化 ... ?
}

Bのコンストラクタは$_[0]にクラス名が、Cのコンストラクタには$_[0]にすでにbless()されたオブジェクトが入っている事になってしまう。一応この辺りもハックして順番が後になっても大丈夫なようにすることはもちろんできる



sub Example::C::new {
my $class = shift;
my $self = ref $class ? $class : $class->NEXT::new(@_);

# 初期化 ...
}

でも、これなんか変。多分それぞれの中間のクラスがさらに複数の親を持っていたら場合によってはさらに変な事になってしまう可能性が高いし、こんな事に対応してまでNEXTのディスパッチングに合わせるっていうのがなんか嫌だ。一応自分の中の解決策としてはNEXTを使う場合はNEXTで呼び出すメソッド内の呼び出し順が問題にならないメソッドでやるべき。



# new()はベースクラスのみで実装
sub Example::A::new {
my $class = shift;
my $self = bless {}, $class;

$self->initialize(@_);
}
sub Example::A::initialize {
my $self = shift;
# 全て共通の初期化
$self->NEXT::initialize(@_);
}

sub Example::B::initialize {
my $self = shift;
$self->NEXT::initialize(@_);
# Bの初期化
}

sub Example::C::initialize {
my $self = shift;
$self->NEXT::initialize(@_);
# Cの初期化
}

sub Example::D::initialize {
my $self = shift;
$self->NEXT::initialize(@_);
# Dの初期化
}

ディスパッチの順番は守られないのは変わらないのだけれども、ディスパッチがAに来た時にNEXT::initialize()を呼ぶ前に初期化を行う事で最低限の初期化順番を守れる。


Class::C3かなぁ、やっぱり。



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



http://d.hatena.ne.jp/nipotan/20070324/1174705548



binmode(FILE, ':raw:eol(LF)') だとプログラム行数多くなるけど、速くなったりするのかな。調べようと思ったけど、腹減ったからまた後で。



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


うわ、雨が降ってきやがった。桜がー桜がー



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


現在の銀行から移行計画を発動中。とりあえず違う銀行に口座開設。



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


0.03アップした瞬間にglobのバグに気づいた。もうさすがにこれで網羅したろう。



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


オブジェクトをハンドリングできるようにした。さきほどアップロード。



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


まだちゃんとテストしてないけど、svn copyでブランチを移動するのに最小限のファイルを移動させてたら、Catalyst::Utils::homeがどうしてもlib/MyApp内を指すようになって色々ぶっこわれた。よーーーーくコードの動きを追って行くと、Catalyst::Utils::home内でどこがホームディレクトリか発見するヒントのひとつとしてMakefile.PLを使っているらしき事を発見。最低限touch Makefile.PLで動く事を確認した。


これはもう少しスマートにできないのかなぁ。



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



バッテリー

バッテリー







いまさらですが、あさのあつこ「バッテリー」の1巻を読んだのです。O賀ちゃんが貸してくれた。結構いい、この話。やっぱり子供向けなので短い感じがするけど、いい感じで少年の葛藤とかが込められてて楽しく読めたよ。はやく続きをプリーズ>O賀



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


Googleからメールが来た。



Hi Daisuke,

My name is ******** and I am a Recruiter for the Google.com Engineering team. While doing
a search for a specific skill set, I found you on the Internet and I am interested to know
more about your past work experience and openness to new opportunities. We currently have
positions available at Google that may be a good match for you.

ははは、俺リクルートされてるしw。正直ちょっぴり嬉しかったのはナイショだ。



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



http://www.fileformat.info/info/unicode/char/search.htm



このサイト有名?俺きょう初めて知ったのだけど。草なぎ剛の「なぎ」の字でほげほげしてたら発見したのです。自分が使ってる文字のコードポイントが本当に正しいのか調べるのにとてもイイ!


ちなみに「なぎ」の字はこちら



http://www.fileformat.info/info/unicode/char/5f45/index.htm



某DBから持ってきてた字がこちら



http://www.fileformat.info/info/unicode/char/78f2/index.htm



なんでこれになってしまうんだろうなぁ。



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



http://search.cpan.org/~ktat/Data-RuledValidator-Plugin-Japanese-0.02/lib/Data/RuledValidator/Plugin/Japanese.pm



加藤さん!w


でも確かにこの辺りのモジュール、同じよーな人達が同じよーなコードを色んなフレームワーク用に書いているので、ここらで統一するのもいいのかも?Japanese::Constraintsとか作って、あちこちで使い回す、みたいな。



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


なんかコミッターになったよ!HTML::FormFu::Filter::Encodeをコミットしたよ!



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


あまりやる気がでなくて昨日はぶらぶらと渋谷に出て映画鑑賞。「蟲師」。んー。びーみょーう。意外とオダギリジョーはいい感じにギンコっぽかったけど、起承転結の承もないくらいとろとろと話が進んで行って、なんだかわけわからずに終わった。いいのか、これで。



蟲師


1.0



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


先週売れなかった株が今日跳ね上がってたのでサクッと売りました。28%のもうけなのでグッドです。問題は次にどこに突っ込むかだなぁ。今は総じてちょっと高すぎる。4/1になったら含み益分がガクッと落ちるかなぁ。



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

このページのトップヘ