FreeBSD 7.0 release cycle

7.0 開始動作:Begin code freeze for FreeBSD-7.0 release cycle.

剛好看到 I have updated my scaling results with L 這篇 (標題斷掉了) 以 5.0.33 取得的 benchmark:

依照 的慣例,出 7.0-BETA1 的時候差不多就可以拿一些機器測試看看,而暑假後應該可以見到 7.0-RELEASE。

HTTP 流量與 P2P 流量

HTTP Traffic Overtakes P2P, Courtesy of YouTube 這篇看到的資訊,不過先注意一點,這是與 P2P 相關的硬體廠商所提供的數據 (),所以數據本身僅供參考。

依照廠商的說法,從 2002 年開始,Internet 上 P2P 的流量比 HTTP 還多,但在最近一次的監測發現 HTTP 反過來超過 P2P,而且 佔了 HTTP 中的 20%,大約是整個 Internet 的 10% 流量。

Safari 的 display: table-cell

找到的 bug 似乎是講用 Javascript 動態改變 display 時的 bug,不過我遇到的是純 CSS 的 layout 問題...

丟到 IE6/Firefox2/Opera9/Safari2/Safari3 測試,發現在 2.0.4 (Mac) 及 3.0.1 (Win) 上都會先出現 #id2 再出現 #id1,但是其他的瀏覽器都是先顯示 #id1 再顯示 #id2。

這是在我的 Windows 上顯示出來的結果,Safari 2.0.4 (Mac) 的結果跟 Safari 3.0.1 (Win) 的結果一樣,再加上我手邊沒有 Mac,就不貼了:

我的問題是, 這兩個都通過 的 Browser 到底哪個才是正確的?

UpdateThe display declaration 上早就提過這個問題了。

幫 Pixnet 做 Fulltext Search

這幾天總算是比較接近完成的階段了,在問過 之後來寫一篇講一下。

大約是在年初的時候 就想要將 Pixnet Blog 的部份弄 Fulltext Search,剛好那陣子我也在弄類似的東西,survey 一些對 CJK 支援比較好的 Fulltext Search Engine,當時看起來比較好用是 維護的 。(我也寫了 HyperEstraierHyperEstraier 與 qdbm 的一些雜記 兩篇文章)

不過後來 將近三個月沒更新,加上 那陣子在忙公司整合的事情,所以這件事情在收了訂金後就一直擱著... (皇上都不急了,太監就不要在旁邊跳腳...)

除了 外,我還有訂另外幾個 Fulltext Search Engine 的 mailing list,其中 用的 也蠻值得關注的。我從 0.9.x 版的時候就在觀察,當時連 UTF8 support 都沒有,但是 有丟出 3rd party patch。不過我寫信去問 得到的回答是,文章數量很大,但是每天搜尋的人次並不多,平均不到 1 query/sec。(信件在 /var/mail/gslin,隨著硬碟爛掉沒備份到消失了,只能憑映象寫...)

再加上 以英文為主,當時沒有很仔細繼續去研究,直到後來在 的 mailing list 上看到有對岸的人說中文的部份他用的很好,仔細去研究以後發現其實是因為以前想的太複雜,加上對 不熟造成的誤解而沒有仔細去研究 的細節。

所以... 以下進入 的細節。

的每一份文件 (Document) 分成三個部份,文件主體 (Data)、 (Value)、項目 (Term)。Data 是一組字串,通常就是放文章內容,但是也可以不用放。Value 是 key+value 的集合,key 的部份是數字,而 value 的部份則是一個字串,Value 可以用很多組。(這邊的 "value" 並不是遞迴定義,而只是官方取的名字剛好就是 Value)

不過上面那兩項都是插花用的,重點在 Term。一個 Term 是一個帶有 weight 的字串,會被 索引。所以你可以對 Term 下搜尋條件, 會傳回符合的項目。

對英文來說,假設我要索引 "A apple a day keeps the doctor away." 這個句子,那麼我只要以非英文字的部份切開就可以了,換句話說,最簡單的情況會被切成:['a', 'apple', 'a', 'day', 'keeps', 'the', 'doctor', 'away'],另外內建常用字的詞庫把一些比較沒有意義的詞濾掉,於是 a、the 就會被濾掉變成:['apple', 'day', 'keeps', 'doctor', 'away'],然後再進一步對詞性做處理,於是把 keeps 轉成 keep,最後索引成:['apple', 'day', 'keep', 'doctor', 'away']

對中文來說 (以及日文、韓文),假設我要索引「端午假期16日、20日兩次夜間暫停收費」這個句子,以單字一個一個切開,切成 ['端', '午', '假', '期', '16', '日', '20', '日', '兩', '次', '夜', '間', '暫', '停', '收', '費'],或是兩個字兩個字切,切成 ['端午', '午假', '假期', '期16', '16日', '20日', '日兩', '兩次', '次夜', '夜間', '間暫', '暫停', '停收', '收費'] 似乎都不太好,前者當搜尋條件很少的時候準確度不太高 (像是以「林洋港」為條件搜尋時可能會找到討論海港旁邊樹林的文章),而後者則會收了不少沒有意義的字,像是 '期16', '日兩', '間暫',而且像是 '次夜' 其實不是這句的應該有的意思。

所以對於 CJK 的斷詞演算法來說,能夠切出符合的 Term 才是重點,於是就有很多論文在討論這些方法... 不過很多方法都是建立在詞頻表上面,換句話說,詞頻表的正確性會影響到搜尋的品質,而為了確保詞頻表的正確性,有很多時候必須讓人力去介入,這點我跟 都不太喜歡,我們偏好的是即使不去管,也保持一定的水準的方法。

所以我跟 解釋完以後,決定用一字表 + 兩字表硬切產生所有的 Term (也就是上面兩組都取來當 Term),然後看看效果如何。在跑了二十幾個小時將全站所有文章掃過一次後內部測試 (目前最新文章的 id 是 528xxxx,實際的數字當然比這個少,不過 說這是商業機密不能公開 XD), 對於搜尋出來的品質還蠻滿意的,所以就切到兩個字... (如果 不滿意的話我打算再把三個字的切詞加上去 XD)

然後用 兜個 HTTP API 出來讓前端的 Web 用,其實就很棒了 :p (我知道有 xapian-tcpsrv,不過...)

所以大概就是這樣啦, Blog 的 Fulltext Search 應該有機會在七月底前看到吧?(因為 很墮落,所以我實在不能保證六月底前出的來... XD)

Safari 3.0.1 Beta

3.0.1 Beta 出版了,結果找了半天還是不知道 Changelog 放在哪裡,測了一下,發現跟之前的版本好像沒什麼差啊?中文字的輸入還是爛的、Bookmark 也還是爛的...

所以到底改了什麼?@_@

Update:找到資訊了,這次是安全性更新:Safari Beta 3.0.1 for Windows Security Update

Update:再更新一次,這是 官方的公告:APPLE-SA-2007-06-14 Safari Beta 3.0.1 for Windows

各瀏覽器的速度

Note:這只是在 Javascript 裡跑 CSS Selector 的速度。

剛好看到 SlickSpeed CSS Selector TestSuite 這篇文章,在 Windows 上測了幾個瀏覽器,單位都是 ms (所以數字愈小愈好),測試的時候都儘量保持不動電腦的情況下跑完:

1.5.1 1.1.2dev 1.2dev 1.1b1 2.02
6 1600 3238 1302 839 6511
2.0.0.5 pre 176 4289 144 965 5411
9.20 68 1445 112 198 1122
3 beta 120 733 140 152 931

呃, 2 的速度... (想裝地雷看看有沒有進步,結果想到早上才失敗過,沒辦法測 XD)

Update:網頁上多了 的測試項目,速度也還不錯。

啟用 Safari (Windows 版) 的除錯選單

看到的,原文在 Enabling the debug menu on Safari for Windows 這篇。提到如何把 bug 滿天飛的 Safari for Windows 的除錯選單打開。

如果是 Windows XP,打開 C:\Documents and Settings\Your Username\Application Data\Apple Computer\Safari 下的 Preferences.plist (如果是 Vista,則是在 C:\Users\Your Name\AppData\Roaming\Apple Computer\Safari 下面),這是一個 XML 檔,在接近尾端的地方加上下面兩行:(</dict></plist> 的前面)

<key>IncludeDebugMenu</key>
<true/>

然後再打開 ,就可以看到 Debug 選單出現。

功能不是很多,最實用的應該是修改 User Agent 的功能,以及 Import Bookmarks 的功能吧?

Mozilla Firefox 3.0a6

因為 通過 的關係而特地去裝 Mozilla Firefox 3.0a6,果然如同 code name 一樣是 Minefield... 把系統內的 的設定砍掉後重新安裝 (包括 Document and Settings 裡的個人設定與 Program Files 裡的檔案),連裝都裝不起來... XD

把 3.0a5 裝起來後,再升級到 3.0a6 後又爛掉 XD 晚點再裝回 2.0.0.5pre 好了...