碎碎唸…

最近雜事比較多,很久沒寫 blog 了,來碎碎唸一下這幾天看到很丟臉的新聞。

  • 首先呢,7/3 的新聞說,高雄市有個議員藍星木,在 6/28 為了關說選民被酒測和警員發生推擠,被警員以妨害公務銬上手銬帶回警局。
  • 接下來事件逐漸發酵。議長莊啟旺抗議議員被當犯人對待,要求警局兩天內查明並表明懲處方式。
  • 為了平息風波,市長陳菊代表市政府向議員道歉,警方記員警一小過調職作為懲處。
  • 議會表明這樣的處理方式不能接受,所以後來市警局改將該名員警記兩小過處分。市議會後來表示這樣可以接受,還發表聲明指出「對於市警局9日做出的懲處結果,議會沒有任何意見,議會和議員個人也絕對不會介入警察局對員警的懲處,一切尊重警察局的決定。」
  • 結果 8/29 的新聞說,有四名警員因為縱放妨礙公務的議員,涉及縱放人犯,所以被檢察官起訴。被起訴的四人中也包括之前被記兩小過的主角。

真是丟臉到極點的新聞。

我說的丟臉並不是指藍星木關說酒測的事情。這種現象普遍存在,他跟選民自己不要臉就算了,能不能影響酒測的結果就看他的本事和警員的骨氣。這也沒什麼好說的。

丟臉的是:

  1. 明知關說酒測理虧還敢大肆張揚,被警員以妨礙公務法辦居然還敢回市議會烙人抗議
  2. 議長不明是非要求不當的懲處,甚至要求市警局加重處罰以後還可以爭眼說瞎話:「議會和議員個人也絕對不會介入警察局對員警的懲處,一切尊重警察局的決定」云云。
  3. 市長一樣是非不分腰桿不直,沒有原則的向市議會低頭,一點肩膀也沒有

不過似乎有些高雄市民還是很關心這件事情,表達了一些他們的聲音,看來有骨氣的市民還是不少的。

國民黨籍的議員和議長,民進黨籍的市長,大家一起是非不分一家親。我真的很好奇,當初把他們一票一票選出來的選民,現在心裡在想什麼?還是他們根本不關心這些事情?

HTML Purifier – 另類的 PHP input validation

對 web programming 的人來說,XSS 很早以前就不是新聞,而且不管是為了 XSS、SQL injection 或是其他理由,任何 user input 都不應該被信任,在使用以前就應該先被 validate 或是 filter 過。

但是問題來了,一般的 filter 都很好解,有許多現成的工具,甚至大不了就用駝鳥法把 html 的特殊字元 escape 掉。但是對於需要依賴使用者輸入 html 的東西怎麼辦?最明顯的例子就是 blog site。Blog 站台總不能不讓使用者輸入 HTML 吧?甚至插插圖、秀秀跑馬燈、放個 YouTube video 之類的,應該也都是稀鬆平常的事情。但是要達到這種效果,該怎麼做呢?

比較明顯的有幾個解法:

  1. 鴕鳥法,XSS 管他去死。(別懷疑,真的有人這樣子) 網站安全度不重要,先讓使用者爽再說。
  2. 使用不同 domain 來避免 XSS 問題。例如 Blogger 的操作是在 blogger.com,但是 blog 是出現在 blogspot.com。
  3. 使用自己的 html 過濾器,重新濾一次使用者輸入的 html。安全又可以不用換 domain,缺點就是使用者一定會有些想用的 tag 被濾掉而感覺到不便。

對於像是 GYM 規模的公司來說,一定會有自己的 html input filter 工具。可是對於外界的 user 來講就不那麼方便了。現成 open source 領域中,大部分的 filter 大多未經考驗,或是功能太弱。

不過情況似乎有了些改變。現在 Edward Yang 寫了一套 HTML purifier,使用 LGPL license 釋出。看起來彈性空間很大,filter 的效果也很好。有興趣的可以看 HTML purifier 對目前常見的 XSS 過濾效果,或是它的 docs 了解一些 tune 的方式。唯一的缺點是 – 目前只有 PHP 版,而且想當然耳,要 parse 清楚這麼複雜的 HTML 當然程式碼又大又肥 …。不過即使如此,這大概還是 Open Source 界堪用最好的 HTML filter 了吧。

看完 HTML Purifier,我的感想跟 Joseph Halter 一樣….

You save my day by allowing me not to write another damned HTML parser.

Conference on Scalability 的影片

上次說到 6/23 在 Seattle 有個 Conference on Scalability,昨天發現這些影片早就已經上線了。對於跟我一樣沒有參加 conference 卻對主題內容有興趣的人來說,可真是方便啊…

我把影片跟各個 session 的順序整理一下,一來自己需要,二來有興趣的人也可以直接取用 🙂

Bon appetite.

Zimbabwe – 辛巴威

辛巴威生活不知道會像什麼樣子呢…?
辛巴威的一些小資料:

  • 人口:大約一千三百萬人
  • 土地:面積大約 39 萬平方公里
  • GDP:每人大約 2600 美金
  • 通貨膨脹率:官方估計 3700%Fortune 估計 4500%
  • 失業率:80%
  • 一條吐司麵包的價格:44000 辛巴威幣,官方匯率換算約 $176 美金,但是黑市匯率大約 $0.18 美金
  • 電力供應:配給制度,一天供電四小時。

辛巴威政府的對策:

  1. 打擊通貨膨脹。逮捕漲價的商家,強迫商家賠本賣出貨物
  2. 打擊外資,任何外資持股超過 51% 的公司買賣併購都要經過政府同意。

結果:

除了上面已經可以見到的經濟崩潰,生產和商業行為也完全停止。因為沒人願意賠本生產,導致民生物資嚴重缺乏,舉國都出現搶購生活必需品的狀況。已經有大約 400 萬人民 (約 1/3 人口) 逃離辛巴威前往鄰近國家。

1980 年獨立以來,辛巴威人的平均壽命,男人從 60 歲降到 37 歲,女人從 65 歲降到 34 歲。

還好我不住在辛巴威。

Solr – Enterprise search 的「黑盒子」

最近因為需要做 search,於是找了 Lucene 來看,順便寫了些簡單的 index、search 的 code 摸摸看感覺。用 Lucene 的理由很多,速度快、scalability 好都是原因之一,很多大站 (digg、livejournal、CNet、Joost) 都採用也是原因,但是最重要的理由則是我對商業環境使用 Open Source 軟體的哲學…

「要用 Open Source 的玩意兒,就要用 community 最大、最 active 的」。因為這樣,白老鼠才夠多,support 才夠廣,支援度也夠好。有地雷的話,會有人先替你踩過,有問題會有人先修好 XD

廢話說完了,該來說 Solr (發音同 Solar)。話說今天下午,寫一些簡單的 code 測試 Lucene,結果在翻 documents 的時候意外翻到 Solr。看了幾下子以後開始幹聲連連… (我怎麼不早點看到這玩意兒啊?) 看來 Solr 根本把所有站內搜尋應該做的事情做完了嘛。

簡單說,Solr 是完全把 Lucene 整個包起來,藏成一個搜尋的黑盒子。你不要管 Lucene 裡面怎麼做 Tokenizer、Analyzer (雖然如果想改也可以),而只需要透過 XML/HTTP 來跟 Solr 溝通即可。要新增文件去搜尋,就用 HTTP POST 塞資料給它。要做搜尋的時候,再另外做 HTTP GET 就好。非常符合 KISS 原則 (Keep It Simple, Stupid)。

雖然還沒進行壓力測試,不過 Solr 的底層是 Lucene,又是 CNet 的人寫出來的,看起來應該是還不錯用才對。

還是那句話,我怎麼摸 Lucene 好幾天以後才看到這種好東西呢…