OpenIDでテキストを共有できます
- 新規作成
- OpenIDで認証してエントリーを新規作成します
- 共有
- エントリーにはOpenIDで閲覧と編集に制限かけることができます
- 変更履歴
- 編集履歴もあるので、コラボレーションにも活用できます
新着エントリー
plagger-ircbotをPlagger::Crypt対応させる
対応してなかったので。
commitしていいですかね?
Index: bin/plagger-ircbot =================================================================== --- bin/plagger-ircbot (revision 2044) +++ bin/plagger-ircbot (working copy) @@ -10,6 +10,7 @@ use YAML; use Plagger::ConfigLoader; +use Plagger::Crypt; use POE qw( Session @@ -115,7 +116,7 @@ Username => $ENV{USER}, Server => $config->{server_host}, Port => $config->{server_port} || 6667, - Password => $config->{server_password} || undef, + Password => $config->{server_password} ? Plagger::Crypt->decrypt($config->{server_password}) : undef, } ); }
created by blog.nomadscafe.jp
HTML::Template::Proのベンチマーク
HTML::Templateとの比較
#!/usr/bin/perl use strict; use HTML::Template; use HTML::Template::Pro; use Benchmark; my $html = <<EOF; <TMPL_LOOP NAME=list><TMPL_IF NAME=key><TMPL_VAR NAME=key>,<TMPL_VAR NAME=value><br></TMPL_IF> </TMPL_LOOP> EOF my @list; map { $list[$_] = { key=>$_, value => rand($_) } } 0..29; Benchmark::timethese(2000, { 'HTML::Template' => \&htmltmpl, 'HTML::Template::Pro' => \&htmltmplpro, }); sub htmltmpl{ my $tmpl = HTML::Template->new( scalarref => \$html, die_on_bad_params=>0 ); $tmpl->param('list',\@list); $tmpl->output; } sub htmltmplpro{ my $tmpl = HTML::Template::Pro->new( scalarref => \$html, die_on_bad_params=>0 ); $tmpl->param('list',\@list); $tmpl->output; }
結果
Benchmark: timing 2000 iterations of HTML::Template, HTML::Template::Pro... HTML::Template: 10 wallclock secs (10.29 usr + 0.00 sys = 10.29 CPU) @ 194.36/s (n=2000) HTML::Template::Pro: 2 wallclock secs ( 1.69 usr + 0.01 sys = 1.70 CPU) @ 1176.47/s (n=2000)
TTとの比較
#!/usr/bin/perl use strict; use Template; use HTML::Template::Pro; use Benchmark; my $htpro = <<EOF; <TMPL_VAR EXPR="comma(num)"> EOF my $tt = <<EOF; [% USE Comma %] [% num | comma %] EOF Benchmark::timethese(2000, { 'TT' => \&template, 'HTML::Template::Pro' => \&htmltmplpro, }); sub template { my $template = Template->new(); $template->process(\$tt, {num=>1000}, \my $output); } sub htmltmplpro{ my $tmpl = HTML::Template::Pro->new( scalarref => \$htpro, die_on_bad_params=>0 ); $tmpl->register_function( 'comma', sub { local $_ = shift; 1 while s/((?:\A|[^.0-9])[-+]?\d+)(\d{3})/$1,$2/s; return $_; } ); $tmpl->param('num',1000); $tmpl->output; }
結果
Benchmark: timing 2000 iterations of HTML::Template::Pro, TT... HTML::Template::Pro: 1 wallclock secs ( 0.44 usr + 0.01 sys = 0.45 CPU) @ 4444.44/s (n=2000) TT: 10 wallclock secs ( 9.92 usr + 0.04 sys = 9.96 CPU) @ 200.80/s (n=2000)
created by blog.nomadscafe.jp
はあ、
てすとてす。
Crypt::SSLeayでproxyエラーになるときの対策
[client] => [Apache mod_proxy] => [server]
っていう環境で時々つながらない事があるってので数日間悩んでいたんだけど、
Crypt::SSLeayのrtにでてた。
#33954: CONNECT is not robust to fragmentation of HTTP headers
これに対応するパッチがこれ
--- Crypt-SSLeay-0.57/lib/Net/SSL.pm.orig 2008-08-13 12:13:33.000000000 +0900 +++ Crypt-SSLeay-0.57/lib/Net/SSL.pm 2008-08-13 12:13:58.000000000 +0900 @@ -361,8 +361,11 @@ $connect_string .= $CRLF; $self->SUPER::send($connect_string); - my $header; - my $n = $self->SUPER::sysread($header, 8192); + my $header=''; + while ( $header !~ /$CRLF$CRLF/ ) { + my $n = $self->SUPER::sysread($header, 8192, length($header)); + } + my $conn_ok = ($header =~ /HTTP\/\d+\.\d+\s+200\s+/is) ? 1 : 0; if (not $conn_ok) {
これで解決するといいなと思うんだけど、確認までに時間かかる
もうひとつ問題があって、接続に失敗したときに、SSLのバージョンを変更して再接続をしようとするんだけど、
その時の引数が変。
1回目は
CONNECT example.com HTTP/1.0
なんだけど、2回目がproxyのIPアドレスでCONNECTしようとしてしまう。
CONNECT 192.168.1.1 HTTP/1.0
これはもちろん、エラーになる
原因はNet::SSLの136行目あたりの
my %args = (%$new_arg, %$arg);
これのnew_argとargが逆なんじゃないかと思うんですが、
みなさまどう思いますでしょうか。
created by blog.nomadscafe.jp
lumilic初体験
形態素解析の勉強をしてたら偶然blog.nomadscafe.jpにたどりつき
limilicにたどりつきました。
しんぷるなつくりに惚れぼれ。
でも、はてなの記法はわかんないや。うひょー。
created by momi2 [jugemkey.jp]
FormValidator::LazyWay
Index: lib/FormValidator/LazyWay.pm =================================================================== --- lib/FormValidator/LazyWay.pm (revision 14373) +++ lib/FormValidator/LazyWay.pm (working copy) @@ -72,7 +72,16 @@ $storage->{has_error} = ( $storage->{has_missing} || $storage->{has_invalid} ) ? 1 : 0 ; $storage->{success} = ( $storage->{has_missing} || $storage->{has_invalid} ) ? 0 : 1 ; - return FormValidator::LazyWay::Result->new($storage); + { + no strict 'refs'; + my $resclass = 'FormValidator::LazyWay::Result'; + *{"${resclass}::valid"} = sub { + return $_[0]->{valid} if @_ == 1; + return $_[0]->{valid}->{ $_[1] } if @_ == 2; + }; + } + + FormValidator::LazyWay::Result->new($storage); } sub _set_error_message_for_display {
created by woremacx [vaginarepos.org]
LWP::ConnCacheテスト
LWP::ConnCacheの効果を確認してみる
Webサーバは、MacOS X 10.4.11の素のApache。
KeepAliveがOnで、Timeout 15、MaxRequestが100になっているようです
スクリプト
#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all); use LWP::UserAgent; use LWP::ConnCache; my $conncache = LWP::ConnCache->new; cmpthese(1000, { 'no-keepalive' => sub { my $ua = LWP::UserAgent->new; $ua->get("http://127.0.0.1/", ':content_cb' => sub { } ); }, 'keepalive' => sub { my $ua = LWP::UserAgent->new; $ua->conn_cache( $conncache ); $ua->get("http://127.0.0.1/", ':content_cb' => sub { } ); } });
結果
$ perl keepalive_bench.pl
Rate no-keepalive keepalive
no-keepalive 463/s -- -19%
keepalive 568/s 23% --
20%ぐらい早い。
ちゃんと動きそう
created by nomadscafe.jp