網友在另一篇文章的回應中,問我程式語言中的自識與反射有何區別。
關於反射與自識,我的說法是「Reflection 一般譯為反射,但我稱為自識的能力」。見「什麼是 Reflection?」。
「反射」,或稱「反映」,對應英文 reflect;「自識」,或稱「內省」,對應英文 introspect 。
在程式語言中,這兩者基本上指的是同一件事,即個體認知自身的能力,讓 object 看到自己的外貌的功能
。
但是 reflect 與 introspect 的語義,表達了兩種方式的差異在於認知途徑不同。
也就是說,反射能力就是自識能力,差別在語義不同。
GJS 自帶 jsUnit 模組,可以讓編程人員針對自己所寫的 javascript 程式碼撰寫測試案例。
這個 jsUnit 模組實際上就源自網頁程式開發人員使用的 JsUnit。
不過基於 GJS 的 server-side script 運作方式,GJS 自帶的 jsUnit 模組做了些調整,啟用 jsUnit 的方式也略有不同。
這篇文章簡單地說明 GJS 如何使用 jsUnit 。這些內容也同樣適用於 GNOME Shell 。
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。
JavaScript 的 eval() 功能很強大,但想用得好卻不容易。
寫在 eval 內的程式碼,經常被抱怨不能寫太長、很難修改維護。
其實老練的 JavaScript 程式人員有許多技巧可以讓這件事變得容易。
本文則將說明其中一種讓 eval 內的程式碼變得易寫易讀的技巧。
我已將 ThinkPad X200s 上安裝的作業系統從 Ubuntu 10.04 換成 Debian 6 squeeze。
LungZeno 在我的另一篇文章中回應:
「不尚賢」用現代用語簡單地說就是「政治中立」,不偏袒任何一方、任何一說,亦即「天道無親」。而政府本質就是當然性壟斷,假若政府貴難得之貨,絕對不堪切想。
點此看全文
「不尚賢使民不爭」這句話,在竹簡本、帛書本、通行本中皆無異。
我以為這句話的解釋並沒有太大的歧異,其涵義和「政治中立」的關聯不大。
大約是一月時的事,我看到消息說「GitHub已將持續整合服務器Janky開源」。然後,我就在公司的郵件群組中發了封信,說我可能會評估一下 Janky 這套持續整合工具。同事在跟帖中說,這樣會不會分心,是不是應該等目前的專案都結束了再做?
同事的說法,反應出他們尚未確實理解「持續整合」的意義。我相信大部份開發團隊初次接觸「持續整合」時,都會有相同的誤解。我在郵件與 twitter 上表達了我的看法。
SSD fdisk calculator。固態硬碟分割計算器。讓你的磁區對齊 4K 區塊。
此程式為網頁版,瀏覽器打開本頁即可計算。不用下載,不用安裝。
春節前,看到 PCHome 有批 SSD 好便宜,我趁機買了一個回來裝在我的 ThinkPad 上。
不過在分割磁區時碰到了些小麻煩。為了要準確地對齊 4K 區塊,我乾脆寫了個計算器來算位置。
本來是用 gnumeric 試算表算的,後來為了發佈出來,又花了半天用 JavaScript 寫成網頁版。
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 上看到我推的意見了。本文彙整了我推的訊息並補充一些內容。
我在「Synergy - 軟體KVM 使用說明」中提到我的工作需要一套 KVM。我首先嘗試了 Synergy 這套軟體 KVM。它確實做得很好,只是我目前的工作內容常常要退出使用端 X 視窗或切到文字終端機。在這種情形下,Synergy 就不能繼續為我服務了。我不得已,只好再添購一組硬體的 USB KVM;型號是「Uptech KVM211U」。
這陣子使用下來,這種 USB KVM 的相容性問題不大,連我的 USB 軌跡球都能接。但還是有一點的問題,那就是 KVM 在切換終端時,實際上就是在插拔 USB 設備。於是每次按下 KVM 的切換鍵時,作業系統都會出現 USB 鍵盤與滑鼠拔出或連接的情形。
這對我來說就是個困擾了。因我為軌跡球設定了一些操作行為,例如指定中鍵模擬滾輪。不幸的是,當 KVM 切走時(拔出滑鼠),這個設定就會失效;KVM 切回時(插入滑鼠),我得再執行一次設定工作。
本部落格支持「STOP CENSORSHIP」,懸掛反對標語一天。
更多關於 SOPA 與 STOP CENSORSHIP 的細節資訊,請點擊上方黑色區塊了解。
在 Linux 桌面中,我寫程式時慣用的文字編輯器是 gedit。
我寫了一個配合「外部工具」外掛的指令集,可以讓我直接在 gedit 的視窗中直接編譯或執行我正在編寫的程式碼。
近來的軟體開發流程強調「測試驅動開發 (Test-Driven Develope)」,對於單元測試 (unit test) 發展出了一些系統化的作法和工具,這類單元測試工具俗稱 xUnit ,例如 C 語言的 CUnit , Java 的 JUnit , .NetFramework 的 NUnit 。 PHP 也有 PHPUnit 。
安裝 PHPUnit 其實很簡單,基本上按 PHPUnit 的《Installation》的步驟即可完成安裝。只是我在 Windows 平台上做了一些修改。
初版: 2006-12-25。
最近更新: 2012-01-18。修正參考連結,補充安裝方式。
我的辦公桌上有兩台電腦螢幕以及兩台電腦。這兩台電腦各接一台電腦螢幕。但我不想要在桌上放兩組鍵盤與滑鼠,所以我需要一個工具,可以讓這兩組電腦共用同一組鍵盤與滑鼠。這種工具叫「KVM」。本文說明的是一套基於軟體實作的 KVM 工具,它就是 Synergy。
Synergy 是一套自由軟體,且支援多種平台,計有 Windows, Mac OS 和 Linux。它可以讓許多組電腦共用一組鍵盤與滑鼠。切換方式也很聰明,使用者只要設定好各個螢幕的位置後,當你的滑鼠指標碰到螢幕的邊緣時,Synergy 就會將你的鍵盤與滑鼠的連接對象切換到另一台電腦。
目前常見的 BT (BitTorrent), eMule (EDLink) ,都是屬於公開匿名式 P2P 網路。它們的檔案分享關係網路是公開的,任何人都可以加入,並不適合企業內部的檔案散佈需求。
但也存在私有 P2P 網路架構(Private P2P)。有發展時間長久、支援軟體眾多的 Direct Connect,以及從匿名式 P2P 網路擴充過來的 Freenet 等。
我前天想要修改我寫的一個精簡型 PHP RESTful 框架 (「CommonGateway」),將它由外部設定(注入)控制項屬性內容的動作,改的更有使用彈性。最好像 Java Spring framework 那樣,可以透過注記(annotation)方式,讓使用者指定要注入的項目。
雖然 PHP 的語法並不支援注記符號,但是我可以變通一下,把注記內容寫在 doc 區,然後再自己解析 doc 的內容。 PHP 的 phpDocumentor 和 PHPUnit 工具就是這麼做的。這個工作倒也不難,只需要用到 PHP Reflection 功能的 getDocComment() 就可以了。