Category: .net

現代 API 服務大都是靠 API Key 管控存取權限及計算費用,因此貌似亂碼的 API Key 字串必須妥善保管,若是落入賊人之手,對方有可能看光你的資料、替你發文、幫你交易,或是大方享用服務由你買單。例如就有駭客鎖定 OpenAI 的會員服務,掃瞄 Github 原始碼用 "sk-*...

我在一些系統通知信偶爾會發現類似以下文字內容,多半是事件的詳細資訊,突發奇想打算寫些小服務,偵測到特定類型或特定目標相關事件時觸發額外通知。之前我都把這種內容當成某系統才有的專屬格式,寫個 Regular Expression 抓出關鍵欄位能動就好,沒想過要完整解析。 CEF:0|Trend Mi...

我有個迷思。Parallel.For 或 Parallel.ForEach 有個 ParallelOptions.MaxDegreeOfParallelism 參數,可用來控制並行運算的工作數量,避免 Thread 數過多效能反而變差(延伸閱讀:從 ThreadPool 翻船談起),我的理解是如果我...

開會討論到一個系統需求,要從大量資料標註出特定類別,例如:呼叫端提交一百萬筆帳號,系統由資料庫查詢屬於該類別的帳號清單(假設有五萬筆),API 服務要在標記出這五萬筆並傳回結果。 由於帳號具敏感性,為進一步降低資訊外洩風險,既然只要比對相符,我提議傳入帳號雜湊值取代帳號本身,感覺一定比傳明碼安全。不...

前情提要:SCH (Self-Contained Html) 單檔 HTML 文件提供密碼保護功能,做法是「用密碼字串 SHA256 雜湊當金鑰加隨機 IV 對內容做 AES256 加密」,但因解密會在瀏覽器執行,JavaScript 端解密邏輯是公開的祕密,有心人寫支程式就能暴力破解。 而我自己寫...

早上提到我的 SCH (Self-Contained Html) SideProject,文件保護是「用密碼字串 SHA256 雜湊當金鑰加隨機 IV 對內容做 AES256 加密」,但因解密會在瀏覽器執行,JavaScript 端解密邏輯是公開的祕密,有心想破解的人,寫支程式用不同密碼嘗試解密,就...

前陣子怒讀一波演算法入門書,而排序是每本演算法書永不缺席的章節:Bubble Sort、Selection Sort、Insertion Sort、Heap Sort、Merge Sort、Quick Sort... 多不勝數(維基百科整理的更多)。看完這一堆排序演算法不免好奇:那 .NET 的 A...

前天說到提醒上班打卡的小程式,有讀者提到:下班關機時也很需要打卡提醒! (不過該個案為按完關機鈕,立刻關上螢幕瀟灑轉身離開... 灑脫至此,所有防呆機制望塵莫及。) 關機或登出時提示尚有未儲存修改,允許使用者取消關機或登出回桌面存檔的做法很常見,像是 Word、Notepad,連小畫家都有,儼然已成...

前陣子有支模擬面試 YouTube 影片引發討論,不少讀者認為,連基本 BFS 演算法跟 Big O 都不熟,在真實世界的程式面試必死無疑。 雖然在資訊業打滾了幾十年,我因為不是本科系,在學校沒學過資料結構跟演算法這些東西(這對資訊本科生屬肌肉記憶等級吧),沒正式學過 BFS/DFS,學習及寫程式...

.NET 有個效能調校技巧是透過 ThreadPool.SetMinThreads() 設定 ThreadPool 的最小工作 Thread 數,這個做法為什麼能改善效能?何時有效?這篇文章會用實驗來理解與驗證。 當程式需要多工執行大量工作,除了自己弄 Queue 建執行緒,更簡便的方法使用 Thr...

在某些特殊情境下我們會想將 .NET dll/exe 反組譯成 CIL,或許是想研究 .NET 編譯行為,或許是要魔改無原始碼程式搞暴力破解。總之,.NET Framework 時代有 IL 反組譯及組譯工具 - ildasm.exe、ilasm.exe,安裝 Visual Studio 後開個 D...

昨天介紹了 POSIX 參數慣例,它是主流 CLI 工具一致遵守的參數語法規則,以 git 或 dotnet 為例,指令工具要能指定動作命令,選項名稱支援 --long-option-name 或單一字元 -o 兩種表示法,選項可接參數值 (--verbosity n)或可加可不加,參數選項可自由調...