【茶包射手日記】網頁 Enter 鍵誤擊刪除鈕疑雲
同事報案,在「以 MVVM 清單實作資料編輯介面」的經典應用場景(Knockout版範例、Angular版範例)遇見怪事。新増一筆資料後,將焦點移至 <input type="text"> 輸入欄位,若按下 Enter 資料會莫名消失,按一次消失一筆…程式用了...
View ArticleCODE - 數字轉英文 C# 函式庫
專案遇上數字轉成英文的需求,例如:1234 需轉為 one thousand two hundred thirty four。網路上有許多解決方案,程式範例、現成函式庫都有,選擇眾多之下,透過 NuGet 即裝即用才是王道。我找到一個,在 NuGet 搜尋 NUT,第一筆 Nut, Number To Text Converter & Money To Text Converter:程式為...
View Article部落格 1000 萬次點閱紀念暨抽獎活動
(灑花灑花再灑花)2004 起開始寫部落格,2006/4/15 啟用 statcounter 計數器,歷經 4096 天,部落格點閱數正式突破 1000 萬次囉!部落格一寫 13...
View ArticleVisual Studio 開啟專案出現 SQL Server Express 未安裝警告
在公司開啟某些工作專案時,我的 Visaul Studio 常會彈出像這樣的警告訊息:The Web project 'MyWeb' requires SQL Server Express LocalDB, whick is not installed on this computer.To upgrade the project database to use latest SQL Server...
View ArticleWindows 10 搜尋問題排除經驗二則
工作機由 Windows 8.1 升級至 Windows 10,過程挺順利,原本安裝的應用程式、環境設定幾乎都無痛移轉,午休時間升級完畢,下午打開 Visual Studio 就接著上工,算是一次良好體驗。(升級軟體有賺有賠,別人成功不保證你不會踩雷,升級前請詳閱公開說明書)但搜尋上遇到一點小問題。升級後手癢,想說新環境就該重新規劃一下磁碟分配,把 Windows 搜尋的索引位置從...
View Article關於 Shared Memory 的兩三事
參與古老系統的搬遷工程,其中使用 Shared Memory 實現跨 Process 溝通(例如:ASP.NET 呼叫 Window Service),也因而被迫了解這門對 .NET 開發者偏冷門的技術,特筆記備忘。【Shared Memory 是什麼?】跨 Process 溝通有個術語,Interprocess Communictaion(IPC),在 Windows...
View Article【茶包射手筆記】IIS 設定順序導致 500.19 錯誤
HTTP 500.19 錯誤多因 ASP.NET 父網站與子網站因繼承關係導致設定項目重複,過去曾經歷幾次(IIS 7限制IP存取的設定錯誤、怪異的web.config HttpHandler重複錯誤),今天再遇到 IP 限制設定重複導致子網站掛點的狀況,同事發誓一切操作合情合理,想想上回 IIS 7 IP 限制設定打架案例沒有逆天亂搞照樣出錯,推測其中有雷,決定現場模擬還原真相。我在 IIS...
View Article【茶包射手筆記】SQL 錯誤-Server 'XXX' is not configured for RPC
在測試台運作正常,程式部署到正式環境後出現 SQL 錯誤:System.Data.SqlClient.SqlException (0x80131904): Server 'XXX' is not configured for RPC. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean...
View Article【茶包射手筆記】詭異的 Word 字元疊疊樂
同事遇到一個 Word 鬼問題,某份使用者提供的 Word 文件,有段文字難以修改,輸入的文字會消失或重疊在一起!做了一個範例重現問題。如下圖所示,文件原本有個字母 T,將游標移到 T 的後方,試著輸入 A、B、C、D、E 字元,看到的不是TABCDE,而是全部字元都疊在一起!經過一番摸索,發現問題出在這段內容的「字型/字元間距/間距」設定被設成「緊縮」(預設為標準),並指定點數為 7.5...
View ArticleCODE-使用 C# 批次列印 PDF 檔案
專案遇到批次列印 PDF 檔需求。Acrobat Reader 或 Foxit Reader 等常用 PDF 軟體本身就具備傳參數直接列印功能,例如 Acrobat Reader 直接列印 PDF 之語法為:AcroRd32.exe /p /h "pdf路徑" "印表機名稱"(印表機名稱省略時由預設印表機輸出)基於以上資訊,最直覺的做法是找出 Acrobat Reader EXE...
View ArticleSQLite 批次 INSERT 的蝸牛陷阱
假日轉檯寫 Coding4Fun 專案,本週的 Scrum Sprint Planning Meeting 我認領的工作是將 13 萬英文單字轉入 SQLite 資料庫(謎:認領?快醒醒,這專案從頭到尾只有你一個人吧?)。心想這有什麼難,涮涮涮寫好以下程式,沒想到其執行速度之慢,嚇得我屁滾尿流失了魂…using (var cnSqlite = new...
View ArticleCOALESCE 發生字元設定不符合錯誤
同事報案,Dapper 查詢 ORACLE 時使用 COALESCE()遇到 ORA-12704: character set mismatch(字元設定不符) 錯誤。我用以下程式成功重現問題:(jefftest2.t 欄位為 NVARCHAR2)staticvoid Main(string[] args) {using (var cn = new OracleConnection(csStr))...
View ArticleKB-當 WHERE AND/OR 條件遇上 NULL
在 SQL 世界裡 NULL 性質特殊,行為獨特,過去就曾討論過:KB-詭異的NOT IN查詢,原來是NULL搞鬼ORACLE, 你把空字串怎麼了自以為至此對 NULL 認識已足,不料前兩天在 WHERE LIKE AND/OR 情境中遇上 NULL,一時意志動搖陷入迷惘,想必是認知還不夠深刻,再補篇 KB 吧!先別急著看答案,大家猜猜以下 SQL...
View Article【茶包射手日記】ORACLE JOIN GROUP BY 子查詢爆慢疑案
接獲同事報案,某段 Oracle 查詢偶發嚴重效能問題。查詢時資料表經由 JOIN 自身的 GROUP BY 子查詢挑出某日期前客戶最新的一筆資料:SELECT ccb.Key1, ccb.Key2, ccb.Key3, ccb.Key4, ccb.Key5, ccb.Col1, ccb.Col2, ccb.Col3, ccb.Col4, --...略... ccb.Col20FROM...
View Article在單元測試專案使用 dynamic 出現 CSharpArgumentInfo.Create 錯誤
在自動測試專案加入使用 dynamic 型別的測試方法後,Visual Studio 2017 傳回編譯錯誤:Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'在 Microsoft Connect 查到相似錯誤回報,案例集中在微軟單位測試及 NUnit...
View Article【茶包射手日記】Visual Studio 編譯自動帶入相依 DLL 問題
同事報案,在 Visual Studio 從私有 NuGet 伺服器安裝我寫的共用元件,該元件參照了 Managed ODP.NET 但沒在 NuGet Package 宣告相依性,理論上不會一併安裝 Managed ODP.NET NuGet Package,但同事發現建置後 bin 目錄卻神奇地出現 Oracle.ManagedDataAccess.dll。試著在我的電腦演練相同操作,bin...
View Article筆記:C# 6.0 自動實作屬性初始化與運算式主體定義
專案裡有個在父類別宣告 virtual List<string> MyProp { get; } = new List<string>(); ,接著在子類別 override MyProp, Visual Studio 2017 自動帶出 List<string> MyProp => base.MyProp; 。(術語為 Expression Body...
View Article擴充方法參數傳入 dynamic 型別出錯
呼叫擴充方法時傳入 dynamic 型別參數,發生以下錯誤:'Blah' has no applicable method named 'ExtMethod' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider...
View Article程式範例-使用 Json.NET 將 Key/Value 陣列轉為物件屬性
專案遇到的需求:程式接收來自外界的 JSON 資料,物件之各屬性內容以 KeyValuePair<string, string> 陣列儲存,序列化結果如下:{"modType": [ {"Key": "I","Value": "獨立模組" }, {"Key": "J","Value": "聯合模組" } ], "source": [ {"Key": "I","Value": "內部"...
View Article方法多載(Method Overloading)與 dynamic
方法多載(Overloading)是指多個名稱相同但參數個數或型別不同的方法,編譯器依傳入參數的個數、型別與順序決定使用哪一個方法。概念上多載讓方法變得更彈性,能接受不同參數組合,符合更多應用情境。舉個常見的例子,Convert.ToByte() 可傳入 int, short, string, float, double, decimal, char… 等輸入值,將其轉成 byte,傳入...
View Article