Ruby に汎用演算子の使い方

プログラミングRubyを読んでいるが、汎用演算子<=>についての記述がありました。
実際に使用してみて、使い方を納得!

このスクリプトを実行した結果は、

このように、汎用演算子を定義すれば、この定義に基づき
他の比較演算子(<, >, <=, >=, ==)も定義してくれるみたいだ。

subversionのapache認証ファイル(書き込み権限の注意)

以下のようにsvnapache認証ファイルを設定すると、一見 mitjrepos:/ 以下にtamaruユーザーは書き込みできるように思える。


[groups]
admin = tamaru

[/]
* = r

[mitjrepos:/]
@admin = rw

しかし、実際には、例えば"http://fedora/mitjrepos/trac-project/"には書き込みできない。
"http://fedora/mitjrepos/trac-project/"以下にtamaruが書き込みできるようにする為には、以下のように設定する必要がある。


[groups]
admin = tamaru

[/]
* = rw

[mitjrepos:/]
@admin = rw

ちょいと調べ物

データウェアハウス(DWH)

データの倉庫、要するにDBであったり、その他のツールであるわけ。各社からいくつか出てるみたい。

データマート

データウェアハウスの巨大なデータ郡から、目的にあった形で集約して、閲覧、編集しやすくしたもの。
よって、これにもDBが主に使用される。

apcoordinator

Interstage Apcoordinator ユーザーズガイド http://software.fujitsu.com/jp/manual/fm/b293c34h0/fm5020m01/01/index.html

SchemeとJavaScriptで最大公約数を求める

Scheme


(define (GCD a b)
(define (GCD-temp a b n p)
(define (smaller x y)
(if (< x y) x y))
(if (< (smaller a b) n)
p
(if (and (= (remainder a n) 0) (= (remainder b n) 0))
(GCD-temp a b (+ n 1) n)
(GCD-temp a b (+ n 1) p))))
(GCD-temp a b 1 1))

JavaScript


var gcd = function(a, b){
var gcd_temp = function(a, b, n, p){
var smaller = function(a, b){
return a < b ? a : b;
}
if(0 == a % n && 0 == b % n){
return gcd_temp(a, b, (n + 1), n);
}else{
if(n > smaller(a, b)){
return p;
}else{
return gcd_temp(a, b, (n + 1), p);
}
}
}
return gcd_temp(a, b, 1, 1);
}
JavaScript版は、末尾再帰が最適化されていないので、再帰数が大きいと計算できない。
一方Scheme版は、末尾再帰の最適化がなされており、消費する資源の量が一定の為、大きな値でも計算できる。