使用 PowerShell 呼叫 MSBuild 建置專案
一般要執行 MSBuild 指令,標準做法是由開始選單找到 Developer Command Prompt for VS 2019 或 Developer PowerShell for VS 2019: 而這兩個環境跟一般命令視窗的差別在於它會先執行 "X:\Program File... Read More
View Article淺談 ASP.NET Cookie 安全設定
Cookie 安全性近年來常成為網站弱點掃瞄或滲透測試的重點,其中常被糾舉彈劾的點是: Cookie 應限定加密通訊(SSL/TLS)時傳遞,降低被竊聽外流的風險。 Cookie 應限定伺服器讀取,禁止 JavaScript 透過 document.cookie 存取以防盜用。 HTTP 協定已... Read More
View Article離線安裝 PowerShell Module
前篇文章提到 VSSetup PowerShell Module,在一般連網環境用 Install-Module 可自動下載安裝: 但如果主機處在連不到網際網路的網段,Install-Module 指令會冒出如下錯誤: 這篇就來介紹如何在離線環境安裝 PowerShell。參考:Manual P... Read More
View Article關於 RegExp s (dotAll) 旗標
寫了以下程式碼,想用 JavaScript RegExp 從一串文字擷取指定 JSON 內容: <!DOCTYPE html> <html> <body> <textarea id="t" cols="60" ro... Read More
View ArticleJavaScript 檔壓縮工具 - UglifyJS
我有個特殊需求,需要一個壓縮(Minify) JavaScript 檔的指令列工具。JavaScript 壓縮工具多如牛毛,從線上轉換網站、Visual Studio 擴充套件,到 GUI 軟體工具都有,而 Gulp/Grunt 等打包工具也都有內建,由於每次只處理單一檔案,我希望安裝跟操作步驟愈簡... Read More
View Article資安小常識 - 新視窗開啟外部網頁之潛在風險
在傳統觀念,從網頁以新視窗或 IFrame 開啟外部網站連結,只要不隸屬同站台,瀏覽器基於同源政策(Same-Orgin Policy)會禁止外部站台以 JavaScrpit 存取來源網頁,理論上應該是安全的。但事實是,外部網頁仍有機會跨網站搞鬼。 用以下例子展示,假設我有兩個網頁,Home.htm... Read More
View ArticleGit 雜記 - remotes/origin 失蹤記
工作專案採用 Git 版控接 TFS 伺服器。我遇到一個狀況:TFS 主機早期曾建了一些實驗性質的分支(例如:feature/test),在本機端已刪除,在 TFS 上也用網頁介面刪掉了。但是,在我開發機 Visual Studio 的 remotes/origin 下 feature/test 分... Read More
View Article再談 .NET Standard 元件讀取 .config appSettings
【聲明】關於類別程式庫是否該自行讀取 config 設定檔?靜態屬性或方法是否為適當設計?在開發人員間仍存在意見分歧。基於現實世界這類應用仍算常見(例如:NLog.config、 JsonConvert.DefaultSettings...),而開發習慣調整非一朝一夕可以改變,這篇文章聚焦舊元件改... Read More
View Article從類別程式庫建立 EF Core Migration
EF Core Migration 可依據 Entity 類別針對不同資料庫(MSSQL、SQLite、Oracle、MySQL...)產生對映的 CREATE TABLE Script,能自動連上資料庫伺服器建好資料表,Entity 修改時還能生出增減修改欄位 ALTER Script (但有一些... Read More
View Article在 ASP.NET Core 網站執行定時排程
為網站加入定期排程算很常見的設計,可用來處理過期 Cache 清除、資料定期刷新,系統狀態監控及自動問題修復。過去在 ASP.NET 時代,我會用一種笨但有效的方法 - 跑 Windows 排程每隔幾分鐘呼叫特定網頁執行任務,遇到較複雜需管理介面甚至要能重試的需求,也曾用過 Hangfire。來到 ... Read More
View Article在 ASP.NET Core Singleton 生命週期服務引用 Scoped 物件
由 ASP.NET MVC 轉進 ASP.NET Core,感受到的最大差異就是「依賴注入無所不在!」,要使用服務元件,不靠靜態方法也不能自己用 new 建構。標準做法是在 Startup.ConfigureServices 用 AddScoped、AddSingleton 或 AddTransie... Read More
View ArticleEF Core DbContext 快取特性實驗
在 ASP.NET Core 使用 EF Core DbContext 的標準姿勢是在 Startup.ConfigureServices() 用 services.AddDbContextPool<MyDbContext>(options => { options.UseSqli... Read More
View ArticleEF Core 更新衝突處理策略
昨天提到 EF Core 的 DbContext 有內建資料快取,與資料庫真實狀況可能存在落差,另外也提到,當兩個 DbContext 更新同一筆資料,則視 SaveChanges() 呼叫時機,以後者為準。 EF Core 能追蹤資料修改狀況,產生 UPDATE 指令時只會更新有修改的欄位,若兩個... Read More
View Article觀察 EF Core 產生的 SQL 指令
如果你跟我一樣,過去在專案裡都是自己連資料庫寫 SQL 指令,轉用 EF Core 之後,免不了會想確認 Where().Select() 產生的 SQL 查詢是否有效率,好奇 SaveChanges() 背後 EF Core 是怎麼更新資料庫? 要解答上述疑惑,最好的方法莫過於啟用 Loggin... Read More
View ArticleGit 小技巧 - 資料夾搬家
[2020-07-28 更正] 本篇提到使用 git mv 確保 git status 狀態為 renamed 的技巧非絕對必要性,即使狀態為 deleted + added,在 Commit 後 Git 也會自動判別成 renamed,詳情請見 冷知識 - Git 的搬檔更名跟你想的不一樣 隨著專... Read More
View Article冷知識 - Git 的搬檔更名跟你想的不一樣
昨天 Git 資料夾搬家一文發表後,讀者 Danny Lin 於小站留言提到一則重要觀念: 事實上 Git 並沒有記錄所謂的「搬檔/更名」動作,在 Git 眼中,不管搬檔案或檔案改名,都一律被視為刪除舊檔外加新增檔案,差別在於若刪除檔案與新增檔案的內容相似度達一定門檻(預設為50%),Git 就會將... Read More
View Article【笨問題】切換工作目錄到 .bat 批次檔所在位置
工作上還有不少批次作業靠 DOS Batch 檔跑排程,執行時常需確認工作目錄指向 .bat 檔所在目錄,指令檔中的相對路徑才會正確。 之前常用解法不外乎兩種,第一種是設定排程時指定 Start in 路徑: 額外設定要求增加人為出錯風險且只在排程執行時有效,手動下指令執行 .bat 的話不適用。... Read More
View ArticlePowerShell 與 .NET 的工作目錄差異
這是前陣子寫 PowerShell 我常踩到的小雷,大多發生在手動下指令的測試階段。 例如,在 PowerShell 裡我用 Set-Location (或使用 cd 指令別名) 將所在目錄切換成 X 資料夾,後續用 Out-File 寫入 ".\Test.json",Get-C... Read More
View ArticleASP.NET WebForm PostBack 式查詢網頁之 PowerShell 爬蟲範例
寫爬蟲抓取網頁內容已算開發人員的基本功,說穿了不值兩毛錢,不外乎模擬瀏覽器發出 HttpRequst 取回 HTML,再設法解析內容取出想要的資訊。 各語言幾乎都有發送 HttpRequest 的程式庫函式,.NET 有 WebClient/HttpClient、Python 有 reuqests ... Read More
View ArticleJson.NET 反序化小數數值解析問題
我有段將彈性格式 JSON 反序列化為 Dictionary<string, object> 的程式,在處理小點數時遇上問題。假設 JSON 來源長這樣: [ { "ItemNo": "A-100", "Value&... Read More
View Article