2007-09-18

[舊文]Programming Erlang

2007年5月出版,現在買不知道能不能算先知先覺 XD
Erlang 很 functional。如果你之前學過 Scheme,又接觸過一點 Haskell (主要是為了 lazy evaluation 的觀念和一些語法糖衣 -- 在 Scheme/LISP 沒有的糖衣),那麼 Erlang 的循序編程學起來就會很快。比方說,大家都愛的 qsort 例子:

qsort([]) -> [];
qsort([Pivot|T] ->
qsort([X || X <- T, X < Pivot])
++ [Pivot] ++
qsort([X || X <- T, X >= Pivot]).

書上說++效率不彰, well, 在我看到更有效率的做法之前,這樣已經很漂亮了。更棒的是這個例子:

perms([]) -> [];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].

讚吧... 要排列原來是這麼容易的事:

perms("123")
["123","132","213","231","312","321"]

當然,Erlang 的重點在 concurrent 編程,這個還沒讀到... 最近漫畫看太多了(汗)

2007-03-03

可惡! mod_dav

從昨天搞CakePHP搞到今天,一直死在 RewriteRule. 之前明明寫過很多 RewriteRule 了,不應該會這樣的,於是查遍了 Google, 打開了 RewriteLog ... 咦? userdir 目錄底下的 RewriteRule 都沒動作?那好,不在 .htaccess 裡設,我設全域的可以吧。咦? 全域可以,但網站底下的 .htaccess 仍然沒動作?

搞了整整三小時,還以為是 Gentoo 為了加強安全性,把 .htaccess 裡的 RewriteRule 關掉了呢 (不太可能,這樣 Gallery 和一些套件會哭出來的) 最後發現是 mod_dav 和 mod_dav_fs 裡有一行.... AllowOverride None 就這樣把整個 virtual host 和全域設定通通都蓋掉了。

現在我不用家裡的機器當 SVN Server, 關掉 DAV, 一切恢復正常。唉... 怎麼會這樣...