IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

Perl

Class::Data::Accessor と Class::Data::Inheritable の違い

Catalyst のソースを読んでいると Class::Data::Accessor と Class:Data::Inheritable が出てくる。つかわれかたは、ほとんど同じに見えるので、ちょっとソースを読んでみた。 読んでみると Class::Data::Accessor のほうは、オブジェクトメソッドとして呼ば…

Perl で JavaScript の apply っぽいやつ

JavaScript では apply や call を使って this を実行時に与えることが出来る var func = function() { return 1 + this }; alert(func.apply(1)); // 2 Perl では こうすると、this っぽい感じで与えられる my $code = sub { 1 + shift }; print 1->$code; …

Perl の local

最近、やっと普通に Perl が書けるようになってきた やっとね。 しかし、「書ける」と「分かる」とは違う まだまだ Perl のこと分かってないな。 ということで、 Perl の分からないところをいろいろと考察してみようと まず、 local が分からん Catalyst の…

attribute の解析は Catalyst::Base ではなく Catalyst::DispatchType でやるべきでは?

Catalyst::Base には以下のような関数がある。 _parse_Global_attr _parse_Absolute_attr _parse_Local_attr _parse_Relative_attr _parse_Path_attr _parse_Regex_attr _parse_Regexp_attr _parse_LocalRegex_attr _parse_LocalRegexp_attr _parse_ActionCl…

JugemKey は時計が 30 秒ずれてたらダメ

JugemKey の認証を使おうと思ったら Failed to authenticate jugemkey. Reason: 'Error on GET token: Invalid X-JUGEMKEY-API-CEATED'おこられた。。。 サーバ内部の時計を直してみた。 #perl -e 'use DateTime; use DateTime::Format::W3CDTF; print DateT…

Template::Toolkit で複数ファイルにするとインデントがずれるのを直す方法

なんでいままで気がつかなかったんだろう orz たとえば、こんな感じでずれる html.tt2 ---- <html> <head></head> <body> <div> [% content %] </div> </body> </html>content.tt2 ---- [% WRAPPER html.tt2 -%] <h1>hello</h1> <p>ああああああああああ</p> [%- END %]結果 ---- <html> <head></head> <body> <div> <h1>hello</h1> <p>ああああああああああ</p> </div> </body> </html>

Catalyst 5.7000 のバグ

Catalyst::DispatchType::Chained 190行以降あたり if (defined($parent) && length($parent)) { if ($parent eq '.') { $parent = '/'.$action->namespace; } elsif ($parent !~ m/^\//) { $parent = '/'.join('/', $action->namespace, $parent); } } else…

Catalyst勉強会資料

けっこう前ですが、会社の勉強会で Catalyst についてやりました もったいないので、共有しときます。 http://sample.ecmascript.jp/Catalyst.ppt そんな矢先ですが、 Catalyst が 5.7 になったようですね。ちょっと調査しないと