Rhythm & Biology

Engineering, Science, et al.

perl

Perlで手軽に非同期TCPサーバ

yokohama.pmに行ってきて、またperl熱が上がってきたので、久しぶりにコード書いてみた。 AnyEvent::TCPServer AnyEvent::Socketを使って非同期サーバ書こうとすると色々面倒くさかったりするので、もっと手軽に書けるモジュールを作ってみました。こんな感…

AnyEvent::Redisでpubsubを使ってみた

Redisはオンメモリで高速に動作しつつ、定期的にディスクに書き込んでくれるKVSです。 また、pubsubの機能もサポートされており、今回はこれに焦点をあててみようと思います。もう少し詳しい内容は公式サイトのIntroductionを見てください。 http://redis.io…

SenTestingKitでNSLogを監視する

Cocoa開発でテストを行う時にはSenTestingKit.frameworkを使います。使い方も簡単でそれほど不満はないのですが、一つだけ大きな不満があります。NSLogがXcodeのデバッグコンソールに表示されないということです。NSLogだけでなく、CFShow, printf全て表示さ…

perlの実行時間計測とInline::Cのすごさ

研究として数値計算をやることが多いのですが、やはり実行時間が気になってしまうものです。 perlに限らず、スクリプト言語はやはり速度面でのネックがありますが、まずは実行時間を計測してどれぐらい遅いのかを知りたいと思いました。簡単な数値積分(Euler…

perlでhttp client

webアプリの開発をするようになって、テスト用にHTTP Clientを書くことが多くなりました。とは言え、まだまだwebの知識が無いため、モジュールの力を借りてゴリゴリ書いています。まずはGET METHOD。 use HTTP::Request::Common qw/GET/; use LWP::UserAgent…

String::Random

単純にランダム文字列が欲しいときがありますね。例えば秘密鍵の文字列を作りたいときなど。自分で乱数を使って書いてもそれほど大したコードにはならないのですが、String::Randomを使えば非常に楽に書けます。特に正規表現を使った方法は強力だと思います…

URI::Escape

webアプリを書くなら、URLエンコード処理は必須ですよね。 URI::Escapeはその処理を1行でやってくれるCPANモジュール。 $enc = uri_escape($message); # encoding $dec = uri_unescape($message); # decoding GETやらPOSTやらで送る前にエンコード、送られて…

Inline::C

perlの中でCが書ける、そう聞いただけでワクワクします。 自分の専攻だと、どうしても実行速度を気にしてしまいます。Cで書いても実行に1日かかるようなものが多いので。楽したいところはperlで、カリカリにチューニングしたいところはCで、なんて住み分けが…

Term::ReadLine

ちょっと自分用に簡単なスクリプト書いてみました。その時にTerm::ReadLineが便利だったのでメモ。 普通にユーザの入力を受け取ろうとすると、 my $input = <STDIN>; なんて書きますけど、これだとemacsのキーバインドとかが使えなくて(自分の環境では)、Ctrl+Hを連</stdin>…