2005年3月26日

[亂拍] Kodak DC 4800 試拍

向網友買了一部二手的 Kodak DC 4800 相機。雖然是部很老的相機 (從最初出廠到現在應該有五年了吧!),CCD 也只有 300 萬像素,不過它當初可是 Kodak 的旗艦機種,另外賣家又附了四個鏡頭 (Kodak Ektanar),所以也買下來玩玩看。底下是在北投垃圾焚化廠的附屬回饋設施拍的:

這是加上 Kodak Ektanar Wide Angle 0.6x 鏡頭的試拍照:
(這雕塑名叫 "火焰之舞",應該是晚上有燈光時拍攝會比較漂亮)





這是加上 Kodak Ektanar Telephoto 2.0x 鏡頭的試拍照:



這是加上 Kodak Ektanar Close-up +10 鏡頭的試拍照 (另有一個 +7 的鏡頭,沒拿出來用):



這是前一天晚上在仰德大道上,看到路旁的櫻花,臨時下車拍的 (忘了有沒有加鏡頭):



老相機新生命,除了電池不太夠力外,基本上還蠻好玩的。


閱讀全文 ...

2005年3月22日

[PDA] Zaurus C760 新手筆記 (36) - Python 2.4 套件

之前所提,Python for arm-linux 計劃暫停 python 2.3.4 的下載,準備放出 python 2.4 版。今天再去他們的網頁看時,發現已於前天放出 Python 2.4 的新套件。

與之前 Riverbank 放出的版本相較,整個套件拆得十分細緻,還沒搞懂我到底要裝那些部份,不過大概是與 PyQt 有關的部份都須要:python-corepython-pyqtpython-sip


閱讀全文 ...

2005年3月20日

[BLOG] Blogger 的 Template 調校 - 6

忽然想在 blog 上加個 counter。在 blogger 的 help 看到這一篇:Hit Counters and Statistics,就隨手挑了第一個:Site Meter

目前右下角的那個小方塊就是新的 counter 了。沒什麼須特別注意的,大概是按它申請的步驟一步步來就行了。勉強要調整的話,可以在申請完後,改變一下樣式及時區。

另外把 banner 底圖換成 [亂拍] 淡水漁人碼頭 的圖片。




閱讀全文 ...

2005年3月19日

[亂拍] 淡水漁人碼頭

手持無角架。發現老相機的 2.0 大光圈還是很不錯。










閱讀全文 ...

2005年3月17日

[BLOG] Blogger 的 Template 調校 - 5

blogger 不支援分類,目前左邊的分類是利用 RSS Digest 做的。

但是目前 Zaurus 分類下的項目太多,已經無法完全顯示了。依 RSS Digest 的說明,是可以支援到 100 項,但是 del.icio.us 的輸出最多只有 30 項。所以只好把 del.icio.us 上有關 Zaurus 的分類拆成兩項,再分併輸出。


閱讀全文 ...

2005年3月16日

[PDA] Zaurus C760 新手筆記 (35) - UTF-8 and BOM

使用 Zaurus 的人大都知道,系統預設的編碼是 UTF-8。不過,Windows 上的 UTF-8 與 Zaurus 上的 UTF-8 雖然大致相同,但卻有小異。

可以參看 UTF-8 and Unicode FAQ for Unix/Linux 一文中的這一小節 What different encodings are there?,其中有一段:
In order to allow the automatic detection of the byte order, it has become customary on some platforms (notably Win32) to start every Unicode file with the character U+FEFF (ZERO WIDTH NO-BREAK SPACE), also known as the Byte-Order Mark (BOM). Its byte-swapped equivalent U+FFFE is not a valid Unicode character, therefore it helps to unambiguously distinguish the Bigendian and Littleendian variants of UTF-16 and UTF-32.
先說明一下什麼是 Byte-Order:在一些平台上,是把代表數值較大的 byte 放在前面,這稱為 Big Endian (BE) 的系統;有些平台則相反,是把代表數值較小的 byte 放在前面,稱為 Little Endian (LE) 的系統。像 Zaurus 是屬於 BE 的系統,而 wintel 架構則屬 LE。若同以 "中" 這個字來看,它的 Unicode 是 U+4E2D,故在 BE 上是以 0x4E 0x2D 來表示,而在 LE 上則以 0x2D 0x4E 來表示。

在某些平台上 (特別是 Win32 系統),文檔習慣以 U+FEFF 這個字元 (慣稱為 BOM: Byte-Order Mark) 開頭,來辦識該文檔是採 BE 或 LE 的方式編碼。若採 LE 方式編碼,BOM 會表示為 0xFF 0xFE,而在 Unicode 的定義中不存在 U+FFFE 這個字元,所以若前兩個 byte 為 0xFF 0xFE,則一定是 LE 編碼的文檔;反之,若採 BE 方式編碼,BOM 會表示為 0xFE 0xFF,而 U+FEFF 是在 Unicode 中的有效字元,故為 BE 編碼的文檔。又因為 U+FEFF 字元,在 Unicode 中代表的是一個不佔空間的 space 符號,所以即使沒被解釋為 BOM,也不會對閱覽者產生錯誤的訊息。

換句話說,若某文檔僅有一個 "中" 字。則採 BE 系統,且用了 BOM 字元時,該檔 Unicode 編碼的 binary 內容為:
0xFE 0xFF 0x4E 0x2D
採 LE 系統,且用了 BOM 字元時,該檔 Unicode 編碼的 binary 內容為 (wintel 架構下的典型情況):
0xFF 0xFE 0x2D 0x4E
但是在 Zaurus 上,習慣上並不用 BOM 字元,而是單純認定文檔採 BE 系統,所以該檔 Unicode 編碼的 binary 內容為:
0x4E 0x2D

但是,我們要談的是 UTF-8 編碼,它並不等同於 Unicode。若僅考慮 Unicode 從 U+0000 到 U+FFFF 的範圍,它是以下列的規則轉為 UTF-8 編碼:
U+0000 - U+007F:0xxxxxxx
U+0080 - U+07FF:110xxxxx 10xxxxxx
U+0800 - U+FFFF:1110xxxx 10xxxxxx 10xxxxxx
一樣以 "中" U+4E2D 為例,因為 0x4E 0x2D = 01001110 00101101,所以它的 UTF-8 編碼為
11100100 10111000 10101101 = 0xE4 0xB8 0xAD
同理可得 BOM 字元的 UTF-8 編碼為 0xEF 0xBB 0xBF。又,因為每個字元不見得剛好是 2 個 byte,所以不管是以 LE 或是 BE 為主的系統上,UTF-8 文檔大都採 BE 方式編碼。

換句話說,若某文檔僅有一個 "中" 字。當用了 BOM 字元時,該檔 UTF-8 編碼的 binary 內容為 (wintel 架構下的典型情況):
0xEF 0xBB 0xBF 0xE4 0xB8 0xAD
而在 Zaurus 上,因為不用 BOM 字元,所以該檔 UTF-8 編碼的 binary 內容為:
0xE4 0xB8 0xAD

前面所提看來頗為無用,但是在某些情況下,直接從 wintel 平台轉出的 UTF-8 文檔,會無法在 Zaurus 下使用

因 為 Unix 系統有所謂的 magic word,即是以檔案的前兩個 byte 來辨識該檔的性質。最簡單的例子就是 bash/perl/python 等 script 檔,開頭必定是 "#!"。若在 wintel 平台下轉出 UTF-8 文檔,則前兩個 byte 被 BOM 字元佔用,會導致 shell 無法判讀。

那該怎麼做比較能確保檔案不會被誤轉呢?我沒什麼好方法,不過只要是從 PC 上轉出的檔案,我必定先在 Zaurus 平台上以編輯器 (我是用 ZEditor) 重新開啟並儲存一次,以確保 BOM 字元不會在檔頭出現。

另外,雖然 Ultraedit 能夠讀懂 UTF-8 格式的文檔,而且在 menu 上也有把文檔轉為 UTF-8 的功能選項,但它實際上永遠是把 UTF-8 儲存成 Unicode 格式 (我在 Ultraedit v11 上測試多次,不管怎麼選擇,如何轉換,它實際上還是把檔案存成 Unicode 格式)。有興趣者可以下載安裝 WinHex, 直接看 ultraedit 輸出的 UTF-8 文檔,並與 Windows XP 的記事本軟體 (選擇另存新檔,即可選擇檔案格式) 輸出的 UTF-8 文檔比較。不過,因為 ZEditor 也可讀懂 Unicode 文檔,且在 Zaurus 上本來就要重新儲存一次,所以影響也不大。
註 1:Windows XP 的記事本,處理 Unicode 及 UTF-8 比 Ultraedit 更精準。例如,Big Endian 的 Unicode 文檔,Ultraedit 會無法辨識,但記事本卻能正確解讀。不過,記事本只認 DOS 的換行模式。
註 2:ZEditor (我用的是日文版) 會自行根據文本轉換內碼系統,在字少的狀況下容易誤判成 Shift JIS 編碼。例如,全文只有一個 "中" 字時。



閱讀全文 ...

2005年3月11日

[Linux] Debian on My ThinkPad R40 (8) - 建立 Qt + Python + PyQt 的環境

這比前一篇 [Windows] 建立 Windows 下的 Qt + Python + PyQt 的環境來得簡單多了。一行指令就可以搞定了:
sudo apt-get install python-qtext
其它的套件都會按相依性自動裝上。

開 python 直譯器實驗一下:
from qt import *
如果沒有錯誤訊息,那大概就沒問題了。

頂多是再裝個 qt3 的公用程式,一切就很完美了:
sudo apt-get install qt3-designer qt3-assistant qt3-qtconfig

如果要跑 eric3 的話,一樣是先下載 eric3,然後:
tar zxvf eric-3.6.2.tar.gz
cd eric-3.6.2
python install.py
eric3
就可以看到 eric3 正常執行無誤了。


閱讀全文 ...

2005年3月10日

[Windows] 建立 Windows 下的 Qt + Python + PyQt 的環境

如之前 ([PDA] Zaurus C760 新手筆記 (32) - python) 所說,想要寫些 python 的程式。用 google 找了一下,在 Zaurus 上,python 的 GUI solution 可能以 PyQt 的資源比較豐富。可是 Trolltech 在 Windows 上只有放出 Commercial License 的版本,如果也想要在 Windows 上實作 PyQt,這是一大麻煩。

不過有個 kde-cygwin 計劃,他們把 GPL license 的 Qt3 port 到 Windows 下,稱為 "Qt3/Windows Free Edition",關於版權的部份,他們是這麼說:
* Complete gpl licensed replacement for win32 environments
* based on the gpl'ed Qt/X11 sources means there is no licensing problems with any commercial trolltech license
底下我主要是依 Getting GPLed Qt/PyQt Running on WindowsQt 3/Windows Free Edition: MinGW Compiling instructions 的內容建立 Windows 下的 Qt + Python + PyQt 的環境。
  1. 安裝 MinGW:MinGW 是指 Minimalistic GNU for Windows,可以建立在 Windows 下的 GNU 編譯環境。

    只要下載並安裝 MinGW-3.2.0-rc-3.exe 即可。(預設安裝路徑是 C:\MinGW)

    在安裝完後,在 C:\MinGW\bin 下有個 mingwm10.dll,把它複製一份到 C:\Windows\system32 下。

  2. 安裝 Qt:先下載 Qt3 的程式碼:到 KDE-Cygwin snapshot area 下載程式碼後,把它解開到 C:\qt-3 下 (用 WinRar 即可解開 .tar.bz2 的檔案)。

    編譯 Qt3:開 cmd 視窗,執行下列的指令
    set QTDIR=C:\qt-3
    set MINGW=C:\MinGW
    set PATH=%QTDIR%\bin;%MINGW%\bin;%PATH%
    set QMAKESPEC=win32-g++
    cd C:\qt-3
    configure.bat -thread -gif -fast -verbose
    這會花蠻久的時間, 大概是要好幾個鐘頭,最好是找點事情做做,再回來看結果即可。

    如果有編譯成功,可以在 C:\qt-3\lib 下找到 qt-mt3.dll,把它複製一份到 C:\Windows\system32 下。

    也可到 C:\qt-3\bin 及 C:\qt-3\examples 目錄中,找到一些編譯成功的執行檔,試著執行看看。

  3. 安裝 Python:到 Download Standard Python Software,下載及安裝 Windows 版本的 Python。(預設安裝路徑是 C:\Python24)

    然後執行下列的指令,來得到相容於 MinGW 的 python 程式庫:
    cd C:\Python24\libs
    pexports C:\WINDOWS\system32\python24.dll > python24.def
    dlltool --dllname python24.dll --def python24.def --output-lib libpython24.a
    可以檢查一下,在 C:\Python24\libs 會多了一個 libpython24.a 檔。

  4. 安裝 SIP:依 SIP 的說明,它是 "a tool for automatically generating Python bindings for C and C++ libraries"。

    因為原來 Riverbank 所放出的版本是針對 Trolltech 的商業版本,所以要先 patch 一下,改下載這個 patch 過的版本。下載後把檔案解開,放到 C:\Python24\sip-4.1.1 下。並執行下列指令:
    cd C:\Python24\sip-4.1.1
    c:\Python24\python configure.py -p win32-g++ -l qt-mt
    mingw32-make.exe
    mingw32-make.exe install
  5. 安裝 QScintilla:若不想安裝 eric3,這個部份可略過。先下載 QScintilla,把它解開到 C:\Python24\qscintilla-1.62-gpl-1.5.1。並執行下列指令:
    cd C:\Python24\qscintilla-1.62-gpl-1.5.1\qt
    qmake qscintilla.pro
    mingw32-make.exe
    copy qextscintilla*.h %QTDIR%\include
    copy qscintilla*.qm %QTDIR%\translations
    如果編譯成功的話,在 C:\qt-3\lib 下會有 qscintilla.dll 檔,將它複製到 C:\Windows\system32 下。

  6. 安裝 PyQt:一樣是因為 Riverbank 所放出的版本是針對 Trolltech 的商業版本,所以要先 patch 一下,改下載這個 patch 過的版本。下載後把檔案解開,放到 C:\Python24\PyQt-x11-gpl-3.13 下。並執行下列指令:
    cd C:\Python24\PyQt-x11-gpl-3.13
    c:\Python24\python configure.py
    mingw32-make.exe
    mingw32-make.exe install
    PyQt 的編譯時間也很長,要有點耐心。在 C:\Python24\PyQt-x11-gpl-3.13\examples3 下有許多範例檔,可以試著執行看看。

  7. 安裝 eric3:eric3 是個用 python 編寫的 IDE 環境,除了 python 外,也支援許多的語言。先下載 eric3,把它解開到 C:\Python24\eric-3.6.2。並執行下列指令:
    cd C:\Python24\eric-3.6.2
    c:\Python24\python install.py
    然後就可以用 "C:\Python24\eric3.bat" 執行 eric3 了。

    不過,我在執行時,每次啟動到 "Setting up connections ..." 時,程式就會當掉。目前還在瞭解原因中。
註 1:在步驟 2. 中的環境變數 QTDIR/MINGW/PATH,在步驟 3. 到 6. 中都需要。
註 2:整個編譯的時間相當的久,要有點耐心。
註 3:我習慣把一些 dll 檔移到 C:\Windows\system32 下,免得 PATH 會愈加愈長。(如果只有一、兩個 dll 的話)
註 4:雖然目前 eric3 還無法正常執行,不過其它的 PyQt 程式都可正常執行無誤。

在編譯完後,大概耗費了超過 1G 的空間,不過應該有很多部份是可以清掉的。改天再來把它瘦身看看。
2005/03/11 補充:eric3 改用 eric-snapshot-20050309 版本,狀況有好一點,程式會在 UI 全部出來後才當掉。>"<


閱讀全文 ...

[PDA] Zaurus C760 新手筆記 (34) - Trolltech 中文網頁

Trolltech 的網頁現在也有中文版了。雖然是簡體中文版,不過聊勝於無。

(Trolltech 是 Qtopia 的供應商,而 Zaurus 是建立於 Qtopia + Linux 之上)
 

閱讀全文 ...

2005年3月7日

[PDA] Zaurus C760 新手筆記 (33) - 用 opera 收發 gmail

剛剛在 OESF 看到,已經可以用 opera/netfront 來收發 Gmail 上的信件。自己也用 opera 試了一下,中文郵件的收發沒什麼問題,附件夾檔也正常運作。

底下是 Gmail 的說明:
If you sign in to Gmail using a browser that isn't fully supported, you'll automatically be directed to a basic HTML view of our service. To make sure that you can always access your mail, we've developed this basic HTML view that is compatible with almost any browser.

Since your browser isn't fully supported, you might notice that some of your favorite features aren't available in the current view, including the following:
  • Filter creation
  • Settings
  • Spell checker
  • Keyboard shortcuts
  • Address auto-complete
For access to all of Gmail's features, sign in to your account from a fully supported browser, and make sure you have cookies and JavaScript enabled.


閱讀全文 ...

2005年3月4日

[PDA] Zaurus C760 新手筆記 (32) - python

最近因為工作須要,準備開始學寫一些簡單的 python 程式。除了在慣用的平台 Windows 及 Debian 上安裝外,當然也不會忘掉 Zaurus。不過小繞了個圈子,才找到 Zaurus 下的解譯器。

  • 大部份找到的鏈結都是指向:Riverbank

    不過上面卻標明:"We no longer support our port of Python to the Sharp Zaurus. An alternative port can be found at the Python for arm-linux site."。

    如果到 Riverbank 的 download 頁,還是有 ipk 檔的下載鏈結 python_2.3.3-1.0_arm.ipk。不過實際上點下去後,回應是 "Error 404: Not Found"。

  • 如果依 Riverbank 的建議,到 Python for arm-linux 看看。沒錯,版本比較新,是 2.3.4。

    不過真的要下載時,上面卻說:"Package feed temporarily out of order because of reconstruction. Stay tuned for Python 2.4"。

  • 於是開始請出 Google 大神,第十九筆 (於發這篇文的時候) 的搜尋結果:http://zaurus.spy.org 下,有一個鏈結指向 Fred's Z corner : spare parts for the Sharp Zaurus。Bingo!終於找到了,是 Riverbank 在結束支援前,最後放出的版本。

底下是幾篇中文的 python 文件:


閱讀全文 ...