perl
オレメモ。 PlackならPlack::Middleware::StackTraceを使えばカンタンなんだけれど、深淵なる理由で使えぬ時はこんな感じで書き出してる。
ちょっとハマったのでメモしておく。 状況 $ cpanm Crypt::OpenSSL::CA (中略) Configuring Crypt-OpenSSL-CA-0.23 Running Build.PL Checking OpenSSL version number... *** VERSION MISMATCH in OpenSSL test program! *** The version number extracte…
問1 curl -L http://cpanmin.us | perl - Task::Amon2 -nv がやっていることを正確に述べよ(10点) んー、自信なし。 ということで、真面目に調べてみる。 こういう時はじぶんで試行錯誤してみるのが吉。 test.pl #!/usr/bin/env perl use strict; use warn…
perldoc -f flock http://perldoc.jp/func/flock flock FILEHANDLE,OPERATION FILEHANDLE に対して flock(2)、またはそのエミュレーションを呼び出します。 成功時には真を、失敗時には偽を返します。 (中略) OPERATION は LOCK_SH, LOCK_EX, LOCK_UN のい…
#!/usr/env/perl use strict; use warnings; sub eval_func { eval { return 1; }; if ($@) { return 0; } } my $res = eval_func; printf "%s\n", $res; # $res is blank!!! ハマった。perldoc -f evalしてみると... In both forms, the value returned is …
Test::MockTimeの使い方にハマって調べたことをメモっておく。 Test::MockTime package Test::MockTime; ... BEGIN { *CORE::GLOBAL::time = \&Test::MockTime::time; *CORE::GLOBAL::localtime = \&Test::MockTime::localtime; *CORE::GLOBAL::gmtime = \&T…
Mojolicious::Liteのチュートリアルを読み進めるだけではあまり面白くなかったので、Yahoo TopicsのRSSを表示するかんたんなウェブアプリを書いてみた。 #!/usr/bin/env perl use utf8; use Mojolicious::Lite; use XML::Feed; use URI; get '/' => sub { my…
いろんなWAFに触れて知見を深めよう第一弾としてのMojo。 Hello World use strict; use warnings; use Mojolicious::Lite; get '/' => {text => 'Hello World!'}; app->start; と書いて $ morbo hello_mojo.pl [Sat Nov 10 09:44:52 2012] [info] Listening …
IPC::Cmdを使えばすっきり書けそうなのだが、コアモジュールに入ったのはv5.9.5から。 $ corelist -a IPC::Cmd IPC::Cmd was first released with perl v5.9.5 IPC::Cmdを使わないとするならこんな感じか。 #!/usr/bin/perl use strict; use warnings; my $p…
xaicronさんの記事を見てしったわけですが... http://blog.livedoor.jp/xaicron/archives/51193668.html $ perl -E 'say scalar (@array=qw(foo bar piyo))' 3 $ perl -E 'say scalar qw(foo bar piyo)' piyo
既存memcachedに対して新たにデータを投入する際に、「ネットワークの帯域圧迫しないか?」という心配があったので調べてみた。 以下、Cache::Memcached::Fastを使ってる前提で。 SYNOPSIS use Cache::Memcached::Fast; my $memd = new Cache::Memcached::Fa…
どんな種類のサーバであっても深く理解しようと思ったら、Socketを避けて通れないのでここらで一念発起して勉強してみる。 sock(2) socket - 通信のための端点(endpoint)を作成する socket() は通信のための端点(endpoint)を作成し、ディスクリプター(descri…
まずはperldocを読むべし。 do EXPR Uses the value of EXPR as a filename and executes the contents of the file as a Perl script require EXPR demands some semantics specified by EXPR これだけだとよくわかんないので、 warn 'loaded'; { foo => 1}…
https://github.com/kotaroito/p5-Config-Perl-Tiny書いてみたといってもCPANにうpしたわけではない。 perl形式の設定ファイルをロードする方法をメモるついでに、CPAN形式でモジュールを書いてみようと思っただけ。あとGithubに置いてみたかったというくだ…
マルチバイト文字の文字数カウント方法を調べたが、これが最もシンプルなり。 use strict; use warnings; use Encode qw(decode); my $str = 'あいうえお'; warn length($str); # 10 warn length(decode("euc-jp", $str)); # 5 便利!
シグナルに関するkazuhoさんの講義(http://gihyo.jp/dev/serial/01/perl-hackers-hub/000603)を読みつつ、分からない基本コンセプトをOperating System Concepts作者: Abraham Silberschatz出版社/メーカー: John Wiley & Sons Ltd発売日: 2009/02/13メデ…
たまに聞くけどよくわからんので調べてみた。 perldoc select RBITS,WBITS,EBITS,TIMEOUT This calls the select(2) syscall with the bit masks specified, which can be constructed using "fileno" and "vec", along these lines: select(2) select() や …
Perl Hackers Hub: UNIXプログラミングの勘所を読もうと思ったが、 「複製」と言っても,全部の情報が複製されるわけではありません。プロセスのメモリイメージが複製される(注2)一方で,プロセスが開いている「オープンファイル記述」(open file descrip…
Ukigumo::Serverは準備できたので、いよいよ「ゆるふわCI」を試してみる!Ukigumo::Clientというライブラリが用意されているので、とりあえずインストールする。 cpanm Ukigumo::Client でOK。調べてみるとどうやらCPAN形式でリポジトリ管理されているなら便…
テストを継続的に回したいが、Jenkinsはtoo muchっぽい。なんか手軽にできる方法ないかなと思っていたタイミングでYAPCでのトークを聞いてUkigumoがあった、と思い出す。http://d.hatena.ne.jp/tokuhirom/20110909/1315566798 http://d.hatena.ne.jp/tokuhir…
Mac OS X(SnowLeopard)でcpanm Task::Plackすると、EVのインストールで止まってしまう、という状況に陥りました。調べてみると、「Lion で Plack をインストールすると EV のテストでエラーがでる。 」この記事まんまの状況で、たしかにXcode4を入れる前は問…
perlbrew、cpanmそのものについては既に語りつくされてると思うので、自分のために手順だけ書いておく! 2011-10-22時点 curl -kL http://xrl.us/perlbrewinstall | bash echo 'source /home/kotaro/perl5/perlbrew/etc/bashrc' >> ~/.bashrc source ~/.bash…
去年に引き続きYAPC::Asiaにいってきました。今回で2回目。 おもしろかったなと思ったセッション ma.laさんの「Webアプリケーション高速化」 http://ma.la/files/yapcasia2011/高速化の手段は「努力、Hack、金」という3分類がすごくしっくりきた。 キホンは…
Kazuhoさんの記事(http://gihyo.jp/dev/serial/01/perl-hackers-hub/000601)を読みながら調べたことをまとめてみる。 コード これはほとんど元記事そのまま。 use strict; use warnings; use Errno qw(:POSIX); my$dir='/tmp/kotaro/1'; unless (mkdir $dir …
"Operating System Concepts"でこのあたり読んでたので、perlであれこれやってみる。 超基本 子プロセスをwaitし、exit statusを表示するという単純なことをやってみる。 my $pid = fork; die $! unless defined $pid; if ( $pid == 0 ) { sleep 1; exit 1; …
"Operating System Concepts"でRPCのセッションを読んでたのだけど、イマイチ実感つかめないのでいい機会だからJSON-RPCを触ってみようと思った次第。なお、JSON-PRCの仕様はこちら。 http://json-rpc.org/wiki/specification Zigorouさんのエントリー見つけ…
あるモジュールファイルのパスを取得したかったのだけど、最初やり方わからなくて苦労したのでメモ。 __FILE__ これを使えば、ファイル名を取得することができる File::Basename これを使うと、ディレクトリ名とファイル名を取り出すことが可能 use File::Ba…
これまでは perl -MTime::Piece -le '$t=localtime(); print $t' Fri May 20 10:50:18 2011| みたいに、UnixtimeからTime::Pieceオブジェクトつくる方法しか知らなかったけど、perldoc調べたらstrptimeで文字列パースできるじゃん! と思ったら、timezoneで…
オブジェクトをいっぱいつくると重いよーみたいなこと聞いたことあるけど、実際のところどれくらいコスト違うんだろう、と気になったので調べてみた。 引数を2倍にして返すという単純な関数でベンチマーク。 use Benchmark qw(:all); sub new { bless +{} =>…
ワンライナーで書いてみた。 perl -MDateTime -le '$hash=+{year=>2011,month=>3,day=>22,hour=>19}; $pdt=DateTime->new(%$hash, time_zone=>"America/Los_Angeles"); $tokyo=DateTime->from_epoch(epoch=>$pdt->epoch, time_zone=>"Asia/Tokyo"); print($t…