2009-01-01から1年間の記事一覧

EC2 で s3fs を動かす方法

下記の環境で s3fs を動かそうとしたのですが、すんなり行かず、ググっても参考情報が少なかったので作業ログを残します。 ami-ccf615a5 alestic/ubuntu-9.04-jaunty-base-20091011.manifest.xml Linux 2.6.21.7-2.fc8xen-ec2-v1.0 #2 SMP Tue Sep 1 10:04:2…

Tokyo Tyrant 用テストモジュール Test::ttserver リリース

Key Value Store の Tokyo Cabinet のデータベースサーバーである、Tokyo Tyrant のインスタンス起動管理サーバーの ttserver をテスト用に一時的に起動できる Test::ttserver をリリースしました。http://search.cpan.org/~craftwork/Test-ttserver-0.001/l…

Test::Dependencies と Module::Install でテストが通らない

依存モジュールの指定漏れを防ぐ方法 - 名称未設定 - subtechMakefile.PL に書き忘れている依存モジュールを自動検出してくれるテストモジュール Test::Dependencies ですが、Module::Install と併用していると、テストがコケます。これは、Module::Install …

例外捕捉モジュール Try::Tiny のベンチマーク

Yuval Kogman 氏が Try::Tiny という新しい例外捕捉モジュールをリリースしたようなので、ベンチマークを取ってみました。ベンチマークコードは、Error.pm のオーバーヘッドで書いたものを流用しました。

vim に ClearSilver の Syntax Highlight 定義を追加する方法

ClearSilver を使っている方はあまりいらっしゃらないと思いますがメモ。 以下をターミナルにコピペでセットアップ完了です。via. http://www.vim.org/scripts/script.php?script_id=1100 mkdir ~/.vim cd ~/.vim wget -nv -O - 'http://www.vim.org/scripts…

馬鹿にできないアクセサのオーバーヘッド

Moose は has でアクセサ定義できるので便利なのですが、アクセサは要はサブルーチンコールなので、パフォーマンス気にして作っているサービスではオーバーヘッドが気になるなぁと思い、ちょっとベンチ取ってみました。ベンチマーク対象は、Moose で作成した…

空文字列比較は eq/ne と length のどっちが速いか

最近、空文字列のチェックの際に、面倒臭くて $_ eq '' の代わりに、空文字列だと length が偽を返すことを利用して、自分しか見ないようなソースでは以下のように書くことが多いのですが、 return unless defined and length; パフォーマンス的には、$_ ne …

Catalyst で setup にかかった時間を表示する

Catalyst はデフォルトでリクエスト毎の処理時間をログ出力してくれますが、setup() 時の処理時間は表示してくれません。チューニングの目安として見たいので実装してみました。Upgrading to Catalyst 5.80 で紹介されている、setup の hook point を使いま…

一番近い CPAN ミラーを検出するスクリプトを書いた

READ IN ENGLISHCPAN モジュールをインストールするときに、ダウンロード速度が気になったので、ミラーサイトから一番近いサイトをピックアップするスクリプトを書いてみました。CPAN から、MIRRORED.BY を取ってきて、dst_http に指定されているホスト全て…

プロ・アマ・プログラミング言語を問わずに今までの4倍のスピードで学習する方法

私が実践して、とても効果が上がった学習方法を紹介します。 どんなプログラミング言語でも関係なく通用するやり方だと思います。 この学習方法に切り替えてからの 1 年の学習量は、それ以前の 4 年分に匹敵すると感じています。以下にその方法を紹介します。

CPAN Module How To - Text::SimpleTable

READ IN ENGLISHシリーズ化できるか分かりませんが、Google で検索しても、あまり情報が無かった CPAN モジュールの使い方を紹介していきたいと思います。先ほど、アップデートされていた Text::SimpleTable を紹介したいと思います。0.05 から 1.0 になって…

スピード対決 TIMESTAMP vs INTEGER

時間のカラムに TIMESTAMP を使って、PostgreSQL (8.3.7) に時間を計算させるのと、INTEGER でエポックを入れておいて、perl 側で時間計算をして SELECT するのと、どちらが速いのかふと気になってベンチマークを取ってみました。10万件のランダムな日時なレ…

if と exists と my と delete を 1 行で表現する

段階的にこう書くところを if ( exists $hashref->{'key'} ) { my $value = $hashref->{'key'}; delete $hashref->{'key'}; do something... } key の削除を先に行っても問題なければ、まとめてこう書くことも出来ます。 if ( my $value = delete $hashref->…

Perl スクリプト - 自動バックアップ

最近 Nas を導入したので、Linux から重要なファイルを自動でバックアップするスクリプトをサクっと Perl で書いてみました。単にシェルスクリプトでエラー処理書くのが面倒臭かっただけですが。 コアモジュールしか使ってません、Perl 5.005 とか古いバージ…

Template-Toolkit のテンプレートファイルを vim で色付きにする

昨今のディストリビューションに入ってる vim はほとんどデフォルトでカラー表示に対応しています。せっかくなので、TT のテンプレートファイルもカラー表示対応にしましょう。TT2 syntax : Syntax Highlight for Template-Toolkit 2.x 上記ページからシンタ…

Catalyst を daemontools で監視しつつ lighttpd の外部 FastCGI で走らせる方法とそのメリット

JPA セミナーの時に jshery 氏も勧めていましたし、近頃 Geek の話題で目立つようになってきた、Catalyst を mod_perl でなく、外部 FCGI として走らせる設定方法を紹介します。Catalyst プロセスの起動管理は DJB 氏の daemontools による管理がお勧めです…

Catalyst ベースのアプリケーション設計(構想)

Catalyst は Web アプリケーションを開発するときに、フレームワークとしてとても便利です。ひとつの Web サービスを作ろうとすると、以下のような様々な処理が必要になってきます。 ユーザーに見せるWeb インターフェイス アクセス集計などの日次バッチ処理…

YAML ではどう書くか perl に教えてもらう方法

設定ファイルを書くときに、単純なハッシュやリストのときは良いのですが、データ構造が複雑になってきたときは、ちょっとややこしくなってきます。そんなときは、YAML::Dump() に教えてもらえます。

三項演算子は左辺値にも使える

$var = $bool ? $foo : $bar; という書き方はよく見ますが、 if ( $bool ) { $foo = $value; } else { $bar = $value; } 実は、こういう書き方も、 $bool ? $foo : $bar = $value; こう書くこともできます。可読性とのトレードオフを考慮して使用してくださ…

レンタルサーバーでインストールされているモジュール一覧を見る方法

perl 5.005 から使えます。 適当な名前でアップしてブラウザからアクセスしてください。 #!/usr/local/bin/perl use ExtUtils::Installed; my $o = ExtUtils::Installed->new; print "Content-Type: text/plain", "\x0D\x0A" x 2; printf "%s %s\n", $_, $o-…

リファレンスの値を別の変数からいじりたい時の注意点

例えば、このようなコードをすっきる見せるために、 $self->{'foo'}->{'bar'} = 123; $self->{'foo'}->{'baz'} = 456; . . .

POD の head1 によく使われる項目名ランキング

POD を書いている際に、参考にしようと、ふと思い立って集計してみました。 集計した環境は、Catalyst, Plagger など依存モジュールが多いモジュールが入った環境です。

配列の値をキーにハッシュを生成するワンライナー

my @array = ('foo', 'bar', 'baz'); と、いう配列があって、それをキーに foo => 1, bar => 1, baz => 1, と、いうハッシュを生成したいとき my %hash; for my $key (@array) { $hash{$key} = 1; } と、書くのが一般的ですが、下記でも書けます。 my %hash …

JPA セミナー #1 参加報告まとめ

昨日、4/21 秋葉原 UDX で JPA の第一回セミナーがあったので参加してきました。同時翻訳の受信機が先着40名だったので、心配だったのですが、翻訳したスライドが用意されていたので大分助かりました。 スライドの翻訳だけではなく、プリントアウトされたも…

JPA セミナー #1 (代表理事挨拶)

活動内容 トップダウンで攻めていく Perl 文化のマーケティング、ブランディング 対企業 技術力の底上げ 散らばっているリソースの統合(情報の管理) セミナーや研修など、2009年現在、最先端の人たちがどうやって Perl を使っているかなど 対企業で新人研…

JPA セミナー #1 (Session 1 Better Perl Practices 最新 Perl 開発手法のススメ)

自己紹介 Jay Shirley IRC に常駐 irc.perl.org (jshirley) http://search.cpan.org/~jshirley/ http://github.com/jshirley/ ベストではなくベターを目指す どれだけやっても不満は残るもの 最初からうまくやらなくてもいい徐々に上を目指そう 失敗したらよ…

JPA セミナー #1 (Session 2 Catalyst 改)

1. Plugin プラグインの使用を控える 間違った使用方法、実装方法で定義されていることが多い プラグインの使いどころ リクエストディスパッチのロジックを監視、変更する場合のみ リクエストパラメーターの変換、Catalyst のメソッド実行チェーンの変更を含…

colordiff で diff や svn diff を見やすくする方法

vim などと同様に、diff も色分けされていると見易いですよね。 colordiff を使うと、普段の diff や svn diff で色分けできます。

CPAN モジュールをバージョン指定でインストールする方法

ブラウザで search.cpan.org から tar ball を持ってこなくても、cpan シェルでバージョンを指定してインストールできます。 cpan[1]> m Test::Declare Module id = Test::Declare CPAN_USERID NEKOKAK (Atsushi Kobayashi <nekokak cpan org>) CPAN_VERSION 0.04 CPAN_FILE N/</nekokak>…

CPANモジュールのインストール時に自動でデフォルト選択をする方法

何通りかあります。 yes コマンド yes '' | cpan -i Some::Module yes に空文字列を引数に与えないと、'y' をパイプに送ってしまい、デフォルト値選択ではなく、必ず y を選択してしまうので注意! 環境変数 PERL_AUTOINSTALL PERL_AUTOINSTALL='--defaultde…