用 Drone 部署靜態檔案到 GitHub Pages
Posted on February 22, 2020
| 2 minutes
| 215 words
| appleboy
新課程上架:『Docker 容器實用實戰』目前特價 $800 TWD,優惠代碼『20200222』,也可以直接匯款(價格再減 100),如果想搭配另外兩門課程合購可以透過 FB 聯絡我

GitHub 提供一個非常方便的功能,就是可以將靜態檔案部署在 GitHub 上,基本上開發者不用負擔任何 Host 費用,就可以使用靜態檔案來做 Demo 介紹,或者是文件系統。而本篇將教您如何用 Drone 來自動化部署靜態檔案到 GitHub 上。作者直接用 Vue.js 來介紹整個流程。
[Read More]使用 Docker 五分鐘安裝好 Gitea (自架 Git Hosting 最佳選擇)
Posted on February 15, 2020
| 1 minutes
| 193 words
| appleboy
新課程上架:『Docker 容器實用實戰』目前特價 $800 TWD,優惠代碼『20200222』,也可以直接匯款(價格再減 100),如果想搭配另外兩門課程合購可以透過 FB 聯絡我

Gitea 在本週發佈了 1.11.0 版本,本篇就使用 Docker 方式來安裝 Gitea,執行時間不會超過五分鐘。Gitea 是一套開源的 Git Hosting,除了 Gitea 之外,您可以選擇 GitHub 或自行安裝 GitLab,但是我為什麼選擇 Gitea 呢?原因有底下幾點
- Gitea 是開源專案,全世界的開發者都可以進行貢獻
- Gitea 是 Go 語言所開發,啟動速度超快
- Gitea 開源社區非常完整,每年固定挑選三位為主要負責人
- Gitea 可以使用執行檔或 Docker 方式進行安裝
Gitea 目前發展方向就是自己服務自己,大家可能有發現原本在 GitHub 上面的 Repository 已經全面轉到 Gitea 自主服務了,這也代表著未來會全面轉過去,只是時間上的問題。Gitea 目前的功能其實相當完整,大家有興趣可以看這張比較表,新創團隊我都強烈建議使用 Gitea。
[Read More][Go 教學] graceful shutdown 搭配 docker-compose 實現 rolling update
Posted on February 8, 2020
| 4 minutes
| 702 words
| appleboy
線上課程:『Go 語言實戰』目前特價 $2100 TWD,優惠代碼『202003』,也可以直接匯款(價格再減 100),如果想搭配另外兩門課程合購可以透過 FB 聯絡我

上一篇作者有提到『什麼是 graceful shutdown?』,本篇透過 docker-compose 方式來驗證 Go 語言的 graceful shutdown 是否可以正常運作。除了驗證之外,單機版 Docker 本身就可以設定 scale 容器數量,那這時候又該如何搭配 graceful shutdown 來實現 rolling update 呢?相信大家對於 rolling update 並不陌生,現在的 kubernetes 已經有實現這個功能,用簡單的指令就可以達到此需求,但是對於沒有在用 k8s 架構的開發者,可能網站也不大,那該如何透過單機本的 docker 來實現呢?底下先來看看為什麼會出現這樣的需求。
[Read More][Go 教學] 什麼是 graceful shutdown?
Posted on February 8, 2020
| 3 minutes
| 431 words
| appleboy

我們該如何升級 Web 服務,你會說很簡單啊,只要關閉服務,上程式碼,再開啟服務即可,可是很多時候開發者可能沒有想到現在服務上面是否有正在處理的資料,像是購物車交易?也或者是說背景有正在處理重要的事情,如果強制關閉服務,就會造成下次啟動時會有一些資料上的差異,那該如何優雅地關閉服務,這就是本篇的重點了。底下先透過簡單的 gin http 服務範例介紹簡單的 web 服務
[Read More][Go 教學] graceful shutdown with multiple workers
Posted on February 2, 2020
| 7 minutes
| 1359 words
| appleboy

在閱讀本文章之前請先預習『用 Go 語言 buffered channel 實作 Job Queue』,本篇會針對投影片 p.26 到 p.56 做詳細的介紹,教大家如何從無到有寫一個簡單的 multiple worker,以及如何處理 graceful shutdown with workers,為什麼要處理 graceful shutdown? 原因是中途手動執行 ctrl + c 或者是部署新版程式都會遇到該如何確保 job 執行完成後才結束 main 函式。
[Read More][SQL] 如何從單一資料表取得每個 key 前 n 筆資料
Posted on February 1, 2020
| 3 minutes
| 508 words
| appleboy

最近專案需求需要實現單筆資料的版本控制,所以會有一張表 (foo) 專門儲存 key 資料,而有另外一張表 (bar) 專門存 Data 資料,那在 bar 這張表怎麼拿到全部 key 的最新版本資料?底下先看看 schema 範例
[Read More]使用 Go Channel 及 Goroutine 時機
Posted on January 18, 2020
| 3 minutes
| 480 words
| appleboy

相信不少開發者肯定聽過 Go 語言之所以讓人非常喜歡,就是因為 Go concurrency,如果您對於 concurrency 不了解的朋友們,可以直接參考官網的範例開始了解,範例會帶您一步一步了解什麼是 Channel 什麼是 Go concurrency?本篇會介紹 Channel 使用時機,在大部分寫 application 時,老實說很少用到 Channel,所以很多人其實不知道該在哪種場景需要使用 Channel,底下這句名言大家肯定聽過:
Do not communicate by sharing memory; instead, share memory by communicating.
本篇會用簡單的例子來帶大家理解上述名言。
[Read More]用 GitHub Actions 部署 Go 語言服務
Posted on December 14, 2019
| 3 minutes
| 527 words
| appleboy

GitHub Actions 也推出一陣子了,相信有不少雷,也是有很多優勢,未來在 GitHub 上面串接任何開源專案,都可以免費使用,過幾年可以看看 GitHub Actions 對 Travis 的影響是多少?本篇要來介紹如何透過 GitHub Actions 來部署 Go 語言服務,會用一個簡單 httpd 範例教大家如何透過 Docker 方式來更新。使用 Go 語言基本服務流程大致上會是『測試 -> 編譯 -> 上傳 -> 啟動』,透過這四個步驟來學習 GitHub Actions 該如何設定。
- 測試: Unit Testing 多一層保護
- 編譯: 透過 go build 編譯出 Binary 檔案
- 上傳: 寫 Dockerfile 將 Binary 包進容器內
- 啟動: 透過 docker-compose 方式來更新服務
[Read More]用 15 分鐘快速打造 Laravel 開發環境
Posted on December 6, 2019
| 2 minutes
| 245 words
| appleboy

相信大家對 Laravel 都很熟悉,但是初學者或是新進同事要快速入門 Laravel 最大的門檻就是該如何在短時間內在本機電腦快速安裝好公司專案。這時候使用 Laradock 就是一個最佳時機,透過 Docker 容器話,快速切換 PHP 版本,或者是安裝額外的服務像是 MySQL, MariaDB, phpMyAdmin 或 nginx 等服務,讓本機端不受到自訂安裝套件的困擾,用完隨時關閉,完全不會影響到電腦環境。底下我會介紹使用 Laradock 該注意的事情。完整詳細的操作步驟可以直接看 Youtube 影片。
[Read More]Go 語言使用 Select 四大用法
Posted on November 23, 2019
| 4 minutes
| 694 words
| appleboy

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