in

Darkthread

黑暗執行緒
All Tags » .NET (RSS)

Browse by Tags

  • CODE–URL調整HTTP/HTTPS、Port、QueryString參數公用函式

    前陣子 談過用 HttpUtility.ParseQueryString 解析、修改及還原參數的簡便做法,一不做二不休,再來聊聊如果拿到一個 URL, HTTP 要改 HTTPS、主機名稱要換、Port、路徑要改,是不是也有不走字串比對置換的優雅做法? 爬文查到好用的 .NET 內建物件 - UriBuilder (.NET 2.0 時代就有了,我到現在才學會),Scheme(http、https)、Port、Host、Path 均可任意抽換調整,再產生新的 URL,比起自己寫 Regex 比對置省事可靠不少。UriBuilder 已滿足大部分所需,只少了將 QueryString 轉成 NameValueColletion...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 04-10-2018
  • CODE - C# 推算檔案相對路徑

    最近在資料夾比對工具遇到一個需求:要以某個資料夾為基準推算檔案的相對路徑。例如,若基準資料夾為 C:\Folder,則 C:\Folder\SubFolder\Test.txt 的相對路徑為 SubFolder\Test.txt。 類似需求以前加減寫過,說穿了全是字串比對的功夫,靠將路徑前方相同部分移除取得相對路徑。如果相對路徑需支援 ..\..\Test.txt 這種寫法,邏輯會複雜一些,若還再考慮英文大小寫的話... 總之,計算相對路徑說難不難,自己寫瑣碎細節倒也不少。於是我想起 前幾天 談到的 .NET Uri 類別 ,恰巧有個 MakeRelativeUri() 方法 ,研究後找到坐享其成的省事解法...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 03-13-2018
  • 實戰小技巧 - .NET Exception Message、InnerException 與 ToString()

    前篇文章 提到 try catch 時若只保留 Exception.Message,可能遺失 InnerException 及 StackTrace 錯失破案重要線索。文章迴響顯示這是個值得介紹的實戰技巧,故再補充一篇。 在某些應用情境我們會選擇使用 try … catch 達成特定目的,例如:(註:Exception 的官方翻譯為例外狀況,這裡容我用較口語化的「錯誤」取代) 捕捉可預期錯誤,進行補救並繼續執行程式 例如:發現作業失敗時,Rollback 交易、寫 Log、通知管理員、退回前一步驟請使用者再試一次... 比程式直接 Crash 來得好。 捕捉可預期錯誤,改顯示較易懂的錯誤訊息 例如...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 02-12-2018
  • 【茶包射手日記】老 Bug 新感受之 ODP.NET 版本問題

    同事報案。某個使用 Managed ODP.NET 的測試網站吐出以下錯誤 Error: The type initializer for 'OracleInternal.Common.ProviderConfig' threw an exception. 同事一度懷疑跟 ODP.NET 版本有關,但依經驗,如為版本問題錯誤訊息會確指出所需元件全名、版號等資訊。為調查問題,我直接在 IIS主機 現場撰寫 Tets.aspx 偵錯 ,測試程式一用到 new Oracel.ManagedDataAccess.Client.OralceConnection() 就吐出以下錯誤: Configuration...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 02-09-2018
  • 使用 Razor 產生客製化 Email 內容

    多年下來,寫程式發 Email 通知的需求做過 N 回,其中寄給客戶的通知為求美觀常需採用 HTML 格式,而客戶姓名、通知內容等要隨客戶動態改變,嚴格來說也是一種套表。過去我慣用一套自己發明的「特別註記+Replace」做法,例如: var tmpl = "<span>[$Name$]</span> 您好,您的等侯順位為<span>[$SeqNo$]</span>" ; var dict = new Dictionary< string , string >() { [ "Name" ] = "Jeffrey"...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 02-05-2018
  • C# 讀取 dbms_output 效能強化版

    前文 介紹過使用 C# 讀取 dbms_output 寫入內容,範例留了一個小尾巴,跑迴圈連資料庫犯了效能大忌,應改成一次執行或查詢取回才上道。 dbms_output.get_lines() 允許一次取得多筆訊息,但傳回型別為 TYPE DBMSOUTPUT_LINESARRAY IS VARRAY(2147483647) OF VARCHAR2(32767); 讀取要費點手腳,Oracle 生手經過一番研究,試出四種不同做法,就當練功吧。 使用 ODP.NET OracleParameter 接收 OracleParameter 有個 CollectionType 屬性,將屬性型別設為 OracleDbType...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-12-2018
  • TIPS - C# 讀取 Oracle dbms_output.put_line 輸出資訊

    使用 dbms_output.put_line() 列印執行資訊是常用的 Oracle Stored Procedure 偵錯技巧,以下 Procedure 範例在DELETE 及 INSERT 後透過 dbms_output.put_line() 印出影響資料筆數,概念跟在程式碼裡塞入一堆 Debug.Print、MsgBox、alert() 差不多,是執行期間追查問題的重要線索: create or replace procedure JeffDBJobTest1 is begin delete from JEFFTEST where idx = 32; dbms_output.put_line...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-11-2018
  • 野人獻曝 - 極簡風格 .NET Stopwatch 計時法

    在 .NET 要測量執行時間,Stopwatch 是最簡單直覺的做法,像這樣: Stopwatch sw = new Stopwatch(); sw.Start(); //...執行要測試的動作 sw.Stop(); //將測得秒數輸出到Console、Debug或Log檔 Console.WriteLine($ "Time={sw.ElapsedMilliseconds:n0}ms" ); 說起來不複雜,但一但測量對象變多,專案將充斥大量 Stopwatch 建立、開始、結束以及記錄時間的程式碼。遇到大範圍要計時,內部也要分段計時的需求,還得宣告多個 Stopwatch 物件並注意命名不能重複...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-09-2018
  • 除蟲筆記 – Thread 執行時機與 Closure

    同事的 .NET 程式抓到一隻有趣的 Bug。以範例程式重現如下: static void DoProcess( int idx) { while (StartFlag) { Thread.Sleep(1000); Console.WriteLine( $ "{DateTime.Now:mm:ss} Thread {idx} is running." ); } } static void Main( string [] args) { for ( int i = 1; i <= 4; i++) { var thd = new Thread(() => { DoProcess...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 12-20-2017
  • RSA 非對稱金鑰加解密與數位簽章筆記

    用 .NET 加解密已是老生常談,.NET 內建 MD5、SHA1、RSA、AES、DES... 等雜湊及加密演算法,寫來易如反掌,網路上的文章也很多。但沒有自己整理過一次,每回要用都要爬文找半天。有些基本功不能省就是不能省,所以,我的 RSA 私房筆記來了。 程式範例 1 包含:產生隨機 RSA 金鑰、匯出公私鑰、對一小段文字加密、產生數位簽章。第二階段則包含匯入私鑰、解密加密內容、驗證數位簽章,並試著偷改內容驗證簽章是否因此失效。 static void RSAEncDec() { //建立RSA公私鑰 var rsaEnc = new RSACryptoServiceProvider();...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 12-16-2017
第1頁,共28頁 (275個項目) 1 2 3 4 5 下一頁 > ... 最後一頁 »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems