gjs/gnome-shell 雜項筆記

gjs 相關的內容實在太散亂了。 一些不足以湊成單獨一篇文章的內容,我就統一放在這裡了。 目前有下列項目:

  • ARGV - 取得命令列參數
  • imports.gi.versions - 指定 GIRepository 資源版本
  • 執行外部程式 - 如果想用 gjs 寫 shell script...

gjs - To manage custom library (管理自製程式庫)

gjs 使用 imports.searchPath 屬性 (型態為陣列) 管理程式庫的資料夾。 因為那是一個陣列,所以用 push() 方法就可以往裡面增加程式庫資料夾。

加入資料夾路徑後,該資料夾與子資料夾內所有的 js 文件都會被載入。 文件名稱將成為 imports 的屬性名稱,而子資料夾階層可視為名稱空間。

COSCUP2012 twitter 記錄

我當天邊聽邊推文(#coscup2012),這裡是推文內容的備份,再加上一些後來才想到的內容。

當天議程內容,都有錄影並會放上 COSCUP 2012 網站。有興趣的自行觀看,我這就不談內容了。

賴桑的經歷與一般現象

幾位LZ既然在此高舉軟體業的旗幟,那就拿個實證給大家看看如何? 賴桑 回應

我沒碰過台灣高鐵哪麼大的案子,賴桑說的那幾個人我全不認識。 我只是個在log上抱怨的小員工,月薪比賴桑還低,別把我抬舉成拿旗子的。

不過賴桑說的事,牽涉到許多台面下的事,而且不是只存在於資訊軟體業。

用查表代替 switch - struct, union 與 enum 的應用

很久以前,我已忘了是在哪本書看到的事(或許不只一本書)。書中說使用 switch..case.. 的場合,大部份都可以也應該改用查表方式代替。 這句話的意義也含括了一句程式設計領域的名言,即「資料結構 + 演算法 = 程式」。

大多數場合,連續的 switch..case.. 或 if..elseif.. 只是不斷複製類似的程式片段。 這種文章結構,沒有運用資料結構觀念,就連演算法的部份也很粗糙,是很糟糕的程式碼。 而在改用查表方式的重構過程中,規劃資料結構建「表」,並設計「查」的演算法, 就自然而然地實踐了「資料結構 + 演算法 = 程式」這句話,也提高了程式碼的品質。

如何訂製 Linux X 視窗環境

以 Debian 6 與 Ubuntu 10.04 / 12.04 為基礎,說明如何訂製 X 視窗環境。 相關內容:

  • GDM
  • startx
  • Xsession
  • openvt - no GDM
  • OpenBox

Debian 6 如何增加系統啟動程式與指定順序

以往在 Debian 5 或 Ubuntu 10.04 中,我們使用下列指令所示範的內容,新增系統啟動程式:


# update-rc.d hello defaults NN 

其中的 NN 可以指定啟動順序,例如 90 。

但是在 Debian 6 使用此指令時,我們將發現 NN 不作用了。這是因為 Debian 6 現在參考 LSB (Linux Standard Base) 制定的「System Initialization」規範,以啟動指令稿內的 INIT 敘述區塊決定啟動順序,不再理會參數指定的數字。同時,Debian 6 也改用 insserv 指令取代 update-rc.d 。

『舟を編む』與『天地明察』

上個月到日本賞櫻時,晚上在書店稍微翻看了三浦しをん的『舟を編む』。 這本是日本「2012年本屋大賞」作品,故事主角的工作與興趣是編字典。 這讓我想起日本「2010年本屋大賞」的作品『天地明察』,那部主角的工作是編曆法。 不管是編字典,還是編曆法,在大部份人眼中,都是既枯橾又冗長,還必須長時間專注工作的事。

More about 舟を編む
Amazon.co.jp : 舟を編む
More about 天地明察
Amazon.co.jp : 天地明察

Debian 6 與 PulseAudio ~ 讓瀏覽器的 flash 在正確的音效設備上發聲

Debian 6 GNOME 桌面環境預設的音訊模組是 ALSA 。 它在大部份情形下都工作得很好,但是對於有電腦上裝有多張音效卡的使用者來說,不太方便。

以我的情形來說,電腦裝兩張音效卡是很平常的事。所以我有時候會根據我的需求,在播放媒體時切換音訊輸出的裝置。例如我需要指定瀏覽器看 Youtube 時從 A 音效卡輸出聲音,而影片播放程式則從 B 音效卡輸出聲音。 就像我在「使用 PulseAudio 命令列工具切換應用程式使用的音效設備」這篇文章中要做的事。然而 ALSA 在這一點上並不方便。

油電雙漲與兩個便當

在談油電雙漲和兩個便當之前,我先說一下這陣子我對內閣成員表現的感想。總統先生,你對國家政策大方向的把握是對的,嚴守行政職權的分際也是好事。「但是」,套用國軍人事文化的說法,你挑的內閣成員似乎專門挖坑給自己和長官跳。「不打勤,不打懶,專打不長眼」。我看報紙時都在想,這些政策風聲放出來之前,內閣之間到底有沒有橫向溝通協調。

雙螢幕桌布DIY製作程式

我的桌上電腦使用兩台螢幕,一直一橫。如果在 Windows XP 系統想要兩個螢幕上分別使用不同的桌布,需要一些小技巧。 有人介紹 DisplayFusion 這套軟體。但或許它調整過試用版可用的功能,我安裝後並不能分別設定桌布。 所以我又去思考如何自己動手作了。

自己動手製作雙螢幕桌布的技巧,請參考這位作者的說明:「雙螢幕不同桌布DIY教學」。 但我覺得用繪圖軟體修圖很麻煩,再說製作過程只需要方形區域的剪貼合併動作,所以我乾脆寫一個小程式來做這件事。

gjs - byteArray

在 ECMAScript 規範中,string 資料型別基本是 utf-8 編碼的字元集合,一個字元的資料大小不一定是一個 byte 。用於處理 bytes 資料並不是那麼恰當。 gjs/gnome-shell 另外提供了 byteArray 資料型別,以便更精準地處理位元組資料集合。雖然它不常用。

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之間。