Hateburo: kazeburo hatenablog

Operations Engineer / 運用系小姑 / Perl Monger

「記憶に残る風景」 #地元発見伝

伊豆長岡の方から祖父の家がある内浦に出たところ。 左に曲がると三津シーパラダイス。右は沼津市内に戻る 「記憶に残る風景」 #地元発見伝 沼津市, 静岡県県道17号線地元の魅力を発見しよう!特別企画「地元発見伝」

Run any Perl applications on Heroku

I made a simple heroku-buildpack for perl. With using this buildpack you can run any perl application from Procfile.github: https://github.com/kazeburo/heroku-buildpack-perl-procfile Sample and Usage This sample runs a PSGI server and a wo…

Web::Module::CoreList

I created Web::Module::CoreList. This site provides Web interface of Module::CoreList. You can know what modules shipped with versions of perl through this web site.http://corelist.rpee.be/Web::Module::CoreList is created based on tokuhiro…

(解決済み) DBIx::TransactionManager + File::RotateLogsで意図せずトランザクションが終了してしまう件

DBIx::TransactionManager 1.13で子プロセスでrollbackを実行しないような変更が入っています。https://metacpan.org/release/NEKOKAK/DBIx-TransactionManager-1.13TengやDBIx::Sunnyなどでトランザクションを使用し、File::RotateLogsでログを書き出してい…

Router::BoomとRouter::Simpleの文字列エンコードまわりの動作

昨日気付いた。Router::Simpleはいわゆるutf8 flaggedな内部文字列を渡すと、キャプチャしたテキストも内部文字列として得られるけど、Router::Boomはバイナリ列となる。 use Router::Boom; use Router::Simple; use Encode; use Test::More; use utf8; subt…

通信先が明確な内部APIなどのURIを構築するときはURI.pmを使わなくても良いんじゃないかな

通信先が明確な内部APIなどのURIを構築するときはURI.pmを使わなくても良いというかURI.pmはあまり速くないので、文字列連結だけで十分だと思います #!/usr/bin/perl use strict; use warnings; use Benchmark qw/:all/; use URI; use URI::Escape; use URL:…

application/x-www-form-urlencoded パーサーの動作を決める

深淵な理由があって2014年に application/x-www-form-urlencoded のパーサーを作ることになるとして仕様を考える基本はW3CのSPECを参考にしつつ、これまでのアプリケーションとの互換性を保つことを目標とする application/x-www-form-urlencoded ペイロード…

Released POSIX::strftime::Compiler. GNU C library compatible strftime for loggers and servers

I released POSIX::strftime::Compiler v0.10 to CPAN.https://metacpan.org/release/POSIX-strftime-Compiler https://github.com/kazeburo/POSIX-strftime-CompilerPOSIX::strftime::Compiler provides GNU C library compatible strftime(3). But this mo…

Apache::LogFormat::Compiler v0.22 has been released. Fixed bug around DST

Apache::LogFormat::Compiler v0.22 has been releasedcpan: https://metacpan.org/release/Apache-LogFormat-Compiler github: https://github.com/kazeburo/Apache-LogFormat-CompilerFixed bug around Daylight Saving Time(DST). Older version shows in…

POSIX::tzset and Windows

When changing timezone in perl script. POSIX::tzset is required. local $ENV{TZ} = 'Asia/Tokyo'; POSIX::tzset(); localtime(); But Windows does not support this. old Windows dies with "not implemented" error. newer Windows does not die. But …

Starlet / How to listen to Unix Domain Socket without Server::Starter

Define $ENV{SERVER_STARTER_PORT} in your script. if (-S $socket) { warn "removing existing socket file:$socket"; unlink $socket or die "failed to remove existing socket file:$socket:$!"; } unlink $socket; my $sock = IO::Socket::UNIX->new( …

Amon2でKossy::Request/Responseを使う

使う事があるかどうかは置いといて、使えた package MyApp::Web; .. # request/response use Kossy::Request; use Kossy::Response; sub create_request { Kossy::Request->new($_[1]) } sub create_response { shift; Kossy::Response->new(@_) } メリット…

データベースのmasterとslaveの使い分けの話。2014年版

社内で少し話題になったので。運用上の話はfujiwaraさんのMySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか - 酒日記 はてな支店 MySQLで参照の負荷分散を行うslaveは3台から構成するのがよいのでは - 酒日記 はてな支店をみてくだ…

Starlet + Server::Stater で UNIX domain socketに対応しました

Starlet-0.21がリリースされました。Starlet-0.21 - a simple, high-performance PSGI/Plack HTTP server - metacpan.org - Perl programming languageこのバージョンからServer::Staterとの組み合わせでUNIX domain socketをListenすることができるようにな…

ISUCON3 予選のAMIでスコア 65000点以上を出す方法 #isucon

ISUCON3 の予選AMIが公開されてから、ごにょごにょとHackした結果、スコアで65000まで出す事ができました。(一回だけ66000でけどたぶんインスタンスガチャ)「ISUCON 本戦出場者決定のお知らせ」をみると予選の時のトップのスコアが3.3万(自分たちは1.5万ぐら…

How to automate CPAN.pm configuration on Travis

I want to automate CPAN.pm configuration on Travis. I wrote .travis.yaml like this language: perl before_install: - cpanm -n CPAN - (echo y;echo y;echo o conf commit)|cpan - cpanm -n Module::Install Module::Install::Repository Module::Inst…

Kossy-0.24 Trial has been released. It contains new BodyParser

I released Kossy-0.24-Trial. It contains new request-body parser Kossy::BodyParser.https://metacpan.org/release/KAZEBURO/Kossy-0.24-TRIALKossy::BodyParser is based on tokuhirom's Plack::BodyParser https://github.com/plack/Plack/pull/434I t…

アプリケーションに手を入れずに #isucon 2013 予選のperlアプリケーションのスコアをあげてみようの巻

セッション管理モジュールやルーティングライブラリが速くなる事で何もしなくても isucon3 予選のperlのアプリケーションが高速化していく— masahiro nagano (@kazeburo) October 10, 2013ということで、やってみた。 初期 「オンライン予選で使用した問題が…

Monoceros-0.26 and Plack::Middleware::Static::OpenFileCache

Monoceros-0.26 uses sendfile(2) for sending file if Sys::Sendfile is available.https://metacpan.org/release/MonocerosPlack::Middleware::Static::OpenFileCache can cache opened file handles like nginx's open_file_cache. Static::OpenFileCache…

Plack::Middleware::Session::Simple has been released

English document is available on metacpan! Plack::Middleware::Session::Simpleをリリースしました。Plack::Middleware::Session(Store::Cache & State::Cookie)と互換性を保ちながら、効率よく動作することを狙っています。 必要なときに必要なだけ Set-…

Kossy::Validator

I released Kossy::Validator to CPAN. It was separated from Kossyhttps://metacpan.org/release/Kossy-ValidatorYou can use Kossy::Validator modules w/o Kossy.ぜひ毎日通って下さいww RT @mackee_w: Kossy::Validator分離してくだされ〜〜〜〜〜〜〜…

Cache::Memcached::Fast::Safe 0.04 was out. It has get_or_set()

I added get_or_set() to Cache::Memcached::Fast::Safe and released as ver. 0.04https://metacpan.org/release/Cache-Memcached-Fast-SafeI saw some people make a module that inherits Cache::Memcached::Fast::Safe only for adding get_or_set(). sa…

Released Kossy-0.23. Improve Performance

Kossy-0.23 gets 2x or more faster. https://metacpan.org/release/KossyI made these changes. Cache Kossy::Request->base. URI->canonical is slow. Use Router::Boom for router Use HTTP::Headers::Fast Optimize Kossy::Response->finalize Benchmark…

Plack::Middleware::Session uses Cookie::Baker

Plack::Middleware::Session 0.21 uses Cookie::Baker for improve performance. Cookie::Baker is simple cookie generator/parser module. https://metacpan.org/release/Plack-Middleware-SessionPrevious version of Plack::Middleware::Session uses Pl…

Released Cookie::Baker to CPAN

I released Cookie::Baker that provides HTTP cookie generator and parserhttp://search.cpan.org/~kazeburo/Cookie-Baker/ https://metacpan.org/release/Cookie-Baker### synopsis use Cookie::Baker; $headers->push_header('Set-Cookie', bake_cookie(…

Monoceros supports accept4(2)

tokuhirom released Linux::Socket::Accept4 that provides accept4(2) Monoceros-0.25 uses accept4 if Linux::Socket::Accept4 is avaliable.accept4(2) can set FD_CLOEXEC and O_NONBLOCK in one system call.Monoceros-0.24 select(16, [4 10], NULL, N…

ISUCON3 予選に参加してきました。無念ばかり残る

isucon3予選に @sugyan @tagomorisとLINE選抜チームを組んで参加しました。共催枠なので結果に関わらず本戦には出れるのですが、結果は総合8位。無念です やったこと sugyanのエントリが詳しいのですが、自分がやったのは nginx(openresty)への入れ替え mysq…

The number of item that memcached-1.4.15 can keep is less than older version?

I decided to downgrade memcached because there was trouble several times in 1.4.15. After downgrading to 1.4.14, the memcached keeps item 7% more than 1.4.15.1.4.15 has a bug around slab allocator? ref: https://code.google.com/p/memcached/…

Nginx gzip and Vary. How to

I want to output "Vary: Accept-Encoding,User-Agent". But gzip_vary only adds Accept-Encoding. "add_header Vary" does not merge headers.My answer is.. location / { gzip on; gzip_disable "MSIE [1-6]\."; gzip_types text/css application/x-java…

xbuildとCartonを利用したPerlアプリケーションのデプロイ環境の構築

最近、新しいサーバでサービスを動かしたりベンチマークを取る場合には、モリスさんのxbuildを使ってるhttps://github.com/tagomoris/xbuildxbuildを使うとローカルの任意のディレクトリにPerl(Ruby,Node.js,PHP,Pythonにも対応)のランタイムを設置してくれ…