レイトレによる言語のベンチマーク
via Tumblr for R&D of lucille renderer.
レイトレーシングによる、各種言語のコード量と速度の比較。
Ray tracer language comparison
非常に興味深いですね。OCaml速いですね(参照)。
OoOでF#に期待がかかっていたのもうなずける。
Global Illuminati
via Tumblr for R&D of lucille renderer.
レイトレーシングによる、各種言語のコード量と速度の比較。
Ray tracer language comparison
非常に興味深いですね。OCaml速いですね(参照)。
OoOでF#に期待がかかっていたのもうなずける。
Global Illuminati
MUDA を使う環境を構築すべく、coLinuxをインストールすることにしました。 その過程で役に立ったサイトのメモです。 またいつかcolinuxの環境構築をするときのために。
[colinux] coLinuxのHDD入れ替え 1GBのイメージを使っていたので、10GBに換装。 Step9は
mount -w -n -o remount /dev/cobd0
/
だと思われます。
dump
/restore
コマンドが無かったので、入れます。/initrd/bi n/vi
の存在を
教えてもらって、うまくいきそうだったのだけれど、debian-etc/initrd
が無くなってたので、結局ed
と格闘。しかしラインエディタを使うのは16,7年ぶりだ。実感としてそうだなと思うのだけれど、どうしてそうなんだろうか。 素朴な疑問が残った。
21世紀は都市の時代。都市を地方化するのは時代の逆行にしか思えない。
インターネットなどの情報通信技術が発展し、 地理的な制約は徐々に少なくなっていくにもかかわらず、 都市人口率はむしろ増加している。
Figure 1 Percentage
通信技術のもつ、人間の面白いもの・楽しいものに集まろうとする性向を 助長する要素のほうが、 コミュニケーションを地理的な制約から解放する要素よりも 勝っているという事なんだろうか。 楽しいものや便利なものが飽和してくると、 逆に都市人口率が下がったりするのかな。
まだ完全ではないですが、いくつかの点でOpenID認証の挙動を改善しました。
ある程度まとまった時点で、Open ID Authentica
不具合などに遭遇いたしましたら、ご連絡いただければ プラグインの改善に役立てさせていただきます。 よろしくお願いいたします。
なんだかA要素の直後の空白が無くなってしまいますね。
Windows用Safariのバグかと思ったら、Macでも同じ挙動でした。 とりあえず、 以下のように無理やりA要素の後にテキストノードを詰め込むことで対処。
1 var spacer = document.createTextNode(' '); 2 element.parentNode .insertBefo re(spacer, element.nextSiblin g);
ちょっと必要になったので、
タグや空白を無視して、ある文字列の中から、
指定した文字列がマッチする範囲を計算するJavaScript
1 /* (C) Genki Takiuchi. New BSD License */ 2 var findSelection = function(html, sel){ 3 var chars = html.split(''), sels = sel.split(''); 4 var start = 0, end = 0, step = 0, tag = false; 5 var cur = function(){return chars[end]}; 6 var parse = function(){ 7 switch(cur()){ 8 case '>': if(tag) tag = false; return go(); 9 case '<': if(!tag) tag = true; return go(); 10 case '\n': return go(); 11 case ' ': return go(); 12 case '\t': return go(); 13 default: return tag ? in_tag() : out_tag(); 14 } 15 }; 16 var go = function(){return(chars[end++] ? parse:reject)()}; 17 var in_tag = function(){return go()}; 18 var out_tag = function(){ 19 return(cur() == go_sel() ? match:not_match )() 20 }; 21 var not_match = function(){step = 0; return go()}; 22 var match = function(){ 23 if(step == 1) start = end; 24 return(sels[step] ? go:accept)() 25 }; 26 var accept = function(){return [start, end + 1]} 27 var reject = function(){return [0, 0]}; 28 var go_sel = function(){ 29 var s = sels[step++]; 30 return white_spac e(s) ? go_sel() : s 31 }; 32 var white_spac e = function(c){ 33 return c && c.match(/[\s\n]/) 34 }; 35 return parse(); 36 };
使い方は、こんな感じ。
1 >> findSelection('hello, <b>world</b>!', 'llo, world') 2 [2, 15]
選択範囲を取得して、選択している領域をRangeを求めるために作りました。
sel
に指定した文字列にマッチする箇所が複数ある場合は、
最初にマッチした場所のRangeを返します。
CG系の話題を書きやすいように、数式を書けるようにしました。 これでレンダリング方程式も想いのままです。
以下のように、latex形式で数式を記述します。
1 [math] 2 L_o(x,\vec{w}) = L_e(x, \vec{w}) + 3 \int_\Omega f_r(x,\vec{w}',\vec{w}) 4 L_i(x,\vec{w}')(\vec{w}'\cdot\vec{n})d\vec{w}' 5 [/math]
インライン形式で のように記述することも出来ます。 その場合は、
1 [math]y=\frac{d}{dx}f(x)[/math]
のように、改行せずに記述します。
autotestは、Railsアプリケーションのテストを自動化する、 非常に便利なユーティリティです。 昔はlib/以下のファイルの自動テストには対応していなかったのですが、 いつの間にか対応していたみたいです。
lib/foo.rb
ファイルをテストする場合、
test/unit/
にUnitテストとしてlib/foo.rb
のテストを書けば良いようです。
そうしておくと、いずれか一方のファイルを編集したタイミングで、
自動的にテストを走らせてくれるようになります。
Webサービスを作っているものにとっては、サーバの監視は重要なことです。 サーバが落ちていない事を絶えず確認していたいパラノイアのための XMPPによるサーバ監視方法を紹介します。
やることは単純で、サーバの動作を監視するデーモンスクリプトの中から、 問題が起こっていない場合に、XMPP経由でJabberクライアントに 「no problem」と、タイムスタンプつきで通知するだけです。
サーバ監視というと、たいていの場合、何か問題が起こった事を通知するように することが多いです。しかし、この方法では、何も起こっていないことを 定期的に通知させることで、サーバ監視プログラム自体に対する疑念 をはらう事が出来ます。
60秒に一回Gtalkにno problemであることを通知させるようにしています。 Twitterのお陰で、1分間に一度程度の通知はさほど気にならなくなったのと、 心配になったらLogを見ればどの時間まで「no problem」であるかを 確認できるので、便利です。