2011/12/11

保留 Firefox 的列印設定

我習慣將網路上看到的好文章列印成 PDF 檔保存。在 Ubuntu 上列印成 PDF是標準功能,不需額外安裝和設定。不過,在 Ubuntu 11.10 上用 Firefox 列印網頁,卻有幾個小困擾:
  1. FF 的預設印表機是 Postscript 印表機,不是 PDF 印表機
  2. FF 提供額外的頁首頁尾等資訊,但預設值都不是我想要的
因此,每次列印時都要重新點選相關設定,非常麻煩。經過一番努力,終於找出手動修改預設值的方法。
  1. 在網址列輸入 about:config 然後按 Enter (Firefox 會提醒你要小心修改)
  2. 在 Filter 輸入 default.print 縮小範圍,然後修改或新增以下項目:
printer_PostScript/default.print_footercenter =>
printer_PostScript/default.print_footerleft =>
printer_PostScript/default.print_footerright =>
printer_PostScript/default.print_headercenter =>
printer_PostScript/default.print_headerleft =>
printer_PostScript/default.print_headerright =>
printer_PostScript/default.print_to_filename => ~/firefox.pdf
以上是將列印檔名預設為 firefox.pdf,頁首頁尾設成空白。若你的設定不一樣,要先在列印對話框的 Options 做好設定列印一次,再重新進入 about:config。找出以下看起來是亂碼的設定項目:
printer_列印至檔案.print_...
就可以看出設定字串如何寫 (譬如 "&T"),將此字串複製到 default.print 對應那一部份就可以了。

2011/11/28

在 Ubuntu 解 Windows 的 ZIP 壓縮檔

有沒有搞錯?這不是很簡單嗎?

是的,這很簡單。但問題是有些在 Windows 壓縮的 ZIP 檔內含的中文檔名是 Big5 編碼,Ubuntu 的壓縮檔管理員解開時會是亂碼。原因是 ZIP 格式並未定義如何標示檔名的編碼,所以壓縮檔管理員一律當成 Unicode 來解。

遇到這個問題,可以用 command line 的 unzip 來解決:
unzip -O big5 your_compressed_file.zip
PS: 我發現 Ubuntu 10.04 的 unzip 已經移除 -O 的功能 (怪怪~~稍微新或舊一點的版本卻都有)。需要此功能的朋友,可以到以下頁面下載稍微新一點的版本來用:
http://packages.ubuntu.com/oneiric/unzip

2011/11/18

縮小 Ubuntu Unity 的圖示

Ubuntu Unity 的圖示有 48 點,實在有夠大。縮小的方法是安裝 Compiz Configuration Settings Manager (簡稱 CCSM):
sudo apt-get install compizconfig-settings-manager
執行 ccsm 之後,找到 Ubuntu Unity Plugin > Experimental 的 Launcher icon size,就可自由調整 (最小 32 點)。

2011/11/17

Ubuntu Unity 與 Skype

最近重新安裝 Ubuntu,才注意到 Unity 搭配 Skype 有兩個問題。

第一個問題是 Skype 的圖示不會出現在 notification area。Ubuntu 13.04/13.10 的解法是:
sudo apt-get install sni-qt:i386
Ubuntu 12.04 之前的版本,解法需先安裝 dconf-tools 這個套件:
sudo apt-get install dconf-tools
接著執行 dconf-editor 並找到 com.canonical.Unity.Panel.systray-whitelist (較新的作法) 或 desktop.unity.panel.systray-whitelist (較舊的作法),然後在最後加上 'Skype' 即可 (需登出再登入)。例如:
['JavaEmbeddedFrame', 'Wine', 'scp-dbus-service', 'Update-notifier', 'Skype']

第二個問題是,若 Skype 啟動後再點 Unity 上的 Skype 圖示,這動作並不是叫出 Skype 的視窗,而是重新再起動另一份 Skype (會因重複登入而錯誤)。解法在參考資料二,有用但需要一點小技巧。(Ubuntu 12.10 和 Skype 4.1.0.20 的組合,似乎無此問題)

參考資料:

1. How can I get the Skype notification back in the system tray?
2. Unity launcher and multiple instances of Skype 
3. How do I add a Skype indicator?

2011/10/26

在 Ubuntu 上使用玉山銀行的 WebATM

玉山銀行的 WebATM 是極少數不但支援 Windows + IE 平台,也支援 Linux + Firefox/Chrome 等平台的網路銀行。單這一點,就值得大力推薦。

WebATM 安裝方法還算簡單,請參考:
可以歸納為三個步驟:
  1. 安裝 Ubuntu 提供的 pcscd 套件
  2. 安裝讀卡機提供的驅動程式
    • cd driver_ezusb_v1.5.3_for_64_bit/
    • sudo ./install
  3. 在 Firefox 安裝玉山銀行提供的 WebATM plugin (看第六點)
不過,根據我在 Ubuntu 11.10 和 12.10 上的經驗,這樣的安裝程序似乎還不夠。可到 WebATM 健診頁面跑檢測程式:
我的情況是前三關都順利通過,但就是抓不到讀卡機。且在 /var/log/syslog 會出現以下錯誤訊息:
pcscd: readerfactory.c:965:RFInitializeReader() Open Port 0x200000 Failed (USB:0CA6/0010:LIBUDEV:0:/DEV/BUS/USB/004/002)
pcscd: readerfactory.c:275:RFAddReader() CASTLES EZ100PU init failed.
pcscd: hotplug_libudev.c:377:HPAddDevice() Failed adding USB device: CASTLES EZ100PU
這問題有兩個解法:第一個較簡單,第二個較安全。

解法一是舊式的作法,需以 root 身份執行 pcscd。請先修改 /etc/init.d/pcscd,將以下片段的 "exit 0" 註解掉,再重開機即可:
# DO NOT start the daemon on startup
# comment the line to have the same behavior as in version < 1.6.0
#exit 0
解法二是較安全的方式,是以使用者身份動態執行 pcscd,但你必須賦予這台讀卡機特殊的權限。作法是新建一個檔案:/etc/udev/rules.d/92-pcscd-ccid.rules。內容如下:
# If not adding the device, go away
ACTION!="add", GOTO="pcscd_ccid_rules_end"
SUBSYSTEM!="usb", GOTO="pcscd_ccid_rules_end"
ENV{DEVTYPE}!="usb_device", GOTO="pcscd_ccid_rules_end"

# Castles Technology Co., Ltd EZUSB PC/SC Smart Card Reader
ATTRS{idVendor}=="0ca6", ATTRS{idProduct}=="0010", GROUP="pcscd"

# All done
LABEL="pcscd_ccid_rules_end"
注意上面的 idVendor 和 idProduct 必須對應到讀卡機的 USB ID。你可用 lsusb 查出 USB ID,譬如:
Bus 003 Device 003: ID 0ca6:0010 Castles Technology Co., Ltd EZUSB PC/SC Smart Card Reader
改完後 sudo service udev restart,應該就大功告成了。

參考資料

2011/10/20

Ubuntu Unity UI 的術語

Ubuntu 11.04 的 Unity 感覺不是很穩,所以試用一陣子之後就 改用 AWN 了。此次,趁升級到 Ubuntu 11.10 時,又重新玩玩看。感覺進步不少,所以決定再給他一次機會:長時間持續使用並勉強自己克服既有操作習慣。

一週下來,還算理想。唯一的麻煩是有問題時不容易找答案:因為 google 時很難下 keyword,不知道該怎麼稱呼 Unity 的各個部位。後來,終於找到一份 Unity UI 的術語可作為參考:
PS: Oneiric 的 Unity 似乎跟 scim 相衝。因 Natty 之前 ibus 的酷音輸入法一直有問題,所以只能換成 scim。升級到 Oneiric 後,這個問題看起已經解決,換回 ibus 之後 Unity 和酷音輸入法都很正常。

2011/10/17

用 Python 來控制 Skype

終於找到一個可以利用 script 來控制 Skype 狀態的方法,先簡單留下參考資料:
利用 Skype for Linux 2.2.0.35 測試,確實可以改變 Skype 的狀態,但似乎還不夠穩,偶而會失敗。

利用 BlueProximity 和你的藍牙手機自動鎖住和解開 Ubuntu 桌面

你的 Ubuntu 桌面有啟動閒置幾分鐘後就自動鎖上嗎?時間設定太長,保防效果就低;但若太短,恐怕只是替自己添麻煩而已。

若你的手機有藍牙功能而且習慣手機不離身,那麼利用 BlueProximity 可讓 Ubuntu 偵測到你已經離開 (其實偵測對象是你的手機),你就可以在第一時間自動鎖上桌面。更酷的是,你回來後系統會自動解開等著你來用。

這方法是無意中看到的,還沒空測試,請大家自行參考、研究:

2011/09/30

綠色網頁 -- 網頁設計也能做環保

跟朋友借了一台 海韻 Power Angel 來測量家裡電器的用電情況。我的 Asus X61Z 筆電 (Ubuntu 11.04) 在開完機等待一小段時間後的發呆狀態下 (螢幕稍變暗) 消耗功率是 26W。將 Firefox 6.0.2 開啟後,繼續做了以下實驗。
  1. 連到 http://www.google.com.tw 後不做任何操作,等到螢幕變暗後觀察到消耗功率是 26W。
  2. 連到 http://news.chinatimes.com 後不做任何操作,等到螢幕變暗後觀察到消耗功率在 27W~32W 之間跳動。我的 Firefox 有裝 Flash Block,所以網頁上的 flash 是沒有啟動的。
  3. 繼續前一個實驗,但將網頁上的 flash 全部啟動後不做任何操作,等到螢幕變暗後觀察到消耗功率在 31W~37W 之間跳動。
  4. 繼續前一個實驗,將 Firefox 最小化後不做任何操作,等到螢幕變暗後觀察到消耗功率在 27W~28W 之間跳動。
  5. 連到 http://tw.yahoo.com 後不做任何操作,等到螢幕變暗後觀察到消耗功率在 27W~46W 之間跳動。我的 Firefox 有裝 Flash Block,所以網頁上的 flash 是沒有啟動的。
  6. 繼續前一個實驗,但將網頁上的 flash 全部啟動後不做任何操作,等到螢幕變暗後觀察到消耗功率在 28W~48W 之間跳動。
  7. 繼續前一個實驗,將 Firefox 最小化後不做任何操作,等到螢幕變暗後觀察到消耗功率在 27W~32W 之間跳動。
根據上面的實驗,有以下簡單的結論:
  • Google 這種靜態網頁最省電,放著也不會多耗電,堪稱綠色網頁。
  • 中時電子報Yahoo 之類的網站,為了吸引你的眼球,放了一堆 Ajax 或 Flash 在網頁上面跑。不管你看不看,都會消耗多餘的功率。
  • 不同的網頁,功率消耗也不一樣。但最小化後可以省掉畫面更新的消耗,多少省一點。
  • 看起來 Flash 消耗不少功率,裝個 Flash Block 既省頻寬又省電,值得推薦。
我家那台不知品牌的純有線 IP 分享器,消耗功率是 4W。若各大網站能多用點心,少點花俏,那麼省下來的功率就夠這台 IP 分享器用了。

2011/07/23

Can't remove 'db/transactions/1-1.txn'

老闆交辦一個新的案子,按慣例,先匯入 Subversion 好讓組員可以協同開發。原廠給的 SDK 接近 3G,很好奇要花多少時間才可以完成匯入? 半小時後還在進行... 卻猛然想起,svn import 時忘了加 --no-ignore,這會讓 svn 跳過 .a 和 .o 之類的檔案。只好按 ^C 煞車重來。

第二次重作忘了量時間,但一兩個小時跑不掉。看起來似乎 import 成功,但卻有一個錯誤訊息:
Can't remove 'db/transactions/1-1.txn'
svnadmin lstxns 去看,確實有一個 outstanding transaction,而且用 svnadmin rmtxns 也砍不掉。只好手動去砍掉 db/transactions/1-1.txn 這個目錄。

這樣做似乎不影響 Subversion 的使用,但連結的 Trac 好像受到影響而不能使用。解決方法是用以下指令重新同步 Trac 的 repository 資料 (也要等很久):
trac-admin $YOUR_TRAC_ENV repository resync ""



2011/04/02

手動修改 Python Egg 的克難方法

Trac 是相當好用的專案管理系統,非常值得推薦。不過,畢竟是免費的 open source project,有時候遇到問題必須自己想辦法克服。 聽起來有點可怕?放心啦,以下的案例是我使用 Trac 五年多來第一次必須自己想辦法解決。

簡單說,有一個我很常用的功能在升級到 Trac 0.12.2 之後,變得不能用了。本著 open source 的精神,我找到問題的所在,也大約知道應該如何修正。然後,我就到該 project 的 ticket system 回報問題的症狀和可能解法。結果,兩個月過去了,這個回報如石沉大海... (也許我沒仔細遵循他們的回報規範吧?)

雖然我知道如何解這問題,但 Trac 包裝成 Python egg,我不知道如何去修正裡面的程式。後來發現 egg 其實是 .zip 的壓縮檔,用 unzip 便可解開:
mkdir trac-egg
cd trac-egg
unzip ../Trac-0.12.2-py2.5.egg
很容易就可以在解開後的檔案內找到並修正問題點。然後,應該就是用 zip 再打包回去吧?
zip -r -9 ../Trac-0.12.2-py2.5.egg *
檔案大小的差異讓我有點遲疑,但還是將這個修正後的 egg 取代舊的:
cp ../Trac-0.12.2-py2.5.egg /usr/lib/python2.5/site-packages/Trac-0.12.2-py2.5.egg
初步以 trac-admin 來測試 OK,但從 Web 去存取就有錯了。錯誤訊息大約是無法解開 egg 檔,所以用 zip 打包的方法應該有錯。偏偏網路上又找不到如何包裝 Python egg 的方法 (我承認,第一眼看起來有點複雜的資料,我就放棄不看)。

就在我想放棄的時候,發現 zip 有一個參數可以只更新修改過的檔案:
zip -f ../Trac-0.12.2-py2.5.egg
這個指令只換掉我剛剛修改過的檔案,而克難修正後的 egg 檔果然能夠動作。

2011/03/02

在 Ubuntu 上看 GBK 簡中的 PDF 文件

朋友傳了一份 GBK 簡中編碼的 PDF 文件給我。此文件在 Ubuntu 底下 Adobe Reader 8.1.7 開不起來,錯誤訊息說要到以下網址下載 Font Packs:
http://www.adobe.com/products/acrobat/acrrasianfontpack.html
然而,這個 URL 早已失效了。切換到 Windows Vista,用 Adobe Reader X 來開啟,也是要求要安裝 Chinese Simplified Font Packs。但畢竟是主流平台的最新版本,直接點選錯誤訊息的連結就可以完成安裝程序。

在 Ubuntu 上就沒有解法嗎?答案是有的。Adobe Reader 8.1.7 是 Linux 上有中文介面的最新版本,但卻沒有對應的 Chinese Simplified Font Packs,所以必須換成英文介面的較新版本。

目前,Adobe 網站上能找到的最新 Chinese Simplified Font Packs 是 9.1.0 版。根據測試,可以搭配 Adobe Reader 9.5.5。步驟如下:

移除舊版 Adobe Reader 之後,再安裝新的版本:
# sudo -s
# cd /tmp
# wget ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.5.5/enu/AdbeRdr9.5.5-1_i386linux_enu.deb
# dpkg -i
AdbeRdr9.5.5-1_i386linux_enu.deb
接著,再安裝 Font Packs (簡中和繁中都必須裝,否則 Big5 編碼的也開不起來):
# wget ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.1/misc/FontPack910_cht_i486-linux.tar.bz2
# tar xvjf FontPack910_cht_i486-linux.tar.bz2
# cd CHTKIT/
# ./INSTALL
# cd /tmp
# wget ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.1/misc/FontPack910_chs_i486-linux.tar.bz2
# tar xvjf FontPack910_chs_i486-linux.tar.bz2
# cd CHSKIT/
# ./INSTALL
以下是 ./INTALL 的過程,僅供參考:
Welcome to the Asian Language Kit installation.
This installation will not work if you do not have the Unix Adobe Reader version 9.1 installed prior to this installation.
If you do not have Adobe Reader version 9.1 already installed on your system please do so before installing this Asian Language Kit.
Continue installation? [y]y
The font software contained in this package is being licensed to you solely
for use with the Adobe Reader product ("Adobe Reader") subject to
the terms and conditions of the Electronic End User License Agreement
accompanying the Adobe Reader.

Please type "accept" to accept the terms and conditions of license agreement; Type "decline" to exit. accept
Enter the location where you installed the Adobe Reader [/opt]

Installing Common binaries ...
Done

Installing Common resources ...
Done

Installing Simplified Chinese language resources ...
Done
Installation completed.

2011/02/26

將 gnome-panel 完全移除

Ubuntu 預設的 gnome-panel 組態是有上下兩組 panel。若你想移除其中一組,只要在 panel 上面按右鍵即可找到移除的功能。但若你想移除最後一個 panel,這一招就沒有用了。必須改用以下的方法:
  1. 執行 gconf-editor
  2. 找到 desktop > gnome > session > required_components > panel
  3. panel 的值應該是 gnome-panel,把它改成空白
  4. 登出再登入即可生效



你問我為何要移除 gnome-panel?嗯,我找到一個不錯的替代套件:Avant-window-navigator (Awn),畫面如上所示。這個套件是類似 MacOS X 的 panel,gnome-panel 有的功能幾乎都有。個人習慣利用他 Intellhide (聰明隱藏) 的特性,將所有螢幕空間留給應用程式。

2011/02/07

Ubuntu 的 VNC 套件

Ubuntu 上官方的 VNC 套件為:
  • Server 是 vino
  • Client 是 vinagre
啟動 VNC server 的方式很簡單:
  1. 登入準備作為遠端桌面那台主機
  2. 執行 vino 設定 (系統 > 偏好設定 > 遠端桌面),設定範例如下
  3. 完成設定之後,只要保持登入狀態,VNC server 就自動啟動 (重新登入也一樣)


注意!若遠端桌面有啟動特殊視覺效果,可能會影響 client 端檢視桌面的完整性。建議關掉所有特殊視覺效果:
  1. 登入準備作為遠端桌面那台主機
  2. 在桌面按右鍵 > 更改桌面背景 > 視覺效果 > 選「無」
VNC client 連到遠端桌面的方法也很簡單:
  1. 執行 vinagre (網際網路 > 遠端桌面檢視器)
  2. 若一切正常,應該可以在左側邊面板看到遠端主機的名字,點擊該名字即可連線