Category: .net

接續前一篇用 .NET Native AOT 編譯程式庫給 Python 呼叫的實驗。 下一步我打算搬到 Linux 執行,過程有些小波折,編譯原生二進位檔案有優點,但領教過比較複雜繁瑣的編譯程序,倒也襯托出 .NET Runtime 的好處。 參考官方文件 Native AOT deploymen...

Python 是當今火紅的程式語言,為 AI/Mechine Learning 領域的奧林匹克指定開發語言,在這些領域,你得說 Python 才能享有一等國民的待遇。 身為 C# 已經寫到得心應手的老人,若在 Python 場子遇到刁鑽需求,但用 C# 可以秒殺或已有現成程式庫,此時我有三種選擇: ...

十四年前我寫過地址阿拉伯數字轉中文大寫的 .NET 函式,但它有兩個問題:一是依賴 Visual Studio International Feature Pack,二是當年只做了阿拉伯數字轉中文,沒有中文數字逆解回阿拉伯數字的能力。 總之,十四年後我把這個題目當成暖身練習,打算不靠第三方程式庫,用...

同事踩到 Dapper 的雷,我跟著上了一課,筆記備忘。 嚴格來說,NVarChar 參數查 VarChar 欄位效能不佳算是老掉牙問題,我過去沒紥紮實實踩到所以印象不深,但體驗過一次效能差異,以後應該都會記得要確認。 用一個 2,000 萬筆資料的 Oracle 資料表重現問題。 用 Dappe...

這是調查 Dapper 參數茶包的副產品,檢查底層對映參數型別的工具函式。 遇到一個 Dapper 問題,懷疑與匿名參數物件屬性對映的 OracleParameter 型別有關。而 Oracle 不像 MSSQL 有 Profiler 可以偷看實體指令,我便想從程式端突破,設法在執行時取得參數資訊。...

讀者 Galaxy952 分享一則實際經驗:JSON 反序列化時,若出現對映型別上沒有的屬性一般都會選擇無視,但某些資安政策認為 JSON 反序列化容忍未被定義的屬性是一種風險。故詢問 .NET 要如何偵測 JSON 有多餘的屬性參數並回傳錯誤。 舉例來說,若我們的物件有 Id 及 Name 兩個屬...

前幾天手機免密碼登入 Google 帳號文章跟讀者討論到手機與電腦間的藍牙究竟只做為距離判斷或是會用來傳輸 WebAuthn 協定,突發奇想,不如監聽一下藍牙封包見真章。 查了網路,倒也不難,買個 nRF52840 USB Dongle 配 Wireshark 即可比照無線線卡抓封包,零件大約 50...

讀者 Edward 問了一個有趣問題,花了點時間追查,發現是 TLS 1.2 問題的變形茶包,累積了一些經驗值,簡單整理分享。 錯誤出現在使用 LineBotSDK 傳送 LINE 訊息的超簡單範例,甚至可簡化成一行就好:(參數都是亂給的,不可能傳送成功,正常情況應得到 HTTP 401,在特定環境...

講到 .NET 解析 CSV,我習慣用 ServiceStack.Text CsvSerializer 處理,功能與效能都沒啥問題,也就一直沿用至今。今天在 FB 看到相關討論,發現有個我錯過的 CSV 程式庫 - CsvHelper (感謝網友許智涵分享),保哥之前寫過文章分享(參考:使用 C# ...

.NET 8.0 已於 11/14 發佈,.NET 8 為 LTS (長期支援版,單數版號如 .NET 7 為 STS,支援週期只有 18 個月 ) 較符合企業應用需求。最近便試著將 .NET 6.0 專案升到 .NET 8.0,原以為可無痛升級,但連續踩坑搞到灰頭土臉,這裡先分享多建構式型別的 D...

寫 Side Project 時踩到一個問題。某物件使用 System.Text.Json 序列化成 JSON,試著用 Json.NET 解析時冒出 "The input is not a valid Base-64 string as it contains a non-base 64 ...