タグ

ブックマーク / fbis.hatenablog.com (16)

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

    Catalyst::View::MobileJpFilterでのHTML::MobileJP::Filter::DoCoMoGUIDなんですが、文のURLに対してはguid=ONを付けてくれますが、リダイレクトするときには付いてくれません。 なのでとりあえず自分でつけましょう。 とはいえ sub hoge : Local { my ($self, $c ) = @_; my $url = URI->new('/hoge'); $url->query_form({ guid => 'ON' }) if $c->req->mobile_agent->is_docomo; $c->res->redirect( $url ); } とか毎回書くのも超メンドウなので、何処かで自動的に入れてあげるのがベストです。 とりあえず僕のケースではMyApp::View::MobileJpFilterでやるこ

    Catalyst::View::MobileJpFilterを使ってリダイレクト時にもguid=ONを付ける方法 - Unknown::Programming
    IMAKADO
    IMAKADO 2009/03/26
    guid リダイレクト
  • AUの件名が文字化けしたのはNet::Cmdの仕業だったでござるの巻 - Unknown::Programming

    既知の事実かもしれないがハマったのでメモメモ。 こーんなシンプルなメール送信プログラムを書いたのです。 use strict; use warnings; use MIME::Lite; use Path::Class; my $mime = MIME::Lite->new( From => 'from@exmaple.com', To => 'xxxxxxxxxxxxx@ezweb.ne.jp', Subject => subject() || '', Data => body() || '', Encoding => 'base64', ); $mime->attr( 'content-type.charset' => 'Shift_JIS' ); $mime->attr( "Content-disposition" => "" ); $mime->field_order( 'MIME

    AUの件名が文字化けしたのはNet::Cmdの仕業だったでござるの巻 - Unknown::Programming
    IMAKADO
    IMAKADO 2009/03/11
    au宛のメール。文字化け。Net::Cmd
  • hasの定義を取得する - Unknown::Programming

    hasで定義したメソッドのオーバーライドについて - Unknown::Programmingの続きというか。 さて、先日の記事でhasで宣言する時にアクセサの先頭に+をつければ特定のものだけを上書きできることを知ったのですが、そんな便利なものがあるとは知らずに(MooseのPODに書いてたねorz。翻訳版しか見てなかった)作ってしまったものがあるのでとりあえず折角なのでコードだけ張っつけときます。 要はどういうhasで定義されたものかを取得できればいいなぁーと思ったので、ズバリどういうhasで定義されたものかを取得するものを試しに作ってみたわけなのです。 package MooseX::HasRestructure; use strict; use warnings; our $VERSION = 0.01; our @EXPORT_LIST = qw/ has_restructure

    hasの定義を取得する - Unknown::Programming
    IMAKADO
    IMAKADO 2009/02/17
    hasで宣言する時にアクセサの先頭に+をつければ特定のものだけを上書きできる/
  • MooseX::Types::Path::Classが地味に便利 - Unknown::Programming

    何かしらのパスをオブジェクトに持たせる事は往々にしてある。 でそのオブジェクトがMooseで実装されているのであればMooseX::Types::Path::Classを使うのが地味にすんげー便利。 package MyObject; use Moose; use MooseX::Types::Path::Class qw{File Dir}; has file_path => ( is => 'rw', isa => File, coerce => 1, ); has dir_path => ( is => 'rw', isa => Dir, coerce => 1, ); my $obj = MyObject->new( file_path => '/foo/bar.yaml', dir_path => '/foo/baz/', ); print ref $obj->file_path

    MooseX::Types::Path::Classが地味に便利 - Unknown::Programming
    IMAKADO
    IMAKADO 2009/02/17
    MooseX::Types::Path::Class/
  • doはブロックだけどevalはブロックじゃないよ - Unknown::Programming

    Perlのブロックってすごいよね. パッと見, 構造っぽいもん. でもevalとかdoとかってブロックが後に続いているだけなんだよね(微妙な認識かも)? ブロック - make for h @ppy_things; タイトルで言ってしまった感がありますが^^; 厳密に言うとdoとevalのブロックは違うんですよ。以下のコード結果を見れば一発。 sub do_func { do { return 'block return'; }; return 'normal return'; } sub eval_func { eval { return 'block return'; }; return 'normal return'; } print do_func(),"\n"; # block return print eval_func(),"\n"; # normal return retu

    doはブロックだけどevalはブロックじゃないよ - Unknown::Programming
    IMAKADO
    IMAKADO 2009/02/17
    evalはブロックではない/Error.pm/プロトタイプ宣言
  • DBIx::Classのちょっとしたメモ - Unknown::Programming

    メモ。 一応MySQLベースです。 デバッグ情報出力 $schema->storage->debug(1); よく忘れますorz。実際に発行されたSQL文が出力されるので便利。 一行だけデータが欲しい my $obj = $resultset->search( { hoge_id => $hoge_id } )->first; # または my $obj = $resultset->single( { hoge_id => $hoge_id } ); ただ上記の方法では実際には検索結果を全て取得してから一行返しているだけなので、キチンとLIMIT設定したければ下記のようになる。 my $obj = $resultset->search( { hoge_id => $hoge_id } )->slice(0,0)->first; テーブルからランダムで一行取得 my $obj = $resu

    DBIx::Classのちょっとしたメモ - Unknown::Programming
    IMAKADO
    IMAKADO 2009/02/17
    テーブルからランダムで一行取得報/デバッグ情報出力
  • 携帯のユーザーIDを取得する - Unknown::Programming

    DoCoMoの場合は端末ID、SoftBankの場合はユーザID、AUの場合はサブスクライバIDを返すというもの。 CPAN漁ってみたところ、一応HTTP::MobileAgent::Plugin::ExtensionやSledge::MobileGate::Mobileとか携帯のIDを取得できるヤツはあった。 だけど、HTTP::MobileAgent::Plugin::ExtensionはSoftBankのときにUAから取得できるシリアルナンバーしか取れない。あとDoCoMoのis_utnの判定がhtml_version取得できない場合に未対応になるのがどうにもいけてない。 一方Sledge::MobileGate::MobileはユーザID取れるには取れるんだけど取得できなかった場合にシリアルナンバー返すんでちょい微妙。というかどっちにしろSledgeしからしか扱えないのでもっと汎用

    携帯のユーザーIDを取得する - Unknown::Programming
    IMAKADO
    IMAKADO 2009/02/14
    的なのが欲しかったので結eGate::MobileはユーザID取れるには取れるんだけど取得できなかった場合にシリアルナンバー返すんでちょい微妙。というかどっちにしろSledgeしからしか扱えないのでもっと汎用的なのが欲しかったので結局自HTTP::MobileUserID::Japanese携帯のユーザーIDを取得Catalyst::Plugin::MobileUserIDかんたんログイン
  • テンプレートShift_JISでそれ以外UTF-8の場合 - Unknown::Programming

    っていうのがなかなかできなくて。 テンプレートファイルはShift_JISなんだけどソースコードやDBUTF-8でやりたい。 でさらに最終出力は携帯用サイトなのでShift_JISでっていうレアなケースを実現したいと。 テンプレートをUTF-8にさえすればCatalyst::Plugin::Charsets::Japaneseで一発OKなんだけどね。 テンプレートをクライアントが触りたいとかってケースでUTF-8とかわからんからShift_JISでお願いとかって結構あるのでそーゆー場合のお話ですね。 まぁクライアントが触る部分だけをうまく切り離してなんとかするってのが普通のやり方なのかもしれないけどとりあえず。 ってことでまずはShift_JISで書かれたテンプレートを動的にUTF-8に変える必要があります。 それはTemplate::Provider::Encodeでできるわけです。

    テンプレートShift_JISでそれ以外UTF-8の場合 - Unknown::Programming
    IMAKADO
    IMAKADO 2009/02/14
    テンプレートのみSJIS、他はUTF-8
  • DBD::mysqlのmysql_auto_reconnectが真だとDB再接続時にDBICのon_connect_doが実行されない件 - Unknown::Programming

    ハマったメモ。 さてまた今回も若干適当な記事だけども、メモということでお許し願いたい。 ってか誰も言及してないっぽいんだけどもしかしてこの現象うちだけ? とにかくタイトルの通りで、検証時の各モジュールのVERSIONは以下の通り。 DBD::mysql-v4.005 DBIx::Class-v0.08100 前回のDBD::mysqlでSegmentation faultの件は無事解決したものの、今度はDB再接続時に文字化け発動でゲンナリしてました。 でログとか見てるとどうもDBICのon_connect_doで指定しているSET NAMES UTF8がDB再接続時に動いてないことが判明。 myapp_server.plだとちゃんとSET NAMES呼ばれるんだけどmod_perlだと何故か呼ばれない。 ってことでmod_perlに関係有りそうな部分をひたすら調べていたところ、mysql_

    DBD::mysqlのmysql_auto_reconnectが真だとDB再接続時にDBICのon_connect_doが実行されない件 - Unknown::Programming
    IMAKADO
    IMAKADO 2009/02/14
    on_connect_doが実行されない件
  • Perlが初めての人に教えてあげたいちょっとしたこと - Unknown::Programming

    タイトルは釣りです。 実際のタイトルは「Perlのオブジェクト指向がムズカシイだって?んなバカな。だったらPHPで再現してやんよ!」でございます。 ヘイヘイヘイ。そこの君。Perlのオブジェクト指向が難しいだなんていったい誰が言ったんだい? Perlのオブジェクト指向ほど、シンプル且つ柔軟なものはないよ! 単なるパッケージ(名前空間)とリファレンス(データ)をblessという関数で紐付けただけのもなんだから。 第一引数に必ず$selfが来るっていうのも結局の話たんなる関数呼び出しとなんら変わらないのだから。 package Foo; sub new { my $class = shift; return bless { @_ } , ref $class || $class; } sub plus { my $self = shift; my $int = shift; return $s

    Perlが初めての人に教えてあげたいちょっとしたこと - Unknown::Programming
    IMAKADO
    IMAKADO 2008/05/31
    php perl oop実装
  • PerlでRecallの話 - Unknown::Programming

    Perl Coreだけで同様のことを実装できないかと考えたらあっさり出来たので。 Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記 http://d.hatena.ne.jp/tokuhirom/20080501/1209625789 sub recallable_sub(&) { use B::Deparse; my $coderef = shift; my $src = B::Deparse->new->coderef2text($coderef); $src =~ s{\bRecall\s*\(}{\$coderef->\(}g; $coderef = eval qq"sub $src"; die $@ if $@; $coderef; } 404 Blog Not Found:perl - で(Recall()|argument

    PerlでRecallの話 - Unknown::Programming
  • PerlとPHPのソート処理 - Unknown::Programming

    良く書き方を忘れがちなソート。 特にPerlPHP両方使ってるとPerlはこうだけど、PHPはどうだっけ?とかよくあるのでここらでまとめをしておく。 配列を文字列で昇順・降順ソート # 昇順 @sarray = sort @array; @sarray = sort { $a cmp $b } @array; # 降順 @sarray = sort { $b cmp $a } @array; Perlのsort関数はブロック表記を省略するとデフォルトで昇順ソートになります。 <?php // 昇順 sort( $array , SORT_STRING ); // 降順 rsort( $array , SORT_STRING ); PHPのsort関数は引数に渡された配列をソートする。 第二引数を指定しなくも動くには動くが、省略すると値に数値と文字が混在してるときにおかしくなるので明示的に

    PerlとPHPのソート処理 - Unknown::Programming
  • HTML_FillInForm-0.03 - Unknown::Programming

    バージョンアップしました。 コメント欄で指摘された通り、警告が出ていたというなんともお恥ずかしい限りです。id:taraburoさんありがとうございました。 テストコードにerror_reporting( E_ALL )を仕込むようにしました。 CodeRepos↓ http://coderepos.org/share/browser/lang/php/HTML_FillInForm tar↓ HTML_FillInForm

    HTML_FillInForm-0.03 - Unknown::Programming
  • クラスデータをダンプしたい! - Unknown::Programming

    Class::Data::InheritableやClass::Data::Accessorとかでクラスデータを作成するのは凄く便利なんだけど、そのクラスにどれだけクラスデータが存在してるのかとがすぐには把握できないのがデメリットです。 なのでさくっとクラスデータをダンプするモジュールを作ってみました。 package Class::Data::Dumper; use strict; use warnings; use Data::Dumper (); use Class::Inspector; our $VERSION = '0.01'; our %PACKAGE = map { $_ => 1 } qw/ Class::Data::Inheritable Class::Data::Accessor /; sub target { shift; my $target_class = sh

    クラスデータをダンプしたい! - Unknown::Programming
  • Scalar::Utilで急にハマった - Unknown::Programming

    解決:Scalar::Util::weakenを使おうとするとWeak references are not implementedで落ちる - ヒルズで働く@robarioの技ログ ↑コレの件。 確かにScalar::Utilを再インストールしたら治ったには治ったんだけど、そもそもつい2,3日前まで普通に動いてたのに今日イキナリ動かなくなったのがなんとも気持ち悪い。 ここ最近モジュールインストールもしてなかったし、いったい全体なんで急にエラーが出るようになったのか謎。 あれか?今まではXSバージョンで動いていたけど何かしらの理由により急にPurePerlバージョンで動くようになってしまったとかか?うーん、わからん。 また発動したらどうしよう。。。怖い怖い怖いよう。 Scalar::UtilのせいでCatalystが動かないわけで、つまりコンテンツの提供ができないということになるわけで。

    Scalar::Utilで急にハマった - Unknown::Programming
    IMAKADO
    IMAKADO 2008/01/28
    [scalar::util][badknowhow]
  • C::P::FormValidator::Simple::Messagesというものを作った - Unknown::Programming

    mod_perlとCatalyst::Plugin::Form::Validator::Simple - spiritlooseのはてなダイアリー 僕も以前この方とまったく同じ症状になってその時は急いでたこともあり、ソース読むのも面倒だったんでmod_perlとFastCGIでCatalystを走らせて難を逃れたんですが、最近またCatalystを使うことになりそうなんで根解決すべくモジュールを作ってみました。 ソースはこちら package Catalyst::Plugin::FormValidator::Simple::Messages; use strict; use warnings; use base qw/Catalyst::Plugin::FormValidator::Simple/; use Catalyst::Exception; use YAML; our $VERS

    C::P::FormValidator::Simple::Messagesというものを作った - Unknown::Programming
  • 1