タグ

ブックマーク / clouder.jp (12)

  • HTTP::MobileAgent::Plugin::LocatorをCPANに上げたよ

    あまりにも書いてなかったので、こっちに書いてみる。 いろいろと物議を醸し出していたHTTP::MobileAgent::Plugin::LocatorをさっきCPANに上げました。もうしばらくしたらインデックスされると思います。 ちなみに、このモジュールはCodereposで管理しているため、なんかバグなど発見したら修正をしてもらっておkです。すでにリリースまでの間にid:tokuhiromがいろいろと修正してくれました。tokuhirom++。Coderepos++。 で、このモジュールはなんのためのモジュールかというと仕様の違う携帯4キャリアの位置情報を透過的に扱えるようにするためのものです。使い方は以下のようにするだけで簡単に緯度経度が取得できます。 use CGI; use HTTP::MobileAgent; use HTTP::MobileAgent::Plugin::Loca

  • WindowsでSpamAssassinを使う方法

    1年ぐらいスパムフィルターとしてBeckyのプラグインとして提供されている深海魚フィルタ(シーラカンスソフト)というものを使っていたのですが、ここ最近バージョンアップの頻度が多くて安定していないのかなという印象があったり、自分の環境では動作時にCPUが100%までいってしまいマシンの動作が重くなってしまったり、精度的にも悪くはないけど良くもないという感じだったため、他のスパムフィルターの導入を検討することにしました。 検討する際のポイントとして以下の5点を考慮しました。 Windowsで動作する Beckyで使うことができる スパム判定精度がある程度高い 導入が楽 メンテナンスが楽 で、いろいろと探した結果SpamAssassinのWindows PortであるSAwin32が一番しっくりきたため、それを使うことにしました。 SAwin32にはSAProxyというアプリが含まれていて(とい

  • Catalyst::Plugin::MobileAgentを修正してCPANにアップした

    ・Catalystで携帯端末ID取得 ・Catalyst::Plugin::MobileUserIDがそのままでは動かなかった この辺で言われている件を修正しました。 修正内容は千葉さんのブログにある通り$c->req->user_agentを$c->req->headersにしただけです。 CPANでインデックスが更新されるまで待てない方は↓こちらからどうぞ。 http://svn.clouder.jp/repos/public/Catalyst-Plugin-MobileAgent/trunk/

  • TTの.item()の挙動について調べてみた

    naoyaさんが書いてるTTのこの問題。ちょっと調べてみた。 とりあえず.item() がどこなのかを探してみたら、2.15 あたりで Template::Stash で定義されていたのが2.19だと Template::VMethods にうつっているようですね。 で、ロジックをみてみる。 2.15 だと Template::Stash の $HASH_OPTS->{item} の CODEREF が .item() の実体なのですが、この CODEREF 内ではプライベート変数判定用の正規表現が入ってる $PRIVATE がちゃんと参照できるため、プライベート判定できます。 でも、2.19 だと Template::VMethods の hash_item() が .item() の実体になっていて、しかもその中での $PRIVATE が undef になってる(参照できない)ために

    fbis
    fbis 2007/08/30
  • Perlのクラス継承の限界

    404 Blog Not Found:perl - POO と goto ちなみに,暇な人はdepthの指定を100以上にしてみよう。滅多にお目にかかれないものに巡り会える。 暇ではないが、気になったのでdepthを100以上にしてみた。 % perl sample.pl Benchmark: running Goto, Noself, Return for at least 3 CPU seconds... Recursive inheritance detected while looking for method '()' in package 'Goto::0' at aa.pl line 77. お、なんだこれは。再帰継承じゃねーかと言われた。99まではオッケイで、100より上だとこうなる。 調べてみると答えは「perldiag」にあった。 % perldoc perldiag

    fbis
    fbis 2007/04/24
  • ApacheであるURIだけ認証したくないときの設定

    自分用メモ。 もし、/はBasic認証したいけど、/fooと/barだけは制限をかけたくないという場合は、Locationディレクティブに以下のようにすればよい。 <Location ~ ^/(?!foo|bar)/> AuthType Basic AuthUserFile foobar.htpasswd AuthName BasicAuth require valid-user </Location>

    fbis
    fbis 2006/08/05
  • Class::DBIで永続化が切れなくてハマった

    WEB+DB PRESS vol33の「ライブドア構築ノウハウ大公開」でClass::DBIの永続化を切るには、Ima::DBIの内部でクロージャとして生成されるdb_Mainをオーバーライドすれば永続化を切ることができるという記述がありました。 これなんですが、先日あるアプリを作成しているときに、db_Mainをオーバーライドしても永続化されてしまうという現象にあいました。 いろいろ調べたり、にぽたんとかに聞いたりした結果、db_Mainをオーバーライドしているクラスで __PACKAGE__->set_db() もしくは __PACKAGE__->connection() をしていたのが悪かったということが判明しました。なぜなら __PACKAGE__->set_db() もしくは __PACKAGE__->connection() をすると、Ima::DBIではなくClass::DB

    fbis
    fbis 2006/07/31
    僕の場合、__mk_db_closureをオーバーライドして対処したんだけどそれじゃまずいかなぁ。
  • HTTP::MobileAgentのプラグイン機構

    HTTP::MobileAgentのプラグイン機構を付けるとしたら、どんな風なのがベストなんだろうかと考えてみた。 多分プラグインとしてやりたいこととしては大枠で以下の2つだろう。 今の実装では取得できない値を取得するための新しいメソッドやアクセサを追加する User Agentの解析にある処理を挟む で、これらをやるためにはどのようなプラグイン機構がいいのだろうか。 Plaggerとかみたいなhookを各所に設ける Catalystみたいに NEXT を使って連鎖させていく Class::DBI::Pluginみたいにimportでやや強引に追加できるようにする 1は必要かもしれないけど、あんまり需要がなさそうな気もする…。 2はいろんなプラグインがでてくるとわけわかめになりそう 3があれば、とりあえずしばらくはもちそうな気もする。 さてどうしようか。

  • なぜ仕事のための本を自腹で買うのか?

    論点が違うのかもしれないけど、なんとなく書きたくなったので書いてみる。 自分はを自腹で買う派です。なんでかと言えば、id:nipotan さんが書いてるように http://d.hatena.ne.jp/nipotan/20060511/1147328208 勉強するのに必要な PC やら書籍やらソフトウェアやらも、仕事を支えるための、言わば仕事道具だから、自腹じゃないですか。 手を動かす仕事なんだから手だって仕事道具。肩コリだって仕事道具を使った上で消耗してしまった結果。「消耗品」と考えれば、自腹であるのも普通。 という理由だったり、id:tokuhirom さんが書いているように、 http://d.hatena.ne.jp/tokuhirom/20060513/1147476176 だって、書籍は今後もし転職したとしたら、その時に持ってけないじゃないですか。(転職する可能性が皆無の

    fbis
    fbis 2006/05/16
  • Catalyst入門としてのお作法についてについて

    ひげぽん OSとか作っちゃうかMona- - Catalyst入門 と お作法について templateの include rootからのパスを指定してやればよい [% include templates/user/username.tt %]はてなのひげぽんさんがCatalystについて書いていたのでそれを受けて書いてみます。上記のこれは、root/base/の中に読み込みたいincludeファイルを入れてやると、それがTTのINCLIDE_PATHに入っているので [% include username.tt %]で読み込めるようになります。Catalyst::View::TTの103行目付近にその記述があります。ちなみに、テンプレートの中にデフォルトで使えるようになってる変数はbase($c->req->base), c($c), name($c->config->{name})の3

  • YAMLで改行を含む値を表現する方法

    key: | this is example this is example ってやるみたい。 ちなみに今一番知りたいのは、YAMLファイルで上の方で定義した値を下の方で使いたい場合どうするか。教えてエロい人! foo: 1 bar: 2 baz: ***←ここでfooとかbarの値を使いたい。例えば 123 を表現したいとか。「$foo _ $bar _ 3」とかできないのかなと

    fbis
    fbis 2006/04/12
    改行
  • Clouder::Blogger: Plagger::Plugin::Filter::AmazonAssociateIDShift - Plagger's Filter Plugin

    アグリゲートしてきた中にAmazonアソシエイトIDがあったら、それを自分のものに変えちゃいます。えぇえぇ、アサマシですわ。使用により生じた問題に対し、当方は一切責任を負いませんw package Plagger::Plugin::Filter::AmazonAssociateIDShift; use strict; use base qw( Plagger::Plugin ); sub register { my($self, $context) = @_; $context->register_hook( $self, 'update.entry.fixup' => \&update, ); } sub update { my($self, $context, $args) = @_; my $body = $self->filter($args->{entry}->body); $a

    fbis
    fbis 2006/03/02
    Plagger::Plugin::Filter::AmazonAssociateIDShift
  • 1