ASP.NET Core 自訂靜態檔案來源 - 以 JSON 為例
之前玩過將 html/js/css/png 等靜態檔案轉成內嵌資源讓 Minimal API 程式徹底實現單一檔案。更進一步,有沒有可能自訂其他靜態檔案來源呢?例如像 Sharepoint 把 html、css、js 存進資料庫,但用起來跟一般網站靜態檔案沒有兩樣。能依需求輕易擴充修改,將網站捏成你... Read More
View ArticleVSCode 程式小書僮 - Tabnine
聽說這年頭只要會寫程式就不愁沒工作,且待遇還很不錯,小木頭跟小閃光兩人吵著要學程式,沒辦法,身為老司機只得撥些時間指導一下。(謎之聲:分明是你在整天推坑吧?) 之前兩人上過程式夏令營之類的課程,學過一點 C/C++ 跟 Python 但沒再深入,那這次要學什麼程式語言入門呢?想了想,JavaScri... Read More
View Article.NET 小技 - 命令列參數應用
.NET Core 程式寫久了,用命令列參數執控制程式已是日常,像發佈 .NET 6 程式時便少不了 --no-self-contained、-c Release、-r win-x64 等參數,而啟動 ASP.NET Core 時,使用 --urls 指定 HTTP Port 更是必備技巧。 .NE... Read More
View Article小試 Github Copilot
這陣子接連看過 VS2022 的 IntelliCode 與 VSCode 外掛 Tabnine,都是靠 AI 幫忙你寫程式的好幫手。而這個領域名聲最響亮的,非 Github Copilot 莫屬。而 Github Copilot 3/29 剛發佈 VS2022 擴充套件,Github Copilo... Read More
View Article在 EF Core DbContext 使用 Dapper 並參與 Transaction
寫 .NET 資料庫相關程式該用 EF/ORM 還是自己寫 SQL?就像手排車 vs 自排車,各有優劣及擅長的場合,亦各有支持者,我自己則是瀨尿牛丸派,單純 CRUD 用 EF (或自製 ORM) 享受強型別保護及不沾 SQL 的清爽,至於複雜查詢、批次更新刪除,則回歸自己寫 SQL 以確保執行效能... Read More
View Article使用指令建立 SQL LocalDB mdf 檔
SQL LocalDB 是開發測試 SQL 程式的好夥伴,免費,比 SQL Server 輕巧,行為模式比照標準 SQL Server,很適合裝在開發主機扮演 SQL 資料庫角色。(延伸閱讀:SQL Server 2012 Express LocalDB (SqlLocalDB) 深入剖析 by 保... Read More
View Article將多個 EF Core DbContext 包成 Transaction
之前介紹過將 EF Core DbContext 動作包入 Transaction,做法有兩種:呼叫 DbContext.Database.BeginTransaction() 啟動交易、用 TransactionScope 包住 DbContext 動作。如果要將兩個以上 DbContext 包進... Read More
View Article任選資料庫存放 ASP.NET Core 靜態檔案
上回提到 ASP.NET Core 架構大幅革新,大量以介面取代直接引用類別,並透過依賴注入(DI)取得服務或元件,付出複雜化的代價,為的是在關鍵時刻換取擴充彈性,前篇文章神不知鬼不覺地將 .html、.css、.png 移進 JSON 檔,取代用 wwwroot 存放靜態檔案,便是一個範例。用 J... Read More
View ArticleEF Core 測試小技巧 - 快速建立資料表
截至目前,我的 EF Core 範例都是用 dotnet ef migrations create 產生建立(或升級) Schema 所需程式,再透過 dotnet ef database update 或 DbContext.Database.Migrate() 套用 Migration 建立或修... Read More
View ArticleEF Core DbContext 為什麼該註冊為 Scoped?
我們都知道 ASP.NET Core 依賴注入(DI)容器註冊服務有三種生命週期選項:Singleton、Scoped、Transient,依先前學習 Autofac 建立的概念,Singleton 是從頭到尾共用一個、Transient 是每次建立新物件,每次 Request 共用的 Scoped... Read More
View ArticleEF Core 無痕單元測試 - In-Memory Provider 與 SQLite In-Memory Mode
撰寫 EF Core 相關測試時,若偏向單元測試性質,除了真的連接資料庫實測試,若測試內容未高度依賴資料庫特性,還有更輕便、易控制且有效率的選擇。 使用真實資料庫是最省事最逼真的做法,但實務上可能會遇到困難,例如: 因軟硬體資源或網路限制,未必有專供測試的資料庫可用。 實際連線資料庫速度太慢,單元... Read More
View Article【答客問】.NET 6 SQLite 原生程式庫版本問題
讀者 Quintos 問了好問題:文章裡 .NET 6 在用的 SQLite 是微軟版還是 SQLite 官方版?(聽說 SQLite 官方版效能比較好) 我一向是 dotnet add package Microsoft.EntityFrameworkCore.Sqlite 就開心寫 Code,不... Read More
View Article自學網頁的權威資源 - MDN Web Docs
我猜蠻多人跟我一樣,從沒上過 HTML/JavaScript 的課,甚至連書都很少買,寫網頁全靠著邊做邊學,上網複製貼上程式查資料慢慢養成。坦白說這不是最有效率的學習方式,但似乎是大部分有程式經驗的人跨界網頁開發常用的做法,也不能說是不長進不積極,就只是走平凡人走的路罷了。 我自己目前常遇的狀況,是... Read More
View Article這些年,我錯過的 JavaScript 字串函數
前幾天幫同事看問題,要在 JavaScript 偵測 location.href 是否為 / 字元結尾,看到 Visual Studio 自動提示了 endsWith() 函式,大驚! JavaScript 不知何時早已內建 startsWith、endsWith (Chrome 41 就有,目前版... Read More
View ArticleCSS 小技 - 圖片水平垂直置中並依容器大小自動縮放
用 LINE 貼圖時我有個困擾,記憶中有張超貼切的圖,但我永遠記不住它來自哪一組,作者給的關鍵字又匹配不上,只好一組一組打開來找,但最絕的是,往往全部找完一輪也沒看到,遇上傳說中的「貼圖鬼遮眼」,最後隨便找張貼圖了事。 為了解決這個困擾,我開了 Side Project,用 ASP.NET Core... Read More
View ArticleSystem.Text.Json 序列化物件不包含欄位值(Field)
改寫 .NET Core 之後,我都盡量改用 System.Text.Json處理 JSON,做個不守舊,擁抱新時代的老人。System.Text.Json 主打高效能,雖然功能跟擴充性比不上 Json.NET 完整,但身為 .NET 內建元件,不用擔心支援性及整合度,預期會持續強化(例如:.NET... Read More
View ArticleIE 都更筆記 - 為 Chrome/Edge 加上 showModalDialog Polyfill
隨著 IE 即將 EOS (野生 IE 將於 2022/6/15 滅絕,企業人工飼養 IE 則到 2029),IE Only 網頁都更如火如荼。而 showModalDialog 問題也來到第三篇,足見這議題還挺煩人的。 先整理之前的研究心得: 汰換 showModalDialog() 嘗試用 I... Read More
View Article【笨問題】在 .NET 類別程式庫專案引用 ASP.NET Core API
我打算將之前研究用 Minimal API 寫桌面小工具的設計包成元件,把自動尋找可用 HTTP Port 跟啟動時帶出預設瀏覽器、網頁關閉自動結束等機制包成擴充函式加入網站,未來 Program.cs 加一行 app.RunAsDesktopTool(); 即可取代原本查詢 URL、 啟動瀏覽器、... Read More
View Article存在爭議的 CVE - 7-Zip 說明檔管理者權限漏洞
這兩天被一則「7-Zip Windows 程式存在安全漏洞」的資安消息洗版(參考:7-Zip Windows App漏洞讓攻擊者取得管理員權限 by iThome,代號 Kagancapar 的土耳其研究員展示了「從 7-Zip 開啟說明檔,再將檔案拖到說明窗視可讓一般使用者取得管理者權限」的安全漏... Read More
View ArticleASP.NET Core Tag Helper 練習 - 為網頁加入 QRCode
TagHelper 是我喜愛的 ASP.NET Core 新功能之一 (延伸閱讀:淺談 ASP.NET Core Tag Helper (標籤協助程式)),在標準 HTML 元素加上 asp-for、asp-append-version 即能獲得額外功能,<input asp-for=&quo... Read More
View Article