GUID 叢集索引測試 2:索引碎片化分析與資料表虛胖問題
上篇我們觀察到用 GUID 做為叢集索引,INSERT 耗時較久且偶發慢到 4 ~ 6 秒的狀況。 依直覺索引碎片化的影響主要在於讀寫效能不佳(要走過更多資料分頁),但觀察容量計時我發現另一件有趣的事,同樣是一千萬筆資料,IntClustIdx 比 GuidClustIdx 多一個 BIGINT 欄... Read More
View Article取得部署 IIS 之 ASP.NET Core HTTP 500 錯誤細節
ASP.NET Core 有個預設行為,開發測試階段會顯示錯誤細節,包含錯誤訊息、Stack Trace 等資訊;當部署到 IIS 後,就只會顯示告知狀態碼為 HTTP ERROR 500,以避免程式資訊外洩形成資安風險: 嚴譯的系統會設計 Log 機制補捉及記錄錯誤,提供介面查詢或是後送 ELK... Read More
View ArticleGUID 叢集索引測試 3 - 觀察索引重組與索引重建對寫入動作的影響
接連兩篇談完 GUID 叢集索引會造成 INSERT 變慢以及資料表虛胖,簡單有效解決是另建 BIGINT 或 INT 自動跳號欄位當叢集索引,GUID 仍可做為 Primary Key。(參考:GUID Primary Key 資料庫避雷守則) 對上線運轉多年的現有系統來說,Schema 很難說改... Read More
View ArticleObsidian 匯出 PDF 之程式區塊顏色調整
Obsidian 內建程式區塊 Syntax Highlight 顯示: 但匯出 PDF 時有些文字顏色偏淺(例如:WriteLine、GetPercentile、JSON 的屬性名稱),對比不明顯,程式區塊的背景也淡了點: 研究了一下,PDF 輸出樣式可在 <vault-folder&g... Read More
View Article使用 .NET Git 程式庫 LibGit2Sharp 檔案不落地生成異動對照表
遇到一個小需求,想用 .NET 出一份檔案修改前後對照表,我心中最理想的方案是用 git diff + diff2html 產生 HTML 報表,省時省力又好看。 git diff 指令跟產生 diff2html 網頁技能是現成的,最不花腦的解決方法是用 .NET 將修改前後檔案雙雙寫成檔案,呼叫... Read More
View Article【茶包射手日記】FB 無法產生網頁預覽 (HTTP 418 - 我是一個茶壺)
幫忙查了一個 FB 相關問題。 一般我們在 FB 貼文輸入網址時,FB 會擷取網頁資訊帶出標題、摘要、預覽圖,這些資訊來自網頁 HTML 所埋的 og 標籤,例如: <meta property=og:type content=article> <meta property... Read More
View Article冷知識 - Window 資料夾「唯讀」屬性怎麼用?
同事問起 Windows 資料夾的唯讀屬性。經驗裡我只改過檔案的唯讀屬性解決無法覆寫問題,從沒想過去管資料夾唯讀與否,但檔案總管看資料夾確實有個唯讀設定,它是做什麼用的?有什麼效果? 經過實測,使用 attr +r 指令,設定唯讀後,資料夾照樣可以新增、覆寫及刪除檔案: 不過我注意到,檔案總管上的... Read More
View Article使用 dotnet user-secrets 儲存專案專屬秘密設定(API Key、密碼)
看程式範例學到用 .NET Secret Manager 儲存秘密設定(如 API Key)的小技巧。 參考文件:在 ASP.NET Core 的開發中安全儲存應用程式秘密 應用程式會用到的一些具機密性設定 API Key 等,存放在 appsettings.son 或自訂 JSON/XML 容易連... Read More
View Article.NET Secret Manager 安全強化 - 無腦加密版
昨天提到 .NET Secret Manager 機制,可取代 appsettings.json 或環境變數作為本機開發測試時的 ApiKey 或密碼保存容器,但美中不足是它用明碼儲存,檔案一旦外流便無險可守。我想應用 Secret Manager 的情境除了開發測試,也會用於在本機跑一些自用的 R... Read More
View Article.NET 小技巧 - 使用 PdfSharp / PdfSharpCore 合併 PDF、加浮水印
關於 .NET 用的開源 PDF 程式庫,先前介紹過 PdfPig,最近在看微軟 RAG 範例程式發現另一個程式庫選擇 - PdfSharpCore。 PdfSharpCore 是老牌開源專案 PDFsharp 及 MigraDoc Foundation 的 .NET 6+ 「跨平台」移植版,網路上... Read More
View ArticleTelerik PDF 處理範例:文件合併、加浮水印
昨天提到 .NET PDF 程式庫,事實上 Telerik 的許多程式庫(DevCraft, UI for ASP.NET Core, UI for ASP.NET MVC, UI for ASP.NET AJAX, UI for Blazor, UI for .NET MAUI, UI for X... Read More
View ArticleCoding4Fun - PDF 投影片兩張一頁排版列印
近年來愈來愈多的投影片會採用 PDF 格式提供,我想整理成一張 A4 紙兩頁,雙面列印,用 4 孔夾裝冊。每張投影片希望加上邊框,配合裝訂孔要單數頁右靠、雙數頁左靠,頁碼也依單雙頁放在右下角或左下角。 這需求有些龜毛,我猜有現成軟體或印表機功能可實現,但我實在懶得花時間找,加上前陣子剛學了 Pdf... Read More
View Article手機鋰電充電迷思:快充傷電池?只充八分飽能延年益壽?
滑到 YouTube 影片,大推用心實驗,一份實地測試解答我久懸心中的疑惑: 手機快充是不是比較傷電池? 養生模式(只吃八分飽,充到 80% 或 85% 就停)真能延年益壽? 實驗方法為準備 6 支 iPhone 12,開始前拆機測量起始電池容量。測試時在手機跑 App 將電量消耗到 5%,之後... Read More
View Article使用 Playwright 打造 HTML 轉 PDF 微服務
前陣子講到 .NET PDF 文件製作,讀者 fredli 提到 HTML 轉 PDF 缺乏 好用套件。在我心中,HTML 轉 PDF 首推微軟推出的 Playwright,可選擇 Chromium 引擎,不必擔心 HTML 支援不夠力或渲染邏輯不對(網頁用 Chrome 看不正常,錯的當然是網頁)... Read More
View Article黑盒子等級瀏覽器網路問題分析工具 - Chrome/Edge NetLog
NetLog Dump 是一個絕大部分人用不到的 Chrome/Edge 功能,其性質類似俗稱「黑盒子」的飛行記錄器。飛機的黑盒子通常會只會在空難或事故時派上用場,而查瀏覽器問題動用到 NetLog Dump,通常意味著你遇上魔王級的刁鑽茶包。 啟用 NetLog 的方法很簡單,在網址列輸入 edg... Read More
View ArticlePDFSharp 中文字體問題研究
讀者 GregYu 問到 PdfSharp 的中文支援問題。 直覺認為 PdfSharp 身為資深元件,使用者眾,字型支援應該很成熟,不會遇到阻礙才對。但實際一試,馬上學到一些魔鬼細節。 用以下範例重現問題: using System.Diagnostics; using MigraDoc.Docu... Read More
View Article閒聊 - 開源程式庫 XZ Utils 臥底下毒事件
本週開源界與資安界有則大新聞:程式庫 XZ Utils近期被植入後門 by iThome 特別讓人震驚是因為 XZ Utils 是 Linux 很基本很常用的壓縮程式庫,若真的被成功植入擴散到現存的 Linux 系統,後果不堪設想。而攻擊手法也很罕見,攻擊者假扮自願程式維護人員多年,於今年二月底才發... Read More
View Article閱讀筆記 - LLM 模型發展歷程基本知識
ChatGPT 帶起大型語言模型(LLM)熱潮,對程式開發產業帶來無法忽視的衝搫。有程式需求但不會寫?跟 ChatGPT 許願就有。一行行敲程式碼太慢?Github Copilot 知道你想做什麼,自動幫你寫完。C# 老鳥遇到適合用其他語言開發的情境,不需要抱著 .NET 硬幹,有 Github C... Read More
View Article印表機感光鼓更換經驗一則
前陣子 PDF 投影片排版列印文末提到我家印表機列印品質每況愈下,之前清過一次感光鼓解決黑點雜線問題,但列印成品顏色偏淡不清楚。 上回清理感光鼓學到「感光鼓屬消耗品,用久了可能需要更換」,但經驗不足無法判斷是感光鼓,理由是:印表機買了七八年但印量很少,剛滿兩千張,依規格感光鼓壽命有 12,000 張... Read More
View ArticleYT 筆記:向量資料庫概念科普
在 RAG 架構中,ChatGPT 等 LLM 之所以能回答專屬領域問題,其關鍵在於已事先將相關文件、影像、資訊消化後存進資料庫並建立索引,當使用者詢問時,先透過索引找到資料,再由 LLM 彙整查詢結果給出答案。 來源 文字甚至影像之所以能被搜尋,是因為它先經 Embedding 轉為量並存進向量... Read More
View Article