在 linkit smart 7688 寫 golang

7688_7688duo

很高興 Mediatek 在去年推出 linkit smart 7688 開發版,你可以把 7688 想成是一台迷你型 Router,如果不來拿開發,也可以當家用 Router 也是不錯的。7688 讓開發者可以在上面寫 Node.js, Python 及 Native C,光是聽到 Node.js 就很興奮,用 JavaScript 控制硬體。但是本篇要介紹如何在 7688 執行 Golang 程式,其實不難,只要把 OpenWrt 支援 gccgolibgo 即可。底下步驟同步於我的 Github Repo

[Read More]

Docker 基礎介紹與實戰

docker

在個人開發環境或者是部署上,Docker 已經是不可或缺的工具,尤其是團隊開發上,如何用 Docker 統一團隊開發環境,減少團隊成員浪費在環境建置及開發上互不影響,底下來看看投影片大綱:

[Read More]

在 WordPress 內寫 Markdown 語法

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 該如何使用。

[Read More]

Docker 實用指令及 Best Practices Cheat Sheet 圖表

在網路上看到有人提供 Docker 的 Cheat Sheet,裡面整理了很多常用的指令,建議剛入門 Docker 的初學者務必把底下指令學完,底下就是 Cheat Sheet 點我大圖 container 放大架構圖 基本指令 下載映像檔 1 $ docker pull image_name 啟動或關閉 container 1 $ docker [start|stop] container_name 建立 -> 啟動 -> 執行指令 (-ti 參數) 1 $ docker run -ti --name container_name image_name command 建立 -> 啟動 -> 執行指令 -> 刪除 container (-rm 參數) 1 $ docker run --rm -ti image_name command file system 及 port 對應 (-v 及 -p 參數) [Read More]

用 Docker 取代 Laravel Homestead 開發環境

docker

新手第一次接觸 Laravel,我都會推薦使用 Homestead 來解決開發環境的困擾,但是我發現 Homestead 對於第一次接觸 Virtualbox 及指令的初學者,設定還是比較複雜,造成很多新手光是在這邊就卡關了,有沒有什麼辦法可以解決這煩人又複雜的 Homestead 設定,剛好今天在 Github 上看到 laraedit-docker 專案,此專案是把 Homestead 轉換成用 Docker 來跑,這樣只要您的環境有支援 Docker,就可以快速設定好環境含 MySQL, Redis …等

[Read More]

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. [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 觀看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 $ sudo dlite install -h Usage: dlite [OPTIONS] install [install-OPTIONS] creates an empty disk image, downloads the os, saves configuration and creates a launchd agent Help Options: -h, --help Show this help message [install command options] -c, --cpus= number of CPUs to allocate (default: 1) -d, --disk= size of disk in GiB to create (default: 20) -m, --memory= amount of memory in GiB to allocate (default: 2) -s, --ssh-key= path to public ssh key (default: $HOME/. [Read More]

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` 變數內即可。 1 2 3 $ mkdir ~/bin $ wget https://raw.githubusercontent.com/jayphelps/git-blame-someone-else/master/git-blame-someone-else -O ~/bin/git-blame-someone-else $ chmod 755 ~/bin/git-blame-someone-else 修改 .bashrc,加入底下程式碼 1 2 3 4 # add bin folder to $PATH. [Read More]