in

Darkthread

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

Browse by Tags

  • MemoryStream 不可擴展錯誤

    記錄自己遇到的蠢問題一枚。 抽象類別 Stream 常被當成輸入輸出參數 ,如此資料可以來自檔案、網路、記憶體或使用者自訂來源,還可套用 裝飾者模式(Decorator Pattern)壓縮加密一次完成 ,提供強大彈性。實務上我常應用的情境是 ClosedXML /OpenXML SDK 之類原本要讀寫 Excel、Word 檔案的場合,函式接受檔案路徑或 Stream 以開啟現有檔案。遇到檔案保存於資料庫,取出的資料格式為 byte[],沒必要寫成暫存檔再開啟,我習慣用 new MemoryStream(byte[] data) 建立 MemoryStream,使用起來跟 FileStream...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 11-08-2017
  • 為 PDF、Office 檔案產生文字索引

    遇到文件檔全文檢索需求,打算用 SQL Server 全文檢索或 lucent.net 實現,無論使用何者都免不了從 Word、Excel、PowerPoint 或 PDF 檔萃取純文字內容建立索引的程序。經簡單評估,使用微軟的 IFilter 介面 應是較簡單可行的做法。搜索引擎面對的檔案種類五花八門,不太可能涵蓋各種檔案格式,知道從中取出文字內容的方法,IFilter 制定統一程式介面,不管檔案格式為何,只要廠商或第三方有提供專屬 IFilter,搜尋引擎便可使用呼叫統一的 API 方法傳入檔案名稱取得文字內容,再為文字建立索引方便日後查詢。 專案面臨的檔案種類還算單純,只需涵蓋 Office...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-23-2017
  • 【茶包射手日記】只能跑 32 位元的 AnyCPU .NET 程式

    測試某個 COM+ 元件應用專案,開發者所附的範例專案測試成功,我自己新增 Console Application 或 Windows Form 專案則卡在找不到 Registry 無法執行。強烈懷疑與 x86/x64 有關,由於只有註冊 64 位元 COM+,專案跑 x86 找不到 Registry 是意料中事,但詭異之處在於我已確認過範例專案跟我新增的專案都是設 Any CPU 無誤,甚至放在同一個 Solution 測試,卻一個成功一個失敗。 實測將新增 WinForm 或 Console 專案平台目標(Platform Target)改為 x64 可排除問題,但無法解答為什麼範例專案設...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-22-2017
  • 【答客問】ClosedXML 日期資料解析測試

    網友 Danny 在舊文留言 提問 關於 NPOI 讀取 Excel 日期,"2017/9/23"被轉成"23-九月-2017"的問題,我已棄用 NPOI 投向 新歡 ClosedXML 多年,沒打算再花時間研究,於是題目改成: 面對相同文件,ClosedXML 能否順利過關? 取得 Danny 提供的測試樣本,挺有趣的,共有四欄(F、G、N、AS)包含日期資料,第一列有欄名分別為A6、A7、A14與A45: 四欄儲存格格式各有千秋,A6 設成自訂 yyyy/mm/dd: A7 設為文字,其中包含 1953.9.12、1968/1/13、1953/09/12...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-23-2017
  • 大型物件 Json.NET 序列化經驗一則

    附檔管理模組裡採用 JSON 格式保存暫存物件,將附檔物件序列化暫存成檔案,稍後寫入資料庫時再還原取出資料,直覺又方便。不料因附檔物件內含檔案內容(byte[])體積龐大,在處理極端案例時踢到記憶體不足的鐵板。 批次作業程式為 32 位元模式,依經驗記憶體上限約 1.8 GB,一開始很直覺地將資料用 JsonConvert.SerialObject() 轉成 JSON 字串再用 File.WriteAllText() 寫成檔案,之後用 File.ReadAllText() 讀取 JSON 字串,再以 JsonConvert.DeserializeObject<T>() 還原回物件:...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-18-2017
  • Dictionary 多執行緒存取衝突吃光 CPU

    這是一個老鳥失足,程式沒寫好吃光 CPU 的故事。開始前推薦大家兩篇先修知識: WinDBG 應用實例:找出 ASP.NET CPU 100% 原因 ASP.NET CPU 飆高問題之傻瓜分析工具-DebugDiag Tools 接獲通報,某主機在離峰時段出現 CPU 維持 50% 高檔狀況,來源則是某個 ASP.NET AppPool Process。依照 SOP,先擷取 Memory Dump 後再重啟 AppPool。(提醒:建立 Dump 檔前需確認 AppPool 是 32 位元還是 64 位元,若為 32 位元需 改用 32 位元版 TaskManager ,32 位元版 TaskManager...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-04-2017
  • dynamic 參數之效能損耗實測

    依據 前篇文章 :參數傳入 dynamic 會讓函式傳回值也變成 dynamic,導致無法使用 LINQ Lambda 運算式。文末提到,依據 方法多載(Method Overloading)與 dynamic 一文的研究心得,.NET 呼叫函式時若遇到參數為 dynamic 時,將改用System.Runtime.CompilerServices、System.CSharp.RuntimeBinder 命名空間物件與方法間接觸發,程序曲拆繁瑣許多。由此推測,參數傳入 dynamic 型別肯定會產生效能損耗,好奇心驅使之下,索性寫幾行程式實測親見為憑。 我設計測試程式如下,執行 100 萬次 "2017...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-27-2017
  • ViewBag dynamic 特性導致無法使用 LINQ 語法

    寫 ASP.NET MVC CSHTML 時,我很習慣用 ViewBag 將變數從 Controller 傳到 View 端,只是簡單傳遞幾個字串、數值,為此大費周章宣告 Model 型別有點殺雞用牛刀。我們都知道 ViewBag 是一個 dynamic 型別,而 dynamic 型別的屬性、方法也會被視為 dynamic,編譯階段不檢查,執行階段見真章。 不過,最近學到一件事:一旦函式參數傳入 dynamic,其傳回值也會被視為 dynamic,而此時將無法使用 Lambda 運算式 。 來看下面這個例子。我計算透過 ViewBag.DateString 傳遞 "2017/08/26"格式字串...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-25-2017
  • 小技巧-使用匿名型別快速捏出指定JSON格式

    同事有個小需求,已知城市、區域及郵遞區號要產生如下規格的 JSON 餵到前端: { "rows" : { "row" : [ { "City" : "台北市" , "Area" : "文山區" , "ZIP" : "116" } ] } } 先前介紹過 JObject 結合 dynamic 的 花式玩法 可以快速達成目標: static void TestJObject( string city, string area, string...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-25-2017
  • C# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉

    某台透過 .NET WebClient 物件爬網頁抓資料排程忽然出現: 基礎連接已關閉: 傳送時發生未預期的錯誤。 ---> System.IO.IOException: 驗證失敗,因為遠端群體已經關閉傳輸資料流。 The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream 有趣的是...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-19-2017
第1頁,共27頁 (262個項目) 1 2 3 4 5 下一頁 > ... 最後一頁 »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems