Browse by Tags

RSA 非對稱金鑰加解密與數位簽章筆記
用 .NET 加解密已是老生常談,.NET 內建 MD5、SHA1、RSA、AES、DES... 等雜湊及加密演算法,寫來易如反掌,網路上的文章也很多。但沒有自己整理過一次,每回要用都要爬文找半天。有些基本功不能省就是不能省,所以,我的 RSA 私房筆記來了。 程式範例 1 包含:產生隨機 RSA 金鑰、匯出公私鑰、對一小段文字加密、產生數位簽章。第二階段則包含匯入私鑰、解密加密內容、驗證數位簽章,並試著偷改內容驗證簽章是否因此失效。 static void RSAEncDec() { //建立RSA公私鑰...
Posted 17 December 2017 05:11 AMJeffrey | with no comments 9,942
Filed under: ,
CODE-C# 程式讀取 Exchange 共用行事曆
工作遇到新需求:辦公室自動化服務希望讀取使用者行事曆,整合顯示於個人資訊頁。 EWS Managed API 封裝了複雜又囉嗦的 Exchange Web Service SOAP 細節,改以 .NET 程式庫形式提供電子郵件、連絡人、行事曆、公用資料夾的存取管道,是 C# 開發 Exchange 相關程式的首選。(意外發現 EWS Managed API 從 2014 起轉為 Github 開源專案 ,有原始碼在手,搞不懂走不通都有救,用起來格外讓人放心,微軟真的愈來愈開放) 官方文件有篇詳細...
Posted 16 December 2017 10:12 AMJeffrey | with no comments 4,884
Filed under: ,
CODE-從 JSON 提取文字內容
從檔案萃取文字部分建立索引是全文檢索的必要程序,先前介紹過 為 PDF、Office 檔案產生文字索引 的做法,實際開發則遇到為 JSON 建立文字索引的需求。借用上回 遞迴文章 的組織資料當實例,假設 JSON 格式如下: { "Name" : "總經理" , "Children" : [ { "Name" : "行政部" , "Children" : [ { "Name"...
Posted 15 December 2017 10:39 PMJeffrey | with no comments 4,936
Filed under: , ,
CODE-使用 Stack<T> + yield 取代遞迴
分享最近學到的遞迴邏輯的替代寫法。 舉個實例比較容易說明,假設公司組織樹狀結構以部門資料物件形式呈現: public class Dept { public string Name; public List<Dept> Children = new List<Dept>(); } 組織架構範例如下: { "Name" : "總經理" , "Children" : [ { "Name" : "行政部"...
Posted 12 December 2017 08:32 AMJeffrey | 1 comment(s) 8,391
Filed under:
MemoryStream 不可擴展錯誤
記錄自己遇到的蠢問題一枚。 抽象類別 Stream 常被當成輸入輸出參數 ,如此資料可以來自檔案、網路、記憶體或使用者自訂來源,還可套用 裝飾者模式(Decorator Pattern)壓縮加密一次完成 ,提供強大彈性。實務上我常應用的情境是 ClosedXML /OpenXML SDK 之類原本要讀寫 Excel、Word 檔案的場合,函式接受檔案路徑或 Stream 以開啟現有檔案。遇到檔案保存於資料庫,取出的資料格式為 byte[],沒必要寫成暫存檔再開啟,我習慣用 new MemoryStream...
Posted 08 November 2017 09:29 PMJeffrey | with no comments 3,538
Filed under:
為 PDF、Office 檔案產生文字索引
遇到文件檔全文檢索需求,打算用 SQL Server 全文檢索或 lucent.net 實現,無論使用何者都免不了從 Word、Excel、PowerPoint 或 PDF 檔萃取純文字內容建立索引的程序。經簡單評估,使用微軟的 IFilter 介面 應是較簡單可行的做法。搜索引擎面對的檔案種類五花八門,不太可能涵蓋各種檔案格式,知道從中取出文字內容的方法,IFilter 制定統一程式介面,不管檔案格式為何,只要廠商或第三方有提供專屬 IFilter,搜尋引擎便可使用呼叫統一的 API 方法傳入檔案名稱取得文字內容...
Posted 24 October 2017 12:57 PMJeffrey | with no comments 5,304
Filed under:
【茶包射手日記】只能跑 32 位元的 AnyCPU .NET 程式
測試某個 COM+ 元件應用專案,開發者所附的範例專案測試成功,我自己新增 Console Application 或 Windows Form 專案則卡在找不到 Registry 無法執行。強烈懷疑與 x86/x64 有關,由於只有註冊 64 位元 COM+,專案跑 x86 找不到 Registry 是意料中事,但詭異之處在於我已確認過範例專案跟我新增的專案都是設 Any CPU 無誤,甚至放在同一個 Solution 測試,卻一個成功一個失敗。 實測將新增 WinForm 或 Console...
Posted 23 October 2017 07:29 AMJeffrey | with no comments 7,953
Filed under: ,
【答客問】ClosedXML 日期資料解析測試
網友 Danny 在舊文留言 提問 關於 NPOI 讀取 Excel 日期,"2017/9/23"被轉成"23-九月-2017"的問題,我已棄用 NPOI 投向 新歡 ClosedXML 多年,沒打算再花時間研究,於是題目改成: 面對相同文件,ClosedXML 能否順利過關? 取得 Danny 提供的測試樣本,挺有趣的,共有四欄(F、G、N、AS)包含日期資料,第一列有欄名分別為A6、A7、A14與A45: 四欄儲存格格式各有千秋,A6 設成自訂 yyyy...
Posted 23 September 2017 04:29 PMJeffrey | 1 comment(s) 4,556
Filed under:
大型物件 Json.NET 序列化經驗一則
附檔管理模組裡採用 JSON 格式保存暫存物件,將附檔物件序列化暫存成檔案,稍後寫入資料庫時再還原取出資料,直覺又方便。不料因附檔物件內含檔案內容(byte[])體積龐大,在處理極端案例時踢到記憶體不足的鐵板。 批次作業程式為 32 位元模式,依經驗記憶體上限約 1.8 GB,一開始很直覺地將資料用 JsonConvert.SerialObject() 轉成 JSON 字串再用 File.WriteAllText() 寫成檔案,之後用 File.ReadAllText() 讀取 JSON 字串,再以...
Posted 18 September 2017 11:59 PMJeffrey | with no comments 7,106
Filed under: ,
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...
Posted 04 September 2017 11:11 PMJeffrey | with no comments 9,175
Filed under: ,
dynamic 參數之效能損耗實測
依據 前篇文章 :參數傳入 dynamic 會讓函式傳回值也變成 dynamic,導致無法使用 LINQ Lambda 運算式。文末提到,依據 方法多載(Method Overloading)與 dynamic 一文的研究心得,.NET 呼叫函式時若遇到參數為 dynamic 時,將改用System.Runtime.CompilerServices、System.CSharp.RuntimeBinder 命名空間物件與方法間接觸發,程序曲拆繁瑣許多。由此推測,參數傳入 dynamic 型別肯定會產生效能損耗...
Posted 27 August 2017 03:56 PMJeffrey | with no comments 4,289
Filed under: ,
ViewBag dynamic 特性導致無法使用 LINQ 語法
寫 ASP.NET MVC CSHTML 時,我很習慣用 ViewBag 將變數從 Controller 傳到 View 端,只是簡單傳遞幾個字串、數值,為此大費周章宣告 Model 型別有點殺雞用牛刀。我們都知道 ViewBag 是一個 dynamic 型別,而 dynamic 型別的屬性、方法也會被視為 dynamic,編譯階段不檢查,執行階段見真章。 不過,最近學到一件事:一旦函式參數傳入 dynamic,其傳回值也會被視為 dynamic,而此時將無法使用 Lambda 運算式 。 來看下面這個例子...
Posted 26 August 2017 11:37 AMJeffrey | 1 comment(s) 4,561
Filed under: ,
小技巧-使用匿名型別快速捏出指定JSON格式
同事有個小需求,已知城市、區域及郵遞區號要產生如下規格的 JSON 餵到前端: { "rows" : { "row" : [ { "City" : "台北市" , "Area" : "文山區" , "ZIP" : "116" } ] } } 先前介紹過 JObject 結合 dynamic 的 花式玩法 可以快速達成目標: static void...
Posted 25 August 2017 11:44 PMJeffrey | with no comments 7,727
Filed under: ,
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...
Json.NET 日期型別時區問題之終極解法
一直以來常被 JSON 日期序列化時區問題困擾,問題主要發生於從資料庫查詢日期欄位,轉為 .NET DateTime 型別時其 Kind 屬性為 Unspecified,而以 DateTime.Now、DateTime.Today 取得的日期物件,Kind 則為 Local,二者不一致可能導致前端出現 8 小時時差。為解決問題,先前想到的做法是先宣告 JsonConvert.DefaultSettings DateTimeZoneHandling = DateTimeZoneHandling.Utc...
Posted 08 August 2017 11:56 PMJeffrey | with no comments 4,492
Filed under: ,
更多文章 « 上一頁 - 下一頁 »

搜尋

Go

<October 2018>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication