Posts
Hugo - Build and Deploy With GitHub Actions
要使用 GitHub Actions 建置並部署 Hugo 到 GitHub Pages,先要切到 GitHub Pages Repository 下的 Settings/Pages 頁面,在 Build and deployment 的 Source 這邊選用 GitHub Actions。
搜尋使用 Hugo GitHub Actions。
這邊會帶出 Hugo GitHub Actions 的 Workflows 設定檔,該設定檔給的是用 master branch 去做設定的內容,預設也是存放到 master branch。如果是 master branch 合用可直接存檔,不合用也只能自行修改上傳到 git。
設定完後在 Actions 左半邊就會看到剛加的 Workflows
切到剛加的 Workflows,右側可選取 Branch 運行 Workflow。
運行後會看到列表產生了對應的建置與部屬的動作。
點進去可以看到建置與部屬動作的細節。
這邊要特別注意,若是 Hugo GitHub Actions 當初設定的不為 master branch,需在 Settings/Environments 這邊設定 github-pages。
將指定的 branch 加入允許部署 GitHub Pages。
不然在 Workflows 建置與部屬時會看到下面這樣的失敗畫面。
read morePosts
Hugo - Add Content
Hugo 站台建立完後可以開始為站台加入文章,透過 Hugo 的 new content 命令,帶入文章檔名建立 Hugo 文章。
hugo new content posts/[postfilename].md 開啟建立的 Hugo 文章檔案進行文章的撰寫。
vim content/posts/[postfilename].md 文章撰寫完成可透過 Hugo 的 server 命令,帶入 –buildDrafts 或 -D 參數啟動 Hugo 站台,表示文章在草稿階段也要呈現。
hugo server --buildDrafts hugo server -D 透過瀏覽器瀏覽 http://localhost:1313/ 即可看到 Hugo 站台運行後的樣子,Hugo 站台內會有剛撰寫的 Hugo 文章。
Link Quick start | Hugo
read morePosts
Hugo - Create a Site
Hugo 裝完後,首先需要先建立站台,透過 Hugo 的 new site 命令,帶入站台的名稱。
hugo new site [sitename] 建立完後進入站台目錄。
cd [sitename] 初始化 git。
git init 透過 git submodule 將 Hugo 的 ananke theme 加入站台。
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke 修改 hugo.toml 將 Hugo 站台套用 ananke theme。
echo "theme = 'ananke'" >> hugo.toml 本地將 Hugo 站台運行起來。
hugo server 透過瀏覽器瀏覽 http://localhost:1313/ 即可看到 Hugo 站台運行後的樣子。
Link Quick start | Hugo
read morePosts
Hugo - Install Hugo on MacOS
Hugo 在 MacOS 下可直接透過 Homebrew 安裝。
brew install hugo 安裝後可調用 Hugo 命令帶入 version 參數查閱 Hugo 版本,確認 Hugo 的安裝是否正確。
hugo version 後續 Hugo 命令使用有問題可調用 Hugo 命令帶入 –help 參數查詢 Hugo 命令的使用方式。
hugo --help Link macOS | Hugo
read morePosts
Decode JWT token with jq
使用 JWT token 免不了有時會需要解碼看裡面存放的內容,在可以連到外網的環境下,很多網站工具都可以滿足我們的需求,但若是在網路比較受限的環境下,就不能依賴於外網的網站工具了。
這時可考慮使用 jq 命令來做 JWT token 的解碼,使用方式如下:
jq -R 'split(".") | .[1] | @base64d | fromjson' <<< "$JWT" 像是筆者這邊拿了一組 JWT token。
將 JWT token 帶入指令,即可看到 JWT token 解碼後的結果。
jq -R 'split(".") | .[1] | @base64d | fromjson' <<< "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" Link Decode a JWT via command line
read morePosts
Generate self-signed certificates with dotnet dev-certs
dotnet dev-certs 提供 https 命令可供自產 HTTPS 開發憑證。
dotnet dev-certs --help 使用方式如下圖所示。
dotnet dev-certs https --help 最簡單的就是不帶任何參數直接使用 dotnet dev-certs 的 https 命令去產生並安裝 HTTPS 開發憑證。
dotnet dev-certs https 產生完可以用 dotnet dev-certs 的 https 命令加帶 –check 參數確認。
dotnet dev-certs https --check 狀態碼為 0 即表示成功。
echo $? 若要移除安裝的 HTTPS 開發憑證,可使用 dotnet dev-certs 的 https 命令並加帶 –clean 參數。
dotnet dev-certs https --clean 再次確認 HTTPS 開發憑證的安裝狀態。
dotnet dev-certs https --check 這時就會拿到狀態碼 6,表示並未安裝 HTTPS 開發憑證。
echo $? 如要匯出 HTTPS 開發憑證,可使用 dotnet dev-certs 的 https 命令,加帶 -ep 參數指定匯出的 HTTPS 開發憑證所要存放的檔案位置,加帶 -p 參數指定匯出的 HTTPS 開發憑證私鑰密碼。
read morePosts
gauth - Host Google authenticator server
要起 gauth 服務供二階段認證使用,可將 gauth 程式碼下載下來。
git clone https://github.com/gbraadnl/gauth.git 切換到 gauth 程式碼目錄。
cd gauth 安裝 gauth 所需的 npm 套件。
npm install 然後透過 node 將 gauth 服務起起來。
node server 服務起來後用瀏覽器連至 8080 port,即可開始使用 gauth 來做二階段認證。
http://localhost:8080/ Link GitHub - gbraad/gauth
read morePosts
NuGet - Create and publish a package with dotnet CLI
要建立 NuGet 套件,需先確認專案檔內有設計 NuGet 套件所需之資訊,像是套件識別碼、版本、作者、公司等。
<PackageId>AppLogger</PackageId> <Version>1.0.0</Version> <Authors>your_name</Authors> <Company>your_company</Company> 然後可用 dotnet pack 命令將套件打包。
dotnet pack 或是在專案檔內加設定 GeneratePackageOnBuild,讓專案在建置時自動產生。
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> 然後確定 NuGet 帳號已註冊且取得 API key。
再調用 dotnet nuget push,帶入 NuGet 套件檔的位置及 NuGet API key。
dotnet nuget push $package -k $key -s https://api.nuget.org/v3/index.json NuGet 套件即會被上傳至 NuGet server 上。
Link 使用 dotnet CLI 建立及發佈 NuGet 套件 | Microsoft Docs
read morePosts
MongoDB - Creating a MongoDB replica set in single Docker container
透過 Docker 去起 MongoDB replica set,多半網路上的做法都是用多個容器去做,這邊筆者考量測試與開發上的便利性,試著用一個容器去起 MongoDB replica set。
Docker compose 檔如下:
version: '3' services: mongo: image: mongo:4.2.2 container_name: mongo ports: - "27017:27017" - "27027:27027" - "27037:27037" volumes: - ./mongodb/data:/mongodb/data - ./mongodb/log:/mongodb/log - ./mongodb/mongod.yml:/mongodb/mongod.yml environment: # provide your credentials here - MONGO_INITDB_ROOT_USERNAME=root - MONGO_INITDB_ROOT_PASSWORD=pass.123 command: sh -c ' mkdir -p /mongodb/data/db1 /mongodb/data/db2 /mongodb/data/db3 /mongodb/log/db1 /mongodb/log/db2 /mongodb/log/db3 && mongod --config /mongodb/mongod.yml --port 27017 --dbpath /mongodb/data/db1 --logpath /mongodb/log/db1/mongod.log && mongod --config /mongodb/mongod.yml --port 27027 --dbpath /mongodb/data/db2 --logpath /mongodb/log/db2/mongod.
read morePosts
dotnet-counters - Monitor specified process
dotnet-counters 可用來監控 .Net Core 的 Process,像是這邊筆者準備了一份簡單的程式想要觀察其 CPU 與 Memory 這些資源上的變化狀況。
將程式運行起來。
dotnet run 運行起來後可用 dotnet-trace 查詢 Process。
dotnet-trace ps 接著就可透過 dotnet-counters 監控指定 Process 的資源使用狀態。
dotnet-counters monitor --refresh-interval $refreshInterval -p $processId 像是這邊剛剛查閱到了 dotnet run 起了兩個 Process,我們可以帶入 Process Id 監控。
dotnet-counters monitor --refresh-interval 1 -p 35603 dotnet-counters monitor --refresh-interval 1 -p 35608 dotnet-counters 會將指定 Process 的資源使用狀況依照指定的時間更新,直至程式結束。
Link Debug high CPU usage - .NET Core | Microsoft Docs
read more