新しいblogに移行しました

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

2009-01-31

[ネットライフ]Google先生ご乱心



どの検索結果にも、「このサイトはコンピュータに損害を与える可能性があります。」という文句がつけられている・・・ご乱心?

09-02-03 10:45 追記
Google Japan Blog: 全ての検索結果に「このサイトはコンピュータに損害を与える可能性があります。」というメッセージが表示された件について
slashdot.jp:先月末の Google の不具合、原因は人為的ミス
これは・・・><

2009-01-30

[Perl]型グロブやらシンボルテーブルについてのチラ裏

本当にチラ裏なんだけど、やっぱりよく忘れるので貼っておく。

code



#!/usr/bin/perl
use Data::Dumper;
use IO::Handle;

my $a = 'aaa';
${ $a } = 'hogehoge';
@{ $a } = qw/ foo bar baz / ;
%{ $a } = ( name => 'test', age => 21 );
*{ $a } = sub { return 'pooh!' };
open $a, './pee.pl';

print Dumper { package => *{ $a }{ PACKAGE } };
print Dumper { name => *{ $a }{ NAME } };
print Dumper { io => *{ $a }{ IO } };
print Dumper { format => *{ $a }{ FORMAT } };
print Dumper { glob => *{ $a }{ GLOB } };
print Dumper { scalar => *{ $a }{ SCALAR } };
print Dumper { array => *{ $a }{ ARRAY } };
print Dumper { hash => *{ $a }{ HASH } };
print Dumper { code => *{ $a }{ CODE } };
print Dumper $a->();

print Dumper [ *{ $a }{ IO }->getline ];

close $a;

sub doooo {
3;
}

for my $key ( keys %main:: ) {
print Dumper $key if *{ $main::{$key} }{ CODE };
}


結果



$VAR1 = {
'package' => 'main'
};
$VAR1 = {
'name' => 'aaa'
};
cannot handle ref type 15 at /usr/lib/perl/5.8/Data/Dumper.pm line 179.
$VAR1 = {
'io' => bless( , 'IO::Handle' )
};
$VAR1 = {
'format' => undef
};
$VAR1 = {
'glob' => \*::aaa
};
$VAR1 = {
'scalar' => \'hogehoge'
};
$VAR1 = {
'array' => [
'foo',
'bar',
'baz'
]
};
$VAR1 = {
'hash' => {
'name' => 'test',
'age' => 21
}
};
$VAR1 = {
'code' => sub { "DUMMY" }
};
$VAR1 = 'pooh!';
$VAR1 = [
'#!/usr/bin/perl
'
];
$VAR1 = 'doooo';
$VAR1 = 'aaa';
$VAR1 = 'Dumper';

2009-01-23

[生活]インフルエンザ

A型ウイルスにやられて、2日ほどダウン。
回復力が落ちたことにショックを覚えたorz

2009-01-20

[視点]もっとチケットという言葉を浸透させないか?

バグに至るまでの道のり - がるの健忘録を見て、切に思った。

まず「実装バグなのか?」という部分で、大抵の心ない人非人*2が予想しているよりも多くのハードルがあったりします。

(中略)

*2:えと…it(それ)とか呼んでみるのはどうかしらん? きっと彼らは「ITかぁそうかぁ俺たちが代表なんだなぁ」とか都合良く勘違いしてくれそうですしw。えと…「ITな人たち」「ITな方々」とかいう言い方?w


ここでいうITな方々に相当しそうな人たちって、概ね「開発者より権力のある、開発者ではない人」に相当するとおもう。仮にそうだとすると、潜在的にはかなり多くの人たちが該当する。

で、彼らが開発者に「バグだ」と言って持ってくるものって、大抵「バグかもしれない事象の報告」だったりするわけで。でも、「バグ」って言葉は認知され、発音しやすく、しかも衝撃的なので、皆こぞって「バグだ!」と言い続ける。
# 理由はもっと他にあるかもしれないけど、体験上よくあるパターンとして。

言うだけの人からすれば、まあそれで良いんだろうけど、「バグ」を出したとされる開発者からすれば、これは堪ったものではない。何が堪らんのかというと、バグかどうか分からん事象までバグ扱いされて、全部自身の責任にされ兼ねない。こりゃつらい。下手すると次の日から音信不通になるかもしれない。

開発者や「ITな方々」を含め、いろんな人が不機嫌になるくらいなら、最初から「バグ」なんて言葉を不用意に使わなければ良いだけの話だと思う。

「バグかもしれない事象の報告」や「修正要望」は、「バグ」ではなくて「チケット」ですぜ。

チケットについては、第3回:チケットドリブン開発でバグ削減!に詳しく説明があります。

2009-01-19

[Perl]モダンPerl入門を予約。

モダンPerl入門

予約。すげー楽しみ!

ちょうど、自分の理解がギリギリ及んでいない部分(Moose然り、XS然り...)をまるごとカバーしているような気がする。

また、テストに関する記述がある書籍は他にいくつか読んできたものの、どれも微妙というのが正直な感想。この本には、そういう意味でもかなり期待していたりする。

2009-01-01

[Perl]Email::Filterは無実です、オイラが悪かったです;;

過去に書いた記事 [Perl]Email::FilterとかEmail::Simpleでheaderメソッド使ってFromを取得するときの注意で、オイラが盛大に誤爆したことが明らかとなりました。

まず、[Perl]Email-Simple-2.004はちゃんとFromヘッダ処理できてたにもあります通り、Email::Simpleにおいて、$instance->header( "From" ); は正常に動作します。

さて、今回確認を行ったEmail::Filterについても、下記のような実証用コードを用意し、調べてみました。

test.pl



#!/usr/bin/perl
use Email::Filter;
use Data::Dumper;
my $email = Email::Filter->new;
print Dumper $email->header( 'From' );

見ての通り、以前書いた実証用コードをよりシンプルにしました。

また、手元に届いたスパムメール(^^;)を元に、Email::Filterのheaderメソッドのテスト用データを3パターンこさえてみました(元データがスパムなので、Fromを公開しておきます)。

テストデータ1(data_1.txt)



From guojie350@163.com Wed Nov 19 20:36:14 2008
X-Original-To: ******@*********
Delivered-To: ******@*********
To: ******@*********
Subject: =?ISO-2022-JP?B?GyRCIVobKEI0MBskQjpQMEo+ZUBsTVEhW0VUOWckTk5JJCQlUSE8GyhC?=
=?ISO-2022-JP?B?GyRCJUglSiE8JHIlOSVgITwlOiRLJDQ+UjJwQ1ckNyReJDkhIxsoQg==?=
Date: Wed, 19 Nov 2008 20:34:41 +0900
From: guojie350@163.com
X-Priority: 3
X-Mailer: Microsoft Outlook Express 6.00.2900.3138
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-2022-jp"

━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━
食事やお酒など一緒に楽しめる友人関係~一夜限り又は定期的に


テストデータ2(data_2.txt)



From guojie350@163.com Wed Nov 19 20:36:14 2008
X-Original-To: ******@*********
Delivered-To: ******@*********
To: ******@*********
Subject: =?ISO-2022-JP?B?GyRCIVobKEI0MBskQjpQMEo+ZUBsTVEhW0VUOWckTk5JJCQlUSE8GyhC?=
=?ISO-2022-JP?B?GyRCJUglSiE8JHIlOSVgITwlOiRLJDQ+UjJwQ1ckNyReJDkhIxsoQg==?=
Date: Wed, 19 Nov 2008 20:34:41 +0900
From: SPAMMER GUY <guojie350@163.com>
X-Priority: 3
X-Mailer: Microsoft Outlook Express 6.00.2900.3138
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-2022-jp"

━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━
食事やお酒など一緒に楽しめる友人関係~一夜限り又は定期的に


テストデータ3(data_3.txt)



From guojie350@163.com Wed Nov 19 20:36:14 2008
X-Original-To: ******@*********
Delivered-To: ******@*********
To: ******@*********
Subject: =?ISO-2022-JP?B?GyRCIVobKEI0MBskQjpQMEo+ZUBsTVEhW0VUOWckTk5JJCQlUSE8GyhC?=
=?ISO-2022-JP?B?GyRCJUglSiE8JHIlOSVgITwlOiRLJDQ+UjJwQ1ckNyReJDkhIxsoQg==?=
Date: Wed, 19 Nov 2008 20:34:41 +0900
From: <guojie350@163.com>
X-Priority: 3
X-Mailer: Microsoft Outlook Express 6.00.2900.3138
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-2022-jp"

━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━-━
食事やお酒など一緒に楽しめる友人関係~一夜限り又は定期的に


上記3パターンのデータを実証用コードに食わせて、その出力をそれぞれ見てみると、以下のような結果となります。

結果



[yt@air Email-Filter]$ cat data_1.txt | ./test.pl
$VAR1 = 'guojie350@163.com';
[yt@air Email-Filter]$ cat data_2.txt | ./test.pl
$VAR1 = 'Spammer Guy <guojie350@163.com>';
[yt@air Email-Filter]$ cat data_3.txt | ./test.pl
$VAR1 = '<guojie350@163.com>';


上記より、[Perl]Email::FilterとかEmail::Simpleでheaderメソッド使ってFromを取得するときの注意でオイラが書いた内容は嘘っぱちであることが証明されましたorz

ごめんなさいごめんなさいごめんなさい><

[生活]謹賀新年

本年も、皆様の健康とご盛栄をお祈り申し上げます。



平成21年 元旦 ytnobody