當 jQuery 遇上 CoffeeScript

上週的PHPConf Taiwan,有幾位朋友在會後問我CoffeeScript要怎麼樣跟 jQuery 之類的 framework 整合在一起,會不會打架? 基本上是不會的,CoffeeScript 寫出來的東西就是 JavaScript,如果會打架,那表示你即使不用 CoffeeScript 來寫也一樣打架了。

我們來看看要怎麼把 jQuery 跟 CoffeeScript 放一起。

電視影集

我常會笑我老爸老媽每天晚上守著劇情扯到不能再扯的八點檔,然後討論誰的小孩是誰誰誰的私生子,然後誰又是誰的小三。但我自己也好不到哪裡去,即使再忙,也是幾乎每天在看影集。

忘記是從什麼時候開始,我的影集大盤商介紹一些好看的美國影集之後,我就陷入了這個影集無窮迴圈。剛好最近跟朋友們吃飯聊到,於是就來整理一下列表,順便看看我到底浪費了多少生命在上面。

安裝 Python

不管你用的 Linux/FreeBSD/MacOS/Windows..etc,目前 Python 均有實作品,請至 http://python.org/getit/ 找到適合的平台並下載安裝。

不過,我不得小小抱怨一下,Python 在 Windows 上實在是不怎麼友善,包括我們之後要講的 Django,原本也有給 Windows 的懶人安裝包(Instant Django),但專案似乎也斷頭了。不過也不是沒有解決方法,如果只是要在 Windows 做練習的話,可參考下一章

如果你安裝完成,請打開你的終端機視窗,輸入python就可以進入 interactive shell 來試玩一下:

$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> "hello python"
'hello python'
>>> 1 + 2
3

在這個 shell 裡面,你可以很容易的就測試一些簡單的程式碼,看看執行結果是不是跟你想像的是一樣的。有趣的是,如果你在 shell 裡輸入 import this 的話:

>>> 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!

你可以看到 Tim Peters 寫的 The Zen of Python,內文大概說明了 Python 世界的設計哲學。至於 import 是做什麼用的,我們在後面的單元會再做說明。

除了 shell 之外,我們更常把程式碼儲存成一個檔案,附檔名是 .py,例如我們把下面這段很簡單的程式碼:

#!/usr/bin/python
print "Hello, Python"

用任何文字編輯器打完之後,存檔為 hello.py,然後回到終端機視窗,輸入 python hello.py

$ python test.py
Hello, Python

每種程式語言一定都要不免俗的來一下 Hello World 打個招呼的,如果在 Java,你可能為了要輸出一行簡單的字,還得寫個類別或方法才行,在 Python,只要一行 print 就搞定了,相當簡單吧 :)

其實老是 Hello World 也沒什麼意義,接下來我們來看一點稍微複雜一點的..

CoffeeScript 簡介

什麼是 CoffeeScript?

簡單的說,它就是 JavaScript 啦,只是用不同的程式語言來寫而已。

為什麼選擇 CoffeeScript?

不少 JavaScript 社群,包括 JavaScript 的老爸Brendan Eich,也對它讚譽有加,有社群及大神的背書,加上 Rails 3.1 之後會把 CoffeeScript 變成預設支援,是我選擇它的原因之一。不過對我個人來說,CoffeeScript 的語法感覺像是 PythonRuby 的混合體,從這些語言身上借了一些我個人很愛的元素,加上對我個人來說學習的負擔不算太大,這才是我選擇它最主要的原因(聽說 CoffeeScript 還有向 Haskell 取經,不過我跟它不熟)。

記住你青春無畏的樣子

記住你青春無畏的樣子

其實只是一篇沒什麼內容的口水文!

最近在整理東西的時候發現一枚我在十多年前刻的印章,這是第一次出來闖江湖用的名號。(認識我十年或以上的朋友也許還記得這個當年自以為是的名號)。

正所謂初生之犢不畏虎,年輕時候在學校幫忙寫校務系統,才剛學會用 ASP 寫點簡單的資料庫新增、修改、刪除功能,然後就自以為放眼望去沒高手了;連在 BBS 上回答別人問題,也常丟 RTFM 出來(現在好像也差不多,在 PTT Flash 版也常叫人去翻 F1 手冊),現在想想真不知道當年哪來的自信。

不過話說回來,雖然年輕氣盛,但卻很敢試新的玩具,很敢到處挑戰權威,到處筆戰,什麼沒在怕;反而現在年紀大了,不只學習能力跟記憶體有變差的趨勢,不知道是不是喝了太多年的塑化劑,連膽子也都變小顆了。

最近104 人力銀行拍了一個廣告:

廣告中的那句台詞「記住你青春無畏的樣子」,整個打到我的點。

Learning Something New

Learning Something New

最近寫不太出技術相關的東西,那就來個比較閒聊(嘴砲)性質的主題吧!

在第三回的 AS 讀書會上,maso 兄的 talk 裡的第一張投影片寫著:

“人活得好好的,幹嘛寫 app?”

當下我也覺得,真的,人活得好好的,幹嘛找一些自己不熟的新東西來砸自己的腳?

AS2 寫得好好的,幹嘛要學什麼 AS3?
Flash 寫得好好的,幹嘛要寫什麼 iOS app?
PHP 寫得好好的,幹嘛要學什麼 Ruby/Rails?

Amazon Web Services 之門外漢心得

雲端,雲端,大家都在講雲端,不過我這種第三類組畢業的學生,沒有什麼的理論基礎,也不喜歡講理論(不過聽李教授說人死了之後就會在雲端了),僅就我自己最近試玩幾天 Amazon 的 EC2 心得與大家分享。