Hackathon,資訊界的馬拉松,一場腦力與毅力的比賽、我期待了很久的比賽。人生的第一場Hackathon,28hrs的開發、無盡的食物。

賽前我其實還滿緊張的,害怕自己一人一隊會沒辦法在時間內開發出自己心中的想法。比賽當天適逢超強寒流,我包的跟粽子一樣。一早外頭就下著大雨,光是到了會場我的鞋子就都濕了,接下來可有得受了。

領了名牌,在位子上思索著心中的想法,開始漸漸有個雛形了。原本表定時間主餐過後開始比賽,突然總召進場介紹環境及講解規則後,立刻就開始了28小時的倒數計時。看著投影布幕上大大的倒數時間開始流逝,喂喂喂,不是這樣玩的吧?硬著頭皮立馬開始全神貫注的繼續思考,直到午餐的pizza大餐以後,才有了完整的想法,大概已經花了2個小時。

這次活動的海報

不廢話立刻開始著手Database的建置,接下來一路都還滿順利的,有把自己心中的預想的功能慢慢開始做出來。一路coding到快凌晨1點,整個網站的功能架構已經大致完整。想說休息一下,跑去和也有參賽的同班同學聊聊天看看他們的進度如何。但他們那組比較慘,原本要用swift寫一個工程計算機的app,但後來遇到開發上的困難就毅然決然放棄了,改用C語言寫小遊戲。跟他們聊到一半他們忽然問到我做得如何,想說剛好可以給其他人測試測試就把網址給了他們,讓他們模擬使用者第一次操作。前幾分鐘還很正常,註冊和登入系統都沒問題,結果在其中一次輸入資料時不曉得為什麼,造成了bug,從此以後網站的資料再也寫不進資料庫,我的心直接涼了一半…看了看手錶,01:32,二話不說再回到位置上開始debug。

但是情況有點不太樂觀,資料庫整個掛了。嘗試修復失敗以後,爽快的直接把資料庫刪除重建。我不埋怨我朋友,因為如果不是他們先找到這個問題,我在上台demo時一定會碰到這個bug然後就會網站直接掛點。繼續研究程式碼,果不其然發現寫入資料庫的query多了個「”」,應該是我按快捷鍵按太快不小心打上去的,資料庫error的訊息可能也被其他網頁元素蓋過去。另外還發現了幾個驗證session的盲點,這下放心了,知道問題所在就好辦事了。再度看了看手錶,03:12,還來得及修改。就這樣一路修bug還有無數次的檢查,確定問題都解決時,看了看手錶已經05:05了,而且氣溫只有攝氏4度,好可怕啊…

休息了一個小時以後,決定在全面性檢查一遍,模擬自己是使用者來測試。一路debug、修bug,反反覆覆到了中午才放下心中的大石。悠哉的吃完便當以後就開始準備上台demo的簡報和講稿。

當最後開發時間正式結束時,場內已經出現了許多學長姐及評審們,說會不緊張絕對是騙人的,台下都是這領域的精英,而我要在他們前面demo我的作品。在講解簡報的過程其實沒什麼,重點是demo時間,實際搬出我的網站來進行操作,很怕又出現什麼bug搞死整個網站。這時評審提問了:「在輸入時數的欄位填入文字會怎麼樣?」,我的心裡立刻開始竊笑,果然會問這個問題,不愧是研究資安的學長,對於使用者的輸入十分謹慎。平常在上NISRA的課程也常提到這方面的危險,所以關於這部分我有加入過濾字元的功能,實際示範也的確可以防止使用者意外或故意輸入文字。正當我鬆了一口氣時,場內後方另一位學長小跑步到前面跟評審竊竊私語,評審馬上又問了另外一個問題:「如果輸入兩次使得資料庫裡的總時數大於一天的24小時會怎麼樣?」,其實被問的當下我也不知道會怎麼樣,腦中飛快閃過debug過程中有沒有嘗試過這樣的情況,似乎好像沒有…膽戰心驚的嘗試照著評審的問題操作,果然,資料存進去了,一天的總時數也超過了24小時,圖表顯示的部分馬上掛掉。哎呀我怎麼沒想到這麼簡單的問題…覺得尷尬但又改變不了什麼,圖表掛了的事實就大大的顯現在投影布幕上,沒想到在最後關頭還是有bug的存在被找出來了。

雖然說最後沒有得名,但這次的28小時開發中我也發現了很多細節的問題並且一一嘗試解決,總體來說還是學到了很多寶貴的經驗。未來還有機會會在繼續參加Hackathon的,在這之前我要繼續精進我的開發能力,最好開始學習app的部分,只有網頁的服務顯得太過單一,app搭配穿戴裝置是個不錯的想法。

全員大合照