五大理由從 Python 轉到 Go 語言
Posted on April 8, 2017
| 1 minutes
| 188 words
| appleboy

在網路上看到這篇『5 Reasons Why We switched from Python To Go』,先發到自己 Facebook 牆上,引發討論,乾脆整理一篇 Blog 來寫自己的感想,底下五大理由讓該篇作者從 Python 轉到 Go 語言。我會針對前四點來寫心得
- 編譯二進制檔案 (加速部署及跨平台)
- 編譯自動檢查 Static 型態 (你不會把 string 欄位帶入 Integer)
- 效能 (Go 並發跟 Python thread 比起來節省許多資源)
- 不需要 web framework (Go 內建大多數 Library 像是 HTTP, JSON, HTML templating)
- 好用的 IDE (內文提到 Webstorm, PHPStorm) 我推薦用 VSCode
除了第五點外,其他四點個人覺得都是工程師的痛點。
[Read More]在 Go 語言用一行程式碼自動化安裝且更新 Let’s Encrypt 憑證
Posted on April 7, 2017
| 3 minutes
| 462 words
| appleboy

在去年寫了一篇『申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2』教學,如果您是用 Nginx,就可以參考該篇教學讓您的伺服器支援 HTTPS,而 Google Security Blog 也宣布在 56 版本以後將會提示 non-secure 網站,讓使用者可以選擇性瀏覽網站。Let’s Encrypt 官方也公布去年 2016 發了多少張憑證,相當驚人,想必大家對 HTTPS 已經有相當程度的瞭解。底下這張圖說明 2016 年 Let’s Encrypt 發憑證總量的狀況

此篇會介紹在 Go 語言如何跟 Let’s Encrypt 串接,底下有兩種方式。
[Read More]Debian/Ubuntu 的 update-rc.d 使用教學
Posted on April 6, 2017
| 1 minutes
| 208 words
| appleboy

update-rc.d 是在 Debian 或 Ubuntu 內用來管理 /etc/init.d
目錄內的 scripts 工具。不管是 Nginx 或 Mysql 等相關服務,都可以在 /etc/init.d
目錄內找到相對應的 script 檔案,隨便打開一個 script 檔案就可以看到標頭有固定的格式寫法:
1
2
3
4
5
6
7
8
9
| ### BEGIN INIT INFO
# Provides: gorush
# Required-Start: $syslog $network
# Required-Stop: $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the gorush web server
# Description: starts gorush using start-stop-daemon
### END INIT INFO
|
[Read More]Go 語言官方推出的 dep 使用心得
Posted on March 31, 2017
| 1 minutes
| 111 words
| appleboy

Go 語言團隊在去年開始開發 Dependency Management Tool 稱作 dep,並且預計明年 2018 推出 1.10 Go 版本時內建,詳細可以參考官方的 roadmap,強者我朋友寫了一篇使用教學,有興趣的朋友可以參考看看,但是本篇會講幾點我目前不打算用 dep 的原因。
[Read More]Go 語言的錯誤訊息處理
Posted on March 23, 2017
| 4 minutes
| 652 words
| appleboy

每個語言對於錯誤訊息的處理方式都不同,在學習每個語言時,都要先學會如何在程式內處理錯誤訊息 (Error Handler),而在 Go 語言的錯誤處理是非常簡單,本篇會用簡單的範例教大家 Go 如何處理錯誤訊息。
[Read More]用 Golang 寫 Command line 工具
Posted on February 16, 2017
| 3 minutes
| 451 words
| appleboy

如果你要寫 Command line 工具,又想在各平台 (像是 MacOS, Windows 或 Linux) 上執行,這時候 Golang 就是您最好的選擇。在 Reddit 讀到一篇 Command line 工具比較介紹,這篇最主要講到兩個 CLI 工具,一個是 urfave/cli,另一個是 spf13/cobra,這兩個工具其實都非常好用,後者是去年加入 Google Golang 團隊的 spf13 所開發,該作者加入 Google 後呢,非常的忙,但是強者他同事有幫忙繼續維護 cobra 專案,兩個 CLI 工具各自都有有大型專案使用 urfave/cli 有 docker/libcompose, docker/machine, Drone, Gitea, Gogs 等,而後者 spf13/cobra 則有 docker, docker/distribution, etcd 等。本篇筆者會介紹 urfave/cli 該如何使用?
[Read More]Caddy 搭配 Drone 伺服器設定
Posted on February 7, 2017
| 1 minutes
| 196 words
| appleboy

緣由
Caddy 是一套 HTTP/2 伺服器,你可以想成跟 Nginx 是同一種角色,但是 Caddy 有一點不一樣的地方就是自動支援 HTTPS 設定,也就是 Caddy 幫網站自動申請 Letsencrypt 憑證,開發者不需要擔心憑證會過期,Caddy 會定期幫忙更換。Drone 則是一套以 Docker 為基礎的 Continuous Integration 平台。就在上個月 Caddy 發佈了 0.9.5 版本,更新過後,發現 Drone 的 WebSocket 連線會斷線又連線,底下來看看 Caddy 更動了什麼造成 WebSocket 連線失效。
[Read More]從商業利益看 Go 程式語言
Posted on January 14, 2017
| 1 minutes
| 152 words
| appleboy

從 2016 年開始寫 Go 程式語言,在這一年我向很多朋友介紹了 Go 語言,很多人就不經問到為什麼我這麼喜歡 Go 語言,在公司內同事或主管更會問,為什麼要從 Node.js 或其他語言轉換到 Go,Go 語言有什麼地方可以帶給公司更大的利益,否則為什麼要多花時間跟人力去嘗試 Go 語言。如果團隊要建置一個商業 Web 服務,那我覺得底下的優點,是讓您選擇 Go 語言的最主要原因。
[Read More]開發者另類的自架 Git 服務選擇: Gitea
Posted on January 7, 2017
| 1 minutes
| 139 words
| appleboy

現在 Git 服務最有名的就是 Github,如果是開放原始碼,我很推薦 Github。如果是想要放大量私有專案或企業內及個人使用,想必大家會推薦 Gitlab,在這裡就不多介紹 Gitlab 了,可以從 Google 找到許多相關資料,本篇會介紹另類的 Git 自架服務選擇 Gitea,在介紹之前可以先參考我在 2014 年寫了一篇用 Go 語言開發的 Git 服務叫做 Gogs。
[Read More]在 Mac 建立新帳號,並且開通 ssh 權限
Posted on December 30, 2016
| 1 minutes
| 165 words
| appleboy

為什麼我會需要在 Mac 建立新帳號呢,原因就是最近用 Golang 寫了 SCP 工具,此工具支援 Password 或 SSH Public Key 登入,我又不想拿個人帳號寫在 Testing 檔案內,所以才會想到在 Mac 建立一個帳號好了,本篇就是教大家如何在 Mac 建立新帳號,並且開通 SSH 權限。
[Read More]