2008/09/16

QOTD: Paul Graham on Language

摘自 Hackers & Painters

* 電腦程式只是文字。選用的語言則決定了你的語彙能力。程式語言是程式設計者思考的方式。

* 程式設計師傾向歸屬於所用語言的派別,甚至比他們所用的語言區隔更大。因此,談到某種語言優於其他,會被認為是壞習慣。但是連程式設計師自己都不相信這種虛偽的禮節。我對於程式語言的看法或許會惹怒很多人,不過我認為這是了解駭客最好的方法。

* 程式語言是用來思考程式,而不是用來展現你已經想出來的程式。它應該像是一支鉛筆,而不是一支鋼筆。如果大家寫程式的方法跟我大學所學相同,靜態型別應該會是一個優秀概念,不過,我所認識的每一位駭客,都不用這種方式來撰寫程式。我需要一個可以隨意擦寫塗抹的程式語言,而不是讓語言要求我正襟危坐地捧著型別,非常禮貌地與嚴謹過時的編譯器對話。

2008/09/12

NuPlone Hacking

NuPlone 是 Plone3 的內建模組,啟用後能讓網站外觀煥然一新,參看它的程式內容,也可以一窺 GenericSetup 和 CSS Registry 的設定方法。自己還沒找到滿意的 Plone3 Skin 教學文件,而且發現 qPloneSkinDump 目前只支援 Plone2.5,只好逛進 NuPlone 目錄。在 skins/nuplone_styles 裡,像 base.css, columns.css 等檔案是空檔,它們會「蓋」掉系統預設的設定值嗎?

2008/09/03

jQuery Example on Plone

jQuery 是一套 JavaScript 函式庫,可用來處理動態網頁或 AJAX 技術。台灣有 jQuery 中文社群今年六月剛在 http://groups.google.com/group/jquery- 成立討論區。

如何讓 CMS 結合 jQuery 之類的技術呢? 在 David Bain 的示範影片,可以看到 Plone3 製作 Fade In 文字效果的步驟。對新手而言,影片內容過於簡略,我把實作過程的細節補充於此。

設定 Kupu 的 Character Style

進入 Site Setup 點選 Visual editor,在 Styles 區塊裡新增 Fade In 選項並存檔,格式和內容如下:
Fade In|span|fadeIn

建立並註冊 javascript 程式

進入 ZMI 點選 portal_skins 到 custom 目錄,新增 DTML Document 設定 id 為 custom-jquery.js 點選 Add and Edit,在方框裡填寫如下內容並存檔:
jq(document).ready(function(){
//
jq('.fadeIn').fadeIn(10000);
});
範例中的「jq」就是 Plone 裡 jQuery 控制符號。

進入 ZMI 點選 portal_javascripts 在 Add a new script 方框裡設定 id 為 custom-jquery.js 按 Add 鈕,再把 Debug/development mode 選項打勾按 Save 鈕。

新增 CSS 設定值

進入 ZMI 點選 portal_skins 的 plone_styles,再點選 ploneCustom.css 裡的 Customize 鈕,在方框裡加入下列內容並存檔:

.fadeIn {
display: none;
}
點選首頁 Edit 在 Body Text 方框裡選取想要設定 Fade In 效果的文字,存檔後可以看到效果。

2008/08/28

GenericSetup

對於 Plone 管理員,經常有客製化的需求,例如在 custom skin 目錄裡存放客製化的圖片和 CSS 檔案,如果這類的客製化工作必須重覆執行,善用 Plone 工具 - GenericSetup 才是聰明方法。

GenericSetup 處理 Plone 網站的設定議題,例如新建 Plone 網站後的客製化調整,可以記錄成一連串的指令,不但可以 import 也可以 export,或是得知安裝系統迄今的調整狀況。

profile 是 GenericSetup 裡的特別設定檔,它包含一組 XML 檔案,用以描述網站的設定狀態。另一種相關的設定檔稱為 install method,它和 profile 不同之處,在於描述讓網站變成某種設定狀態的步驟。

2008/08/27

Crowdsourcing

這個字在遠見雜誌出現過,「美國紐約大學新聞系教授 Jay Rosen 和 Wired 雜誌做了一個新媒體實驗,設立 Assignment Zero 網站,讓大眾參與新聞製作。他們希望兩年內募集150萬美元來完成這個計畫,包括路透社、麥克阿瑟基金會都捐款支持。就像一般的新聞中心,這個網站有一組約十位的新聞專業作者、編輯、文稿、版面設計等,他們設定監督流程,在每一個新聞寫作步驟中,丟出「工作」讓大家認領,再把網上收口的資料導引到專業方向。這樣的構想作法被稱為 crowdsourcing。」
在軟體領域,這不是新鮮事,軟體專案發起人在網路上提出初期的構想與原始碼,吸引其他同好回饋修訂意見與程式。很多領域都能套用 crowdsourcing 的步驟方法,但共通的挑戰都來自於「如何讓社群的爐火加溫加大」。
群眾運動需要領袖,專案領袖在 crowdsourcing 成功過程中扮演關鍵的角色。專案前進的動能來自於願景與分工,專案領袖無法全面控制專案的步調,但透過願景與分工的詮釋,仍握有專案發展的權杖。某個角度來看,網路專案就是一段權力與信任關係的演化史。

2008/08/16

Right Sort of Wrongness

It says a great deal about our work that we use the same word for a brilliant or a horribly cheesy solution. When we cook one up we're not always 100% sure which kind it is. But as long as it has the right sort of wrongness, that's a promising sign. It's odd that people think of programming as precise and methodical. Computers are precise and methodical. Hacking is something you do with a gleeful laugh. -- The Word "Hacker", Paul Gramham
絕頂聰明和糟糕透頂的方法,我們會用同一個字眼去形容它們,這是司空見慣的情況。當我們料理食物時,不可能保證結果完全如同預期,但只要能從錯誤結果看出對的端倪,那就是好徵兆。令人費解的是,人們會以為 programming 是一件精準、有條理的工作,事實上,computer 才是精準、有條理的,而 hacking 則是在歡笑中進行。

2008/08/11

Linux Application Checker

如果你在 Linux 上寫了一套應用程式,當然會希望,什麼都不改,就能讓它在各種版本上執行。

透過 Linux Application Checker ("AppChecker") 的協助,離這樣的理想又近了一步。這套工具最早由 Russian Academy of Sciences 與 Linux Foundation 合作發展,以 Linux Standard Base (LSB) workgroup 既有的成果為基礎,處理 cross-distro portability 和 LSB compliance 的議題,簡言之,它簡化並提昇 Linux 應用程式的移植性。