DBIx::Class::Schema

Schema ベースにすると重くない?

なんかアプリの起動に10秒くらいかかるよ。。

by typester / at 2006-04-20T16:44:00 / perl · dbic / Comment

Catalyst::Plugin::DebugScreen

とか作った。自分用。

repos

$c->debug が偽のときでも DebugScreen を出したかったのだけど、今の cat の実装だと無理っぽかったので。

Catalyst::Plugin::StackTrace と Catalyst::Engine からのコピペに、おまけで Template で自分で DebugScreen を定義できるようにしただけのやつ。

by typester / at 2006-04-18T13:02:00 / perl · catalyst / Comment

配列を何個かごとに分割したい

以下のような Flickr API の レスポンスをパースしようとしていて

<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
<photos page="1" pages="4" perpage="100" total="333">
    <photo id="126831864" owner="29838003@N00" secret="b12ca76f6a" server="54" title="達人" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="126831781" owner="29838003@N00" secret="5a9b9f4075" server="44" title="party room" ispublic="1" isfriend="0" isfamily="0" />
    <photo id="124231350" owner="29838003@N00" secret="d7a463ebb6" server="41" title="P3290041.JPG" ispublic="1" isfriend="0" isfamily="0" />
     :

こんなコード書いたの、

text

:O

@matches をかっこよく分割したい。

by typester / at 2006-04-16T14:42:00 / perl / Comment

気合icalデータ

社内スケジューラを WWW::Mechanize って無理やり iCal 形式のファイルを作るのを書いた。超強引だけど満足度かなり高い。

いまはスケジューラ->iCalだけだけどその逆も実装したいところ。

あと、それで気づいたのだけど、30boxes に読み込ませるためには X-WR-CALNAME が定義されてる必要があるよう。

30boxes で ics ファイル読み込ませたいけどなんかエラーるよという人は X-WR-CALNAME 追加して見るといいかもしれない。

by typester / at 2006-04-12T03:31:00 / life · perl / Comment

overload 期

が来た。

by typester / at 2006-04-11T18:56:00 / perl / Comment

さっきかいたの

PACKAGE->inflate_column( query => { inflate => sub { my $u = URI->new; $u->query(shift);

            my $ret = {};
            for my $k ( $u->query_param ) {
                my @v = $u->query_param($k);
                $ret->{$k} = @v > 1 ? [@v] : $v[0];
            }

            $ret;
        },
        deflate => sub {
            my $utf8off = sub {
                my $str = shift;
                utf8::encode($str) if utf8::is_utf8($str);
            };

            my $hash = shift;
            for ( keys %$hash ) {
                if ( ref $hash->{$_} eq 'ARRAY' ) {
                    $utf8off->($_) for @{ $hash->{$_} };
                }
                else {
                    $utf8off->( $hash->{$_} );
                }
            }

            my $u = URI->new;
            $u->query_param(%$hash);
            $u->query;
        },
    }
);

foo=bar&baz=blah みたいなクエリを保存するカラムに、ハッシュで保存してハッシュで取り出すというやつ。

短くかけるかと思って書き始めたら、URIの query_formquery_param にutf8フラグったの渡すとこけたり、foo=bar&foo=baz のように配列になるべきものがうまくハッシュにできなかったりとかしてこんなに長く。

by typester / at 2006-04-10T17:33:00 / perl · dbic / Comment

Catalyst::Plugin::Flavour 0.03pre

あぷ。新機能のドキュメント、テスト書いてないので Developer release にしておいてみる(ぉ

いままでは flavour とはいうものの Blosxom とは違い最初のパスを flavour としていたのを、Blosxom 互換な拡張子による方法に対応。

設定で、flavour, flavours_except が定義されていない場合この互換モードになるようにしておいた。

あと最初のパスを flavour にするモードの場合に、いままでは

flavours => [ 'html', 'rss', 'js', ]

などとして定義したものだけを flavour として扱うということをしていたけど、

flavours_except => [ 'about', 'login', ]

などと、特定のパス以外はすべて flavour として扱うオプションも追加。これではてなっぽいアプリが簡単に作れるかね。

あと、date_flavour 機能もつけた。

これは /2005/04/08 などのような日付っぽいURLにアクセスされた場合、$c->flavour->(year|month|day) に日付を格納し、その日付部分をパスから除く。

この機能はデフォルトONで date_flavour => 0 とすればOFFにできる。

一気に機能追加しすぎてドキュメント書くのがあれすぎる。

しかも日本語の説明でも上記みたいに意味不明になっちゃうのに英語だとどうなっちゃうんだ、という。

by typester / at 2006-04-08T18:19:00 / perl · catalyst / Comment

CPAN Ratings に返信とかは

どうやればいいんだろう。

Array-Diff reviews

に反応したいんだけど。

by typester / at 2006-04-07T18:34:00 / perl / Comment

miyagawa さんの sub ref の使い方かっこいいなぁ。まねよう。

by typester / at 2006-04-04T19:05:00 / perl · plagger / Comment

JavaScript や CSS の query に自動で最終更新時間をつける Catalyst Plugin

川o・-・)<2nd life - JavaScript や CSS の query に自動で最終更新時間をつける Rails Plugin

インスパイア。

package Catalyst::Plugin::URI::MtimeQuery;

sub uri_for {
    my $c   = shift;
    my $res = $c->NEXT::uri_for(@_);

    if ( $res =~ /\.(css|js|swf)$/ ) {
        my $base = $c->req->base;
        my ($path) = $res =~ m!^$base/(.*)!;

        my $file = $c->path_to( 'root', split '/', $path );
        if ( $file->stat && -f _ && -r _ ) {
            $res .= '?' . $file->stat->mtime;
        }
    }

    $res;
}

1;

Catalyst では CSS や Javascript の読み込みは [% c.uri_for('/js/prototype.js') %] などのように記述することが多いのですが、上記プラグインをロードしておくと、css|js|swf の場合は自動で更新時間が付くようになります。試してないけど。

上のは設定きめうちなんだけどその理由は config の設定キー名思いつかなかったからという。。

あと、swf は普通にクエリを渡して使うことが多いのでこのままだとあまり使えない。

by typester / at 2006-03-17T15:41:00 / perl · catalyst / Comment

18 19 20 21 22 23 24 25 26 27

(Page 22 of 30)