之前在串接 twilio 的時候需要公開網站才能測試,就看到 twilio 推薦使用 ngrok 這個工具,可以將本機 localhost 的路徑公開測試。 除了測試 twilio ,還可以拿來暫時 public 開發中的網站,這麼方便的工具還不立馬寫一篇文章來記錄一下。
Continue reading
換了 Dell 新筆電之後,在開發上發現 ctrl + alt + 方向鍵
的快捷鍵都壞掉了,都無法使用。 正當我煩擾到處 google 問題的時候,發現可能是 Intel Graphics 的問題,就嘗試設定一下就解決了。
當用 Go 操作檔案的時候,很常會用到 os.OpenFile
讀寫檔案,而其中最後一參數 perm FileMode
所代表的含意對於 Windows 使用者來說肯定是黑人問號,例如下列範例,傳入 os.FileMode(0660)
代表什麼意思?
1 | os.OpenFile("file.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.FileMode(0660)) |
如果你也有同樣的困惑,今天這篇文章就是來解答其背後的意義,就讓我們開始吧。
Continue reading在 Go Module 模式底下使用 go get
取得套件的時候常常會有各種版號出現,例如 v1.0.2、v2.0.3 +incompatible、甚至是一段 hash v0.0.0-20200226145339-3e397ee01bc6。 還有取得 v2 版本的時候,有時候是 go get github.com/my/foo@v2.2.0
有時候是 go get github.com/my/foo/v2@v2.2.0
。 為了搞懂這些差別,我參考了一些官方文章還有做了一些實驗,今天就來解說這些差別到底是什麼情況。
在使用 Go 開發網站應用程式的時候,常常會需要重新執行 go run main.go
指令,來測試自己改的程式碼對不對。 同樣的動作做久了,會有點惱人,要是這時候來點 Live-Reload 工具就可以讓開發心情增加 100 分。 就在前幾天發現一個可以 Live-Reload 的工具 codegangsta/gin,雖然這個專案很久了,可是使用起來還是非常的棒阿!!
備註說一下,此 codegangsta/gin 非彼 gin-gonic/gin。 是不一樣的東西喔。
當實作某一個介面的方法的時候,會視是否要 shared state 來決定要用 Pointer Receiver 還是 Value Receiver。 而使用 Pointer Receiver 的時候,會發現不能使用 Value Type 傳給 Interface Value,會出現下面這樣的錯誤。
但是使用 Value Receiver 卻兩種都可以傳,這是為什麼呢?
Continue reading在開發網站的時候,有時候也會用到 sessions 來記錄狀態。 在這裡我們可以使用 github.com/gorilla/sessions
套件來輕鬆管理 sessions。
在網站開發上,常常會用 快取(cache) 來提升回應時間,或者是減少對資料庫的操作等等…。 而 Go 的標準函式庫並沒有提供 cache 的實作,但是我們可以使用別人寫好的函示庫來實作 cache。
在 GitHub 上有幾個不錯的 cache 實作,例如 freecache 和 go-cache,而今天這篇文章會以 go-cache 當作範例。
Continue reading有時候 git commit
的太快,偶爾會發現有一個小地方沒改到或者是 commit 訊息沒有打完整,但是又不想在分支上多一個 commit ,這時候可以使用 git commit --amend
來修改上一個 commit。
看完 justforfunc #16: unit testing HTTP servers 影片後,了解原來單元測試 HTTP Server 並不會太難,因為官方已經有提供 httptest 工具,這工具讓單元測試 HPPT Server 變得非常簡單。
我平常都是使用 Gin 開發網站,而單元測試 HTTP Server 的概念都一樣,都是使用 httptest ,所以今天就來筆記一下如何寫 Gin 的 HTTP Server 單元測試。
Continue reading