最近在 ptt 和 python.tw@ggroup 上看到一些關於 Python 下 Unicode 的討論,發現很多人在寫 Python 的時候,遇到 non-ASCII 字元就頭痛。Python 的 Unicode 支援非常直接易懂,透過 unicode 物件,non-ASCII 字元可以處理得非常漂亮。Python 程式員很幸福,標準程式庫已經把工具排在那裡,用就好了。
在 Python 中對 non-ASCII 字元的處理,大概可以分成兩類:
- 原始碼的編碼。
- non-ASCII 資料。
通常會遇到 1. 的問題,就是因為想對付 2. non-ASCII 資料。不過在 Python 原始碼檔案裡一旦出現了 non-ASCII 字元,就有多一點地方要注意。
» continue reading
Posted by yungyuc
at
04:32,
0 comment,
0 trackback.
世理是拳頭力量大。當我拳頭小的時候,不是很喜歡這樣。
ISO 3166 是定義國家/獨立地理區的國際標準。不過它很討人厭。
討厭歸討厭,如果想要一份「正確的」國家列表,它大概是最容易拿到的資料;我們常用的 TW, CN, US 等雙字母國別代碼是編在 ISO 3166 的 alpha-2 表裡面。
在 Python 下有 pycountry 替 ISO 3166 實作了一份 mapping。pycountry 內部存了一組 XML-based 的資料庫,在被 import 的時候會 on-demand 載入這份資料庫,然後生成一份 iterable mapping-like 的物件,當作這些資料的模型。除了 ISO 3166 之外,pycountry 還包裝了 ISO 639 語言代碼表,以及 ISO 4217、ISO 15924。
» continue reading
Posted by yungyuc
at
07:30,
0 comment,
0 trackback.
Django framework 1.0 released!
雖然我一路 SVN 跑上來,又沒花時間追 mailing list,所以沒什麼真實感,不過在此一賀!相關報導請參閱偉大提姆的文章。
Posted by yungyuc
at
06:03,
0 comment,
0 trackback.
重灌了 XP,拿掉了 TortoiseHg,又拿掉了 TortoiseSVN。
» continue reading
Posted by yungyuc
at
11:18,
0 comment,
0 trackback.
On etch
apt-get install libstdc++5 lib32gcc1 ia32-libs
Posted by yungyuc
at
23:54,
0 comment,
0 trackback.
這篇文章寫於兩年前,主題鎖定在以 Python 寫 Linux 的 script。討論了 Python script 的慣用寫法、字串處理、字元編碼、檔案與目錄處理、呼叫外部程式,以及利用內建程式庫進行網路通訊。
» continue reading
據說裡面是 Django,不過註冊有人數限制,現在只好先 K API 過過癮...
本文是過去發表在雜誌上的文章,為了重新登在這裡,我作了一些編輯,不過因為是舊文,之中有些內容是已經過時了。類似的文章還有一些,我會慢慢地整理到這個 blog 上。
» continue reading
http://www.selenic.com/pipermail/mercurial/2008-March/018014.html
在 Windows 上安裝 Mercurial 又安裝了 TortoiseHg 的人請注意,TortoiseHg 在 HKEY_LOCAL_MACHINESOFTWAREMercurial 裡塞了它自己的 hgrc,啟用了 1.0 裡沒了的 hgext.qct 和 hgext.hgconfig。錯誤訊息很擾人,可用:
hgext.qct=!
hgext.hgconfig=!
關掉。
#!/usr/bin/env python
from mercurial import demandimport; demandimport.enable()
import cgitb; cgitb.enable()
import os; os.environ["HGENCODING"] = "UTF-8"
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
import mercurial.hgweb.wsgicgi as wsgicgi
def make_web_app():
return hgwebdir({
'name1': '/path/to/the/repository',
'name2': '/path/to/the/repository',
})
wsgicgi.launch(wsgiapplication(make_web_app))
» continue reading
Posted by yungyuc
at
10:18,
0 comment,
0 trackback.