2010-01-01から1ヶ月間の記事一覧

独自のプロパティを作って正規表現置換してみる修行、ついでにコメントつきヒアドキュメントの試み

記号っぽいものを特定して置換しなければならない。おそらく、Perl で定義されているユニコードプロパティとは一致しない。そこで独自にプロパティを作ってみることにした。ついでに、ヒアドキュメントを見やすく、かつコメントもつけられるように試みた。ユ…

if, elsif, elsif, ... なコードをどう書き直せばわかりやすいか悩む修行、その2

WEB から取ってきた文字列を標準化するコードを書いている。前回エントリを書いたところ、コメントで Regexp::Assemble (R::A) を教えてもらった。R::A オブジェクトに複数の正規表現を入れておいて、文字列をマッチさせ、どれがマッチしたか、を知ることが…

456 にマッチする正規表現を見つけろ

文字列 456 にマッチする正規表現のうち、Regexp::Assemble を使ってどれがいちばん早くマッチするか。 use strict; use warnings; use Regexp::Assemble; my $ra = Regexp::Assemble->new->track; #$ra->debug(0xf); $ra->add(map {"($_)"} qw{456 \d{3} .*…

HTML::TreeBuilder でネストが深い HTML を調べる修行

HTML::TreeBuilder で解析したとき、ネストが 4 桁になるような HTML がある。実際に HTML としてネストが深いか、というと、そうである場合とそうでない場合がある。実際にネストが深い場合というのは、本当に center タグが延々と掘られていたり、font タ…

2010-01-27の読みさし

ヒトはおかしな肉食動物 生き物としての人類を考える (講談社+α文庫):100% ヒトはおかしな肉食動物 生き物としての人類を考える (講談社+α文庫)作者: 高橋迪雄出版社/メーカー: 講談社発売日: 2007/12/21メディア: 文庫 クリック: 1回この商品を含むブログ…

AC アダプタがまだ来ない

1/16 に発注した AC アダプタがまだ届かない。どうしてくれよう。

Regexp::Assemble のバグなのか、どうかいろいろ試す修行

Regexp::Assembleのバグ? - Humanity によると、 ということで正規表現リテラル(?)じゃなく文字列で渡せばうまくいきました。 ということだったけれど、いろいろやってみたらそういうわけでもなさそう、つまり、文字列を渡しても落ちるときは落ちるみたい、…

lzh でブツをもらったけど CentOS マシンには lha が入っていない

yum search lha すると xarchiver なるものが返ってくる。なんで X 関係あるのかなー、ただのフロントエンドってことなのかなー、と思って yum install xarchiver してみた。 ら、やっぱり lzh は対応してないよ、って怒られた。Windows なマシンで展開する…

正規表現リテラルをハッシュキーにしたときの動きを探る修行

if, elsif, elsif, ... なコードをどう書き直せばわかりやすいか悩んでいたら、トラックバック & コメントで Regexp::Assemble を教えてもらって、サンプルコードまで教えてもらった。 Regexp::Assembleのバグ? - Humanity で、話は Regexp::Assemble の ad…

if, elsif, elsif, ... なコードをどう書き直せばわかりやすいか悩む修行

WEB から持ってきた文字列を標準化するコードを書いている。いろいろなスタイルで書かれた文字列を「使えるかたち」に揃えるコード、とも言える。きれいに書くのが難しい。ある正規表現にマッチするかどうか調べ、マッチしたらそこから情報を切り出し、マッ…

金時豆 2 cup

金時豆を 2 cup、煮る。最近、うまくいっていない気がするな。そこそこの仕上りではあるんだが。うお、ちと目を離した隙に焦げた。うーむ。

2010-01-25の読みさし

あきらめたから、生きられた―太平洋37日間漂流船長はなぜ生還できたのか (BE‐PAL Books):100% あきらめたから、生きられた―太平洋37日間漂流船長はなぜ生還できたのか (BE‐PAL Books)作者: 武智三繁,石川拓治出版社/メーカー: 小学館発売日: 2001/12メディア…

ファーストサーバで障害

借りてるレンタルサーバに一時接続できなくなっていた。どうやらサーバに障害が発生した模様。http://support.fsv.jp/rf/tech/sy20100124_01.html サーバ再起動で必要なサービス上がるようにしてたかなあ。いろいろ確認しないと。

はしごだか

$ echo -n e9ab99 | xxd -p -r | iconv -f utf-8 -t shift-jis | od -tx1 -An iconv: 位置 0 で不正な入力シーケンスがありました $ echo -n e9ab99 | xxd -p -r | iconv -f utf-8 -t ms932 | od -tx1 -An fb fc

日本語にマッチする正規表現って

簡体字やハングルにマッチしない正規表現ってどう書くんだろう。 $ echo -n e38392 e69db1 e4b89c 0a | xxd -p -r | perl -MEncode -pe '$_=decode_utf8($_);s/(\p{Han})/<$1>/g;$_=encode_utf8($_)' ヒ<東><&#19996;> 簡体字も Han script に含まれるよなあ…

2010-01-22の読みさし

あきらめたから、生きられた―太平洋37日間漂流船長はなぜ生還できたのか (BE‐PAL Books):70% あきらめたから、生きられた―太平洋37日間漂流船長はなぜ生還できたのか (BE‐PAL Books)作者: 武智三繁,石川拓治出版社/メーカー: 小学館発売日: 2001/12メディア:…

xxd コマンドを知ったので冗長な UTF-8 表現を作ってみる修行

今までずっと od しか使っていなかったけれど、hexdump や xxd なんていうダンプコマンドがあることを知った。xxd は逆変換もできるらしいので、UTF-8 の冗長な表現を作ってみることにした。原理は知っていたけれど、実際にやってみたことがなかったから。「…

coro を cancel したときの on_destroy コールバックは cancel を実行した coro で実行される

昨日、ある coro A の on_destroy コールバックを実行する coro B が、A がみずから終了した場合 (B は coro manager) と外から cancel した場合 (B はメイン coro) で違うことを発見した。外から cancel した場合は、メイン coro から cancel したから B が…

coro manager を cancel してみる修行

昨日 coro manager を捕まえることに成功した。ので、これを cancel してみるとどうなるかやってみた。 use strict; use warnings; use Coro; sub ps { use Coro::Debug; Coro::Debug::command 'ps'; } sub get_mgr { my $mgr; async{ print "-pass-\n" }->o…

HTML から span like なインライン要素タグを正規表現を使って除く修行、その3

以前、HTML から span like なインライン要素タグを正規表現を使って除去するスクリプトを書いた。 HTML から span like なインライン要素タグを正規表現を使って除く修行、その2 - 昨日知ったこと HTML から span like なインライン要素タグを正規表現を使…

coro manager を捕まえる

ps したときに列挙される coro の中にある [coro manager] coro を捕まえた。main スレッドで作った coro の on_destroy コールバックで。 [takeyuki@sunya ~]$ perl -MCoro -e 'async{}->on_destroy(sub {print $Coro::current->desc."\n"});cede;' [coro m…

青えんどう

青えんどうを煮た。下茹で 60 分、砂糖を入れて 30 分。まずまずのでき。

AnyEvent のコールバックの coro は main coro じゃないことを知り、coro の PID はアドレス値であることを知る修行

AnyEvent::timer の callback coro AnyEvent::timer のコールバックが実行されるのはイベントループだからメイン coro なんだろうと思っていた。が、次のプログラムを走らせてみて、そうではないことを知った。 use strict; use warnings; use Coro; use Any…

async_pool は terminate しないから join もできない

coro プールを使った場合、coro は async_pool ブロックを抜けても terminate はしない。すると、join もできないことになる。 $ perl -MCoro -e '(async{})->join' $ perl -MCoro -e '(async_pool{})->join' FATAL: deadlock detected. 明示的に coro の中…

Fiddler アルファテスター募集

InsideHTTP Fiddler のアルファ版のテスターを募集しているみたい。我こそはと思う方はやってみるといいかと。

coro プールに関するベンチマーク

Coroでスレッドプールを使う - 北海道苫小牧市出身の初老PGが書くブログで Coro でスレッドプールを使う際の注意点が、様々なベンチマークと共に示されている。まとめとして 「async_poolを使う時には、同時にたくさんのスレッドを利用し過ぎないように気を…

async_pool で coro が再利用されているのを確認する

use strict; use warnings; use Coro; for my $i (0..4) { print $i .q{,}. async_pool { print "$i-1\n"; cede; print "$i-2\n"; cede; print "$i-3\n"; }, "\n"; print "main\n"; cede; } [takeyuki@sunya ~]$ perl a.pl 0,Coro=HASH(0x94f4398) main 0-1 …

全角括弧の半角変換

[takeyuki@sunya pbird]$ echo $LANG ja_JP.UTF-8 [takeyuki@sunya ~]$ echo "()" | perl -pe 'tr{()}{()}' ())()) なんだこれは。全角「(」が半角「()」に変換されたように見える。 [takeyuki@sunya ~]$ echo "()" | perl -Mutf8 -pe 'tr{()}{()}'…

head や tail に -0 を指定できることに気づく修行

head や tail に 0 行出力するように指定できる。 $ echo -e "a\nb\n\c" | head -0 | tail -0 使いどころは。 $ find ほにゃらら | xargs perl -pe と find に複雑な条件を書いて perl の処理に渡そうとして、ふと、走らせる予定の perl のワンライナーを別…

AnyEvent + Coro での並行ダウンローダの習作 その 2

AnyEvent + Coro での並行ダウンローダの習作 - 昨日知ったことの続き。前回のスクリプトでは、処理が進むにつれセマフォの数が増えていってしまうことが問題だった。セマフォのカウンタが元に戻ったら、そのセマフォを delete できれば一定数以上セマフォが…