Skip to main content

推廣 python ?

· 2 min read

我想沒什麼人會想學新語言,即使這門語言很美很有用,尤其是當對人們來說這語言用不太到的情況下 (例如有個傢伙跟你說一旦你學會了優美的拉丁文,以後你就可以讀懂中古歐洲的文獻。這傢伙大概會被你罵神經病 :-D).

我認為要說服人學新東西,要遵循:對他有用,讓他感興趣,使他容易學習 三個步驟.

分享一下我最近讓公司同仁對 python 開始感興趣的方法,

對他有用

第一階段是我們團隊的部份原始碼庫從 MS 的系統改到 svn 上.
工作久了,會有個錯覺是世界會這麼一直運行下去,日常使用的工具是世界運行的一環因此不太會思考要改變它.

當自己花些時間讓大家看到新工具 svn/trac 的好用時,趁機跟大家灌輸新一代的工具優點,再若有似無地提到 trac 這強悍的程式整個是 python 寫的。可以勾起大家有點求變的動能.

讓他感興趣

第二階段是最近工作中引入自己用 scapy 做的封包產生器,有的同事發現我用的工具可以跨平台使用,不用花時間架設特別的機器和環境,可以讓測試變得不那麼麻煩,可能就有了想學習的動力.

使他容易學習

第三階段是在適當時機展示一下 python 的簡潔, 讚揚一下 python 程式中非常直觀的列表,字典等內建型態. 程式縮排等寫作原則提都不用提,python 程式的美觀展示時即自然呈現. 如果真的要強調,則是花時間下去學習 python 語法時的事情了.

你的工作裡也有地方用的上 python 嗎?

收到管理權限

· One min read

終於收到 TurboGears 官方文件網站的管理權限,可以修改首頁了. 這幾天重新整理了 TurboGears 的官方文件,讓整個學習流程變得更清楚了.

TurboGears 安裝早已變得很簡單, 裝好 python 後,只要抓下 tgsetup.py 後執行就會自動安裝. 不用管是否已安裝了 setuptools 模組或 easy_install 命令.

新使用者可以關注 "教程 (Tutorials)", "使用導覽 (Getting Started Guide)", "安裝 (Installation)" 三個部份.

一些特別的主題如 cookie, session, 傳送 Email, 註冊新使用者等等都被歸類在 "Solving specific problems" 中.

kid 或 genshi 中文樣板編輯

· 2 min read

原本使用 TurboGears 都是拿來做些網站應用程式的原型,享受它帶來的樂趣。現在終於等到一個可以製作實際網站的機會.

我打算使用 TurboGears 的 1.1 (在 SVN Trunk 開發中) 版本開始做一個中文的應用網站. 使用 genshi 做網頁樣板系統和 SQLAlchemy 做 ORM, 並使用 pydev (python) + Aptana (web) eclipse 環境開發.

剛開始玩得很順利:P 直到我發現在預覽網頁時發生了錯誤. 錯誤訊息看起來是有中文的地方會報錯,因此我以為是網頁樣板預設編碼不是 'utf-8' 的問題.

找了半天,到後來直接用瀏覽器預覽時,才發現整個中文部份都變成了亂碼,改編碼為 big5 時才顯示正常。原來罪魁禍首是作業系統和編輯器!

作業系統預設編碼是 big5, 因此照一般輸入方式在編輯器中編輯儲存中文字的結果,當然不是我所期望的 utf-8 囉. 當我改使用 Dreamweaver 來編輯樣版後,一切顯示就回歸正常了. 應該是編輯時 Dreamweaver 會自動幫忙轉碼吧:-D

Anyway, 還是希望能找到個 OpenSource 的網頁編輯器可以做到國際化支援呀.

TurboGears on O3 Magzine

· One min read

繼 Ruby On Rails 後,最新期的 o3 雜誌專刊介紹 TurboGears

) 中發表了一篇文章 推薦 TurboEntity 這個項目,看起來他蠻推崇這個大量借鑒他的 ActiveMapper 功能的專案的.

TurboEntity 最酷的能耐應該是'self reference', 能參考同個物件的資料 (不知道 Django 的怎樣,SQLObject 不行直接參考,要加一些特別的代碼)

網站上的範例裡拿了辛普森家庭 (The Simpsons) 做例子:

定義四個角色

grampa = Person(name="Abe")

homer = Person(name="Homer") bart = Person(name="Bart") lisa = Person(name="Lisa")

定義人物間的關係:

祖父 - 河馬 - 霸子 - 麗莎

grampa.children.append(homer)

homer.children.append(bart) lisa.father = homer

不講的話還真的看不出來這些是存取資料庫中資料的函式.

ManyToOne / ManyToMany 這些函式也是直接呼叫 sqlalchemy 的功能.