打造 Windows XP 與 Linux 的雙桌面環境

在 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),以便啟用無縫模式以及共用資料夾功能。

《國家與認同:一些外省人的觀點》讀記

這本書的編採內容,頗有濫芋充數之嫌。前半本是濫芋,後半本的論述內容才有深度可言。

More about 國家與認同
你以為懂,其實也不一定懂很多的外省人。 國家與認同 總序

「外省人」族群,只有從本省人的角度來看,其定義才是「明確的」。欲跳脫本省人觀點而得到客觀的「外省人」定義,係椽木求魚。

要我來說,那就按照台灣近代經濟史來分。所謂的「本省人」就是國民政府遷台後,失去經濟優勢地位階級的那一群人;他們要鬥爭的階級對象,就是「外省人」。哈哈,雖然我不認同馬克思大部份的經濟理論。但在這種場合,我覺得馬克思經濟學的階級鬥爭論用起來十分方便。

Vala - load dynamic library / shared object

Vala 有許多途徑可以整合 C 語言程式,例如在《Vala 程式語言入門》中,我示範了在源碼層級上整合 Vala 程式碼與 C 程式碼。除此之外,我們更常面臨的情況則是要在 Vala 程式碼中調用二進位碼函數庫的內容。在這方面, Vala 也提供了適當的支持。Vala 可以透過連結或是動態載入的方式連結函數庫,調用函數庫的內容。這也讓我們易於整合既有的 C 語言函數庫。

本文首先以 C 語言撰寫一個 md5sum() 並將其存入一個動態函數庫(dynamic library, Unix界的傳統說法稱為 shared object)。再分別透過動態連結以及動態載入兩種途徑,于 Vala 程式碼中調用此函數。

黃金恆久遠,冥界也流通

週末看了《波西傑克森–神火之賊》電影DVD。當主角一行人為了前入冥界,要賄賂冥河的擺渡人時,羊男首先拿出兩張美鈔鈶擺渡人,結果擺渡人默不作聲地一把火燒了紙幣,不理不睬。羊男氣得大叫那是美金耶! 接著主角想到了先前遭遇梅杜莎時,曾經撿到了一些古希臘金幣,於是把那些金幣拿給擺渡人。擺渡人拿到金幣後,就很高興地收下了,並把主角一行人載到冥王的神殿處。這一幕劇情描繪了紙幣與金幣作為貨幣時的流通性差異。

JavaScript 與 Desktop - Desktop and WebKit

本文是《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的程式碼可以互動。本文將說明其中一種基於事件觸發的途徑。

淺談每日建置、BVTs之目的

我任職的公司,今年年初時,指派我用 CruiseControl.rb 規劃了一套每日建置系統。到目前為止,已經運作了超過半年的時間。也確實解決了許多潛在的軟體開發風險,例如 簡化專案交接風險

不過隨著人員更迭,我時常要對新進員工灌輸每日建置系統的用處。本文就是我每次都會對新進人員說一遍的內容。

中華民國貪污教戰守策 - 由陳水扁二次金改案判決書得到的啟示

免責聲明:本教戰守策之內容,僅適用於中華民國。若於中華民國以外區域,按本守策內容行事因而獲罪者,自負其責,與本人無關。閱讀本守策的人士,須自行承擔風險。

台北地方法院十一月五日宣判二次金改案結果,陳水扁獲判無罪。吾觀判決書內容,欣喜若狂。概因判決書內容大開貪污後門,誠為獲利捷徑。吾心有所悟,特著教戰守策二條。凡我中華民國民意代表與公務員,若能循此教戰守策之指示行事,勤勉不懈,則榮華富貴,指日可待。

Ruby 語言與特定領域語言(DSL)

在 Ruby 語言為人樂道的諸多能力之中,支持 特定領域語言(DSL) 是表現突出的一項能力,也是 Ruby 語言諸多特性融合後的精華。 DSL 在 Ruby 語言的應用程度,有如 Template 在 C++ 語言的狀況。Ruby 語言中的諸多工具,都是應用 DSL 的形式體現,例如 Ruby on Rails, Rake, RSpec 等等。

RSpec 與測試驅動開發的思考方式

日前翻舊文時,看到一篇關於 RSpec 的好文章。

這篇文章有條不紊的說明我們是如何利用 rspec 這套工具,引導我們的軟體開發流程。

根據 rspec 中的 spec 字眼,我們可以將 rspec 解釋為一種用於描述軟體規格的的特定領域語言(Domain Specific Language)。由於軟體規格就是應用軟體表現出來的外在行為,所以跟隨 rspec 此類工具的設計流程,被稱為「行為驅動開發模式」(Behaviour Driven Development)。這種開發模式屬於測試驅動開發模式(TDD)的高階形式。

JavaScript 與 Desktop - WebKit

繼《JavaScript 與 Desktop - DBus 》,本文將說明 gjs/seed 如何結合 GTK 和 WebKit 設計 GUI。由於本系列文章的重點,放在將 Web UI 的開發經驗延續到桌面軟體的開發上,因此在 GTK 方面僅著墨於如何開啟一個視窗,並加入一個 WebKit 元件;換一個較易理解的說法是,建立一個桌面視窗,並嵌入一個 Web 瀏覽器呈現網頁內容。

Padding Oracle Attack 與 Web 軟體開發框架

今天在 InfoQ 看到一篇關於破解金鑰加密技術的文章,Padding Oracle 漏洞影响JSF,RoR及ASP.Net。這篇文章的主要檢驗對象,是那些將用戶、表單等資料,經由金鑰加密方式,傳送給 Web 客戶端的 Web 軟體開發框架。破解理論及範例,都可以在作者 Juliano Rizzo & Thai Duong 的網站上找到,請參考 Rizzo 的網站: netifera.com

利用 Padding Oracle 漏洞 (PO),攻擊者不需要私鑰,就能在可預期的嘗試次數中,解出加密資料的原始內容。The attack works within a complexity of O(NbW) in order to decrypt the message where W is the number of possible words (typically W = 256)(Serge Vaudenay, 2002). 我不懂密碼學的理論,但看了作者示範的破解影像《Cracking CAPTCHA with Padding Oracle attack》後,我猜想在某些狀態下,破解這種加密方式的通行碼之所需時間,短於破解雜湊法處理的通行碼。

JavaScript 與 Desktop - DBus

我先前在 ICOS 2010 記事 提及目前有多項軟體專案,正試圖將 Web 軟體開發經驗延伸到 Linux 桌面軟體開發領域。 在那之中,以 gjs 和 seed 這兩項專案的成果最接近實用階段。這兩套都是基於 C 與 GNOME Library 的 JavaScript 解譯器實作品。透過 GNOME Library 的 GObject introspection framework ,它們可以呼叫系統中所安裝的其他函數庫。故而它們可以用於開發一般的 Linux 桌面軟體。

我這兩天試用 Ubuntu 10.10 與 gnome-shell 時,同時嘗試著用 gjs 和 seed 撰寫一些小程式。首先嘗試的項目是透過 D-Bus 調用其他桌面軟體的服務。

《蝴蝶、斑馬與胚胎》讀記

雖然我是個生物學的外行人,但我看《蝴蝶、斑馬與胚胎~探索演化發生學之美》這本書應該是優秀的基因學入門書。然而,不知中譯本是否刪掉了註解,以至於作者在書中提到的一個名詞與概念,都缺乏進一步的解釋。如此一來,這本科普書的內容就顯得太專業了。一般人應該會像我一樣,讀起中間章節,感到一知半解。

賀再就職滿一年與工作回顧

算一算,我到目前公司就職的時間滿一年了。回顧我那常態性失業的歷史,待滿一年真是可喜可賀。我原本以為那些與我同時期報到的同事會待得比我久,沒想到他們反而都比我早離職換公司,就我一個還留著。我待過三間軟體開發公司,雖然內部文化不同,但軟體開發人員的流動率都是那麼地快。至於我本人,大概是因為我太懶,也不指望軟體業有什麼前景。反正去那都一樣,既然這間公司不資遣我,我便懶得換環境了。

將桌面管理程式由 nautilus 換成 pcmanfm

網路上可以找到許多將桌面管理程式由 nautilus 換成 pcmanfm 的教學文件。方法不一,各有疏漏。在此提供我的作法,供各位參考。

我目前使用的桌面環境是 Ubuntu 10.04。

淺談基本工資

前一陣子勞工團體為了基本工資的問題吵得沸沸揚揚。勞工團體主張「基本工資的作用就是讓勞工至少活得像個人」。我反倒想說:「調漲基本工資會讓失業者活得更不像個人」。所幸最終結果只是象徵性地調高六百元,人們勉強不會發覺它的不良影響。

勞工團體不喜歡看複雜的數學公式,巧得是,我不熟悉數學的語法規則,所以也不喜歡看數學公式。因此我在本文中不會用複雜的數學公式談基本工資。

我在本文說明的方式相當簡單,略去了許多細節的設定與定義。嚴格說來,這方面的議題足以寫出上百頁的論述。但是這一方面的論述實在太多了,從一、兩百年前就有許多學術論述;差不多在一百年前的內容就已經得到現在的結論,而且沒有用微積分或複雜的數學公式。既然如此,我寫再多內容也不會增加什麼學術價值,那我還是當個懶人,只說重點吧。

筆記型電腦電池使用時間估算

耗電量公式: 使用時數 = (V * AH) / W.

電池上會標示伏特(V)與安培數(AH),例如我的 ThinkPad X200s 附帶的 4 芯電池上標示: 14.4V=2.0AH,28.8WH。至於瓦數(W)則要看實際狀況而定,各機種與運作環境皆會影響。