在 Markdown 還沒出來之前,要寫一篇部落格教學真的非常麻煩,尤其是要學習 html 語法及如何引用程式碼在文章內,Markdwon 的出現,改變了整個工程師寫 Blog 的習慣,現在不管使用任何網站,沒有支援 Markdwon 語法,真的就不太想留言或發文了。最早以前自己的部落格是用 WP-Markdwon 這套 Plugin,但是這套 Plugin 在整合 SyntaxHighlighter Evolved 的時候根本無法使用,需要特定的語法才可以使用。WP-Markdwon 有個好用的工具那就是 editor tool bar,幫你省下製作 hyperlink 的時間,會自動幫忙編號,如果沒有 SyntaxHighlighter 需求,我個人是推薦用 WP-Markdwon。
[Read More]用 gofight 來測試 golang web API handler
身為一位後端工程師,如果專案初期階段不導入測試,等到專案越來越大時,您就會發現,解了一個 bug,又產生好多個額外 bug,讓產品一直處於不穩定狀態。後端最主要提供前端或手機端 RESTFul API,所以今天來介紹一套 gofight 工具,用來測試 Golang 的 http handler,讓開發者可以送 Form, JSON, Raw 資料,後端處理後,可以拿到 response 資料,透過 Testify 來測試資料是否符合需求。
目前大部份的 Golang Web Framework 都可以透過 gofight 來測試,除非作者有把 ServeHTTP 改成自己定義 Response,不然基本上都是可以支援的,我自己測試了 Gin, Mux, HttpRouter 都是可以使用的,底下來看看 gofight 該如何使用。
Docker 實用指令及 Best Practices Cheat Sheet 圖表
在網路上看到有人提供 Docker 的 Cheat Sheet,裡面整理了很多常用的指令,建議剛入門 Docker 的初學者務必把底下指令學完,底下就是 Cheat Sheet
container 放大架構圖
基本指令
下載映像檔
| |
啟動或關閉 container
| |
建立 -> 啟動 -> 執行指令 (-ti 參數)
| |
建立 -> 啟動 -> 執行指令 -> 刪除 container (-rm 參數)
用 Docker 取代 Laravel Homestead 開發環境
新手第一次接觸 Laravel,我都會推薦使用 Homestead 來解決開發環境的困擾,但是我發現 Homestead 對於第一次接觸 Virtualbox 及指令的初學者,設定還是比較複雜,造成很多新手光是在這邊就卡關了,有沒有什麼辦法可以解決這煩人又複雜的 Homestead 設定,剛好今天在 Github 上看到 laraedit-docker 專案,此專案是把 Homestead 轉換成用 Docker 來跑,這樣只要您的環境有支援 Docker,就可以快速設定好環境含 MySQL, Redis …等
[Read More]為什麼我選擇使用 Laravel Framework?
根據上次寫了一篇如何選擇 Web Framework,本篇寫了為什麼我選擇 Laravel 這套 PHP Framework。底下是對於 Laravel 我選擇的一些看法,大家可以參考看看。要選一套好的 frmaework 真不容易,要考慮團隊成員技能,及後續的教育訓練等 …
Golang 發佈 1.6 正式 Release
今天 golang 正式發佈 1.6 版本,趕快到官方網站下載使用,如果你是用 gvm,直接下 gvm install go1.6 即可。golang wiki 提供了很多 Package Management Tools,可以隨意選一套來使用。底下整理幾點 1.6 的改變:
重大改變
- 正式支援 HTTP/2 協定,跑 https 會預設啟動 HTTP/2
- Go 1.5 介紹了實驗性質的 vendor,在 1.6 還是會支援
GO15VENDOREXPERIMENT變數,但是預設值為 1,在 1.7 會正式將此變數拿掉 - 預設用 cgo 來編譯分享 golang 指標與 C 之間溝通
- 支援 Linux on 64-bit MIPS 和 Android on 32-bit x86 架構
- 在 FreeBSD 上面預設使用 clang 而不是 gcc
效能議題
官方說無從比較,有些程式碼可能在 1.6 比較快,也有可能在 1.5 會比較快,但是在 garbage collector 上面 1.6 會比 1.5 好,前提是程式使用了大量的記憶體,1.6 版本也針對蠻多 package 做了 Performance 改善,提升了至少 10 % 喔 compress/bzip2, compress/gzip, crypto/aes, crypto/elliptic, crypto/ecdsa, 和 sort 套件。
[Read More]在 MAC OS 快速又簡單安裝 Docker 環境 – dlite
在 Mac OS X 底下安裝 Docker 服務不難,只需要到 Docker Mac 教學網站下載 Docker Toolbox,就可以使用 docker-machine, docker, docker-compose 等指令操作 Docker 服務。本篇提供另外一種工具,讓 Mac 開發者可以快速使用 Docker 服務,就是這套用 Go 語言寫的 dlite 工具。
安裝方式
dlite 提供三種方式安裝
- 直接下載執行檔案 (推薦) (下載連結)
- 直接透過 brew 指令安裝:
brew install dlite - 開發者模式:
git clone專案,然後下make dlite產生執行檔案
請大家直接使用第一種方式安裝即可。
使用方式
安裝 dlite 需要使用到磁碟空間及記憶體,你可以動態指定 memory 使用量,或者是磁碟空間,詳細指令可以透過 dlite install -h 觀看
| |
可以看到指令預設會佔用 20GB 的磁碟使用量及 2GB 的記憶體,所以安裝時可以調整成個人需求大小,安裝請用 root 使用者
Git tips: 更改 commit log 作者
在 Github 上面看到這 git-blame-someone-else 專案,用來隨時修改 commit log 作者,也就是可以任意改 commit id 內的 `Author` 欄位資訊,作者也相當幽默,直接拿此 commit id 改成 Linux 作者 Linus Torvalds。
使用時機
大家會問到什麼時候才會用到需要修改 commit 作者,以我自己的狀況為例,在團隊內開發新功能會直接開新的 Branch 來開發,完成後會進行 code review,此時原開發者目前正在忙其他專案,其他團隊成員就必須幫忙修改原先 commit 內容,通常我是直接建議透過 `git reset –soft HEAD^` 來更動原本 commit,而不是產生新的 commit,修改後作者就會變成自己,此時後這功能就派上用場了。
安裝方式
根據源專案是透過 root 權限,將執行檔丟到 `/usr/loca/bin` 目錄底下,但是我個人不建議用這方式,因為還需要 root 權限,要打密碼有點麻煩,我建議透過在家目錄建立 `bin` 目錄,並將此目錄加到 `$PATH` 變數內即可。
修改 .bashrc,加入底下程式碼
提升 npm install 安裝速度
npm 是 Node.js 套件管理模組,相信大家對 npm 不會很陌生,如果對於 npm 不了解的,可以參考阮一峰寫的這篇文章,今天要來探討的是如何提升 npm install 的安裝速度,如果你正在嘗試 npm@3 版本,我建議可以先換到 npm@2 的版本會比較快(為什麼呢?底下有數據會說話)。Github issue 上也蠻多速度上的討論,然而前幾天有網友發表一篇關掉 progress 提升不少速度,實際上我們可以拿專案來測試 npm@2 及 npm@3 的速度看看。
如何選擇 Web Framework
現在各大語言都有很多 web framework 可以選擇,上週整理自己對於 Web Framework 的一些原因及考量,總共整理 12 點,給大家參考看看
- 使用情境
- 軟體架構
- 主機部署
- 安裝及開發
- 學習曲線
- 核心功能
- 資料庫 ORM
- 前端開發
- 測試
- 文件
- 社群活動
- 團隊合作







