2008年11月12日 星期三

周蟒上做測試

ZoomQuiet 在 python-cn group 上分享了一篇 TDD实践之实用主义,建議周蟒在教學之外,也和 unittest 作結合。

事實上早已經有在周蟒專案中使用到 unittest 的例子

簡短的範例如:


定義 範例(資料):
返回 資料

# doctest
定義 測試_資料():
申明 範例("巧虎") == "巧虎"


要測試時,先將程式碼轉成 python
$ zhpy -p


再輸入

$ nosetests
.
-------
OK


即完成自動測試。

2008年9月11日 星期四

周蟒 1.7.1 發佈

周蟒 1.7.1 (代號 太陽) 已發佈。可前往網站下載, 或使用
easy_install -U zhpy
命令來更新。

這是一個維護性質的更新。

上一個版本(1.7) 在 官方網站pypi 下載次數總合,
首度超過 500 份。

2008年8月22日 星期五

學習編程的寓言

新手在程式莊園外徘徊。

門房跟新手說:
「你要先買一本導覽手冊,我才準許你進來」。

新手遞出了金幣,門房交給新手一本程式語言導覽手冊。


新手在程式殿堂外徘徊。

門口的警衛跟新手說:
「你要能使用英語與其他人溝通,我才准許你進來」。

新手學懂了英語,門口的警衛打開了門。

程式的殿堂裡面,果然不出所料,

已經擠滿了外國人。

2008年8月12日 星期二

周蟒近期動態 (5~8月)

數學表示法與周蟒

Mr. Monkey 寫了篇 zhpy 的另類用法

利用周蟒 可以用 ini 擴充詞庫的特性,加入數學符號對應,使得程式中可以直接寫出諸如
print sin(π/4) ≠ √(2)/2

這樣的語法,將收錄在下一版的周蟒範例中 (example/realmath)。

文字 RPG 與周蟒

文字 RPG 是使用 console 遊玩,沒有圖片,遊戲裡面的互動與戰鬥都是以文字來表示的一種古早遊戲方式。基於一個德國人寫的 textrpg 模組, 我也寫了篇
給我五分鐘,教你用中文腳本寫一個 RPG (使用 TextRPG)

Crunchy 與周蟒


Crunchy 是一個網頁介面的系統,可以在教學文章中的 python 語言區塊後端直接附上一個互動式 shell,讓讀者可以直接在同個頁面試驗。目前支援 python 2.4 以上環境。

因為 Crunchy 也是基於 utf-8 編碼,因此要讓 Crunchy 支援周蟒相當容易, 只要在原始碼中加上兩行敘述:

crunchy/src/interpreter.py

class InteractiveInterpreter(object):
....
def runsource(self, source, filename="User's code", symbol="single"):
....
try:
from zhpy import convertor
source = convertor(source)
code = self.compile(source, filename, symbol)

如此即可在 crunchy 的網頁介面中輸入周蟒程式碼。

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(處理日期) 中.