This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please visit upgrade to a browser that supports web standards. It's free and painless.

Fillano's Learning Notes 會員登入 會員註冊

Firefox 3.5 RC剛剛出來,在他的 Release Note 裡面提到了一些新的功能,包含native JSON support以及web worker thread這兩個新的javascript功能。(另外,透過安裝addon,還可以支援canvas 3d)

如果熟悉Javascript,應該就知道他是single thread的。現在透過web worker,可以讓javascript擁有一些真正多工的能力(根據說明,他會使用到系統層級的thread)。

雖然web worker使用上有一些限制,例如每次要新增一個worker,都可能會有網路的loading,不過適當地使用還是對效率有所幫助。

使用上有幾個地方要先注意:

  1. worker執行的環境是一個完全獨立的context,這個context裡面的Global物件幾乎沒什麼東西,只包含了onmessage事件屬性用來指定事件處理函數,以及postMessage用來回傳資料並觸發worker物件的onmessage事件。
  2. worker物件有同樣有onmessage屬性,指定給他的事件處理函數會在worker載入的Javascript執行中呼叫postMessage時被觸發,而postMessage方法則可以觸發載入的Javascript中的onmessage。
  3. 根據Mozilla的文件說明,透過postMessage傳遞的資料,會先轉成JSON再轉回成物件,並不是直接把一個物件的參考傳入,所以針對接收到的物件所作的修改,對傳入的物件完全不會有作用。
  4. 簡單地說,在worker所載入執行的Javascript裡面,完全無法操控DOM,能做的只有接收傳進來的資料並傳回處理過的結果。

 (閱讀全文)

之前用Quercus嘗試將CodeIgniter放到Google App Engines上執行,仿照Google提供的留言板例子,把程式放到CodeIgniter上跑。但是後來發現,在留言板上輸入中文會出現問題。

我的資料是放在一個java bean裡面(拿google的範例,所以叫做Greeting),資料存取透過jdo,存入時使用servlet,取出則用php。結果存入中文資料沒問題,取出中文資料就...一堆亂碼。

比較一下取出的資料,發現似乎字串長度是對的,但是編碼不對,每個中文字元長度似乎都被裁成一個位元組,而不是UTF-8的三個位元組。在java bean裡面動了一下手腳,把getter回傳的資料型態改成byte array,然後用getBytes("UTF-8")回傳,結果就是正確的了。(另外一個方法是用&#number;這樣的格式來處理每個字元)

看起來Quercus處理java與php資料型別轉換的方法(unmarshal)似乎怪怪的...要不然就是他內建的Env.createString()方法有點問題...另外,如果不使用GoogleQuercusServlet也會有一些問題,我把script_encoding改成iso-8859-1就正常顯示php程式中的中文???但是我用binary editor確認過,檔案編碼是UTF-8耶???真奇怪。我還特別修改unicode.semantics、unicode.script_encoding、unicode.runtime_encoding、unicode.output_encoding等選項耶,但是沒啥用處。

Quercus的功能感覺還不夠穩定...