Amon2 で bootstrap しているのは、dbh などのリソースのキャッシュのためというのが大きいです。 ですから、無闇に bootstrap メソッドをよびまくるとおかしいことになります。 bootstrap する箇所は以下のような場合です。 スクリプトの頭ジョブワーカーのジョブ単位の開始時Web の1リクエストごと(これは Amon2::Web で自動でよばれる)
http://www.songmu.jp/riji/archives/2013/02/2013getoptlong.htmlhttp://d.hatena.ne.jp/tagomoris/20120918/1347991165my $p = Getopt::Long::Parser->new( config => [qw(posix_default no_ignore_case auto_help)] ); $p->getoptions( 'version!' => \$version, );オプションのこまかいところはsongmuさんとtagomorisさんの記事をみてもらうとして、なにがいいたいかというと、Getopt::Long は OO インターフェイスがあるので、OOインターフェイスをつかった方がゆとり教育をうけている世代のみなさんにも理解しやすいとおもいます。
https://metacpan.org/module/TOKUHIROM/App-scan_prereqs_cpanfile-0.02/script/scan-prereqs-cpanfile This script scans prerequisite modules from your code, and generate CPANfile. You can also list missing prerequisite modules. 日本語でもうしあげますと、 $ scan-prereqs-cpanfileと実行すると、カレントディレクトリから情報をかきあつめまして、cpanfile を生成して表示します。 $ scan-prereqs-cpanfile --diff=META.jsonまたは $ scan-prereqs-cpanfile --diff=cpanfileとすると
使い道がよくわからんなあ、とおもって無視していたのですが、 Perl 5.10 以後では UNIVERSAL::DOES がつかえるようになっています。具体的にはあらゆるオブジェクトで ->DOES というメソッドがよべるようになっています。 これにより、オブジェクトがロールをサポートしているかどうかのチェックができるようになっています。 Role は isa に追加してもいいが、以下のように DOES メソッドを追加してもよい。 sub DOES { my($c, $name) = @_; return $name eq 'Role::SuperHero' || $c->isa($name); }Perl 5.10 より古い、もはやメンテナンスされていない Perl でも、変態仮面こと gfx さんによる UNIVERSAL::DOES というモジュールをつかうことにより、エミュレーショ
http://perldoc.perl.org/perlstyle.htmlhttp://perldoc.jp/docs/perl/5.8.0/perlstyle.podperlstyle.pod にのっているものが公式のスタイルガイドです(Larry 風)。 Larry has his reasons for each of these things, but he doesn't claim that everyone else's mind works the same as his does. このへんが Perl らしさ、というかそういうかんじですね。 Perl Best Practice にのっている Damian style もありますが、これはだいぶ癖がつよいです。 日本では「miyagawa さんのスタイルにあわせておけば DIS られる心配はない」方式のコーディングスタ
あまり触れる気もなかったのですが、日本語でふれている人がいなかったので。 Perl 5.8 〜 5.16 で DoS の security fix がでています。OS の system perl をつかっている場合には問題がありませんが、そうでない場合には自分できっちりとアップデートをおこなった方がいいです。 Hash の rehashing flaw に関するコアの問題ですが、ウェブアプリケーションを外部から攻撃可能な場合があります。また、このケースは、ミドルウェアなどでの防御は困難そうです。 セキュリティフィックスのあたった、Perl 5.16.3 または 5.14.4 にアップグレードしてください。 それより以前の Perl に関してはこの問題を fix する patch が maint-5.8 などのブランチにコミットされているパッチを適用してください。 この問題についての ful
前提知識Perl5 は minor version 間ではバイナリ互換性が保証されているPerl5 の minor update では、bug fix しか基本的に行われないPerl5 Porters の保守的さ度合いは信用できるperlbrew でセットアップするときに気をつけることインストール名をデフォルトの perl-5.16.3 などとせず、perl-5.16 と minor version を含めないようにする。 例: perlbrew install perl-5.16.2 --as perl-5.16セキュリティフィックスがでた場合の処理chromaticの記事で知ったのだが、perlbrew には upgrade-perl というコマンドがあり、最新のバージョン(マイナーアップデートのみ)にアップグレードすることが簡単にできる。 perlbrew upgrade-perlこ
日ごとの CPAN モジュールのアップロード数をHRForecastで可視化してみた。 感覚値としては5年ぐらい前より増えてる感じなんだけど、まあ実際そういう感じですね。
素朴な疑問Amon2はpsgiファイルが雛形でつくられるけどMojoliciousではgenerate appで何故つくられないんだろ?。 — dokechin (@dokechin) February 28, 2013 Amon2 は Plack/PSGI のツールチェーンを利用した開発を推奨し、CPAN を使いこなした開発を行うことを目標においています。 一方、Mojolicious の場合は、すべてを内包し、サーバースクリプトなども用意する方針だからです。 (Plack の上で動かすことも勿論可能ですが、それはメインではなくサブだとおもう) 【in English】 Amon2 loves CPAN toolchain includes Plack, PSGI, etc. Then, there is no reason to support .psgi style. But Moj
I guess, Try::Lite is very useful in PSGI handler. use Try::Lite; my $app = sub { try { main_handler(); } "MyApp::Exception::PermissionDenied" => sub { [403, ['Content-Type' => 'text/plain'], ['Forbidden']] }, "MyApp::Exception::NotFound" => sub { [404, ['Content-Type' => 'text/plain'], ['Not Found']] }, };Awesome.
フォーマットの変更は、ユーザーに対して基本的に不利益をあたえる バージョン情報が含まれているフォーマットならば問題はすくないユーザーはなにも考えたくないから汎用フォーマットをつかう できるだけなにも考えたくないゆるふわプログラマーがほとんどなのですYAML をみよ バージョンの差異と、プラットフォームごとの実装の非互換によってわけわかめである初期の時点でまともに実装できている処理系がすくなかったバージョン2を現在まともに処理できているのは libyaml ぐらいではないか? これはフォーマットの複雑さによるところが大きい1のライブラリと2のライブラリ、ユーザーには見分けがつかない状況 YAML::XS が2 で YAML.pm が 1 とどうしてわかる?非互換や、ユーザーのプログラムがこわれる変更は、まあなしね。Data::MessagePack2 とかがでたときに、たとえば AnyEve
普段、JS をつかってるときによくつかってるスクリプトたちを Amon2 でスケルトンつくったときにだすようにしておいた。 でっかいものじゃなくて、簡素なユーティリティ的なものだけをとりいれています。
一般的な Web Programmer ならば、HTTP Status code はすべて暗記していると聞きました。 しかし、僕は初心者なので、なかなか覚えきれていないので、HTTPのステータスコードをさがすのに便利なツールを用意しました。App::httpstatus です。インストール方法は cpanm App::httpstatus です。というか依存とかないのでhttp://api.metacpan.org/source/TOKUHIROM/App-httpstatus-v1.0.0/httpstatus をコピーしてくればうごきます。 使い方は以下のとおりです。 4xx なコードを列挙する。 % httpstatus 4 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Foun
ディレクターの人にわかりやすいように、Amon2 をつかった一般的なプログラムのディレクトリ構成をわかりやすく説明していくよ。
問題Amon2 のプロジェクトを2つ Plack::Builder で mount してつかいたい、みたいなときにコンテキストがどっちかこんがらがったりしそうかなーっておもったりしたんで。 というかなんかこう、サブアプリみたいなやつをつくりたいとき用です。 TheSchwartz Monitor を Amon2 でつくって mount する、的な。 解決方法Amon2 3.72 で用意された make_local_context メソッドをつかえばいい。以下のように簡単にちいさなアプリをつくれる。 package MyApp; use parent qw(Amon2 Amon2::Web); use Amon2::Web::Dispatcher::Lite; __PACKAGE__->make_local_context(); use Text::Xslate; use File::Spe
I shipped Module::Functions, that aggregates list of public functions from package. I released Exporter::Auto in 2011, but some people thinks this module is too clever :P You can do same function with less clever way with Module::Functions. Here is example code: package My::Class; use parent qw/Exporter/; use Module::Functions; our @EXPORT = get_public_functions(); Yes. Code using Exporter::Auto i
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く