Category: .net

這年頭,多重要素驗證(Mutli-Factor Authentication, MFA)幾乎已成系統安全管控的基本要求,除了帳號密碼之外,使用者必須再提供手機簡訊、身份驗證 App、指紋/瞳孔/臉部識別、IC 卡、USB Key... 等第二項驗證資訊才算登入成功,相較過去密碼一旦外流就被整碗端走,...

昨天提到 Polly 的 Circuit Breaker,研究後發現比想像複雜,寫篇筆記備忘。 Circuit Breaker 概念類似電路系統的熔斷開關或保險絲,能在電流過大時切斷電路,避免持續通電釀成更大災害。套用在軟體系統上,是在累積指定錯誤次數後先一段時間暫停執行,直接告知暫停服務好過讓使用...

從網站下載大檔案,若下載一半中斷,從中斷處繼續下載已是所有瀏覽器的基本功能。其背後原理是透過 HTTP 1.1 協定加入的 HTTP Accept-Ranges 及 Range 規格,網站透過 Response Header Accept-Ranges: byte 表明自己接受分段下載;客戶端發送 ...

【前言】 這是一次難得的辦案經驗。 上週處理 Out Of Memory 茶包在爬文時查到好幾篇文章提到 「.NET 32bit 程式的可用記憶體上限是 800M」,與我所知的 1.6G 明顯不符,但官方文件卻指證歷歷,在我心中成為不解之謎。 想挖掘真相,但發現自己根基不穩技能不足,第一次為了破案去...

今天講另一個大家可能遇過的狀況:程式噴出 Out Of Memory 記憶體不足錯誤,也確信它用到大量記憶體,但打開工作管理員檢查,該程式的記憶體用量卻只有幾百 MB,看起來很平常。 要探討這個問題,先要用範例程式重現情境。 昨天文章最後有個持續建立大型 byte[] 物件耗光記憶體的程式範例,32...

昨天文章提到,85000 Bytes 以下的物件會建立在 SOH、超過的大型物件則會建立在 LOH。LOH 與 SOH 的一項重要差異是 - LOH 會隨 G2 回收回收不用的物件記憶體,但不會進行壓實(Compact,搬移物件讓物件緊密相鄰),因此被清掉物件會形成空洞穿插在留存物件間,空洞可重複利...

前幾天解決完非典型 Out Of Memory 茶包,感覺自己雖然寫了這麼多年 .NET,對記憶體管理的了解仍偏虛浮,只知道背後有個強大的 GC 會負責找記憶體空間放物件,物件不用了會自動回收空間,完全不用我們操煩。需要物件時 new 一下,不要殘留變數、屬性指向超出變數範圍(Scope)的物件,....

幫忙看了一個 Excel 批次匯出作業記憶體不足錯誤,是我之前沒見過的樣態,增廣見聞之餘順手記錄一下。 問題情境是有個能批次匯出 Excel 報表檔的 Windows Form 程式,負責查詢資料庫後以來源代碼為單位,一個來源匯成一個 Excel 檔案,程式以 VB.NET 撰寫 (哈,好久沒看到你...

關於資料庫是否該用 Guid 當 Primay Key,正反雙方各有擁護著,使用 Guid 的好處是不需依賴資料庫即可取得唯一識別碼,有助提高系統設計彈性,同時 Guid 無法被猜測具安全防護效果;缺點則是不利人工查詢、消耗儲存空間及當作叢集索引(Clustered Index) 時易導致索引破碎(...

研究 SQL NEWSEQUENTIALID() 時引發一個疑問,Guid 在 .NET、SQL 的排序方式是否相同?是依據什麼規則決定大小? 答案是 .NET 與 SQL Server 排序規則不同。 例如隨機產生三個 Guid,在 .NET 的排序為 87e4077c-a7b7-48d5-b1...

這兩天處理了一宗 ASP.NET 3.5 程式無法連線另一台網站的案例。 案件摻雜了網路環境問題,解決掉一個網路設備設定錯誤後,得到 IE 連 HTTPS 可通但 .NET WebClient / PowerShell Invoke-WebRequest 無法連線 HTTPS 的結果,此時我卻發生空...

上週聊到中文點陣字型,年輕同學們可能沒啥感覺,但經歷過 DOS 時代的老人隔了幾十年後再摸到老東西,滿滿的回憶呀,感受格外強烈,本週就繼續在其中找樂子。 上回說到我沒找到明確授權且不是 GPL 的中文點陣字型(Open Source 沒問題,但真心不喜歡被 GPL 掐住脖子的感覺),我打算用思源黑體...

開發小工具時,把相依的 DLL 包進單一 EXE 是很有用的技巧,如此使用者只需複製單一檔案到特定目錄或桌面便能執行,省去跑安裝程式或建立資料夾放入 EXE + DLL 的麻煩。 要達成這個理想,早期我是用 ILMerge 實現(參考:Visual Studio編譯小技巧:工具程式一檔搞定),但實務...

在 Windows 刪除網路資料夾目錄時偶爾會遇到 Thumbs.db 被檔案總管鎖定造成無法刪除: Thumbs.db 是 Windows 用來儲存照片、影片縮圖的系統檔案,以前會散落在包含圖片、影片的資料夾,檔案總管檢視資料夾時會用到,等看完要刪除該資料夾時便會因 Thumbs.db 檔案被鎖...