Catalyst 5.33 いれたら CPANPLUS とかいれられちゃったのでこの際移行してみる。

ちょっとつかってみて CPAN よりいいところ

  1. アンインストールコマンドがある
  2. ユーザー権限でモジュールをインストールできる (内部でsudo使用らしい)
  3. p コマンドで履歴というかログをページャで開ける (ファイルに保存も可)

2 が地味にいいなー。

by typester / at 2006-01-26T16:06:00 / life · perl / Comment

下書き

package DBIx::Class::Loader::Pluggable; use strict;

use base qw/DBIx::Class::Loader/;
require Module::Pluggable::Fast;

sub new {
    my $class = shift;
    my %attr  = @_;

    my $self = $class->SUPER::new(@_);

    Module::Pluggable::Fast->import(
        name    => '_components',
        require => 1,
        search  => [ $attr{namespace} ],
    );
    __PACKAGE__->_components;

    $self;
}

1;
by typester / at 2006-01-24T19:59:00 / perl / Comment

DBD::SQLite のバグ?

DBIC::Loader の blblack さんが綺麗なサンプルを返信してくれたのでそれを書くと、

my $test_ite = DBIC::Test->search;

while ( my $test = $test_ite->next ) { # Fails
###foreach my $test ($test_ite->all) { # Works
    $test->text( $test->text . ' updated' );
    $test->update;
}

とかで、イテレータでまわそうとするとupdate時に死ぬ。(searchで複数の行が帰ってくる場合)

配列で全部とってきてまわしたときは普通に動く。

ちなみに、DBIC::Test->search->all というのは CDBI でいうリストコンテキストでの search と同じことです。もちろん CDBI と同じように

my @tests = DBIC::Test->search;

ともかけるす。というか僕は最初そやって投稿したので、上の例が帰ってきたときにネイティブDBIC使いとの違いを知らしめられたという感じです。

by typester / at 2006-01-20T03:09:00 / perl · dbic / Comment

daap_proxy.pl その後

POE の Cookbook にのってる TCP Forward サンプルを元に、とりあえず動くのをつくってコミット

daap fwd

これで家の iTunes を会社の iTunes 共有に追加できたりする。

GET daap://address:3689/server-info HTTP/1.1

とかって通信してるはずなのに、それをそのまま中継して動く不思議。

ちゃんとDAAPしゃべって中継したい! 共有名変えたり、認証かけたり。

現状は daap_proxy.pl というよりは daap_fwd.pl か。

by typester / at 2006-01-18T21:50:00 / perl / Comment

DBIC の Trigger

よくわかんないんだが、CDBIのtriggerぽいことをするには

sub insert {
    my $self = shift;
    $self->created_date( DateTime->now ) unless $self->created_date;
    $self->SUPER::insert(@_);
}

みたいな感じでいいんかなぁ。

by typester / at 2006-01-15T19:35:00 / perl / Comment

Static::Simple と StackTrace のロード

はこんな感じでどう。

__PACKAGE__->setup(
    do {
        my @plugins;
        push @plugins, 'StackTrace' if $ENV{CATALYST_DEBUG};
        push @plugins, 'Static::Simple' if $ENV{CATALYST_ENGINE} =~ /^HTTP/;
        @plugins;
    }
);
by typester / at 2006-01-15T18:32:00 / perl · catalyst / Comment

CPANRecentアップデート

namespaceフィルタに加えてauthorフィルタも追加した。

/author/miyagawa

とかで特定の人のログを追えるように。手抜きなので namespace フィルタと併用は出来ない。キーはCPAN IDです。

miyagawa+naoya+tokuhirom とかすれば複数人を対象にできるます。

by typester / at 2006-01-15T07:27:00 / perl / Comment

つーかPOEよくわからねえええkつ

by typester / at 2006-01-14T02:44:00 / perl / Comment

昨日の DAAP Proxy は POE::Component::Proxy::TCP はなんかLinuxでしかうまく動かんので、適当に実装してる。

sekimura さんので iTunes の共有に表示出すのは簡単にできて、そっから DAAP の server-info content-codes login まではいくんだけど、そのあと updates で固まる。

土日マター。

by typester / at 2006-01-14T02:37:00 / perl / Comment

daap-proxy.pl

sekimura さんが Net::Rendezvous::Publish::Backend::BonjourWin32 とかいうアツイモジュールを作っているのを見てこんなの思いついた。

実行できる環境にないので適当に書いてみただけで多分動きませんが、

#!/usr/bin/perl

use strict;
use warnings;

use Getopt::Long;
use FindBin;
use lib "$FindBin::Bin/../lib";

use POE qw/Component::Proxy::TCP/;
use Net::Rendezvous::Publish;
use Net::Rendezvous::Publish::Backend::BonjourWin32;

my $server_name   = 'daap proxy';
my $server_port   = 9999;
my $remote_server = 'localhost';
my $remote_port   = 3689;

GetOptions(
    'n|server-name=s'   => \$server_name,
    'p|port=i'          => \$server_port,
    'r|remote-port=i'   => \$remote_port,
    's|remote-server=s' => \$remote_server,
);

POE::Component::Proxy::TCP->new(
    Alias       => "ProxyServerSessionAlias",
    Port        => $server_port,
    OrigPort    => $remote_port,
    OrigAddress => $remote_server,
);

my $service = Net::Rendezvous::Publish->new->publish(
    name => $server_name,
    type => '_daap._tcp',
    port => $server_port,
);

$poe_kernel->run;

目的はLANの外にあるDAAP ServerをiTunesの共有で聞きたい、てのがしたいということ。

家にも会社にも音楽ファイル置いててめんどいのでこゆのほしかった。

これで動くといいけどなぁ。詳しくは明日。

by typester / at 2006-01-13T02:31:00 / perl / Comment

21 22 23 24 25 26 27 28 29 30

(Page 26 of 30)