很高興可以擔任第一屆 GoPher Day 大會講者,每次參加聚會都是跟一堆網友見面,人在新竹很難得大家見到面。很感謝 iThome 大力幫忙舉辦,才可以讓整天議程順利完成。底下分享『用 Go 語言實戰 Push Notification 服務』投影片。
[Read More]Go 語言內 struct methods 該使用 pointer 或 value 傳值?
上週末在台北講『Go 語言基礎課程』,其中一段介紹 Struct 的使用,發現有幾個學員對於在 Method 內要放 Pointer 或 Value 感到困惑,而我自己平時在寫 Go 語言也沒有注意到這點。好在強者學員 Dboy Liao 找到一篇說明:『Don’t Get Bitten by Pointer vs Non-Pointer Method Receivers in Golang』,在 Go 語言如何區分 func (s *MyStruct)
及 func (s MyStruct)
,底下我們先來看看簡單的 Struct 例子
用 Docker Multi-Stage 編譯出 Go 語言最小 Image
之前應該沒寫過用 Docker 結合 Go 語言編譯出最小 Image 的文章,剛好趁這機會來介紹。其實網路上可以直接找到文章,像是這篇『Building Minimal Docker Containers for Go Applications』,那本文來介紹 Docker 新功能 multi-stage builds,此功能只有在 17.05.0-ce 才支援,看起來是 2017/05/03 號會 release 出來。我們拿 Go 語言的 Hello World 來介紹 Single build 及 Multiple build。
[Read More]用 Go 語言打造 DevOps Bot
在 4/27 參加 iThome 舉辦的第一屆 ChatBot Day,我分享了如何用 Go 語言 實作 DevOps Bot,可以透過 Facebook Messenger 或 Line Messenger API 來主動通知開發者。此議程希望可以幫助想玩 Bot 但是又不知道如何入門的開發者。如果不懂程式語言,也可以直些下載 Binary 來玩玩看。
[Read More]在 DigitalOcean 新竹社群簡介 Gitea 開源專案
很高興受到 DigitalOcean 新竹社群邀請來介紹輕量級的 Git 服務: Gitea,在不久之前筆者已經寫過一篇 Gitea 介紹,這次到交通大學宣傳這套免費的開源專案,目的就是希望台灣有更多開發者或企業可以了解用 Go 語言也可以打造一套輕量級 Git 服務,並且導入台灣的新創團隊。這次分享是透過 DigitalOcean 最小機器 (512MB 記憶體,每個月五美金) 來 Demo 如何在 Ubuntu 16.04 快速架設 Gitea 及使用 Caddy 來自動申請 Let’s Encrypt 憑證,最後搭配 Jenkins 串自動化部署及測試等…。
[Read More]五大理由從 Python 轉到 Go 語言
在網路上看到這篇『5 Reasons Why We switched from Python To Go』,先發到自己 Facebook 牆上,引發討論,乾脆整理一篇 Blog 來寫自己的感想,底下五大理由讓該篇作者從 Python 轉到 Go 語言。我會針對前四點來寫心得
- 編譯二進制檔案 (加速部署及跨平台)
- 編譯自動檢查 Static 型態 (你不會把 string 欄位帶入 Integer)
- 效能 (Go 並發跟 Python thread 比起來節省許多資源)
- 不需要 web framework (Go 內建大多數 Library 像是 HTTP, JSON, HTML templating)
- 好用的 IDE (內文提到 Webstorm, PHPStorm) 我推薦用 VSCode
除了第五點外,其他四點個人覺得都是工程師的痛點。
[Read More]在 Go 語言用一行程式碼自動化安裝且更新 Let’s Encrypt 憑證
在去年寫了一篇『申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2』教學,如果您是用 Nginx,就可以參考該篇教學讓您的伺服器支援 HTTPS,而 Google Security Blog 也宣布在 56 版本以後將會提示 non-secure 網站,讓使用者可以選擇性瀏覽網站。Let’s Encrypt 官方也公布去年 2016 發了多少張憑證,相當驚人,想必大家對 HTTPS 已經有相當程度的瞭解。底下這張圖說明 2016 年 Let’s Encrypt 發憑證總量的狀況
此篇會介紹在 Go 語言如何跟 Let’s Encrypt 串接,底下有兩種方式。
[Read More]Debian/Ubuntu 的 update-rc.d 使用教學
update-rc.d 是在 Debian 或 Ubuntu 內用來管理 /etc/init.d
目錄內的 scripts 工具。不管是 Nginx 或 Mysql 等相關服務,都可以在 /etc/init.d
目錄內找到相對應的 script 檔案,隨便打開一個 script 檔案就可以看到標頭有固定的格式寫法:
Go 語言官方推出的 dep 使用心得
Go 語言團隊在去年開始開發 Dependency Management Tool 稱作 dep,並且預計明年 2018 推出 1.10 Go 版本時內建,詳細可以參考官方的 roadmap,強者我朋友寫了一篇使用教學,有興趣的朋友可以參考看看,但是本篇會講幾點我目前不打算用 dep 的原因。
[Read More]Go 語言的錯誤訊息處理
每個語言對於錯誤訊息的處理方式都不同,在學習每個語言時,都要先學會如何在程式內處理錯誤訊息 (Error Handler),而在 Go 語言的錯誤處理是非常簡單,本篇會用簡單的範例教大家 Go 如何處理錯誤訊息。
[Read More]