Category: .net

【警告】本文要介紹的技巧很有趣,在某些情境可以巧妙解決刁鑽問題,令人拍案叫絕。 但對開發來說這類手法如同雙面刃,帶有嚴重副作用,常導致程式邏輯不易理解且難以維護。想像一下,接手程式的人追了三天三夜,百思不得其解,最後才發現有人他 X 的偷改某個 System.* 方法的傳回值,下一秒就算沒有抄起棒球...

上回提到我想用 Playwright for .NET 也可以用來開發網頁操作自動化機器人,但部署到客戶端可能會是問題。Playwright 原本被設計用於 End-To-End 測試,多在開發測試環境或 Build 主機上執行,程式庫下載安裝不用太講究 User Friendly。我想把它放到客戶...

Google Analytics (GA) 是分析網站流量的好工具,對於行銷專業人士是火力強大的重兵器,能用來解讀客群背景與來源、觀察訪問行為及路徑、分析行銷活動效果,其中包含一堆行銷專業術語:轉換率、跳出率、區隔... 是搞網路行銷的重要依據。坦白說,以上這些我一個也不懂,除了心血來潮查查大家查哪...

某批次作業使用 SSH.NET 元件走 SFTP 上傳檔案,實測上傳多台 SFTP 伺服器中有一台失敗,其訊息為「An existing connection was forcibly closed by the remote host / 遠端主機已強制關閉一個現存的連線」: 該主機與成功上傳主...

這些年 RPA(Robotic Process Automation) 是個熱門話題,日常瑣事的機械化動作丟給機器人處理,讓人類脫離手工作業地獄,怎麼想都是個好主意。不過,業界在談的 RPA 多指採購廠商開發的軟體,強調介面友善功能豐富又容易上手(甚至具備機器學習等 AI 功能),讓不會寫程式或的使...

HttpClient 有個 BaseAddress 屬性,若設定妥當,GetAsync() 或 PostAsync() 時可只傳相對路徑,用起來蠻方便的。 但最近我踩到一個雷,當 BaseAddress 只有主機名稱不包含路徑(例如:http://www.host.net),HttpClient 對...

犯了 async/await 低級錯誤,鬼打牆近半小時,PO 文留念。 .NET 4.5/C# 5.0 開始引進 Asynchronous Function 概念及 async/await 保留字,非同步化函式漸漸成為 .NET 的主流寫法,以取代 WebClient/HttpWebRequest ...

檔案同步工具需要以黑名單方式排除特定路徑及檔案型別,這回我想要高級一點,學習 .gitignore 或 .csproj 的 Include 屬性,支援 Include="Images\**\*jpgs\*.*" 這種萬用字元彈性路徑樣式。(** 代表零到多層子目錄) 經過研究,這...

之前已經學過幾種強制用管理者權限跑程式的方法,包含:在 EXE 內嵌 Manifest 指定 <requestedExecutionLevel level="requireAdministrator" />、RunAs、檔案總管內容設定、PowerShell 自動改用...

微軟在 11/8 公佈了 System.Data.SqlClient、Microsoft.Data.SqlClient 的安全漏洞,由於涵蓋大量 .NET 版本 (.NET Framework 到 .NET 6 都可能使用到),範圍不小,身為 .NET 開發人員,應該關注其影響及修補方式。 參考了以...

針對需要支援多語系的場合,.NET 標準做法是為各語系建立專屬資源檔,放入該語系的文字翻譯、專用圖示,Visual Studio 會將這些資源檔編譯成衛星組件(Satellite Assembly)。如此,執行時可依環境彈性載入,有專屬資源就用,沒有就用英文;開發時也可依需求逐步增加新語系,很方便。...

雖然有學過 IEnumerable 跟 yield return,遇到需要傳回集合或陣列的場合,我慣用的寫法還是一次將資料整理好,傳回 IList<T> 或 T[],很少想到用 IEnumerable 跟 yield return。大部分情況,兩種做法差異不大,但前陣子研究數百萬個檔案之...

前陣子研究某個開源專案的密碼保存做法,想確認加密方法是否安全,學到一招很方便的 .NET 無腦加解密寫法,筆記備忘。 之前介紹過 PowerShell 有個 SecureString,可呼叫 Windows DPAPI (Data Protection API) 用不同機器不同登入身分專屬的金鑰加解...