2008年5月21日 星期三

周蟒 1.7 發佈,interpreter 自動完成, 紫蟒

周蟒 1.7 (代號 戀人) 已發佈, 可前往網站下載, 或使用
easy_install -U zhpy
命令來更新.

主要更新有
另外也歡迎 Bob Chao 加入周蟒專案, 近期他將帶給我們重新編排過的可下載 ODF/PDF 版 "咬一口 Python 程式語言" 文件.

這幾天我也開了一個使用周蟒撰寫的術數專案 (主要是 紫微斗數, 中文專案名就取叫 "紫蟒" 好了 XD)
使用中文編程 (python) 來描述術數間的關係, 還可隨時利用測試工具 (nose) 來驗證, 實在是最合適不過.

2008年5月13日 星期二

紫微蟒數

我對術數的研究還不深,之前讀易經註釋時,才發現原來易經的每個卦象爻都能互相解釋;五行生剋關係也是如此反覆循環不息,奧妙處相當迷人。

我的假設是能否將術數(斗數)物件導向化,嘗試用程式語言來檢驗,演示各種'代號'互相之間的關係(例如五行生剋關係)。

因此在發展出周蟒(Python)中文程式語言時,也試著動手將術數物件導向化。

首先的成果是紫微斗數排盤
http://code.google.com/p/zwds/wiki/ZiWei

目前嘗試用周蟒(Python)程式語言寫紫微排盤程式。
程式的目的不是最快速的排盤,而是演示互相間的關係與推導。
沒有找到好的推導方式時,還是採用能找到的查表或計算法。

排盤程式還沒完成, 但整個模型已具其形, (已能排到年干四化).
先拋出一些原始碼片段與文件供討論, 完整原始碼與使用方法在此.

會用到 pyzh 中文工具包中的 lunarcalendar (農曆), 提供輸入西元生日, 自動轉農曆生日來排盤.

對周蟒/術數有興趣者, 可以以此為基礎, 以中文描述將各種中華文化傳統命卜精粹加以程式化. 以做為推導研究之用.


最後也請大家一起為大地震受災的人們祈禱, 南無阿彌陀佛.

2008年5月8日 星期四

關於中文本地化工具包

googlecode 上有一個名稱跟周蟒(zhpy)很像的專案,叫做 pyzh。這個專案的目的是提供一些中文本地化工具。

前幾天剛好寫周蟒有段需要將程式轉成簡體,但 mac 上沒有好的繁簡轉換工具 (fx3 不能用同文堂插件),於是花幾分鐘將 pyzh 專案的簡繁轉換工具弄成命令列可用了(很初步)。

http://code.google.com/p/pyzh/


相信大家對中文工具的需求是不少的,感覺中文本地化工具包這專案相當有用處,
只是還處於很早期階段,需要進一步加強。

想知道大家各自以使用者或開發者的角度, 對於我們 pythoner 需要怎樣的中文工具包這件事上,是怎麼看待的?

在此提出一些我對中文本地化工具包的想法:

1. 工具要支援命令列 :
繁簡轉換工具、算字數工具、文本折行、農曆轉換工具都可以加以命令列化,變成一般通用的工具。
可能有些小工具也可以從 ulipad 中抽取獨立出來。

2. 最好能提供 easy_install 安裝
easy_install 安裝的好處就不必多說了

3. 共用 namespace
讓這些相關 lib 共用一個 namespace, (建議是 zhutils, 類同於 docutils),
然後用英文分類、命名調用。

一方面也算擴大用戶群(老外也有機會來用),另一方面拼音的有侷限,例如 fanjian (--> 犯賤 ?) 對不習慣拼音的我來說看來相當不
雅。

建議的簡單 namespace 分類法:

zhutils - word # 文字相關
- count # 算字數, 對應 wordcount
- translate [pinyin | tw | cn] # 翻譯成 拼音, 繁中 ,簡中,
對應 word2pinyin, fanjian
- cn_word # 簡中分詞
- time # 轉干支計數, 用於算命?
- datetime # 日期相關
- .... 其他

中文本地化工具包,大家怎麼看?

update 2008/5/15:
把整個 pyzh 大架構按照之前提出的思路修了一下, 整成了一個 zhutils 模塊, 以後可以用 pypi 來發佈. 現在所有 pyzh 模塊都在 zhutils 中, 所有副模塊分別歸類在 word(處理文字) 與 datetime(處理日期) 中.

2008年5月6日 星期二

周蟒 1.7 開發進度,interpreter 自動完成

昨天用 rlcompleter 讓周蟒 interpreter 支援自動完成(打單字自動補全關鍵詞,打英出中),
例如任意打出 '印'、'print'、'pri'、'prin' 後,按下 tab 鍵, shell 中就自動換成 '印出' 一詞。

以一段簡單的用迴圈印出資訊的程式碼為例:
>>> for i in range(10):
... print i
要達到等同於這段 python 程式碼的目的,在 zhpy interpreter 中,原本得輸入:
>>> 取 i 自 範圍(10):
... 印出 i
現在可以輸入
>>> for[tab] i in[tab] ran[tab](10):
... pri[tab] i
每次按下 tab 鍵,interpreter 就會自動將 "for"、"in"、"range"、"print" 等關鍵字轉換成 "取"、"自"、"範圍"、"印出"等周蟒關鍵詞,大幅簡化輸入的次數。

期待簡中開發者加入,協助增加利用拼音方式的自動完成。