https://avatars.githubusercontent.com/u/6058558

程式狂想筆記

如何避免程式組 URL 出錯

前正子專案因為設定檔有人網址會多 / 導致程式一些狀況,公司有人有特別寫組語法方法,這邊我思考正常內建方法可不可以解決這個問題,怎麼沒有人寫好 Library 分享給別人使用?探討有什麼更好方式去解這個問題。 心智圖 mindmap (程式組 Url 方法) 操作 Url 方法 .Net UriBuilder 物件 Java Uri 物件 JavaScript URL 物件 設定 QueryString 方法 .Net NameValueCollection Java MultiValuedMap 非原生 JavaScript URLSearchParams .Net 實作方法 使用 UriBuilder UriBuilder 是一個用於建立和操作 URI 的類別,適用於需要動態生成或修改 URI 的場景。它的用途包括構建 API 請求、處理用戶輸入的 URL、以及在應用程序中動態生成鏈接。相較於單純使用字串來紀錄 URI,它有以下的優點: 安全性:UriBuilder 會自動處理 URI 中的特殊字元和編碼問題,避免了手動操作可能產生的錯誤。 1 2 3 4 5 6 7 8 9 UriBuilder uriBuilder = new UriBuilder { Scheme = "https", Host = "example.

Playwright 程式碼執行時發生記憶體不足錯誤

最近 .Net 排成程式發生 OOM,奇怪我該關閉程式都有做,但我發現我少一個變數少做 using,所以造成問題。 觀察 我發現有多個子程序沒有關閉,我們從docker top {container_id}可以觀察子程序。忘記這個指令也可以從top、ps aux去做觀察。因為我這個排程每 15 分鐘會跑一次,所以放個3天就會發生。我們可以看到cli.js沒有關閉。 1 2 3 4 5 docker top webcrawlerapi-webcrawlerapi-1 UID PID PPID C STIME TTY TIME CMD root 137707 137686 7 21:30 ? 00:00:04 dotnet WebCrawlerApi.dll root 137757 137707 1 21:30 ? 00:00:01 /app/out/.playwright/node/linux-x64/node /app/out/.playwright/package/cli.js run-driver root 137832 137707 2 21:30 ? 00:00:01 /app/out/.playwright/node/linux-x64/node /app/out/.playwright/package/cli.js run-driver 這裡搜尋到很多程序,我懷疑這些是不是殭屍程式,這邊 Google 找到 Docker 子程序會有殭屍程式問題,但最後跟那個沒有關係。 我的程式如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 _logger.

解決 Read-only file system 問題與系統掛載錯誤

最近遇到了一些系統問題。當我嘗試掛載 /dev/sdc1 (100GB) 到根目錄時,發生了一些問題,系統顯示為只讀文件系統。 Read-only file system 發生連串問題 Read-only file system 問題 當嘗試創建文件時,系統顯示為只讀文件系統: 1 2 user:~$ touch test touch: cannot touch 'test': Read-only file system 解決方法 在網路上找到解決方法,可以使用以下指令重新掛載根目錄為可讀寫模式: 1 sudo mount -o remount,rw / DNS 問題 在嘗試 ping Google 或進行 git pull 操作時,出現 DNS 錯誤: 1 2 3 4 5 6 7 8 9 ping google.com # ping: google.com: Temporary failure in name resolution git pull # ssh: Could not resolve hostname github.

如何尋找 TLS 中繼憑證和驗證憑證

最近在專案進行中,我發現 Ubuntu 上的 Flutter 嵌入式網頁中,發現空白頁面。經過檢查,發現是 nginx 沒有設定中繼憑證的問題。由於明天要進行 DEMO,而 MIS 可能無法聯繫到,我需要快速找到中繼憑證。我該怎麼做呢?第一次找到這個問題後,發現有好用的網站可以快速產生中繼憑證,這裡紀錄一下。

使用 .NET 實作 Azure Storage SAS 上傳檔案起手勢

這邊不詳細介紹什麼是 Azure Storage,這裡簡單介紹一下其組成部分,包括 storage accountContainerblob,如下圖所示。

https://user-images.githubusercontent.com/6058558/234599213-21ae8221-bd83-4287-806e-ed464fa61fba.png

詳細資訊可以參考Blob (物件) 儲存體簡介 - Azure Storage | Microsoft Learn

由於專案時間緊迫,我只拿到了 Azure Storage 的 ConnectionString,需要在短時間內完成上傳功能。以下是使用 .NET 實作 Azure Storage SAS 上傳檔案的步驟。

在 Ubuntu 上監控系統錯誤層級 Log 並發送 Discord 通知腳本

最近我在尋找一種方法,讓樹梅派能夠監控系統 log,並在出現錯誤層級 Log 時發送通知。我曾考慮過 Prometheus Alertmanager,但它似乎無法查看 Log。我也看過 Loki,它確實能達到我要的效果,但我不希望建立集中式 Log,因為樹梅派的儲存空間有限。我也考慮過 mtail,但它可能無法正確解析 Log 層級,所以我最終沒有選擇它。至於 openITCOCKPIT,雖然它需要安裝資料庫,但我認為這不適合在樹梅派上進行,儘管官方有提供安裝教學