Windows 設定多台 DNS 主機,第一台 DNS 無法解析時會改查第二台嗎?
聽同事說:某系統因需同時存取多個獨立 AD 網域(例如:DomainA 與 DomainB),故網卡設有多台 DNS,將 DomainA 及 DomainB 的 Domain Controller 都納入,因此能做到解析 xxx.domaina.lab 及 yyy.domainb.lab 兩種來自不... Read More
View Article依背景色決定文字顏色的正確姿勢 - W3C 標準
再來聊聊「依據背景色切換黑字或白字,確保文字明顯容易閱讀」這檔事。 過去我都用 Github Copilot 教我的186 魔術數字公式:complementary = (r * 0.299 + g * 0.587 + b * 0.114) > 186 ? '#000000' : '#ffff... Read More
View Article「工人」智慧 CAPTCHA 破解服務
我的部落格被某個印尼廣告商盯上,即使垃圾留言會被檢核機制阻擋,他還是孜孜不倦定期來貼不會有人看到的廣告留言,讓我很無言。過年前部落格換了 hCaptcha原以為可以改善,很不幸沒能阻止對方繼續徒勞無功... 貼文的留言區讀者俞俞丟了個關鍵字 - 2captcha,引導我認識有趣的產業 - 「在家解 ... Read More
View Article.NET 6+ 可以直接參照 .NET Framework 編譯的 DLL 嗎?
如果你是 .NET 開發者,考個簡單問題: .NET 6+ 寫的程式可以直接參照引用 .NET Framework 編譯的 DLL 嗎? (註:非 .NET Standard,純 .NET Framework 2.0/3.5/4.0/4.5 ~ 4.8,參考:淺談 .NET 類別程式庫跨平台開發) ... Read More
View Article動手玩 AI - 使用 OpenAI Embedding 模型比對文字相似性
在 ChatGPT 整合自有資料的 RAG 測試學到不少新東西,其中一個是 Embedding。(嵌入、內嵌,這些翻譯我都覺得怪,文章會用英文原文) Word Embedding 是自然語言處理(NLP)中將文字內容轉成多維向量數值的一種技術,概念是將原本每個詞一個維度(數量以萬起跳)的高維空間嵌入... Read More
View Article偷看 Dapper 產生的 SQL 指令與參數型別
這是調查 Dapper 參數茶包的副產品,檢查底層對映參數型別的工具函式。 遇到一個 Dapper 問題,懷疑與匿名參數物件屬性對映的 OracleParameter 型別有關。而 Oracle 不像 MSSQL 有 Profiler 可以偷看實體指令,我便想從程式端突破,設法在執行時取得參數資訊。... Read More
View ArticleDapper 之字串參數查詢效能地雷
同事踩到 Dapper 的雷,我跟著上了一課,筆記備忘。 嚴格來說,NVarChar 參數查 VarChar 欄位效能不佳算是老掉牙問題,我過去沒紥紮實實踩到所以印象不深,但體驗過一次效能差異,以後應該都會記得要確認。 用一個 2,000 萬筆資料的 Oracle 資料表重現問題。 用 Dappe... Read More
View Article.NET 工具函式 - 阿拉伯數字與中文數字雙向轉換
十四年前我寫過地址阿拉伯數字轉中文大寫的 .NET 函式,但它有兩個問題:一是依賴 Visual Studio International Feature Pack,二是當年只做了阿拉伯數字轉中文,沒有中文數字逆解回阿拉伯數字的能力。 總之,十四年後我把這個題目當成暖身練習,打算不靠第三方程式庫,用... Read More
View Article會寫程式不值錢了嗎?ChatGPT C# 轉 JavaScript 轉 Python 實測
阿拉伯數字與中文數字雙向轉換 .NET 函式貼文有讀者提到:如果將來不用 C#,豈不要重寫? 好問題,其實寫函式時我就有想到這點,當時想法是,之所以擺脫 Visual Studio 程式庫從頭用 C# 重寫,便是著眼於相同演算法可移植到其他程式語言,更甭提我們現在有 ChatGPT 當靠山,這種沒用... Read More
View Article用 .NET 開發程式庫供 Python 呼叫 - Native AOT 應用
Python 是當今火紅的程式語言,為 AI/Mechine Learning 領域的奧林匹克指定開發語言,在這些領域,你得說 Python 才能享有一等國民的待遇。 身為 C# 已經寫到得心應手的老人,若在 Python 場子遇到刁鑽需求,但用 C# 可以秒殺或已有現成程式庫,此時我有三種選擇: ... Read More
View Article筆記 - 在 Linux 平台使用 .NET Native AOT
接續前一篇用 .NET Native AOT 編譯程式庫給 Python 呼叫的實驗。 下一步我打算搬到 Linux 執行,過程有些小波折,編譯原生二進位檔案有優點,但領教過比較複雜繁瑣的編譯程序,倒也襯托出 .NET Runtime 的好處。 參考官方文件 Native AOT deploymen... Read More
View ArticleSemantic Kernel 講座筆記 - 使用 .NET 輕鬆開發 ChatGPT 應用程式
月初試玩微軟的 RAG 範例,還弄了個 ChatGPT 版行車駕駛知識庫,修改範例過程認識一堆新名詞,Azure AI Search Service、Semantic Kernal、Embedding... 但見樹不見林,對整體概念還有點模糊。 前幾天保哥辦了場線上講座,請來 MVP Ian 介紹 ... Read More
View Article.csproj PreBuildEvent/PostBuildEvent 抓不到 $(TargetDir) 參數
在參考某個開源專案 .csproj 看到類似 <PostBuildEvent>copy $(TargetDir)Blah.dll D:\</PostBuildEvent> 發現它會被觸發,但 $(TargetDir) 抓不到輸出路徑而是空值。 <Project Sdk=... Read More
View Article.NET 原始碼產生器應用 - JSON 序列化加速與去除 Reflection 依賴
源碼產生器(Source Generation)是 .NET 5 加入的新功能,能在編譯過程對 C# 原始碼進行增補,動態加入額外原始碼,最後再一起編譯進結果,在某些情境可發揮神奇效果。(延伸閱讀:新手上路 C# 原始碼產生器 (Source Generators) by 保哥) JSON 序列化傳... Read More
View ArticleJavaScript 雜技 - 遇文字折行自動縮小字體與靠左對齊
說一下我的需求,有個寬度有限的 HTML 表格欄位,內容文字長度不一,大部分都放得下,但偶爾文字過長會折行使列高加倍,造成排版雜亂且不易閱讀。增加欄位是最簡單的解法,但但因表格欄位眾多難再增大。換個思路,既然無法增加欄寬就讓字小一點,若還是擠不下也別勉強,多行就多行;但另外有個問題,原本文字置中,遇... Read More
View Article前端的那些魔鬼細節 - innerText 與 textContent 的差異及對照測試
從昨天文章的 FB 貼文留言學到新東西。 身為 IE 出身的開發者,用 innerHTML 讀寫元素 HTML 原始碼,用 innerText 讀寫純文字版內文已經是本能反應。讀者 Chester Fung 提醒我一件事,最好用 textContent 取代 innerText,不然遇到隱藏元素文字... Read More
View ArticlePowerShell 操作 SQLite 資料庫
PowerShell 是某些情境跑程式的首選,能省下掏粉自清的麻煩。 我手邊有 PowerShell 存取 SQL/Oracle 的範例,再補上 SQLite。 首先是決定用什麼程式庫,共有 System.Data.SQLite 及 Microsoft.Data.Sqlite 兩種選擇,前者由 SQ... Read More
View Article閒聊 - 除了 Active Directory,企業還會用什麼管理員工帳號?
打我進職場以來接觸過的企業組織,只要稍具規模(一百人以上),清一色都是用 Windows Active Directory 建網域管理電腦及帳號, AD 提供帳號、群組、主機管理,提供 IAM (Identity and Access Management,也有人縮寫 IdAM) 服務,涵蓋存取控制... Read More
View Article文字轉 ChatGPT Token 之實驗與觀察
使用 ChatGPT API 時,掌握提問內容 Token 數很重要。 ChatGPT API 處理 Prompt 時不是以字元或字詞為單位,而是會把文字拆解為一個個 Token。Token 不一定從單詞 (Word) 開頭或結尾處分割,並可以包括尾隨空格甚至是子詞 (Sub-Words),Open... Read More
View ArticlePQC 筆記 1 - 靠近一點看量子電腦對當代密碼學的威脅
PQC (Post-Quantum Cryptography),後量子密碼學,意指在量子電腦成熟後,現行的部分密碼學演算法將變得不堪一擊,需要更成換足以抵抗量子電腦破解的密碼學演算法。這些抗量子電腦攻擊的加解密及簽章演算法的相關研究便被稱為後量子密碼學,簡稱 PQC。(註:有個推動雲端安全的組織 C... Read More
View Article