Browse by Tags

TIPS-在多執行緒環境更新共用資料物件
有一段小時候寫的程式,運行多年無恙,卻在今天發生爆炸! 看似正常的更新Dictationary邏輯,卻在Dictoinary.Add時冒出"Index was outside the bounds of the array."錯誤: if (Cache.ContainsKey(key)) Cache.Remove(key); Cache.Add(key, someData); Cache的型別為Dictionary<string, string>,程式先檢查該Key值是否存在...
Posted 31 January 2012 10:47 PMJeffrey | with no comments
Filed under: ,
TOOL-Converting JSON DateTime String to .NET DateTime Structure
[Abstract] Sample code for converting "\/Date(1270051200000)\/" JSON format to .NET DateTime structure, it is used to convert log files with JSON-serialized data to make the date information readable. 專案裡有個Log機制會以JSON格式保存呼叫歷程中的參數物件,以便事後偵錯及追蹤之用...
【茶包射手日記】FtpWebRequest奇案
同事報案,運作多時的FTP排程忽然故障,由Log來看,問題發生在FtpWebRequest在上傳及下載資料時,持續產生"The underlying connection was closed: An unexpected error occurred on a receive."(基礎連接已關閉: 接收時發生未預期的錯誤) 錯誤。 一般來說,這類錯誤多半與FTP伺服器本身或網路環境因素有關,手動下指令FTP實測一番通常便可真相大白,正打算"手到擒來",一試之下才發現自己太天真...
關於C# event關鍵字
同事今天問了個有趣的問題: using System;   namespace ConsoleApplication1 { class Program { public class Boo { public delegate void MyDelegate( int i); //兩個delegate,其中一個加註event關鍵字             public MyDelegate...
ODP.NET OracleBulkCopy
嫌棄使用OracleCommand批次更新大量資料效能不佳,爬文找到ODP.NET有個 OracleBulkCopy類別 支援將整個ADO.NET DataTable一次送至資料庫更新(與SQL 2008的 Table Value Parameter 有異曲同工之妙),於是做了Lab測試效果。 在Oracle資料庫建了一個TABLE BIGONE (N DECIMAL(6,0), T NVARCHAR2(64))資料表,在.NET程式中產生五萬筆資料,分別使用以下兩種方法寫入資料庫: 1) 建立OracleCommand...
【茶包射手日記】VS2010抱怨找不到已加入參考的類別程式庫專案
遇過兩三次的問題,今天正式找到明確原因,寫成筆記備忘兼分享。 問題發生情境通常為: 使用VS2010開發程式庫(Class Library)專案,為了測試另外加入主控台(Console Application)專案到Solution中,參考該程式庫專案並在Program.cs中寫幾行程式建立類別做測試。 如下圖,Solution中有BooLib程式庫及BooTester主控台程式兩個專案,一開始執行正常,但隨著BooLib不斷加進新功能,忽然間BooTester開始無法編譯,出現找不到BooLib命名空間的編譯錯誤...
OracleCommand Visualizer for VS2010
前陣子開發系統時,常在抓OracleCommand的執行期錯誤,有時是SQL語法寫錯,有時是參數數目不符,有時則是參數值給錯... (列原因寫到自己都汗顏,寫程式明明就要心思細膩,我的心思... 應該粗如電線桿吧?) 雖然VS2010在偵錯階段提供了很強的物件檢視功能,能逐一檢視物件的每個屬性且能逐層展開,必要時還可用即時運算視窗下指令做進一步操作分析,但每次要逐一檢查OracleCommand.Parameters還是有些麻煩,心想,如果能一次列出CommandText及所有參數的型別跟內容就太好了...
Reflection執行效能測試
在寫類似Code Generator的功能,遇到一個抉擇點: 若要將DataRow的各欄位逐一映對到資料物件的各欄位上,該使用Reflection還是Hard-Coding? 使用 Reflection 方式(PropertyInfo)讀寫物件屬性可大幅簡化程式碼複雜度,但需付出效能上的代價。如 先前文章 所提,隨著CPU的運算能力愈來愈強大,效能代價的負面影響也會愈來愈小。只是在查詢資料過程中,DataRow轉換成資料物件的程序會被連續大量執行,恐怕又得另當別論。例如: 查詢取回10萬筆DataRow...
CODE-配合VARCHAR長度截取字串
專案裡遇到的特殊需求,有個欄位在程式內部採用Unicode編碼,但要匯出給某個系統接收時,中介資料表卻制定了採Big5編碼的VARCHAR(50)格式,這意味著: 1) Big5編碼的中文字元相當於VARCHAR(2),長度限制應為25個Unicode中文字元 2) 包含Unicode的字串在轉換後將變成"?" 原本系統採保守策略,把輸入欄位的長度限定在25個字元,不過客戶反應輸入內容常中英文交雜,英文字元也被視為2個Byte(在VARCHAR其實只佔1個Byte),讓可用字數變少...
CODE-分贓程式的寫法(LINQ進化版)
很久前曾寫過一篇範例,介紹將數字金額依不同權重拆成多筆的 分贓程式 寫法,最近專案又再度陷入算錢的漩渦,但局面有點改變。近一兩年被.NET 3.5/.NET 4寵壞了,已經有點"不用LINQ不會寫Code"的傾向,因此現在寫的帳務程式,就大量引用了List<SomeObject>的技巧處理資料。舉例來說,拆帳結果被裝在類似List<ResultObject>的IEnumerable裡,要做到依權重分攤,最直覺的寫法是跑個迴圈套用原本的分贓演算法,看起來就能輕鬆搞定...
Posted 29 June 2011 06:18 AMJeffrey | 1 comment(s)
Filed under: , ,
【茶包射手日記】SqlDataReader讀取FOR XML結果發生字元截斷
一段使用很久的程式今天忽然出錯,追查原因,是一段古早寫的 FOR XML 查詢出了問題。 程式用SqlCommand執行"SELECT ... FROM ... FOR XML RAW('Boo’)”,最近因資料異動,結果傳回超長的字串,透過SqlDataReader讀取時,只得到最前端的2,033個字元,XML內容被不正常截斷。 微軟有一篇KB310378 The XML data row is truncated at 2,033 characters when you use...
CODE-使用ValidationAttribute檢核資料
在 ASP.NET MVC 3 豬走路範例(2) 裡介紹過ASP.NET MVC可以識別Model屬性(Property)上的DataAnnotation ValidationAttribute ,例如: [Required][Range(…)],自動在表單輸入介面加上檢核函數,更新資料時也可用同一邏輯進行伺服器資料檢核,不用再像以前Client、Server各寫一次,也不容易因開發人員疏忽而錯放無效資料,十分方便可靠。 遇到個需求,在Console程式中引用為ASP.NET MVC開發的Model...
Posted 09 June 2011 01:24 AMJeffrey | 3 comment(s)
Filed under:
SQL 2008 TVP資料匯入之火力展示
切入主題前,先感謝網友小言在 留言 中分享了SQL 2008 TVP(Table Value Parameter,資料表值參數),一個我差點錯過的好物。 過去遇到要從程式端塞大量資料到資料庫的場合,我慣用的 伎倆 手法不外乎產生INSERT Script與BULK INSERT這兩招,坦白說都挺麻煩的,逃不掉將記憶體中DataTable物件轉換為Script或CSV Text的過程,而既然有 Object -> Text的需求,就免不了得針對不同型別寫邏輯。如果能直接把DataTable轉成資料庫端的Table...
依Dictionary產生INSERT Script
工作上有些場合需要將變更資料庫的過程以Script方式保存,方便交給其他人執行。 有不少工具可以協助從現有資料庫轉出INSERT Script,例如: SQL Dumper 、 Database Publish Wizard 、 Toad ... 都辦得到。不過剛好有個小需求是希望直接由.NET組成資料輸出INSERT Script,於是我寫了個很陽春的工具函數,將Dictionary<string, object>轉成Oracle用的INSERT Script,其中會再依object的型別做不同的處理...
筆記-Excel轉DataTable的NPOI簡單範例
這篇主要是寫給自己備忘的,以下為使用NPOI讀取表格Excel檔,自動轉成DataTable的簡單範例: (NPOI是什麼? 可參考 舊文 ) using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel;   public class NPOIHelper { public static DataTable ReadExcelAsTableNOPI( string fileName...
Posted 14 May 2011 07:39 AMJeffrey | 9 comment(s)
Filed under: ,
更多文章 下一頁 »

搜尋

Go

<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910
 
RSS
【工商服務】
OrcsWeb: Windows Server Hosting
最新回應

Tags 分類檢視
關於作者

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

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication