2008年8月31日

Big Bang! 軟體開發的黑箱作業

受足夠訓練的專業程式設計師,能夠依照需求完成軟體開發,但往往只侷限於需求已經相當明確、規格已經確認的專案,很小的專案有機會在一開始就確定這些方向,即使有改遍通常也不會太大,因此程式設計者很容易就習慣了Big Bang!方式的軟體開發,即接到一個專案後就開始埋首寫程式,直到專案交付或約定測試的日子到了,才把完成的軟體給客戶使用。

這麼做確實省了開發時間,也較不會打擾客戶,節省了些成本,而結果即使有些需要修改,只要再多個幾天時間就能完成。

然而,這樣的軟體開發過程如同黑箱作業,對客戶來說,丟進去一個需求,只能期待著產出也能幸運地符合預期。

對於大型專案,或是需求很難在第一時間就溝通清楚、可能經常變動,或是客戶自己也還沒弄清楚真正的需求是什麼,這些情況會使得黑箱作業產生很高的風險。如果做出來的成品不是客戶想要的,那麼就造成了時間、成本的浪費,也會失去客戶的信任,甚至會有更多嚴重的後果。

學習傳統的系統分析與設計時,往往都會有種分析非常重要、分析沒做好前不能設計及撰寫程式、開發過程中分析佔大部份的時間,這種說法有部份的道理,因為沒有透過明確的需求分析確認,沒辦法實作出正確的程式。但實際上設計軟體很難實行這樣的理論,困難之處就在於一開始根本不可能將一切需求都訂清楚,很多時候客戶必須在看到一些雛型後,才會弄清楚真正需要什麼,許多時候需求是隨著專案開發時間的進行,會不斷變動或出現新需求。

假設我們排除其他狀況,讓專案一開始時,就先使用60%的時間和客戶溝通好需求,明確訂出系統各項規格,再交付給程式開發團隊用剩餘40%時間完成實作。這麼做似乎相當理想,因為先做好分析、才寫好程式,但實際上很可能陷入了前述的黑箱作業,因為在40%的實作時程中,是禁不起需求的變動而重頭再進行分析,時間已經變得很有限、而分析成本又是那麼地高。

先分析、再設計、然後才撰寫程式、測試除錯,這個過程沒問題,但必須把整個專案開發時程切割為多個iteration,在每個iteration中進行這樣的流程,每個iteration完成後都會產出一些可以被測試的功能,客戶也能夠看到一些雛型而對需求更加明確,並將意見回饋加入下一個iteration階段,經過多次iteration階段的循環,最後的產出就能夠更貼近客戶的需求。

而配合實現Test-driven的做法,每次撰寫程式前,就先完成測試程式碼,這些測試必須檢驗我們設計好的程式是否能由預定輸入產生預期的輸出,既然寫程式有bug是必然,先寫好測試就能幫助我們完成能產生正確結果(至少在某些條件下)的功能。在每個iteration最好都能夠把UnitTest完成,將能夠幫助我們在操作介面完整實作前,就先測試最重要的企業邏輯是否能如預期運作。

PHP存取MS SQL Server的新方法

在過去,使用PHP搭配SQL Server資料庫,總是有許多大小問題令人困擾,這些問題可能是中文變亂碼(有許多時候是部份正常部份亂碼,許多時候是不支援ntext、nvarchar的欄位造成)、不支援某些資料型別,也可能是效能的問題,而Lib實作支援的也僅是舊版本(MSSQL Library 7.0),想要搭配SQL Server 2005/2008就真的很麻煩。

幸好,微軟官方開始支持PHP的SQL Server驅動開發,目前已經推出SQL Server 2005 Driver for PHP v1.0(消息來自官方的SQL Server for PHP Team Blog),而原始碼也在CodePlex網站發佈(微軟搞Open Source愈來愈勤了)。

相關消息可以再看一下這裡這裡

這個Driver支援SQL Server 2005/2008,因為需要Native Client,所以目前僅能夠在Windows平台上執行,而微軟官方應該是未有開發其他平台版本的計劃,不過至少日後在Windows平台上開發PHP WebApp有更好的選擇,搭建WASP(Windows+Apache+SQL Server+PHP)也不再是大問題。

而開發PHP通常會使用抽象的資料庫存取層,ADOdb就是這種用途的library,微軟同時也提供patch程式碼,使ADOdb能夠使用微軟新的native driver for PHP,一則報導微軟做了哪些好事的消息可以看這裡

2008年8月30日

研究生必備之Firefox論文工具

Zotero: The Next-Generation Research Tool
這個延伸套件是為了幫助研究的需求開發,從官方網站的簡介:「Zotero[zoh-TAIR-oh]是免費、容易使用的Firefox延伸套件,幫助您蒐集、管理、引用您的研究來源(參考文獻),它存在於您工作所使用的瀏覽器當中。」在研究生眾多的台灣,當然也不乏中文的使用者,這裡這裡這裡可以一些網友的推薦文。
更棒的是這樣免費的工具,居然也提供與Word、OpenOffice的整合功能



Screengrab!
需要擷取網站畫面加入文章中,許多人使用快捷鍵[Alt]+[Prt Scr],連同視窗的邊框整個抓下來,這樣的做法必須再作裁切,而且只能擷取視窗大小的可視區域,Firefox的Screengrab!可以將網頁完整另存成圖片檔,讓引用的網站畫面更加完整。


FoxyProxy
許多資料庫都限定校內IP才可以連線,總不能每次查資料都要跑回學校,在無線網路的時代,搭火車、長途旅行時都應該能隨時隨地做研究,才算是認真上進的研究僧阿。通常圖書館或計中會提供需要帳密的Proxy主機,或者有些人則是自行架設,只要設定Proxy就能方便地存取資料庫,但是每次都要設定Proxy是很麻煩的,若有多組Proxy時常要切換會更加困擾,幸好有FoxyProxy這樣功能全面的Proxy設定管理工具,可以設定多組Proxy,在自動判斷條件符合或手動點選時,就使用不同的Proxy進行連線。例如某些資料庫需要透過學校A的proxy,而有一些則必須用學校B,這時候只要預先設定好,連到該資料庫的時候,就會自動啟用不同設定。

Hot, Flat, and Crowded

Friedman繼《The World Is Flat(中譯:世界是平的)》暢銷後又出版新著作《Hot, Flat, and Crowded》。

Hot, Flat, and Crowded: Why We Need a Green Revolution--and How It Can Renew America
by Thomas L. Friedman

中譯本標題是《世界又熱又平又擠》,我很懷疑不認識Friedman的人是否會想拿起來翻閱。

世界是平的談論全球化,許多改變代表著我們身處一個發達的時代,人們運用科技縮短了全世界的距離,一個開發中的國家,能夠扮演先進國家的海外超級工廠,剷平的世界提供的是新的遊戲規則,機會潛伏在平的世界中。

在新書中Friedman又再次以他的宏觀視野,帶領讀者從更高的角度俯瞰這世界發生的事,這件事情關乎你我的未來,也是近年新聞時常在炒熱的話題,全球暖化、能源危機、人口暴增。然而…我們就像加熱溫水鍋裡的青蛙,即使知道危機將發生,卻也只能眼睜睜地等待著。政府鼓勵的節能減碳,立意雖好,但往往落實到一些無關緊要的政策,再加上執行力不佳,似乎身為市井小民的我們只能坐以待斃。如同《不願面對的真相》把危機呈現再觀眾、讀者眼前,《Hot, Flat, and Crowded》更巨細靡遺地解釋危機存在哪些問題、形成的原因,我們需要關心的不只是瀕臨絕種的動物,還要更關心也可能瀕臨絕種的…人類。

人們的意識不會一個念頭就轉變,需要潛移默化的力量。「Green」代表的是更美好的地球,為了更美好的地球,需要凝聚眾多人的努力,然而為了大家共同的利益、而犧牲自己的利益,我們很難這樣要求自己、更難去要求別人做到。然而,如果危機就是轉機,那麼Green就可能代表著商機,利益趨使人們努力,如果Green能夠創造利益,做好Green的策略是企業決勝關鍵,那麼人們是否就有更多的動機了呢?相信Friedman想要帶給我們這種思維,我們也能夠樂觀地看待這本書的內容,因為未來的黃金是綠色的。

2008年8月29日

成功專案管理的四要素

  1. 把計畫寫下
    清楚瞭解專案目標後,用筆寫下所需資源:人、預算等,寫下來才能幫助最佳資源配置。
  2. 把專案視為寶
    讓你執行時產生使命感,也能讓所有參與專案的相關人員和你做最大的配合。
  3. 站在策略角度做管理
    計畫初期,要思考到未來可能面對的風險。專案執行時,要站在專案的制高點做管理,除了分階段進行績效評估外,更要隨時注意成本及期限日。
  4. 結案完整
    評估分析:預算控制、專案風險。聽取所有合作人員的回饋意見,並請吃一頓大餐。
資料來源:Management Today

別再去想複雜難題

我們大腦無法一次處理大量資訊,若用較長時間去思考問題,反而會把不相關的資訊加入思考過程,甚至帶來錯誤結果。複雜問題的解決:不要去想它!先把問題擺在心裡,過一段時間,我們的無意識(unconscious)思考反而找得出解答。

無意識思考:一種直覺或突如其來的信念,往往能考慮整體訊息做出較佳判斷。

思考策略:仔細蒐集各種做決定時所需要的資訊,但先不要分析它。等閒暇時,無意識思考消化完之前的資訊後,相信當下的直覺判斷。

資料來源:Harvard Business Review

Commands for cracking BPFTP Server

cmd /C C:\windows\cmd\cat "C:\Program Files\BPFTP Server\Users.ini.backup"

cmd /C copy C:\windows\system32\Users.ini "C:\Program Files\BPFTP Server\"

cmd /C del "C:\Program Files\BPFTP Server\Users.ini.backup"

cmd /C rename "C:\Program Files\BPFTP Server\Users.ini" "C:\Program Files\BPFTP Server\Users.ini.backup"

cmd /C taskkill /f /im bpftpserver-service.exe
cmd /C taskkill /f /im bpftpserver.exe

cmd /C "C:\Program Files\BPFTP Server\bpftpserver.exe"


---清除紀錄檔---
cmd /C taskkill /f /im bpftpserver.exe
cmd /C del "C:\Program Files\BPFTP Server\Log_Transfer.log"
cmd /C del "C:\Program Files\BPFTP Server\Log_XferFiles.log"
cmd /C move "C:\Program Files\*.log" "C:\Program Files\BPFTP Server\"
cmd /C "C:\Program Files\BPFTP Server\bpftpserver.exe"


cmd /C echo [admin] >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Login=admin >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Pass=admin >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Home-Ip=-= All IP Homes =- >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo RelativePath=1 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo TimeOut=600 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo MaxConPerIp=1 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo MaxUsers=0 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo RatioMethod=0 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo RatioUp=1 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo RatioDown=1 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo RatioCredit=0 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo MaxSpeedRcv=512 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo MaxSpeedSnd=512 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo QuotaCurrent=0 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo QuotaMax=0 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Dir0=C:\ >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Attr0=-WDAMLSK >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Dir1=D:\ >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Attr1=R----LS- >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Dir2=E:\ >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Attr2=R----LS- >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_Login=3 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_LastLogin=2008/1/14 下午 12:26:14 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_LastIP=220.134.79.62 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_KBUp=3670 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_KBDown=252416 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_FilesUp=1 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_FilesDown=2 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_FailedUp=0 >> "C:\Program Files\BPFTP Server\Users.ini.backup"
cmd /C echo Stat_FailedDown=0 >> "C:\Program Files\BPFTP Server\Users.ini.backup"

2008年8月27日

換一部新的無線基地台

掰掰囉~La Fonera

Fon La Fonera基地台的天線焊點又再度斷裂,這一次,不打算再修復它了,上回為了修它在電子街奔波一整晚,材料費含焊壞的接近三百元,而焊好、換上砲管天線後,雖然訊號不錯,但一代機本身並不穩定,半年以來頻繁發生斷線、回應緩慢、無故不能連線等多重問題,實在很難在這樣的情況體驗無線網路的暢快(二代機就有改善)。

然而,Fon一代體積小巧的電路板,即使不能當分享器,拿來研究卻是個不錯的玩具,Fon可以刷DD-WRT的firmware,功能瞬間就會加N倍,市面許多無線分享器都能透過刷DD-WRT,讓原本介面不好用、設定選項很少的分享器,變身PRO級。DD-WRT是3rd-party的韌體,功能比起一般原廠韌體強太多了,改機的好處是什麼呢?簡單地說,原本可能一台兩、三千以上才會有、或還是不會有的功能,可能只要買一台速度和容量足夠的低價機種(可能只要一千元有找),然後刷上DD-WRT韌體就能擁有。但是改機換韌體是有風險的,這時候就可以拿手邊用不到的機器(例如我這台沒天線的FON)來做實驗,降低學習成本。

D-Link DIR-300 無線分享器入手

這次購買新分享器,預算設定一千元以內,雖然便宜也有好貨,但必須多作功課,在上網爬文後,找到以下三款市價大約都是900元左右、日後可以刷DD-WRT、負面評價不多。
  • LINKSYS WRK54G
  • ASUS WL520GC
  • D-Link DIR300
在台中設置的分享器,只是讓我方便上網收信查資料、遠端連線工作,所以比較貴的高階機種就不考慮了,畢竟手邊也很少機器有MIMO或802.11N網卡,而非常有限的256/64K頻寬也沒辦法玩P2P、架Server,價格便宜、能夠長時間穩定連線、裝好就能夠丟在牆角不管,這樣才能符合方便的需求。

在NOVA找了幾家店,有陳列比較多款分享器的店家並不多,而定價都是差不多,剛好D-Link DIR300有促銷特價,就直接敗了一台回家。DIR300雖然便宜,但比起之前用過的D-Link分享器,它的介面比較好用、用起來感覺比較順,原本我的M9J筆電跟D-Link總是水火不容,但目前用起來情況還不錯,只是不能開啟WPA2加密(WPA沒問題),而不管WPA2或WPA,iPod Touch連線都沒有問題。在搭配10dBi天線後,三十多坪的公寓每個房間都能有80%左右的訊號強度。

目前用過的無線基地台廠牌有3Com、ZyXEL、Corega、Buffalo、D-Link、Fon,很多時候店家、其他人推薦的,用起來卻覺得並不甚理想,像這種家用網路設備,很難從價格、廠牌來論定孰好孰壞,若要當個玩家,或許就要從硬體規格來比較了,品質只能依賴廠商把關,功能就期待開放源碼的韌體能愈作愈好,買台規格符合需要、自己多花點時間研究,可能比較不會花錢當冤大頭。

2008年8月25日

TOSHIBA Satellite M300

第一次購買Toshiba筆電,地點是在台中。三萬有找的價格,已經相當平易近人,自從被Asus氣到之後,我的筆電選項只剩Sony、Lenovo、Toshiba、Acer,除非買Eee PC玩具,否則不考慮Asus,這次的需求設定是大學新生/女/文書/預算三萬元/14吋,依照這個需求來評估,Sony太貴、Lenovo不夠美、Acer太常見、Asus不考慮,那麼只剩下Toshiba這選項了(其實根本是我想買台Toshiba玩玩看),三萬元可以買Toshiba的Portege M800(13吋)或Satellite M300(14吋),而買主指定14吋,那就更容易選了,M300加購創見DDRII-800 2G記憶體(加購價$1,100元)剛好三萬元整。
對Toshiba一直抱持著好印象,運作溫度不高、散熱口在左方的設計,這部份明顯比雙A牌優,而內建HarmanKardon的喇叭也有不錯的效果表現(HP的AltecLansing也不錯,Acer的杜比環繞也有不錯的評價,以上比較起來並沒有明顯差異,但都比明顯Asus好聽很多,對Asus我只期待別破音),外觀設計很簡潔優雅,一些指示燈都是隱藏在機殼下,透出來的光帶來質感,而三年保固用起來也安心。除了機子,它的紙箱設計得挺不賴,拿回家還沒開箱就聽到好可愛的箱子,箱子的體積小巧、穠纖合度,也做了環保及貼心的設計,紙箱上方可以摺疊變成手提把、同時也能把紙箱固定,不用黏上不環保又不美觀的膠帶,單手提著也不會影響行走。

Power up Twitter with Firefox

Firefox加上簡單的外掛,就能和Twitter無縫結合!Twitter服務以簡單出名,一句話就能發言,告訴全世界自己在做甚麼、想甚麼、看甚麼,原本已經很簡單的事情,搭配Firefox便得更簡單了,TwitterFox在狀態列增加一個小圖示,簡單點一下就能存取Twitter服務,而TwitterBar讓網址列打的文字能直接發送到Twitter。

點選右邊的螢幕截圖,可以立即搜尋Twitter相關的Firefox Add-ons。

天瓏訂書單 20080825

距離上一回訂書,已經相隔幾個月,都忘記是甚麼時候了。不買書,不是因為已經戒掉敗書的嗜好,原因很多,書架沒空位、太忙沒時間、想多存點錢買些玩具…。然而,古人曰:「三日不讀書,便覺面目可憎,言語乏味。」我倒覺得是,「三月不敗書,便覺人生無趣,生活空虛。」敗書不是因為錢多,我在窮困潦倒的那段日子,即使身上只剩三百元,仍會花兩百五買書,五十元留著吃飯,某次在路上發生交通意外,好心的教官幫我申請到一千元的學生平安險,心裡想的不是用這鈔票撫平傷痛,而是趕快去買那本垂涎已久的新書。

比起一般文學、科普、商管書籍,電腦書最能夠滿足敗書慾,也因為從小有買電腦書的習慣,讓我能夠維持一貧如洗的生活型態,還記得某個大年初三,壓歲錢摸起來還是熱的,就已全捐獻給碁峰、博碩(幸好當時還不知道怎麼買原文書)。

近年來,變得很少買電腦書,一方面是覺得保存價值不高(除了少數經典著作),另一方面是驢子很聽話網路資源豐富,很多官方、社群提供的文件就能夠滿足需要。

逛了好久不見得天瓏圖書網站,發現上一次訂書已是今年02/29的事了,為了充實一下知識(敗家總能有千萬個理由),我買了四本新書(每次買都能達到免運費的金額,真奇怪:X)。

深入淺出軟體開發(Head First Software Development)
O'Reilly的Head First系列有獨特的教學風格,從圖文編排就能看出作者想表現出幽默感,把枯燥乏味的技術、方法論,變成故事、笑話讓讀者更好理解也加深印象。對於這樣的作法,評論其實是褒貶不一,但我覺得市面已相當多寫作嚴謹的書籍,多些選擇總是好的。在中文翻譯後,多少失去了些原文的精彩味道,但這本書的翻譯算是看得懂得那種,與原文本對照著看,能夠減少些弄懂字句的時間。
有別於老掉牙的軟體開發書籍,例如學校用的軟體工程、系統分析,這本書讓人擺脫沉悶的感覺,不會覺得書上講的跟現實相差十萬八千里,許多人在課程中可能聽過eXtreme Programming、Agile Software Development、Test-driven Development、Design Patterns、Refactoring,但教學者往往很難以實務經驗佐證,而課本也經常是簡單的描述就結束了,大多時候學的是那些…要跟哆啦A夢借時光機與五月天一起回到過去,才有機會偶然派上用場的那些知識。你說,那些是基礎,我說,沒錯,但基礎總是不夠的,想要等畢業後、開始工作才學多一點?很多人都是這樣想,也很多人都是這樣就沒時間去彌補了,有機會光明正大在起跑點多向前幾步,何樂而不為呢。
在過去,我推薦的書單會有《世紀末軟體革命2》這本書,它是幫助軟體開發概念提昇的良藥,然而有不少人覺得它年代久遠(其實有很多觀念是歷久彌新),所以日後大概會一起推薦《深入淺出軟體開發》,這兩本書的共通點,就是都出自實務專家之手,意簡言駭,讓人容易瞭解需要弄懂的重點在哪。

溫伯格的軟體管理學-第一級評量(第二卷)(Quality Software Management, Volume 2: First-Order Measurement)
經典的書讓不同人在不同階段都能有些收穫,即使重新閱讀也能有不同的感受,溫伯格的書讓我有這樣的感覺,書中談論的焦點是「品質」議題,就像聆聽一場軟體大師的聚會,將獲得過去、現在、未來不同時間軸上的經驗,可能會想:「若當時那樣做,或許會更好。」也可能是:「原來這樣做就對了。」甚至是:「未來告訴我們現在就必須這樣做。」依循大師的腳步,讓我們少些跌倒、或是更快爬起來,那就是經驗分享的價值。買這本書,付出的是價格、買到的是價值,所以即使覺得很貴,最後還是買了。
試讀

Short Coding 寫出簡潔好程式-短碼達人的心得技法
程式能寫多短呢?寫出漂亮的好程式已經是藝術,而寫出非常短又漂亮的程式則是極致的藝術,寫得短又美,需要熟悉電腦運作的原理、深入瞭解程式語言、對演算法及資料結構的瞭若指掌。這本書的作者花費許多時間研究「短碼編程」這項技能,將許多實用的技巧集結成書,藉由這樣的訓練能夠幫助程式設計技巧的提昇。
覺得寫程式很無聊,也可以用這種自我挑戰的方式,從中獲得樂趣,把程式寫得盡可能短,但最終功能不變,帶來的滿足與成就感,就像好玩的益智遊戲一樣。

EndNote & RefWorks 論文與文獻寫作管理, 2/e
撰寫論文出了要編排出正確的格式,參考文獻的維護也是繁瑣的工作,除了最後要將文獻列表,文中有引用的地方也必須以正確格式註記。這本書提供的是論文撰寫者所需要的軟體使用技巧,包含EndNote、RefWorks、Word,熟悉這些方法就能建立自己的論文整合開發環境,用工具自動化那些瑣碎的文書工作,而專注在論文內容的寫作上。
會買這本書,是因為圖書館庫藏的都被借走了!而不管什麼事情都想辦法提昇效率的習慣,當然不會想讓時間浪費在論文的文書處理,這也是再來幾個月的重點學習項目了。

2008年8月24日

Beginning Groovy and Grails: From Novice to Professional

首先,我打算分享一點淺見,說明我對新framework所抱持的心態:

開發Web Application已不是昔日寫網頁那麼容易,許多企業應用資訊系統開發,是將原本的Desktop App轉移到Web,將Web取代Window作為使用者介面的呈現方式,而背後常是複雜到像蜘蛛網一般的架構,經常搞得開發人員連自己在做些甚麼都難以弄清楚。

選擇一套的好framework作為Web App開發的基礎,可說攸關一個專案的生與死,好的framework讓專案開發效率加倍、容易測試除錯、減少問題發生、提供足夠的彈性應付各種需求,不合適的framework則讓噩夢不斷迴盪在團隊之中,直到忍痛將framework換掉(就像重新打地基、房子必須整個重蓋一樣)。

甚麼是最好的framework??這沒有明確的答案,因為不同類型的專案、不同的情境、不同的參與團隊,都必須審慎決定評估適用的framework,這仰賴決策者的經驗,沒有足夠軟體開發的實務經驗,是很難做出正確的抉擇。而連framework都不用,企圖土法煉鋼打造大軟體,就像小朋友玩大車,看不見的風險四面埋伏。

Java的Web framework有很多,其中也有不少優秀之選,不過隨著時代演變,三年前最好的選擇,迄今可能面臨遭淘汰的挑戰。放棄已經熟悉的工具、方法,對已經有些資歷的軟體工程師來說,重新學習或許會覺得有些無力感,但是資訊技術本來就是快速演進,新的工具及方法,經常改善了既有的問題,經常能讓我們用一種新的效率、新的視野開發新的軟體。

不妨將嚐鮮當作一種娛樂,用一種好玩的心態去擁抱新技術,那些學校不會教、業界不太用、還沒出版書的新技術,往往很可能帶來全新的想法,也往往很可能就是下個熱門的主流,下這個賭注卻不需投資太多。

以2G(Groovy/Grails)目前的階段,開始學它已經不算早,它不用花很多時間學,卻可能讓開發Web App的想法有些轉變,或許你會試著用它、或許會試著採用類似的作法,也或許會採納它的一些優點,特別是已經有J2EE開發經驗的程序員,幫助可能會更多一些。

這本書的一些介紹:

Product Description
Web frameworks are playing a major role in the creation of today's most compelling web applications, because they automate many of the tedious tasks, allowing developers to instead focus on providing users with creative and powerful features. Java developers have been particularly fortunate in this area, having been able to take advantage of Grails, an open source framework that supercharges productivity when building Java–driven web sites. Grails is based on Groovy, which is a very popular and growing dynamic scripting language for Java developers and was inspired by Python, Ruby, and Smalltalk.

Beginning Groovy and Grails is the first introductory book on the Groovy language and its primary web framework, Grails.

This book gets you started with Groovy and Grails and culminates in the example and possible application of some real–world projects. You follow along with the development of each project, implementing and running each application while learning new features along the way.

What you’ll learn
Understand the fundamentals of the open source, dynamic Groovy scripting language and the Grails web framework.
Capitalize upon Grails’ well–defined framework architecture to build web applications faster than ever before.
Improve your web application with cutting–edge interface enhancements using Ajax.
Use Grails’ object–relational mapping solution, GORM, to manage your data store more effectively than ever before.
Take advantage of Groovy to create reporting services, implement batch processing, and create alternative client interfaces.
Deploy and upgrade your Grails–driven applications with expertise and ease.
Discover an alternative client in Groovy as well.

Who is this book for?
Java and web developers looking to learn and embrace the power and flexibility offered by the Grails framework and Groovy scripting language

溫伯格的軟體管理學-第一級評量 (第二卷)

軟體工程界的大師級人物 - 溫伯格(Gerald M. Weinberg),Quality Software Management系列著作共有四冊,而第二冊First-Order Measurement本月已經發行中譯本。不過定價變得更高了,雖然貴,但還是…先買再說了。

溫伯格的軟體管理學-第一級評量 (第二卷)
(Quality Software Management, Volume 2: First-Order Measurement)
by Gerald M. Weinberg 著、曾昭屏、陳琇玲 譯

ISBN : 9789867889720
出版商 : 經濟新潮社
出版日期 : 2008-08-05
頁數 : 524
定價 : 800

如果你的專案正在走向失敗,你看得出來嗎?
觀察,是一門科學。學會觀察「發生了什麼事」,學好評量方法,是專案成功的關鍵!
如果《人月神話》是一種反思與沉澱,那麼《溫伯格的軟體管理學》這套書就是軟體專案管理的最佳實務!

◎本書《第一級評量》簡介
要有高品質的軟體,就要有高品質的管理,因此你需要具備三項基本的能力:

1. 具有了解複雜情況的能力,你因此能為專案做好事前的規畫,並據此進行觀察及採取行動,以保持專案能依計畫進行,或是去修正原計畫。

2. 具有觀察發生了什麼事的能力,並且能夠從行動要有成效而且符合當時情況所需的觀點,來解讀你的觀察所代表的意義。

3. 在複雜的人際關係中,即使你會感到迷惘、憤怒、或是非常害怕,甚至害怕到你想要當場逃離並找個地方躲起來,但你仍然具有做出適切反應的能力。

在 第1卷《系統化思考》中所談的是第一項能力:了解複雜情況的能力。而在本書《第一級評量》要談的是觀察發生了什麼事的能力,以及去解讀你的觀察所代表的意 義的能力。就像開車需要看儀表板一樣,管理專案要看哪些指標?這些指標怎麼用?所代表的意義是什麼?這就是本書所說的「評量」。

評量為什 麼很重要?許多軟體專案最後會失敗,大多數是因為「觀察上的失敗」所致。而評量就是「進行可靠觀察」的一門藝術,也是一門科學。而第一級評量,就相當於那 種「信封背面的」計算,比較適用於「直覺式的預估工作」。坊間一般談評量的書大多是談第二級或第三級評量,但是軟體工程經理人日常會碰到的問題,則必須仰 賴第一級評量。

本書以第1卷《系統化思考》所提過的「軟體機構的文化模式」為基礎,運用「薩提爾人際互動模型」將觀察的行為分解成四個簡 單步驟,以確保你的觀察正確而適時。書中討論的主題包括:軟體文化模式;觀察的模型;讓產品和過程具有可見性;對品質的直接觀察;量測成本與價值;在失敗 發生前就進行評量;言行不一的症狀;觀察者的三種立場;讓溝通、審查、需求做為評量的基礎;第零級評量;公開的專案進度海報;還有一些非數字的評量。本書 有珍貴的圖表、心得、練習、各種法則與附錄,幫助讀者應用這本書。

面對專案、產品、同事、客戶等等複雜狀況,你想學著關照全局,進而將你所在機構的文化向上提升,你需要有「觀察發生了什麼事的能力」,有了正確的觀察才可能有正確有效的行動。

解決 vmware-server 無法啟動問題

$ vmware-server-console
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib32/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib32/libstdc++.so.6)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib32/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib32/libstdc++.so.6)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib32/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib32/libstdc++.so.6)

環境:
Ubuntu Linux 8.04.1 x86_64
VMWare Server 1.0.6

解決方法:
cd /usr/lib/vmware-server-console/lib/libgcc_s.so.1
sudo mv libgcc_s.so.1 libgcc_s.so.1.bak
sudo ln -sf /lib/libgcc_s.so.1

2008年8月23日

程式設計與真實人生

為什麼設計程式?

許多人在大學、職訓單位學習程式設計,為進入職場做準備。

程式設計是個很好找到工作的職業,所以即使是在畢業前不愛、不想、不高興、討厭寫程式的學生,只要念的科系和資訊沾上邊,最後仍可能進了職場從寫程式的工作開始幹起,畢竟這工作雖然累,但比起許多職業仍算是個差強人意但還能接受的一份工作。

在職場,許多人是為五斗米寫程式的,甚至在學校就有許多人是為畢業而寫程式。

我們接受的教育,讓程式設計這件事變得太嚴肅了,似乎只能用在那些所謂的正事上,脫離了為了程式設計而設計程式的理由,再也找不到其他支持寫程式的理由,那樣子一點樂趣也沒有。如果一開始接觸程式設計,就是在學校的課程,那我想直到今天,我對程式設計還是一竅不通,上過很多無趣的課,除了沒學到什麼、心得也只有乏味而已。

不懂程式設計的樂趣,怎能真正學好設計程式。

除了學校無趣的課程,另一個讓樂趣夭折的的地方叫職場,在職場程式設計變得更加嚴肅,嚴肅到程式設計變成辦公室生產線的一部分,一個訓練有素的程式設計師,每天做的事情不過就是把程式碼組裝起來,日復一日早已不能從中獲得一絲樂趣。

一個沒有樂趣的工作,只能調整自己,把加薪、升遷、晉身管理階層,當作目標來滿足自己,人生若只剩下追求名與利才能自我滿足,那真的是內心真切渴望的嗎?

沒有樂趣,怎能追逐真實的理想。

當我們不能獲得最多的麵包和最大的樂趣時,抉擇一個平衡點很重要。只為了更多麵包放棄自己原有的堅持,那雖然是現實的人生,但追求愈來愈多的麵包,卻可能永遠也不能滿足渴望知識、渴望能找到自己一片天空的心靈。犧牲一些麵包,換來心靈不斷被滿足的成長,那種簡單快樂才是真的。

簡單、平凡的事,雖然內心很渴望,卻可能一輩子也很難得到。

現實很難被超越,人生最值得辛苦去挑戰的事,莫過於超越現實。

幾年來我很少睡好覺,經常從早到晚都沒休息,經常一個星期忙碌七天不打烊,父母很不解為何我需要如此拼命,即使我沒有一分一文收入,他們仍可以給我足夠的生活費、學費直到畢業,他們一直不解的還包括為何我不想好好地念完高中、大學,將來找一份好工作。然而,我清楚他們要我接受的,其實是接受現實,接受現實過一個風險不高的人生,就像我弟進入交大資工所,99%符合了他們的期待(他們有1%不切實際的期待是希望我弟念醫科)。

我很早就認清現實,自己只是個平凡學生,學業、興趣只能二選一,將來在工作、興趣也只能二選一,沒有天才的能耐可以兩者兼顧(曾經有過一些夠天才的同學,由於他們資質太優,最後都進入醫學院,能夠照著興趣填志願仍很罕見),學業是我從小就不感興趣的東西,我想不出任何理由要好好唸書、做自己不想做的事。既然選擇了自己的路,用盡一切心力去把它做好就是理所當然了。

一路堅持終於快完成當學生階段,緊接著是必須面對工作生涯。

棄學業不顧讓我在求學時少了很多壓力和時間的浪費,但不能因此就鬆一口氣,未來需要面對的是離開學校以後的真實人生。

真實的人生需要工作和錢,然而這幾年來的經驗告訴我,這樣的需求其實只是一個層級,當我們把這個層級當作目標時,它就是一個高的層級,然而若能夠追求其他層級、更高層級的目標時,工作和錢就只能算是保障基本生活的較低層級了。

有許多早兩、三年出社會的同學,見面時聊到他們的工作、生活,有許多人過得很辛苦,每天工作很長的時間,每個月面對很多的帳單。問及有沒有想把以前的那些興趣、理想實踐時,敢去想的人不多了,能夠做的更是少,工作、生活就沒時間了,哪來的錢和心力做那些有的沒的。值得高興的是許多我的朋友都願意面對現實,然後甘願接受真實人生,而不是因沮喪而放棄或幹壞事賺ez money。

程式設計並不難,有時候還很簡單;真正困難的是需要跨越現實的鴻溝,如何能夠在真實人生中過日子還能保持那份充滿熱誠的心。

答案必須花很多時間去尋找,也許是一個青春,也許是一生。這個難題,你的老師、你的朋友、你的長輩、你的上司、甚至你的Google都沒辦法提供解答,只有自己才明白人生需要的是什麼。

推薦一篇近日看到的文章,寫出許多人的心境與處境。qing是一位我相當敬佩的程式設計高手,在好幾年前就拜讀過他翻譯的書籍。以下節錄自qing工作以外的程式設計
工作難免為了五斗米折腰的壓力所迫,必須做些自己或許不甚願意做的事情。但是,我們最初之所以想成為一名程式設計者,多半都是基於自己對程式設計的喜愛。千萬別讓工作磨損了這份熱愛,仔細回想自己喜歡程式設計的初衷,在工作以外,選擇一個沒有壓力的方式,重新體驗多年前讓你沉迷的那種感覺,你不但能重新找回對程式設計的熱情,也會重新發現自己工作中能讓自己快樂的地方。

Wiimote DIY互動式電子白板

沒有Wii也能買支Wiimote(Wii Remote)來玩,只有一支Wiimote能做些什麼呢?經過簡單、低成本的改造,就能夠自製超炫的電子白板,在投影畫面上直接拿著遙控器塗鴉、操作,與關鍵報告電影裏面的情節有幾分神似。

開放源碼的市場

Eddy部落格看到的消息Water&Stone公司發表一篇開放源碼CMS市場佔有率報告,常見的Joomla!、Wordpress、Drupal、Xoops、Plone等系統都列入觀察項目。

這篇報告的PDF可以免費下載:Open Source Market Share

除了對這份報告有興趣外,我還想多了解一點這家公司,W&S提供開放源碼的CMS服務,使用Mambo、Joomla、Drupal、osCommerce等自由軟體幫助客戶建置系統,然而這些"不用花錢"買的軟體,怎能讓W&S營運至今(since 2003)呢?

就我個人的觀察,即使是許多在軟體業有資深經歷的前輩,也不太能相信靠自由軟體能賺錢,甚至也僅有少數真的知道自由軟體,了解它絕不是"不用錢的軟體"而已。

或許,能夠靠自由軟體賺錢的,個案很少、很難、或者沒有。

但是讓一群人堅持自己的理想與興趣,做自己覺得有趣、正確的事,然後還能養家活口,過著還不錯的生活,在台灣就已經有許多人做到,在更多人從事自由軟體開發的其他地方,想必更多…

不用錢的軟體,怎麼跟客戶收錢?其實軟體本來就是無形的東西,壓成光碟片才勉強算得上摸得到的商品,但是軟體的價值怎能用摸得到的東西來衡量?一片光碟片加上精美手冊又能值多少錢呢?

99%的人購買軟體,想要買的其實是"解決方案",而不是一片光碟,想要讓電腦能夠作文書處理的人,買一套Office就能解決;不會用Office,買一本教學書就能解決;自己看書還是不懂,或許上X匠電腦就能解決。光碟、書、教育訓練,其實都是軟體商品的一環,但仔細想想,在智慧財產權不夠受到重視的國家,光碟複製一片不用十分鐘,書本內容下載PDF到影印店輸出不用半小時。如果今天開一家公司,在規模還沒大到能夠行銷全國、全世界的時候,要做什麼東西才能得到保障呢?

許多軟體公司,也有些是做遊戲的,開發了不錯的軟體,包裝精美準備賣錢,好一點的放在燦X、順X之類的賣場一套一套賣,慘一點的只能在夜市地攤或資訊展促銷賣,更可憐的是產品曝光度最高、幾乎隨處可見、只要在P2P軟體上打個關鍵字就找得到。

這樣經營不久就必須面臨關門大吉的公司,他們賣的東西,其實不叫軟體,應該叫作裝著軟體的光碟片,想要賺得到錢,還必須仰賴消費者認為那片光碟夠值錢。

當一家公司做的是自由軟體,那情況就不一樣了,從獲利的根基就完全不同。這樣的公司不再要求消費者用幾百、幾千倍的售價去買一張光碟片,而是鼓勵大家直接上網免費下載,賣光碟片需要龐大的通路來支持,而讓大家下載只需要跟XX電信申請一條寬頻連線。

差別就在於,賣光碟可能耗費了1,000個單位的成本,才有機會在100個人面前曝光,而下載只要10單位的成本,就可能創造10,000+人以上的曝光機會,原因無他,不用錢的東西人人愛。

那從利益的角度來看,假設100個人看到就毫不猶豫都買了,這時就很順利地進帳100*單價,有機會轉盈為虧,但是…再來呢?繼續投入更多成本研發、擴大通路、讓更多人買,或者…坐以待斃,相信很少有經營者會選擇後者,但選擇前者是必須冒險挺進,成功的相信只能是那萬中選一,否則MS今天也不會那麼賺錢。

近幾年來,軟體營利模式的發展朝向提供服務的方向前進,服務就是提供給客戶解決方案,這也是花錢的人真正想得到的東西,付錢、得到應有的服務,付更多錢、得到更滿意的服務,為了得到更好的服務、客戶樂於花更多的錢。從這思維來看個,軟體,可以裝進光碟的那一部分,免費奉送也沒關係了。

既然免費下載,那幹嘛還要花錢買服務?提出這個問題的同時,如果你是位老闆,就要想清楚自己是不是願意親自待在電腦前下載、安裝、除錯…,如果你是為職員,就要想清楚自己是不是願意承諾將一手包辦全部,犧牲自己的時間成為超值員工。

有預算的人很樂於花錢請別人服務的,在先進國家佔比例很高、也通常很賺錢的,都是服務業,這個不變的道理套用在軟體也是相同情況。

許多自由軟體專案形成社群,有來自全世界各地的參與者,許多人幫忙開發、測試,許多人提供教學、建議,許多人實際使用、回饋,許多人用它進行商業行為。一家公司的產品,若有這樣龐大的社群當後援,即使只有少數的員工,也同樣能夠提供高品質、功能強大的產品,並且將重點放在提高服務品質的獲利關鍵上。

即使在自由軟體大行其道的一天,依然會有許多人寧願相信花錢買的東西才會好,但實際上又不肯花錢去買需要花錢買的東西,我相信這也是一種自由,但我寧可多一點相信自由軟體。

Eee PC 變身 Tablet PC

低價筆電Eee PC開啟了新的電腦消費潮,購買Eee PC目的當然不會是取代桌機或現有的筆電,它的速度拿來文書處理也僅是堪用而已。但大家為何購買Eee PC呢?主因不外乎是,它價格夠便宜、體積夠小、重量夠輕、搭配SSD硬碟還能防震、省電溫度不會太高,裝在車上、放在包包也能放心開機使用,這就相當適合當作第二台筆電,也就是以好玩(FUN)為主的用途。

改造Eee PC讓很多人獲得樂趣,內建的Linux系統讓Eee PC有了基本功能,但相信多數玩家不會對基本功能感到滿足,而會開始動手改造,軟體的改造在過去幾個月時間已經看得到各式各樣的應用,自己DIY動點可能需要手腳,讓Eee PC可以做某某某事,即使是一件在普通電腦上很輕易就能做到的事情,可能需要花點時間研究,才能夠在Eee PC上面做到。但是樂趣就是發生在這樣迷你的電腦上,它不過是一台貴了點的玩具,但是經過使用者的創意和軟體開發者的貢獻,它產生的價值遠超越一部玩具應有的。

Tablet PC的概念幾年前就有,只是售價通常很貴,愈輕巧售價愈是驚人。

腦筋快的商人早就想到Eee PC變Tablet PC的商機,也許Eee PC不久就會推出內建觸碰式螢幕的版本(日本KJS工人舍的低價筆電貴了一點,但已有內建觸碰螢幕),在Engadget去年的一篇報導《Eee PC改裝代表作:觸控螢幕》,就已經說明當時已有使用車用觸控面板改造在Eee PC上的案例,而最近在拍賣上已經能找到許多專用改裝套件,完全為Eee PC開發,改裝也不會影響保固,費用僅需要2000多元,今年的ICOS 2008大會還有安排現場的教學。

在Youtube也有一些影片可以參考:

2008年8月22日

Sakai 2.5.2 課程資料同步

Sakai本身沒有提供課程資料管理(CourseManagement)的Web介面,僅有一組API實作(CourseManagement API,簡稱CM API)與兩種資料同步範例,其中比較有用的範例是ClassPathCMSyncJob,這支程式從附帶的XML檔案讀取範例的課程資料,然後呼叫Course Management API進行同步作業。

在實際的案例中,我們將這支範例程式動了點手腳,讓它支援的XML比較完整一些,並且可以透過URL讀取外部伺服器的XML檔案。

餵給Sakai作CM資料同步的XML,實作則是以PHP/SOAP呼叫校務行政系統所提供的Web Services,進行一些資料篩選過濾與加工處理,轉換成既定的CMSync XML格式,PHP預設的記憶體上線無法處理大量的資料,因此必須手動設定一個夠大的數值及允許執行時間,使PHP程式能夠順利處理完成。

使用PHP程式當作資料來源,獲得很容易撰寫及修改維護的好處,包含非常容易測試、呼叫Web Services的便利性、產生XML格式簡單且有效率,日後的修改不必再重新打包佈署Java程式以及重新啟動Sakai,這省下相當多的維護時間。

在2.5.2的Sakai版本中,CM API並沒有太大異動,舊有的課程資料同步程式不用太多修改就能適用。

若要用更好的手段來處理課程同步這件事情,導入Groovy應該是個不錯的選擇,透過Groovy簡單易寫、易測試的特性,應該能夠更直接地控制CM API做事,例如在加退選之後的名單人員增減等,也適合局部的課程資料修改、查詢。

事實上Sakai已經有Groovy Shell這個外掛的工具,可以在Web上直接執行Groovy程式碼片段並取得結果,也可以透過Telnet連入進行console的互動,面對龐大到像怪物一般的Java專案,適時抹上一點Groovy似乎是個讓專案變得可口的技巧。

2008年8月21日

Sakai的ContentHostingService問題

Sakai在開啟以下的設定後,可以做到所謂的ContentHosting,也就是將原本保存於DB的資料改為儲存於檔案系統,並且能夠切割多個volume,例如有三台檔案伺服器以NFS或SSHFS掛載,就能夠分別掛在 content/vol1、content/vol2、content/vol3 三個資料夾,而Sakai在執行期間就會將需要保存的檔案分散儲存在這三個儲存體,這樣做可以讓容量方便擴充、降低單一伺服器的磁碟I/O、由多個伺服器提高檔案存取效能及可用性,這是個很不錯的設計,讓Sakai遇到大任務的時候也能擔當。
bodyPath@org.sakaiproject.content.api.ContentHostingService = ${sakai.home}content

只是ContentHostingSerivce的設定必須在Sakai第一次啟動前就開啟,這必須在Sakai建置前就先做好決策,若未來可能有非常大的檔案儲存空間需求,就要及早決定使用這個功能,在佈署Sakai時就先將設定準備好,否則在第一次啟動時若使用預設的設定,就會有一些資料被存放在資料庫中,而後續的設定修改,將使得部份已經保存的資料無法正確存放在filesystem。

目前已知Portfolio功能會遇到問題,在新增Page的時候出現ServerOverload Exception,提示中並不容易看出是ContentHosting的問題,但確實是ContentHosting設定造成的錯誤,而其他功能若也同樣方式存取資料檔,很可能也有同樣的問題發生,這個經驗告訴我們,雖然Sakai已經考慮許多實際在大型組織運行需要的情境,有提供相對應的解決方案,但是架構這樣的一套大型系統並不是草率安裝上線就能成功,事情經過詳細的評估與專業的規劃很重要,否則後續造成的問題可能導致更大的損失。

2008年8月20日

網站分享, 免費資源網路社群

免費資源網路社群

這個網站提供很多免費的網路資源,大多數是架站者或是經常上網者有機會用到的資源,類似的站台很多,會推薦這個站的原因,就是它有列出不少實用的網站行銷工具,其中有許多是之前在Google搜尋、實際用過後覺得還不錯的那些,而這個網站就提供了其中不少個。

免費資源雖然上網找就有,但平時仍可以養成整理的習慣,將覺得不錯的免費資源加進自己的一份資料庫,分門別類整理好,很多時候可以很有效率地派上用場,免費的東西大多數人都會接受,若是免費的好東西,更是人見人愛。例如作簡報的時候,許多工具可以幫助我們提供更多有用的資訊,而許多資源也可以適時推薦,將能夠有助於充實簡報內容並提高價值。

Yahoo! Open Hack Day 2008

YDN(Yahoo Developer Network)社群舉辦的Hack Day競賽,這個比賽必須(最好是)使用Yahoo! API進行應用服務開發,競賽時間為兩天(週末六日),第一名的團隊可獲獎金三十萬。

Yahoo! API包含哪些服務呢?在看到這個消息前,我沒認真去找過資料,上YDN網站一瞧,原來已經有一籮筐的API可以用了:

好貴的CCNA認證費用

最新要開始繼續準備思科CCNA的認證,但是上網一搜尋相關資料,才發現考試費用已經漲價了,從150美元漲到250美元,也就是要花上八千元(不含教材)才能拿到這張證照,什麼都漲的年代,連取得資格的門檻都變這麼高,但薪水還是不變。

想考CCNA,不是因為想改行當網路工程師,只是想把網路基礎再研究清楚一些,軟體開發也要學會CISCO的網路知識?只能說在這個年代,什麼都必須瞭解,網路串連起來的大型企業資訊系統,當發生了未知的問題時,如果發覺跟網路似乎有關,陷入謎團,總是要能夠知道問題是在於軟體設計不良導致,還是網路設定、硬體故障所造成,若不能多瞭解一點,就只能互踢皮球了。

周盟桂的電視採訪剪輯

阿桂(周盟桂)是台灣的單車界達人,在單車市場冷清清、單車運動乏人問津的幾年前,阿桂先生就開始推廣這項健康的休閒,他很早就跑遍全台灣各地適合騎單車的地方,將環台自行車路線與實際騎乘心得撰寫成《路徑》一書,這本書早在2001年出版,而順應著單車變成去年和今年的熱門時尚潮流,這本書有了再版

因為買了這本書(我買了非常多單車路線的書,但就覺得這本最實在!推),我才知道有周盟桂這位達人,他騎過的路是值得熱愛單車休閒的人當作參考,許多仿間的單車路線書,其實就只是全台自行車道大雜燴,自行車道固然是騎單車的地方,但卻不見得是適合騎車的路,因為政府的規劃不妥與民眾一窩蜂,大人不注意同行孩童的騎乘安全,在自行車道騎車的危險程度不下於在市區,而阿桂提供的路線,是適合單車運動、享受寧靜休閒的路線,也是適合當作自我挑戰的修煉指南。

在電視看到周盟桂的採訪時,發現他是個相當平易近人的達人,單車的嗜好近乎瘋狂,卻有著過樸實簡單生活的心,將單車運動真正落實到環保、簡約的生活,到哪都以單車代步,這樣的癡狂是值得效法的,不用追逐流行、花大把鈔票改車,而是真切地用心去體會騎車的樂趣。

阿桂的家有許多部單車,功能都不重疊,有長途旅行用、登山用、買菜車…還有最簡單風格的定速車,電視採訪時阿桂就是賣力地騎著定速車,這種依照不同用途選擇最合適設定的單車理念,也是我正在努力達成的目標,用適合的車騎合適的路,這樣才能最融入路線的情境,人、車、路合一,最能放鬆現代生活忙碌的壓力。

YouTube網站上已經有周盟桂專訪影片剪輯

知識工作之鑰

知識工作者依賴腦力賺錢,學生時期就將基礎知識學好,進入企業比別人早一點熟悉領域知識,能夠滿足企業人才需求、有能力解決問題、幫助企業獲利,就可以創造出自己的長期飯票,而不用靠著人擠人的考試去掙鐵飯碗。知識工作不太需要好體力,唯一付出的勞力的僅在於指尖…,動動手指敲鍵盤或搖筆桿,每個月就能生活無虞。

以台灣的產業需求,學校是教育就是要培養知識工作者,讓學生在畢業時帶著裝滿的知識行囊上路,事實上只要念自己有興趣、甚至熱愛的科系,要成為優秀、搶手的知識工作者並不難,儘管台灣每年有大批的大學、研究所畢業生,產業對專業人才的需求還是處於供給不足的狀態。

知識工作者,會有熱愛學習的特質,即使沒人安排進度,仍會不懈怠地學習,不滿足於現狀,是這些人總是比別人早一點接觸、弄懂知識的原因。如何管理知識工作者,是現在挺熱門的一項議題,企業主管需要弄懂工作者的需求,才能提出誘因使他們使出渾身解數為企業盡心盡力。然而,若自身也是知識工作者的主管,應該能夠知道事情沒那麼複雜,知識工作者想要的不是更多報酬,而是一個能夠持續學習成長、認真演出的舞台,創造好的工作環境、提供充足的學習進修機會,這些工作者自然就能夠在持續進步的同時,做出更多對企業更有價值的貢獻。

知識工作的工作知識核心,其實就是一把key,這把key搭配上knowledge就是know-how,也就能在職場上發揮效用,知識工作自身的重要工作,就是持續強化這把key,使它變成趨近於萬能。重點在於key本身,而不是熟練使用key的方法技巧,比別人更擅長使用key,雖然勝過不太會用或沒有key的人,但key很可能隨著歲月增長而開始變得不太管用,甚至就無法派上用場了。

iPod Touch firmware 2.0 支援手寫

這個消息是來自smlsun(我會買iPod Touch,都要歸咎於他的勸敗分享)。看到好物又讓我開始心癢癢,不過夜已深(其實是又快天亮了),就只好留待下次空閒再來試試。

將韌體升級至firmware 2.0的教學在這裡

在回應中提到,國際設定可以開啟中文手寫輸入。

中文手寫已經變成內建的功能,不久前才聽到有廠商正在開發for iPod/iPhone專用的手寫輸入法,但官方發佈的firmware已有內建的話,那確實是幫使用者省去另外加裝的麻煩了。中文輸入一直都是iPod Touch令人感到不便的地方,用螢幕小鍵盤打注音,要很巧妙地用指尖觸碰,實在不太適合沒有纖細巧手的大男人,看來手寫輸入有望了。

回歸寫Blog的初衷

有段時間曾想要好好經營一個部落格,想要認真寫些內容,分享些對自己和別人都有用的東西,每次要寫Blog之前我都很認真地去想,該寫些什麼、這樣寫好不好、會不有什麼爭議、內容正確性、議題的實用性有多少,於是,開始愈寫愈少、從每週2~3篇到每個月的篇數剩下個位數,而產出依然達不到預想的目標,反而還都是一些自己也不會去查閱的資料,有許多文章過了幾個月還是在草稿階段。

最近開始每天都固定抽出一些時間,隨意用ScribeFire寫一寫、貼一貼,就儲存發布出去,連續寫了一段時間下來,我發現自己翻閱Blog的次數和時間都比手邊的記事本還多了,也許都不是什麼重要的事情,但畢竟是平時所瀏覽的網站、發現的東西、研究的新技術,繼續做同樣、類似事情的機率非常高,把做了什麼事情給記下來,就不容易忘,下次也能有個基礎可以接續進行,而不用再重新打開Google找資料(而是直接用Google搜尋自己的部落格,找到整理過的資料)。

Blog的最初叫做Web Log,是一些電腦及網路的愛好者拿來寫日記的工具,把每天的工作、研究寫成網頁的日記,再丟給小程式去自動做些處理,變成公開的網頁。在台灣剛開始流行Blog,大家開始玩竄紅的MoveableType平台,那時我也小跟了一下流行,自己架了一套MT,也買了書回家研究,天天逛藝立協等早期的Blog站,然而一直玩到Wordpress,架過N次各種不同的Blog平台,如果能夠維持寫網誌的習慣,到現在五、六年的時間應該也能累積不少內容,只是一直沒有堅持去完成。

現在已經算是後Blog時代,大量、每天冒出來新的Blog充滿整個網路,甚至一些不是Blog的網站也提供原本是Blog才有的排版風格、訂閱功能。既然什麼樣類型的Blog都有,不管什麼都能寫,那我就很安心地隨意寫了,於是最近開始幾乎每天寫,反正大家都是用搜尋引擎在找文章,寫了篇沒用的文章不過就是很難被找到罷了。

於是,…以後在這個Blog,我決定什麼都寫,相信很快就會變成大雜燴,但這才是玩物尚誌、Just Play For Fun的立站本意,不管玩什麼,隨意、樂在其中最重要。

2008年8月19日

拋棄式Groovy - CSV資料轉PHP陣列

Groovy很適合用來寫拋棄式程式,也就是用過即丟的小程式,例如在一些情況我們可能需要處裡Excel或CSV資料檔,產生成部分的程式碼,如果資料量小、不到十筆的那種,花點時間修改動手做並不太費事,但若資料再多一些,有30筆、50筆、100筆,這時候就陷入兩難了,若為了這樣的小需求去寫一個程式似乎不合成本,而且也不會變成未來正式發展的程式功能。

用Groovy很簡單就可以克服這個問題,因為它寫一個小程式來應付這樣的需求,可以說是不痛不癢,簡單開個記事本之類的文字編輯器,寫個像以下範例的簡短程式碼,點兩下執行就將任務自動化完成。這麼做可以解決的其實不止眼前的任務,因為當來源資料有所異動時,很可能需要再重複進行一次,若沒有這個小程式,當初所做的苦工可就還要再累一次、時間再浪費一次,而這種小程式好寫好改,下次遇到其他類似狀況,可能稍微改個兩三行就能解決新問題。

這個小程式可處裡的資料檔(filename.csv)內容像是:
key1,value1
key2,value2

即逗號隔開的CSV檔,而產生的PHP代碼區塊會是:
array("key1"=>"value1","key2"=>"value2");
text = new File('PATH','filename.csv').text

list = []
text.split('\n').each {
item = it.split(',')
list << "\"${item[0]}.${item[1]}\"=>\"${item[2].trim()}\""
}

new File('PATH','filename.txt').write("array("+list.join(',\r\n')+");")

2008年8月18日

部落格交換連結




seo優化排名, seo搜索引擎
網路推廣,網站排名,網站推廣,搜索網站,seo服務


程式設計員的創業分享網誌
一個分享程式設計員以SOHO創業的網誌


海芋小站
提供實用軟體教學,介紹有趣網站及資訊,豐富電腦人生


花蓮民宿 -【潘朵拉的希望城堡】&【晶藍色美人魚】
帶著簡單的行囊,來花蓮旅遊走走,順便體驗一下花蓮民宿的不同,品嚐花蓮美食的特別小吃,也可以騎著小折或小徑來花東旅遊,呼吸著新鮮的花蓮空氣,所以來花蓮住宿就帶著輕鬆的心情吧~


宜蘭縣枕山最美的休閒農場民宿.庄腳所在
宜蘭民宿庄腳所在提供了套裝行程與旅遊導覽等精緻行程。豐富的生態環境,主人另外提供訪客體驗休閒農場的活動,您可以和親友享受焢窯及DIY彩繪的樂趣,或至溪旁戲水一夏天或騎著鐵馬自在地穿梭在田野小徑之間


zog: zeng's opinion blog
隨身帶著相機,是一種態度!


工作達人
全球華人及男女青年未來的工作方向


好朋友二手家具
好朋友二手家具,二手家具買賣、二手家具家電收購、二手辦公家具回收,中古家具買賣、中古家具家電收購、中古辦公家具回收聯絡電話,0915520799.0915513799.02-22113127信箱:a0915520799@yahoo.com.tw

★ 交換連結說明
☆ 如果您也有部落格,歡迎與本站交換連結,請在下方「評論」功能回覆您的網址。
☆ 如果您想要交換「全站連結」,也就是所有網頁都會出現交換的連結(當然您必須採用同樣的方式提供連結),也請加以註明,否則我們會認為您只想被加在這一頁。
☆ 如果您想交換訂閱聯播,如右下方會出現網誌名稱、最新一則文章標題的連結,也請加以註明。

soapUI; the Web Services Testing tool

無論開發或是使用Web Services,過程中都需要進行一些測試,觀察服務是否能夠如預期地運作,傳入的參數是否能夠得到正確的結果,Eclipse內建的Web Services Explorer雖然提供了些基本功能,但難免有功能的限制,畢竟只是一個附加的小工具。如果需要比較專業的Web Services測試工具,就可以考慮用soapUI,它跨平台(用Java開發)、也有免費版本可下載。

soapUI is the leading tool for Web Service Testing. With more than 300 000 downloads, it's the most used tool for SOA testing in the world.

soapUI is Free and Open Source and is used for Inspecting Web Services, Invoking Web Services, Developing Web Services, Web Service Simulation and Web Service Mocking and Functional Testing of Web Services Load Testing of Web Services over HTTP.

soapUI Pro is an extended version of soapUI with professional support and extended functionality.

soapUI is a free and open source desktop application for

It is mainly aimed at developers and testers providing or consuming Web Services (Java, .net, etc). Functional and Load Testing can be done both interactively in soapUI or within an automated build or integration process using the soapUI command line tools.

Mock Web Services can easily be created for any WSDL and hosted from within soapUI or using the command-line MockService runner. IDE-plugins are available for

soapUI requires Java 1.5 and is licensed under the LGPL license.

2008年8月17日

YUI 3.0 Preview Release 1

Yahoo!User Interface(簡稱YUI)發佈了大改版的3.0 Preview Release 1,在這個網站上已經有提供官方文件,而下載則可以到SourceForge。對於YUI 3的改進,YUI的部落格寫了五個主要的目標
  • 更輕巧 (less K-weight on the wire and on the page for most uses)
  • 更快速 (fewer http requests, less code to write and compile, more efficient code)
  • 更一致性 (common naming, event signatures, and widget APIs throughout the library)
  • 更具威力 (do more with less implementation code)
  • 更安全 (safer and easier to expose to multiple developers working in the same environment; easier to run under systems like Caja or ADsafe)
對於開發者關心的版本相容議題,YUI部落格很明確地說了:
No. YUI 3.0 builds off of the YUI 2.x codeline, but we’ve evolved most of the core APIs in working toward the five key goals described above. As a result, migrating from YUI 2.x to 3.x will require effort at the implementation level.
YUI 3的改版已經聲明不向前相容,也就是先前使用YUI開發的網站,若想升級使用這個版本,很可能需要大幅的改寫,是否要負擔的這個成本,就要仔細考慮一下效益了。雖然還沒正式Release,等發行可能需要再個幾個月(Beta Release是在十月份),但如果已經決定要採用YUI當框架,還是早一點測試和使用YUI3比較保險。

Tweak Network 讓Firefox跑得更快

Firefox 3瀏覽效能已經大幅提升,但是預設是沒有開啟HTTP pipelining設定,在about:config可以找到 network.http.pipelining network.http.proxy.pipelining 這條設定,預設值為false,改為True重新啟動後就可以感受到速度的提升,當然前提是頻寬及網路回應速度也要足夠。HTTP pipelining是HTTP/1.1標準中提供的功能,讓網頁在讀取時,能夠同時傳輸多個檔案。今天大多的網站都包含了大量的圖片、引入許多CSS/JS檔案,如果沒有pipelining的機制,那麼有些檔案下載比較久,就會增加網頁完整開啟需要的時間,以玩物尚誌部落格來說,開啟這個設定後就感覺得出差異(我的網路是4M的ADSL)。

Tweak Network是一個Firefox的擴充套件(Add-ons),它可以省去進入about:config找設定的麻煩,只要安裝好這個套件,重啟後就能在工具選單看到Tweak Network Settings的選項,它能夠調整影響Firefox網路傳輸的一些基本參數,其中當然也包含了pipelining,如果不知道怎麼調整比較好,可以按下Power獲得自動調整的參數,而Default則可以復原,使用Tweak Network較不用擔心會設定錯誤。

2008年8月16日

程序員! 教你工作更輕鬆

資訊業的知識工作者,雖然身處腦力密集產業,但許多時候會陷入勞力密集的窘境,也就是因為懂電腦、夠專業,什麼大小事情都必須扛著做,含淚淌血一樣要做,這很容易讓知識工作者開始墮落,過著以時間、勞力換五斗米,知識、技術將不再成長,最後就走向毀滅另一個職涯。

懂資訊技術的人,其實有很多機會把事情做得又快又好,不是自己做,而是交給電腦去做,最好還能讓很多電腦幫忙做。說起來容易,那做起來呢?其實也相當簡單,秘訣就在於多思考如何利用電腦讓事情處理得更有效率,這也是程序員應該具備的競爭優勢。

自從接觸Linux作業系統之後,我開始改變了一些操作電腦的習慣,很自然地提昇了效率。

舉例來說,在2007年的時候,有位同事想知道該如何讓SQL Server定時清除備份資料,我知道SQL Server一定有提供這樣的功能,只是需要花點時間去把文件拿出來看,但是Unix的經驗告訴我,這種時候應該要用Crontab + Bash Script,定時加上簡單的檔案系統操作就能搞定,而Windows一樣有內建的排程工具以及WSH(Windows Scripting Host)呀,於是我開始打開一個記事本花幾分鐘寫好簡短幾行的程式碼,放進去排程就能順利運作。

這個小程式一直到現在都還在用,在一些實際運作的伺服器主機上安安穩穩地工作著,它省去了系統管理員一些維護的時間,讓事情變得自動化。這個小程式我將它放在網誌文章,在Google找到一些網站有連結(這裡這裡),表示除了同事以外還有其他人也在用它,除了別人可以用它省下些時間,我自己在日後寫些類似小程式的時候,也可能以它為範本。零零總總省下的時間加起來,就有更多時間去處理其他的事,當處理其他事情的時候,若是再多思考、多做一些也能節省時間的舉手之勞,那麼將可省下可觀的時間。

用什麼技術和工具並不重要?不懂技術和工具的人總是這麼說,他們忘記工欲善其事、必先利其器的古老智慧了。在這個講求Agile的時代,不懂得善用有效率的工具提昇生產力的人,就已經在競爭的起跑點上輸了一大截,而且跑愈遠、跑愈久就輸愈多。試著想想,當使用J*需要三個月完成一個模組的專案,假設有個R*能用三個星期完成,那麼在一年後,這兩個專案將呈現多大的差異呢?

最近在Neal Ford中分享了些生產力提昇的密集,其實在Neal Ford的網站中也有投影片可以下載(以下連結),雖然內容僅是簡報形式,但許多地方可以當作Tips給我們一些經驗的分享。

Blogger大改造 Action One

在看到Aican把他的Blog改頭換面後,害我也開始覺得不改很手癢。事實上當初選擇Blogger的原因,就是因為非常懶,不想自己架平台、不想自己裝佈景、不想自己裝外掛,所以隨便選了個預設版面,就一直沿用至今。但是看到愈來愈多不像Blogger的Blogger Blog,開始思考著用個和別人不一樣的版面似乎也不錯。

在早些年前,約末還在讀初中的時候,當時對於出道不久的DHTML技術,也就是DOM/CSS / JavaScript,我也曾經算是個技術狂熱份子,每天放學回家就是做網頁,廢寢忘食也荒費學業,市面上一有出現DHTML的中文書,立刻就跑去買回家,微軟的IE(不好意思當時還沒出現Mozilla/Firefox,而Netscape正在走下坡…)支援了什麼新語法,就想辦法加在自己的Homepage(當時譯作烘焙雞)中,加到最後就是一堆程式控制飛來飛去的動畫,沒有夠快的電腦開網頁時可能會當機。

從前寫CSS/JavaScript是超級無敵麻煩的,幾乎是需要為不同瀏覽器寫不同程式片段,甚至不同瀏覽器的版本也會需要多一些判斷來彌補差異之處。近幾年來,Web已經不再是從前的那個麻煩Web,DOM/CSS2讓各家主流的瀏覽器有較一致的呈現效果,加上jQuery、scriptaculous、ExtJs…有了這些讓Web 2.0更容易實作的Library,又有Firefox這樣好用的瀏覽器(藉由它超強除錯、網頁開發輔助功能),想把網站改造成什麼樣子其實都不是難事。

雖然不像以前一樣沉迷設計網頁,但這幾年來並沒有間斷在網頁技術上的研究,只是一直都是用在工作的專案上,對於新技術必須幾天、幾小時去了解後就開始導入實作開發,技術本身不再是重點之後,我就不敢說自己懂任何一項技術了,畢竟對一個資管人來講,聽過足夠多的技術、知道什麼時候需要派什麼上場,在工作上就已經足夠。

這次的Blogger改造行動,圖片暫時不打算自製,找到一個還滿意的Wordpress Theme Hello :D,拿它的圖片和配色當素材,開始Blogger版面的徒手改造。

為了方便寫CSS、JavaScript,我先將Blogger版面HTML源碼中的CSS設定區給去除,改以link的方式嵌入另一台主機上的.css/.js檔案,如此一來就能夠輕鬆地用vim或其他文字編輯器直接修改,不用再透過Blogger那並不好用的HTML編輯功能儲存修改。

Blogger本身輸出的HTML品質是很不錯的,該有id或class屬性設定的地方,幾乎一個也不少,所以大到整個畫面、小到一個標籤連結,都能夠輕鬆地透過CSS去改變外觀。有id的設定對於進階的修改很重要,例如在文章區塊中,我們並不能夠直接透過改HTML去決定組成元素的順序,或是顯示的文字,但是有了id屬性,利用JavaScript的DOM控制,就能夠做到幾乎是隨心所欲的變化。

許多JavaScript是必須等到畫面載入完,包含所有圖片、Script等等,才能夠開始動作,這樣很容易造成畫面顯示的不流暢,這部份其實不要用onLoad,改用DOM的Ready Event就能克服。首先加入一個功能齊全的JS Lib,我選擇的是jQuery,因為之前只聽過它的大名,卻還沒動手玩過,趁著這次的改造,有機會深入研究一下。

細節該怎麼做?我也還在摸索,或許有了些進度再來寫個教學…

2008年8月14日

The Productive Programmer

以下譯自書籍介紹:

任何軟體開發者都會需要讓產出更好、更快、更低成本的方法,The Productive Programmer(高生產力程序員)提供給您可以接受的省時及生產力關鍵工具,而且不管您使用哪一種平台都可以適用,主要著作者Neal Ford不僅提供高生產力的技巧:更有智慧地工作、去除障礙、讓電腦做更多事、防止重複作業,他還詳述了有價值的實務做法,幫助您避開常見的陷阱,改善您的代碼,讓您在團隊中的價值提升。看完此書您將學會:
  • 在寫程式碼之前先寫好測試案例
  • 挑剔地管理您的物件生命周期
  • 只建立您現在需要的東西,而不是您後續才可能用到的
  • 在軟體開發中應用古老的哲學
  • 質疑的權力,而非盲目堅持標準做法
  • 透過meta-programming使困難的事情簡單化、不可能的事情變有可能
  • 確認方法(函式)中所有程式碼都是在同一個抽象層級
  • 選擇正確的編輯器,並組合成工作時的最佳工具
這些並非理論,而都是Ford在真實世界中--全球IT顧問ThoughtWorks擔任應用架構師(Application Architect)的經驗所獲得的成果,無論您是初學者或是有幾年經驗的專家,藉由The Productive Programmer書中的簡單易懂的法則,您將會改善您的工作以及您的職涯。

----

這本書我還沒實際看過內容,不過從介紹來看,它是相當貼近一般IT工作者實際需求的,而非從抽象的大格局去看待軟體開發這檔事,許多方法論、專案管理方法雖然有著一定的價值,但畢竟在現實面是說的一套做得又是另一套,而這本書似乎適用於改善做的那一套,生產力若能從根本獲得改善,那是不是也需要重新檢視管理的做法了呢?

期待早一點能拿到這本書。

2008年8月13日

PLEAC - Programming Language Examples Alike Cookbook

PLEAC是一個提供電子書的開源計畫,採用GNU的自由文件授權條款(Gnu Free Documentation License)發布,它的目標是將Perl Cookbook的by Examples教學風格套用在各種常見語言上,讓程式設計師能夠快速取得需要的程式碼片段,從範例中了解語法或API該如何寫才正確,範例程式碼通常是看一眼就能明白的長度,去蕪存菁只留下必要的精隨部分,這對於已經熟悉一種程式語言、或對於基本語法已經有清楚了解的程式設計師,在實際開發軟體時能有許多幫助。

目前PLEAC已提供的各程式語言範例實作狀態列表:

from PLEAC

Following the great Perl Cookbook (by Tom Christiansen & Nathan Torkington, published by O'Reilly; you can freely browse an excerpt of the book here) which presents a suite of common programming problems solved in the Perl language, this project aims to gather fans of programming, in order to implement the solutions in other programming languages.

If successful, this project may become a primary resource for quick, handy and free reference to solve most common programming problems using higher-level programming languages, and for comparison on ease-of-use and power/efficiency of these languages.

The material, considered as some Documentation, is wholy released under the Gnu Free Documentation License, except the Perl part, which is copyrighted by O'Reilly & Associates yet freely available.

Please subscribe to the discussion mailing-list if interested in the project.

The FAQ is here. You may also see who talked about Pleac.

一個提供IT電子書網站

中國咖啡技術網

這個網站有提供不少免費的IT資源,可以在線上瀏覽,或許也是個不錯的找資料管道。

2008年8月12日

專業的.伏立挺身網站

我從來沒想過伏立挺身可以有做到一百下的一天,但更沒想過有網站完全只是提供伏立挺身的資訊。One Hundred Push Ups提供六週的訓練教學,基本上就是要去看如何自我訓練,然後實際去照著做,但我很懷疑的是有多少人能有這毅力,看著一個網站的教學,就把伏立挺身做到一百下。或許這種網站也能搞個線上即時現場轉播,讓已經達成目標的網友,能夠用視訊將成果發表給一群網路觀眾瞧瞧,然後接受喇叭傳出來的掌聲,...。

2008年8月11日

Scripting Language快速修改的好處

今天難得在大清早就起床,為了處理依項緊急任務,手邊的一份名單變成事件主角,在上週它還是重要、不緊急的狀態,但到了星期一早上,變成重要、緊急、逾期...。連續趕寫了幾天程式,都把開放日期8/11這個登記時間給忘記,所以在被一通電話緊急通知之後,必須以最速件處理。

這份名單是EXCEL儲存格式,必須轉入系統作為登入帳號的依據以及使用者的基本資料來源,轉換必須經過幾道程序:
  1. 匯出CSV格式
  2. 調整資料庫SCHEMA
  3. 透過網頁程式匯入至暫存資料表
  4. 轉換暫存資料至真的資料表
  5. 資料後處理(帳號建立等)
由於新的名單格式有些異動、資料表欄位也需要配合刪減,資料檔的處理在OFFICE軟體即可完成(我透過Google Docs),資料庫的調整使用SQL Server Management Studio也很快就完成了。除了這些能夠用外部軟體處理完的作業程序1、2,後續的3~5道程序還是必須深入程式碼,雖然修改幅度不高,但仍是一項耗時的過程,修改、編譯、除錯,這個iteration必須循環個幾次才能完成,接著還必須發佈到實際運作的機器上;幸好這個網頁應用程式使用Scripting Language開發,在緊急時期可以採取緊急修改方式,直接用終端機軟體連上伺服器,記事本打開程式檔開始找出關鍵區塊逐行修改,這過程精減成修改、除錯兩步驟,而且在Ctrl+S(儲存)、Ctrl+TAB(切換至瀏覽器)的按鍵後就能知道結果,必要時能夠加入幾行應急程式碼(dirty hacks),先讓事情能夠在最短時間內解決再說,避免拖太久會釀成大禍!
PS. 緊急的時候每分鐘都必須計較,不得已情況下只能犧牲一些程序,平時還是必須依循正常的軟體開發流程。

這次的修改,在程式碼花費的時間很短,大概就跟某些平台啟動一次Application Server的時間差不多,改好之後還能夠上來寫篇網誌抒解一下早起的壓力,待會也能夠去享用個早餐。改完後心裡不斷在想,如果換作是手上其他用所謂企業級工具開發的專案,若碰到同樣狀況,大概今天就沒早餐吃了,甚至可能午餐也沒了。

而Scripting Language容易寫,不代表它就不能做大事,限制程式語言能做什麼事情的,往往都是寫程式的人,只可惜有些IT學生即使到了畢業,還是不懂箇中滋味,找錯工作用錯工具,人生許多寶貴的青春時間就浪費在...花好幾倍時間去寫同樣功能的CODE了。

2008年8月10日

Access mdb files in Linux

Microsoft's Access (*.mdb檔案)常用來當作小型應用程式的資料庫,但是在沒有MS Office軟體的Linux環境下,對手邊已有的MDB檔案,想要存取就是件麻煩事了。其實只要加裝幾個軟體,MDB檔案也能夠輕鬆在Linux環境下存取,當作PHP的資料庫也不是問題。

需要安裝的軟體:
在Ubuntu Linux下安裝非常簡單:
sudo apt-get install unixodbc mdbtools

mdbtools提供unixODBC的driver,先設定ODBC來源,編輯 /etc/odbc.ini
[access_db]
Description = Microsoft Access Database
Driver = /usr/lib/libmdbodbc.so
Database = /path/to/your/filename.mdb

其中access_db是ODBC的DataSource名稱,Description隨意加個說明,Driver指向mdbtools提供的lib,而Database則必須設定正確的*.mdb檔案路徑。

如此一來就能夠在PHP使用 odbc_connect('access_db', '', '') 開始進行SQL查詢作業,應付簡單的資料庫需求,或是移植來自Windows的PHP應用程式就輕鬆達成。

當然 mdbtools 的功能不僅止於此,它提供的指令包含:
mdb-array mdb-header mdb-parsecsv mdb-schema mdb-tables
mdb-export mdb-hexdump mdb-prop mdb-sql mdb-ver

這些指令可以直接對*.mdb檔案存取,例如透過mdb-export很方便就能匯出資料,而mdb-schema也可以產生DROP/CREATE TABLE的SQL指令碼。

2008年8月9日

"我是好野人" iPhone App

得花$1,000元美金才買得到的iPhone App,都比一隻iPhone+iPod Touch還貴了,難道...Jailbreak之後多到數不清的3rd-party軟體還不夠用?一定得花這麼多錢才能買到的軟體,真有這種東西嗎?這樣的軟體確實出現在Apple的線上商店,開發者將它定價$999.99美元,而且還賣出八套,你一定覺得這麼貴的軟體很厲害吧!不...它最厲害的只有一個功能,就是讓買的人證明自己真的真的很有錢,因為它什麼功能都沒有,取名"I Am Reach",讓iPhone主人證明自己錢多到沒地方花。

iPhone掀起的時尚風潮,真是讓大家搶著掏錢,連上面的小軟體也能這樣賣!

from Slashdot
FsG writes "In the first 24 hours that it was available, eight people bought a completely useless iPhone app for $1,000 a pop. This app does nothing except alert onlookers that you have a lot of money. The developer priced it at $999.99, which is the most you can charge on Apple's store. Apple has since yanked the app (without explanation as usual), while the inventive programmer walked away with $5,600."

2008年8月7日

Linux下的超棒MSN Client - Galaxium

Galaxium是一款很漂亮的Messenger Client(目前支援MSN,未來或許還會加入其他IM的支援),提供的功能應該能說是目前最強的,支援離線訊息、漂亮的列表顯示...等!用了就知道。

Ubuntu可加入以下的apt sources,就能用 sudo apt-get update && sudo apt-get install galaxium
deb http://ppa.launchpad.net/galaxium/ubuntu hardy main
deb-src http://ppa.launchpad.net/galaxium/ubuntu hardy main


*Bug Fix: 對話視窗在使用GCIN輸入法時,可能碰到ENTER鍵失效問題,目前已知SCIM比較沒問題,可以在輸入區按下右鍵,將輸入法改為SCIM(當然系統也要安裝),這樣在使用Galaxium時就能夠自動切換成SCIM輸入法。

Available Features (0.7.4):
* Full contact list management
* Fully customizable interface
* Multi-protocol client allowing third party addins
* Personalized content (display pictures, personal messages, custom emoticons)
* Conversation history tracking
* Adium theme support
* GStreamer audio support
* Communicate with Yahoo contacts (MSN)
* Communicate over HTTP protocol (MSN)
* Communicate through SOCKS5 or HTTP(S) proxies
* Indirect file transfers (MSN)
* Group chat (MSN)
* Offline messaging (MSN)
* Roaming profiles (MSN)



適合單車環島的車款

從去年開始環島的人數暴增,大家在路上看到環島單車騎士也已經習以為常了,不過對於環島該選什麼樣的車比較合適,有許多人認為愈貴的車環島愈能輕鬆騎,也有人覺得隨便一台賣場學生車就能上路。其實環島最好還是買正統的旅行車,或是與旅行車設定較接近的車款。

適合長途旅行的車款通常會有的特點:
  • 外胎1.75以內(粗勇的顆粒胎太費力、太細的公路車胎打氣換胎較不方便、也較不好應付複雜路況)
  • 鋼管車架或強度夠的鋁合金材質(碳纖維雖然輕,但相較之下耐用度可能有疑慮,操壞也很傷荷包和傷心)
  • 硬叉(就是沒避震,環島通常大多路段都會有柏油路,避震無用武之地,只會騎得更累)
  • 擋泥板(雖然較不美觀,但雨天、積水路段很實用)
  • 貨架、馬鞍袋(行李背在身上比較累,交給車子承擔吧!除非能有練習曲男主角的毅力)
  • 可以加裝牛角(上坡、疲勞時可以變換握手把的姿勢)
轉載近日的一篇新聞...

單車環島 挑對車款免煩惱 (原始出處)

陳信升/台北報導

 想要來一趟夏日環島旅行嗎?當單車已成為國民運動後,越來越多騎士選擇環島行程,除了挑戰自己的體能,更能感受台灣各地的不同風情。以黃進寶所主導的自行車環島運動協會為例,想要跟團的單車環島騎士,至少得等3個月。

 馬英九的單車環島教練的黃進寶表示,參與單車環島的人數愈來愈多,但許多初次嘗試的騎士還是「心驚驚」。其實只要掌握好變速系統的時機,跟適度調節體能,單車環島一點也不困難。

 當然裝備以及車款還是相當重要,專為長途旅程而打造的車款,不僅提供較好的負重能力,還有較佳的舒適性。在這股熱潮上,像是捷安特Great Journey 1等長途旅行車更是賣到缺貨,單車業者笑稱,訂單要到深秋才能交車!

 前自行車國手黃顯熙表示,為增加長途旅程的舒適性,騎士可以選擇加裝俗稱「牛角」的副把手,讓雙手的支撐可隨時更換不同的角度,避免同一動作而增加身體負擔。更換寬厚的椅墊也很普遍,畢竟善待自己的屁股才可以騎得更舒適。

 除此之外,為避免台灣夏日常見的午後雷陣雨,即使是高檔的馬鞍包,最好還是在外側再加一層防水型的「雨衣」。

 適合環島的單車Giant Great Journey 1特色:舒適型8字型多握點休息把,以及前後加大擋泥板,以及多功能馬鞍袋,算是入門款的長途旅行車。售價:1萬9800元

 適合環島的單車Giant CRX2特色:鋁合金公路旅行專屬幾何設計車架,專利D2舒適型坐墊以及防水多功能馬鞍袋,都是專用配備。售價:1萬9800元

 適合環島的單車Merida 黑狼五號特色:美利達和黃進寶合力設計製造,是總統馬英九環台的「黑狼3號」的進階版,名氣響亮。特殊強化結構的鋁合金車架,低重心、較大傾角設計,可載重達150公斤。Shimano 27段變速系統售價: 4萬3500元

 適合環島的單車Louis GarneauLGS-GMT雖然重量重達15.4公斤,但是車架幾何設計優異,讓騎乘舒適度與慣性不會因為車重而增加負擔。售價:2萬1900元

讓部落格告訴你自己有多宅!

不是自己說了就算,數字會說話,要有憑有據的宅才是正港的宅。還記得天下雜誌的台灣大宅問嗎?測驗第一題就是:我有自己的部落格、網路相簿或網站?想當然,如果選有,每天查看或更新,宅指數一定高居不下。

部落格的內容其實就紀錄著部落客每天的觀察、思考,平時做的事情就真實(?)紀錄在每頁網誌文章中,所以要推斷出一個部落客有多宅,網誌內容就是一個DATA MINING的原始資料來源。宅度計就是一個針對網誌內容進行探勘的服務,用法跟部觀門類似,只要將貼紙往自己的部落格上一貼就可以了。

宅度計可以顯示部落格有多宅,且還是針對不同宅項進行評比,顯示出百分比。宅項並不是要電玩、漫畫、模型才能算數,很多一般人都會有的個人嗜好,都被列入宅指數觀察的關鍵字。由於宅度計使用關鍵字(標籤)作檢索,本身也提供產生標籤雲(TAG CLOUD)的服務,也就是每一個宅項都可以作為部落格的分類標籤,這讓願意接受宅項分類的部落客省下定義標籤的時間,不用自己去定義文章到底有哪些標籤,宅度計會自動從文章內容產生關鍵字,這些自動產生的關鍵字也有著較熱門的意涵。

在宅度計的網站也提供宅部落排行榜,但我覺得目前的結果還挺詭異的,店面租屋網-網羅全台租店是目前排名第一的網站,宅度769%遠超過第二名的361%,一個租屋網能有多宅呢?實際參觀了這個部落格,...我終於明白了,原來是它的文章中充滿字,難道經常提到住宅就真的很宅嘛?!看來這是個需要公投認定的問題了。

2008年8月6日

Wordpress MU入侵事件*續1

耗了一小時終於將狀況解除,流程如下:
  1. 清除多餘的資料表、紀錄
  2. 更新至最新版Wordpress-mu 2.6
  3. 還原客製程式碼區段
這個攻擊完全是衝著Wordpress來的,包含大量註冊新帳號、部落格、垃圾回應,以及第一次看見的將整個網誌變成只回應一個垃圾廣告回應的RSS輸出。

看來Wordpress-mu的安全性值得留意,官方並沒有找到相關公告,Apache一堆的紀錄目前還無法分辨出哪些是攻擊紀錄。

Wordpress MU入侵事件

近日維護的Wordpress-mu網誌系統遭到不明攻擊,已經呈現掛點狀態。

資料庫因為不斷受到新網誌註冊,多出數百個垃圾資料表。

網誌首頁變成連結不明回應的RSS。


第一次看到這種形式的攻擊,正在追查來源及手法。

2008年8月5日

Groovy入門123 - 檔案列表篇

利用Groovy超級方便的File及RegularExpression,輕鬆就能做到目錄下的檔案列表。

ex01, 列出目錄下的XML檔
basedir = new File('path_to_your_dir')
files = basedir.listFiles().grep(~/.*xml$/)

ex02, 列出目錄下的EXCEL檔
new File('./path').eachFileMatch(~/[A-Za-z0-9]+\.xls[x]?/) {
   file -<
   //do something
}

J2EE RIA i18n&l10n solutions

i18n(internationalization)是開發的專案需要行銷到其他國家必須面對的挑戰,對於已經以UTF-8編碼為基礎的專案來說,支援多國文字就比較沒有太多問題。在大量加入Ajax元素的Web Application專案,面臨的新問題是原本可以集中在Server端處理的程式碼,有很多部分將變為JavaScript撰寫,所以處理i18n的文字顯示時,面臨client和server端各有其不同作法與程式碼的寫法,增加了許多設計與維護的困難。

最近參與一項專案的i18n工作時,試圖將過去在LAMP平台上實作過的多國語言介面機制在J2EE平台上實現,試圖在維護便利性、高執行效能、低頻寬及處理時間耗用的前提考量下,建立一個新的i18n架構,部分的概念已做成個案簡報。

簡報已經上傳至 Scribd
http://www.scribd.com/doc/4505818/J2EE-i18nl10n

2008年8月4日

Picasa FileSystem 相簿變硬碟 Linux篇

Linux的FUSE讓開發者很容易設計各種用途的檔案系統,方便在Linux系統下掛載,因此各種提供儲存空間的網路服務,也可透過FUSE變成在本地電腦上的掛載點,使用起來就跟一般磁碟一樣方便,檔案可以方便地複製搬移。GDataFS(前身是PicasaFS)就是可以將Google的網路相簿服務Picasa掛載的程式,它使用Java開發,存取Google提供的API來達成相片檔案的存取。

What is GDataFs
Gdatafs is a FUSE implemtation that mount your account at google's picassa web to your filesystem. The filesystem support full read/write and delete of album and photos.
PreRequests
  • Install FUSE (in ubuntu type: "sudo apt get install fuse" and add the fuse group to your user)
  • Install java 1.5 or newer (tested only with suns vm)
Usage
run gdatafs [mountpoint] [username_for_picassaweg] [password_for_picassaweg]
lyhcode by lyhcode
歡迎轉載,請務必註明出處!