使用 EF Core Attach() 與 Entry().State 進行更新
昨天提到 EF Core 新增或更新資料 (UPSERT) 的簡便寫法,有讀者朋友提到是否用 Attach() 跟 Entry().State = EntityState.Modified; 取代 Entry().CurrentValues.SetValues()? 感覺這得配合範例比較好解釋,所以... Read More
View ArticleSharePoint 內部名稱轉換函式
SharePoint 提供自訂清單欄位名稱,這些名稱會被轉成一種特別格式避開英數字以外的字元,例如「申請人」會被轉成「_x7533__x8acb__x4eba_」,術語叫 內部名稱 / Internal Name 而在撰寫 Sharepoint 程式時常需要用到內部名稱,例如 CAML 指定查詢條件... Read More
View ArticleCoding4Fun - .NET 依原始順序讀取 appsettings.json Key Value
Side Project 有個需求,要在 appsettings.json 定義要觀察的硬體偵測器,我第一個想到的做法是宣告一個 Sensors 直接用 "偵測器名稱": "偵測器ID" 的 Key/Value 形式列舉,像是這樣: { "S... Read More
View ArticleAzure 學習筆記 - 選擇 VM 大小與區域
愈來愈多企業選擇將伺服器放在雲端,省去買硬體吹冷氣養機器的麻煩,也免去隨時隨地確保網路與電力品質的負擔。 上雲端有很多種做法,IaaS、PaaS、SaaS... 對傳統 MIS 來說,IaaS 是最無腦的做法,在雲端開個 VM 跑 Server,用遠端桌面或 ssh 連進去部署設定,跟遠端操作自家機... Read More
View ArticleAzure 學習筆記 - 使用小資族首選 B1s VM 跑 ASP.NET Core 小服務
B1s 是 Azure 的實用小 VM,1 顆 CPU + 1G RAM (更小的 B1ls RAM 只有 512MB,有點吃緊),裝 Linux 每個月成本不到 250 塊台幣,若在 Azure 開新帳號,它包含在前 12 個月免費的範圍,很適合拿來跑小排程或聊天機器人之類的應用。 不過要留意一... Read More
View ArticleC# 練習 - 在陣列中找出連續重複出現項目
專案出現的小需求:想在陣列挑出連續重複出現的項目,例如要從陣列 [A, B, B, C, X, C, C, B, B, D, D, D] 挑出 [B, B]、[C, C]、[B, B]、[D, D, D] 四個群組。 這題目的難易度用來暖身剛好,適合用 yield return 來解。 最後琢磨成品... Read More
View Article神經網路入門課程筆記
前幾個月因為自主防疫多出幾天空閒,時間沒拿來追劇倒是追了幾天 AI 線上課程。這個年頭,線上免費資源之多,讓你除了人懶毅力不夠,已無學不會的藉口。(鳴... 人生好難) 意外發現許多大學有所謂「磨課師」課程。磨課師課程是 MOOCs 的音譯,MOOCs 是 Massive Open Online C... Read More
View ArticleEF Core 多 DbContext 共用資料庫 EnsureCreated 失效問題
讓 EF Core 依據 Entity 類別定義自動在資料庫新增資料表,主要有兩種做法:使用 Migration 或呼叫 DbContext.Database.EnsureCreated()。 Migration 的好處是可以在 Model 修改時,自動產生 Schema 異動指令(例如:新增、修改... Read More
View ArticleAzure 學習筆記 - 建立磁碟快照與還原
上回介紹過在 Azure 開 B1s 小 VM 裝 Debian Linux / Docker 跑網站,繼續做一些自動化安裝實驗。 由於還在摸索階段,把 VM 搞砸重來的機率很高,我想到 Hyper-V VM 磁碟可以建立所謂還原點(Checkpoint),必要時將 VM 還原回先前的狀態,Azur... Read More
View ArticleHTTPS Nginx Docker 之懶人安裝法
這年頭,Internet 上不支援 HTTPS 的網站已不配叫網站。除了瀏覽器會標示「不安全」,第三方 SDK 要求 Callback URL 多半也限定 HTTPS,對外網站少了 TLS 憑證寸步難行。 向憑證廠商申請 TLS 憑證所費不貲,幸好有佛心的 Let's Encrypt 提供免費 TL... Read More
View ArticleWindows 更新卡在進度 100% 經驗一則
接獲茶包案例:某台 C 碟空間只剩 5GB 的 Windows 主機,整理期間苦主順手裝了 Windows 更新,準備重開機再戰。 不料,Windows 卡在更新進度 100% 請勿關機的畫面超過一小時:(訊息為「正在處理功能 100% 完成 請勿關閉電腦 / Working on update 1... Read More
View ArticleC 碟空間不足案例 - WinSxs 清理經驗一則
昨天 Windows C 碟空間不足案例的續集。Windows 2016 主機,系統碟 80GB 只剩 5GB 出現紅色警示,執行磁碟空間清理工具也擠不出什麼空間。 從空間使用統計發現元兇是 C:\Windows\WinSxS,竟用掉 37GB!。(延伸閱讀:分析 Windows 磁碟空間不足的正確... Read More
View ArticleInternet 跟你想的不一樣:IP 地址不是唯一,有許多相同 IP 的主機散落各地
試玩了 Cloudflare CDN 服務,我心目中 CDN 的運作原理是「在全球各區部署多台主機提供相同內容,查詢相同 Domain Name,DNS 依客戶端所在位置提供最近位置的主機 IP,達到分流及快速回應的效果」(註:這觀念並不正確),因此,若將網域名稱 my-server.com 交給 ... Read More
View Article體驗 Cloudflare CDN 與 HTTPS 傻瓜設定
上回分享 HTTPS Nginx Docker 之懶人安裝法,許多讀者大推 Cloudflare 的免費 CDN 服務,網站開 HTTP 就好,由 Cloudflare Reverse Proxy 負責啟用 TLS 憑證對瀏覽器走 HTTPS,無腦搞定。 走這條路的先決條件是你有註冊專屬網域名稱(不... Read More
View Article為 Nginx 提供友善管理介面與自動化 HTTPS - Nginx Proxy Manager
試了上回分享 HTTPS Nginx Docker 懶人安裝法時許多讀者大推的方便選擇 - Nginx Proxy Manager。 Nginx Proxy Manager 用 tabler 樣版 幫 Nginx 做了一個漂亮的網頁管理介面,對初學者來說,網頁操作比編輯 .conf 檔好上手。Ngi... Read More
View Article自動化 HTTPS 網站伺服器 - Caddy Server
這應該是這波 Reverse Proxy 評估的最後一篇,打鐵趁熱,把本次蒐集到的情資一次檢視完。 一樣是分享 HTTPS Nginx Docker 懶人安裝法時有讀者推薦,不沾手實現 HTTPS 的方便選擇 - Caddy Server。 閒扯淡:Caddy 這個命名真的不優,Google 查「C... Read More
View Article連圓形綠燈跟箭頭綠燈都搞不清楚,因為當年考駕照沒考?
昨天看到董大偉老師耗資 1800 元進行人體實驗,驗證「綠燈能不能左轉?圓形或箭頭是關鍵」。(延伸閱讀:圓形綠燈到底可不可以左轉?) (看在老師踩雷分享的份上,大家可訂閱或抖內以表支持) 不意外地,討論這個議題一定會冒出兩種聲音: 連這個都不知道,駕照是雞腿換的? 我記得駕照沒有考這個呀! 基於... Read More
View Article.NET 範例 - 好用的萬用字元彈性規則檔案搜尋程式庫
檔案同步工具需要以黑名單方式排除特定路徑及檔案型別,這回我想要高級一點,學習 .gitignore 或 .csproj 的 Include 屬性,支援 Include="Images\**\*jpgs\*.*" 這種萬用字元彈性路徑樣式。(** 代表零到多層子目錄) 經過研究,這... Read More
View ArticleASP.NET Core 練習 - 用 Middleware 為 Minimal API 加上 API Key 檢查
我很常寫小服務協助手工作業自動化,這類簡單 Web API 許多程式碼不過一百多行,連寫帶測半天就能寫完,沒啥必要切介面拆模組裝 Swagger 走 OpenAPI,網站框架也愈精簡愈好。因此 .NET Framework 時代我酷愛 NancyFX,而 ASP.NET Core 6.0 推出的 M... Read More
View Article由程式指定 IConfiguration 設定值測試 ASP.NET Core 服務
假設我在 ASP.NET Core 有個服務 CopyService,建構式接收 IConfiguration 從中讀取設定值,appsettings.json 格式如下: { "Logging": { "LogLevel": { ... Read More
View Article