用 VSCode 偵錯 Go 程式 - 以 Gitea 為例
前幾天提到開源專案 - Gitea 不僅跨平台、安裝設定超簡單(一個 exe 檔就搞定,還內建設定介面),號稱「輕量級」功能卻不陽春,不愧是架設 Git 私服的第一品牌。但對我而言有一點美中不足,Gitea 用 Golang 開發,用不順手想自己動手修改,我連專案怎麼開啟都不知道。 大部分的人都下... Read More
View ArticleASP.NET WebForm 在 IE 重複 PostBack 問題
有支 ASP.NET WebForm 活化石程式近期常被投訴行為異常,症狀是按送出鈕後網頁顯示找不到該筆資料,但事後查詢已處理完成。調閱 Log,發現出錯當下都有兩筆連續 POST 記錄(發出時間相同),推測是 IE 瀏覽器(該網頁為 IE Only)因不明原因一次送出兩筆 POST, 第一筆處理成... Read More
View Article網頁內嵌 JSON 注意事項
在輸出網頁時內嵌 JSON 轉成 JavaScript 物件是我愛用的手法,這點之前有介紹過,例如以下範例: <!DOCTYPE html> <html> <head> <meta name="viewport" content... Read More
View ArticleJavaScript 重度運算導致 IE 網頁重啟
最近用 IE 跑一段極耗資源的 JavaScript 程式(前陣子發現的 diff2html.js),當資料量大,JavaScript 函式在 Chrome 都要跑好幾分鐘,更不用說 IE 了。執行期間 CPU 單核滿載,此時 IE 陷入無回應狀態: 如果只是這樣倒也無所謂,IE 嘛,需要付付出更... Read More
View ArticleGit Diff 轉程式異動對照表(Compare List) - 互動版
前陣子分享將 Git diff 文件轉成網頁版程式異動對照表(Compare List)的做法,上路沒多久便觸礁。原因是一次新增大量檔案(例如:網站新增內容,包含大量 HTML、CSS、JS 檔全文)的 diff 檔可能超過 10MB,轉換產生的 HTML DOM 過於龐大讓瀏覽器很卡。Chrome... Read More
View ArticlePowerShell - 將多參數以陣列變數傳入函式
分享最近學到的 PowerShell 小技巧。 假設我有個接受多個參數的函式,有三種參數寫法。第一種是寫成 FuncName Arg1 Arg2 Arg3... 依序列出,中間以空白間隔(注意:不要加 ( ) 及 ,,參考:函式多參數寫法陷阱);第二種則是參數值前方加上名稱,如此可不依順序,如:Fu... Read More
View Article浮點數計算結果更接近正解?
讀者 Lina 問了一個有趣問題: 為什麼 float 計算 193.25*4/3*3 等於 773 跟手算結果相同(除 3 跟乘 3 可約分),用 decimal 計算 193.25*4/3*3 卻是 773.00000000000000000000000001 反而誤差更大? 依據黑大名言「... Read More
View ArticleCoding4Fun - 在 IFrame 內嵌顯示 PDF 文件
#黑輪的 Coding 日常 哈囉大家好我是黑輪,你今天寫 Code 了嗎?(仿一輪 Style) 閒來無事,試做了一個有趣小東西。 在網頁用一個 IFrame 內嵌 PDF 文件,點連結可切換檔案,操作起來像這樣: 程式還蠻簡單的,前端網頁放一個 IFrame 設 name="read... Read More
View ArticleCoding4Fun - 浮點數存在的意義
前幾天的浮點數討論再次突顯 float、double 計算結果常存在微小誤差的特性,甚至會出現以下狀況: float a = 1/3,a 值顯示為 0.3333333,但 a 不等於 0.3333333f,a 也不等於 float.Parse(a.ToString())! 因此,在很需要精準度的場合... Read More
View ArticlePowerSehll 小技巧 - 開關參數與腳本使用說明
分享最近的學會的 PowerShell 技巧兩則。 第一個是如何為 ps1 腳本加上啟用特定功能的開關。我以前比較笨,都是另設字串參數預設為 N,要啟用就傳入 Y,例如:-IncludeSubFolder Y。但 PowerShell 有較優雅的做法 - 沒給參數代表不啟用,附加參數則是啟用,以 G... Read More
View Article實用小工具 - 查誰在偷連我的 Windows?
如果你跟我一樣,看完資安鬼故事開始有點神經兮兮兼被害妄想,三不五時懷疑「該不會有人從網路偷連我的個人電腦還渾然不知?」,這篇文章分享的小工具應該能幫助你減輕憂慮。 確認有沒有人從網路登入 Windows 的簡單方法是查詢事件檢視器的安全性事件,事件識別碼 4624 是登入成功記錄、4625 是登入失... Read More
View Article解決 JScript.NET 超彈性條件式運算器疑案
今天解掉一個糾纏十餘年的老茶包,有治好數十年痼疾的痛快,特 PO 文紀念。 某個古老系統有個進階客製需求,允許設計者在定義作業流程時可以撰寫自訂規則,用預先定義好的資料變數符號(例如:$FieldA、$Now...)配合大於、小於、AND、OR 寫出複雜的判斷條件式,還要能支援括號優先順序。當年的我... Read More
View Article免 NLog.config 設定 Log 路徑
最近用 C# 寫了幾支小工具要交給 End-User 桌面執行,為簡化部署程序,將參照 DLL 併入整成單一 EXE 檔是我愛用的做法。 免安裝,不必解壓一堆 EXE、DLL 存到特定資料夾,整個工具就一個 EXE 檔,放到桌面上點兩下便能用,很棒吧! .NET Core 3 支援編譯封裝成單一執行... Read More
View ArticleCoding4Fun - 使用 lock 共用靜態物件 vs 每次新建物件之效能比較
前天提到 JScript.NET 跑 Eval() 在多緒執行出錯崩潰的案例,問題根源在當初覺得反覆編譯 JScript 建立組件並建立物件個體會拖累效能,故寫成只建一個靜態物件共用,但因 eval() 並非 Thread-Safe 方法(指被多條執行緒同時執行也不會有問題),於是線上大量使用下有微... Read More
View Article體驗 .NET 5 單一檔案部署功能
前幾天聊到我喜歡將小工具程式編譯成單一檔案,免安裝,不必解壓縮 DLL,整個工具就一個 EXE 檔,放到桌面上點兩下就能用,這是最棒的部署方式! 文章裡提到 .NET 5 內建嵌入參照 DLL 功能,且不像 .NET Core 3.1 得將內嵌參照 DLL 寫成實體檔暫存,實現真正的單檔執行。這篇文... Read More
View Article.NET 5 執行環境安裝說明
.NET 5 是微軟最新推出的程式開發平台,要在個人電腦上執行用 .NET 5 開發的程式,先安裝 .NET 5 所需要的執行環境(術語叫 SDK 或 Runtime)通常會比較方便,以下將介紹如何在 Windows 安裝 .NET 5 執行環境。 .NET 5 可支援的作業系統如下,基本上除非你還... Read More
View Article【茶包射手筆記】清除 Windows TCP Port 保留區段
遇到老問題,Visual Studio 啟動 IISExpress 跑 ASP.NET Core 時冒出 Failed to register URL "http://localhost:59683/" for site "MyWeb" application... Read More
View Article.NET 彈性日期時間字串解析及小地雷
專案裡有個需求,希望當使用者輸入字串為日期或日期時間時自動轉成 DateTime 型別,我想到用 DateTime.TryParse 來做(註:更嚴謹的做法是改用 DateTime.TryParseExact 正向表列所有支援格式,但我選擇借用 TryParse 內建的彈性較省事),目標是要能支援多... Read More
View ArticleSQL 指令自動排版 - 使用 VSCode
從 Log 或參數拿到成串未分行的 SQL 指令,或是查程式碼遇到複雜的 SQL 指令,會讓它規則化一點方便閱讀,除了手工整理,自動排版工具也是種選擇。 例如以下這段縮排、大小寫無規則的 T-SQL:(我猜有 Coding-Style 潔癖的人會想把作者的頭扭下來) ;WITH SupportCTE... Read More
View Article用 .NET 簡單實現 Object Pool 設計
由前陣子 lock + 共用靜態物件 vs 每次新建物件的效能案例,當新建物件成本不高且方法非 Thread-Safe 時,共用靜態物件加 lock 還不如每次新建物件有效率,該如何決策顯而易見。但如果新建物件的成本很高呢?若建構物件需要耗用大量 CPU 或記憶體,甚至得爭奪有限資源(固定數量的 S... Read More
View Article