新しいblogに移行しました

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

2008-12-29

ラピッドな開発(笑)

堅牢性・信頼性・可用性・拡張性はどこいった?

2008-12-17

[Perl]Email-Simple-2.004はちゃんとFromヘッダ処理できてた

過去の記事で、Email::Simpleである条件下においてFromヘッダをうまく取得できないようなことを書きましたが、数日前に再度動作を確認したところ、問題なく処理できることが判明しました。誤爆してスミマセンデシタ。

ちなみに実証コードを挙げてある方(Email::Filter)は、まだあれから確認していません。
近々に確認したいと思います。

2009-01-01 追記
再度確認したところ、Email::Filterについても当方の誤認でした。申し訳ありませんでした。
こちらで実証もしました(´・ω・`)

2008-12-14

[ネットライフ]45% Geekだそうな。

GIGAZINEに載っていたので、やってみた。

I am 45% Geek.
Geek? Yes, but at least I got social skills.
You probably work in computers, or a history deptartment at a college. You never really fit in with the "normal" crowd. But you have friends, and this is a good thing.

オイラ、45% Geekなんだって。

# どうでもいいけど、ネットライフのことをネットワイフと打ち間違えることが多いorz

2008-12-08

[Perl]コンストラクタを拡張する場合の書き方

よく忘れるし、調べてもそのものズバリな例がなかったので、メモ。

例えば、WWW::Mechanizeを継承したChildというクラスで、newした時点で必ずagentを'Mojimoji/1.0'にしたい場合。


### lib/Child.pm

package Child;
use warnings;
use strict;
use base qw/ WWW::Mechanize /;
use SUPER;

sub new {
my $class = shift;
my $self = $class->SUPER::new( @_ );
$self->agent( 'Mojimoji/1.0' );
$self;
}

1;


で、実際に使うときには

#!/usr/bin/perl

use lib qw( ./lib );
use Child;
use Data::Dumper;

my $c = Child->new;

print Dumper $c;


これを実行すると、


$VAR1 = bless( {
'headers' => {},
'forms' => [],
'page_stack' => [],
'requests_redirectable' => [
'GET',
'HEAD',
'POST'
],
'from' => undef,
'timeout' => 180,
'onerror' => sub { "DUMMY" },
'parse_head' => 1,
'_extracted_images' => 0,
'links' => [],
'max_redirect' => 7,
'quiet' => 0,
'images' => [],
'_extracted_links' => 0,
'stack_depth' => 8675309,
'protocols_forbidden' => undef,
'no_proxy' => [],
'onwarn' => sub { "DUMMY" },
'protocols_allowed' => undef,
'use_eval' => 1,
'autocheck' => 0,
'agent' => 'Mojimoji/1.0',
'def_headers' => undef,
'cookie_jar' => bless( {
'COOKIES' => {}
}, 'HTTP::Cookies' ),
'proxy' => {},
'max_size' => undef
}, 'Child' );

2008-12-05

[OpenVZ]仮想環境のダークホース

OpenVZ+Ubuntuがすごすぎてわけわからん状態の今日この頃。

唐突にVEをライブクローン(ライブマイグレートではない)するツールを書いたので、貼り付ける。


#!/bin/sh

src=$1
dst=$2
confdir=/etc/vz/conf
imgdir=/var/lib/vz/private
rootdir=/var/lib/vz/root
if [ $src ] && [ $dst ]; then
echo 'copying config...'
cp $confdir/$src.conf $confdir/$dst.conf
echo 'copying image...'
rsync -az $imgdir/$src/* $imgdir/$dst
echo 'copying root...'
mkdir $rootdir/$dst
chmod 755 $rootdir/$dst
echo 'clone complete.'
else
echo 'usage:'
echo 'vzclone [Source-VEID] [Destination-VEID]'
fi