2019-08-16 09:32 PM 8 16,342
今天介紹一則讓你的 C# 程式好維護且不容易改壞的小技巧。 寫程式時難免會有需要字串常數的場合,若不要想太多,"常數A"、"常數B"是最直覺的寫法。 這樣寫沒什麼問題,程式通常也會跑得好好的。但遇到常數要修改,就是對細心度、視力與耐性的考驗了。 配改善這個問題...
2019-08-15 09:17 PM 0 6,266
同事反映某段使用 WebClient 抓網頁的共用函式傳回中文亂碼, 追查後發現我有個觀念錯了很久 - 我一直以為 WebClient.DownloadString() 會依據 HTTP Response Header 傳回的 Contenty-Type 自動決定編碼。 用以下 MVC 範例示範。H...
2019-08-13 09:11 PM 10 9,002
程式開發人員被字型陰已不是新聞,我小時候就狠摔過(延伸閱讀:陰險的Bug,沈重的一擊), 但十幾年後,身為資歷老鳥還會踩坑,就值得好好反省記上一筆。 今天開啟 Notepad++ 修改某段 Office 相容 HTML,範例程式正常,我照著改寫卻出錯,花半小時還查不出原因。 最後靠著一段一段將問題程...
2019-08-09 11:01 AM 21 66,458
與 ASP.NET MVC 相比,ASP.NET Core 架構上更傾向靠依賴注入(Dependency Injection)處理服務物件的傳遞, 造成一項非常有感的改變 - 過去一些慣用靜態物件或方法解決的情境,在 ASP.NET Core 要改成從建構式參數取得才能引用。 舉兩個典型例子: 使...
2019-08-08 09:35 PM 1 7,584
這幾天在寫 WinForm 程式,遇到有意思的需求。小程式透過 Registry Shell/Open/Command 註冊方式啟動(類似在 Chrome/Edge 網頁用 IE 開啟超連結所介紹的技巧),以 MyApp.exe %1 方式接收參數執行任務。 這裡用個簡化範例模擬我遇到的挑戰。 Pr...
2019-08-03 09:22 AM 5 6,166
在這個開發者不學新技術會被嘲諷成原始人的時代,我們不乏吹捧讚嘆新技術的推坑文(不說別人,我自己就常寫)。 前幾天讀到這篇「我是一名技术总监,被技术选型给埋坑里了」 宛如清流,格外覺得痛快,切中過去幾年自己的觀察體驗,講出我說不出口的心聲。 這篇中文文章源自 Dan McKinley 2015 年的老...
2019-08-01 09:47 PM 4 4,993
Web 主機上 Log 成長頗快,我想寫個小程序將時間較久的 Log 以月為單位壓縮儲存節省空間。 實測壓縮後體積只剩 3%,足足減少 30 倍有餘,估計可省下大量空間。 類似的工具之前寫過 C# 版,這回試試用 PowerShell 解決。 Log 檔一天一個,壓縮排程設在每月第一天。執行時前一個...
2019-07-31 07:28 AM 4 16,128
閱讀筆記 - 使用 .NET Async/Await 的常見錯誤提到「需要等待結果才繼續執行的場合,宜用 .GetAwaiter().GetResult() 取代 .Result」,這點喚起我過去寫非同步程式的回憶:設了 try catch 也捕捉到錯誤,但回拋的錯誤訊息看不出所然。 既然學會 Ge...
2019-07-29 06:47 AM 0 4,817
使用 Visual Studio 發佈( Publish )一個使用 System.Data.SQLite 的 ASP.NET MVC 專案,部署到 IIS 後發生錯誤: Unable to load DLL 'SQLite.Interop.dll': The specified module c...
2019-07-28 06:50 AM 1 5,441
雖然先前已寫過切換 Visaul Studio 2015 語系的方法,VS2017 起有點小改變。 在中文版 Windows 安裝 Visual Studio 2017/2019,預設會裝成中文介面,某些術語翻譯成中文怎麼看都彆扭(重訂基底、擷取、提取、推送...),還是換成英文比較自然: VS2...
2019-07-27 08:00 AM 0 3,042
同事詢問,IE 明明有設了首頁,但開新視窗時出現的卻不是首頁,而是有一堆照片的奇怪網頁,是不是中毒了? 楞了一下才想到她在說什麼。是這個: 我的 IE 也是這樣,點頁籤列最右側的開新頁籤圖示時會出現,一不小心就被吸引進去刷新聞看八卦,罪過罪過。 找了一下,設定在「網際網路選項 / 一般 / 開放新...
2019-07-26 09:39 PM 14 17,891
不知道是不是水星逆行影響,最近茶包特別多... 開了 Visual Studio 2019 在改網頁程式,接到使用者通報用 VS2019 再開另一個專案查問題,改好程式按 F5 測試卻噴出以下錯誤: 開啟記錄檔看到的詳細訊息如下: Unable to launch the IIS Express ...
2019-07-25 08:58 PM 3 7,095
今天踩了個低級錯誤的雷,分享一下。 網頁上有個欄位輸入預期執行日期時間,後端檢核時需比對不得早於現在時間,前端傳入的 JSON 已轉為 UTC,例如在 7/25 選明天(7/26), 會得到 "2019-07-25T16:00:00Z",用 JsonConvert.Deseria...
2019-07-23 09:30 PM 18 18,280
看到一場 NDC 演講(Norwegian Developers Conference,NDC 是 歐洲最大的 .NET / Agile 開發者研討會),獲益不少,筆記分享之。 影片:https://www.youtube.com/watch?v=J0mcYVxJEl0 投影片:https://w...
2019-07-22 06:42 AM 0 3,586
最近的 Coding4Fun 專案是練習用 Razor Pages 寫英文單字測驗網站,其中有個情境是每次測驗時可選擇涵蓋難度等級、是否只顯示打星號的單字、是否略過已記住的單字,最後產生一組單字清單當成題庫。 為了方便能用相同字庫重新測驗一次比較成績,系統要保留完整單字清單及每題選擇題選項確保測驗基...
2019-07-21 08:35 AM 0 8,836
今天來介紹一則私房小技巧,能讓 C# 的複雜型別屬性與資料庫欄位無縫接軌,抱著「花盆種出葱請朋友來家裡吃飯品嚐」的心情分享給大家。 舉個實例說明應用情境。假設我有個 C# 資料型別長這樣,其中包含一些非基礎型別(Primitive Type)屬性,像是自訂列舉、int[] 及自訂物件陣列(Medal...