Go 語言的 init 函式

Go-brown-side.sh 本篇會帶大家認識 Go 語言的 init 函式,在了解 init func 之前,大家應該都知道在同一個 Package 底下是不可以有重複的變數或者是函式名稱,但是唯獨 init() 可以在同一個 package 內宣告多次都沒問題。底下看例子,可以發現的是不管宣告多少次,都會依序從最初宣告到最後宣告依序執行下來。
package main

import (
    "fmt"
)

func init() {
    fmt.Println("init 1")
}

func init() {
    fmt.Println("init 2")
}

func main() {
    fmt.Println("Hello, playground")
}
Continue reading “Go 語言的 init 函式”

[影片教學] 使用 Filter 將專案跑在特定 Drone Agent 服務

drone-logo_512 Drone 是一套用 Go 語言撰寫的 CI/CD 開源專案,是由一個 Server 跟多個 Agent 所組成,Agent 上面必須安裝好 Dokcer 才可以順利測試及部署,但是團隊內會出現一個狀況,每個專案的測試及部署方式不同,有的測試需要 Agent 很多 CPU 或記憶體資源,有的小專案則不需要那麼多,但是當大專案把 agent 系統資源吃光,其他專案都跑不動了,這邊的解決方式就是再建立一台新的 Agent 服務,將需要大量資源的專案跑在該台新的 Agent,Drone 這邊有支援 filter 功能,讓開發者可以指定專案要跑在哪一台 Agent 上。底下來教大家如何設定 drone filter。 Continue reading “[影片教學] 使用 Filter 將專案跑在特定 Drone Agent 服務”

如何使用 Go 語言 Flag 套件 (影片教學)

Go-brown-side.sh 之前寫過一篇『用 Golang 寫 Command line 工具』教學,作者我錄了一個教學影片,教大家如何使用 Go 語言Flag 套件,套件用法很簡單,相信看了底下的影片教學馬上就會了,但是在這邊強調,用 flag 的時機會是在寫 command line tool 給同事或者是自己用,如果是寫大型 Web Application,不推薦使用 flag,原因是 flag 不支援讀取系統環境變數,如果是 web 服務,想要動態改變 port 或者是 DB 連線資訊,就變得比較複雜,也無法搭配 Docker 使用,更不用說想結合 Kubernetes。如果要寫大專案,請使用 urfave/clispf13/cobraContinue reading “如何使用 Go 語言 Flag 套件 (影片教學)”