gjs - 中文字的處理

gjs/gnome-shell 可以在程式碼中使用中文字以及包含中文字的字串。 但是它的內部編碼方式有點特殊,以至於它不能直接地輸出程式碼中的中文字。 本文採用下列三種不同的方式輸出中文字,並記錄其結果。

雙螢幕合體

前幾天訂的 Asus PA246Q 送到了。跟我原本的 Lenovo LX220 組成雙螢幕,感覺真爽。 右邊的是 Asus PA246Q,24吋,IPS 面板,解析度1920x1200 (16:10)。左邊的則是 Lenovo LX220,22吋,VA面板,解析度也是 1920x1200。Lenovo LX220 這台螢幕使用4年了,燈管似乎有些老化,顏色偏暖,所以我才想再買一台 LCD 。

5月16日更新: 我搞了台Spyder4pro校色。結果是個好消息, Asus PA246Q 的出廠校色值還挺準,和校色後的結果非常接近。不想買校色器的人,可以設定色彩模式為 AdobeRGB ,關閉那可笑的 SPLENDID 。亮度的話,出廠預設亮度真的太亮。如果你的目標是 120cd/m2 ,那亮度調到0;目標 190cd/m2 ,則亮度調為20到25之間。

Introspection and Reflection in Programming Language

網友在另一篇文章的回應中,問我程式語言中的自識與反射有何區別。 關於反射與自識,我的說法是「Reflection 一般譯為反射,但我稱為自識的能力」。見「什麼是 Reflection?」。

「反射」,或稱「反映」,對應英文 reflect;「自識」,或稱「內省」,對應英文 introspect 。 在程式語言中,這兩者基本上指的是同一件事,即個體認知自身的能力,讓 object 看到自己的外貌的功能。 但是 reflect 與 introspect 的語義,表達了兩種方式的差異在於認知途徑不同。 也就是說,反射能力就是自識能力,差別在語義不同。

GJS - 使用 jsUnit

GJS 自帶 jsUnit 模組,可以讓編程人員針對自己所寫的 javascript 程式碼撰寫測試案例。 這個 jsUnit 模組實際上就源自網頁程式開發人員使用的 JsUnit。 不過基於 GJS 的 server-side script 運作方式,GJS 自帶的 jsUnit 模組做了些調整,啟用 jsUnit 的方式也略有不同。

這篇文章簡單地說明 GJS 如何使用 jsUnit 。這些內容也同樣適用於 GNOME Shell 。

Samsung S8500 Bada 2.0(非官方)刷機記

6月15日新增韌體下載點。 原本網友提供的論壇不見了,所以我提供另一個下載點: [Custom BRI-NEW-S8500ZCLB4.7z]。壓縮檔中包含刷機用的 MultiLoader V.567.exe 。刷機時,請記得選取 bplib_S8500OpCommon_ZCLB4.fota 。我現在使用的就是這個版本。

我上週手癢,參考了網路玩家自製的 Bada 2.0 中文版刷機方法,刷了我的 Samsung S8500 手機。試用一天之後,一切都好,就是不能寫正體中文。記事與找資料都不方便,所以還是刷回來 Bada 1.2 。

我先說說 Bada 2.0 的使用感覺。跑的很順,記憶體管理也有大幅改進。它的瀏覽器可以連開多頁,不像以前常抱怨記憶體不足。配合新的 TouchWiz 介面,使用者可以把慣用的 App 拉到桌面上。TouchWiz 下方的多了一個圖示,可以取代實體按鍵的中鍵。網路連接與資料儲存位置都可以針對不同的應用分別設定,非常地細。

但是正體中文支援不足。玩家改出來的 Bada 2.0 中文版,實際上只提供了簡體中文與香港繁體中文介面。中文輸入法的只有拼音與筆劃兩種輸入法。筆劃輸入法就是手寫,但是只能辨認簡體字,認不得正體字。至於拼音輸入法的話,我連注音都不用了,更何況是拼音。我只有輸入日文字時才會用 romaji。

撰寫乾淨的 eval 程式碼的技巧

JavaScript 的 eval() 功能很強大,但想用得好卻不容易。 寫在 eval 內的程式碼,經常被抱怨不能寫太長、很難修改維護。 其實老練的 JavaScript 程式人員有許多技巧可以讓這件事變得容易。 本文則將說明其中一種讓 eval 內的程式碼變得易寫易讀的技巧。

不尚賢使民不爭

LungZeno 在我的另一篇文章中回應:

「不尚賢」用現代用語簡單地說就是「政治中立」,不偏袒任何一方、任何一說,亦即「天道無親」。而政府本質就是當然性壟斷,假若政府貴難得之貨,絕對不堪切想。

點此看全文

「不尚賢使民不爭」這句話,在竹簡本、帛書本、通行本中皆無異。 我以為這句話的解釋並沒有太大的歧異,其涵義和「政治中立」的關聯不大。

持續整合與跑步呼吸

大約是一月時的事,我看到消息說「GitHub已將持續整合服務器Janky開源」。然後,我就在公司的郵件群組中發了封信,說我可能會評估一下 Janky 這套持續整合工具。同事在跟帖中說,這樣會不會分心,是不是應該等目前的專案都結束了再做?

同事的說法,反應出他們尚未確實理解「持續整合」的意義。我相信大部份開發團隊初次接觸「持續整合」時,都會有相同的誤解。我在郵件與 twitter 上表達了我的看法。

敏捷開發方法(Agile method)見報,主題是站立會議

我昨天在聯合報上看到一篇報導:《科技業追效率 站著開會成風潮》(聯合報,民國101年2月4日,A3版)。當我看到標題「站著開會」這四個字時,我直覺想到這該不會是在說敏捷開發方法極致編程(Agile method/eXtreme Programming)所提倡的「站立會議」吧?仔細一讀內容,還真是這麼一回事。我書讀得少,這是不是國內大眾媒體首次以「企業管理」的角度報導「敏捷方法」的新聞?真是可喜可賀啊。

SSD fdisk calculator - 固態硬碟分割計算器

SSD fdisk calculator。固態硬碟分割計算器。讓你的磁區對齊 4K 區塊。 此程式為網頁版,瀏覽器打開本頁即可計算。不用下載,不用安裝。

春節前,看到 PCHome 有批 SSD 好便宜,我趁機買了一個回來裝在我的 ThinkPad 上。 不過在分割磁區時碰到了些小麻煩。為了要準確地對齊 4K 區塊,我乾脆寫了個計算器來算位置。 本來是用 gnumeric 試算表算的,後來為了發佈出來,又花了半天用 JavaScript 寫成網頁版。

IBus 與 DBus

IBus 輸入法平台利用 D-Bus 協定作為訊息通路。 所以程式人員可透過 D-Bus 協定控制 IBus 輸入法的動作。但比較麻煩的是,IBus 不連接公用的 dbus-daemon 服務,而是另行實作了 ibus-daemon。所以 D-Bus 客戶端若用預設的方式接上 dbus-daemon 後,並不能找到與 IBus 平台溝通的訊息通路。

用公車系統對上述內容作個譬喻。IBus 跟 DBus 都是同一款公車,駕駛與乘坐方式是一樣的。但是 DBus 停靠的車站是 dbus-daemon ,而 IBus 停靠的車站是 ibus-daemon。乘客(客戶端)如果跑到 dbus-daemon 車站的話,搭不到 IBus 的車。乘客要去 ibus-daemon 車站,才能搭上 IBus 的車。那麼乘客要如何找到 IBus 的停靠站呢?

生存戦略、しましょうか。

在農曆新年的歡樂期間,聽到美國大規模掃蕩網路硬碟(免費空間)服務商的行動,實在非常破壞氣氛。 MegaUpload 服務因負責人被 FBI以洗錢與盜版罪名通緝,服務主機也被查扣,服務全面停擺。緊接著,連 FileSonice 也宣佈關閉所有文件共享功能。這真是如同晴天霹靂般的事,因為我是 FileSonic 的付費會員。

關注我的 twitter 的朋友們,先前應該就會在 twitter 上看到我推的意見了。本文彙整了我推的訊息並補充一些內容。

KVM 與 USB 軌跡球的中鍵模擬

我在「Synergy - 軟體KVM 使用說明」中提到我的工作需要一套 KVM。我首先嘗試了 Synergy 這套軟體 KVM。它確實做得很好,只是我目前的工作內容常常要退出使用端 X 視窗或切到文字終端機。在這種情形下,Synergy 就不能繼續為我服務了。我不得已,只好再添購一組硬體的 USB KVM;型號是「Uptech KVM211U」。

這陣子使用下來,這種 USB KVM 的相容性問題不大,連我的 USB 軌跡球都能接。但還是有一點的問題,那就是 KVM 在切換終端時,實際上就是在插拔 USB 設備。於是每次按下 KVM 的切換鍵時,作業系統都會出現 USB 鍵盤與滑鼠拔出或連接的情形。 這對我來說就是個困擾了。因我為軌跡球設定了一些操作行為,例如指定中鍵模擬滾輪。不幸的是,當 KVM 切走時(拔出滑鼠),這個設定就會失效;KVM 切回時(插入滑鼠),我得再執行一次設定工作。

Working with PHPUnit, part 1 - 安裝備忘錄

近來的軟體開發流程強調「測試驅動開發 (Test-Driven Develope)」,對於單元測試 (unit test) 發展出了一些系統化的作法和工具,這類單元測試工具俗稱 xUnit ,例如 C 語言的 CUnit , Java 的 JUnit , .NetFramework 的 NUnit 。 PHP 也有 PHPUnit

安裝 PHPUnit 其實很簡單,基本上按 PHPUnit 的《Installation》的步驟即可完成安裝。只是我在 Windows 平台上做了一些修改。

初版: 2006-12-25。
最近更新: 2012-01-18。修正參考連結,補充安裝方式。

Synergy - 軟體KVM 使用說明

我的辦公桌上有兩台電腦螢幕以及兩台電腦。這兩台電腦各接一台電腦螢幕。但我不想要在桌上放兩組鍵盤與滑鼠,所以我需要一個工具,可以讓這兩組電腦共用同一組鍵盤與滑鼠。這種工具叫「KVM」。本文說明的是一套基於軟體實作的 KVM 工具,它就是 Synergy

Synergy 是一套自由軟體,且支援多種平台,計有 Windows, Mac OS 和 Linux。它可以讓許多組電腦共用一組鍵盤與滑鼠。切換方式也很聰明,使用者只要設定好各個螢幕的位置後,當你的滑鼠指標碰到螢幕的邊緣時,Synergy 就會將你的鍵盤與滑鼠的連接對象切換到另一台電腦。