這次很高興擔任第一屆 Laravel 台灣研討會講者,會議當天中午才到現場,我是兩點分享的議程,在整天聽下來及最後的案例討論,聽到最多的都是原本從 CodeIgniter 架構換到 Laravel 上面,身為 CodeIgniter 的維護人員的我,聽到是蠻開心的,在 Laravel 還沒出來前,大家都是選用這輕量級的 CodeIgniter。
[Read More]台灣第一屆 GoPher 大會
很高興可以擔任第一屆 GoPher Day 大會講者,每次參加聚會都是跟一堆網友見面,人在新竹很難得大家見到面。很感謝 iThome 大力幫忙舉辦,才可以讓整天議程順利完成。底下分享『用 Go 語言實戰 Push Notification 服務』投影片。
[Read More]Drone 自動觸發 GitLab CI 或 Jenkins 任務
Drone 是一套由 Go 語言所開發的開源碼專案,讓開發者可以使用 Docker Container 快速設定自動化測試及部署,上篇有提到『Cronjob 搭配 Drone 服務』,讓 Jenkins 或 GitLab CI 用戶可以轉換 Cron Job 任務到 Drone 上面。本篇則是會介紹如何透過 Drone 去觸發 Jenkins 或 GitLab CI 上的工作,當然這是過渡時期,希望大家最後能將工作完整移轉到 Drone 上面,不要再依靠 Jenkins 或 GitLab CI 了。本篇會教大家用三種方式來觸發 GitLab CI 或 Jenkins 任務。
- 使用 Drone CI/CD
- 使用 Docker 指令
- 使用 Command Line (命令列)
Cronjob 搭配 Drone 服務
Drone 是一套基於 Docker Container 技術的 CI/CD 服務,它是用 Go 語言所開發,可以安裝在任何作業系統內,你可以把 Drone 當作是開源版的 Travis 服務。Drone 本身不支援排程任務,也就是說無法像 Jenkins CI 一樣可以設定每天幾點幾分執行單一 Job 任務。但是可以透過第三方工具像是 cron
來整合 Drone API 達成自動排程的效果,底下來看看該如何實作。
Node.js 8 搭配 npm 5 速度
減少 node_modules 大小來加速部署 Node.js 專案
相信 Node.js 開發者現在大部分都在使用 Yarn 了吧?如果還不知道或無法體會 Yarn 帶來的好處可以參考之前寫的一篇『用 Yarn 取代 Npm 管理 JavaScript 套件版本』,帶你體會 yarn install
vs npm install
的速度差異。本篇最主要會介紹在部署 Node.js 專案都需要把 node_modules 壓縮一起丟到遠端伺服器 (假設你不是用 Docker 部署),這時候來聊聊怎麼減少 node_modules
大小。
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]