Catalyst でかんたんログインを実装する

前回の、Catalyst でオートログインとブラウザを閉じるまで有効な Cookie を共存の続きです。

mixi などで実装されている、携帯端末固有情報や契約者識別情報を利用した、「かんたんログイン」を実装する方法を紹介します。

(続きを読む…)

Catalyst でオートログインとブラウザを閉じるまで有効な Cookie を共存させる

Catalyst::Plugin::Session では、デフォルトではセッションの有効期限は $c->config->{’session’}{’expires’} の値に固定です。

ですので、「次回からログインを省略する」のようなオートログイン機能を実装するには、セッションの expires を動的に変更する必要があります。

(続きを読む…)

ming で生成した swf で TextField の文字列が表示されない

ming で生成した Flash Lite 1.1 の swf である条件下で TextField に addString() した文字列が、DoCoMo の端末で表示できない場合があります。

画面サイズが、240px * 240px の端末に、

$movie->setDimension(240, 240);

とすると、上記の問題が発生します。

これを回避するには、

$movie->setDimension(240 - 1, 240 - 1);

とすると、表示されるようになります。

C::P::Session::State::URI で HTML::Entities に日本語をエスケープさせない方法

Catalyst - Session管理とHTMLエンティティコード(数値文字実体参照) でも言及されているように、Catalyst::Plugin::Session::State::URI を使っていると、

<img alt="日本語" />

などが、エスケープされてしまい、表示がおかしくなったりします。

(続きを読む…)

for で変換 vs ダンプした文字列を変換して eval

ふと、for で回してパラメーターの個数分変換するのと、Data::Dumper でダンプして1回だけ変換して eval するのとどっちが速いのか気になってベンチマーク取ってみました。

コードと結果は以下。

(続きを読む…)

Catalyst::Plugin::FillInForm::ForceUTF8 で fill_password などのオプションが渡せない

Catalyst::Plugin::FillInForm::ForceUTF8 に抜けがあったのでパッチ書きました。

--- lib/Catalyst/Plugin/FillInForm/ForceUTF8.pm.orig    2009-02-08 14:39:24.000000000 +0900
+++ lib/Catalyst/Plugin/FillInForm/ForceUTF8.pm 2009-02-08 14:40:02.000000000 +0900
@@ -115,11 +115,13 @@
 sub fillform {
     my $c = shift;
     my $fdat = shift || $c->request->parameters;
+    my $additional_params = shift;

     $c->response->output(
         HTML::FillInForm::ForceUTF8->new->fill(
             scalarref => \$c->response->{body},
-            fdat      => $fdat
+            fdat      => $fdat,
+            %$additional_params,
         )
     );
 }

greylist のブラックリストの IP アドレスを CIDR で記述できるパッチ

最近また SPAM が増加傾向にあるので、ブラックリストをもっと細かく指定できるようにパッチを書きました。

Jon Atkins 氏の qgreylist に、S25R と tarpit 機能を付け、ブラックリスト、ホワイトリストに指定するホスト名を正規表現で指定できるようにした、ちっち氏の S25R + tarpit before qgreylist パッチ に、さらに CIDR 表記で指定できるようにしたパッチです。

greylist のデフォルトの blacklist の指定の仕方ですと、192.168.0.80 ~ 192.168.0.96 を拒否したかったら、192.168.0 と、256 アドレス巻き込んで拒否するか、16 ファイル個別に羅列して拒否するしかなかったので、アドレス範囲で拒否できれば便利だなと思い作成しました。

qgreylist-0.3_cidrsyntax-0.1.patch
(続きを読む…)

HTML-lint に User-Agent 切り替え機能を追加

HTML-lint は便利ですが、デフォルトでは ”Another_HTML-lint/1.22 +libwww-perl/5.820” という User-Agent を固定で吐いているので、モバイル対応サイトなど、User-Agent によって表示を切り替えているサイトでは、URL によるチェックができず、Data エリアに HTML ソースをコピペしてチェックするしか方法がありません。

そこで、いちいちそれをしていては面倒臭いので User-Agent を任意に切り替える機能を付けました。

HTML-lint User-Agent 切り替えパッチ

(続きを読む…)

HTML::MobileJpCSS レビュー

携帯サイトの CSS 対応は、今まで HTML::DoCoMoCSS を使用していましたが、01/15 に HTML::MobileJpCSS がリリースされていたので試してみました。

どういうことをしてくれるモジュールかと言うと、例えば hr タグは色を付けたいときに、キャリアによって下記のようにスタイルの指定が違います。

DoCoMo   <hr style="border-color:#FF0000;" />
au       <hr style="color:#FF0000;" />
SoftBank <hr style="border-color:#FF0000;" />

これを、ひとつの指定でモジュール側で 3 キャリア分の指定方法の振り分けを自動でやってくれるというものです。

3キャリア対応のCSS変換モジュールHTML::MobileJpCSS

(続きを読む…)

Linux に ming ライブラリ + Perl SWF モジュールのインストール

Fedra Core 5 に libming をインストールする方法です。

現時点での最新版、ming 0.4.0-rc2 をダウンロードします。
(続きを読む…)