Google が先日 JavaScript のコーディングスタイルガイド Google JavaScript Style Guide (邦訳) を発表しましたが、今度はその文法に沿ってチェックをしてくれる Lint ツール Closure Linter を公開したようです。(via. 「Google JavaScript Style Guide」…
JavaScript でデータを扱っていると、JSON でシリアライズなどしたくなりますが、Safari 4.04 や FireFox 3.6.8 では、JSON.stringify() や、JSON.parse() が使えますが、iOS 3.1.2 の Mobile Safari には実装されてません。そこで、ネイティブで JSON が実…
先日、WWW::Curl をラッピングした HTTP クライアントなモジュールを書いたのですが、テスト用に HTTP サーバーを用意しないといけないと思いつつ、他の HTTP クライアントがどのようにテストをしているか調べてみたところ、WWW::Curl は、 my $url = $ENV{C…
インスタンス:m1.small 対象 OS:Ubuntu 9.04apt で入る MySQL は 5.1.31 とちょっと古いので、MySQL 公式で配布しているバイナリを利用しました。備忘録です。 前準備 ユーザー作成 UID/GID などは Ubuntu 9.04 の MySQL パッケージのトリガースクリプトが…
現在、Server::Starter + Starman で運用している環境があるのですが、週に1回ほど古いワーカーが終了しないで残り続けるという現象が起こっています。FCGI 起動の名残りで、毎時間 HUP を投げていたのですが、普段は問題なく starman プロセスが再起動して…
8月3日にサイバーエージェント・インベストメント主催でクリエイター支援のイベントの一つとして、エンジニア向けの無料カンファレンスがあるそうです。 http://www.cai.co.jp/startups2010/技術系の講演は、 えとらぼバタラ氏 ウノウ山田氏 モバツイの藤川…
EC2 は便利なのですが、プライベート IP アドレスが変更されない保証が無いので、/etc/hosts に他のインスタンスのアドレスを書いておいても、ある日変わっている可能性があります。そこで、ec2-api-tools の ec2-describe-instances でサーバーインスタンス…
DateTime が重くて遅いのは周知ですが、一応どれくらい差が出るかベンチマーク。「2010-07-01 15:10:53」みたいなフォーマットのタイムスタンプ文字列を生成したい場合です。DateTime はオブジェクトをキャッシュして使い回しても相当遅いです。POSIX はコア…
アニメ GIF だと、背景色に合わせて透過画像を作らないといけないので、canvas でアニメーションしてみました。ソースはこちら http://gist.github.com/380581loading = new LoadingIcon('rgb') したのちに、 loading.start() すると setInterval() でアニメ…
意外と知られていないのですが、vim には、まったくの初心者が、基礎的な一通りのコマンドを数日で完全に覚えることができるチュートリアルプログラムが付属しています。そのプログラムは、vimtutor といい、Ubuntu の場合、vim-runtime パッケージに含まれ…
mysql コマンドでは、psql や bash のように、Ctrl+W で単語だけ消そうと思っても行が全部消えてしまったり、Ctrl+R でコマンドヒストリ検索できなかったりと、PostgreSQL の psql コマンドに比べると大分不便でイライラするので、操作性を向上させます。mys…
HTML::Entities を使う方法と、正規表現を段階的に使う方法と、変換テーブルを用意して正規表現で置換する方法と、どれが一番速いか気になったので計測してみました。& から順番に変換していく方法が一番速かったです。ベンチマークスクリプトは以下です。 R…
下記の環境で 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…
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 のオーバーヘッドで書いたものを流用しました。
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 '' の代わりに、空文字列だと 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 になって…
時間のカラムに TIMESTAMP を使って、PostgreSQL (8.3.7) に時間を計算させるのと、INTEGER でエポックを入れておいて、perl 側で時間計算をして SELECT するのと、どちらが速いのかふと気になってベンチマークを取ってみました。10万件のランダムな日時なレ…
段階的にこう書くところを 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 による管理がお勧めです…
Catalyst は Web アプリケーションを開発するときに、フレームワークとしてとても便利です。ひとつの Web サービスを作ろうとすると、以下のような様々な処理が必要になってきます。 ユーザーに見せるWeb インターフェイス アクセス集計などの日次バッチ処理…
設定ファイルを書くときに、単純なハッシュやリストのときは良いのですが、データ構造が複雑になってきたときは、ちょっとややこしくなってきます。そんなときは、YAML::Dump() に教えてもらえます。