Subversion 1.5 的 merge

Subversion 1.5 最重要的改善就是 merge track,實際用過以後可以發現仍然不如 Git 方便,但比起以前得自己計算 revision 改善許多。

不過也因為 merge 本身帶有意義 (會另外儲存 merge info),在「用 Subversion 的 Merge 來 Undo」這篇所介紹的方法就不適合了,因為 svn merge -r 1234:1233 . . 會帶有 merge info。

現在比較好的方法是:svn diff -r 1234:1233 . | patch -p0,不會產生 merge info。

PHP 4.4.9 - PHP4 最後一個版本

2008/08/07 出的 PHP 4.4.9 released! 會是 PHP 4 最後一個版本,不再有任何更新 (即使有安全漏洞,也不會有安全性更新)。這次的 PHP 4 ChangeLog 也很短,除了把 PCRE 版本升級到 7.7 以外,其他都是 bug 的修正。

官方目前唯一維護的版本是 PHP 5,更細的說是 5.2.x 版,目前大多數的 PHP 軟體 (還活著的 Open Source Project) 應該都可以在上面跑。

另外一個重點是 PHP 5.3 在 2008/08/01 的時候出了第一個 alpha 版,這個版本比 PHP 5.2 多了 namespace、lambda function,另外有 phar (應該是藉由 namespace 的幫忙而實做出來)。除了這些功能外,cyclic garbage collection 也是一項很重要的功能:以前如果遇到 cyclic reference 得自己用 unset() 確保 PHP 能夠回收,在 PHP 5.3 就不需要自己用 unset() 打斷 cyclic...

目前官方是希望今年十月釋出 PHP 5.3 正式版,應該會有 Framework 利用這些特性重新改寫...

利用 CSS 產生的隱私問題

Update:這個隱私問題在 2010 年就有被修正,請參考「關於 CSS 中 :visited 的隱私問題」的說明。

雖然很早前就知道 CSS link 可以這樣做,不過實做起來就真的感覺到很邪惡了,既然被 full disclosure,這陣子應該會引起更熱烈的討論:Guessing gender from browser history

首先請先參考 pesty 這篇「網路廣告商怎麼知道你是誰? 從 ClickStream 來判斷用戶資料」,裡面有提到利用 cookie 資訊去猜測目前這個 user 的性別。首先先知道這個使用者逛過哪些網站,然後再用統計方法算出來。

以往廣告商要判斷使用者逛過哪些網站,僅限於自己旗下的網站。舉例來說,很多網站有放 DoubleClick 的廣告,那麼 DoubleClick 就可以利用 IP 資訊、Cookie 資訊、User-Agent 之類的資訊來判斷哪些 request 是同一個使用者,所以 DoubleClick 就可以判斷出這個使用者有上過他旗下哪些網站。

但利用 CSS 隱私漏洞,如果想要知道某個使用者是不是上過某個特定 URL 是可行的。簡單的解釋是:插入一個 link,然後對這個 link 做 CSS 效果,對於瀏覽過的 link (也就是 a:visited) 使他顯示的顏色不同,然後再用 Javascript 去讀顏色,就可以得知使用者是否有上過這個網站。很邪惡,方法也已經有一陣子了 (像是 SocialHistory.js 這種工具),不過大家一直想不出好的解法,於是就一直爛下去...

這個 CSS hack 加上統計分析,可以分析出年齡範圍、性別、興趣,非常邪惡 -_-