Skip to main content

· 2 min read

這幾天 TurboEntity 這個類似 ActiveMapper 的模組一出現馬上獲得不小的關注. 因為它可以用幾乎與 SQLObject 數量相當的程式碼來定義 ORM, 又能完全繼承 SQLAlchemy 的效能和彈性.

Lee McFadden 從上上週開始在他的 Blog 上連載了 3 篇 'SimpleBlog' 系列文章,引導如何使用 SQLAlchemy + TurboGears 製作簡單的 Blog 系統. 他採用了接近基本 SQLAlchemy 的設定方式,因此程式碼有點多.

我用 TurboEntity 照著 'SimpleBlog Part I' 中的範例改寫後,獲得以下程式碼 (model.py):

>
> from turboentity import *
> from docutils.core import publish_parts
>
> class Post(Entity):
> title = Column(Unicode(50))
> content = Column(Unicode)
> post_date = Column(DateTime, default=datetime.now())
> is_published = Column(Boolean, default=False)
>
> @property
> def html_content(self):
> return publish_parts(self.content,writer_name="html")["html_body"]
>

在其它部份保持不變的情形下,拿來跟原文比較可以發現使用 TurboEntity 寫的定義 ORM 程式,就程式碼行數上實在不輸 SQLObject. 難能可貴地是同樣能保持很高的可讀性.

TurboEntity 網站上還有使用 TurboEntity 版本做 TurboGears Identity Model 的例子,看來轉換到從 SQLObject 轉換到 SQLAlchemy 已經不再是太令人躊躇的事了.

· 2 min read

I decide to start a new track of TurboGears Tutorial (In English), which is light weight enough so it will be easy to follow.

Why not start this tutorial on TurboGears Documentation Site ?

It just because I feel more comfortable with blogger's editor, and I'll feel less guilty if I mess these tutorial up :-D

Oops, 5 seconds passed, let's go back to the topic.

Start a new project

To start a new project (new site) with TurboGears, you'd use "tg-admin quickstart" command for it. The syntax is:

$ tg-admin quickstart [projectname] Let's create a "TurboHello" (sound's powerful, isn't it? :-D) project for example:

$ tg-admin quickstart TurboHello The console will prompt some choices. Feel free to press "enter" button (let defaults) and proceed to the next step.

Start the web server

The 'TurboHello' folder was created by your console. After the project was created, enter the 'TurboHello' folder, and you could start the TurboGears development web server with following command:

$ ./start-TurboHello.py

The web server is running, browse http://localhost:8080/ to see the project welcome page:

Pretty and easy, right?

The project structure

While entering the 'TurboHello' folder, you'll see the project skeleton laid there. Those files can be categorized for 4 purposes:

The document was merged to http://docs.turbogears.org/1.0/GettingStarted/BigPicture

TurboGears followed MVC design pattern (search if you don't know that), which seperate the web application design into three different roles, to build the default quickstart project. TurboGears also offer you the flexibility to 'not use the MVC' as well (will be shown in next minutes).

We'd always focus on part 4: "the Development part" in TurboGears.

· 3 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" 中.