學習微服務框架是為了更了解各種架構對不同專案上的適應性 雖然並不是每個專案都適合為服務,但是也需要先熟練各種兵器好應對更種情況 介紹 go-micro 是一個使用 go 實現的微服務框架,可以方便幫助 go 進行微服務的開發
主要功能 服務發現 平衡負載 Client/Server Pub/Sub gRPC Require Install 安裝工具
1 2 3 4 go mod init . go get github.com/micro/micro/v2@v2.4.0 go get -u github.com/golang/protobuf/protoc-gen-go@v1.3.0 go get -u github.com/micro/protoc-gen-micro/v2@v2.3.0 mod version 這邊遇到了一些麻煩的狀況,各個版本的相依性很高,不同版本搭配可能造成錯誤
所以在這邊提供的以下的版本是確定可運行的
1 2 3 4 5 6 7 8 go 1.14 require ( github.com/golang/protobuf v1.4.2 github.com/micro/go-micro/v2 v2.9.1 github.com/micro/protoc-gen-micro/v2 v2.3.0 // indirect google.golang.org/grpc v1.26.0 ) Simple 我試著使用各種寫法來實現簡單的範例
使用 go-micro 進行服務發現,再透過 grpc 進行傳輸
是在了解微服務的同時,得知 Go 並且同時聽聞了 gRPC 所以現在來學習使用 gRPC,看看 gPRC 到底是哪裡特別 Require 首先需要安裝 gPRC 工具,撰寫好 gPRC 的 pb 文件之後,就能透過 protoc 轉換成 go 文件進行使用
1 2 go get -u google.golang.org/grpc go get -u github.com/golang/protobuf/protoc-gen-go 目錄 此次練習的目錄結構
. ├── go.mod ├── go.sum ├── proto │ └── hello.proto ├── rpc │ └── hello.pb.go ├── client │ └── main.go └── server └── main.go 撰寫 Proto 撰寫 proto 定義文件,此為官方文件 go - quickstart
proto3 及 proto2 的程式文法不同,所以版本注意
syntax = "proto3"; option go_package= ".
要更新文章時,剛好遇到一個小問題,有一個 dylib 未加載、找不到 使用 firebase 時出現一下錯誤,害我楞了一下
1 2 3 dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib Referenced from: /usr/local/bin/node Reason: image not found 根據 Google 上,大大分享的方法是…重裝即可
1 2 brew uninstall node brew install node Ref 解决报错dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
偶爾需要一大檔案進行傳輸測試,但礙於手邊沒有檔案 Linux 透過以下指令可以快速產生一個 1G 的空檔
1 dd if=/dev/zero of=./1G_File bs=1M count=1024 如果要更快的產生方式,可以透過 seek 略過內容到指定大小的終點位址
1 dd of=./1G_File bs=1 count=0 seek=1G MacOS 使用 makefile 就能輕鬆辦到
1 2 3 # mkfile -n size[b|k|m|g] filename mkfile -n 1g 1G_File Windows 透過以指令的方式,在 cmd 鍵入以下指令
1 2 3 # fsutil file createnew <file_name> <file_size_in_kBs> fsutil file createnew 1G_File 1073741824
最近在寫一些純文字介面的工具,但是在操作上對非資訊人員還是不夠直覺 想知道怎麼開發類似於 BIOS 的文字操控介面,但是礙於不曉得相關的資訊 後來終於讓我查到關鍵字 Text-based user interface/TUI,然後選擇了一個看起來比較靠普的 Dialog Linux Dialog 是可以在 Terminal 上快速建立圖形交互介面的工具,功能十分強大、方便
撰寫 Shell Script 再搭配 Dialog 可以讓人比較直覺得操作,減少操作上的不便
雖然現在比較多使用網頁進行交互操作,但是可以不必特地架設網頁伺服器,減少一些不必要的問題
安裝 看起來 Dialog 是還有持續在維護,Mac 透過 brew 安裝的版本甚至是 20200327 的版本
可見還是有許多人喜愛以這種風格呈現操作介面
Mac 1 2 3 4 brew install dialog dialog --version > Version: 1.3-20200327 Ubuntu 18.04 1 2 3 4 apt-get install dialog dialog --version > Version 1.3-20171209 CentOS 6/7 1 2 3 4 yum install dialog dialog --version > Version 1.
雖然專注在後端技術上,對前端只有初學者左右的程度,但還是多少對前端的技術很感興趣 而且這個技術對後端相對方便的,如果可以在前端技術上有更多精進的能力,多少可以解決更多問題 WebAssembly 簡介 WebAssembly 是一個以二進制表示的低階語言,可以在瀏覽器上運行,由於是二進制所以運行速度肯定會快點
特點則是說可以接近原生的效能,我個人觀點則是可以突破某些狀況下的限制和效能的提升,所以也有可能變慢囉!要謹慎使用
並且 2019 年時 WebAssembly正式成為W3C推薦的網頁應用標準
WebAssembly 與 JS 共存,輔助加強 JS 產生更多的應用並提升性能
目前可以使用 C/C++、Go、Rust 透過 Emscripten 編譯成 WebAssembly
WebAssembly - Go Go 1.11 開始支援 WebAssembly 可以透過 Go 來進行開發
首先需要將 wasm_exec.js 複製到需專案目錄中,稍候需要 js 調用 wasm 檔案
1 cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" . Sample 寫個簡單的程式,先練練手培養的感覺
1 2 3 4 5 6 7 package main import "fmt" func main(){ fmt.Println("Hello, WebAssembly!") } 然後對此進行編譯,參數則是 GOOS=js 的 GOARCH=wasm,稍候就可以透過 js 來呼叫 wasm
最近買了 Raspberry Pi 本來是想當成電視盒來用,整合一些看個廣告就能正版免費觀看的影視 並且已經著手設定電視遙控器對應的操控訊號源,但是後來買了現成電視盒,家人用的比較習慣 但是 Raspberry Pi 買了都是買了,就先弄成 AP 讓它可以發揮它的價值 設備 Raspberry pi 4 - 4G RAM 準備 發現一個挺成熟的開源專案 RaspAP,有著完善的介面以及普遍的功能的整合
可以輕鬆透過這個專案來快速建理起 AP,接下來完全依照 https://github.com/billz/raspap-webgui 進行安裝
燒入 將 Raspberry Pi OS (32-bit) Lite 燒入至 SD 卡中,現在貌似開放可以透過 USB 進行開機
如果要耐用的話,還是 USB 比 SD 卡耐用,不然 SD 卡的損壞率貌似挺高的
1 2 3 4 5 6 7 8 9 10 11 # Show disk information diskutil list # Unmount the hard drive to be burned diskutil unmount /dev/diskN # Burn the hard drive sudo dd bs=1m if={IMG Path} of=/dev/rdiskN; sync # Burn Finnish diskutil eject /dev/rdiskN 更新 進行基礎的環境相依的 Package 進行更新
在自架的 FreeNAS 設備上監控主機狀態運行的過程 FreeNAS 本身的監控畫面,並沒有太好的監控便利性,老實說並不是那麼好操控 所以打算架設一個主監控,來方便閱覽每個環節的變化、服務的運行是否穩定、異常的預警告知 版本 Server FreeNAS: v11.3-U3.2 Data visualization Grafana: v6.7.4 Collector Prometheus: v2.17.1 Node_Exporter: v0.18.1 Prometheus 簡單介紹,是一套使用 Go 開發的開源系統監控報警框架,通過 HTTP 協議週期性抓取被監控組件的狀態
Installation 首先登入至 FreeNAS , 可以透過 SSH 登入 或 圖形介面的 Shell 操作
然後從 Github - Prometheus 下載 Linux - amd64 版本
1 2 3 4 5 6 7 8 9 10 11 12 cd /tmp/ # Download and Decompress wget https://github.com/prometheus/prometheus/releases/download/v2.17.1/prometheus-2.17.1.freebsd-amd64.tar.gz tar xvf prometheus-2.17.1.freebsd-amd64.tar.gz # Move execture file and config file cd prometheus-2.