入手小紅點鍵盤, IBM Space Saver II
前幾天在網拍上買了一隻 IBM Space Saver II 鍵盤。 雖然它似乎已經有10年歷史了,但功能仍然很正常,最重要的小紅點(TrackPoint)依然可以使用。 我現在把它放在公司使用,寫程式時雙手完全不必離開鍵盤,真的很方便。 滑鼠已經被我扔到一邊去了。
全照圖與 TrackPoint 特寫。
前幾天在網拍上買了一隻 IBM Space Saver II 鍵盤。 雖然它似乎已經有10年歷史了,但功能仍然很正常,最重要的小紅點(TrackPoint)依然可以使用。 我現在把它放在公司使用,寫程式時雙手完全不必離開鍵盤,真的很方便。 滑鼠已經被我扔到一邊去了。
全照圖與 TrackPoint 特寫。
PHP 很早就已經支援 GNU gettext 的國際化模組。在線上手冊與網路上也可以找到許多相關的討論文章。 但是部份內容沒有完善地理解區碼的設定方式,以至於程序員在 LANG 和 setlocale() 的問題之中糾纏不休。
本文首先將說明區碼的設定問題,再示範 gettext 的使用方式。
Vala 作為 GNOME 開發環境下新興的開發語言,帶入了許多新的功能,其中亦包含國際化(i18n)的支援項目。 儘管 Vala 的線上教學文件沒有隻字片語提到 i18n/l10n,但事實上 Vala 已經將 GNU gettext 作為內建的語言功能,使用它實現 i18n/l10n 能力。 Vala 提供了名為 _ 的函數,只要我們的 vala 程式碼使用了 _() 函數,就會使用 GNU gettext 取得本地訊息。
但是現階段使用這個內建功能時,還有一個文件未記載的不完善之處必須解決。待我說來。
我這陣子上班時,會邊吃早餐邊看癮科技網站,那裡的科技新聞提供我不少樂子。在他們前陣子報導的 CES 2011 新聞中,我看到 Motorola Atrix 和 WebOS 揭示了一些有趣的想法。
關於 Motorola Atrix 的兩則新聞:
關於 WebOS 的兩則新聞:
日前公司同事接觸了 CouchDB, MongoDB 這幾套標榜 NoSQL 的資料庫系統。還有江湖傳言道:「RDBMS 落伍了,以後要用 NoSQL 資料庫」。這就在公司內引起了一場討論,到底 RDBMS 是不是落伍了。就我個人觀點,CouchDB, MongoDB 確實很有用,但要說 RDBMS 落伍了,我卻不以為然。
就我所見,NoSQL 其實是資料庫使用觀念的復古運動、正確觀念的復興運動。
我今天看到《Android source code, Java, and copyright infringement: what's going on?》(中譯版)的新聞。心頭一驚,這還真是個大新聞。於是多花了些時間把相關的討論文章都看過。內容很多,但法律焦點其實只有一個,我稍候解釋。我先說我的結論吧。我的結論是:Google 錯了。
今天看了《Create offline Web applications on mobile devices with HTML5》,講授 HTML5 的離線儲存功能。由於它使用的是 W3C WebDatabase 功能,於是我又去看了該規範文件。結果看到規範文件的開頭用顯眼的黑底框寫著注意事項,宣告 WebDatabase 不再維護了。
停止理由是各家廠商目前在實作這個規格時,底層的實體儲存項目都是 Sqlite,走向一條死胡同。W3C 則是希望有多樣化且獨立的實現途徑。
雙授權模式(dual-licensing)軟體是指一套電腦軟體,它提供了兩種不同授權模式供使用者選擇。實際上,也有些軟體提供了三種甚至三種以上可選擇的授權模式。是以我們統稱為「多授權模式」(Multi-licensing)。在解釋時要特別注意一點,多授權模式係指提供多種授權內容讓使用者擇一使用,並非多種內容同時授權。故中文說明時,不宜使用「雙重授權模式」或「多重授權模式」,因其授權內容並未重合。
我先前寫了一篇《VirtualBox有多種授權區分,企業使用並未免費》,說明 VirtualBox 有多授權模式,提醒公司的IT人員注意。那篇文章中說明的資訊有些過時了。現在 VirtualBox 3 已經開始提供 GPL 授權證給使用者選擇,此授權模式版本的官方正方稱呼為 VirtualBox Open Source Edition (OSE)。只是現在對客戶說明時也比較麻煩。因為客戶有時並不能理解「 VirtualBox 不等於 VirtualBox OSE」。
每年年底,總是有人問我某某電腦產品要怎麼選之類的問題。今年被問到 LCD 的事。說到 LCD ,我就有種不吐不快的感覺。我在兩年前買第一台 LCD 時,就留下一篇文章抱怨台灣沒有平價好貨的 LCD。兩年後,這句話依然適用。
那些向我請教如何選擇 LCD 的親友,我心中的惡魔都在冷笑:「有差嗎?賣場裡的貨色都一樣爛,同規格的挑最便宜的最划算」。 當然啦,我這個人還是有良心的,不會這麼直接地用一句話打發對方。基本上,我還是有一張選購速查表。
當我在 Python 中結合 multiprocessing.Pipe、multiprocessing.Process 與 signal 模組進行傳統的多工行程設計時,我注意到被擱置的管道資料讀取方法(read),在沒有取得資料的情形下就返回。使得父、子行程之間的互動過程不如預期。錯誤訊息顯示,讀取方法被系統中斷了(Interrupted system call)。read, signal, interrupted system call 這三個關鍵資訊,讓我直覺聯想到我碰到 EINTR 這個狀況了。當我在錯誤處理的流程中增加 errno 的判斷動作之後,我確認這就是 EINTR 狀況。
一位使用過 C 語言撰寫多工行程程式的程序員,對 EINTR 這件事絕不陌生。只是我未料想到會在 Python 之中再度碰到這位老朋友。對於這位老朋友,我們的招待原則請看《多工作業下的資料讀寫處理事項 - read()/write() 被 signal 中斷的處理 》。那篇處理事項中,提到 C 語言要準備兩招應付 EINTR 狀況。不過使用 Python 時則只需要第一招:如果錯誤是因為被 signal 中斷的話,就再讀一次,如果是其他原因導致的錯誤,則視為致命錯誤,應該中止程式繼續
。
在 Windows XP 主端桌面系統上,安裝 Ubuntu Linux 桌面系統虛擬機器。利用 VirtualBox 的無縫模式與共用資料夾功能,形成雙桌面環境。
MS Windows 7 專業版有一個 XP 相容模式。它骨子裡就是跑一個 XP 的虛擬機器,然後用 seamless (無縫模式) 執行 XP 軟體。這個玩法,我十幾年前使用 IBM OS/2 3.0 時就玩過了,那時是把 Windows 3.1 以無縫模式嵌在 OS/2 桌面中,讓 Windows 3.1 的軟體跑起來像其他的 OS/2 軟體。啊,年紀大了就喜歡話當年。用過 OS/2 的人大概沒幾個了。不講古,回正題。
我在家中的桌面電腦使用的是運作多年的 Windows XP,利用 VirtualBox 安裝了一個 Ubuntu Linux 桌面的虛擬機器。接著,為了實現我的雙桌面目標,我在 Ubuntu 虛擬機器中安裝 VirtualBox 客端額外功能(Guest Additions),以便啟用無縫模式以及共用資料夾功能。
Vala 有許多途徑可以整合 C 語言程式,例如在《Vala 程式語言入門》中,我示範了在源碼層級上整合 Vala 程式碼與 C 程式碼。除此之外,我們更常面臨的情況則是要在 Vala 程式碼中調用二進位碼函數庫的內容。在這方面, Vala 也提供了適當的支持。Vala 可以透過連結或是動態載入的方式連結函數庫,調用函數庫的內容。這也讓我們易於整合既有的 C 語言函數庫。
本文首先以 C 語言撰寫一個 md5sum() 並將其存入一個動態函數庫(dynamic library, Unix界的傳統說法稱為 shared object)。再分別透過動態連結以及動態載入兩種途徑,于 Vala 程式碼中調用此函數。
週末看了《波西傑克森–神火之賊》電影DVD。當主角一行人為了前入冥界,要賄賂冥河的擺渡人時,羊男首先拿出兩張美鈔鈶擺渡人,結果擺渡人默不作聲地一把火燒了紙幣,不理不睬。羊男氣得大叫那是美金耶! 接著主角想到了先前遭遇梅杜莎時,曾經撿到了一些古希臘金幣,於是把那些金幣拿給擺渡人。擺渡人拿到金幣後,就很高興地收下了,並把主角一行人載到冥王的神殿處。這一幕劇情描繪了紙幣與金幣作為貨幣時的流通性差異。
本文是《JavaScript 與 Desktop》系列最後一篇。前兩篇文章中,分別述敘了在 gjs/seed 中呼叫系統函數庫與調用 WebKit 處理圖形化使用介面的工作。
但是在這個架構中,實際上存在了兩個 JavaScript host (host 是 ECMAScript/JavaScript 規範術語,意指 JavaScript 語言解譯器寄宿的環境,故有人將之譯為「宿主」) 。一個是 gjs/seed,另一個便是 WebKit JavaScriptCore 。這兩個 host 都是獨立的環境空間,彼此之間的資源不能直接互通。例如 gjs/seed 這個 host 提供的資源可以載入 DBus 服務,調用 DBus 方法;但是 WebKit JavaScriptCore 並不提供這類資源,所以不能調用 DBus 方法。是以我們需要找出一個互通訊息的途徑,讓這兩個 host的程式碼可以互動。本文將說明其中一種基於事件觸發的途徑。
免責聲明:本教戰守策之內容,僅適用於中華民國。若於中華民國以外區域,按本守策內容行事因而獲罪者,自負其責,與本人無關。閱讀本守策的人士,須自行承擔風險。
台北地方法院十一月五日宣判二次金改案結果,陳水扁獲判無罪。吾觀判決書內容,欣喜若狂。概因判決書內容大開貪污後門,誠為獲利捷徑。吾心有所悟,特著教戰守策二條。凡我中華民國民意代表與公務員,若能循此教戰守策之指示行事,勤勉不懈,則榮華富貴,指日可待。
在 Ruby 語言為人樂道的諸多能力之中,支持 特定領域語言(DSL) 是表現突出的一項能力,也是 Ruby 語言諸多特性融合後的精華。 DSL 在 Ruby 語言的應用程度,有如 Template 在 C++ 語言的狀況。Ruby 語言中的諸多工具,都是應用 DSL 的形式體現,例如 Ruby on Rails, Rake, RSpec 等等。