跳至主要内容

· 閱讀時間約 3 分鐘
Ckai

Mock Database(模擬資料庫)輔助單元測試的優點

  • 將測試資料與正式資料庫隔離,避免資料衝突。
  • 不需連接正式資料庫,節省測試時間。
  • 容易模擬極端狀況,以達測試覆蓋率 100%。

gomock 框架

GitHub gomock 找到 mockgen tool 的安裝指令。
安裝後依序執行以下指令:

· 閱讀時間約 2 分鐘
Ckai

逃げるは恥だが役に立つ

今天終於在網飛網飛看了 2016 年 10 月 11 日首播的日劇「逃げ恥」,台版譯名《月薪嬌妻》。

前一陣子聽 Podcast《吳淡如人生實用商學院》不時會聽到「逃跑雖然可恥但很管用」這句話,今天才知道是《月薪嬌妻》原文的直譯。

第一集當中有幾個比較陌生的日文詞彙,在此記錄一下。

· 閱讀時間約 1 分鐘
Ckai

Watchexec 自動重啟伺服器

曾經開發 Node.js 專案的人應該都有用過 nodemon 套件。
在 Go 專案的開發過程中,每當伺服器相關代碼變更後,
伺服器若能自動重啟將可省下開發人員不少心力。 Watchexec 就是這麼好用的開發工具,而且其功能不僅止於重啟伺服器。

· 閱讀時間約 1 分鐘
Ckai

Gin Gonic 是非常流行的網站框架,其他選擇有 Beggo, BuffaloEcho, Echo, Fiber, Martini, Revel。 另外也有僅提供 HTTP Router 功能的套件,如 Chi, FastHttp, Gorilla Mux, HttpRouter 。

· 閱讀時間約 3 分鐘
Ckai

CI/CD Tools

以下是知名的 CI/CD 工具

  • CircleCI
  • GitHub Action
  • Jenkins
  • Travis

Workflow

欲使用 GitHub Action 需先定義 Workflow,此係自動化流程,由一個以上的工作(Job)組成。 Workflow 可由三種方法觸發:

· 閱讀時間約 5 分鐘
Ckai

1. Transaction 資料庫交易

Transaction 是變更資料的流程,一個 transaction 當中可以包含多個針對資料的操作(INSERT/UPDATE/DELETE)。 執行 transaction 的結果有兩種:

  1. Transaction 內的所有操作都成功,結束交易並保存資料變動結果。
  2. Transaction 內有一個以上的操作失敗,結束交易並使資料回到交易開始前的狀態。

· 閱讀時間約 4 分鐘
Ckai

讀取現象(Read Phenomena)

在資料庫系統中,讀取現象係指在並行處理的環境下,多個交易對同一組資料進行讀取操作時可能出現的不一致。這些不一致可能影響交易的結果或導致資料不正確。

常見的讀取現象包括:

· 閱讀時間約 4 分鐘
Ckai

函式可以調用函式本身

遞迴函式經典範例 ~ 階乘運算
package main

import "fmt"

func factorial(n int) int {
if n == 0 {
return 1
}
return n * factorial(n-1)
}

func main() {
fmt.Println(factorial(5)) // 120
}

數學的階乘(例如:5! = 5 * 4 * 3 * 2 * 1)可透過上述代碼實現,如果調用 factorial(10) 回傳值為 3628800。

· 閱讀時間約 4 分鐘
Ckai

type DB

DB代表零或多個底層連接池的資料庫控制代碼,可安全的被多個 goroutine 同時使用。

sql套件會自動建立及釋放連接,也會維護閒置連接的自由連接池。如果資料庫有連接狀態的概念,即可穩定觀察交易(Tx)或連接(Conn)的狀態。一旦調用 DB.Begin,回傳的 Tx 將綁定到一個單獨的連接。一旦在交易中調用Commit 或 Rollback,該交易的連接將回傳到 DB 的閒置連接池中。可以使用 SetMaxIdleConns 控制池的規模。