Vala - system signal agent

Unix系統的行程間通訊機制中,有一套稱為 signal 的信號機制。因為它被列在 POSIX 規範之中,所以本文將以 Posix signal 稱之。Psoxi signal 是一種簡單的事件通知機制。它將某些事件予以編號,例如 SIGHUP, SIGTERM 等。程序可以向系統註冊這些信號的處理函式。當特定事件發生時,系統就會打斷程序目前的流程,將執行點轉移到程序指定的處理函式。

然而從設計模式的眼光來看,Posix signal 對程序而言是 Singalton 模式,它只有一個實體。所以同一時間,每一個 Posix 信號只能註冊一個處理函式。當你的程序內有多個單元關心同一個 Posix 信號時,程序員必須要另行安排登記與分派機制,以免不同的單元彼此爭搶 Posix 信號的處理權。 GNOME 環境的程序員,可以利用 GObject 型別機制提供的 GObject signal 機制,實現 Posix signal 的分派機制。

GNOME3 - GObject Introspection 的版本更迭問題

我先前在《Vala與GObject Introspection的不搭配狀況》抱怨這些工具互相不配合的狀況。而我最近兩三天發現根本的原因,其實就出在 gobject-introspection 本身的版本更迭。

我把一項原本在 Ubuntu 10.04 主機上編譯完成的 typelib 安裝在 Ubuntu 11.04 的主機上測試。我的測試程式擲出 typelib 版本代號不對的訊息,它預期的版本代號是4,而我提供的 typelib 代號是 2,也就是兩者版本不相容。我最終的解決方式是拿源碼在 Ubuntu 11.04 主機上重新編譯。而在尋求答案的過程中,我並未在 gobject-introspection 的 GIRepository API 與工具中,找到可以指定特定版本的選項。換言之,現階段的 gobject-introspection 沒有提供新舊版本的相容能力。

Matchbox keyboard

因為工作需要,我需要評估一些平板電腦相關的應用。因此我接觸過 MeeGo ,使用過它提供的幾種虛擬鍵盤(軟體鍵盤),例如 fvkbd, meegotouch-inputmethodkeyboard 。更進一步地,當我嘗試著在 Debian/Ubuntu 系統上自訂一個平板桌面環境時,也需要一個虛擬鍵盤。而 Ubuntu 套件庫中就提供了 Matchbox keyboard

Matchbox keyboard 並不是功能最多的虛擬鍵盤。但它應該是結構最簡單的一套,也提供了設定鍵盤佈局的功能。而且 X window 上的其他虛擬鍵盤的原理跟 matchbox keyboard 大同小異。如果想要嘗試客製化一個具有虛擬鍵盤的操作環境,可以 matchbox keyboard 為起點。等到產品化時,我們隨時可以用其他同樣基於 X 協定的虛擬鍵盤替換它。

Android 捲入專利風暴的內容,應不牽涉 Linux

最近一年來, Google Android 面臨了一波又一波專利控訴,有 Apple 告 HTC、Microsoft 告 HTC, Motorola 等案。 在討論過程中,不斷地有人提到 Linux 會如何如何。 顯然他們對 Google Android 的印象還停留在兩年前(2009),他們還以為 Android 是一種 Linux 套件。 因此他們認為這場專利風暴會波及 Linux 社群。 但就我所知,Linux 社群及其相關廠商,應該不會受到影響。

MeeGo 1.1 編譯 Hanvon 10.1 觸控面板模組

MeeGo 1.1 使用的 Linux 核心是 2.6.35 ,此版本並不支援 Hanvon (漢王)觸控面板,也不支援多點觸控。 必須套用 MeeGo 維護者額外提供的 patch 文件,自行編譯核心。

安裝套件

安裝 MeeGo 後,再安裝編譯核心所需的套件。

sudo zypper install kernel-netbook-devel make gcc diffutils patch

取得 Patch

查看 Hanvon/PixCir touchscreen constantly "clicks" when touched。 下載上列文件中的其中3個patch:

  • 0001-2.6.37-hid-multitouch-support-for-PixCir-based-panels.patch
  • 0002-2.6.37-hid-multitouch-disable-2.6.36-MT-features.patch
  • 0003-2.6.37-hid-multitouch-add-unitec-ids-to-driver.patch

套用此 patch 後,可讓 2.6.35 的核心支持 Hanvon 觸控面板。 但受限於核心功能,僅提供單點觸控。

GJS/GnomeShell - timeout

GJS/GnomeShell 的運行環境,基本上是以事件為基礎。而它的事件處理迴圈,則是由 mainloop 負責。 mainloop 除了主要事件來源外,還提供了兩種可添加的事件來源,即 timeout 事件與 idle 事件。 本文為這些功能的使用範例。

使用 PulseAudio 命令列工具切換應用程式使用的音效設備

Ubuntu 10.04 中的 gnome-volume-control (音效偏好設定)提供一個視覺化的音效控制環境。 但我碰到要讓不同的應用程式分別將音訊輸出到不同音效卡的情形,gnome-volume-control 就做不到。 我只好用命令列工具去指派。

pacmd 是 PulseAudio 的交談式命令控制工具。 可以透過它控制 PulseAudio 的狀況。

Vala 與 GObject Introspection 的不搭配狀況

Vala 與 GObject Introspection 都是 GNOME 3 平台中的重要角色。 Vala 為 C 語言程序員提供了易用的 GObject 設計工具。GObject Introspection 則是銜結不同程式語言所實作的 GObject 項目的橋樑。我在《ICOS 2010 記事》中,便提到像 gjs/seed 這些新興的 JavaScript 解譯器,可以透過 GObject Introspection 調用既有的 GLib 項目。 理論上這兩套工具要能搭配互補,但我這陣子在摸索它們的互補途徑時,卻碰了一鼻子灰。

用案例解釋 OpenID 與 OAuth 的使用情境

參與者
  • abc.net 是一個社群服務網站,並且同時也是 OpenID 與 OAuth 的 Provider 。
  • xyz.com 是一個購物網站,且可使用 abc.net 所提供的 OpenID 與 OAuth 的服務。
  • 路人甲,是一個人,慣用的網路ID是 john。

路人甲(john)是 abc.net 的長期使用者,他在 abc.net 的使用記錄中,留下了許多偏好資訊,包含:

  • 他的名片,記載了他的地址、聯絡方式、與公司職務等。
  • 他的使用偏好,他習慣選擇中文使用介面,偏好藍色系佈景。
  • 他的通訊錄與好友名單。

Google Android 又涉嫌違反 GNU GPL

記者沒有人「請問您對微軟控告邦諾的 Nook 中的 Android 侵犯專利一事,有何看法?」

石頭成表示:又在告專利,來點新鮮事吧。等等,你說被告的對象是 Android?這是件好事,我很高興看到 Android 又被告了。Oracle 告完,微軟告。後面還有開放源碼界的法律專家在等著。活該啊。

繼 Oracle 狀告 Google Android 之後,微軟也出手了。這還不止,就連涉足開放源碼界的法律專家也在質疑 Google Android 違反 GNU GPLv2 的內容。在更早一些時候(3/17),LinuxDevices 報導《Google accused of violating GPLv2 licensing in Android》,文中摘要了多位法律專家的見解。在這則新聞中,人們討論的對象,不是 Oracle 告 Android 的 Dalvik 虛擬機,而是 Linux 核心與 bionic 函數庫。Edward Naughton 嚴正地指出: If that is the case, Google has found a way to take Linux away from the open source community and privatize it.(Google's Android Contains Legal Landmines for Developers and Device Manufacturers).

在無碟式精簡電腦上安裝 Ubuntu Studio

我手上有一台無硬碟式精簡電腦 (Atrust t100),是廠商數年前給公司的工程樣機。 規格挺舊的(VIA Nano CPU),但上面沒有任何風扇,也沒有硬碟,運作時很安靜。 所以我試著用它啟動 Ubuntu Studio ,接上我的 USB DAC (NuForce Icon Mobile)。

Make an Ubuntu Studio system on USB/SD disk.

某項多行程與多線程模式效能差異之評測分析

日前我做了一項大量資料計算效能評測工作。 評測內容是多行程(multi-processing)與多線程模式(multi-threading)的效能差異。

根據程式內部的資料計算方式內容,從理論與個人經驗,我直覺預期這項評測的多行程模式的效能會比較高。 有趣的是,公司同事(或者說多數資訊人員)則是習慣性地認為多線程模式的效能比較高。

在 shell script 中使用圖形式互動元件 - dialog 與 zenity 使用範例

在 Unix 世界中,系統管理者普遍會用 shell script 撰寫簡單的管理工具。 為了強化易用性,簡化 shell script 的撰寫工作,就出現了專門負責提供圖形式互動元件的小工具, 可供我們在 shell script 中調用。 讓它們處理複雜的使用者輸入工作,同時也提高了 shell script 的使用親和力。

本文提供其中兩種工具的使用範例。

  • 一、文字終端機環境: dialog。 非 Ubuntu 預裝項目。
  • 二、GNOME桌面環境: zenity。 這是 GNOME Desktop 計劃下的一個小工具。為 Ubuntu 桌面版本預裝項目,Ubuntu 桌面版都會安裝此套件。

HTML5 - File API 簡易教學

HTML5 規劃了一組支援本地文件(客戶端文件)讀取的函數介面,即 File API。 透過 File API ,我們可以直接在瀏覽器中讀取客戶端的文件,而不需要先將檔案回傳到伺服端暫存後再讓瀏覽器取回顯示。

本文將設計兩個文件閱讀工具示範 File API 的用法。 整個工作僅需在瀏覽器(客戶端)使用 JavaScript 即可達成,完全不需要任何資料上傳到伺服端的工作。

微軟說,是朋友就不該讓朋友用 IE6

前往 IE6 Countdown ,一起為 IE6 送終。

癮科技: 微軟: 是朋友就不該讓朋友用 IE6

ZDNet: Microsoft: Friends don't let friends use Internet Explorer 6

我寫Web應用程式超過十年了,個人和 IE6 之間的關係可說是苦大仇深、誓不兩立。難得微軟發起了這麼一項有意義的活動,我不推一下就太對不起我自己了。

我去年在部落格上寫了一篇《歐盟和 Google 先後以政治手段解決了 IE6》。在文中有提到,國內阻礙 IE6 死亡的最大阻力其實就在政府機關。希望微軟出手後,能讓我們徹底擺脫 IE6 的陰影。

Logitech Trackman Marble on Debian / Ubuntu

繼小紅點(TrackPoint)讓我玩上癮之後,我又對另一種不常見的指標設備 — 軌跡球 — 感到興趣了。 昨天終於弄了一個價格合宜的羅技木星軌跡球(Logitech Trackman Marble)來玩,台幣約在680元左右。

包裝中附有 Windows 與 MacOS 的驅動程式。在 Windows 上的使用方式不必多講了。 我來說說在 Ubuntu 10.04 上使用這隻軌跡球的經驗吧。

2013-03-19 更新在 Debian 6 上的使用內容。

我看 MeeGo, WebOS, Android

我從一位 Linux 程序員的角度來看 MeeGo, WebOS, Android 之間的差異。 這三套作業系統同樣基於 Linux 核心並支援 ARM 架構。 寫下這篇筆記,提供想要進入它們的軟體發展領域的程序員參考。 如有不同看法,歡迎討論。