流れるようなインターフェイスとActiveRecord

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FluentInterface
ActiveRecordを利用するようになって思ったのが、ファウラーが上記で
述べている流れるようなインターフェイスを実現するのに適したツールだと
いうこと。複雑なSQLを書かなくて言い分、開発者が本来集中すべき箇所に
集中できると感じた。

Ruby-GetTextで500エラー

rails-2.1.0だと
http://www.yotabanana.com/hiki/ja/ruby-gettext.html?ruby-gettext
で紹介している通りに、gettextを導入すると500エラーがでる。
エラーの内容は「undefined method `file_exists?' 」で
どうやらfile_existsが見つからないみたい。
解決策は以下
config/initializers/gettext.rbを以下のように記述。

require 'gettext/rails'
module ActionView
  class Base
    delegate :file_exists?, :to => :finder unless respond_to?(:file_exists?)
  end
end

gettextをrails 2.1.0に対応させる方法
参考→http://zargony.com/2008/02/12/edge-rails-and-gettext-undefined-method-file_exists-nomethoderror

Erlangが注目される理由

CPUのマルチコア化が進む昨今ではあるが、実際にはOSがサポートしているマルチスレッド環境ではマルチコアの特性が生かしきれていないのが事実である。Erlangの並列処理ではCPUのコア数がN個になると、実行速度もN倍になると言われており、マルチコアの特性を大いに引き出せるからです。

Erlangの特徴〜並列言語

Erlangは並列指向プログラミング言語(COPL)としての特徴も備える。
CやJavaC++では、言語ではなく、OSがスレッドモデルを提供していますが、Erlangの場合は言語が独自にマルチスレッドのための仕組みを提供します。
CやJavaC++では変数に値を代入することで、つまりは、メモリを共有することでスレッド間の情報共有を行っていますが、Erlangの場合は全てのスレッドが独立したメモリを持ち、メモリを共有することはありません。
つまり、全てのスレッドは他のスレッドから完全に独立することができ安全です。
因みにErlangでは完全な独立性を備えたスレッドのことをプロセスと呼びます。
プロセス間の情報のやり取りには、メッセージという仕組みを用います。
メモリを共有する代わりにメッセージをやり取りすることで、プロセス間での情報共有を安全に実現しているのです。

Erlangの特徴〜関数型言語

数学的な表現とよく似た言語仕様を備え、全ての処理を関数呼び出しにより実現する。
Erlangの場合、変数は変更可能なものではない、つまり、遷移する状態という概念も無いということ。
この事実がマルチスレッド環境下でのErlangの並列処理に重要な恩恵をもたらすとのこと。

並列処理を書くには良さげだけど、業務的な処理、特にワークフローには不向きな言語なんでしょうね。
まぁ、そう言った高層の処理ではなく、もっと低層の処理向けの言語かな?

Erlangの歴史

1987年にスウェーデンストックホルムにあるエリクソン(大手通信機器メーカ)で開発される。
同社の電気通信システムの開発に用いられ、1998年にオープンソースとして公開される。
当初はPrologというプログラミング言語に並列処理機能を加えたものとして試作される。
その後、エリクソン内部で構内自動交換機(PABX)開発プロジェクトで試用されるなどして、進化を続ける。
そして1990年頃からErlang独自の言語使用やライブラリ、実行環境を持つようになる。