2008年12月23日火曜日

このブログは一時中断します

勉強のメモ用に開設している当ブログですが、最近はメモに Evernote を活用しだしたので、情報をそちらに集約するためにも、こちらのブログの更新はやめるつもりです。

ちなみに、公開している Evernote は ishikawa_takanori's public notebook: ProgrammingNotes です。Evernote はブログと違って基本、時間軸ベースではないので、体系立てて整理できるし、情報が古くなったり間違っていても気軽に修正できる(これは精神的な問題かな)。iPhone や Mac からも閲覧、更新できて便利です。

2008年12月20日土曜日

Devel::REPL をインストールした

とりあえず、Devel::REPL をインストールしたので、実行例は perl でインタラクティブなシェルを実現する perlsh - 川o・-・)<2nd life を真似て、re.pl を使ってみる。

% re.pl 
$ my @ary = qw(1 2 3 4 5)                                                                             
$ARRAY1 = [
            1,
            2,
            3,
            4,
            5
          ];
$ map { $_ * $_ } grep { $_ % 2 } @ary                                                                
$ARRAY1 = [
            1,
            9,
            25
          ];

Perl の対話環境

Ruby における irb のような REPL がないと、ちょっとした動作確認も面倒:

Ubuntu 8.10 に Perl の環境構築

  • Ubuntu 8.10, kernel 2.6.27-7-server
  • perl 5.10.0 がすでにインストール済み
  • perldoc 使おうとしたら perl-doc プログラムが必要よ、と言われる。おとなしく apt-get install perl-doc
  • cpan 起動したら色々質問されて面倒臭い。すべてデフォルト設定
  • 「新しい CPAN.pm はいかがですか?」とか呟きやがるので、install Bundle::CPAN しておいた
  • アップデートして、reload cpan したら readline が有効になった

2008年12月5日金曜日

Perl で Web フレームワーク

Perl の Web フレームワークについて調査中:

Perl 界隈では、これらがメジャーらしい。この他にも:

などがあるが、いかんせん、どれも新しすぎる。まあ、Catalyst が一番メジャーっぽい。

Catalyst

というわけで Catalyst やってみる:

  • なにはともあれ MVC
  • ORM やテンプレートエンジンは選択可能っぽい
  • 開発用サーバ実装、ホットデプロイ
  • FastCGI, Apache + mod_perl

まずはドキュメントを読んでいこう。一通り揃っているようで頼もしい限り。

蛇足:この記事は Evernote に書いたものを移行してみた。Mac クライアントからの書き出しで簡単に済まそうと思ったけど、 HTML ソースが気にいらなかったので結局、手書きで移行した。まあ、そういう目的に使う機能ではなさそうだし、これはしかたないか。

2008年10月17日金曜日

色々なソートアルゴリズム

勉強のために色々なソートアルゴリズムを実装して実行性能を比較してみた。各種アルゴリズムの解説は、オンラインだと 英語版の Wikipediaがいい感じ。

  • 最初、挿入ソートの実装がバグってて、ずいぶん悩んだ
  • クイックソートは実装が難しい、といわれるがそのとおりで、最後までバグが残っていた
  • シェルソートはトリッキーな挿入ソートだが、これだけの工夫で十分実用的になることに驚いた
  • 今回実装した中では基数ソートが一番速い。符号ビットを考慮していないので 32bit の符号なし整数にしか使えないけど、n+17 の追加メモリでここまでの速度がでるなら悪くない

2008年10月7日火曜日

A.1 ユークリッドの互除法

与えられた二数の積を最大公約数で割ると最小公倍数が得られる。

また、

昔はアルゴリズムといえば互除法そのものを意味した

へー