Json.NET 日期型別時區問題之終極解法
一直以來常被 JSON 日期序列化時區問題困擾,問題主要發生於從資料庫查詢日期欄位,轉為 .NET DateTime 型別時其 Kind 屬性為 Unspecified,而以 DateTime.Now、DateTime.Today 取得的日期物件,Kind 則為 Local,二者不一致可能導致前端出現 8 小時時差。為解決問題,先前想到的做法是先宣告...
View ArticleSQL 資料轉 INSERT 語法-使用 Visual Studio
將資料表內容轉成一連串 INSERT 語法,是蠻好用的跨伺服器搬資料表招式,之前我最愛用的工具是 SQL Dumper,但昨天聽到不幸消息:官方網站人去樓空,連註冊的 DNS 網域都已棄守。重新尋找替代方案,找到三種做法:SSMS 內建 Generate Script 功能 接著透過 Wizard 介面指定資料表並設定只輸出資料(Types of data to script: Data only)...
View Article古董點陣印表機套表列印經驗
工作多年,第一次遇到用撞針式印表機套表印單據的需求。身為具有30 年個人電腦使用資歷,MS-DOS 3.1 年代下海的老人,當然摸過用過還買過點陣式印表機,但都已 2017 年,便宜的黑白雷射印表機 2500 元就有,作業系統也來到 Windows 10,再回頭使用 20 年高齡的點陣式印表機,就是很新奇的體驗。題外話:講到點陣式印表機,就不免想起學生時代痴心妄想 DIY...
View Article再談集保罕用字集與 BIG5 造字區
同事遇到集保罕集問題,我試著解釋個中奧妙時冒出一堆「集保罕字的X」「Unicode標準字的X」「看起來一樣但編碼不同」把同事薰得七葷八素,感覺都快吐了… 嗯,寫篇文章細說從頭吧。很久很久以前,在 Unicode 還沒一統天下之前,BIG5是台灣地區的主流中文編碼,其中定義 13,053 個常用字與次常用字與 441...
View ArticleC# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉
某台透過 .NET WebClient 物件爬網頁抓資料排程忽然出現:基礎連接已關閉: 傳送時發生未預期的錯誤。 ---> System.IO.IOException: 驗證失敗,因為遠端群體已經關閉傳輸資料流。 The underlying connection was closed: An unexpected error occurred on a send. --->...
View ArticleTIPS-調整 SQL Agent 作業記錄筆數限制
查詢 SQL Agent 排程執行問題時,發現一個狀況:使用 Log File Viewer 查詢作業記錄(Job History Log),大部分排程的執行歷程都是空的(如下圖),只有少數幾個排程有內容:研究後學到一件事-SQL Agent Job History 有預設筆數限制,預設值為所有排程作業總共 1000 筆,每項排程作業最多 100...
View Article筆記-T-SQL 分頁查詢並傳回總筆數
資料庫查詢結果要做分頁,我較常用的做法是拉到 C# 端將物件陣列或 List<T> 存入 MemoryCache,用 .Length 可以取總筆數,用 Skip(pageSize * (pageNo - 1)).Take(pageSize) 取回指定頁數資料,換頁或排序時從 MemoryCache...
View Article小技巧-使用匿名型別快速捏出指定JSON格式
同事有個小需求,已知城市、區域及郵遞區號要產生如下規格的 JSON 餵到前端:{"rows": {"row": [ {"City": "台北市","Area": "文山區","ZIP": "116" } ] }}先前介紹過 JObject 結合 dynamic 的花式玩法可以快速達成目標:staticvoid TestJObject(string city, string area, string...
View ArticleViewBag dynamic 特性導致無法使用 LINQ 語法
寫 ASP.NET MVC CSHTML 時,我很習慣用 ViewBag 將變數從 Controller 傳到 View 端,只是簡單傳遞幾個字串、數值,為此大費周章宣告 Model 型別有點殺雞用牛刀。我們都知道 ViewBag 是一個 dynamic 型別,而 dynamic 型別的屬性、方法也會被視為 dynamic,編譯階段不檢查,執行階段見真章。不過,最近學到一件事:一旦函式參數傳入...
View Articledynamic 參數之效能損耗實測
依據前篇文章:參數傳入 dynamic 會讓函式傳回值也變成 dynamic,導致無法使用 LINQ Lambda 運算式。文末提到,依據方法多載(Method Overloading)與 dynamic一文的研究心得,.NET 呼叫函式時若遇到參數為 dynamic 時,將改用System.Runtime.CompilerServices、System.CSharp.RuntimeBinder...
View ArticleReporting Service 報表 List 區塊使用多資料表
Reporting Service RDLC 報表設計進階議題一枚。先說情境,假設有技能專長與擅長語言兩個資料表,其中有每個人的資料,想在 RDLC 報表採以下形式呈現:先印出姓名,接著以表格形式分別列出技能清單與語言清單:這類需求,最直覺有效的做法是使用子報表!很不幸,同事嘗試用子報表解決卻踼到鐵板:明細資料總筆數約 2000 筆,拆成 500...
View ArticleDictionary 多執行緒存取衝突吃光 CPU
這是一個老鳥失足,程式沒寫好吃光 CPU 的故事。開始前推薦大家兩篇先修知識:WinDBG 應用實例:找出 ASP.NET CPU 100% 原因ASP.NET CPU 飆高問題之傻瓜分析工具-DebugDiag Tools接獲通報,某主機在離峰時段出現 CPU 維持 50% 高檔狀況,來源則是某個 ASP.NET AppPool Process。依照 SOP,先擷取 Memory Dump...
View Article小筆記-避免 ThreadAbortException 的Response.End() 替代寫法
一個古老問題,在 ASP.NET 呼叫 Response.End() 會觸發 ThreadAbortException,假警報常會干擾偵錯與問題追查,之前寫過文章但沒整理完整的替代方案,今天補上筆記。使用以下程式重現問題,WebForm 網頁包含一枚按鈕,按下時透過 AJAX 呼叫同一程式,Page_Load() 事件遇 Request["m"] == "ajax" 時...
View Article小技巧-當集合型別不支援 LINQ 擴充方法
用慣 LINQ 後不太能忍受回頭用 foreach 處理集合物件,List<T>、IEnumerable<T> 及物件陣列可直接 Where()、Select() ,基本上涵蓋大部分應用情境,但有些時候還是會遇到一些不支援 LINQ 擴充方法的集合物件。這篇筆記將介紹透過簡單轉換讓集合支援 LINQ 的小技巧。(別像我以前傻傻先 var list = new...
View Article大型物件 Json.NET 序列化經驗一則
附檔管理模組裡採用 JSON 格式保存暫存物件,將附檔物件序列化暫存成檔案,稍後寫入資料庫時再還原取出資料,直覺又方便。不料因附檔物件內含檔案內容(byte[])體積龐大,在處理極端案例時踢到記憶體不足的鐵板。批次作業程式為 32 位元模式,依經驗記憶體上限約 1.8 GB,一開始很直覺地將資料用 JsonConvert.SerialObject() 轉成 JSON 字串再用...
View Article使用 DebugDiag Tools 分析 ASP.NET 站台記憶體耗盡問題
同事報案,某測試站台不定期會發生 OutOfMemeoryException 記憶體不足錯誤,接獲通報立刻趕往事故現場,問題網站已吃掉 1.8GB 記憶體,差不多是 32 位元模式可用記憶體的上限。廢話不多說,開啟 32 位元工具管理員(C:\Windows\SysWOW64\TaskMgr.exe 參考) 擷取 Memory Dump 檔。從工具箱搬出 CPU/Memory 茶包分析的小型戰術核武...
View Article【茶包射手日記】新增檔案後卻無權限修改
一個詭異的狀況。為了在測試網站測網頁,我透過該主機的網路分享建立一個 HTML 檔案,測完一回,調整程式想存檔時 Notepad++ 彈出以下訊息:這是 Notepad++ 寫入檔案存取被拒的貼心 SOP,當寫入本機檔案遇到權限不足,改用管理者身分多可克服;但本案例檔案來自網路分享資料夾,切換成本機管理者也無濟於事。但這個訊息指出一項事實 -...
View Article【答客問】ClosedXML 日期資料解析測試
網友 Danny 在舊文留言提問關於 NPOI 讀取 Excel 日期,"2017/9/23"被轉成"23-九月-2017"的問題,我已棄用 NPOI 投向新歡 ClosedXML多年,沒打算再花時間研究,於是題目改成: 面對相同文件,ClosedXML 能否順利過關?取得 Danny...
View ArticleCoding4Fun-試聽 16 進位字串表示的 MP3 內容
鹹蝦專案(利用閒暇經營的 Side Project)遇到的需求,先前把 MP3 音效資料整進 SQL 資料表轉成 IMAGE 資料型別,查詢起來像這樣:如果我想試聽這段聲音該怎麼辦? 網路上可以找到一些 T-SQL 範例,將 SQL 裡的二進位資料匯出成檔案。不過這樣子每次試聽的步驟有點麻煩: 用 SELECT 取得某一筆 IMAGE 內容 -> 以內容及檔名為參數呼叫 Stored...
View Article【茶包射手日記】分離式冷氣出風無冷度故障經驗
小木頭跑來報案,房間冷氣完全不冷。前陣子蝦皮免運時失心瘋採購一批儀器,把居家度量衡全面電子化(左起 PH 酸鹼計,土壤濕度酸鹼日照三用錶,電子游標卡尺,紅外線測溫槍),這回輪測溫槍派上用場了。冷氣機出風強弱、運轉模式、溫度調整等操作一切正常,唯一有問題是即使溫度調到 20 度,出風口溫度還是 30 度,跟室溫相同,毫無冷度可言。先做好基本功,洗了濾網(就像作業系統有問題要先做 Windows...
View Article