mac mini - pc 特別版 :-P
這位先生的工作場合是公共的,怕可愛的mac mini被抱走,
所以想出用dell 的 pc box 裝mac的idea,光碟糟還正好合的上哩~不知道mac mini原設計者看到會不會想哭….
或許下個版本該像notebook一樣做個kingstone的lock hole就不用這麼搞了吧。
note:flickr的相片如果用flash顯示,就沒法直接copy image url拿來用了,只能像上面一樣提供網址。這好像又會成為被攻擊的一點。
這位先生的工作場合是公共的,怕可愛的mac mini被抱走,
所以想出用dell 的 pc box 裝mac的idea,光碟糟還正好合的上哩~不知道mac mini原設計者看到會不會想哭….
或許下個版本該像notebook一樣做個kingstone的lock hole就不用這麼搞了吧。
note:flickr的相片如果用flash顯示,就沒法直接copy image url拿來用了,只能像上面一樣提供網址。這好像又會成為被攻擊的一點。
In researching the origins of the MVC pattern, I came across an archived posting from the Usenet group comp.lang.smalltalk from 1994. The posting read, in part:
I thought you might be interested in a ‘bit of history’ on origin of the Model-View-Controller paradigm.
Prof. Trygve Reenskaug is generally cited as being the creator of the MVC concept. He worked with the Smalltalk group at Xerox PARC as a visiting scientist in 78/79. During this stay at Xerox PARC he developed the MVC. I know him well and have talked to him about this. He confirms it, although stating that it was a collaborative effort at Xerox PARC.
My first idea was to separate presentation from information because the information structure is reasonably stable while the way we need to see it and manipulate it varies with the task. (This idea stems from around 1970 when I first became interested in distributed systems.)
Trygve Reenskaug現在已從挪威大學退休,並對UML的規格製定貢獻良多。
這個故事告訴我們:
1、早點兒生當xxx之父的機會比較大(當然像愛因斯坦這樣的大腦就例外,他大概生在那個時代都還是會發明跟相對論一樣偉大的理論)
2、如果要找最原始的mvc範例,可以多看smalltalk的相關討論站。另外colin moock的EAS2一書中也大量模仿smalltalk 的精神(加上部份java的實作手法,因為他的co-author是java背景)
3、如果要找現代一點的mvc或mvp範例,java struts 是個不錯的管道,它是遵循 MVC model 2 的精神去實作,只是我個人覺得它將工作流程的tier切分太細,雖然非常有彈性,但非常不適合小型的案子使用,因為很容易就會被架構給淹死。因此上乘之道是瞭解struts的原理與部份實作手法,然後改寫出自已喜歡的方式,例如針對RIA的架構去改一個適合的mvc pattern出來,目前這方面我已經有相當的成果。
昨日教課時偷閒從教室用IE連回來看看,結果發現整個版面與字型大小果然變的亂糟糟,但用firefox看就一切ok。
雖然IE與firefox對同一份css 的詮釋方式不同也是早知道的事,但一來想到要為ie再調整一份就覺得很不甘,二來建立這個blog的主要目地就是”書寫優先” - start small, iteration by iteration,
所以美術等細節就等日後有空再慢慢改。
在此期間,只能希望大家多多愛護 firefox,多用保平安喔(例如開網頁速度更快、更不易中毒、免錢外掛又多….)。
note:從log中發現有一位來自mac的用戶是使用omniWeb browser,非常有趣(理論上應該是safari/camino/firefox居多);然後還有一位來自瑞典的網友,搜尋關鍵字是 laszlo remoting,不過我想他應該看個兩秒就閃人了,畢竟一個台灣/香港/中國人住在瑞典然後是以寫RIA(而且還同時想到要用laszlo + remoting !!! ) 為生的機率有多高呢?這裏只能祝福他順利找到需要的資料,最好還能順便cc一份給我。(笑)
因為是懶人,所以尋找能順利將object < -> database 轉換的framework就一直是high priority task,
尤其是那些可能可以跟actionscript搭在一起合作愉快的方案更是吸引人。
當然如果你很忙沒時間繼續看下去,那先知道結論就好:目前沒有一個可以直接跟flash配合。
當然由於flash的工程師user base太小,一開始我也不指望會有這種東西,因此直接是從.net與java下手看能不能改過來用。
最初我找到一些關於 O/R mapping的書與文章,裏面教授的是過去二十年來工程師們一直用的手法(也就是雙手萬能的手工藝技巧),而其中最令我心驚膽顫的一句話就是:
as stated before, 40-60% of the project time were used to handle OR mapping
當然手工藝並不是真的那麼萬惡不赦,很多中小型的案子自已動手或許真的比較快。
但由於類似O/R mapping這樣每天都得處理的routine實在是很煩索的可以,因此java界開始出現一個名為Java Data Object (JDO)的概念,也就是提供一個object 與 database的中介層,這原本只是sun提出的一個spec,但由於很受歡迎,因此很快市場上就出現一狗票的實作商品,理論上可以讓工程師完全不用再手動處理O/R mapping這件事。在所有的JDO-alike的實作裏,OJB算是open source圈內最響叮噹的一個方案。
而這幾年從JDO的概念又衍生出一個更新的persistent 技術,叫做 Hibernate,這個字實在是用的巧妙,讓人發出會心微笑。它有趣的地方在於hibernate原本是指電腦用完但不想關機時,可以按下休眠將ram裏的東西dump到disk上暫存,下次開機時只要把資料讀回ram裏就可以迅速回到可操作狀態(當然現在大家隨便都裝1、2GB的ram,這招不見得會快很多);而這個字用在persistent方面,很明顯的可以看出工程師是認為 Object 才是”正常的操作狀態”,而存入資料庫(或其它persistent store)只是類似休眠的動作一樣,等將來要用時再取出即可。
從這個類比就不難看出Hibernate想要達到的目標,聽起來確實非常迷人,而更棒的是這個概念已經被port到各種語言,例如C#, php等都有,而且往往還有超過一種的選擇。
以目前調查的結果來看,比較完整的hibernate port都會再包含一層 database abstract layer,讓整個流程變的更有彈性(因為連data store的目標都可以隨便更換),因此簡單來說,只要想辦法把物件從flash丟回app server,剩下的就交給 C#/php去處理,更讚的一點在於flash remoting可以透過binary的方式傳遞 native actionscript object (例如最常用到的 numeric array與associative array),因此只要巧妙的玩弄remoting的binary特性,就可以在某種層度上達到Java Value Object甚至某些EJB才能做到的效果。
所以未來幾天有空的時間我會試試把整個流程串起來,看看是否真的可行。
不過使用persistent framework也不是完全沒有缺點,目前已知的問題有:
1、全新的專案比較適合使用,因為通常framework會統包db schema,很難與既有的schema吻合
2、由於db是由framework控管,因此要改東西時往往不是直接殺進db裏動手,而是要透過framework去修正,當架構越大時,成本就越高
3、各種framework都會讓專案的複雜度增加,最後可能變成”拿一個麻煩換另一個麻煩”(意思是:framewokr雖然解決了傳統OR mapping的煩索,但它自已本身可能也會變的很麻煩)
4、大部份php的hibernate port都是小規模私人進行的計畫,因此品質與可靠度只有天知地知他知但我不知,所以用起來要格外小心。
今天重裝系統,把apache, php5, mysql4.1, python, perl, svn, tortoise都重裝了一遍,
結果意外發現svn在windows上安裝的小技巧。
之前安裝時都是乖乖的用svn 的installer(也就是 .exe),因此所有的環境變數都會自動設好,
但今天改用手動安裝(也就是解開zip檔就用了),結果發現要跟apache bind在一起時卻出問題,
只要一試者 LoadModule mod_dav_svn.so 就掛掉。
後來檢查一下才發現原來以前用installer時它會在系統的環境變數加一行 c:\svnbin 來指向必要的檔案,而手動裝時卻沒有。
加上這行後就一切順利,幾個動作就把svn跟apache結合,並設定簡單的http驗証就上線了。
接下來的工作是把trac 也bind進去,重建好開發環境就可以安心工作了。
edit:
很不幸的在windows上試裝trac大失敗,很難相信安裝一個issue tracking軟體需要先抓七個外掛,並且經過33個steps。這也是open source stinks 的地方;在不想浪費時間的情況下,目前決定將改用jira與svn結合。