新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2009-05-27

[Linux]タイムゾーンの設定方法

トリアタマなので、メモ。

タイムゾーンを JST-9 に設定

# cp /usr/share/zoneinfo/Japan /etc/localtime

2009-05-15

[Perl]Encode/ConfigLocal.pmが無いと言われたら

なんか、「Can't locate Encode/ConfigLocal.pm」 とか言われたんです。この前。

で、ぐぐってみると、[perl] Encodeモジュールインストール後のCan't locate Encode/ConfigLocal.pm in @INC - おいぬま日報(不定期)に、書いてあったんです。

「enc2xs -C というコマンドを実行して、Encode/ConfigLocal.pmを生成すればいいようです。」


ほほぉ〜。どれどれ。

# enc2xs -C
require Encode::Detect;
require Encode::Detect::Detector;
require Encode::Detect;
require Encode::Detect::Detector;
require Encode::Detect;
require Encode::Detect::Detector;
require Encode;
require Encode::Config;
require Encode::Unicode;
require Encode::Symbol;
require Encode::TW;
require Encode::CJKConstants;
require Encode::GSM0338;
require Encode::JP;
require Encode::Encoding;
require Encode::CN;
require Encode::Encoder;
require Encode::Alias;
require Encode::Byte;
require Encode::EBCDIC;
require Encode::KR;
require Encode::Guess;
require Encode::KR::2022_KR;
require Encode::MIME::Header;
require Encode::MIME::Name;
require Encode::MIME::Header::ISO_2022_JP;
require Encode::CN::HZ;
require Encode::JP::JIS7;
require Encode::JP::H2Z;
require Encode::Unicode::UTF7;
require Encode::KR::2022_KR;
require Encode::MIME::Header;
require Encode::MIME::Header::ISO_2022_JP;
require Encode::CN::HZ;
require Encode::JP::JIS7;
require Encode::JP::H2Z;
require Encode::Unicode::UTF7;
require Encode;
require Encode::Config;
require Encode::Unicode;
require Encode::Symbol;
require Encode::TW;
require Encode::CJKConstants;
require Encode::GSM0338;
require Encode::JP;
require Encode::Encoding;
require Encode::CN;
require Encode::Encoder;
require Encode::Alias;
require Encode::Byte;
require Encode::EBCDIC;
require Encode::KR;
require Encode::Guess;
require Encode::KR::2022_KR;
require Encode::MIME::Header;
require Encode::MIME::Name;
require Encode::MIME::Header::ISO_2022_JP;
require Encode::CN::HZ;
require Encode::JP::JIS7;
require Encode::JP::H2Z;
require Encode::Unicode::UTF7;
$Encode::ExtModule{'Detect'} = "Encode::Detect";
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Encode
/usr/lib/perl5/5.8.8/Encode
Generating /usr/lib/perl5/5.8.8/i386-linux-thread-multi/Encode/ConfigLocal.pm...


無事にEncode::ConfigLocalが生成されたみたいです。

2009-04-21

[Perl]MooseX::Alienで、なんでもMoose

MooseX::Alienを使うと、非MooseなモジュールもMoose化できるらしい。

package MooseX::Safarize;
use Data::Dumper;
use Moose;
extends 'WWW::Mechanize';
with 'MooseX::Alien';

sub BUILD {
my $self = shift;
my @arg = @_;
$self->agent_alias( 'Mac Safari' );
}

before get => sub {
my ( $self, $uri ) = @_;
warn "GET $uri";
};

after get => sub {
my $self = shift;
warn "Status: ". $self->status. " ". length( $self->content ). " bytes DLed.";
};

no Moose;

my $c = MooseX::Safarize->new( timeout => 2 );
print Dumper $c->agent;
$c->get( 'http://www.cpan.org/' );


結果。

$VAR1 = 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85 (KHTML, like Gecko) Safari/85';
GET http://www.cpan.org/ at ./safarize.pl line 15.
Status: 200 5810 bytes DLed. at ./safarize.pl line 20.

[Perl]Mooseでコンストラクタの挙動を変える

BUILDメソッドを定義することで対応できる。

package MyCar;
use Data::Dumper;
use Moose;

has 'speed' => ( is => 'rw', isa => 'Int' );

sub BUILD {
my $self = shift;
$self->speed( 50 ) if !$self->speed;
}

no Moose;

my $super_car = MyCar->new( speed => 200 );
my $normal_car = MyCar->new;

print "=== Super Car ===\n". Dumper $super_car;
print "=== Normal Car ===\n". Dumper $normal_car;

結果

=== Super Car ===
$VAR1 = bless( {
'speed' => 200
}, 'MyCar' );
=== Normal Car ===
$VAR1 = bless( {
'speed' => 50
}, 'MyCar' );