Catalyst
Parsing of undecoded UTF-8 will give garbage when decoding entities atとか出るのは、ググったらHTML::Parserのバグらしい。 不要なので止める。 HTML::FillInFormを編集。174行目くらい。 % vi HTML::FillInForm if(my $file = $option{file}){ $self->…
正規表現で処理してたら気がついた。何故かCatalystアプリの中では、何もせずともマッチ変数の$1と$2に値が入っている。 必要な部分だけ抜粋 use Data::Dumper; sub p {warn Dumper shift} sub auto :Private { my ( $self, $c ) = @_; p $1; p $&; p $`; p …
今までノリで Catalyst::Plugin::Session Catalyst::Plugin::Session::Store::DBIC Catalyst::Plugin::Session::State::Cookie を使ってきてて、たまに Catalyst::Plugin::Session::Store::FastMmap を使ってた。 特に何も考えずやってたけど、webサーバが複…
MyApp ├─bin / *.pl *.sh 主にcron用 ├─db ├─t ├─root │ └─static │ ├─css │ ├─js │ ├─images │ └─template ├─lib │ └─MyApp │ ├─Controller │ ├─Model │ ├─Schema / make_schema_atでダンプしたファイル │ └─View ├─config │ ├─app / myapp.yaml myapp_deve…
別にどっちでもいい気がするといえばするけれど。 テンプレートからファイルを出力したい場合、普通はTemplate->newするけど、Catalystアプリの中でそれをやりたくて、viewにCatalyst::View::TTを使ってる場合、Templateを使わずに済む。 柔道家に教えてもら…
別にハマらんけど。 フォームからファイルをアップしたとき、ブラウザによって処理を変える必要がある。 以下、理由。 die Dumper $c->req->param('hoge'); 結果 ■Firefox "$VAR1 = 'file.gif';"■IE "$VAR1 = 'Z:\\TEMP\\file.gif';"というわけで。 結論 IE…
そう、何故か入らない。CentOS5.2でこんなの初めてだ。 cpan[19]> install Catalyst::Devel Catalyst::Devel is up to date (1.08). cpan[20]> install Task::Catalyst Task::Catalyst is up to date (3.0000).なくせしてC::View::TTはエラー。仕方ないので…
普通はスクリプト用意して、そいつをperl hoge.plとかしてやるんだろう。 Catalystのメソッドにcronにさせたい処理を書いて、そいつを wget -O /dev/null http://service/cronしてやるってのは頭悪いのかなー? メソッド外部公開とか馬鹿なの?死ぬの? いや…
複数のCRUDを行うとき、例えば100件のデータをinesrtするとき。20件までは成功したけど、残り80件はなんかプログラムエラーで入らなかった、なんてことになったら困るので、一連の処理が全て成功して初めてDBにコミットする、てゆーのがトランザクション。 …
普通リバースプロキシすると、リモートホストが127.0.0.1とかになる。 リモートホストはX-Forwarded-Forに入るのに。 でもCatalystの$c->req->addressはちゃんとリモートホストを返してくれる。 何故か。はい神が解説してくれました。 /usr/lib/perl5/site_p…
以前どっかで見た。catalystのテストスクリプトが起動しないときはいいからMakefile.PLを置け
autoではtrueを返せっつってんだろ!
神から教えてもらった。 catalyst.plとか打って、デフォルトで用意されるfaviconさん。どっかに元ファイルがあって、それをコピーしてるだけなんだろうなと思ってた。ら… sub _mk_favicon { my $self = shift; my $root = $self->{root}; my $hex = $self->g…
DirectoryじゃなくてLocationで指定しよう
バリデーションで正規表現使うとき、ymlに書いてるときにちとつまづいた。 []で範囲指定する場合、qr//全体を更にシングルコーテーションでくくらなければならない。 ['NOT_BLANK', ['REGEX', 'qr/[1-9]/']] いずれは何故これが正しいのか、こうすれば正しい…
Catalystで作ったアプリをApacheで動かす。ウン難しい。初めてやったときゃ何もわからなかった。 でもググればなんとかなってた。穴だらけだったけど 作ってる最中のアプリをApacheで動かしてたところ、普通に動いてたのが、新しくモジュール入れたら Can't …
フォームに入力>大人の事情でもう一度同じ画面に戻ってきた>さっきの入力値をフォームに保管してくれる という素敵なもの。常識っつったって知らなかったんだよー sub end : ActionClass('RenderView') { my ( $self, $c ) = @_; if( $c->req->param) { $c…
普通は-Debug付けてれば理由言いながら死んでくれるが、「セグメンテーション違反です」と言って唐突に死なれた。 consoleのログに何も残さず死ぬってのも初めて見た。しかも確実に前まで動いてて、そこらには決して触れてない場所で。 何やっても解決しない…
用意されてないバリデーション条件を作るときはとりあえずset_invalid_formでぐぐれ実装はしたけどコードが手元に無いから思い出せないっていうね… ネットから分断されたら何もできないなー俺。
「間違ってないはずなのに正しく動かない」という、よくあるパターン。 とりあえず全項目にBLANKだけかけて、それ用のメッセージだけ指定した。 そんでバリデーションした結果、全項目BLANKにはひっかかっているものの、エラーメッセージは1項目しか出ない。…
ハッシュリファレンスだっては分かってたけど値追加にえらい苦労したのは内緒だ $c->req->param('created_at' => $created_at); というかググったらヒットしたので速攻グーグルブックマーク
アホかということにハマった。 ロードするときに先にConfigLoaderを書くのは知っていたが、ymlかアプリクラスでconfig書いてないとエラーになるとは。 しかもConfigLoaderを後に書いたときに出るのと同じ文言だからタチが悪い。 よく最初使ったときにはまら…
とか出るときはymlか何かの文字コードが狂ったかもしれない。 他所で動いてるコードを自分の環境で動かすために編集した、とかね
インストールメモ。さすがに3回もすりゃ忘れんだろうけど。 install Task::Catalyst install Catalyst install Catalyst::Devel