又到了星期五晚寫文章好時刻,這次聊點什麼呢?
前幾天在新聞上看到一則專題報導,介紹大陸大芬村的傳奇發展。
根據報導,大芬村是大陸最大的複製畫產製地,每年製造一百萬幅各式複製畫,約佔全中國產量 60%,主要銷往歐美。
報導中帶了許多當地的畫面與背景介紹,但最讓人印象深刻的一段則是訪問該地官員時所說的:
…當地的年輕畫家每天至少要仿畫十幅,每幅約耗一至兩小時不等,在這樣經年累月的仿繪臨摹過程中,不斷體驗世界最好的作品,在一幅幅重覆繪製過程中領悟到細節、參透了意念,最終就會產生出自已的想法…
當時看了就覺得這跟寫程式很像~雖然編程跟繪畫比起來比較不那麼藝術性,但它也不是全然的理性運作。
主要的原因是,學會基本的編程技巧很容易,學會系統分析、設計、pattern、framework也不是那麼的難,基本上只要有心六個月到一年間都可以大致摸過一遍。
但困難的地方在於,學過一遍不代表能上手,就算上手,也不見得瞭解許多細節的設計理念與哲學,而這些細節,就只能透過不斷的重覆,在許多同類型與不同類型的實作中去體會,才能慢慢吸收精華,然後產生屬於自已的想法。
這就跟大芬村的複製畫家們一樣,第一次仿『蒙納麗莎』時,鐵定只能畫個粗略,搞不好連鉛筆稿都畫的亂七八糟,等到畫了十次二十次時,開始對整幅畫的結構、色彩與平衡有了深一層的體會,等到畫到第一百、兩百次時,就可能開始看出許多原本看不到的東西,例如微小的筆觸、轉折、刷痕與染色。
在編程的世界也經常出現同樣的事,由於教課的關系,往往同一個範例在一年內要教十來次,在每次的重寫與重構過程中,就會開始對以往「只是會寫」的許多東西開始有不一樣的體認,例如看出更宏觀的架構或不一樣的設計方式;而隨者寫的次數增加,手感也就越來越好,面對問題時的敏銳度也大增,可以在很短的時間內就看出problem domain 的重點與結構,然後選用適當的策略來解決。
類似的經驗在許多方法論的學習上也曾出現過,例如 UML, pattern, XP等,看完書練習一兩次都是不夠的,只有透過在專案實作中看過十幾二十次後,才會開始對這些東西有感覺,知道那些 use case 很重要一定要詳細列出,那些 UML 圖一定要畫將來coding才走的順暢,那些 iteration 該切的更細或合併,當然,還有最重要的,那些特質的人可以放到那個位置負責什麼樣的工作(用人也是要靠試誤的啊~)。
而大芬村的畫家再下去會怎麼發展呢?
如果是很認真的畫家,在經歷幾百次重覆的臨摹後,不但看到了細節中的細節,也會開始漸漸產生自已的想法,這時某些東西會融入到人的深層去,進入細胞成為本能,然後再回饋出反芻後的精華,這時就是創作的開始。
關於模仿,還有另一個有趣的可能發展,很久很久很久以前,在雜誌上看到一位吉他大師的訪問(通常我都會記得這種人的名字,但這位真的忘了,是大一時某本 Guitar World上的專訪),記者問他是怎麼創造出這麼獨特的彈性風格?
“I used to copy note for note from the records that I could get, sometimes those phrases are so fast or the records are so worn out due to repeated playing, I can’t figure the notes out, well, then, that’s where the originality came from”
大意基本上是說:他也是從copy唱片上的歌曲開始練習,但有時某些吉他片段實在彈的太快(試試 jason becker or marty friedman)他聽不出在彈些什麼,就只好憑想像力去嚐試彈的一樣,咳,這就是「原創」的開端。(例如人家可能是閃電指真的可以一秒鐘彈二十個音,他做不到或聽不出來,結果就此發明了 double stop或slide之類的技巧)
所以模仿不見得是壞事,學習往往是從模仿開始,等內化後才有創造的機會,這點基本上應該在各個領域都是通的,只是覺得用在編程這個學門特別的適合。
另一方面,從最近密集開發的過程中,漸漸開始覺得,寫程式有 70% 是重覆性的工作,這部份是比較無聊的(例如寫server端的 vo, CRUD),有20%是藝術的創造,這部份是非常有趣的,例如設計整支程式的結構與運作流程,不斷的重構與解構再改良,至於剩下的10%,則是犯半大不小的錯然後開始debug或完全不知所芸的亂寫…
但總的來說,只要能參與並決定設計這部份,寫程式這件事就大致上是份可接受的工作
| by admin
程式開發者的RIA快速解決方案-Flex 2
串流與多人連線應用-Flash Media Server
初識Flash ActionScript 3.0
兩個月前規畫的三門 one-day crash course 最近開始接受報名了,今天拿到五張 coupons,可以免費參加任何一場講座。有興趣的朋友歡迎索取,如果人數超過我會優先送給最有需要的五位
當然,就算不克前來參加,也還是歡迎大家針對 flex2/as3 提問,能力所及之處我會儘力回覆。
| by admin
FAQ
基於很多因素考量,adobe 今天終於宣佈將 flash player 版號從 8.5 直接跳到 9.0。
從很多層面來看這都是合理的選擇,不過大家也不用想太多,這真的只是版號調整而已,完全沒有增加任何新功能,比較像是 marcom 的利器,不過附加好處就是user主動升級的意願應該會高一點,畢竟 .5 的版號總是讓人有不升級也沒差的感覺,這下子 fp 的穿透率又會更高一點了。
當然,隨者這件事的宣佈,也暗示者許多有趣的事即將到來…
| by admin
今天看到一則有趣的新聞,一家台灣的廠商開發了名為 Plus U 的 flash lite service client,可以在手機上提供新聞、氣像等資訊。

很有趣的嚐試,值得觀察的地方很多。
首先,這應該是台灣第一家下來試水溫的先趨,這代表台灣這塊手機市場終於夠成熟到產出一家這類型的公司了嗎?仰或這是熱情玩家們的奮力一博?
目前看來這個產品面臨的仍然是老問題,格局還沒走出傳統的限制,也就是仍然看不到killer app 的影子,如果用 flashlite 做手機其它技術本來就做的到的事,恐怕利基就不會太大,但要找出 flashlite 獨特的藍海市場,可能也不容易,因此這家公司的後續發展頗值得觀察,它的成敗也可以成為其它想進入這塊市場的玩家們重要的指標。
| by admin
有位網友來信問到:
有聽過Cairngorm 這個framework. 不過在上手時就發現很難找有關資料
想問問有沒有什麼site 可以介紹一下
真意外會有人有興趣想知道或學習這個 framework。
在 flex 1.5 時代,學習 Cairngorm 最正統的方式就是看 Iteration::Two的網站與 steven webster 寫的這本書。
Developing Rich Clients with Macromedia Flex

steven 是 Iteration::Two 的負責人,而 Iteration::Two 已在去年中被adobe收購成為 Adobe Consulting UK,因此他們自然會大量使用 Cairngorm 服務歐洲的企業客戶,這本書就是他們幾個著名專案的執行心得大整合。
但由於flex 現在正處於升級過渡階段,flex 2 framework 本身都還沒定案,因此 Cairngorm 實際上也很難改版,僅在兩個月前推出 Cairngorm 2 alpha,針對 flex 2 的特性做了些許改良。
目前網路上找的到幾篇 v2 alpha 的文章如下:
What’s new and changed in Cairngorm 2.0 alpha
Developing Flex RIAs with Cairngorm Microarchitecture
steven 在 devnet 上寫的一系列文章共有六篇,列表如下:
Part 1: Introducing Cairngorm
Part 2: Keeping State on the Client
Part 3: Architecting the View
Part 4: Feature-Driven Development
Part 5: Server-Side Integration
Part 6: Rapid and Consistent Development with Cairngorm and Flex
這算是目前最完整的介紹。
我個人的建議是:
1、先不要看文章,直接追蹤範例程式的流程,上面提供的 alpha download zip中有一個 login 範例,雖然很簡單,但可以清楚的看出每個 tier 的功能與運作流程,把這個範例分析一遍就可以大概瞭解它的設計精神。
2、如果沒時間或看不懂它的程式碼,可以看看我的追蹤心得,在那篇文章裏我稍微條列了一個login 事件的交易過程與手法優劣。
3、等到比較熟悉 cairngorm 的精神與概念後,就可以開始動腦想想他的設計是否真的良善?有沒有什麼地方是可以省略或改良?其它技術(例如 .net, j2ee, ruby)裏是否有類似的設計可借用?通常借由反向思考一個 framework 的缺點,會比較快看出它深層的一面,然後就知道可能可以怎麼修改它以更符合自已的開發團隊跟運作型態。
我觀察這個framework 已大約兩年左右,到目前為止仍然覺得不應冒然採用,最好等非常清楚自已的需求以及可能面對的專案scope時,再決定是否使用,但茶餘飯後研究一下當腦力遊戲是很不錯選擇
| by admin