perl

Parallel::Benchmark というモジュールを書きました

プロセスを並列に立ち上げて負荷を掛けるようなベンチマークを実行することって、よくありますよね。(例 : クエリキャッシュを切ったほうがいイカ? ベンチマークしてみた - 酒日記 はてな支店)Perl で Parallel::ForkManager を使うとそういう処理も簡単に…

warn() で吐かれるログを捕まえて投げる

Perl では $SIG{__WARN__} という疑似シグナルハンドラを使って、warn() で出力されようとする内容をトラップして処理することができます。 package MyWorker; my $logger = Fluent::Logger->new; sub work { my $job = shift; local $SIG{__WARN__} = sub {…

Perl から Fluentd にログ出力 - Fluent::Logger リリース

皆さん、ログ書いてますか!?(挨拶)Fluentd meetup in Japan も開催間近、最近大変熱いイベントログ収集システム Fluentd なわけですが、Perl からログを出力する Fluent::Logger というモジュールを CPAN にリリースしたのでお知らせします。 (最初の版は …

Kamakura.pm techtalk #1 (とか転職のお知らせとか

Kamakura Perl Mongers 発足ということで、テクニカルトーク #1 にスピーカーとして参加してきました。 # というかスピーカー枠に埋められていたというかスライドはこちら→Sys::Virt で仮想マシン操作 ですが、かなり手抜きですみません。トークの後半分ぐら…

JPerl Advent Calendar 2010 casual track に記事を書きました

今年もあとわずかですね。年末恒例の JPerl Advent Calendar、casual track に記事を書きました。 MySQL と SQLite に対応した DBIx なモジュールを PostgreSQL に対応させる Tips いくつか まあ誰得な内容なんですが、自分のやってきた作業をまとめて記録し…

YAPC::Asia2010で「nginx & Perl」の発表をしてきました

YAPC::Asia2010 で、「nginx & Perl」という題名で20分の発表をさせていただきました。 発表資料はこちらにあげてあります 内容はざっくり nginx とおもしろげなモジュールの紹介、組み込み Perl の使いかたと注意事項、Plack Server に Reverse Proxy する…

YAPC::Asia2010 iPhone アプリの顛末とか

後夜祭が終わって帰宅途中、不意に 今更 #yapcasia のiPhoneアプリ顛末について飛び込みLTすればよかったなぁと思いついた。後の祭り。2010-10-16 23:09:56 via TwitBirdと思ったのですがこれはまさしく後の祭り。なのでせめて顛末を書いておきます。YAPC::A…

OAuth::LiteでOAuth対応のHTTP::Requestを作る方法 (Perlでtwitter bot書いてる人向け)

最近人気エントリーに便乗したネタが多くてすみません。実用! PerlでコマンドラインからTwitter投稿(OAuth対応) では、Net::Twitter を使って OAuth で投稿する方法が紹介されていますね。ところで、単純な twitter bot 作るのに Net::Twitter 使います?…

たった*行のコードでHTML取得&解析をしたい場合はWeb::Scraperが便利

なんか無茶振りされたので。 簡単!たった13行のコードでHTML取得&解析をするPerlスクリプト を Web::Scraper というモジュールを使って書き直すと、こんな感じになります。 use strict; use Web::Scraper; use LWP::UserAgent; use Encode; my $scraper …

Server::Starter 配下で動くサーバを Perl 以外で書く

Server::Starter の SYNOPSIS には、自分で Server::Starter 配下で実行するサーバを作る場合の例があります。 # in my_httpd use Server::Starter qw(server_ports); my $listen_sock = IO::Socket::INET->new( Proto => 'tcp', ); $listen_sock->fdopen((v…

キユーピー3分インフラクッキング #qpstudy で Plack などについて話してきました

キユーピー3分インフラクッキング -初心者にも優しいインフラ勉強会-の記念すべき第1回で、「Perl & Web Servers」というお題で発表させていただきました。 「初心者に優しい」というテーマだったので、199x 〜 200x 年の Perl と Web Server の関係について…

新しいPerlに今まで使ってたモジュールをまとめてインストールする

Perl-5.12.1 がリリースされたということで早速インストールされたかたも多いと思いますが、新しい Perl にモジュールを全部入れ直すのは面倒ですよね。ExtUtils::Installed を使うと楽ができます。 今まで使ってる perl でインストールされているモジュール…

カジュアルPerl #02 で Lightning Talk してきました

カジュアルPerl #02 - 春のPerlフレッシュマンアワー で、LT をやらせていただきました。 今回は Editor と CPAN 特集ということなので「Edit with Emacs と Perl の話」というネタです。スライドは こちら に置いてあります。 動画は Ustream の録画で (自…

DBD::Pg で非同期クエリ投げっぱなし

# チラシの裏です重いクエリをエミュレートするために Pl/PgSQL で sleep() を用意。(busy loop するので CPU 使います) http://www.issociate.de/board/post/130019/sleep_function.html create or replace function sleep (integer) returns time as ' dec…

nginx の組み込み Perl で独自の認証をかける

独自の認証機能付き HTTP ダウンローダを提供するために、nginx の組み込み Perl を使ってみました。 公式のドキュメントはこちら。EmbeddedPerlModule - Nginx Community自前の handler でリクエストをみて処理を行い、許可するなら DECLINED を返して後続…

標準出力や標準エラー出力を捕まえてテストする Test::Output / Capture::Tiny

Perl で、あるコードが標準エラー出力に吐き出した内容をテストしたい場面がありました。自分でまず思いついたのは STDERR を dup して保存しておいて、ファイルにリダイレクトして、元に戻して、というやりかた。これはこれで動くのですが面倒。こういう場…

JPerl Advent Calendar 2009 Hacker track 17日目

Casual track に引き続いて、 Hacker track の 17日目も書きました。Sub::Pipe で UNIX pipe みたいな関数適用をする

JPerl Advent Calendar 2009 14日目

JPerl Advent Calendar 2009 casual track の 14日目を書かせていただきました。 こちらからどうぞ パスワード保存のお供に Crypt::SaltedHash

Go と Perl で sha1sum(md5sum) コマンドっぽい機能を実装した場合のソースコード比較

同じ機能を両方で書いてみたらどんな感じになるかなと。 起動されたコマンド名から SHA1 or MD5 を求めるように切り替わる コマンドライン引数があれば引数のファイルについて、なければ標準入力からの入力について SHA1(MD5) hash を求めて表示 こんな仕様…

Coro と Go で並列実行数の制御

http://d.hatena.ne.jp/tokuhirom/20090710/1247196134 この Coro の例を Go でやってみます。まず特定数 (ここでは 3) の worker thread を立ち上げておいて、そこにメッセージを送って仕事させるモデル。メッセージのやりとりに Coro::Channel を使います…

mod_psgi をインストールしてみた

【注意】2009年10月16日現在の情報です。 【追記】 初出時にあった configure.ac, Makefile の問題は修正されたため、記事内容も修正しました。mod_psgi を試してみたのでメモしておきます。 Ubuntu 9.04 x86_64 Apache/2.2.11 (Ubuntu) Perl v5.10.0 built …

ある日 XML::Simple がいきなりこけて泣かないために

ちゃんと PREFERRED_PARSER を指定すること。 $XML::Simple::PREFERRED_PARSER = 'XML::Parser'; なにかこう、2005年ぐらいにみた感じの話題で恐縮なのですが。XML::SAX をインストールしたら、いきなり XML::Simple を使ってたコードが Cannot decode strin…

HTTP::Engine::MinimalCGI で upload の挙動を他の interface と合わせる

MinimalCGI だと $request->upload が CGI::Simple->upload の wrapper になっているので、他の interface みたいに HTTP::Engine::Request::Upload オブジェクトを返すようにしたかった。 まったく同じにはできなかったけど。 同じ name の input (type=fil…

Data::Model PostgreSQL 対応作業中

http://github.com/fujiwara/p5-Data-Model/tree/masterData::Model を PostgreSQL でも使いたいので対応作業をやってみたら、テストまわりでいくつか困ったことが。 テーブル名 user は PostgreSQL では予約語のため、quote しないと使えない quote すれば…

Data::YUID::Generator を 32bit マシンでも使えるように

Data::YUID::Generator が 32bit でも動くように Math::BigInt 使ってみた。ベンチマーク。new() が遅い。 # new->get_id Rate bigint original bigint 2635/s -- -95% original 51945/s 1872% -- # get_id Rate bigint original bigint 79591/s -- -70% ori…

Sub::Filter を書いたら Sub::Pipe ができていた

何を言っているのか分からねーと思うが(ry Sub::Filter http://github.com/fujiwara/Sub-Filter/tree/master これを作って、さて CPAN に up しようかと思ったら dan さんが perl - id:sfujiwaraのFilter.pmをSub::Pipeに http://blog.livedoor.jp/dankogai/…

演算子 | を overload して TT のフィルタみたいな記法を実装する

TT (Template-Toolkit) で値にフィルタを掛ける時に [% value | replace('x','y') | uri | html %]みたいに書きますが、Text::MicroTemplate だと仮に replace(), uri() という関数を用意しても こんな感じ。なんか読みにくい気がする。(まあ PHP だってそう…

Queue::Q4Pg::Lite を書いた

PostgreSQL で簡易に MQ - Mi manca qualche giovedi`? を読んで、こりゃ素晴らしいと思ったので Perl モジュール化しました。 simple message queue using PostgreSQL. http://github.com/fujiwara/perl-queue-q4pg-lite/tree/master 割と簡易な Message Qu…

DBI をバックエンドにした CouchDB みたいなの

CouchDB は面白いのですが、Erlang で書かれた daemon を動かす必要があるので、環境によっては使いにくい。 ということで、Perl + DBI のみで似たような動作をするものを作ってみました。daemon じゃなくて、Perl から直接 DB を扱うライブラリです。 Coder…

WWW::Salesforce 0.082 -> 0.090 での非互換というかなんというか

おそらくものすごく役に立つ人が少ない情報。Perl で Salesforce 使ってる人どれぐらいいるんだろうか。 独自オブジェクトを WWW::Salesforce で扱う際に、カラムの型を定義してやらないと 2byte 文字とかが入らないので、0.082 までは $WWW::Salesforce::Co…