不知不覺今年是第三屆參加鐵人賽,成為Ruby工程師也進入第三年。第一年順利完賽,在過程中建立了許多Ruby的基礎知識,獲得不少好處;去年有幸得到評審青睞,得到佳作的成績。想當然爾,今年自然會有比過去更高的自我期許與壓力,這樣的壓力也間接造成題材選擇上的困難。無獨有偶,在鐵人賽開賽的前幾天,在臉書上也看到幾位過去參加過鐵人賽的朋友有類似的選題困擾,看來選擇題目跟命名類似,是工程師長久以來難以克服的困擾。
當初可能的主題有以下的選項:
每一個選擇自然都有些可看性,但也有各自的挑戰。最終結果如各位所見,今年趁鐵人賽的機會,在這三十天當中學一學Golang。標題是致敬我去年底有著明顯錯誤的文章「在2017年底,我們聊一聊Go (Golang)」,感謝網路上的善心人士、大大能夠給予指點,讓我在寫作的過程中認識錯誤,然後有機會成長更正。
關於go的基本介紹去年的文章就已經寫過,基於DRY原則(don't repeat yourself)就省略,有興趣的朋友可以參考去年的文章。在接下來的三十天當中,前半段介紹go語言本身,後半段不免俗的介紹網路框架。因為go先天對網路支援性很好的緣故,網站框架相當多(我去年文章的錯誤就請忘掉吧) ,所以我預計會針對主流的幾種做個比較,最後挑選一種作為推薦。
聊到網路框架,事實上因為go本來就是google設計來解決巨型網路伺服器瓶頸的後端語言,所以先天支援許多Web必備的函式庫例如HTTP、JSON、HTML templating,所以也有人認為go根本就不需要Web Framework(參見Why I Don’t Use Go Web Frameworks),畢竟使用外部資源不僅降低效能,也增加外部風險。
所以如果沒有意外(也就是有成功的話),也會分享在沒有使用框架的情況下建立網路專案。希望接下來三十天的旅程中每天都有足夠的收穫,對自己也對別人都有助益。