八月 22, 2010
» IBM R60e 上的 Ubuntu 10.04 透過 HTC wildfire 上網

我的 R60e 在裝了 Ubuntu 8.04 或是 Ubuntu 9.04 之後,無線網路的運作一直很奇怪,在開啟無線網卡後,訊號十分不穩定,用 ping 來測試,往往時間都會超過 500ms 。一直到現在的 Ubuntu 10.04 都是一樣的,無線網路能連但是不能用。嘗試了很多方法,都沒效果,再加上我家有一段時間是沒有 AP 的,要到學校研究室才會遇到這個問題,而往往我都是用"有線網路"來解決這個無線網路的效能問題,所以也就沒有認真地想把這個問題解決。

一直到我買了一支 HTC wildfire 後,因為對 3G 無線上網的需求實在不高,我大部份時間都待在家,所以就弄了台 AP 擺在家裡。 wildfire 使用無線網路當然是非常順暢地,要不然宏達電不會躍升為全球第八大的手機商。既然 wildfire 上網很順,我想不如就把它的網路分享給 R60e 用吧!

為此,我找了個周日,打算好好地研究一番。想說這種分享方法,原則上應該會在 Ubuntu 上生成一種 usb 裝置,然後我再找出它設定方式就解決了。

結果,我只是用 usb 線把 wildfire 跟 R60e 接起來後,在 wildfire 上選擇「網際網路分享」,它就能用。

它就能用了耶!

六月 4, 2010
» 升級到 Ubuntu 10.04 後,發生無法使用公私錀登入問題

Ubuntu 10.04 對我而言,最大的優點是內建了家目錄加密的功能。然而在實際使用上,才發現這與我預期的有一段落差,只是這個落差是當初我沒想清楚所造成的。


原本,我以為用了家目錄加密後,一般使用者可以不怕檔案被 root 看光光,但
這是錯的,創建帳號的管理員一開始就可以備份「加密錀匙」,所以就算一般使用者登入後更換密碼,也不會重新製作一把「加密錀匙」,所以更換密碼的動作,只把「加密錀匙」用另一組密碼保存起來,帳號管理員一樣可用之前所保存的「加密錀匙」還原檔案。除非,使用者更換「加密錀匙」(但很麻煩,也需要系統權限),或是一開始,就不要帳號管理員設定「家目錄加密」功能,而是使用者自己作「目錄加密」的動作

原本,我以為不打「登入密碼」,就看不到家目錄,但
這是錯的,只要該使用者登入後有掛載該目錄,其他人就可以透過權限驗證方式來觀看,因為該使用者已將目錄解密了。

原本,我以為一般人可以在自己的家目錄執行網頁程式而不被其他人知道他搞了什麼網站,只要 apache 設定檔有設定 Include /home/xxx/self.conf 之類的語法即可,但
這是錯的。家目錄既然已加密,那 apache daemon 就沒辦法進到網頁程式的目錄,又如何執行它們。

嚴格的說,這個家目錄加密功能,只能用在其他人無法使用光碟開機或是重灌系統來獲取硬碟資料,就只是這樣而已,而這功能,我的 IBM Thinkpad 用硬碟密碼就作到了,我白玩了。但這一切都是我自己先想錯了呀!

而且在使用此功能還發生一件非常烏龍的鳥事,就是無法使用公私錀登入,因為公錀資料夾是放在家目錄的,既然它被加密了,那 ssh daemon 又如何拿到公錀來驗證呢! 解法很簡單,在 /etc/ssh/sshd_config 中,設定

AuthorizedKeysFile /home/ssh-keys/%u/authorized_keys2

即可,也就是將使用者公錀放到沒被加密的資料夾。解法很簡單,但我卻搞了兩天,因為我在 sshd_config 中寫的是

AuthorizedKeysFile /home/ssh-keys/%u/authorized_keys

,但在資料夾中放的是
authorized_keys2 。一個 2 ,我看了 2 天,才發現不一樣。這就是人生呀!

六月 2, 2010
» XMPP 初探

最近剛好有機會碰到XMPP,把一些學習心得記錄在這邊。XMPP(Extensible Messageing and Presence Protocol) 是一種IM的通訊協定,其前身為Jabber,後於IETF標準化為RFC3920。除了一般通訊協定常有的Server與Client外,XMPP還另外定義了Gateway,只要通過Gateway,便可以與其他的IM Protocol通話。XMPP最大的特色在於傳輸的內容。其傳輸的內容為XML;藉由XML的擴充性,可以達到許多的擴展應用。不過也由於傳輸內容為XML,因此無法提供二進制的資料。檔案傳輸需藉由外部HTTP。如果不可避免,XMPP協議提供了Base64的方式傳輸帶編碼文件。XMPP每個用戶在網路上都有個獨特的Jabber ID,簡稱為JID。JID由id, domain 與 resource3個部份組成。其格式為:id@domain

五月 28, 2010
» 如何解決 TortoiseHG on Windows 上中文檔名的問題

因為 Windows 在紀錄檔案名稱時,是用 UTF-16 ,而不是 UTF-8 作紀錄,所以如果在 Windows 中,加入一個「中文檔名(嚴格來說,是非 ascii 編碼的名稱)」的檔案,那麼這個檔案到了 Mac OS X, Linux 平台時,就無法使用了。


要解決這個問題,只要 Windows 使用者用 fixutf8 extension 先處理檔名即可。下載程式碼後,只要到 hgrc.d/Mercurial.rc 檔中,加入

[extensions]
fixutf8 = C:/fix-utf8/fixutf8.py

但使用這個外掛(16 (baf283ab9f92)版)會導致 TortoiseHG 無法作 commit 的動作,這 commit 問題,我找了很久,但實在沒辦法解決,只知道 TortoiseHG 將 commit message 以 cp950 送出,但 fixutf8 卻要求 message 要以 utf8 進入,但那裡的程式要修改,我就 de 不到了。

目前我只能回到 cmd.exe 底下,用 hg ci 來作提交動作。

而且,在使用 fixutf8 下,有可能會導致 merge 功能錯亂,這時候,就只得用 Linux/Mac OS X 來解決 merge 問題。

» Install Python2.5 on Ubuntu 10.04 for Google App Engine

Ubuntu 10.04 已經預設不包 Python2.5 了,對寫 GAE 的人來說,這有點麻煩,到目前為止 GAE 並未正式地支援 2.6 ,所以最好認命地在 Ubuntu 10.04 中創建一個 Python2.5 的環境。


裝 2.5 的目的是為了開發 GAE 程式,所以我們需要額外下載這些程式碼:
  1. Python2.5
  2. PIL
  3. python-ipaddr
# 利用 apt-get 安裝相關函式庫,除 libssl-dev 外,其他的套件是給 PIL 用的
$ sudo apt-get install liblcms1-dev zlib1g-dev libfreetype6-dev libjpeg62-dev libsqlite3-dev libssl-dev

# 安裝 Python2.5.5 至 /usr/local
$ tar -jxf Python-2.5.5.tar.bz2
$ cd Python-2.5.5
$ ./configure -with-zlib=/usr/include
$ make
$ sudo make install

# 安裝 GAE 相依模組 ipaddr
$ tar -zxf ipaddr-2.1.1.tar.gz
$ cd ipaddr-2.1.1/
$ sudo /usr/local/bin/python2.5 setup.py install

#安裝 PIL
$ tar -zxf Imaging-1.1.7.tar.gz
$ cd Imaging-1.1.7
# 修改 setup.py 中的使用函式庫位置
# LCMS_ROOT = '/usr/lib'
# TCL_ROOT = '/usr/lib'
# JPEG_ROOT = "/usr/lib"
# ZLIB_ROOT = "/lib"
# TIFF_ROOT = '/usr/lib'
# FREETYPE_ROOT = "/lib"

#檢查模組是否可使用
$ /usr/local/bin/python2.5 setup.py build_ext -i
#測試模組
$ /usr/local/bin/python2.5 selftest.py
$ sudo /usr/local/bin/python2.5 setup.py install

最後,再把 dev_appserver.py, appcft.py 中的 #!/usr/bin/env python 改成 #!/usr/bin/env python2.5 即可。這樣就可以在 Ubuntu 10.04 中開發 GAE 程式了。

五月 25, 2010
» 用隨身碟安裝 Linux

我的電腦有些是沒有光碟機的,事實上,光碟機的使用機率是愈來愈低,我曾有一台 Thinkpad 大半年沒開過光碟機,結果要用時,它卻發生讀片錯誤。

所以這次重新安裝 Ubuntu 10.04 時,我是採用隨身碟安裝的方式,而也因為 Open Source 工具愈來愈多、愈來愈方便下,我只使用了 usb-creator 程式,就將 ubuntu-10.04-alternate-amd64.iso 燒到 4G 隨身碟了,方法很簡單,先安裝 usb-creator(# apt-get install usb-creator) ,然後在命令列裡執行 usb-creator-gtk 。選擇要安裝的 iso 檔,並抹除隨身碟內的資料,就可以「製作開機磁碟」了。



接下來,就是重新安裝機器了,首先要切換 BIOS 的開機選項,在技嘉的 BIOS 上,我只選了 usb-hdd 就可從隨身碟開機,然而華碩的 BIOS ,除了要將 boot 選項切到 remoted-device 外,還要調整 usb storage 的 Forced FDD 類型。調整後,就如往常一樣重灌 Ubuntu 了。



» "ThinkPad USB Keyboard with TrackPoint" 在 Ubuntu 10.04 的中鍵滾動設定方式

參考了我與小黑(ThinkPad X200s)之小紅點文章後,可輕鬆地設定了我的 R60e 中鍵滾動功能,然而一直無法在我的桌上型電腦上以 gpointing-device-settings 方法或是用 xinput 指令設定成功。因為設備名稱不同所以 "TPPS/2 IBM TrackPoint" 要改成 "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" ,但它就是不成功,指令如下:

# 啟用中鍵模擬功能
xinput set-int-prop "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" "Evdev Middle Button Emulation" 8 1
# 啟用滾輪模擬功能
xinput set-int-prop "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" "Evdev Wheel Emulation" 8 1
xinput set-int-prop "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" "Evdev Wheel Emulation Axes" 8 6 7 4 5
xinput set-int-prop "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" "Emulation Button" 8 2

# 靈敏度
xinput set-int-prop "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" "Evdev Middle Button Timeout" 8 50
xinput set-int-prop "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" "Evdev Wheel Emulation Inertia" 8 10
xinput set-int-prop "Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint" "Evdev Wheel Emulation Timeout" 8 200


還好該文章有詳細參考文件 How to configure the TrackPoing ,從該文中,得知還有別種設定方法,所以我在 /usr/lib/X11/xorg.conf.d/20-thinkpad.conf 中,置入文句如下:


Section "InputClass"
Identifier "Trackpoint Wheel Emulation"
MatchProduct "TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device"
MatchDevicePath "/dev/input/event*"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "Emulate3Buttons" "false"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection

然後重開機,就搞定了。

五月 20, 2010
» 使用公私錀登入 Linux 後,如何掛載被加密的目錄?

登入後,因為還沒有輸入過系統密碼,所以無法掛載加密目錄,這時候只會在家目錄看到


Access-Your-Private-Data.desktop README.txt

兩個檔案,其中 README.txt 的內容如下:

# cat README.txt
THIS DIRECTORY HAS BEEN UNMOUNTED TO PROTECT YOUR DATA.

From the graphical desktop, click on:
"Access Your Private Data"

or

From the command line, run:
ecryptfs-mount-private

也就是要你執行 ecryptfs-mount-private ,執行後,它會問你系統密碼,鍵入後,加密目錄就被掛載進來,只是你要重新再進入一次家目錄,才會看到還原的內容。

快速進入家目錄指令:

# cd

» 使用 eCryptfs ,記得一定要備份下「加密錀匙」

使用 eCryptfs 加密目錄時,通常會隨機生成一把 32 字元的加密錀匙,來作目錄作加密,然後再使用使用者密碼來對「加密錀匙」作加密。所以如果因故弄丟了「加密錀匙」,但還記得「使用者密碼」,也是沒有用的。


所以記得,在使用此加密功能前,一定一定一定要先備份「加密錀匙」。

備份方式如下:

# cd /home/.ecryptfs/YOUR_ACCOUNT/.ecryptfs
or
# cd ~/.ecryptfs

# ls
auto-mount auto-umount Private.mnt Private.sig wrapped-passphrase

這個 wrapped-passphrase 就是「加密錀匙」被「使用者密碼」加密後的檔案。

# ecryptfs-unwrap-passphrase wrapped-passphrase
Passphrase: '''輸入使用者密碼'''
b19becdz81z8ba06aa4z35e6z1c0227f

這個 b19becdz81z8ba06aa4z35e6z1c0227f 就是「加密錀匙」,趕快把它記錄到其他檔案去。

五月 19, 2010
» 山形尖叫 / NoMachine NX

P8068007
butterfly.Taiwan

山形尖叫,因為有山形才看的。
好怪的一部片。

==

看同事都是用NX也不是vncviewer,所以我也上網找文件設定了一下。
果然速度快了很多,不會像vncviewer那樣,卡得要命。

https://help.ubuntu.com/community/FreeNX
http://www.nomachine.com/download-client-windows.php

四月 23, 2010
» 我對自由軟體的一些想法

這是好久以前我在ubuntu-tw論壇跟人貼過的文,覺得很能代表我對自由軟體的看法和大家分享一下。================================================http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=73340#forumpost73340#315 回覆: 企業引進Linux取代Windows之評估雨蒼 2009/4/9 12:15小弟目前有上MCSE課程,也上過NCLP課程並取得認證。微軟認證也考了兩張。這兩個課程幾乎都聽了兩次。小弟深深感到,如果我是企業,我真的比較會考慮微軟。為什麼?1.微軟解決方案非常完整。他們的解決方案可以解決幾乎大部分的需求。甚至針對企業級的架構也有非常耐用的解決方案。2.當你出問題的時候,微軟可以保證幫你解決。3.

三月 6, 2010
» 更改Debian預設安裝桌面的方法

Debian netinstall光碟安裝KDE LXDE XFCE為預設桌面的方法:在開機時,按tab在開機選項後面加上 desktop={kde|lxde|xfce}之後安裝時就自動會安裝 KDE|LXDE|XFce 為預設桌面囉!

二月 6, 2010
» 好文一篇:Re: [問卦] 有沒有念資訊一定要討厭windows的八卦

這篇文章看了覺得寫的不錯,因此經過原作者同意後,就轉過來了。文章代碼(AID): #1BR7wzrt (Gossiping) 作者 Freak1033 (金が信念! XD) 看板 Gossiping 標題 Re: [問卦] 有沒有念資訊一定要討厭windows的八卦 時間 Sat Feb 6 04:25:29 2010───────────────────────────────────────※ 引述《HollisterCo (海鷗)》之銘言:: 身邊有些朋友念資訊的: 但是莫名其妙的就會說你怎麼還在用微軟的東西: 媽的爛死了之類的 你看linux都不會當機 也不會中毒: 用linux才屌!! 用甚麼GUI 弱者才再用: 強者都用CLI!!!!: 是不是真的打打指令就比較厲害??????? Q_Q唉呀,

一月 27, 2010
» Upcoming Django 1.2 & PostgreSQL 9.0

http://docs.djangoproject.com/en/dev/topics/db/multi-db/#topics-db-multi-db
Django 1.2 新功能: Multiple databases

PostgreSQL 9.0 新功能 Hot Standby跟Streaming Replication

http://wiki.postgresql.org/wiki/Streaming_Replication

http://developer.postgresql.org/pgdocs/postgres/hot-standby.html

還沒空試, 不過結合這幾個新功能的話似乎可以有效的分散django資料庫端的read/write, 將write-only database server上的WAL(write-ahead log) 即時streaming到read-only database server上的hot standby database, 感覺好像不錯~~

十二月 29, 2009
» [tips] 續: 設定 Logitech G5 in Linux 補強版

話說兩年前買了一支羅技的G5滑鼠
在工作的linux環境上用到目前仍然非常滿意
之所以會說很滿意 是因為G5其實有一個很好按的大姆指鍵
大家都知道xwindow裡只要選取了文字
就會自動"複製"選到的文字
然後按下中鍵就可以"貼上"
但是目前的滑鼠都有滾輪的設計,
所以這個複製貼上的功能變成了按下滾輪
在linux裡我就用xmodmap這個程式
將這個大姆指鍵取代xwindow中鍵貼上的功能,
因為按下滾輪其實我覺得要用力按,
而複製貼上其實是還滿常用的功能
其實感覺還挺傷手的
另外我也用xbindkey將滾輪向左向右的功能做來切換視窗
而滾輪按下變成剪貼簿裡的貼上,
(即Ctrl+V, 跟xwindow的複製貼上不同)
設定的詳情可以看我2年前的文章
http://timchen119.blogspot.com/2007/12/logitech-g5-in-linuxxwindow.html

前幾天升級系統的時候不小心把滑鼠滾輪向左向右切換視窗的功能給砍了~ 因為兩年沒設定 連自己都得再找一下原本的設定方法
就在找方法的同時
剛好看到一個lomoco的hack可以將g5的硬體dpi按鈕關掉,
改用軟體控制
但是lomoco這個加強羅技滑鼠在linux上支援的程式本身並沒有支援G5, 於是就順手弄了一支python程式g5mouse.py,
可以改用軟體操縱DPI的設定,
這樣我們在G5上還可以多出了兩個按鍵可以自行設定!

廢話不多說,
首先先easy_install g5mouse

localhost tim # easy_install g5mouse
Searching for g5mouse
Reading http://pypi.python.org/simple/g5mouse/
Reading http://code.google.com/p/g5mouse/
Best match: g5mouse 0.1
Downloading http://pypi.python.org/packages/source/g/g5mouse/g5mouse-0.1.tar.gz#md5=d3347dbf261135049cb6e5a6be133355
Processing g5mouse-0.1.tar.gz
Running g5mouse-0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-oHyJGh/g5mouse-0.1/egg-dist-tmp-6Vn5h_
warning: install_lib: 'build/lib' does not exist -- no Python modules to install
zip_safe flag not set; analyzing archive contents...
Adding g5mouse 0.1 to easy-install.pth file
Installing g5mouse.py script to /usr/bin

Installed /usr/lib/python2.6/site-packages/g5mouse-0.1-py2.6.egg
Processing dependencies for g5mouse
Finished processing dependencies for g5mouse

localhost tim # g5mouse.py  
Usage: g5mouse.py [options] /dev/usb/hiddev0

g5mouse.py control logitech G3,G5,G7 and G9's hardware dpi buttons on linux

Example: g5mouse.py -d 1600 -l 1 /dev/usb/hiddev0

Author: timchen119.at.gmail.com

Options:
-h, --help show this help message and exit
-d DPI, --dpi=DPI set dpi: 400,800,1600,2000
-l LED, --led=LED set led: NONE,1,2,3,ALL
-n, --nodpibuttons disable + and - DPI speed buttons



然後就可以透過g5mouse.py這隻程式軟體設定DPI,
(可以切換到400,800,1600,2000四種DPI 比原先的還多一種
而且也可以自行設定LED燈號)
比如

你要切到DPI 2000並將所有指示DPI的LED設成第一個
就可以下
g5mouse.py -d 2000 -l 1

預設是DPI 1600跟LED全關掉 預設device是/dev/usb/hiddev0
所以你也可以只下g5mouse.py -d 800 就可以將LED全關掉 並將DPI設到800
如果加上-n這個選項 還可以把硬體控制DPI button的功能關掉
這樣我們就會多出兩個button可以自行設定
將這個程式放在你的.xprofile (XDM)或是.xinitrc/rc.local裡
讓他開機自動執行
再來我們就多出了兩個按鈕可以操控囉~

我就用xbindkeys將+號設定成Ctrl+C 而-號設成Ctrl+V
並把原先的滾輪按下的功能給取消以免誤按~

我目前的.xbindkeysrc.scm

(xbindkey '("b:6") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Up]'")
(xbindkey '("b:7") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Down]'")
(xbindkey '("b:9") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[V]'")
(xbindkey '("b:10") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[C]'")
(xbindkey '("b:11") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Up]'")
(xbindkey '("b:12") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Down]'")


另外這隻程式不止支援G5, G3/G5二代/G7/G9 都可以操縱~

十二月 16, 2009
» E-Sun WebATM at Ubuntu 8.04+(32 / 64bits皆宜)

= 後記 =
我現在也可以在 Ubuntu 9.10 amb64 上使用了
= 後記結束 =

曾經上過一堂英聽課,老師在課堂上問我:「未來在台灣,可不可能是男女平權的」? 我說:「不可能,因為有很多事男人可以作,但女人不能作!」 她接著問:「以前女人沒有投票權,現在有了; 以前女人的工作單一,多半是在家照顧小孩,現在卻可以選擇非常多樣的職業。目前的確是男女不平等,但一天一天進步,總有一天是男女平權的。」

是的,很多事物的狀態不是靜止,而是動態的。

過去,我回到 Windows 下,不外乎是 WebATM 轉帳、報稅及列印某些特定格式的文件。但現在,「 WebATM 轉帳」功能可以在我的 Ubuntu 9.04 i386 上成功使用了,我相信未來「報稅」一定也可以,而這「特定格式文件」總有一天會不存在或是沒必要使用。

感謝玉山銀行的技術團隊讓我們可以使用這麼方便的軟體,我決定下一次轉帳一定要用玉山銀行 WebATM ,給它收取 17 元的手續費(註1 請見文末附圖)。有機會,我也要辦玉山銀行的戶頭,因為我住埔里,最近的分行在草屯,所以不能想辦就辦。而且,我還要買 2884 玉山金的股票。

有趣的是,之前我就聽過華南銀行也想脫離 IE 的魔掌,不過反到是玉山銀行先作到了,先講可沒有先贏呀!

我在 Ubuntu 9.04 中,是使用 Firefox 3 及虹堡科技 EZ-100PU 讀卡機來作 WebATM 操作的。安裝方法如下:

# sudo apt-get install pcscd libpcsc-perl pcsc-tools libccid

因為虹堡 EZ-100PU 讀卡機目前提供的驅動程式並不支援 Ubuntu 8.10/9.04 預設的 pcsclite(pcscd) 套件,如果您使用的讀卡機是這個型號,在安裝 pcscd 套件後,下載這個以 libUSB 編譯的 pcscd ,覆蓋原來的 pcscd 。

# tar -zxf pcscd_for_LibUSB.tar.gz
# cd pcscd
# ./install.sh

再到虹堡科技的網站下載 EZ-100PU 的Linux(Ubuntu)驅動程式

# tar -zxf 200962419545046871.gz
# cd EZUSB_Linux_x86_v1.4.7_For_Ubuntu
# ./check_env
# sudo ./install
# sudo reboot

重新進入系統後,請插上你的讀卡機,並檢查所有程式是否正確安裝:

# pcsc_scan
PC/SC device scanner
V 1.4.14 (c) 2001-2008, Ludovic Rousseau
Compiled with PC/SC lite version: 1.4.99
Scanning present readers
0: CASTLES EZ100PU 00 00

Fri Jun 19 15:49:51 2009
Reader 0: CASTLES EZ100PU 00 00
Card state: Card removed,

有看到 EZ100PU 及 Card removed 字樣,表示讀卡機正確安裝,且未插晶片卡。這時候再插入晶片卡,可以看到 Card inserted 字樣,即表示硬體安裝已完成。

Fri Jun 19 15:50:22 2009
Reader 0: CASTLES EZ100PU 00 00
Card state: Card inserted,
...

最後打開 Firefox ,並到 https://addons.mozilla.org/zh-TW/firefox/addon/12324 下載玉山銀提供的 firefox plugins 安裝後,即可在玉山銀的 WebATM(https://netbank.esunbank.com.tw/webatm/) 中使用。

* 註1: 男子漢不空口說白話。

十二月 11, 2009
» 要賣 9 本 Perl 的書(再補一本,共 10 本)


請上露天拍賣網址(結標時間:2010-01-0213:56)

書籍近照:

底價定 300 元,只要是郵資費夠,我就賣掉。

為什麼要賣掉呢? 因為我想我不會再研究 Perl 了吧! 過去,我剛入門 Linux 的時候,那時系統管理員最好用的工具語言是 Perl ,所以為了把 Linux 管好,我花了不少心力學它, Perl 幫助我找到人生中的第一份工作。但是後來,約五年前,我開始常寫網頁系統時,卻無法拿它來用,那時還沒流行 Web Framework ,所以我當然不知道有 Catalyst 的存在,於是我學了 PHP ,用它來寫網頁。

那時的我是 PHP/Perl 兩頭玩,直到兩、三年前, Ruby on RailsDjangoTurboGears 的出現,我才開始認真地想把「系統管理」、「網頁設計」及「學術研究」的工作用同一種語言來解決,最後選的是 Python + Django ,因為 Python 當時的數學函式庫比 Ruby 豐富,所以我們老大就說用 Python 好了,雖然那時我是比較想用 Ruby on Rails 的,當時 Rails 的氣焰比較高。

不過,現在看來,選擇 Python 應是比較符合我的個性,因為我個人是比較龜毛,喜歡 SOP (標準作業程序),所以過去用 Perl 時,有太多種表現的手法後,在我個人寫的程式上,風格十分隨便,反正看不懂了,就再寫一個,而這點, Ruby 的特性就有點類似 Perl 了。

也是用了 Python 後,我才發現過去喜愛 Perl 的程度,不如我以為的那樣高。這讓我想到重慶森林裡的廚師莎拉與漢堡薯條的故事:「沒有嘗試過,你如何知道真正喜歡的是什麼」。所以,我想把這些 Perl 相關的書籍留給其他適合的讀者。願意作它們的新主人嗎?

十一月 22, 2009
» Mercurial 的 Windows 使用者應該要注意 \r 的問題

目前常見的作業系統有 Solaris, Ubuntu Linux, Fedora Linux, FreeBSD, XXX Linux, YYY BSD, Mac OS X 及 Windows ,而這些系統中,除了 Windows 的換行符號是用 \r\n 外,其他的都是用 \n 。

所以當 Windows 使用者將他們的程式碼上傳至版本控制器時,換行符號會以 \r\n 為主,然後我們其他使用 Mac OS X 及 Ubuntu Linux 的人,在上傳程式碼時,又可能會將換行符號換成 \n ,那麼在作版本比對的時候,只差 \r 的資料行也秀出來了,這實在不利於比對效率。不過這一點, NetBeans 倒是聰明地將只差 \r 及空白的資料行作忽略。

但話說回來,有時候,我們是在遠端 ssh 連線下,作設定檔或是程式碼的比對,這時候,如果出現一堆 ^M 符號也是挻困惱的。

所以這時候,就要請 Windows 使用者多作一個設定,讓他們在 push 檔案時,能自動將 \r 移除。

如果你安裝的是 TortoiseHg ,那麼請到你的安裝目錄下找一個 Mercurial.ini 的檔案,把它打開,加入下列內容:

[extensions]

hgext.win32text=

[encode]
** = cleverencode:

[decode]
** = cleverdecode:

[patch]
eol = crlf

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf


一般而言, extensions, encode, decode 區塊是預設就有的,只是需要移除註解,而 patch, hooks 則是自行增加。

這樣以後在作 push 時, hg 會事先把 \r 移除才送出去。

十一月 21, 2009
» 莫明奇妙的 _ 網域名稱錯誤: 只發生在 IE 上

嚴格地說,這也不是 IE 的錯, IE 只是遵守規範而已。但是因為 Firefox 的容錯能力,讓我們一時以為是 IE 太爛了。

問題是這樣的:

我學弟使用 Windows 加 apache 配置一個測試網站給業主使用時,一直面臨 IE 不能登入,但 Firefox 卻正常的問題,而該網站在 django development server 運作時,卻又沒有問題。他搞了非常久,大概有一個月吧!

我幫他 debug 時,一開始,我就把問題縮小在 IE 瀏覽這 apache 上的測試網站時,它不會紀錄 Cookies,沒用 Cookies ,那怎麼保持認證連線呢! 只是那時候,我也是找不出為什麼那該死的 IE 就是沒法使用 Cookies ,而優秀的 Firefox 就可以呢! 然後,我使用了 Ubuntu Linux 配置這個測試網站結果發現它可以讓 IE 正常運作,所以我們當時只能歸納這問題,一定是他的 XP 出了狀況。

結果前兩天,他要把測試網站放到業主的機器上去 run 時,還是出了相同的問題,然而這次不一樣的是那個機器有兩個 django-based site ,但一個正常,一個不正常。這就有點說不過去了。

於是,這次我請教了 Google 大神,問它: django cookie session problem ie ,而它回我: http://code.djangoproject.com/ticket/7264#comment:3

這原來是 _ 的錯,因為學弟習慣將測試網址設成 test_XXX.YYY.ZZZ ,而我習慣設成 XXXtest.YYY.ZZZ ,因為我知道在買網址時只可以買英數字加連字詞(-)的,所以我不會在網域名稱中放入 _ ,也就是這個習慣讓我在 Ubuntu Linux 中架的測試網站是可以讓 IE 正常使用,但學弟架在 Windows 上的測試網址卻包含了 _ ,讓 IE 勇於拒絕他的要求了。

這同時也解釋了為什麼在 django development server 運作時, IE 可以正常的現象,因為它會使用 http://127.0.0.1:8000/ 作瀏覽網址。

哈哈,真不曉得該怪 IE ,還是得怪 Firefox 呢! 不過,話說回來,要是早點問 Google 大神,這問題就不會拖一個月了。

十月 15, 2009
» List all of installed packages (easy_install eggs)

List all of installed packages (easy_install eggs)
example::

>>>import pkg_resources
>>>pkg = pkg_resources.AvailableDistributions()
>>>for i in pkg:
>>>    for j in pkg[i]:
>>>        print j

see also::
Package Discovery and Resource Access using pkg_resources

A Feedjack powered Planet
A Django site.