近來實做過幾個看起來很難成功的專案後,我深深感到
在台灣賣「程式技術」是一點用也沒有的
台灣有多少人會寫程式,現在大學各個系都開始冠上「資訊」
程式語言的門檻越來越低,從php到ruby的發展及差異清晰可見
程式設計師們個個只要稍加訓練,一定都具備相當的能力能夠「寫」出成果來
然而,這些成果是什麼?些成果「該」是什麼?一個能賣的產品嗎?
這些問題總是也沒人去探討。
以往台灣的軟體產業,公司需要的多半還是Coding Machine,也就是「工程師」
資深的工程師或需求人員「想出」設計,搭配美工或是資料庫設計,然後由年輕的工程師們變出來
卻沒有多少人注意到這個產業慢慢需要的不是機器,而是完善的設計流程,及腦袋清楚,身體健康的開發人員
我相信,程式設計有所謂「五育」
台灣的軟體人員,似乎總是有點五育不全
2008年1月14日 星期一
[2007/08/19 - 2008/01/14] Hemidemi書籤摘要
- 09/27 18:30, 2007Jester是一個ActiveResource的Javascript實做,比較主要的還是利用JSON及REST觀念進行CRUD。但這個東西是某能夠獨立運用?我相信未來與其他javascript函式庫整合是勢在必行。(標籤: javascript)
- 10/04 23:44, 2007Juggernaut是一個Rails的Push Server Plugin,使得Server Side Push成為可能。Request依然還是使用Ajax,但透過Client嵌入的Flash進行回傳javascript的eval。儘管是透過不同的通道傳送資料,但因為push server不需要執行完整的Rails而速度大增,記憶體用量也減少,因此反應變快。(標籤: rails ruby browser flash javascript)
- 10/04 23:45, 2007這是一個商用Push Server的展示(標籤: rails)
- 10/04 23:53, 2007Renkoo是一個整合郵件,IM,時間地點規劃的服務,可以整合朋友的帳號及通訊清單。(標籤: im email)
- 10/04 23:54, 2007vgod寫了一篇有關comet的文章(標籤: flash)
- 10/30 09:26, 2007介紹許多撰寫Rails及使用ActiveRecord時該注意的事項,相當地實用!(標籤: ruby rails)
- 11/21 18:48, 2007雖然是比較久以前的測試,不過還是有些參考價值,似乎file system是大問題。(標籤: postgresql)
- 11/21 20:33, 2007這也是一篇很好的效能測試,不過時間上比較早一點。此外也沒有針對磁碟IO上的測試。(標籤: linux freebsd)
- 12/12 16:43, 2007雖然是老東西了,不過還是看看吧~(標籤: google database)
- 12/24 16:49, 2007稍微註記一下(標籤: ruby programming)
- 12/24 19:47, 2007jnext是一個擴充javascript的函式庫,讓javascript具有呼叫系統函式的能力,例如開啟socket或是讀取本機檔案。(標籤: javascript)
- 12/24 20:48, 2007如何撰寫高速的Javascript?第一個就是要先瞭解它究竟是啥~(標籤: javascript)
- 01/04 17:15, 2008這確實是滿重要的東西,不過看目前絕大多數還是在於共享的應用,也就是說如果要搭上第一順風車的話,許多站都已經具備條件了。但是第二順風車,「Relationship」我認為是中後期的主力應用,畢竟要還原至social的本質。(標籤: social)
- 01/14 16:43, 2008這是一個快速線上建立並且熟悉rails環境的服務(標籤: rails ruby)
2007年12月9日 星期日
You are a dog ! (Ultrasonic ringtone)
2007年11月1日 星期四
SRB與Data Grid
啥是Data Grid,啥又是SRB? 這個問題其實也在我的心中困擾很久,由於我自己差不多到了這個階段,該是時候弄清楚並且真正提出解決問題的方案了。有一個前提必須提醒大家瞭解一個想法,Grid這件東西,我個人認為比起研究或是虛幻的夢想或者要解決100%的問題,實際地解決60~80%的人認為的問題,就能夠有貢獻了。而過去的經驗裡,很多事情都讓我體認到,眾多的計畫裡,提出眾多的想法,僅只能夠被歸類在「研究」,就像我聽許多老師說,「這就是做研究嘛」一樣。實際上一個東西是不是能夠被拿來做量產,終究還是該關心的問題。這並不是否定各位前輩們的辛苦研究精神,在不可能裡尋找可能是很累人的。只是對我個人而言,我希望經研究作為是一個過程,而不是做了三四年都還在研究階段。 很可惜的是,在我這幾年參與的計畫裡,「研究」還是佔了最主要的目的,而並不是「使用」。這是讓我深感SRB就是一個這樣研究型的middleware,許多的設計是在告訴大家「可能」,但並不是為了要拿來使用而設計。卻實在看過一些文獻後,對於SRB在Machanism Abstraction上的貢獻我覺得相當佩服,對於眾多的儲存媒體,要能夠囊括不是一件簡單的事。但仔細思考,究竟Data Grid希望為大家解決啥問題,會發現路更是長遠。光是metadata abstraction或是machanism abstarction,也不見得能夠解決幾個重要的問題。 以下我透過一些問題來帶入Data Grid的需要:
2007年10月24日 星期三
更新至Wordpress 2.3
似乎終於願意開放tinymce的功能了,原本就有,不知道為啥一直不給用,得自己改。加上這次啟用了多個加速功能,包括mysql query cache,eaccelarator,wordpress 內建快取等,有些頁面的回應速度終於降到了1秒以下,連另一個站的wiki也快很多。老是在寫追求高效能的web application,連自己對秒速的感覺也變得遲鈍。現在都會希望要求東西在1秒內就要出來,1秒以上的也不要在連續的操作裡出現太多次。
加上了Challenge,雖然有點不方便,不過spam真的太猖獗,沒辦法。本來就有裝akismet,後來還換了domain name也沒啥用,一下子又變成一天幾十個。本來是想要換布景主題的,不過看來看去怎麼還是這個最好看。
目前還是持續在寫有關SRB與DataGrid的文章,越來越多學校的同學們(被迫)加入研究datagrid,這是一種趨勢嗎?不過說真的的我是很相信整合是一種趨勢沒錯。但問題還是在於
這幾點,對我個人看見的現象相當地明顯。有的人希望DataGrid是一個超大FTP,有的人希望他是anywhere access,有的人希望這可以超越世界上任何一種儲存的速度。但沒有一個人真的瞭解DataGrid在做啥,目的又是什麼。正如同很多人也不瞭解Grid是要幹嘛。對Grid來說,整合這件事應該是要同時帶來方便性和速度。但實際上我們也看見很多例子說明,整合只會更慢。
對於長久做Grid計畫的我而言,整合是一種痛苦,代表各校各自表述卻又不得不聚在一起凹出一個東西。整合只會讓權力更大的人握有更多的東西,而並不見得會對民生或是一般人常用帶來啥益處。為什麼整合會成這個樣子?也充分地表現出社會的運作。我想真正的整合是大家一起尋找出眾人都能得到利益,卻能夠維持原本特定型態網路運作的途徑。
舉例說,以前驢子出了很多Mod,有的是為了有趣,有的是為了站方(或站務群)的個人利益。實際上一直到今年,我所看到的還是維持大眾利益的站活了下來。像我常去的m-team這種型態的就是例子,儘管不多,我也依然在用自己的方式貢獻流量或是發個文章。確實,站方說自己辛不辛苦我們不會知道,不過如果正確地找到方向,不輕易違背諾言,不輕易放棄使用者,那又有什麼站會因為人數太少而倒?辛蒂關站的時候,包括我在內不知道有多少人嚷著要捐錢。對很多人來說,使用者便利,習慣是讓他們貢獻自己手上金錢的主因,因為這對他們來說是價值,最後當然還是得稱讚長期努力的站務群。
做了幾年計畫,雖然也沒啥貢獻,也不敢說做了什麼好東西,可是真的還讓我覺得滿無聊的。問題並沒有得到好的解決,可是講的人卻可以講的口沫橫飛,聽的人則多半是在台下說「這也不怎樣」,但也未見其提出好或不好在哪。帶頭的人總是有著太多的理想,底下的學生總是做的半死。直到我開始在軟體公司工作了,雖然以上情境沒啥不同,才發現其實心境有很大的不同。至少我的想法比較接近雙贏,不再是做一個要求使用者改變習慣的東西了,也不會不顧自己總是做白工,而無法思考獲利的方式。
不過套一句我的老師說的話,「研究就是這樣」,可能現在的我也是在夢想與現實中尋找一些路吧。
加上了Challenge,雖然有點不方便,不過spam真的太猖獗,沒辦法。本來就有裝akismet,後來還換了domain name也沒啥用,一下子又變成一天幾十個。本來是想要換布景主題的,不過看來看去怎麼還是這個最好看。
目前還是持續在寫有關SRB與DataGrid的文章,越來越多學校的同學們(被迫)加入研究datagrid,這是一種趨勢嗎?不過說真的的我是很相信整合是一種趨勢沒錯。但問題還是在於
- 太少Unix技術訓練,大學以上的教授大多都認為會用這是理所當然的,實際上他們自己都不會用,更何況會教或引導學生?
- 應用範圍的研究方向偏多。其實這本來就反映出DataGrid的本質,只是在台灣大家不管做啥論文都還是會希望有個演算法,才能「看起來」有點料,所以很多人都還是做Replica問題的,卻又因為這跟datagrid相關而又得乖乖地來接觸SRB。
- 沒有真正有商業價值的應用。SRB賣給Nirvana之後,這家公司便出了很多「企業」專用方案,乍看之下確實功能強大,而且符合可擴充的需求,實際呢?究竟有多少企業真的選擇SRB做為整體性的解決方案?而其他Grid計畫,某些層面不見得是要拿來賺錢用的,不能夠相提並論。
- 有資料典藏的方案,可是尚未顯示其價值。很多地方都在做資料典藏,著名的internet archive,收集了自從創立以來網路上所有能夠找到的網頁。這些計畫一定需要大容量可擴充可容錯的儲存,但存了一堆東西,也沒有一個人感受到這與自己生活有啥關係。
這幾點,對我個人看見的現象相當地明顯。有的人希望DataGrid是一個超大FTP,有的人希望他是anywhere access,有的人希望這可以超越世界上任何一種儲存的速度。但沒有一個人真的瞭解DataGrid在做啥,目的又是什麼。正如同很多人也不瞭解Grid是要幹嘛。對Grid來說,整合這件事應該是要同時帶來方便性和速度。但實際上我們也看見很多例子說明,整合只會更慢。
對於長久做Grid計畫的我而言,整合是一種痛苦,代表各校各自表述卻又不得不聚在一起凹出一個東西。整合只會讓權力更大的人握有更多的東西,而並不見得會對民生或是一般人常用帶來啥益處。為什麼整合會成這個樣子?也充分地表現出社會的運作。我想真正的整合是大家一起尋找出眾人都能得到利益,卻能夠維持原本特定型態網路運作的途徑。
舉例說,以前驢子出了很多Mod,有的是為了有趣,有的是為了站方(或站務群)的個人利益。實際上一直到今年,我所看到的還是維持大眾利益的站活了下來。像我常去的m-team這種型態的就是例子,儘管不多,我也依然在用自己的方式貢獻流量或是發個文章。確實,站方說自己辛不辛苦我們不會知道,不過如果正確地找到方向,不輕易違背諾言,不輕易放棄使用者,那又有什麼站會因為人數太少而倒?辛蒂關站的時候,包括我在內不知道有多少人嚷著要捐錢。對很多人來說,使用者便利,習慣是讓他們貢獻自己手上金錢的主因,因為這對他們來說是價值,最後當然還是得稱讚長期努力的站務群。
做了幾年計畫,雖然也沒啥貢獻,也不敢說做了什麼好東西,可是真的還讓我覺得滿無聊的。問題並沒有得到好的解決,可是講的人卻可以講的口沫橫飛,聽的人則多半是在台下說「這也不怎樣」,但也未見其提出好或不好在哪。帶頭的人總是有著太多的理想,底下的學生總是做的半死。直到我開始在軟體公司工作了,雖然以上情境沒啥不同,才發現其實心境有很大的不同。至少我的想法比較接近雙贏,不再是做一個要求使用者改變習慣的東西了,也不會不顧自己總是做白工,而無法思考獲利的方式。
不過套一句我的老師說的話,「研究就是這樣」,可能現在的我也是在夢想與現實中尋找一些路吧。
2007年9月26日 星期三
Single Page Application - 下一代的Web應用程式
在Web Service, Ajax, Web 2.0, REST等Web應用與技術話題熱潮,帶動許多第二代的Web開發技術成長之後,這些話題也漸漸地消退。不過許多人可能不曾發現,其實這些技術名詞,是在慢慢地顯露一點:Web應用程式逐漸從Server Side轉移到Client Side,也就是瀏覽器身上。
本篇文章要從以往的Server Side Web應用程式,其開發方式與演進來介紹Single Page Application(SPA) 與現今所有主流Web技術。
我在Web 2.0過去,現在與未來及介紹Ruby On Rails都有提到一些Web技術的演進,比較明顯的趨勢就是從靜態到動態頁面,而設計的方式也更程式化。而在http://atedev.wordpress.com/2007/01/09/Web2.0:過去,現在及未來也有讀者在前言提到,技術並不是將一個名詞安上去就好。我相當贊同這句話,因此也在這篇文章中希望來做個總整理,以技術及歷史來看看Web是怎樣成長的。
儘管Web並不是一個三言兩語能拿個版本號碼來解釋,但實際上Web技術確實有些明顯的分隔點。
最早期我們熟知的就是靜態網頁,這應該沒啥問題。儘管在2000前,php,asp就開始流行,坊間的書上也都稱之為動態網頁。而我在此提及的動態網頁程式,實際上卻是從php4釋出的那一年開始(註釋)。這邊要讓大家瞭解的分界點,其實是php4開始被許多商業公司所採用,而軟體的形式也更為套裝化,而不再像之前大家認定的「動態」網頁僅僅只是拿來完成一些簡單的區塊來與一般的靜態網頁整合。
在2004年的時候,Web Framework的產生,創造了Web應用程式另一個新的高峰。而在這個時候也開始有一些Rich Web Client概念的雛形了。我將Ruby On Rails定為一個分界點是因為,他顛覆了傳統動態網頁還在使用設計方式,而改用MVC。但要注意的是Ruby On Rails儘管整合了Ajax與進階Javascript函式庫,但還是沒有改變回傳完整或部分HTML的方式,意思便是HTML的產生始終在Server Side。
本篇文章要從以往的Server Side Web應用程式,其開發方式與演進來介紹Single Page Application(SPA) 與現今所有主流Web技術。
我在Web 2.0過去,現在與未來及介紹Ruby On Rails都有提到一些Web技術的演進,比較明顯的趨勢就是從靜態到動態頁面,而設計的方式也更程式化。而在http://atedev.wordpress.com/2007/01/09/Web2.0:過去,現在及未來也有讀者在前言提到,技術並不是將一個名詞安上去就好。我相當贊同這句話,因此也在這篇文章中希望來做個總整理,以技術及歷史來看看Web是怎樣成長的。
Web應用程式的演進
動態網頁
儘管Web並不是一個三言兩語能拿個版本號碼來解釋,但實際上Web技術確實有些明顯的分隔點。
最早期我們熟知的就是靜態網頁,這應該沒啥問題。儘管在2000前,php,asp就開始流行,坊間的書上也都稱之為動態網頁。而我在此提及的動態網頁程式,實際上卻是從php4釋出的那一年開始(註釋)。這邊要讓大家瞭解的分界點,其實是php4開始被許多商業公司所採用,而軟體的形式也更為套裝化,而不再像之前大家認定的「動態」網頁僅僅只是拿來完成一些簡單的區塊來與一般的靜態網頁整合。
在2004年的時候,Web Framework的產生,創造了Web應用程式另一個新的高峰。而在這個時候也開始有一些Rich Web Client概念的雛形了。我將Ruby On Rails定為一個分界點是因為,他顛覆了傳統動態網頁還在使用設計方式,而改用MVC。但要注意的是Ruby On Rails儘管整合了Ajax與進階Javascript函式庫,但還是沒有改變回傳完整或部分HTML的方式,意思便是HTML的產生始終在Server Side。
2007年9月2日 星期日
Ruby on Rails 與 ruby-postgres
ruby-postgres
有網友與我提出Rails與PostgreSQL的問題,我就順便寫一下有關PostgreSQL的問題好了。
安裝的方式請參考
http://postgresql-chinese.blogspot.com/2007/08/windowsrailspostgresql.html
不過我在這邊順便補充,其實當初會捨棄postgres-pr還是因為效能的問題,native binding終究是比較快的。
在此先對新手說明一個觀念,如果你想一步一步玩熟Rails,最好還是多善用ruby script/console來進入Console mode。而Console其實也只是呼叫irb去載入environments.rb,這個檔案會陸續載入plugin, model及你指定在environments.rb寫的所有require。Console有兩個用途,一個是測試是否你能正常啟動Rails,第二個是測試你的Model是否正常,例如測試association。而如果console都啟動失敗,或是Model.find出來的都不是想要的,那真正啟動mongrel去跑頁面是一定不可能是對的。
而許多在windows上面安裝的人一定會遇到函式庫載入失敗的問題。 要注意的是,安裝任何mswin32的gem都是有可能出現這樣的問題的。這個時候如果你是去看rails的development.log或是看到exception,通常都還是會說是driver有問題(可能會是xxx.so載入失敗之類的),這樣是看不出來的。此時使用console,一啟動的時候他就會告訴你是啥dll無法載入。
而大家使用ruby-postgres,如果不安裝PostgreSQL Server Win32,有幾個重要的dll是不會被載入到windows裡的。這個使用請先安裝PGAdmin III,然後將他的安裝目錄裡的libpq.dll,iconv.dll,krb5_32.dll,libiconv-2.dll,libintl-2.dll,comerr32.dll至你的ruby安裝目錄下的bin即可,還是一樣先試試console能不能開吧!
Ruby的很多Win32函式庫都是用這種binding的方式,而並非是使用ruby撰寫而成的。所以如果今天是發現gettext不能用,就應該要去尋找gettext win32,然後將缺的dll複製到bin下即可。
該如何發問?
最近在論壇觀察了一下,發現Rails新手的朋友們,應該要接受一些觀念建立,以免回答的人答非所問。既然我遇到人來問問題(還好不是來踢館),也免不了要提倡一下,這觀念在任何一種程式語言都適用。
有網友與我提出Rails與PostgreSQL的問題,我就順便寫一下有關PostgreSQL的問題好了。
安裝的方式請參考
http://postgresql-chinese.blogspot.com/2007/08/windowsrailspostgresql.html
不過我在這邊順便補充,其實當初會捨棄postgres-pr還是因為效能的問題,native binding終究是比較快的。
在此先對新手說明一個觀念,如果你想一步一步玩熟Rails,最好還是多善用ruby script/console來進入Console mode。而Console其實也只是呼叫irb去載入environments.rb,這個檔案會陸續載入plugin, model及你指定在environments.rb寫的所有require。Console有兩個用途,一個是測試是否你能正常啟動Rails,第二個是測試你的Model是否正常,例如測試association。而如果console都啟動失敗,或是Model.find出來的都不是想要的,那真正啟動mongrel去跑頁面是一定不可能是對的。
而許多在windows上面安裝的人一定會遇到函式庫載入失敗的問題。 要注意的是,安裝任何mswin32的gem都是有可能出現這樣的問題的。這個時候如果你是去看rails的development.log或是看到exception,通常都還是會說是driver有問題(可能會是xxx.so載入失敗之類的),這樣是看不出來的。此時使用console,一啟動的時候他就會告訴你是啥dll無法載入。
而大家使用ruby-postgres,如果不安裝PostgreSQL Server Win32,有幾個重要的dll是不會被載入到windows裡的。這個使用請先安裝PGAdmin III,然後將他的安裝目錄裡的libpq.dll,iconv.dll,krb5_32.dll,libiconv-2.dll,libintl-2.dll,comerr32.dll至你的ruby安裝目錄下的bin即可,還是一樣先試試console能不能開吧!
Ruby的很多Win32函式庫都是用這種binding的方式,而並非是使用ruby撰寫而成的。所以如果今天是發現gettext不能用,就應該要去尋找gettext win32,然後將缺的dll複製到bin下即可。
該如何發問?
最近在論壇觀察了一下,發現Rails新手的朋友們,應該要接受一些觀念建立,以免回答的人答非所問。既然我遇到人來問問題(還好不是來踢館),也免不了要提倡一下,這觀念在任何一種程式語言都適用。
- 詳述問題:想要讓人瞭解問題,就是要說明你的目的,及你在發問之前曾經做了什麼。如果不是技術上的問題,例如是求函式庫,求解法,那更要說明清楚前因後果。
- 有Exception訊息的要貼exception:Rails當發生任何錯誤的時候,就一定是大家所熟知的畫面,「{ErrorName} in {Controller#action}」。接著就是貼ErrorName,以及下面灰色區塊裡的描述。第二個灰色區塊就是trace,如果可以的話,請 複製5~10行,如果是寄信,或發文可以不受篇幅影響,全部貼上來也無所謂。不然可是沒有人知道你在問啥的喔~
- 有畫面的請貼畫面:如果是ajax,html等其他UI上的疑難雜症,就一定要貼畫面了。然而是複雜難以解的問題,就要請你去用用fiddler了。例如有看過google maps不能用的問題,其實後來深入一看其實就是referer被擋的問題,這種狀況應該要詳細貼出http request及response,才能讓解答的人知道是啥狀況。
訂閱:
文章
(
Atom
)