Browse by Tags

筆記-使用 Dns.GetHostEntry 解析 IP 位址
某排程使用以下程式碼產生 IEndPoint 以建立 Socket: IPEndPoint pEndPoint = new IPEndPoint(Dns.GetHostEntry(remoteHost).AddressList[0], remotePort); 其中用了 Dns.GetHostEntry(),好處是不管 remoteHost 傳入的是主機名稱還是 IP,一律可轉成 IPAddress。 排程在正式及測試環境運作多時,今天將程式移到另一網段機器上執行,remoteHost 為 IP...
Posted 21 June 2017 10:30 PMJeffrey | with no comments 2,026
Filed under: ,
CSV 轉換利器-ServiceStack.Text
做專案免不了遇到匯出或讀取 CSV 的需求,將物件轉成逗號分隔字串看似小菜一碟,用 C# 串字串也能搞定,但魔鬼在細節裡:字串值如包含逗號就要用雙引號包夾,遇到雙引號要置換成兩個雙引號,如果字串內容有換行符號更是讀取識別時的一大挑戰… 不管是匯出或解析 CSV 都得費不少力氣。最近發現一個處理 CSV 的強大元件-ServiceStack.Text 的 CsvSerializer! ServiceStack 是一套用於快速打造 SOA 服務的 Framework 工具組(可取代 WCF、WebAPI...
Posted 13 May 2017 09:27 AMJeffrey | with no comments 8,753
Filed under: ,
使用 WebClient FTP 上傳檔案發生 553 錯誤
在 .NET 要 FTP 上傳檔案,最精簡有效的做法莫過於 使用 WebClient ,例如: using System; using System.IO; using System.Net; public class CSharpLab { public static void Test() { string userName = "ftpAccount" ; string password = "ftpPassword" ; string uploadUrl...
Posted 03 May 2017 06:44 AMJeffrey | with no comments 2,582
Filed under:
MS OracleClient 改用 ODP.NET 之數字型別差異
System.Data.OracleClient 被微軟宣告為 過時不建議使用 ,是你知道我知道連獨眼龍都知道的事,硬要繼續用甚至會有 效能懲罰 。所以在維護舊專案時,看到還在用 System.Data.OracleClient 的程式,我都會順手換成 Managed ODP.NET 。(若為 .NET 3.5 平台則只能用 Unmanaged ODP.NET) 近日踩到小鐵釘一根。 如下圖,程式原本使用 System.Data.OracleClient,執行正常: 改 using Oracle...
Posted 21 April 2017 07:25 AMJeffrey | with no comments 2,967
Filed under: ,
OracleParameter 型別不符導致 ORA-03111 通訊中斷錯誤
記錄在 Oracle 遇到的古怪錯誤。 Oracle Server 版本 10.2.0.4 64bit,Client 端用 Managed ODP.NET 12.1.24160719(取自 NuGet),某段程式碼誤傳 Varchar2 OracleParameter 與 DATE 欄位進行比對,預期應出現型別不符錯誤,但得到錯誤訊息為 ORA-03111 在通訊通道上收到中斷訊號( Break received on communication channel ): 該資料表有其他 DATE 欄位...
Posted 22 March 2017 10:05 PMJeffrey | 2 comment(s) 1,640
Filed under: ,
使用 Process Explorer 查看 .NET Callstack
WinDbg 追查 CPU 飆高問題 一文發表後,在 FB 收到網友 Webber Han 回饋(在此感謝),提到射茶包利器 Process Explorer 也能像 WinDbg 一樣檢視 Callstack 中的 .NET 組件、函式資訊,查了一下,這是 2012 年 15.2 版就加入的功能,Lag 大了。 關鍵在於「Configure Symbols」有無設定妥當,Process Explorer 的 .NET Callstack 解析也是借助 WinDbg 完成,故機器要先裝妥 WinDbg...
Posted 28 February 2017 06:54 AMJeffrey | with no comments 4,721
Filed under: ,
用 100 行 C# 打造 IP 所屬國家快速查詢功能
講到由 IP 地址查詢所屬國家,解決方案有兩種:第一種是直接呼叫線上查詢 API(付費或免費),再不然就要下載 IP 區段資料庫自寫查詢程式。考量應用場合不一定有 Internet 連線能力,加上擔心線上 API 無法滿足 IIS Log 等超大量 IP 解析的效能要求,選擇取回資料檔自幹。(其實是因為這題目大小難易適中,十分適合練功,一時手癢難耐,就…) 爬文找到一些 IP 國別對應資料來源: Maxmind GeoIP2 https://www.maxmind.com/en/geoip2-country...
Posted 13 February 2017 06:32 AMJeffrey | 5 comment(s) 15,000
Filed under:
使用非同步處理提升資料庫更新速度
來自同事的資料庫程式效能調校案例一則。 情境為一支同步來源及目的資料表的排程,先一次取回來源及目的資料表,逐一檢查資料是否已存在目的資料表,若不存在即執行Insert,若存在則執行 Update 更新欄位。因 Insert/Update 之前需進行特定轉換,故難以改寫為 Stored Procedure。排程有執行過慢問題,處理四萬筆資料耗時近 27 分鐘。 程式示意如下: foreach (var src in srcList) { try { var target = findExistingData...
Posted 09 February 2017 08:49 PMJeffrey | 9 comment(s) 10,587
Filed under: ,
使用 FileChangeMonitor 實現檔案資料快取自動更新
有個開發老鳥專屬的「成功經驗魔咒」:遇到難題,想出一套簡單有效解法,或許有些小缺點,但造成的麻煩在可忍受範圍,於是 日後再遇到同樣狀況,一律照方煎藥,數十年如一日。 但技術會革新、元件會改進,善用一些新特性,小缺點其實可以化為無形。可怕的地方在於:如果每次都能順利解決問題,就不會圖謀改進,直到有天發現洋人船堅砲利,才知自己已成滿清… 老鳥想一直寫程式又不想被時代淘汰,就得提高警覺。有個超簡單的實踐方法-對自己機車一點。當有人反應不方便時,別一句「就多一個動作會死嗎?」頂回去,改成問自己:「連這個動作都省不掉...
Posted 17 January 2017 06:57 AMJeffrey | with no comments 6,026
Filed under:
筆記-Scott Hanselman 的 2017 .NET 開發者須知
Scott Hanselman 前兩天有篇文章- What .NET Developers ought to know to start in 2017 ,我的工作(甚至生活)跟 .NET 息息相關,重量級人物的觀點自然不容錯過,整理筆記如下: 前言 Scott 之前整理過類似的 .NET 須知,結果被大家拿來當作面試時折磨新人的刑具… 清單很長,但並不是每則都必須搞懂弄通,應視自己所需以及學習習慣取捨,有些知道名詞即可,有些應該深入了解。 https://dot.net 是 .NET 技術資源的新入口...
Posted 16 January 2017 06:17 AMJeffrey | with no comments 9,520
Filed under:
ODP.NET 發行者原則檔經驗一則
之前處理過一個 鳥問題 ,使用 ODP.NET 12.1 連線 Oracle Server 10.2.0.4 時無法參與分散式交易,傳回「Unable to enlist in a distributed transaction /無法列於分散式交易中」錯誤。依網路討論 Server 升級到 10.2.0.5 以上可解決,當時決定將資料庫移至另一台 Oracle Server 11.2 成功脫逃,安全下莊。 半年後鳥問題捲土重來,一樣是 ODP.NET 12.1 連 Oracle 10.2.0.4...
Posted 06 January 2017 06:39 AMJeffrey | with no comments 3,231
Filed under: ,
關於 Decimal 小數尾數零
C#的實數型別有三種:float、double、decimal。其中 float、double 為浮點數,本站的老讀者們一定知道-「 算錢用浮點,遲早被人扁 」的道理,因此只要涉及金額計算,我一律改用 decimal 型別。前幾天,踩到 decimal 小數尾數零地雷一枚。 以下程式為例,大家猜猜結果為何? class Program { static void Main( string [] args) { float flt = 1.2300F; Console.WriteLine(flt);...
Posted 11 December 2016 07:24 PMJeffrey | 2 comment(s) 7,177
Filed under:
C# Interpolated Strings 字串插值
TypeScript 有個好東西, Template String ,輸出內嵌動態資料 HTML 時非常好用,例如: var userName: string = "Jeffrey" ; var iconUrl: string = "/imgs/runner.gif" ; var html = ` <div> Hello, ${userName}! <img src= "${iconUrl}" /> </div>...
Posted 22 November 2016 06:06 AMJeffrey | 3 comment(s) 4,478
Filed under:
快速查詢主機目前安裝的 .NET 版本
工作上常遇到的需求:在陌生機器上想確認已安裝的 .NET Runtime 版本,只有 4.0,還是已升到 4.5.2 甚至 4.6? MSDN 建議的官方做法是 檢查 Registry ,程式邏輯不複雜要自己寫個小工具並不困難,但每次測試得 Copy 程式檔太搞剛,於是我想到了 PowerShell! 在 Stackoverflow 找到網友分享 用 Powershell 檢查 .NET 版本的範例 : Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET...
Posted 18 November 2016 09:05 PMJeffrey | with no comments 4,758
Filed under:
與上層命名空間成員名稱重複問題:TypeScript 與 C#
同事遇到的 TypeScript 小問題一則,如下圖,Foo 與 Bar.Foo Module 裡都有個 IBlah Interface(不算良好的設計但合法,用在特定情境可簡化程式),在 Bar.Foo 內想引用更上層 Foo 的 IBlah,不管宣告型別是 IBlah 還是 Foo.IBlah,指向的都是 Bar.Foo.IBlah。 同樣的情境,在 C# 裡也會上演,在 Bar.Foo 命名空間內不管寫 Foo.IBlah 或 IBlah 指的都是Bar.Foo.IBlah: C# 可用 global...
Posted 17 November 2016 05:19 PMJeffrey | with no comments 2,932
Filed under: ,
更多文章 下一頁 »

搜尋

Go

<June 2017>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

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

文章典藏
其他功能

這個部落格


Syndication