Go 語言基礎實戰教學影片上線了

cover

去年在台灣推廣 Drone 這套由 Go 語言所撰寫的開源專案,身為維護者之一,也將 Drone 跟 Gitea 完成整合。如果對於從開發到部署整個流程,還不是很了解的朋友,我個人就是推薦使用 Drone,去年九月也推出 Drone 的教學影片系列:『一天學會自動化測試及部署』,在公司使用 Drone 到現在,不曾看到服務中斷,啟動速度也是毫秒等級。為什麼會這麼穩定及快速呢?當然要歸功於 Go 語言。而這次我個人針對 Go 語言,錄製了一份基礎教學『GO 語言基礎實戰

[Read More]

Go 語言搭配 Docker Healthy Check 檢查

cover

Docker 1.12 版本後,提供了 HEALTHCHECK 指令,通過指定的一行命令來判斷容器內的服務是否正常運作。在此之前大部分都是透過判斷程式是否 Crash 來決定容器是否存活,但是這地方有點風險的是,假設服務並非 crash,而是沒辦法退出容器,造成無法接受新的請求,這就確保容器存活。現在呢我們可以透過在 Dockerfile 內指定 HEALTHCHECK 指令來確保服務是否正常。而用 Go 語言開發的 Web 服務該如何來實現呢?

[Read More]

用 Nginx 來架設線上即時縮圖機

在更早以前我們怎麼實現縮圖機制,當使用者上傳一張檔案,後端會固定將圖片縮圖成各種前端網頁需要的大小,不管前端頁面是否有使用,後端都會先產生好,這有什麼缺陷?

  1. 佔用硬碟空間大小
  2. 前端又需要另外一種格式的縮圖?

第二個問題比較麻煩,當前端需要另一種縮圖格式,後端就要開始掃描系統的全部圖片,再重新產生一次。非常耗費後端系統效能。後來才改成透過 URL 定義長寬來決定即時縮圖,在 Go 語言內可以選擇使用 picfit 來當作後端即時的縮圖機。本篇則是要提供另一種解法,就是使用 Nginx 搭配 image_filter 外掛來達成即時縮圖機制。

[Read More]

用 Go 語言實現單一或多重 Queue 搭配 optimistic concurrency

Screen Shot 2018-03-10 at 3.22.59 PM

本篇教學會著重在如何使用 Go 語言的 goroutinechannelMongoDB 是一套具有高效能讀寫的 NoSQL 資料庫,但是不像傳統關連式資料庫,有非常好用的 Transaction 交易模式,而在 MongoDB 也可以透過 Two Phase Commits 來達成交易功能,大家可以先打開文件看看,非常冗長,工程師需要花很多時間閱讀文件並且實現出來。而在 Go 語言內,我們可以在 Single Thread 內同一時間點讀寫存取同一筆資料庫來解決此問題。此篇作法只適合運作在單一 application,如果是執行多個 application 則需要透過其他方式來解決,像是 Optimistic concurrency control

[Read More]

將 Go Html Template 存入 String 變數

Go 語言內通常都將 Html Temaple 寫入到 io.Writer interface 像是 *http.ResponseWriter,但是有些情境需要將 Template 寫入到 String 變數內,例如實作簡訊 Template,這時候需要將 Html Temaple 轉成 String。該如何實作,非常簡單,只需要在任意變數內實作 io.Writer interface 即可,而 String 該如何轉換呢?可以使用 buffer’s pointer

[Read More]

自動化更新 AWS Lambda 函數

Snip20180125_1

昨天介紹了『在 AWS Lambda 上寫 Go 語言』,無服務器的時代已經來臨,透過昨天的教學,開發者可以很快的用 Go 語言寫簡易的 Restful APIGraphQL 服務,直接無痛丟到 AWS Lambda,然而寫完編譯打包上傳整個流程,是非常枯燥乏味的,如何有效地透過自動化工具像是 JenkinsDrone 來達到自動化上傳,減少工程師花時間手動上傳,省下的時間,可以讓工程師多寫個幾行程式碼呢。

[Read More]

在 AWS Lambda 上寫 Go 語言搭配 API Gateway

Snip20180124_2

這應該不是什麼新消息了,就是 AWS Lambda 正式支援 Go 語言,也就是可以將 Go 語言編譯出來的二進制檔案直接放進去 Lambda Function 內,前面可以搭配 API Gateway,後面可以搭配 CloudWatchS3,本文章會教大家如何將 Gin 打包編譯進 Lambda,官網其實也有提供 Library 或範例方便大家實作,大家可以參考看看。

[Read More]

Drone CI/CD 系統簡介

Screen Shot 2018-01-18 at 10.21.43 AM

很高興到 GCPUG.TW 分享『Drone CI/CD 系統簡介』,會議介紹了 Drone 系統架構,這套是由 Go 語言所開發,前兩年我參加了 Drone 開源專案的開發,也貢獻了數個 Drone Plugin,去年我正式開始宣傳 Drone 的好處及優勢,以及為什麼要從 JenkinsGitLab CI 轉換到 Drone,會議大綱如下,很感謝 QNAP 提供現場直播及錄影。

[Read More]

DigitalOcean 2018 年調整價格

DO_Logo_Vertical_Blue-6321464d

很高興看到 DigitalOcean 在 2018 年推出新的 VPS 價錢方案,可以從下面這張圖看出來,記憶體幾乎都調整為兩倍方案,這已經完全追上 Linode 現在的價格了,另外 DigitalOcean 還額外推出每個月 $15 美金方案,還可以動態選擇要高 CPU (1~3) 還是高記憶體 (1G ~ 3G) 由玩家自由搭配,這方案真的是太棒了。

[Read More]

Caddy 搭配 Harbor 自架私有 Docker Registry

docker

Harbor 是由 VMWare 公司用 Go 語言所開發的開源軟體,它可以讓團隊存放各種不同的私有 Docker 映像檔,假如團隊內沒考慮 AWS 的 ECR 或者是 Google 提供的 GCR 方案,建議您可以參考看看 Harbor,而 Harbor 提供了簡易的 UI 介面,包含權限控管,及跨區域的自動同步功能,比起自己從官網把 Docker Registry 架起來,功能多上不少。本篇不會教大家如何架設 Harbor,有興趣的可以直接參考官方文件,此篇會紀錄如何透過 Caddy 將憑證用在 Harbor 內部。

[Read More]