星期日, 12月 31, 2006

提姆使徒含淚澄清對Django光明會之七大FUD指控

對於一個黑暗地下教會的黑暗使徒來說,
(注: 對於不了解黑暗用語的人請注意,
當Django教眾說到黑暗, 她們指的是光明的謙虛用法)
最受困惱的並不是被無視那強大的黑暗原力,
而是被著名的FUD(恐懼,不確定感,懷疑)戰術所操縱而遠離.

以下整理出那絕對不實的七項指控:

1. Django 是一個高度整合的Web框架 所以是不自由而備受限制的

錯! Django 的高度整合指的是有一獨立Team維護並設計所有Web開發者
經常使用到的功能, 並不代表架構不具彈性.

事實上Django是既鬆散又整合的一Python理想派Web開發環境,
只要你堅持, 你隨時可使用任何Python程式/模板(template)/ORM內嵌入Django,
只要你需要,
在django的view裡用Shell呼叫妳已寫好的Ruby或C程式來替你作事並沒有任何關係!
只是Django最想作的是: 讓你把工作完成(的又快又好)!

大多數時間, 使用Django的人們會傾向使用Django預設的功能不是因為她們被高度受限了,
而是因為, 她們覺得Django設計的比較好!

2. Django 的模版不是Python語法, 是重新發明輪子而且功能又很遜.

錯! 錯! 錯的離譜!

Django的Template語法是Django獨具慧心的一個特色, 應該值得被鼓勵!

在Django的最理想的設計想法中, Template應該是給Web設計師而不是你 -- Python Programmer 所使用的.
因為好的前端Web設計師往往比起後端Web開發者來說, 更知道前端該做些什麼事. 前端Web設計師們, Django的template絕對是你最好的朋友! 我們在乎你也瞭解妳!

然而現實往往殘酷, 有時Python程式設計師不得不跳入設計Template,
因為Python太強大太好用了,
所以Django的Template的設計是故意設計的語法簡單而且將預設功能受限的,

一旦你發現Template設計似乎綁手綁腳的時候, 先檢查一下你的設計!!!
你的設計應該可以作的更好! Django正在試著幫助你!


不要畏懼學習Django的Template語法,
妳很快便會發現 {% if %} {% endif %} 實在是沒有什麼好怕的!
即使真的有不得不要擴充Template語法的時候,
@simple_tag隨時都在那邊等著讓你擴充!

3. Django 將管理介面作在Web Frame框架內部浮現了 Django有設計問題.

這項來自RoR教父DHH有意無意的指控(Building frameworks are at least as much about when to say no as it is about making programming easier.)特別讓我們困惱,
DHH, 您知道您的RoR徒子徒孫們偷偷灌了PhpMyAdmin或資料庫GUI管理介面嗎?

Django堅持,

無需插件, Agile內建!

Django不只要讓Web開發看起來聰明, Django希望把事情完成的又快又好.
要初始化/修改/刪除一筆資料再也不用使用SQL或灌一套軟體了.
感謝上蒼, 這是Django教眾天上掉下來的禮物啊!

Django的自動管理介面內建在框架內部, 妳也許一開始用不到它,
但一旦要用到, 它永遠都在那裡當你的好朋友!

4. Django的資源少書籍不多, 難以了解.

Django書籍的確不多, 但他將會是免費的. 有聽說聖經是不分貧賤都可以看的吧!
The Django Book 就躺在那邊等待您翻閱.
試試看Django的線上文件, 他們內容真的很豐富.

RoR教眾們, 妳們的Agile聖書好貴啊! 妳們讓人看的懂的線上文件到底在哪裡啊!

更別提JAVA圖書館教了, 她們的教眾好像喜歡收藏書更勝於開發Web!!

給點時間吧! Django會更好的.

5. Django使用Python, Python沒人在用.

我的天啊, 你覺得Python沒人在用... !?
以目前來說, 使用Python的人絕對多於使用Ruby!
更進一步來說, Django給了你一個絕佳學習Python的機會,
妳有機會更了解潛藏在Python底下的動態之美!

如果這個業界能夠接受Rails, 為什麼Django不能?

6. Django對AJAX的支持不良.

Django的確沒有內建AJAX框架, 但也意味著你有了更多的選擇權利.

說話憑良心吧! 難道你在這個年頭寫AJAX都不需要知道怎麼寫Javascirpt?

挑一個用的順手的Javascript框架, 妳會發現, 在Django裡寫AJAX, 容易的很!

7. Django 用Python寫的, 速度不快.

數據數據! 如果沒時間自己試, 看看別人作的也成!

來自Rails教眾

來自Catalyst教眾

如果連點選都沒時間, 請注意以下這句話:

Django 咻咻咻 !!!

**

以上七點不實FUD,
提姆使徒堅持不畏戰,不拒戰,不戰而屈人之兵的堅定戰鬥立場向社會大眾澄清,

== 請抬頭挺胸大聲說 ==

Django, 是好的 (請加上豎起大拇指的動作, 謝謝合作)

=======================

星期六, 12月 30, 2006

django 0.95跟django SVN版本的重要差異

Django 0.95推出至今也有好幾個月了
SVN版裡的Django跟0.95會有一些差異 所以試圖整理一下:

1. 0.95裡的manipulator form已經不再使用了 請不要再學習 請改為學習更直覺的newforms
2. urlconf的部份可以直接使用view function object而不必一定要用字串了
3. 加入了對MSSQL-ADO的原生支持
4. 安裝時不再用到setuptools

有重要的想到的話會再加進去 看到有遺漏的話提醒我一下吧!

拜Python教之第一次大規模公開入教辦法草案

本教為清新健康的黑暗地下教會,
凡思想成熟且生理狀態及心理年齡超乎凡人之人類皆可入教

但凡本教教眾須嚴格遵守 -=拜Python教=- 的 "三聖規" 
(也就是愛,勇氣與希望)
違者將被處以JAVA絞刑(註1):

拜Python教的三聖規解釋如下:

1.愛: Python之愛要發於心及於身 時時對人間散播Python的愛之福音
   並對Python麻瓜施以憐憫的眼神 協助其早日進入Python聖土

愛的指導原則實作:

打開Python, 並鍵入import this, 對麻瓜們朗誦 The Zen of Python:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!


2.勇氣: 要能勇於在各項專案使用Python 
    時時在人們覺得不可能使用Python的地方使用Python

勇氣指導原則實作:

能跟完全不懂Python的主管解釋Python
直到他再也受不了你煩他為了打發你而讓你在各個專案使用Python為止

3.希望: 不論在任何從未遇過的艱困情況都能面帶微笑的使用Python
因為那Python是我們的主, 主是不會遺棄我們的

希望指導原則實作:
不論在任何情況下都不說"這python可能做不到"
而是換個說法:"這也許需要寫一點點C的擴充再加上Python"

(註一: 即傳說中一種將生平所有寫過的程式全部改用JAVA重寫之一慘無人道之極致酷刑)

回覆此帖並於心中發誓遵守三聖規後 即可立即加入拜Python教(表)

Django如何支持JSON式AJAX

其實滿簡單的
Django已經內建simplejson模組 只要import進來就好了

底下是個傳遞JSON物件的範例

from django.utils import simplejson
def ajax_view(request):
jsondict = {'a':request.session['a'],'b':'hi'}
return HttpResponse(simplejson.dumps(jsondict))

如此你就會在javascript端收到一個含有a,b這兩個屬性的物件.

update: A tip using via decorator from mailing list

> def json_wrap(func):
> def _json_wrap(*args, **kwargs):
> return HttpResponse(dumps(func(*args,**kwargs)),mimetype="application/json")
> return _json_wrap

and then you can use it like:

> @json_wrap
> def foo(request,a,b,c):
> return dict(a=a,b=b,c=c)

update 2:

how to serialize the QuerySet object.

http://www.djangoproject.com/documentation/serialization/

Web Front-end Ovewview (Web前端示意圖)



順便補充一張Django所可能會搭配到的Web前端技術跟Django關係的示意圖 
這下次也會順便講一下

Django overview (原創) Django架構示意圖



Django投影片銳意製作中

一些Django官方文件的翻譯

其實已經有翻了一陣子了 就順便貼出來好了

1月20在kalug會講一下一些關於Django的使用經驗,

那投影片我現在正在作.

所以Install跟Session的部份我就不會再提太多了.

Django Install 試譯

Django Sessions 試譯

ps: 大陸那邊更早之前有做了更多Django的文件
  不過我當時翻譯的時候並沒有注意到
  所以之後我應該是不會重複再翻了 
  她們翻譯文件的網址在http://www.woodpecker.org.cn/obp/django/django-faq/

2006 提姆戰戰獎

2006 提姆戰戰獎

[本文首發 kalug.tw google郵件列表 原創歡迎轉載

本文作者: [門派:拜Python教] [職務:Python傳教士] 提姆使徒 timchen119.at.gmail.com ]

戰戰戰 戰是programmer的天性 不發戰文何以編程?

80/20原則告訴我們: 百分之八十的Programmer喜歡戰,

另外百分之20則還在學習怎麼戰.

新的Programmer之道乃是要戰以貫之.

新的年度快要開始了 本年度 2006 提姆戰戰獎 也在年底要頒獎了

諸位知道 提姆戰戰獎 不論好壞不問成敗 本著教育Programmer那大無畏戰神的精神

只要戰的好看,戰的精彩,戰的票房好,戰的觀眾都說贊 就有資格列入提名.

而在一連串黑暗的票選程序跟H畫面之後 這次提姆戰戰獎大獎的前三名終於出爐了

本次2006提姆戰戰獎 到底獎落誰家呢?

**

第三名:
http://jquery.com/blog/2006/08/20/why-jquerys-philosophy-is-better/
Why jQuery's Philosophy is Better

本年度AJAX跟RoR還是重點話題, 對於jquery這個javascript框架來說,
主要的競爭者當然是內建在rails裡的prototype跟script.acu.los.

眼見去年RoR紅衛兵們戰倒Java資產階級的成功例子,
jquery要紅, 不戰行嗎?

戰吧 jquery!
在Dojo,YUI,mochkit強敵環繞的情勢底下,
在那無限的AJAX海裡與Prototype白鯨搏鬥的熱血故事,
2006提姆戰戰獎是不會忘記你的!

**

第二名: http://www.loudthinking.com/arc/2006_09.html
Fear, Uncertain, and Doubt by Joel Spolsky

Ruby on Rails戰王DHH本年威力雖有稍減 不過還是戰圈裡的不倒鐵人
這次他為了RoR挑上了前任戰王Joel on software的Joel Spolsky,
DHH認為Joel用了著名的FUD戰術快攻RoR是犯規的行為,
於是決定反攻Joel的Wasabi語言.

Joel, Was Wasabi a joke? (Is it scale?)

DHH, 戰王的榮耀屬於你 願RoR的戰之榮光與你同在!

**

第一名: http://steve-yegge.blogspot.com/ 的所有文章

冠軍寶座非Steve yegge莫屬!

Steve yegge的blog可能是今年programmer戰圈裡最火的blog之一,
他是不是大師並不重要,重點是他戰! 他戰! 他清清白白徹徹底底完完全全的戰!
很難找出名詞來形容, 我姑且稱呼他為"後現代小說戰鬥編程Kuso流"
在被搞的啼笑皆非雞飛狗跳之後, 回過頭來一想, 哇咧~ 還講的滿有道理的.

看過一個blogger的評論是這麼說的:

"沒有人看Steve yegge的blog是為了真的關心他說的那些程式語言哲學,

大家到他的blog是要去看他怎麼羞辱java!"

如果你是個討厭java的戰鬥思考型programmer,妳肯定會愛上這個blog,

如果你喜歡java, 那麼這個blog會試圖治療你. ^^

戰吧! 戰的好啊 Steve yegge! Good Fight Steve yegge !

或者混在那群Java國的島民裡該說:

FightStateManager.getConsiderationSetter("Steve yegge",State.Good).run() ?!


本年代表作: Execution in the Kingdom of Nouns
http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns...