2014-03-01から1ヶ月間の記事一覧

学生最後の日という何か

明日から社会人になるてことで、最後までいつも通り学生らしいグダグダな一日を過ごしたことを、ここに記録する。

三項演算子と関数の罠 "Use of ?PATTERN? without explicit operator is deprecated"

$ # re.plで実行 $ sub FOO { 'FOO' } $ my $foo = FOO FOO $ $foo eq FOO ? 'foo' : 'bar' # NG Use of ?PATTERN? without explicit operator is deprecated at (eval 410) line 8. Compile error: Search pattern not terminated or ternary operator pars…

perlsubクイズ

対象は自分です。 問題1 use strict; use warnings; use feature 'say'; # ↑以降省略 say do { my $a = 100; sub { $_[0] *= $_[0] }->($a); $a; }; 問題2 say do { my @a = (1..10); sub { $_[0] *= $_[0] }->(@a); $a[0]; }; 答え合わせ 問題1 A. 10000 理…

Exporterなベースクラスのuse parent

Exporterを適用したクラスをuse parentで継承した際に、子クラスで@EXPORT*な関数を裸で参照する方法です。 # Base.pm package Base; use strict; use warnings; use parent qw(Exporter); our @EXPORT = qw(foo); sub new { bless +{}, shift } sub foo { p…

FormValidator::Liteのメモ

FormValidator::Lite - search.cpan.org FormValidator::Simpleとは違いcheckの戻り値は$validatorインスタンス自身。 load_function_messageで楽する場合、set_param_messageでパラメータに対する文字列をセットしておかないとget_error_messagesでポシャる…

CPANメモ

黙ってcpanm使うべし。 プロジェクトローカルでモジュールをインストールしたい場合はcpanfileを作ってcarton install GemfileとBundlerの関係と同じ アップデートが必要なモジュール一覧はcpan-outdated(App::cpanoutdated)コマンドで インストール済みの…

Perlにおけるメタプログラミングのための基礎知識

例のごとくAmon2の実装を眺めていた所、Amon2::Web::Dispatcher::RouterBoomの解読で手が止まりました。使い方さえ分かれば無理に読む必要は無いわけですが、どうにも気になってしょうがないので仕組みを調べることにしました。コードの雰囲気からしてメタプ…

PSGI/Plackオレオレ入門

ここ数日、Amon2を解読していたのですが、結局PSGI/Plackをちゃんと理解してないと話にならないことが分かったので、PSGI/Plackを一から勉強してみました。ということでその記録です。 PSGI/Plackについて PythonにおけるWSGI、RubyにおけるRack、それに相当…

PerlにおけるRubyライクなブロックにまつわる、関数のプロトタイプについてのまとめ。

Amon2のbasic flavorな自動出力を眺めていたら、"script/myapp-server"*1にこんなソースが有りました。 my $app = builder { enable 'Plack::Middleware::Static', path => qr{^(?:/static/)}, root => File::Spec->catdir(dirname(__FILE__), '..'); enable…

Webセキュリティメモ

何となく、自分の理解をまとめておきたくなったので、徒然と書き連ねます。 セッションとCookie 誰からのアクセスなのかを判別するためには何らかの識別子(ID)が必要である。それがセッションID。 クライアントは、自分が誰であるのかを証明するために、通…