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. 若一切正常,應該可以在左側邊面板看到遠端主機的名字,點擊該名字即可連線

2010/11/12

在 Ubuntu 上解開 x.part1.rar 分割壓縮檔

在 Windows 上可以用 7-zip 或 WinRAR 之類的程式來解開並組合 x.part1.rar 這類型的分割壓縮檔。在 Ubuntu 上當然也可以:
rar e x.part1.rar
當然,要先安裝 rar:
sudo apt-get install rar