Perl

4byteのUTF-8文字を置換する

mysqlはCHARSET=utf8なVARCHAR型等のカラムでは3byteまでのUTF-8文字しか格納できず,4byte文字をINSERTしようとするとIncorrect string valueと言われてしまう.これはutf8mb4を指定することで回避できるが,最大長が255文字でかつインデックスを貼る必要が…

Norikraでログ集計してアプリのエラーを素早く検知しようという話

背景 webアプリを書いていると,以下のようなロギングコードを至る所にちりばめる事になると思います. $c->log(error => "Chou Yabai ERROR!"); ただいくらログを吐いても,アプリのログからは片時も目を話さないよ!!みたいな真面目なエンジニアじゃない…

Get focused window title(name) using X11::Protocol

Use GetInputFocus() to get current focused window and use GetProperty() to get name of window. use X11::Protocol; my $x11 = X11::Protocol->new; my ($focuswin) = $x11->GetInputFocus; my ($title) = $x11->GetProperty( $focuswin, $x11->atom('W…

Perlで10行テンプレートエンジン

コードジェネレータ書いてるときに生成するコード量が多いと,スクリプト中にコピペできる程度にミニミニなテンプレートエンジンが欲しいと思うことがあるので書いた.エスケープとかは必要ないので,ベリーシンプルな置換とevalで書ける. my $Token = join…

PerlでCamelize/DeCamelize

sub camelize { (my $s = shift) =~ s/(?:^|_)(.)/\U$1/g; $s; } sub decamelize { my $s = shift; $s =~ s/(_)?((?:[A-Z](?![^A-Z]))+|[A-Z])/(pos($s)==0&&!$1?'':'_').lc($2)/ge; $s; } 普通にString::CamelCaseとか使えばいい話なんですが,スクリプト中…

Perlでヒートマップが書けるImager::Heatmapをリリースした

http://search.cpan.org/~kawamuray/Imager-Heatmap-0.02/lib/Imager/Heatmap.pm https://github.com/kawamuray/p5-Imager-HeatmapPerlでヒートマップを書く手段としては,既にCPANにあるImage::Heatmapが使えそうだけど,いくつかの理由から新たに書きまし…