almost 4 years ago

能報上Rails即戰班其實是個意外,印象中我在春季一班的完售後的某一篇該了一下,然後忝不知恥求開課,然後xdite貼連結我就去報了XD,真的是運氣很好。

如果你是以下狀況,強力推薦這堂課:

  1. Rails101的內容無法滿足你了,需要更多。
  2. 覺的Excel不小心誤刪或動到欄位就爆炸實在是煩死,想往資料庫學可是不知道門道。
  3. Github聽過可是看不懂,自己翻書自修每次都翻到神遊然後不知道怎麼辦。
  4. 時間寶貴,希望效率!效率!不要在撞牆了!

會想要報這門課是有原因的。

之前在國考完等證書下來前有段空檔,我上網自修了一點boostrap和CSS,然後試著做了咖啡店的一個靜態網頁給開咖啡店的長輩朋友,結果長輩表示:雖然很漂亮可是他不會動。他目前的網站雖然不是很漂亮,但是個能夠和資料庫連動的網站。(長輩本身會寫cgi還是asp,忘了。)

後來氣悶完了後想想,還真的。在blog和fb這麼發達的時代,靜態的網頁還真的不能幹麻,連換個餐點都要手動在那邊改語法修半天不是很白痴嘛,這明明應該可以自動化的啊,可是,我不知道怎麼做。

開始工作以後,我用Excel來整理一些資料來讓我工作容易點,身為社區藥局藥師,藥局裡面出現呆藥——在藥局發呆沒有醫生開出去的藥——是常有有的事情,我拿Excel建表格,紀錄品項有效期限數量,配上Excel篩選功能滿好用的,但也是爆炸的開始——使用時間長了,表格一定會亂掉,像是有效期限和數量和品項對不起來,這張表格就完全不能用了,而且不知道是什麼時候誰把他弄爆掉的(說不定就是我自己誰知道嗚嗚)。

然後試圖自己自修資料庫,從SQL開始,結果MySQL裝完了看不懂,php不會寫,SQL的畫面這麼黑看起來跟命令提示字元視窗一樣界面太不人性化了怎麼辦不會改。這問題太初階了沒人能問,自己查又看不太懂。結果就是氣餒的擱著了。

報完課之後

有鑑於前幾梯的學長姊的心得,牙一咬拿了年終買了電腦就開始寫Rails101。
第一輪用貼的,看個大概,然後確定會動。
第二輪用打的,碰到一大堆error,試著去把錯字改掉,藉由手動打字去記得code怎麼寫。什麼時候要加s什麼時候不加還是有點搞不太懂。
第三輪也用打的,錯誤比第二輪少,速度也快不少,對於MVC架構開始有感,開始有點懂CRUD在幹麻。好像有點知道為什麼要加s了。

這堂課最強大的後盾就是超有耐心助教和超好用線上課程資料。

出bug都可以回去翻上課資料或是作業解答,再不行捧著電腦去找助教救命,助教也會不厭其煩的解答蠢問題:像是.create .new .build差在哪裡,為什麼冒號有些加在前面有些加在後面……欸不要笑,或許對有點底子人來說這問題真的蠢到有剩,但是誰沒新手過嘛,感謝耐心的助教們。

不得不說,git對新新手來說真的是個很好用的東西,怕在家自己寫,寫錯字都不知道錯在哪?只要在教材的每一個complete and continue之前都下commit,就算寫爆了也可以選上一個commit回到之前的狀態,而且旁邊還有教材讓你比對程式碼,讓自己修正錯誤的難度下降非常非常多。

在練習的過程中有的時候會很想問為什麼這樣寫,為什麼不是那樣。但強烈建議,先練個兩遍,手寫的。再問為什麼之前,要先學會怎麼用,就像是開車一樣,你可以不用搞懂離合器的原理,但是你要會切換排檔。當然,搞懂離合器在幹麻是不錯的事情,能夠更了解怎樣保養車子,但就算不知道,你還是能開車。而且我們有助教!想知道為什麼又不知道問誰問助教就對了!我們的助教真偉大XD

第一週:User Story & Rails101

第一週上課內容完全考驗Rails101有沒有乖乖寫,但我個人覺的最精華的是前面的User Story。身為一個沒有獨立開發過的白菜(小白加菜鳥),心裡有想法但是模模糊糊,然後那個想法就永遠糊在那裡沒成型過,我的天根本就是我(拉椅子坐下)。

User Story是把那個想法開始條列的敘述,把模糊的概念幾次拆成條列可執行的行動,然後再把行動實際寫出來。然後把會的部份實做出來不會的跳過,做完再來想不會的要怎麼解決或是再一次的把他拆成更明確的行動。

第一週就可以用Rails101裡面練習的技巧架出一個商店的雛型了,回家作業寫完以後商店的商品就有圖了,點首頁看起來滿有模有樣的覺的厲害。

第二週:購物車、訂單、結帳、訂單狀態

焦頭爛額的兩週。但是怒寫兩週的Code以後,好像似乎感覺有點會把資料庫和網頁連在一起了,訂單的資料會自己生出來欸Cool。這兩週更強烈感受到MVC架構的威力,把資料庫、網頁美工和網頁要寫些什麼全部拆開來真的是很了不起的作法,不會改個東西就動到網頁版面配置真的是太好了。

狀態機是很特別的概念,利用條件來限制確保不會出包太強了誰想的。

第三週:寄信、刷卡、整理Code

我的天我把刷卡做出來的我的信箱裡有刷卡成功的信!
↑上課的時候狀態真的是這樣只是旁邊好安靜我就只能無聲的吶喊。下訂單會寄信,刷卡成功會寄信,和拍賣網站一樣了太厲害了!

Code整理那邊對我來說好像有點太艱深了。總之,大觀念是
View太冗用partial整理,把重複使用的表單或功能拆出去,常見的幾個項目像是標題、圖片、按鈕,可以先用helper包起來日後好改。
Controller的action重複了可以用before_filer整理
有多個Controller前面的action太多(before_filer, layout)可以用繼承的:開一個新的controller把他寫進去然後讓用到的controller去繼承他
Model太冗可以拆成Module

整個過程其實很魔幻,從Ruby on Rails是啥,到寫出一個大型留言板,再到寫一個有後台的商店,然後做到商店可以放圖(!),還有購物車(!!),還可以刷卡(!!!)。要知道這是一個月的課程欸,那我之前半年多在那邊和書相看兩厭不如歸去到底在浪費哪國的時間。而且下禮拜!下禮拜還有課欸!覺的期待XD

如果你和我一樣大學根本沒上過計算機概論,

又想自己先加減抓點概念,你可以試試看這些:

一個靜態網頁怎麼寫,HTML/CSS是什麼→ codecademy(英文)
Boostrap的語法到底在工三小→ Bootstrap架構(中文)
想寫網站,會動的,不是靜態的一頁那種。→ Rails101(中文)
Git是什麼→猴子都能懂git指南 (中文)
Rails要用什麼寫我不會→Path to Rails Developer (中文)

如果你覺的時間寶貴,建議你,來上課。