RSS Email Twitter GitHub Dribbble LinkedIn Facebook Instagram YouTube Pinterest Reddit icon menu

Cody's 探索日誌

東摸西摸,十分好奇

PV: / UV:

Macbook 2019 Big Sur - vscode Terminal 卡頓

這陣子都忙著工作,堆積了一堆文章還沒釋出,看來過年期間是一段輸出文章的好時間 不過工作優先就是了,平常使用的 Macbook 更新 Big Sur 之後,就造成了 Terimnal 卡頓的問題 環境 Model: MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) OS: Big Sur 11.1 Fix 執行完指令後,完全關閉 vscode 後,再啟動使用 貌似有些人無效,不過對我來說是有效的 1 codesign --remove-signature /Applications/Visual\ Studio\ Code.app/Contents/Frameworks/Code\ Helper\ \(Renderer\).app Ref Github vscode - Issues

Yubikey 透過 SSH 公鑰認證登入

初期買了 Yubikey 只有單純用來做 OTP,2FA 的認證,後來想到應該是可以透過 Yubikey 進行金鑰登入 後來網路上確實有人這樣進行,所以就趕快拿自己的 Yubikey 來測試看看 Info Terminal: iterm2 / zsh / oh-my-zsh Hardware Secure Key: YubiKey 5 NFC Require 先安裝一些 Yubikey 的相關套件,還有 GPGTools libyubikey yubikey-personalization yubico-yubikey-manager yubico-yubikey-personalization-gui gpgtools 手動安裝 1 2 3 4 brew install libyubikey brew install yubikey-personalization brew install yubico-yubikey-manager brew install yubico-yubikey-personalization-gui 創建金鑰 安裝好上面的工具之後,將 Yubikey 插入 Macbook 開始進行操作 改變 Yubikey 模式 Yubico Blog - common modes 參照資訊 -m0 HID (OTP) mode -m1 CCID (OpenPGP only – no OTP) – warning – you cannot use ykpersonalize after this setting!

微服務框架 go-micro (一) grpc

學習微服務框架是為了更了解各種架構對不同專案上的適應性 雖然並不是每個專案都適合為服務,但是也需要先熟練各種兵器好應對更種情況 介紹 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 進行傳輸

學習 gRPC - Go

是在了解微服務的同時,得知 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= ".

解決 dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib

要更新文章時,剛好遇到一個小問題,有一個 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/MacOS/Windows

偶爾需要一大檔案進行傳輸測試,但礙於手邊沒有檔案 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

Linux shell 的圖形互動式介面 - Dialog

最近在寫一些純文字介面的工具,但是在操作上對非資訊人員還是不夠直覺 想知道怎麼開發類似於 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 - Go

雖然專注在後端技術上,對前端只有初學者左右的程度,但還是多少對前端的技術很感興趣 而且這個技術對後端相對方便的,如果可以在前端技術上有更多精進的能力,多少可以解決更多問題 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