タグ

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

  • C::P::Session::State::URI×HTML::Entitiesで文字化け - Unknown::Programming

    とりあえずググルと以下のような記事が。 しかし、それもコードが冗長になるので、以下の方法で対応しました。 MyApp.pm %HTML::Entities::char2entity = ( '&' => '&amp;' , # ampersand '>' => '&gt;' , # greater than '<' => '&lt;' , # less than '"' => '&quot;', # double quote ); http://www.craft-works.co.jp/blog/archives/226 まさしく同じ症状だったので上記の対処法をそのまま試したのですがそれでも化けてしまい、しぶしぶHTML::Entitiesのコードを覗いてみたところ $$ref =~ s/([^\n\r\t !\#\$%\(-;=?-~])/$char2entity{$1} || num

    C::P::Session::State::URI×HTML::Entitiesで文字化け - Unknown::Programming
    foosin
    foosin 2009/06/18
  • Perlにおける定数宣言(constant or Readonly or Attribute::Constant) - Unknown::Programming

    正直言いますと、個人的には定数って殆ど使わないんですよね。 昔はちょこちょこ使ってたんですが、最近は定数となりうる物は基的にYAML等外部ファイルに持たせて変更可能にすることが多いのでまったく使ってません。 ですがそれでもPerlで定数を使いたい時にはどーすんの?っていう時のために軽くここにまとめておきます。 言わずもかなPerl5.8にはconstantという定数を定義できる標準モジュールがあります。 use strict; use constant PI => 3.14; # 表示 print PI; # 3.14 # 上書きしようとすると・・・ PI = 3; # Can't modify constant item in scalar assignment とこのように上書きしようとするとエラーを吐いて死にます。 しかも実行時ではなく、コンパイル時にエラーを吐きます。 実はこのc

    Perlにおける定数宣言(constant or Readonly or Attribute::Constant) - Unknown::Programming
    foosin
    foosin 2009/06/17
  • 複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming

    ハッシュと配列の参照が入り交じったような複雑なデータ構造の、全value を均等に加工したかったので次の様にしてみました。 (中略) すでに似たモジュールがある気が激しくしています! ご存知でしたらぜひ教えてくださいませ。 [perl] 複雑なデータ構造のvalue を一気に書き換える方法 - harupiyoの日記 ということでData::Visitor::Callbackがズバリそれにあたるものじゃないかなーと。 use strict; use warnings; use Data::Dumper; use Data::Visitor::Callback; my $rh_testdata = { 'a' => 1, 'b' => { 'aa' => 1, 'ab' => [ 1, 2, 3, \ 'test', 5 ], 'ac' => 3, }, 'c' => 3, 'd' => 4

    複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming
  • テンプレート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
    foosin
    foosin 2009/02/04
  • 結局どこまで勉強(or教育)すればいいんかね - Unknown::Programming

    先日書いた記事新人教育 - Unknown::Programmingのトラバやはてブとか読んでてあーやっぱりオールドファッションPerlも未だに廃れてはいないんだなぁと実感させられました。 あの一覧全てを仕事で使うか?と問われると、ま確かに頻繁には使わないけどいやでも場合によっては結構使うよと。 なのでPerl仕事するなら必須項目であると言えますね。 知らないとまずCPANモジュールのソースが読めないし。 問題にブチ当たった時に困ったりする。 どこバグってんのかとかわかんないってことになるわけです。 COREパッケージ知らないと組み込み関数と同じメソッド定義した時にうがーってなるし、 UNIVERSALパッケージ知らないとisaとかcanメソッドがどっからやってきたのかわかんないし、 AUTOLOADメソッド知らないと謎のメソッドに悩まされるし、 tie変数知らないともの凄い不思議なハ

    結局どこまで勉強(or教育)すればいいんかね - Unknown::Programming
    foosin
    foosin 2009/02/03
  • お世話になったPerl本のまとめ - Unknown::Programming

    僕が今までPerlの勉強、及び学習のために利用したPerl関連の書物についてのまとめをば書いてみます。 Perlデバッグ明快技法 作者: Martin Brown,岡田長治出版社/メーカー: オーム社発売日: 2001/05メディア: 単行 クリック: 1回この商品を含むブログ (4件) を見る まずは僕が始めて購入したPerl。 会社に置いてあったラクダをざっと一通り読み終わったときになんか自分でもが欲しいなと思ってたときに見つけた。 バグやエラーに対する心構えやstrictとwarningsの詳細な使い方と説明、シグナルハンドラについて色々と学ぶところがあって良かった。あとはプロファイラについての説明が熱くてこれを知った当時はプロファイラ使っていろんなプログラムの負荷テストとやってみたりしたもんだ。 最後に付録として診断(エラー)メッセージもついててナイス。 そういや診断メッ

    お世話になったPerl本のまとめ - Unknown::Programming
  • Perl Tips - Unknown::Programming

    PerlのTipsになりそうなものを過去ログから引っ張り出してみました。 ランダムな文字列を生成するString::Random - Unknown::Programming local our $hoge; - Unknown::Programming whileでファイルハンドルをループする時の暗黙の$_について - Unknown::Programming リストの要素数を取得する - Unknown::Programming Perl6::Say-0.10 - Unknown::Programming クラスメソッドのインポートをModule::Compileでやっちゃう。 - Unknown::Programming メソッド呼び出しで継承する - Unknown::Programming どう書くでリハビリ - Unknown::Programming メソッド名一覧どーかく?

    Perl Tips - Unknown::Programming
  • Catalyst::Model::DynamicAdaptorってのもあるけど - Unknown::Programming

    昨日の記事でid:vkgtaroさんが「DynamicAdaptor で読み込みまくってる。」って言ってたので少し調べてみた。 なかなか良さげ。 でもコンストラクタに渡す引数を個別に定義できないっぽいのでちょっと今回の用途に合わないなー。myapp.ymlからModelへの引数も設定できないっぽいし。 newでは何もしないっていうスタンスなのであれば問題ないんだろうけどね。 んー、それとも同じ引数同士のモジュールで名前空間を予め分けて package App::Web::Model::Logic; use base qw/Catalyst::Model::DynamicAdaptor/; __PACKAGE__->config( class => 'App::Logic', config => { foo => 'foo' }, ); package App::Web::Model::Lo

    Catalyst::Model::DynamicAdaptorってのもあるけど - Unknown::Programming
  • 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
  • 型グロブとシンボリックリファレンスでメソッド定義するときの注意点 - Unknown::Programming

    型グロブとシンボリックリファレンスを使ってメソッドを動的に定義するというケースって結構あります。 例えばアクセサメソッドを提供するmk_accessorというのを作りたいとします。 package Hoge; use strict; sub mk_accessor { my $class = shift; my $accessor = shift; no strict 'refs'; *{"${class}::$accessor"} = sub { my $self = shift; $self->{$accessor} = shift if @_; return $self->{$accessor}; }; } sub new { my $class = shift; return bless {} , ref $class || $class; } Hoge->mk_accessor(

    型グロブとシンボリックリファレンスでメソッド定義するときの注意点 - Unknown::Programming
    foosin
    foosin 2009/01/21
    no strict 'refs'の有効範囲を狭めます。
  • Rubyの変数のお勉強 - Unknown::Programming

    さてさて、三日坊主どころか始めてすらいない状態が続いてましたね。 そろそろやれよと。勉強しますと自分で言い出したんだからやりましょう。 と、言うわけで勉強第一回としてRubyの変数について勉強します。 と、言いたいところだけどまず「ruby」なのか「Ruby」なのかどっちで書くのが良いのだろう? Perlの場合は「Perl」が一般的だ。公式HPでは「Ruby」になってるのでとりあえず「Ruby」でいきます。 さぁ、勉強開始といきますか。 新しい言語を勉強するのって楽しいですね。 基的なスタンスとして「Perlで言うとこういうこと」みたいな僕的解釈を入れつつ勉強してみようと思ってます。 よし! そろそろやるぞ! まずは変数の勉強でもするか! さぁ、Rubyにはどんな変数があるかな? プログラミング言語 Ruby リファレンスマニュアル ローカル変数 インスタンス変数 クラス変数 グローバル

  • method_missingメソッドのお勉強 - Unknown::Programming

    Ruby の strict - #生存戦略 、それは - subtech トラックバックをもらったので早速反応してみる。 僕が言うstrict的なものっていうのは変数に対してのみで、メソッド呼び出しのチェックまでは期待していません。 というかPerlでもメソッド呼び出しをコンパイル時に存在するかどうかチェックはできないですし。 ただ、Rubyはローカル変数とメソッド呼び出しが同じ書き方なのでstrict的なものを実装するにはPerlで言うところのmy宣言ができないと無理だろうなと思いました。 メソッドとして使われそうな場合はコンパイル時にチェックして欲しくないけど、変数として使われる場合にはコンパイル時にチェックして欲しいとかになって、コンパイラからするとどっちでチェックすりゃいいんだよぉー!とかになりそう。 まぁまぁとりあえずstrictの話はこんなもんにしといてトラックバックくれた人(

    method_missingメソッドのお勉強 - Unknown::Programming
  • Class::C3がXSに対応したようなのでベンチとってみた - Unknown::Programming

    最近Develop版が頻繁にアップされていたClass::C3ですが、とうとう正規版がアップされましたね。 Class-C3-0.16 Class-C3-XS-0.02 ちなみにhttp://d.hatena.ne.jp/fbis/20070319/1174296128もFIXされてます。 ってことで速度的にどれくらいパワーアップしたのか気になったのでベンチとってみました。 ソースはこんな感じ。とりあえず比較のために普通にSUPER使った場合とのベンチ。 use Benchmark qw(cmpthese timethese :hireswallclock); package MyBase; sub new { bless {} , shift } sub hoge { } package MyChildNext; use base qw/MyBase/; use Class::C3; s

    Class::C3がXSに対応したようなのでベンチとってみた - Unknown::Programming
    foosin
    foosin 2008/11/09
    c3のベンチ
  • DBIx::Class::Storage::DBI::ReplicationにてMasterで参照クエリを発行する方法 - Unknown::Programming

    DBIx::Classのちょっとしたメモ、その2。・・・と、思いきや長くなったので一記事に。 Masterで参照クエリを発行する方法なんだけど、ちょこちょこと調べて見たけど情報が殆どないのね。 ただみんな色々考えているようで、例えば use Blog::Schema; my $schema = Test::Blog::Schema->connect("dbi:SQLite:$master"); # set slave data sources. $schema->slave_connections( ["dbi:SQLite:$slave_1"], ["dbi:SQLite:$slave_2"], ); # do something in slave connection. $schema->slave->resultset('Entry')->find(1); DBIx::Classでス

    DBIx::Class::Storage::DBI::ReplicationにてMasterで参照クエリを発行する方法 - Unknown::Programming
    foosin
    foosin 2008/08/23
  • HTML::MobileJP::Filter::DoCoMoGUIDで同一ホスト内でのguid=ONを有効にするには - Unknown::Programming

    今やってるやつでCatalyst::View::MobileJpFilterを使って実装しようと思ってるんだけどHTML::MobileJP::Filter::DoCoMoGUIDで下記のようなケースではguid=ONがついてくれないのです。 <a href="http://example.com/">link</a> どうやらhttpから始まるURLに対してはつかないようですが、これは元となるHTML::StickyQueryモジュールのabsオプションを使えばついてくれるみたい。 my $html = '<a href="http://example.com/">link</a>'; my $sticky = HTML::StickyQuery::DoCoMoGUID->new; local $sticky->{sticky}->{abs} = 1; $sticky->sticky(

    HTML::MobileJP::Filter::DoCoMoGUIDで同一ホスト内でのguid=ONを有効にするには - Unknown::Programming
  • 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
  • Unknown::Programming - 何故Perlなのか。

    なんで僕はこうもPerlが好きなんだろう。 そして何故PHPが好きになれないんだろう。 前に「PHPがどうにも好きになれない理由 - Unknown::Programming」というエントリを書いたけど、なんていうかもしあの不満点が全部解決したとしてもおそらくPerl程好きになることは無いと思う。 やっぱり良くも悪くも初めて真面目に取り組んだのがPerlという言語だったからなのかなぁ。 専門学校時代にはC,C++,VBをやった。会社入ってからはJava(iアプリ)をちょっとやった後にWEBアプリケーション開発にまわされた。 そこで初めてPerlを触った。 初めて触った時には「なんだこのクソ言語」と思ったものだ。 Perlでやった初めての仕事は地獄だった。当に辛かった。 水も何も持たずに砂漠のど真ん中にいきなり放置されたような感じだった。 まず誰も何も教えてくれなかった。先輩は皆忙しそうで

    Unknown::Programming - 何故Perlなのか。
  • 1