C# 解析 Markdown Front Matter
前陣子試了在 ASP.NET Core 網站即時顯示 Markdown 文件,如此可用 Visual Studio 寫 Markdown,跟網站一併部署就直接轉網頁,不用依賴 Hugo 之類的第三方工具,對線上說明之類的網站附屬文件挺方便。順著這個概念繼續擴充,我還想自動產生文件清單,用來管理公告、... Read More
View Article再探 Double 浮點數等於地雷
同事分享地雷一枚。先踩到 ODP.NET OracleDataReader 數字型別對映陷阱,未指定 decimal 交由 ODP.NET 自由決定,某個 NUMBER(10, 2) 欄位被轉成 double,生出 1519222.6099999999 這種浮點數字,之後再陷入數字到底是 .6099... Read More
View Article【茶包射手日記】ASP.NET 改用 Form 驗證反而引發 AD 登入錯誤
遇到近年來數一數二的吊詭茶包。 有個 ASP.NET 測試網站近日由 Windows 整合驗證改為 Forms 驗證,卻在使用者瀏覽網頁時噴出大量 4625 登入失敗事件觸發警報。測試網站屬於另測試網域,用來登入帳號則是當時操作者本機的正式網域帳號,這行為似曾相似,在 AD Domain Contr... Read More
View ArticlePowerShell 小品 - 變更 AD 密碼
很久沒寫 PowerShell,剛好有個需求暖暖身。 要變更 AD 密碼,最無腦的做法是找台 Windows 用該 AD 帳號登入,按 Ctrl-Alt-Del 然後點「變更密碼」: 那有沒有辦法不要切換 Windows 登入帳號,直接變更其他 AD 帳號的密碼?(例如:小編持有多個公用帳號的密碼... Read More
View Article【茶包射手日記】Memory Leak 調查之 Paged Pool 分析
參與一宗記憶體洩漏案件調查,過程學到新工具與新技巧,特筆記備忘。 問題網站平日之正常記憶體使用量依尖峰離峰維持在 40% ~ 10% 週期性起伏,但在某次 Windows Update 後,記憶體在兩三天內一路上升到 90% 以上,最後網站因記憶體不足當機。查看工作管理員,記憶體用近 16G,IIS... Read More
View Article【答客問】Visual Studio 使用 /appName URL 偵錯網站
從事古蹟維護的讀者來訊,某個使用 VS2010 維護的舊專案,原本偵錯時 URL 的格式為 ℎttp://localhost:12345/AppName/test.aspx;改用 VS2019 之後,偵錯 URL 變成 ℎttp://localhost:12345/test.aspx。 因為舊專案裡... Read More
View Article找出資料夾或檔案被誰鎖定 - 硬漢解法
Windows 的檔案有時會因被鎖定無法修改刪除,新版 Windows 很貼心,警示訊息會顯示鎖定來源:補充案例 但偶爾會遇到「無法完成動作,因為資料夾或資料夾中的檔案已在其他程式開啟」這種鎖定來源不明的狀況: 這種狀況用嘗試一個個檔案更名或刪除的土法子有時能找到兇手,或者也有解決這種問題的專門... Read More
View Article.NET / PowerShell 範例:收發含 Cookie 的 HTTP Request
遇到傳送 HttpRequest 時需附帶 Cookie 的需求,順手整理 .NET Framework、.NET 6、PowerShell 範例供未來參考。 模擬情境為網站有 AutoRedirect.aspx 及 ShowAndSetCookie.aspx 兩支程式,前者單純導向 ShowAnd... Read More
View Article【茶包射手日記】走針的 Windows
手邊有幾台 Windows 測試主機出現系統時間不準的狀況。主機隸屬同一 AD 網域,理論上會自動向 DC 校時,但這幾台主機時鐘有快有慢,彼此甚至差三分鐘以上(最多到 207 秒),對照 Log 記錄或資料寫入時間變得極為困難,讓我沒法置之不理。 撈過界進場研究了一下,學到新知識,也解決了問題。 ... Read More
View Article魚缸空氣幫浦噪音改善
魚缸的空氣幫浦三年前修過一次,當時打氣變得軟弱無力,拆開看鼓風帽龜裂以為找到原因,但換掉問題依舊,最後把止逆片翻個面神奇地修好了。 最近幫浦打氣震動聲愈來愈大,大到讓人煩躁的地步,新品一顆才三百塊出頭,這又讓我為了該花時間修理還是乾脆買新的猶豫不決。想想,省錢與惜物環保還是其次,修好東西的成就感無價... Read More
View Article閒聊 - 重構的勇氣
想像一下,你奉命要為某個祖傳系統(Legacy System)增加功能匯入新單位資料,追到資料庫卻見到以下畫面。憤怒指數從 1 到 10,你給幾分? 追進程式,你發現每個函數內容幾乎一模一樣,只差在 WHERE OrgId = 'nnnn' 中的單位代碼,憤怒指數又會到幾分? 年輕的我,會判定此... Read More
View Article停用不安全密碼套件(Cipher Suite) - 使用 IISCrypto 與 PowerShell
資安標準愈來愈嚴格,行之有年的做法現在可能被視為不夠安全。以 TLS 加密為例,加密協定中有所謂的 Cipher Suite (密碼套件),像 SSL Labs 檢查報告便會指出網站目前用的 TLS Ciper Suite 哪些強度不夠:(資安界走模範生風格,考 99 分也要打手心呢) 處理 TL... Read More
View Article【茶包射手日記】IE11 User Agent 問題
IE 都更持續進行中,現階段有部分網頁需同時支援 IE、Edge、Chrome,甚至要區別 IE 文件模式決定回傳 HTML5 或是 IE Only 內容。 目前會遇到的 IE 清一色都是 IE11,只差在會切換不同的文件模式(如下圖),而文件模式主要由 HTML 中的 <meta http-... Read More
View Article【笨問題】Visual Studio IIS Express 32/64 位元模式設定
用 VS2022 偵錯一個 ASP.NET MVC 舊專案,F5 偵錯時噴出經典錯誤:System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception ... Read More
View Article【茶包射手日記】清理內含 750 萬個檔案的資料夾
調查一起 C 槽空間莫名消失的茶包,發現踩到 ManageEngine Desktop Central, MEDC 的地雷,軟體出錯在 C:\ProgramData\Microsoft\Crypto\SystemKeys 塞了超過 750 萬個私鑰檔案,檔案大小合計約 7G,但因空間配置以 4K 為... Read More
View Article防止 Edge/Chrome 在頁籤開啟 PDF
IE 時代即將劃上句點,客戶端近期已開始改用 Edge,甚至連 PDF 也改為預設用 Edge 開啟 (註:依之前的經驗,某些 PDF 文件用 Edge/Chrome 開啟會有字型問題,有時仍得依賴 Acrobat Reader)。 IE Only 網頁經過拉皮翻修,多能順利在 Edge 檢視,但過... Read More
View Article你可能不知道的 NTFS 檔案佔用磁碟大小 (Size On Disk) 原則
資料夾狂塞 750 萬個檔案的案例中,之所以東窗事發是因為清查磁碟空間發現帳面的檔案大小總和跟剩餘空間對不起來,最後追出一個擁有 750 萬個小檔案(958 Bytes)的資料夾,檔案大小合計 7G,但實際用掉 30G,理由是 NTFS 配置空間會以 4KB 為單位,若資料少於 4KB,剩下的空間無... Read More
View Article分析 Windows 磁碟空間不足的正確姿勢
Windows 在磁碟空間低於 10% 時會亮紅燈警示,找出並清除佔用空間檔案是老司機們的必備技能,理論上用左手都能完成。應該有不少人跟我一樣,採用的 SOP 是用 WinDirStat 或 du 掃瞄,找出佔空間的檔案刪除或搬走,空間就回來了。 不過,處理 750 萬個檔案事件的過程,意外學到一些... Read More
View Article程式範例 - 以全螢幕瀏覽器視窗檢視 PDF
事發總有原因,這段程式與 IE 轉 Edge/Chrome 有關。 上回提到因為 Edge/Chrome 都支援用瀏覽器顯示 PDF,若在 window.open() 新開視窗用 <a target="_blank"> 開啟 PDF 連結,PDF 會開在底下瀏覽器的新... Read More
View Article使用 C# 呼叫 Chrome 批次產生網頁快照
寫了一個依據 URL 清單連網頁存快照的小程式,感覺挺實用,稍加修改可衍生有趣的批次作業或自動化應用。放上 Github,方便將來有類似需求 clone 下來當起手式。 程式本身沒什麼了不起,網頁轉圖片靠 Headless Chrome,C# 操作 Chrome 是透過 Puppeteer Shar... Read More
View Article