Tweet <a href="#" onclick="Evernote.doClip({ styling:'full', providerName:'tf::blog', url:'http://blog.on-net.jp/tf/2011/02/catalyst-58.html', title:'Catalyst 5.8へのアップグレード - tf::blog', header: '
何とタイムリーな記事。まつもとさんが「仕様の継承」と「実装の継承」について語っているので勝手にまとめてみる。 まつもとさんがITProに書いた記事がきっかけになったのか、最近 Mixin に関する話題をよく目にする、気がします。 Perl は多重継承をサポートする一方で、Exporter を使った Mixin も可能です。この辺はmiyagawa さんのメールマガジンのバックナンバーに詳しく書いてあります。 Object-Oriented Programming with Perl Vol.29 - Exporter による Mixin Object-Oriented Programming with Perl Vol.30 - Exporter::Lite Exporter で関数を export しつつ、それを import した側で、関数ではなくインスタンスメソッドとしてそれを利用す
NAME daemontools-plack-runner - Shell Script To Bootstrap Plack Apps From Daemontools DESCRIPTION Generic run file to execute plack with daemontools ASSUMPTIONS * ALL perl dependencies are available via a local::lib directory (default extlib) * Requires daemontools (duh) * Requires Plack (duh) * Requires local::lib In many cases, local::lib MUST BE INSTALLED GLOBALLY, NOT your ~/perl5. If in doubt
NameVirtualHost *:8080 <VirtualHost *:8080> PerlOptions +Parent PerlSetEnv CUTY_DEBUG 0 PerlSetEnv CUTY_CONFIG_LOCAL_SUFFIX production PerlSwitches -I/path/to/Cuty/lib PerlLoadModule Cuty DocumentRoot "/path/to/Cuty/root/static" <Location /> SetHandler modperl PerlResponseHandler Cuty </Location> </VirtualHost>PerlLoadModuleする前にPerlSetEnvしないと効かないっぽい。
Catalyst::Model::AdaptorがGJ Catalyst::Model::Adaptorがリリースされていたので早速使ってみた。 それまでもなるたけ全てのロジックをモデルにいれようとしてたんだけど、モデル自体がCatalystにべったりで嫌な感じだったのでどうやって分けようかと考えてきた。例えばCatalystに載せたくない(メモリを食う割に、別に非同期でバッチ処理すればいいものとか)もmodelにしか生き場所がないのにCatalystから分離できないという妙な状態だったりした。 そこでCatalyst::Model::Adaptorです。Minicoの現在の開発版ツリーはそんなところからAdaptorで実装をリファクタリングしてみた。 多分ケースバイケースなんだろうけど、俺の場合は以下の数点を考慮しながらやったらいい感じになってきましたよ: Minico::Busines
Catalyst::Model::Adaptor - use a plain class as a Catalyst model 要はどんなクラスでもCatalystのモデルにしてくれるクラスです。 たとえばこんなクラスを作って lib/MyApp/DateTime.pm package MyApp::DateTime; use strict; use warnings; use base qw/DateTime/; use DateTime::Format::W3CDTF; sub now { my ($class, $args) = @_; $args->{time_zone} = 'local' unless $args->{time_zone}; return $class->SUPER::now(%$args); } sub parse { my ( $class, $str )
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
// forked from sugyan's "wonderfl presentation template" http://jsdo.it/sugyan/presentation-base-wonderfl // まずはページ幅取得 var width = document.documentElement.clientWidth; document.body.className = 'slidemode'; // フォントサイズ調整 document.body.style.fontSize = width / 5 + '%'; var slides = []; var SV = 'slide view'; var SR = 'slide right'; var SL = 'slide left'; // スライドの各ページを取得 // divタグのクラス名で判定 var divs =
catalystアプリケーションでstarmanを使ってみてabしてみた ab -n 100 -c 10 http://127.0.0.1:5000/ catalyst server Requests per second: 15.50 [#/sec] (mean) plackup -o 127.0.0.1 -I lib script/myapp.psgi Requests per second: 11.45 [#/sec] (mean) starman script/myapp.psgi --host 127.0.0.1 -I lib port 5000 --disable-keepalive --user www Requests per second: 25.82 [#/sec] (mean) starman script/myapp.psgi -MCatalyst -MDBIx::
問題 ご存じのように、 $c->req->param('fieldname')としてフォームの値を参照できますが、 今構築中のアプリで、BodyParameterログをみてみると、 (※リクエスト値があるときにデバッグログに表示されるやつ) .... 入力されていないフィールドの名前と値('')が取れていない ....つまり、 $c->req->param('empty_field_name') => undef, exists $c->req->params->{'empty_field_name'} => Falseっておおっ?? 普通は困らないのかもですが、 今はHTML::FillInFormを使う事前提の組み方なので、 空でもなんでも、値(というか、そのフィールド名)が検知できないと 色々××なことになるのです。 これはアカンということで調査。 結果 Catalyst自身の問題か
ハマッたのでメモ。 以前どこかでPOSTの生データを取得するには$c->req->bodyから取れるというのをうろ覚えしてたのでやってみたんだけど取れなかった。 ちゃーんとPOSTでリクエストしているのに取れないわけだ。 ちなみにコードは以下。 use LWP::UserAgent; my $url = 'http://example.com/hoge'; my $query_string = "foobarbaz"; my $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(POST => $url); $req->content_type('application/x-www-form-urlencoded'); $req->content($query_string); my $res = $ua->request($req
Catalystでハマった あるControllerで、指定の条件下ではアクションを実行させず404にしたい、というときにbeginとかautoで package MyApp::Controller::Hoge; use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller' } sub begin :Private { my ($self, $c) = @_; $c->detach('/default'); } sub index :Path :Args(0) { my ($self, $c) = @_; $c->log->debug('hoge'); $c->detach('/default'); $c->log->debug('fuga'); } __PACKAGE__->meta->make_i
2009年05月17日00:14 Perl CatalystのChainedアクションの連鎖を止める方法 最近Chainedアクションを使っていて困ったことがありました。それは、、、 レインボーブリッジが封鎖d Chainedアクションの連鎖が止められませんっっ(ノ`□´)ノ〜┻━┻ どういうことかというと、ログインしているかどうかのログインチェックをChainedアクションを使って実装していて、未ログイン状態だったらログインページにリダイレクトさせたかったんです。 sub auto : Private { my ($self, $c) = @_; $c->res->redirect( 'http://www.zozom.net' ); $c->log->debug("in auto"); } sub hoge : Local { my ($self, $c) = @_; $c->log-
自分の最近のCatalystのモデル部分の書き方 こちらのブログでなんか呼ばれた気がしたのでとりあえず書いてみた。 あくまで自分はどうしてるか、って話ですが、最近はCatalystでなんか書くときはこんな感じで使ってます。 色んな事がこの図に詰まっているので、箇条書きしてみる: Model::APIがAPIオブジェクトを作成して、使用時にはModel::APIに対して`find()`というメソッドを使って実際のAPIオブジェクトを持ってくるSchema等はMyApp::Schemaに定義し、Model::APIのアトリビュートとして持っている。cacheも同等。これらの初期化引数は設定ファイルのModel::APIから取れるようにしておくCatalyst::Model::DBIC::Schemaは*使ってない*Model::APIではACCEPT_CONTEXTが呼ばれた時点で、もしまだ初
1 年間インフラ修行ばっかりやってて、カタムースとかプラック企業の流れに乗り切れなかったので 一念発起して最近趣味で Plack と Catalyst で Web アプリを書こうとしています。 ただ、アプリのロジックに入る前に、そもそもモジュールの構造をどうしようかと 試行錯誤するだけで数週。。。一旦ここまでのまとめをしておきたいと思いました。 Perl 界隈の方々は本当にエロくてすばらしいなと改めて感じました。 自分のプログラムセンスの無さをひしひしと感じてますが、 今回のアプリの開発を通じて何か CPAN に上げて、僕もエロくなれたらいいなぁ とか密かに思ってたりしてます。 それは MyApp::Web から始まった とりあえずモダン Perl 入門にあるように、以下の様なコマンドで Catalyst 用のモジュールを 一段名前を掘って作りました。 catalyst MyApp::We
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
Akismet の perl モジュールをさがしてる途中で、Catayst::Model::Akismet ってのをみつけた。昔の Cat はこんなものをいちいち CPAN にあげてたのかー、とおもうとちょっとおもしろい。このために Catalyst::Helper::Akismet とかわざわざ用意するとか、ありえん。そんなに頻繁につかうわけでもなし、SYNOPSIS をコピペすりゃー、いいレベルだ。Helper つかってがんばる云々はほぼ毎度つかう ORM/Template Engine ぐらいで十分で、それ以外のものは、ときどきしかつかわないんだから、helper で自動生成するメリットが薄い。メリットがうすいから、まともにメンテされない。まともにメンテされないぐらいなら最初からない方がいいし、そもそもこんなもの真面目にメンテするのは時間の無駄というものだ。というわけで、最近の Ca
2009年06月10日14:53 Perl Catalyst::Plugin::FormValidator::Simple::Auto の使用例 Catalyst で form の validation をするとき、僕は Catalyst::Plugin::FormValidator::Simple::Auto を使ってます。(`・ω・´) これは、Controllerで明示的に validation を行わなくても、設定ファイルに書いておけば、アクション実行前に自動で validation してくれるというものです。実装はこんな風になってます。 Catalyst::Plugin::FormValidator::Simple::Auto.pm sub prepare { my $c = shift->NEXT::prepare(@_); my $url = $c->action->reve
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く