Catalyst

C::P::Session::State::URI×HTML::Entitiesで文字化け

とりあえずググルと以下のような記事が。 しかし、それもコードが冗長になるので、以下の方法で対応しました。MyApp.pm %HTML::Entities::char2entity = ( '&' => '&amp;' , # ampersand '>' => '&gt;' , # greater than '<' => '&lt;' , # less than '"' =>…

Catalyst::Plugin::Session::State::URIと携帯端末とfragment付きリンク

C::P::Session::State::URIは便利なんだけどfragmentが付いてるリンクまでセッションIDを埋め込んでしまうので微妙。なんでかっていうとDoCoMo等、クエリとfragmentが存在する場合、ページ内リンクにならずにページ遷移してしまうんだよね。ちなみにfragment…

Catalyst::Model::なんとかAdaptor系の話

Catalyst::Model::MultiAdaptorでlifecyle support - dann's blog - # やりたいことがいつの間にかできていた - 僕ト云フ事@はてな出張版この辺の記事を見てて思ったこと。Catalyst::Model::Adaptorは便利だけど、モジュールの数だけモデル化用のファイルが…

Catalyst::Model::DynamicAdaptorってのもあるけど

昨日の記事でid:vkgtaroさんが「DynamicAdaptor で読み込みまくってる。」って言ってたので少し調べてみた。なかなか良さげ。でもコンストラクタに渡す引数を個別に定義できないっぽいのでちょっと今回の用途に合わないなー。myapp.ymlからModelへの引数も設…

Catalyst::Model::AdaptorでModel作りまくってるけど・・・

とにかく極力Catalystに依存しないようにモジュールを作って、Catalystから利用する場合はCatalyst::Model::AdaptorでModel化しまくりなんだけどいいのかなコレ。Modelの数がエライことになってきたんだけどそんなもんかなぁ。やっぱり皆さんもModelりまくり…

CLI系でmyapp.ymlを取得

CLI系のプログラムからmyapp.ymlを読み込みたいってことは多分あると思うけど、みなさんはどうしてるんでしょうね。僕の場合はとりあえずMyApp::CLI::ConfigLoaderみたいなのを作ってます。 package MyApp::CLI::ConfigLoader; use strict; use warnings; us…

Catalyst::View::MobileJpFilterを使ってリダイレクト時にもguid=ONを付ける方法

Catalyst::View::MobileJpFilterでのHTML::MobileJP::Filter::DoCoMoGUIDなんですが、本文のURLに対してはguid=ONを付けてくれますが、リダイレクトするときには付いてくれません。なのでとりあえず自分でつけましょう。とはいえ sub hoge : Local { my ($se…

HTML::MobileJP::Filter::DoCoMoGUIDで同一ホスト内でのguid=ONを有効にするには

今やってるやつでCatalyst::View::MobileJpFilterを使って実装しようと思ってるんだけどHTML::MobileJP::Filter::DoCoMoGUIDで下記のようなケースではguid=ONがついてくれないのです。 <a href="http://example.com/">link</a> どうやらhttpから始まるURLに対してはつかないようですが、これは…

最近気が付いたんだけどCatalyst::Plugin::Dumperってば

Catalyst::Logを侵蝕してるEvilな実装ということで削除されちゃってるみたいね。最新版(と言っても今年の4月の話ですが)の0.00005覗いてみたら、なんとまあ package Catalyst::Plugin::Dumper; # vim: ts=8 sts=4 et sw=4 sr sta use warnings; use strict; …

CatalystでPOSTの生データを取得する

ハマッたのでメモ。以前どこかでPOSTの生データを取得するには$c->req->bodyから取れるというのをうろ覚えしてたのでやってみたんだけど取れなかった。ちゃーんとPOSTでリクエストしているのに取れないわけだ。ちなみにコードは以下。 use LWP::UserAgent; m…

Catalyst::Plugin::MobileUIDも追加

先日のHTTP::MobileUIDをCatalystから扱えるようにしたプラグインです。 package Catalyst::Plugin::MobileUID; use strict; use warnings; use HTML::TokeParser::Simple; use MIME::Types; use NEXT; use URI; use URI::Find; use URI::QueryParam; use Ca…

Catalystのhome取れなくて急にハマった

久しぶりにCatalystを触ってハマったのでメモ。ある環境では動くのに別の環境に移したら急にmyapp.ymlが読み込めなくてエラーになったんだけど、どうやらhomeの値がヘンな値になってるっぽい感じだったので急いでたのもあってとりあえずMYAPP_HOMEという環境…

C::P::FormValidator::Simple::Messagesというものを作った

mod_perlとCatalyst::Plugin::Form::Validator::Simple - spiritlooseのはてなダイアリー僕も以前この方とまったく同じ症状になってその時は急いでたこともあり、ソース読むのも面倒だったんでmod_perlとFastCGIでCatalystを走らせて難を逃れたんですが、最…

Catalyst::Plugin::DoCoMoUID作ってみた。

要はApache::DoCoMoUIDと同じようなことをCatalystのプラグインとしてやるだけですね。 sub default : Private { my ( $self, $c ) = @_; my $uid = $c->req->header('X-DoCoMo-UID'); } こんな感じ。ま、それだけのこと。Catalyst::Plugin::DoCoMoUID-v0.01

Catalyst::Plugin::Charsets::Japanese::Mobileのその後。

以前、Catalyst::Plugin::Charsets::Japaneseが絵文字化けたので取り急ぎでCatalyst::Plugin::Charsets::Japanese::Mobileというのを作ったのですが・・・Catalyst::Plugin::Charsets::Japaneseで絵文字が化ける - Unknown::ProgrammingUnicode::Japanese使…

HTTP::MobileUserID & Catalyst::Plugin::MobileUserID Released

と、いうわけで勢いでうpしちゃいますた。 HTTP-MobileUserID-0.01 - mobile user ID is returned - metacpan.org Catalyst-Plugin-MobileUserID-0.01 - mobile user id returned plugin for Catalyst - metacpan.org 結局PODは別途podファイル作って日本語…

携帯のユーザーIDを取得する

DoCoMoの場合は端末ID、SoftBankの場合はユーザID、AUの場合はサブスクライバIDを返すというもの。CPAN漁ってみたところ、一応HTTP::MobileAgent::Plugin::ExtensionやSledge::MobileGate::Mobileとか携帯のIDを取得できるヤツはあった。だけど、HTTP::Mobil…

DefaultEndの継承順とend系プラグインの実装方法

Catalystには色んな沢山のプラグインがあって継承順が重要になってくるのも結構あるんだけどただひとつ言える事はDefaultEndは常に最後に継承しておくと幸せになれそうってこった。 use Catalyst qw/ -Debug : : : DefaultEnd /; そしてendでごにょごにょ処…

戻るリンクの実現

戻るリンクを簡単に扱えるようにするためのプラグイン作った。セッションを利用するのでネーミングとしてCatalyst::Plugin::Session::BackURLと名付けてみた。 package Catalyst::Plugin::Session::BackURL; use strict; use warnings; our $VERSION = '0.05…

C::P::FV::S::Aを使ってる時にFV::S::P::DBIC::Uが使えない?件

タイトルは「Catalyst::Plugin::FormValidator::Simple::Autoを使ってる時にFormValidator::Simple::Plugin::DBIC::Uniqueが使えない?件」です。長いので短くしてみました。使えないというかどうやって使うのかがわからないというのが正解なんですが、FVS::…

Catalyst::View::TT::ForceUTF8バージョンアップ

されてます。Catalyst::View::TT::ForceUTF8これで以下は解決Catalyst::View::TT::ForceUTF8でテンプレートのキャッシュができない件 - Unknown::Programming Template::Provider::Encodingがバージョンアップしてますよ - Unknown::ProgrammingLyoさん、あ…

Catalyst::View::TT::ForceUTF8でテンプレートのキャッシュができない件

Catalyst::View::TT::ForceUTF8で問題発生。 package MyApp::View::TT; use strict; use base 'Catalyst::View::TT::ForceUTF8'; __PACKAGE__->config( TEMPLATE_EXTENSION => '.tt', COMPILE_DIR => './ttc', COMPILE_EXT => '.ttc' ); こんな感じでキャッ…

FillInFormを扱いやすくしよう

CatalystからFillInFormを使う場合に、扱いにくい部分があったので扱いやすくするためのプラグインを作ってみた。ちなみにCatalyst::Plugin::FillInForm::ForceUTF8と一緒に使うことを想定してます。プラグイン名はCatalyst::Plugin::FillInForm::Set packag…

Catalystで携帯画像の出しわけ。ただし拡張子のみ。

タイトルの通り。携帯で画像の出しわけしたい時のプラグインを作ってみました。基本はC::P::Static::Simpleを利用します。パスの解決をする部分でちょっとした小細工をするわけです。で考えたのがC::P::Static::Simple::Mobileというモジュールです。 packag…

Catalyst::Plugin::FillInFormで文字が二重に化ける

ってかね。すべてがUTF8でいけるなら本当になんの問題もでないのに出力をShift_JISにしなきゃいけないせいで各所各所でUTF8+Shift_JIS混合問題ややUTF8フラグ問題やその他もろもろ問題ですぎってばよ!今度はFillInForm。これ、UTF8フラグがたってないせい…

Catalystでクエリを扱うための便利メソッド

今までクエリ扱うのにCGI.pmをラップした独自モジュールを使ってたんですが、いくつか便利なメソッドがあったのでそれをCatalystから扱えるようにしてみました。プラグイン名はとりあえずCatalyst::Plugin::Request::Utilとでも。 package Catalyst::Plugin:…

Catalyst::Plugin::Charsets::Japaneseで絵文字が化ける

うおー。そうだよ携帯向けサイトなのに携帯の絵文字のことをすっかり忘れてた。でCatalyst::Plugin::Charsets::JapaneseでUTF8->SJIS変換すると絵文字が化けるわけです。というわけで緊急で必要になったのでとりあえず対応ということでCatalyst::Plugin::Cha…

Template::Provider::Encodingがバージョンアップしてますよ

ぬお。Template-Provider-Encoding-0.08おおお。これでそれTemplate::Provider::Encodingで一応できるよ - Unknown::Programmingで言っていたような文字コードのデフォルト設定が可能になりましたな。さっそく使おうかと。あとはCatalyst::View::TT::ForceUT…

Catalystで日付オブジェクトを扱う

Catalyst::Plugin::DateTimeを使えば$c->datetimeでDateTimeオブジェクトが取得できます。またCatalyst::Plugin::DateTimeから派生したCatalyst::Plugin::DateTime::Constructorを使えばもう少し色々機能が追加されます。ま基本的にはこれらのプラグインを使…

独自のリレーション処理を行うにはどーすんの

MoFedge::Data::DBIC::Schema::Loaderみたいな処理をCatalystから扱えるようにするにはどうしたらよいか悩んでます。例としてMoFedge::Data::DBIC::Schema::Loaderをちょっと書き換えたHoge::DBIC::Schema::Loaderを用意します。 package Hoge::DBIC::Schema…