HttpClient 多執行緒執行出錯案例
依先前所學,System.Net.HttpClient 的 GetAsync()/PostAsync()/SendAsync() 等方法為 Thread-Safe,建議做法是只建立一份 HttpClient,以 static 方式共用。 今天踩到雷,以下為重現問題的程式範例。網頁使用 Windows... Read More
View ArticleMarkdown 文件寫作實務 - 數學公式、流程圖
學會 Markdown 後愈來愈不愛開 Word,習慣 CLI 後愈來愈不想滑滑鼠,是我這些年的寫照。 我除了 Blog 用 Markdown 寫,技術相關文件也試著改用 Markdown 寫,VSCode 配合相關套件,基本上的功能已能滿足,畢竟技術文件的核心在於文字、圖例本體,使用 VSCode... Read More
View ArticlePowerShell 小工具 - 將複製文字轉為鍵盤輸入
解救自己的小工具,部分遠端環境不能使用複製貼上功能,有些是系統不支援,有些基於安全原則(例如:Windows RDP 可透過群組原則 Do not allow Clipboard redirection 停用)或需要特別設定,伺服器非我方管理,無計可施。 此一限制造成不少困擾,像是筆記裡的超長指令,... Read More
View Article只有左轉箭頭的車道,圓形綠燈可以直行?
TOYOTA 臉書粉專的一則貼文引起討論。 我們都知道圓形綠燈時,若無其他標誌、標線禁制或指示下,准許車軸直行或左、右轉,那如果車道有左轉箭頭,圓形綠燈時可以左轉嗎? 貼文舉了幾個例子: 同時標示直行跟左轉箭頭,可左轉沒什麼爭議 標示左轉箭頭的雙白線車道,只能直行理所當然 但,標示左轉箭頭的白... Read More
View Article按鈕版 Gnuk 實體金鑰燒錄筆記
前陣子買到一批便宜的 ST-LINK 偵錯器(55 元有找,比珍奶還便宜),又燒錄了兩支土砲版 USB 實體金鑰: 過程有個小插曲。這批外型看似與先前買的一致,但腳位居然不同! 上一批按鈕焊接的 CLK 跟 5V 接點在電路板兩端,滑鼠拆下來的歐姆龍微動開關焊上去尺寸剛剛好。而這次買的版本 5V ... Read More
View ArticleStandardOutput/StandardError 抓不到的輸出訊息
用 C#/PowerShell 呼叫 .exe 程式,透過 StandardOuput、StandardError 讀取程式輸出算是 .NET 基本技巧 (參考:命令列工具的 stdout, stderr 輸出與 .NET 整合應用),理論上要整合各式 CLI 程式都不成問題。今天踢到一塊鐵板,才知... Read More
View Article在 ASP.NET Minimal API 啟用 MVC 功能
近年來,我日常寫 ASP.NET Core 網站的起手式都是先開 Minimal API 專案,功能不太複雜的話,單一 Program.cs 不到 200 行程式把功能寫完,用最少資源搞定,不含半點贅肉,符合我追求的極簡精神。 不過,當程式愈寫愈複雜,就得朝向前後端分離,建個 wwwroot 資料夾... Read More
View Article.NET CLI 小技巧 - Tab 分隔字串之表格化顯示
相較於 CSV (Comma-Separated Values),我更愛用 TSV (Tab-Separated Values) 格式,字串值包含 Tab 符號的機率遠低於逗號,通常用 Split('\t') 就夠了,不需加入例外解析邏輯。 Console.WriteLine() 輸出 TSV 時,... Read More
View Article冷知識 - base64url 編碼
寫 Side Project 時踩到一個問題。某物件使用 System.Text.Json 序列化成 JSON,試著用 Json.NET 解析時冒出 "The input is not a valid Base-64 string as it contains a non-base 64 ... Read More
View ArticleSharePoint CSOM 錯誤:Cannot add a role assignment with empty role definition...
SharePoint CSOM (Client-Site Object Model) 的冷門茶包,搞了快兩小時,寫篇筆記留給有緣人。 要授與 SharePoint 清單讀者權限給 Domain\Account,參考官方範例 BreakRoleInheritance()、建立 RoleDefiniti... Read More
View Article解析 WebAPI HTTP 500 回應附帶的 JSON 內容
前陣子專頁有篇貼文談到 WebAPI 出錯時,是否必須必須透過 HTTP Status 反映執行結果,例如:找不到時吐 404、系統出錯時回應 500?,得到不少回響,我也獲了新體悟。 我一直認為 WebAPI 是種 Contract,服務端與客戶端約定好,雙方都覺得 OK 就好。即便執行結果出錯,... Read More
View Article小試手機 Bing Chat - 語音交談、拍照上傳、AI 生圖隨意玩
後知後覺發現 Bing Chat 加入了 DALL-E 3 支援(繪圖品質跟前一版 DALL-E 又提升了一個檔次),也跟 ChatGPT 一樣可以上傳照片請它識別,請它用 DALL-E 3 產生影像,最重要的是,這些都免費! Bing App 也同步加入這些功能,可以實現手機拍照上傳讓它識別,用語... Read More
View Article.NET 8 升級踩坑 - ASP.NET Core DI 多建構式設定失效
.NET 8.0 已於 11/14 發佈,.NET 8 為 LTS (長期支援版,單數版號如 .NET 7 為 STS,支援週期只有 18 個月 ) 較符合企業應用需求。最近便試著將 .NET 6.0 專案升到 .NET 8.0,原以為可無痛升級,但連續踩坑搞到灰頭土臉,這裡先分享多建構式型別的 D... Read More
View Article.NET 8 升級踩坑 - SqlGuidCaster 問題與 System.Data.SqlClient 的未來
繼續分享升級 .NET 8 踩坑心得,用以下程式重現問題: using System; using System.Data.SqlClient; var obj = new SomeClass(); var typeNames = AppDomain.CurrentDomain.GetAssem... Read More
View Article無密碼登入時代 - WebAuthn 與 Passkey
密碼仍是當代最常用的身分識別方式,但密碼也是使用者跟系統管理的痛苦來源之一。密碼太短太簡單容易被猜中,太長太複雜記不住,忘記了要重設自己煩客服也煩;對系統管理者,密碼如燙手山芋,儲存得加鹽慎選雜湊演算法才安全(延伸閱讀:密碼要怎麼儲存才安全?該加多少鹽?-科普角度)(當然隨便雜湊加密湊數,甚至直接存... Read More
View Article.NET 8 之路 - System.Data.SqlClient 轉移 Microsoft.Data.SqlClient 經驗一則
前幾天踩到 System.Data.SqlClient 與 .NET 8 不相容的雷,無奈 System.Data.SqlClient 停更已成事實,要繼續往前走,儘早改用 Microsoft.Data.SqlClient 是上策。 咬牙把某個專案的 System.Data.SqlClient 換成... Read More
View Article再談 .NET CSV 解析 - CsvHelper 與其他 38 種程式庫選擇
講到 .NET 解析 CSV,我習慣用 ServiceStack.Text CsvSerializer 處理,功能與效能都沒啥問題,也就一直沿用至今。今天在 FB 看到相關討論,發現有個我錯過的 CSV 程式庫 - CsvHelper (感謝網友許智涵分享),保哥之前寫過文章分享(參考:使用 C# ... Read More
View ArticlePowerShell 小工具 - 自動補齊離線安裝 NuGet 套件
在一般情況下,NuGet 套件會在編譯時自動從網路下載安裝,不需我們費心。但現實世界不如想像美好,有時你需要在無法上網的環境編譯專案,簡單解法是開個本地資料夾當成 NuGet 套件來源參考,手動下載預先放入 .nupkg 檔以實現離線安裝 NuGet 套件。 在 NuGet Gallery 每個套件... Read More
View ArticleCoding4Fun - ESP32 觸控式簡報遙控器 PoC
無意間逛到線上購物的簡報遙控器區,突發奇想,零件箱有幾塊塵封多時的 ESP32 開發板,ESP32 內建藍牙,要模擬藍牙鍵盤應是小菜一碟,接幾個實體按鍵觸發程式送出左右鍵,就是個陽春版簡報播放器囉,興之所至,決定做一個來玩玩。 靠著強大開源社群的支持,我很快站上巨人的肩膀,找到一個 ESP32 模擬... Read More
View Article【茶包射手日記】LineBotSDK NullReferenceException 錯誤調查
讀者 Edward 問了一個有趣問題,花了點時間追查,發現是 TLS 1.2 問題的變形茶包,累積了一些經驗值,簡單整理分享。 錯誤出現在使用 LineBotSDK 傳送 LINE 訊息的超簡單範例,甚至可簡化成一行就好:(參數都是亂給的,不可能傳送成功,正常情況應得到 HTTP 401,在特定環境... Read More
View Article