camelCaseMethodsに耐えられなかったので、その名の通り、JSON::Anyのバックエンドももちろん選択できるし、メソッド名も指定できるようにしてみた
BEGIN { $JSON::Any::FUNCTION_STYLE = 'Syck' }
use JSON::Any qw(XS Syck);
JSON::Any->Dump($hoge);
とりあえず作ってみて、作者にメールしてみた。
camelCaseMethodsに耐えられなかったので、その名の通り、JSON::Anyのバックエンドももちろん選択できるし、メソッド名も指定できるようにしてみた
BEGIN { $JSON::Any::FUNCTION_STYLE = 'Syck' }
use JSON::Any qw(XS Syck);
JSON::Any->Dump($hoge);
とりあえず作ってみて、作者にメールしてみた。
mysql+sennaでdrop indexすると全く同じサイズのsennaインデックスが作られるみたいなんだけど、なんで?しかもTIMESTAMPなカラムに対してDROPしてるんだから、関係ないsennaインデックスが作られる必要はないと思うんだけど。
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:コード足してみた。もう少し細かい音が入ってる気がする。
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かなぁ、やっぱり。
http://d.hatena.ne.jp/nipotan/20070324/1174705548
binmode(FILE, ':raw:eol(LF)') だとプログラム行数多くなるけど、速くなったりするのかな。調べようと思ったけど、腹減ったからまた後で。
うわ、雨が降ってきやがった。桜がー桜がー
現在の銀行から移行計画を発動中。とりあえず違う銀行に口座開設。
0.03アップした瞬間にglobのバグに気づいた。もうさすがにこれで網羅したろう。
オブジェクトをハンドリングできるようにした。さきほどアップロード。
まだちゃんとテストしてないけど、svn copyでブランチを移動するのに最小限のファイルを移動させてたら、Catalyst::Utils::homeがどうしてもlib/MyApp内を指すようになって色々ぶっこわれた。よーーーーくコードの動きを追って行くと、Catalyst::Utils::home内でどこがホームディレクトリか発見するヒントのひとつとしてMakefile.PLを使っているらしき事を発見。最低限touch Makefile.PLで動く事を確認した。
これはもう少しスマートにできないのかなぁ。
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。正直ちょっぴり嬉しかったのはナイショだ。
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
なんでこれになってしまうんだろうなぁ。
アップロードしたよ!
加藤さん!w
でも確かにこの辺りのモジュール、同じよーな人達が同じよーなコードを色んなフレームワーク用に書いているので、ここらで統一するのもいいのかも?Japanese::Constraintsとか作って、あちこちで使い回す、みたいな。
なんかコミッターになったよ!HTML::FormFu::Filter::Encodeをコミットしたよ!
テスト用のみ。
あまりやる気がでなくて昨日はぶらぶらと渋谷に出て映画鑑賞。「蟲師」。んー。びーみょーう。意外とオダギリジョーはいい感じにギンコっぽかったけど、起承転結の承もないくらいとろとろと話が進んで行って、なんだかわけわからずに終わった。いいのか、これで。
先週売れなかった株が今日跳ね上がってたのでサクッと売りました。28%のもうけなのでグッドです。問題は次にどこに突っ込むかだなぁ。今は総じてちょっと高すぎる。4/1になったら含み益分がガクッと落ちるかなぁ。