perl
そこそこ大きい Web アプリを作ってると非エンジニアに管理画面でテンプレート編集させたりするケースもあると思いますが、文法チェックをしないと、テンプレートがレンダリングできないがためにシステムがコケるとかいう悲しい事態が起こったりするので、チ…
多分こんな感じで行けるんじゃないでしょうか。FormValidator::Lite::Upload を Mojo::Message::Request に対応して、 --- perl5/lib/perl5/FormValidator/Lite/Upload.pm 2012-06-06 00:40:55.000000000 +0900 +++ lib/FormValidator/Lite/Upload.pm 2012-0…
最近ようやく Mojolicious に手を出し始めました。プロダクション環境に導入するかは、まだ未定ですが、ソースコードを読みながら試用しています。Catalyst の原作者が DRY でなく DIY で作っているとのこと。Moose 依存などはなく、コアモジュールにしか依…
プロジェクト用のモジュールを extlib とか専用のディレクトリを掘っていると、それを @INC に突っ込まなくてはいけないので、ブートストラップスクリプトで調整したり、開発用に .bashrc や .profile に書くと思いますが、モジュールがインストールされるデ…
本日、TVTalk という Web サービスをリリースしました。Twitter 上で、テレビ局のハッシュタグが付いているツイートを拾って、放送中の番組情報と紐付けるという、アグリゲーターサービスです。リアルタイムにタイムラインを追うにも、放送済み番組の内容を…
最近の Linux ディストリビューションの perl は 5.10 以上になってきた感じなので、最近は state など新しい機能を使うようになってきました。そこでちょっと気になったので state のパフォーマンスを計測してみました。ベンチマークコードは以下。動作が全…
普段、wanrning を見つけるたびにせっせと defined 挟んだりして対応しているのですが、View の中で呼ばれてる箇所など、うっかり気付かないで数日過ぎてしまうと、あとで該当箇所を追うのが若干手間になってしまったりします。そこで、 use warnings FATAL …
昨日書いたエントリ、Test::mysqld を別ウィンドウで立ち上げたら開発時の prove が快適過ぎる件ですが、prove とか make test がコケたりしたときに、実際に DB の中身がどうなってるか見れた方がデバッグが捗りますよね。加えて、どうせなら使い慣れた mys…
[追記] reverse() を使う方法の方が速くて簡潔でお勧めです! id:tomi-ru++あまり必要になるケースは無いと思いますが Tips です。 use strict; use warnings; use Test::More; my %a = ( foo => 1, bar => 2, baz => 3, ); my %b; @b{ values %a } = keys %…
id:xaicron 氏が紹介なされていました make test で Test::mysqld を永続化させる方法 を早速導入していたのですが、make test は速くなって便利なのですが、prove で 1 つずつテストをするときは、相変わらず mysqld を毎回、起動・終了するので時間がかか…
WWW::Curl は速いですがドキュメントが少ないのが玉に瑕です。perldoc に setopt() や getinfo() で指定できるオプション一覧が載っていないです。実は PHP のマニュアルに良い感じで載っています。setopt() に指定できるオプション一覧 getinfo() に指定で…
今年も Perl の国際的カンファレンス YAPC::Asia に行ってきました。 YAPC に行くと 毎年感じることですが、YAPC に行って色々なトークセッションを回ると、他(社|者)の実際の運用や開発の現場レベルでのノウハウを聴くことができるので、この二日間で自分ひ…
今年の YAPC::Asia もタイムテーブルはパンフレットをあてにしていたのですが、載っていなかったので慌てて用意しました。公式サイトに iCal が用意されているので、これを Google Calendar にインポートします。左下の「他のカレンダー」の「追加▼」のプル…
先日、WWW::Curl をラッピングした HTTP クライアントなモジュールを書いたのですが、テスト用に HTTP サーバーを用意しないといけないと思いつつ、他の HTTP クライアントがどのようにテストをしているか調べてみたところ、WWW::Curl は、 my $url = $ENV{C…
現在、Server::Starter + Starman で運用している環境があるのですが、週に1回ほど古いワーカーが終了しないで残り続けるという現象が起こっています。FCGI 起動の名残りで、毎時間 HUP を投げていたのですが、普段は問題なく starman プロセスが再起動して…
DateTime が重くて遅いのは周知ですが、一応どれくらい差が出るかベンチマーク。「2010-07-01 15:10:53」みたいなフォーマットのタイムスタンプ文字列を生成したい場合です。DateTime はオブジェクトをキャッシュして使い回しても相当遅いです。POSIX はコア…
HTML::Entities を使う方法と、正規表現を段階的に使う方法と、変換テーブルを用意して正規表現で置換する方法と、どれが一番速いか気になったので計測してみました。& から順番に変換していく方法が一番速かったです。ベンチマークスクリプトは以下です。 R…
Key Value Store の Tokyo Cabinet のデータベースサーバーである、Tokyo Tyrant のインスタンス起動管理サーバーの ttserver をテスト用に一時的に起動できる Test::ttserver をリリースしました。http://search.cpan.org/~craftwork/Test-ttserver-0.001/l…
依存モジュールの指定漏れを防ぐ方法 - 名称未設定 - subtechMakefile.PL に書き忘れている依存モジュールを自動検出してくれるテストモジュール Test::Dependencies ですが、Module::Install と併用していると、テストがコケます。これは、Module::Install …
Yuval Kogman 氏が Try::Tiny という新しい例外捕捉モジュールをリリースしたようなので、ベンチマークを取ってみました。ベンチマークコードは、Error.pm のオーバーヘッドで書いたものを流用しました。
Moose は has でアクセサ定義できるので便利なのですが、アクセサは要はサブルーチンコールなので、パフォーマンス気にして作っているサービスではオーバーヘッドが気になるなぁと思い、ちょっとベンチ取ってみました。ベンチマーク対象は、Moose で作成した…
最近、空文字列のチェックの際に、面倒臭くて $_ eq '' の代わりに、空文字列だと length が偽を返すことを利用して、自分しか見ないようなソースでは以下のように書くことが多いのですが、 return unless defined and length; パフォーマンス的には、$_ ne …
Catalyst はデフォルトでリクエスト毎の処理時間をログ出力してくれますが、setup() 時の処理時間は表示してくれません。チューニングの目安として見たいので実装してみました。Upgrading to Catalyst 5.80 で紹介されている、setup の hook point を使いま…
READ IN ENGLISHCPAN モジュールをインストールするときに、ダウンロード速度が気になったので、ミラーサイトから一番近いサイトをピックアップするスクリプトを書いてみました。CPAN から、MIRRORED.BY を取ってきて、dst_http に指定されているホスト全て…
私が実践して、とても効果が上がった学習方法を紹介します。 どんなプログラミング言語でも関係なく通用するやり方だと思います。 この学習方法に切り替えてからの 1 年の学習量は、それ以前の 4 年分に匹敵すると感じています。以下にその方法を紹介します。
READ IN ENGLISHシリーズ化できるか分かりませんが、Google で検索しても、あまり情報が無かった CPAN モジュールの使い方を紹介していきたいと思います。先ほど、アップデートされていた Text::SimpleTable を紹介したいと思います。0.05 から 1.0 になって…
段階的にこう書くところを if ( exists $hashref->{'key'} ) { my $value = $hashref->{'key'}; delete $hashref->{'key'}; do something... } key の削除を先に行っても問題なければ、まとめてこう書くことも出来ます。 if ( my $value = delete $hashref->…
最近 Nas を導入したので、Linux から重要なファイルを自動でバックアップするスクリプトをサクっと Perl で書いてみました。単にシェルスクリプトでエラー処理書くのが面倒臭かっただけですが。 コアモジュールしか使ってません、Perl 5.005 とか古いバージ…
昨今のディストリビューションに入ってる vim はほとんどデフォルトでカラー表示に対応しています。せっかくなので、TT のテンプレートファイルもカラー表示対応にしましょう。TT2 syntax : Syntax Highlight for Template-Toolkit 2.x 上記ページからシンタ…
JPA セミナーの時に jshery 氏も勧めていましたし、近頃 Geek の話題で目立つようになってきた、Catalyst を mod_perl でなく、外部 FCGI として走らせる設定方法を紹介します。Catalyst プロセスの起動管理は DJB 氏の daemontools による管理がお勧めです…