Go 語言使用 Select 四大用法

photo

本篇教學要帶大家認識 Go 語言Select 用法,相信大家對於 switch 並不陌生,但是 selectswitch 有個共同特性就是都過 case 的方式來處理,但是 select 跟 switch 處理的事情完全不同,也完全不相容。來看看 switch 有什麼特性: 各種類型及型別操作,接口 interface{} 型別判斷 variable.(type),重點是會依照 case 順序依序執行。底下看個例子:

Continue reading “Go 語言使用 Select 四大用法”

初探 Go 語言 Project Layout (新人必看)

cover photo

很多人初次進入 Go 語言,肯定都會尋找在 Go 裡面是否有一套標準且最多人使用的 Framework 來學習,但是在 Go 語言就是沒有這樣的標準,所有的開源專案架構目錄都是由各團隊自行設計,沒有誰對誰錯,也沒任何一個是最標準的。那你一定會問,怎樣才是最好的呢?很簡單,如果可以定義出一套結構是讓團隊所有成員可以一目瞭然的目錄結構,知道發生問題要去哪個地方找,要加入新的功能,就有相對應的目錄可以存放,那這個專案就是最好的。當然這沒有標準答案,只是讓團隊有個共識,未來有新人進入專案,可以讓他在最短時間內吸收整個專案架構。

Continue reading “初探 Go 語言 Project Layout (新人必看)”

用 Go 語言 buffered channel 實作 Job Queue

上個月在高雄 mopcon 講了一場『Job Queue in Golang』,裡面提到蠻多技術細節,但是要在一場 40 分鐘的演講把大家教會,或者是第一次聽到 Go 語言的,可能都很難在 40 分鐘內吸收完畢,所以我打算分好幾篇部落格來分享細部的實作,本篇會講解投影片第 19 ~ 25 頁,透過本篇你可以清楚學到什麼是 buffered channel,以及實作的注意事項。

Continue reading “用 Go 語言 buffered channel 實作 Job Queue”

Drone CI/CD 支援 Auto cancellation 機制

大家一定會問什麼是『Auto cancellation』呢?中文翻作自動取消,這機制會用在 CI/CD 的哪個流程或步驟呢?我們先來探討一個情境,不知道大家有無遇過在同一個 branch 陸續發了 3 個 commit,會發現在 CI/CD 會依序啟動 3 個 Job 來跑這 3 個 commit,假設您有設定同時間只能跑一個 Job,這樣最早的 commit 會先開始啟動,後面兩個 commit 則會處於 Penging 的狀態,等到第一個 Job 完成後,後面兩個才會繼續執行。

Continue reading “Drone CI/CD 支援 Auto cancellation 機制”

用 Go 語言實作 Job Queue 機制

golang logo

很高興可以在 Mopcon 分享『用 Go 語言實現 Job Queue 機制』,透過簡單的 goroutinechannel 就可以實現簡單 Queue 機制,並且限制同時可以執行多少個 Job,才不會讓系統超載。最後透過編譯放進 Docker 容器內,就可以跑在各種環境上,加速客戶安裝及部署。

Continue reading “用 Go 語言實作 Job Queue 機制”

在 Docker 內設定使用者及群組權限的三種方式

docker

如果平常本身有在玩 Docker 的開發者肯定知道透過 docker command 啟動的容器預設是使用 root 來當作預設使用者及群組,這邊會遇到一個問題,當 Host 環境你有 root 權限就沒有此問題,如果你沒有 root 權限,又有需求在 Docker 容器內掛上 Volume,會發現產生出來的檔案皆會是 root 權限,這時候在 Host 完全無法寫入。本篇教大家使用三種方式來設定容器使用者權限。

Continue reading “在 Docker 內設定使用者及群組權限的三種方式”

Ansible 設定 Google Container Registry 搭配 Drone 自動上傳

blog logo

最近剛好有需求要串接 GCR (Google Container Registry),專案如果是搭配 GCP 服務,個人建議就直接用 GCR 了。本篇要教大家如何透過 Ansible 管理遠端機器直接登入 GCR,透過特定的帳號可以直接拉 Image,接著用 docker-compose 來重新起動服務,這算是最基本的部署流程,那該如何用 Ansible 登入呢?請看底下教學。

Continue reading “Ansible 設定 Google Container Registry 搭配 Drone 自動上傳”

用 Drone 自動化上傳 Docker Image 到 GitHub Docker Registry

github

很高興收到 GitHub 的 Beta 邀請函來開始試用 GitHub Package Registry 相關功能,從說明文件可以知道目前 Registry 支援了好幾種 Package 像是 npm, gem, docker, mvnnuget,這篇主要跟大家介紹如何用 Drone 快速串接 CI/CD 流程的『自動上傳 Docker Image 到 GitHub Registry』,底下來看看如何使用 GitHub 提供的 Docker Registry。

Continue reading “用 Drone 自動化上傳 Docker Image 到 GitHub Docker Registry”