Log::Dispatch::Config

Log::Dispatch は大好きなモジュールのひとつなんだけど、これだけだとイマイチ微妙。

Log::Dispatch::Config を使うことですげーー便利になる。必須。

miyagawa さんは 5 年以上も前にこれ作ったんだなぁ。

by typester / at 2007-04-14T07:18:00 / perl / Comment

Catalyst で Log::Dispatch を使うの法

同僚から聞かれたので、僕のやり方を書いておく。

すでにCPANに Catalyst::Plugin::Log::Dispatch というのがあるのだけど、なんかいけてないのでそれは使わず、以下のようにしている。

まず MyApp::Logger とかいうのをかく

package MyApp::Logger;
use strict;
use warnings;

use Log::Dispatch::Config;
use Log::Dispatch::Configurator::YAML;

use Catalyst::Utils;
use NEXT;

{
    package MyApp::Logger::Backend;
    use base qw/Log::Dispatch::Config/;
}

sub setup {
    my $c      = shift;
    my $class  = ref $c || $c;

    $c->log->_flush if $c->log->can('_flush');

    my $config = $c->config->{log}{config}
        || $c->path_to( Catalyst::Utils::appprefix($class) . '_log.yml' );

    MyApp::Logger::Backend->configure_and_watch(
        Log::Dispatch::Configurator::YAML->new($config) );
    $class->log( MyApp::Logger::Backend->instance );

    $c->NEXT::setup(@_);
}

1;

んでこれをプラグインとしてロード。

use Catalyst qw/+MyApp::Logger/;

ログの設定ファイルを書く(デフォルトmyapp_log.yml)

---
dispatchers:
  - file
  - screen

file:
  class: Log::Dispatch::File
  min_level: debug
  filename: /path/to/log
  mode: append
  format: '[%d] [%p] %m at %F line %L%n'

screen:
  class: Log::Dispatch::Screen
  min_level: debug
  stderr: 1
  format: '[%p] %m%n'

以上。

MyApp::Logger::Backend とかしてるのは mod_perl 対策。まーつかわんのだけど。

これ、さっきヘルパーにした。

Catalyst-Helper-Log-Dispatch

これ使えば

./script/myapp_create.pl Log::Dispatch

すると Logger クラスとサンプルの yml ファイルを生成してくれる。

by typester / at 2007-04-14T07:01:00 / perl · catalyst / Comment

Catalyst + 外部認証API

今作ってるサービス。

use Catalyst qw/
    ...
    Authentication
    Authentication::Credential::Password
    Authentication::Credential::OpenID
    Authentication::Credential::TypeKey
    Authentication::Credential::Hatena
    Authentication::Credential::JugemKey
    +MyApp::UserStore
    ...
    /;

MyApp::UserStoreA::Store::DBIC のちょっとしたサブクラスで、Cred::Password のときは auto_create_user しないようにしただけのもの。

最近の Store::DBICauto_create_user 機能つかうと外部認証使うサービス簡単に作れる。

Cred::Password 使わないなら (独自ユーザーを使わないなら) 、Store::DBIC そのまま使えばいける。

すばらしいなー。

リリースしたらちゃんとした記事を書きたい。

by typester / at 2007-04-09T10:53:00 / perl · catalyst / Comment

YAPC の IRC の機械翻訳を lingr に投げ続けるスクリプト

YAPC 今年もきましたね! 楽しんでますか!

IRCあるけど英語わからんとか、日本語チャンネルあるけど日本語わからんとかいうひと用にIRCの機械翻訳をリアルタイムにlingrに流すスクリプトを作りました!

ソースはこんな感じ

http://svn.unknownplace.org/public/scratch/yapc_irc2lingr/irc2lingr.pl

by typester / at 2007-04-04T11:50:00 / perl · yapc / Comment

Config::Any--

パースエラーっても何も出さねーの。

my $config;
eval {
    $config = $loader->load( $filename );
};
next if $EVAL_ERROR;

ふぁっく。

yamlパースエラーってるの気づかずにはまったわー。

しかもなんかデバッグ用と思われる warn がいっぱいコメントアウトされていてきもいw

by typester / at 2007-03-30T17:29:00 / perl / Comment

Encode.as

おきた。

早く出社する人が増えてきて、9時ごろになるとうっさくて寝られなくなるなぁ。ねむい。

package {
    import flash.utils.ByteArray;

    public class Encode {
        public static function encode(encoding:String, string:String):ByteArray {
            var octets:ByteArray = new ByteArray();
            octets.writeMultiByte(string, encoding);
            return octets;
        }

        public static function decode(encoding:String, octets:ByteArray):String {
            return octets.readMultiByte(octets.bytesAvailable, encoding);
        }
    }
}

こんなんでどうか。

このコードは、perlのunicodeフラグを分かってない人に対するEncode.pmの説明にも使えそうな気がする。

by typester / at 2007-03-22T09:30:00 / as3 · perl / Comment

perler気質

oh!fey - Ck2 Blogger

やっぱ、blosxomユーザー(だった)な人ってすごい人ばっかりだなとか、今更ながらしみじみ思ったりしました。

blogはまとまった文章書くのが苦手で休止してますが、blosxom魂はわすれてません!

しかし、blosxomをいじるためにperlをはじめたんだけど、いまや職業になっちゃった。

今だったらplaggerかな。かっこいいよねぇ。

blosxomやplaggerをかっこいいと思う人はperler気質だと思う。うまくいえませんが。

by typester / at 2007-03-18T20:25:00 / perl · blosxom · plagger / Comment

XMLSocket - POE

AS3からSocketクラスができたけど、それでも依然としてテキストベースの通信ではXMLSocketのほうが楽なのでAS3ベースでもXMLSocket使ってる。

でも通信の区切りがNULL文字だったりとか、癖があるんで、なんこかPoCoサーバー作ってみて、うまくラッピングするモジュール作るべきだなと考えてる。

たとえば以下のような。

POE::Filter::XMLSocket

NULL文字で区切る入出力フィルタ。

POE::Component::Server::TCP::XMLSocket

AS3からサポートされているTCP通信でのcrossdomain.xmlの返答機能を組み込んだComponent::Server::TCPのサブクラス。

などなど。

今の仕事が終わったらちゃんと考えよう。

by typester / at 2007-02-25T21:11:00 / perl · flash / Comment

Jemplate多言語化用ラッパ

つくった。

http://svn.unknownplace.org/public/scripts/jemplate-maketext.pl

Jemplate のテンプレート内に {{Hello}} とか _("Hello") とかかいておいて jemplate -c のかわりに

jemplate-maketext.pl --path lib/MyApp/I18N --locale ja templates/jemplates/*.tt > jemplate_ja.js

みたいにすると {{Hello}} とかの部分がその言語になったファイルができるというやつ。jemplate -c の簡単なラッパ。

--path には .po や .mo のあるディレクトリを指定する。

"Hello %1!" みたいなのには対応できないんだけど、まぁとりあえずこれで。

by typester / at 2007-02-23T17:29:00 / perl · javascript · jemplate / Comment

Locale::Maketext::Lexcon::Gettext の parse_metadata の前後見ると、msgid "" なものはメタデータとして扱うようになっているらしい。で、そこの Content-Type の charset みてる。

常識くせー。基本的なことを知らないので無駄にはまるなぁ><

by typester / at 2007-02-22T02:54:00 / perl · i18n / Comment

7 8 9 10 11 12 13 14 15 16

(Page 11 of 30)