2013-05-22 (Wed)
unix domain socketでファイル記述子をやりとりするソケットプーリングを書いてみた
unix domain socket経由でプロセス間でファイル記述子のやりとりができるので、コネクションをプーリングして、unix domain socket経由で別プロセスに貸し出すスクリプトを試しに書いてみました。
poold.pl は起動すると 127.0.0.1:11211 へのコネクションを 3 つ作って保持し、unix domain socketをlistenしてクライアントからの貸し出し要求を待ちます。
ちなみに、unix domain socket は名前付きのではなく、abstract namespace のを作っています。これの利点は、パスに依存しないので、chroot内のプロセスと外のプロセスがやりとりできる点です。
client.pl は起動すると、unix domain socket 経由でソケットを獲得して、使い終わったらまたunix domain socket経由でプーリングプロセスに返却します。
- 利点
- ファイル記述子を貸し出してあとの通信には関与しないので、通信量が多いほど、proxy型のプーリング機構より早いと思います。ロードバランサに例えるなら、L7のproxy型とL4のDSRの違いのようなものです。
- 難点
2013-05-09 (Thu)
How to prevent premature hsplit issue for EOL Perls
Dear EOL Perl (5.8, 5.10, 5.12) users,
Devel::PatchPerl 0.86 was released yesterday.
Now Devel::PatchPerl applies patch to fix CVE-2013-1667 against EOL Perls (5.8.8, 5.8.9, 5.10.1, 5.12.5).
I suppose we will be able to get fatpacked patchperl based Devel::PatchPerl 0.86 soon.
Before that, perlbrew users can apply same patch using my Devel::PatchPerl::Plugin::Legacy.
$ cpanm Devel::PatchPerl::Plugin::Legacy $ env PERL5_PATCHPERL_PLUGIN=Devel::PatchPerl::Plugin::Legacy \ perlbrew install 5.8.8 -Doptimize='-O2 -g'
FYI: Only for 5.8.8, Devel::PatchPerl::Plugin::Legacy also apply patch to enable debug symbol without internal debugging code (-DDEBUGGING) when specify "-g" in -Doptimize. (We can do same with "-DDEBUGGING=-g" on Perl 5.8.9 or later)
Best regards,
hirose31 the EOL Perl user by unfathomable reasons
2013-05-01 (Wed)
p
use Data::Dumper; $Data::Dumper::Indent = 1; $Data::Dumper::Deepcopy = 1; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Terse = 1; sub p(@) { my $d = Dumper(\@_); $d =~ s/\\x{([0-9a-z]+)}/chr(hex($1))/ge; print $d; }
my %very_complex_data = ( msg => 'give me a beer' ); p \%very_complex_data ↓ [ { 'msg' => 'give me a beer' } ]
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 05 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 12 |
2012 | 01 | 02 | 03 | 06 | 08 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 05 |



