試著把 rtorrent 升級到 0.8.2/libtorrent 0.12.2,新版修正了幾個嚴重的 memory leaks 與 EINTR signal handling 問題,以及 Super-seeding (Initial seeding).

由於 rtorrent 在 Debian sid 中一直都是 0.7.9,於是只好繼續自己維護一個新版本的 debian packages。Ubuntu intrepid 倒是已經是 0.8.2

編譯的時候,由於我的系統已經升級到 g++ 4.3 的緣故,必須配合 Header dependency streamlining
補入 C++ Headers。這個問題已經已經有人回報到 trac 上,詳細修改可以參考 Gentoo 的 patches. (libtorrent-0.11.9+gcc-4.3.patch, rtorrent-0.8.0+gcc-4.3.patch)。

由於時常需要同時開啟數個 Terminal 來作系統設定,因此一直在找一個方便安排視窗位置的軟體或方法。

雖說 GNU Screen 的 regions 機制,可以讓你在同一個 Screen window 中切割出不同的橫向視窗。但是你得熟記指令或熱鍵才好於不同的視窗間切換,無法使用滑鼠切換視窗焦點,當然也無法方便的利用滾動軸查看稍早的指令輸出。且 GNU Screen 目前還不支援垂直分割,必須套上額外的補釘

另外一個方式是使用 Tiling Tabbed Window Manager,若你習慣純粹使用 CLI 來工作,使用應該沒有甚麼大問題,它會協助你將終端機規矩的置於數個獨立視窗中,你可利用 Window Manager 設定的快速鍵來切換視窗。常見的軟體有 Ion, Aweson, Ratpoison, Stumpwm, Wmii 等。

但若你已經習慣了現有的 Window Manager,或習慣讓大部份的軟體使用浮動視窗的介面。你可以試試 terminator。terminator 是使用 Python 與 VTE Terminal Widget 所寫成,於其他的終端機模擬軟體不同的是,terminator 方便讓你把視窗排列組成格狀,你可以任意對視窗作橫向或垂直分割。於是你可以方便的開啟一堆視窗,並將他們安插在你想要的位置。

由於 terminator 支援 Gnome Terminal 的 Profile (設定組合),我習慣設定一個 coding profile,定義方便閱讀程式碼的小字型 (方便瀏覽更多程式碼),並使用 terminator -f -p coding,開啟一個全螢幕的視窗來工作。這是我查看 terminator 原始碼的畫面。

新版的 terminator 0.9 在七月初發行,增加了幾個重要的功能包含了 Tabs, Drag & Drop, Terminal zooming/maximizing, support for ~/.config/terminator/config 等 (細節請參照 trunk 中的 ChangeLog)。

拖拉視窗功能則是非常重要的殺手級功能,從此,你可以方便的將任一視窗拉近另外一個分割視窗、或另外一個分頁中。我在使用 Gnome Terminal 時,也時常使用拖拉功能,將分頁拉出成為獨立的視窗,可方便對照程式碼、文件,或者將相關於特定專案、伺服器的視窗拉近同一個視窗中作為分頁。Terminator 在新版中也一併實做了 Tabs 分頁功能。

另外一個好用的新功能是全螢幕或放大螢幕,由於你通常會開數個終端機進行不同的事情,若是想專注在單一視窗時,就可以使用全螢幕 (Ctrl+Shift+X),再按一次就可以回到多視窗功能。而 Zooming (Ctrl+Shift+Z) 則是將當下的視窗解析度放大到全螢幕,於是你可以得到大字型的單一視窗。

新版的中也做了設定檔,可以讓你稍微自訂一些參數設定。但是這尚未包含所有的設定,如 profiles 就還不能在設定檔中設定。

目前 terminator 已經相當好用,若是可以再實做類 Screen/Vim 的視窗切換快速鍵,那就更方便不過了。

專案首頁位於 Launchpad.

試著在剛裝好的 Ubuntu 上亂打一些指令時,發現在 CLI 介面,Ubuntu 會聰明的提醒你忘了裝甚麼軟體套件。

user@user-laptop:~$ proxychains
The program 'proxychains' is currently not installed.  
You can install it by typing:
sudo apt-get install proxychains
-bash: proxychains: command not found

稍微玩了一下,發現是 command-not-found 這個神奇法術。軟體套件包含 /usr/lib/command-not-found 、是一個用 Python 刻的指令稿,此軟體會查詢預先建成的指令/軟體名稱資料庫,只要餵給它指令名稱,他可以迅速的提示如何安裝含有該指令的軟體套件。由於資料庫是 gdbm,且大小只有 2.3M (command-not-found-data 0.2.17ubuntu1),因此查詢的速度相當快,使用者不太感覺到差異。

要使用此功能,尚必須在 bash 中定義一個 command_not_found_handle 函式,在查無指令時自動執行 command-not-found. Ubuntu 已經將這段程式建於 /etc/bash.bashrc.

不過目前使用的套件資料庫是預建的,因此不會依照你所使用的 apt sources 自動更新資料庫。若是可以整合 apt-file 與 dlocate 兩個的功能,應該可以提供較有彈性的功能吧。

Flash Player 9 後又過了一年半,Adobe 終於又將發行支援 Linux 的 Flash Player 10

新版的 Flash 在各種多媒體處理的能力與效能上都有重大的改進。包含了新的 繪圖/3D API、新的音效處理 API,在 Linux 平台上尚新增了以下功能

  • Linux WMODE (windowless mode)
  • Video4Linux v2 Support
  • unloadAndStop
  • Limited Fullscreen Keyboard Access
  • File Reference runtime access
  • Dynamic Sound Generation
  • Large Bitmap Support
  • Context Menu
  • GB18030 Compliance
  • Ubuntu OS Support

終於,Flash 不會老是浮起來蓋住 HTML。當然,我最關心的其中一個功能是新的 Flash Player 支援 v4l2,於是我終於有機會不需靠 Flashcam 或 patch libflashsupport.c 使用 Webcam,可以開始玩 Yahoo Live, wooMeseesmic 等網站。

但稍微測試了一下還是有些問題。Flash 似乎無法與我使用的 uvcvideo 融洽相處,總是會再抓了一張 frame 後抱怨 ‘Camera is unavailable, may be in use by another application‘。目前測試的版本是 Flash Player 10 Beta2,希望正式版發行前可以修正這個問題

另外一個令人感興趣的功能是,在新的 Flash 10 的 Release Note 中提到了 RTMFP,與 RTMP 不同的是,RTMFP 是以 UDP 為基礎的 P2P 通訊協定。根據 Release Note 中的敘述,這項技術來自 Adobe 於 2006 所收購的 Amicima 公司,在 RTMFP FAQ 中有稍微詳細的技術說明。以目前的技術規格來看,雖然無法做到類似 Bittorrnet 的 P2P Swarming 來作檔案分享。但是可以拿來作點對點的通訊協定替代品,對於建立像 wooMe 這樣的服務來講,可以省下大量的頻寬才是。

在追一個 Firefox 延伸模組時,試著玩了一下在 Firefox 外掛中使用 Java 的方法。

原來你可以用 XPConnect 來存取 Java Object,甚至將你的 Java object 封裝成 XPCOM,以方便 Java Script 取用。範例可參考 Simile ProjectJava Firefox Extension。於是乎,你的外掛介面可以用 XUL/Java Script 實做,但後端丟給 Java 來處理,若是拿來整合某些企業應用程式,應該可以比較快速的拉出使用者介面與整合商務邏輯。

或者,你也可以使用 JavaXPCOM,讓你的 Java 程式存取 XPCOM 介面的元件。

之前在講 Nokia S60 上的連線軟體時,曾經提到可以使用 HandyWi 來登入無線熱點如 FON中華電信WiFly

事實上,這些無線網路服務商入口認證網頁中都支援 WISPr,WISPr 是由 Wi-Fi Alliance 所提供,由 Browan (Gemtek)、iPass 與 Nomadx 等公司所擬定。這個協定讓使用者可以於不同的無線網路服務供應商間漫遊,透過內嵌於網頁中的敘述,無線使用者可以透過 802.1XUAM (網頁介面認證機制) 來自動登入,而不需要每次都手動打入自己的帳號密碼。(規格可於此下載)

行動裝置上有不少工具都支援 WISPr,如 FON 提供了 Symbian 連線管理員iFON,社群裡面也有人開發了 CrYpToNyM Pocket FON Connecto。WiFly 則支援 Windows Mobile.

若你也時常帶著筆記型電腦到處跑,大約也會時常需要登入使用無線網路熱點。若你讀了 WISPr協定,應該會了解實做一個自動登入 UAM 是頗為容易的事情。只要幾行 Perl script 就可以搞定,就像我的這個小範例。當然網路上也有其他人以其他語言做了類似的軟體,如以 Java 寫的 FONnector

若你使用 Firefox ,又常常在外面亂跑,不妨試試 Coova Firefox Extension,這是 David Bird開發的外掛。它會自動判斷目前網路是否需要登入,並自動使用你所輸入儲存的密碼登入網路。相當方便。


Source: http://coova.org/wiki/index.php/CoovaFX

這個外掛核心是使用 JRadius Project 中的 WISPr client,因此需要安裝 Java Plugin 才能執行。請記得在 “Edit/Preferences/Content/Enable Java” 選單中開啟 Java 喔。