---
title: "成大選課系統"
url: "https://laigary.com/posts/ncku-course"
type: "post"
date: "2012-08-13"
updated: "2026-08-03"
reading_time: 11
excerpt: "NCKU Cource，這是一個成大的選課輔助系統，當時社群媒體剛開始發展，透過 Facebook 登入，大家可以在這個網站上針對課程評價、留言或是互相交易選課。"
---

# 成大選課系統

這是 2026/08/03 ，慢慢的找回我以前寫的文章，後面的原文是我在大四的時候寫的一篇熱血文章，時間快轉到現在，真的是物換星移，人類的想法再也不會被手寫程式的速度給卡住了，當時我大四熬夜數個月寫的網站，現在一兩天靠 AI 就能完成了，不過如果沒有當時的天真，我也不會成為現在有經驗的工程師了！

當時還使用 Bootstrap, Skeleton…等好久不見的前端框架/Library 。

很感謝自己當時的努力，沒有放棄寫程式。

> NCKU Cource，這是一個成大的選課輔助系統，當時社群媒體剛開始發展，透過 Facebook 登入，大家可以在這個網站上針對課程評價、留言或是互相交易選課。

以下是原文

---

這算是從無到有，自己第一個寫的Web app，今天是上線的第三天，不知道未來這個服務會走向什麼像的結果，它都是值得紀念的。

先從背景講起，其實他是我的畢業專題，很高興系上的[教授](http://www.im.ncku.edu.tw/member/profile.php?pid=17)願意就這樣讓我們去實驗，做出這樣的網站來，撇開專題不說，這件事情從頭到尾，我都沒有以它只是個專題的心態在做，而其實我也是個半路出身開始寫網頁的，學校沒人教，台灣的書又少，一點一滴從Google、少數的朋友、前輩不斷的詢問出來，本來希望七月底能上線的，硬生生拖到了八月底，才讓他上線，而現在的狀況，我很開心。

如果能從上線的第一天開始用起，我想我的使用者們，會漸漸的喜歡我的網站的，第一天最基本的功能剛上線，我記得每個人都不知道怎麼用，實在糗大了，於是我花了一個多小時不斷微調，第一個功能它堪用了，當天晚上睡覺前，扣掉我拿來測試的[測試帳號](https://developers.facebook.com/docs/test_users/)，達到257個用戶，第二天，總共改了30個小版本，晚上睡覺前，也達到了600多位的用戶了，今天2.0的版本發出，希望明天起床後，叫醒我的，不是鬧鐘，而是我的夢想(最近很喜歡這句話)，我的夢想就是，凝聚所有的成大人。

這邊在感謝一開始就支持這個App的用戶，那我來講講這套系統的理念好了，關於選課、輔助選課的功能實在太多了，如果能幫大家寫個script去搶課，那我想這一定會在"我發佈"的那天很紅，除去我目前也沒有這樣的Background(其實我相信這不難)，這其實還是不是我想要做的，我想做的，[這關於我、關於你，也關於他](http://youtu.be/7gCtkT1A1tA?t=30s)，其實關於人，我關注於人，我們想要知道我的好朋友修什麼課，我的課有那些人修，我知道這或許會有隱私權的問題，我後面在提到，我想要知道這堂課以前修過的人的想法……等等，後面還有更多的功能我會一直以這個理念來做，凝聚人，而人們能成更多事，而如果能凝聚成大人，更能成大事。

後面記錄一些關於技術背景的事情：

首先我想先提到隱私權的問題，其實我會選擇用Facebook登入，他會是對我這個系統最好的選擇，因為如果我建立一個會員系統，光維護這個系統會讓我無法專心的去做很多事情，安全防護…..等，登入的時候我想你可以看到，我只有要求使用者基本的權限，所以如果對於隱私或是安全性有考量的人，相信我，請放心的使用，使用這個系統並不會把你的個資洩漏給詐騙集團，但亂點這個網站以外的其他連結，是有可能會的。

接著整個系統的架構，我是以[Ruby on Rails](http://rubyonrails.org/)為架構([Ruby](http://www.ruby-lang.org/en/) 1.9.\* , Rails 3.2.\*)，我覺得非常好上手，整體架構也算乾淨，在學習的路上不怕迷失，網路上相關的資源也很豐富。

資料庫只用了一套，是[Postgres](http://www.postgresql.org/)，唯一要提醒的是安裝時請小心，不然裝錯了很麻煩！

網頁的樣式，由於是一個人開法，所以我採用的是[@Twitter](http://twitter.com/)所提供的[Twitter Bootstrap](http://twitter.github.com/bootstrap/#)，這絕對會節省非常多你開發的時間，[敏捷開發](http://agilemanifesto.org/iso/zhcht/)必備，網路上也有許多類似的套件，如[Skelton](http://www.getskeleton.com/)也是不錯的框架。

而使用Ruby on Rails我有用了幾套Gem

- pd ： 前面提到了，這是資料庫
- [omniauth-facebook](https://github.com/mkdynamic/omniauth-facebook)：負責Facebook Login
- [koala](https://github.com/arsduo/koala) ：負責做Facebook的資料的存取
- [simple\_form](https://github.com/plataformatec/simple_form) ： [這可以參考我前面這篇](http://garylai1990.tumblr.com/post/30247083596/protect-from-forgery)，為解決方案
- [thin](https://github.com/macournoyer/thin) ： 這我比較不熟，Heroku推薦，Godfat也提到過。

我不自己架設Sever，我使用的是[Heroku](http://www.heroku.com/)，他們也是架在著名的[AWS](http://aws.amazon.com/)上面。

而整個開發過程，除了問人，我最常去的是這幾個網站，而我整篇網誌很多網站，我幾乎把網址都背下來了，打的比Google快：

- [Google](http://www.google.com) ： 這我想每個人都是吧….
- [Stackoverflow](http://www.stackoverflow.com) ：簡言之，宅男版知識加社群

雖然我是一個人開發，但我所有的Code也有做版本控制，我是用的是[Github](https://github.com/)，我的[整個專案的程式碼](https://github.com/garylai1990/nckucourse)，我也放在上面，是Public的，我之後有空會做Documents，讓整個系統可以更多人貢獻。

最後，在成大的最後一年，雖然還尚未開始，但希望我能用我最大的力氣，貢獻給成大！各位成大人，共勉之！

Rock
