Archive for the 'Uncategorized' Category

06
May
09

萬事起頭難,on the Rails更難

和OSX糾纏了一陣子,終於成功架構整個開發環境: 1.8.6的Ruby,2.2的Rails,mysql gem,mysql DB server,mongrel等等 (都裝在/usr/local內),我還找來了在RoR界享負盛名的Textmate做code editor,可謂萬事俱備;下一步就是,如何開始入手coding?

阿毛想以Rails去寫的,其實是一個值勤編制系統,即所謂的roster planning system。之前我曾經花了九年的時間,開發及支援一個以醫護人員為主的roster system; 這類系統可以非常複雜,簡單的一張”更表”除了要確保每更夠人數外,還要考慮每周工時,更與更之間關係 (例如”踩完通宵”就別再上早班),個別同事的合作性,是否定時每人都可在周末或公眾假期day-off,超時補假有多少累積,會否同一更兼顧數處地方….. 等等。自問我們開發的系統比市面上其他現成產品,功能來得更全面,但因為是in-house app,系統彈性當然會較少,而且因為機構龐大,user group也有十多個代表,政治考慮加上用戶慣性影響,出來的製成品與我的理想頗有距離。要將Rails融匯貫通,沒有比重新寫過一個優化的值勤系統更適合的了。

想法有了,工具亦就位,但該要如何入手?

我曾考慮過先跳過Rails的標準語法,去找一些plugin方便先搭起系統基本架構: 例如HOBOActive Scaffold。HOBO的確利害,不費”一兵一code”已可做出非常像樣的app;Active Scaffold亦不賴,簡直將Rails的Scaffolding脫胎換骨,讚!!

然而要活用這類所謂的skeleton app,你的UI (即Rails內的Views)和business objects (即Rails內的Models)兩者愈接近愈好,但一張更表的表達方法變化多端,row,col,cell可以代表同一個model object內的不同屬性 (properties),而且不同用戶亦會有不同的更表設定,view及controller部份需要特別處理,那些”樣版”介面幫助不大。結果還是咬緊牙關,慢慢的去寫controller和view好了 – 對不擅長web UI development的阿毛來說,簡直舉步維艱… -_-”

還有一樣要考慮的,就是更表要像Excel一樣可以給用戶即時輸入更新(即所謂的in-cell editing),意味javascript必定少不了。Rails本身是用Prototype,連帶所有的helper function都是建基在Prototype上;但誰都知道最主流的JS library是jQuery (連Microsoft及Nokia都取了jQuery的授權),橫豎都是從頭學起,時間和心力當然要花得其所了。結果花了一陣子裝了jRails插件,令原本的helper function得以繼續可用 (不過功能靠jQuery提供,而非Prototype)。

Web app我實在做得太少了,要成功”on the Rails”,還得痛下苦功…

06
Jan
09

從蘋果裡掘紅寶石

弄了好一陣子仍未能成功裝好mongrel及Mysql gem,以gem install去處理的話總是說”missing Ruby header files”;在Google大海撈針了一會,看來要先把ruby-dev裝好,但該怎樣安裝才對?

在OSX上安裝其他Unix的軟件,通常都會用MacportsFink,阿毛依然葫蘆,在我的S10上裝了Fink,再以apt-get指令去把ruby-dev及ruby18兩個元件拉下來;然而Fink拉下來的只是Ruby 1.8.1,竟比OSX內建原本的Ruby 1.8.6還要舊?! 好像1.9.1也有了吧? 雖然應該只是自己一知半解 (Fink的package database網頁亦說明有1.8.6的元件可以下載,可能是自己不懂CVS或rsync之故吧),但在網上浪蕩好一會仍是不得要領,於是只好先把Fink的Ruby版本移掉,再找其他方法了。 :(

後來在網上看到另一篇文章(Installing Ruby, Rubygems, Rails, and Mongrel on Mac OS X 10.5 (Leopard)),開宗明義的教人如何在OSX上築起Ruby/Rails。阿毛看了一會,對Unix環境不甚了了的阿毛來說簡直看得暈頭轉向…。作者的做法是將原本內建於OSX內的Ruby整個移走,然後再於不受software update影響的/usr/local 內自己安裝ruby及ruby gem,之前還要先裝Apple的Xcode才行,對阿毛來說真是非一般的難題… @_@”

之前不是說用Mac寫Ruby很開心快活的嗎?看來要到彼岸,還得繼續在Unix怒海折騰一下…

30
Dec
08

嚐一口基因改造蘋果

早陣子看網上的Rails資訊,讀到Bort的作者Jim Neath一篇題目為Speeding Up Rails Development的文章,其中最後部份很煞有介事的說”Seriously, Just Buy a Fucking Mac“;另一邊廂RubyRailways亦響應Jim Neath,出了一篇 Why Buying a Mac for (Rails) Developers is a Good Idea。文中除了提到Mac有大量非常好用的免費開發軟件外,亦指出OSX 本身就已經內置Ruby及Rails,省卻重新安裝的麻煩,又說要Rails在Ubuntu上運行比OSX困難得多云云…

在Rails一向的發展中,Windows向來不單是靠邊站,阿毛覺得Rails的開發團隊甚至刻意的與Windows保持距離,DDH亦從來不掩飾他對Windows的厭惡;其實要在Windows上架構Rails開發環境亦不算甚麼大工程,就算不用InstantRails, 自己去下載Ruby runtime再以gem去安裝Rails絕對是一蹴而就的。SQLLite, MySQL亦是”隨便睇隨便揀”,不喜歡用Notepad? 大可以用E editor,甚至用NetbeansAptana等完善且免費的RAD environments;就算困於窗內,選擇仍多的是。

但阿毛一心破窗而出,加上對OSX心儀已久,”Buy a Fucking Mac”成了最好不過的藉口;當然,Macbook 索價不菲,阿毛亦只能對著價錢牌暗暗”fuck”上兩聲。側聞很多玩家以低價的Atom-based Netbook運行OSX,且效能不俗,阿毛心中竊喜,也就趁近日Netbook太平賣,購入一部“你老母”Lenovo的S10,並將RAM及硬碟谷至最大(2G and 350G, respectively),做我的Rails development machine. :D

在非Apple的硬件上安裝OSX絕非易事,阿毛就算在forum上爬文數天,做起來亦要屢敗屢戰才成。S10與OSX的兼容性還不太壞,除了Ethernet沒有辦法解決外,聲,畫,airport,CPU風扇,sleep mode等等全部有patch,網上群眾力量真是不可低估!

把玩了個多星期,效能的確不俗,亦慢慢習慣OSX那種”command + ?”的操控方法,可惜的是touchpad太細,就算行2-fingers scrolling 亦只是自討苦吃,唯有繼續用scroll bar了。另外,OSX的UI設計的確比Windows更consistent,而以mount drive形式簡易安裝軟件亦十分方便,更別說所有字體都是anti-aliased這些eye-candy了。雖是一個基因改造蘋果,但一口咬下,還算爽甜可口。 :)

然而真正的考驗還在後頭,須知阿毛是徹頭徹尾的Windows人,Unix知識貧乏得要命,就連怎樣以Sudo去啟動MySQL,並以SequelPro 去接駁數據庫也弄了好一陣子~~ @_@”;行文之際MySQL的gem update仍有問題,而Mongrelgit等等通通未裝好,看來還要糾纏一下才可以開始編寫程式。

但這樣才像個IT人呀, right? ;)

11
Dec
08

窗外的紅寶石

” 窗外的紅寶石”? 這個”懶文藝”(還要瓊瑤味十足)的部落格究竟葫蘆內賣甚麼藥?

事實上阿毛本人絕非文藝青年,甚至連斯文也說不上,” 窗外的紅寶石”這個名稱只是故作標奇立異;”窗”的英文為Window,但這裡的Window說的其實是Microsoft Windows – 辦公室可以沒有窗口通風,但差不多不可能沒有Windows。

既然此窗非窗,那麼自然紅寶石亦是別有所指了;對,就是指由日本人松本行弘發明的Ruby程式語言。

無錯,故弄玄虛的名字底下,其實是一個IT網站。

阿毛在IT界打滾多年,做的多數是大企業的封閉式資訊系統,從未脫離過視窗開發環境。早年做Client-Server系統時,緊跟MS路線通常都是no brainer choice – Visual Studio 乜乜乜搭SQL Server物物物加COM Automation配MS Office點點點,都是那幾度板斧。而且MS產品roadmap清楚,總之做MS developers咪記總會照顧得妥妥當當,要掌握新技術亦可以比較輕鬆一點。

然而,Internet的大爆發改變了一切。

Windows在desktop的優勢沒有在Internet上重現,程式開發尤其如是。ASP.net雖算主流,但Java一脈更是鼎盛,還有其他scripting langauge諸如PHP, Python, Perl等等一爭高下;而且既然backend不一定要行Windows,那麼SQL Server亦非最佳選擇了。時勢逆轉,咪記的巨傘再不能為你遮風擋雨了。奈何阿毛的工作機構陳年夕陽系統多不勝數,鮮有機會接觸新開發項目,眼見縱然多年經驗但好像和Internet開發不大沾得上邊,只好靠自己修行了。而要突破,就先要”破窗”而出,接觸MS,甚至是Windows平台以外的網站開發技術。

只是,窗外路遙茫茫,該學甚麼技術?本來Java開發者需求甚殷,學它的Struts及Spring framework本是大路選擇,只是Java經多年演化,已成哥斯拉級大怪獸,複雜程度令人咋舌;光陰有限,當然要揀易學,快上手的了。

這時我無意中看到一個新名字RoR – Rails on Ruby。

RoR的詳細資料我不再贅了,反正網上多的是;總之RoR (或簡單的叫Rails)是一個以Ruby為基礎的開發架構,尤其針對一般data-driven 的網站開發。最令人眼前一亮的,是據稱以Rails開發的網站,所需時間起碼比用Java或PHP少一半,甚至是三分二的時間!!

好誇張的差距!! 阿毛見盡不同的開發技術,通常如此誇下海口的每每都名大於實;CRUD怎樣處理,Object-Relational如何協調,不同session怎樣控制,網頁還有CSS何以統一…. 任何一環都足以令你心力交瘁;比Struct或PHP少一半時間做好,談何容易?

然而阿毛看到愈來愈多外國同業對Rails激賞有加,一個人賣花讚花香還算,但為數極多的開發者都是同一口徑,it does mean something。阿毛於是花點時間對Rails架構了解一下: “啊?ActiveRecords? ORM做得不錯呀!! Convention over Configuration?竟可以一個XML setting file也沒有?! 連DB migration都包括在內~~?!” 阿毛愈看愈覺趣味盅然,我有多少年沒有為程式開發而興奮過了?

然而,Rails的開放源碼及以community參與為主力的生態環境,對阿毛這種被咪記養馴了的developer來說,不可謂不翻天覆地;相比起學習新的programming language,這個才叫我無所適從…

怎樣也好,拆窗出走就一定的了;作為一個根正苗紅的windows developer,如何去學習open source世界的種種,阿毛心想應該有不少過程可以分享,結果造就了”窗外的紅寶石”這個網誌。阿毛的Ruby水平還是幼兒班,Rails仍是學得半吊子,若能引來看不過眼的高手能人加入討論指點,則不枉我自暴其短了。 :)

是為序。




November 2009
M T W T F S S
« May    
 1
2345678
9101112131415
16171819202122
23242526272829
30