Personal tools

Perl

31 posts
  • Ruby とか Perl とかで街を育てる on by ultraviolet, [Perl] Hatena Bookmark

    MyMiniCity にアクセスするイカサマスクリプトを perl で書いてみました。でも、どうも単に GET するだけじゃダメっぽい気がする。

  • Perl 20周年 on by ultraviolet, [Perl] Hatena Bookmark

    12月18日は、Perl 1.0 リリースから20周年の記念日です。

  • User-Agent を隠す proxy on by ultraviolet, [Perl] Hatena Bookmark

    BASIC認証のかかったココログのblogが、以前は携帯からも(BASIC認証可な端末なら)閲覧できたのに、「携帯に対応しました」とかいうニュースリリースと共に携帯から閲覧不可になってしまった。許せねえ。 仕方が無いので、apache に mod_proxy を入れて、携帯からもここを経由すればココログの特定blog をPC同等に閲覧できるようにしてみました。 ココログはどうも User-Agent ヘッダで携帯かどうかを識別してる模様なので、mod_proxy の前段で mod_perl を使ってこのヘッダを剥ぎ取ってやります。こんな感じ。 Apache/NoUserAgentProxy.pm package Apache::NoUserAgentProxy; use strict; use Apache::Constants qw(:common); sub handler { my $r = shift; $r->header_in('User-Agent','RauruProxy/0.1'); return OK; } 1; httpd.conf ProxyPass /cocolog/foobar http://foobar.cocolog-nifty.com/blog ProxyPassReverse /cocolog/foobar http://foobar.cocolog-nifty.com/blog <Directory proxy:http://foobar.cocolog-nifty.com/blog*> Allow from all </Directory> <Location /cocolog/foobar> PerlHeaderParserHandler Apache::NoUserAgentProxy </Location> よしよしこれでうまくいった… と思ったらなんかパスワードを二回聞かれるな。むー。 2007/04/11 追記: パスワードを二回聞かれるのは、ココログがスタイルシート内で画像URIをホスト名込みで指定してたためでした。まったくろくなことをせんな… 2007/04/12 追記: mod_proxy_html なるモジュールを使えば HTML [...]

  • NetPacket::UDP on by ultraviolet, [Perl] Hatena Bookmark

    会社で結構めんどいトラブルが起きてて、昨晩から対処に追われてます。tcpdump で取ったIPパケットを wireshark で眺めて問題を突き止めようとしたんだけど、パケット量が膨大になってやってられなくなったので、CPAN の Net::TcpDumpLog と NetPacket モジュールに食わせて perl でプロトコル解析するワザを急遽勉強しました。これは楽でええな。 その過程で NetPacket-0.04 の NetPacket::UDP にバグがあることを発見したので。 111c111 < return $tcp_obj->data; --- > return $tcp_obj->{data}; こうしないと NetPacket::UDP::strip() が使えませーん。

  • DBI の行キャッシュ on by ultraviolet, [DB, Perl] Hatena Bookmark

    更新サボっていてすんません。なんでサボってたかとゆうと理由は主に二つあって、せっせと perl のコードを書いてたのと、もう一つはひみつ。 DBI 使って Oracle を叩くプログラムを書いてるんですが、毎秒100回ぐらい select かけるのを数十分続けたら、なんか使用メモリが数Gにまでふくれ上がってしまって、一時はどうしようかと思いました。 1クエリあたり2kbyte増えるっていくらなんでも増え過ぎだろ、と思ってよくよく調べたら、DBI ってデフォルトで行キャッシュが on になってたのね。今まで CGI みたいにすぐ終了するもんばっか作ってたから、気づかんかった。むむー。$dbh->{RowCacheSize}=1 にしたら、ほとんど膨らまなくなりました。えがった。

  • 循環参照 on by ultraviolet, [Perl] Hatena Bookmark

    はてなCTOの日記を参考にして、初めて Scalar::Utils::weaken を使ってみました。とあるスクリプトを SpeedyCGI 使ってプロセス永続化したんですけど、これが循環参照バリバリ。1サイクル終了時に相互参照をクリアするメソッド作ったんですが、どっか見落としがあったらしくて、どうしてもメモリから解放されないオブジェクトができてしまってた。 ところが Scalar::Util 使って循環参照になってるとおぼしき変数を全部 weaken してみたんだけど、DESTORY されるかどうか見てみると、1サイクル終わっても1つだけ解放されないオブジェクトが残ってる。どうしちゃるかねとゆうわけで、今度は Devel::Cycle を CPAN から取って来てインストール。ところがこれ、参照元側のオブジェクトを1個指定して循環参照を検索するもんなんですね。どれが参照元なのかわからないので、やっぱり見つからないー。 なんか入れるとそれを参照してる参照元を探してくれるモジュールって何か無いですかね? Postedit: 思惑通り 小飼さんきたー。ありがとうございます。 うちの perl は Debian Etch に入ってる -DDEBUGGING 無しのやつだったので、さっそく perl-debug パッケージを追加で入れて、Devel::Leak も入れました。今から改めてデバッグ。

  • Audrey Tang on by mara, [Gender, Perl] Hatena Bookmark

    Pugs の開発者として知られる Audrey Tang の性別はいろいろわかりにくいところみたいで、結城浩さんとこの今日の記事 では女性と言及されてる 言及は女性形で行なうがたぶん正しいんだけど、詳細には 彼女の blog 記事 を読むとわかるように、実は性同一障害だったりする たぶん戸籍上はまだ男性のまま だけど、本人は女性として言及されることを望んでるので、そういうふうに言及するのがいいと思う 名前も、もともとは Autrijus Tang (唐宗漢)って名前だったんだけど、女性っぽく聞こえる Audrey Tang (唐鳳) に改名したとのこと

  • perl 正規表現での Unicode Property on by ultraviolet, [Perl] Hatena Bookmark

    すんません、誰かご存知の方がいらっしゃったら教えていただきたいんですが。 perl 5.8.* のパターンマッチで、\p での Unicode 属性を使う場合なんですが、不正な属性名を指定した場合にエラーになるかならないかがどこで分かれるか、ってご存知の方いらっしゃいませんか? うちの環境は 5.8.8 なんですが、 m/\p{IsDAMEDAME}/; だとエラーにならず普通にアンマッチ、一方 m/\p{IsDAMEDAME}/i; にすると Can't find Unicode property definition "DAMEDAME" とのエラーを吐き、さらに m/ \p{IsDAMEDAME}/i; だとまたエラー吐かなくなるみたいです。なんでこういう挙動になるのか理解でけないんです。 いや、不正な属性名を使うのがそもそもいかんのではありますが、いろいろ事情があってエラーをトラップしなきゃならん仕事がありまして。やっぱそんな馬鹿な仕事持ってきた nakanohito が悪いってことか。 2006/03/07 追記: 404 Blog Not Found の小飼弾さんが調査・究明してくださいました。ありがとうございます。そうか on demand load だったのかー。同じ正規表現でもエラーが出る時と出ない時があるのね。

  • ActiveState が再び独立 on by ultraviolet, [Business, Perl] Hatena Bookmark

    2年ちょっと前に Sophos に買収された ActiveState — Windows 用 Perl の標準 として知られる ActivePerl の開発元 — が、ActiveState の Blog によると、今度はカナダのベンチャーキャピタル Pender Financial Group に売却され、独立することになったそうです。 もともと ActiveState は PerlMx — sendmail と perl を組み合わせて spam filtering するようなツールとかを持っていて、そこに目をつけられてメールセキュリティ会社である Sophos に買収されたんですけど、今回 Sophos が spam よりも threat management — ウィルス対策とかその辺か? — にリソースを集中することになったので、きみ独立したまい、つうことになったみたい。それで VC がパトロンになったと。 今後とも ActivePerl, ActivePython, ActiveTcl, Komodo それに Perl Dev Kit [...]

  • Net::Akismet on by ultraviolet, [Perl, Spam] Hatena Bookmark , bilingual

    Nikolay Bachiyski in Burgaria made Net::Akismet, a perl module to call Akismet API for detecting comment/trackback spams. Though I once made a similar module, I guess Bachiyski will provide a better support. Now, anybody can write an Akismet spam blocker plugin for Movable Type. Won’t you?