我個人偏愛用 GUID 當 Primary Key,但為避免索引破碎引發效能災難,我慣用的解法是另設自動跳號欄位當叢集索引(Clustered Index)。(延伸閱讀:GUID Primary Key 資料庫避雷守則) 因此,一個理想的 CREATE TABLE 範例會像這樣: CREATE TA...

換了新工作機,跑 Docker Desktop 是件輕鬆愉快的小事。於是我把部署到 Linux 主機的操作步驟改成:在 Windows Build Docker 容器 Image,匯出 Image 並壓縮成 tar.gz / tgz,scp 上傳後用 docker load 或 import 載入,...

前幾天保哥分享了一則鬼故事 - 因為沒有正確啟動 MFA (多因素認證),Azure 登入帳號被駭客入侵,對方偷建了上百台虛擬機器(VM),幸好觸及消費限制帳號被停用才控制損失。但事件在隔天收到停用通知才爆發,身為常疑神疑鬼的被害妄想體質(例如:沒事會寫工具查查誰在偷連我的 Windows、自製 W...

轉眼就要邁入 2023 了,年紀愈大感覺時間過得愈快,記得才剛過完年沒多久,怎麼一年又要過完了。(依據科學家研究,可能原因包含多巴胺減少、同時間長度佔總人生的比例變小、因見識增長及養成習慣,生活中新體驗變少... 等等) 身為一名還沒放棄學習新技術的老兵,在最後一天盤點這一年的學習軌跡及重要事件,為...

【本系列是我的 C# in Depth 第四版讀書筆記,背景故事在這裡】 (2022 年初訂下的目標,趁著最後三天,還是把它完成吧~) 區域方法 - 在方法裡可以寫方法。 static void Main() { int x = 10; PrintAndIncrementX(); ...

HttpClient 有個 BaseAddress 屬性,若設定妥當,GetAsync() 或 PostAsync() 時可只傳相對路徑,用起來蠻方便的。 但最近我踩到一個雷,當 BaseAddress 只有主機名稱不包含路徑(例如:http://www.host.net),HttpClient 對...

同事報案,某表單有個連絡電話欄位,Edge/Chrome 的自動填表功能會提示上回填的電話號碼,但使用者選擇帶入上次填寫電話,瀏覽器卻把另一個代理人欄位連帶改成上次填寫的姓名,使用者沒注意到,上傳了錯誤的內容。 我知道瀏覽器有自動填表的功能,最常遇到是在填馬拉松報名資料時但沒細究過,這次看來得花點時...

犯了 async/await 低級錯誤,鬼打牆近半小時,PO 文留念。 .NET 4.5/C# 5.0 開始引進 Asynchronous Function 概念及 async/await 保留字,非同步化函式漸漸成為 .NET 的主流寫法,以取代 WebClient/HttpWebRequest ...

馬拉松生涯邁入第十一年,這兩年被疫情攪和到一團亂,賽事延了又延,再不然直接取消。而去年三級警戒之後,明明跑量大減,我的左膝卻莫名中了一箭,六分速慢跑個十五公里沒問題,若拼遠貪快膝窩就會腫,宣告我的跑步巔峰已過,全馬 PB 就留在 2019 的 3:54:20 吧! 也因此,今年以來我對跑步的熱情已大...

這篇聊聊 ASP.NET Core 的整合測試。 假設我寫了一個沒啥營養的展示用 Minimal API,其中宣告 GuidService 類別並用 DI 註冊成 Singleton (延伸閱讀:不可不知的 ASP.NET Core 依賴注入),MapGet("/guid") 時...

檔案同步工具需要以黑名單方式排除特定路徑及檔案型別,這回我想要高級一點,學習 .gitignore 或 .csproj 的 Include 屬性,支援 Include="Images\**\*jpgs\*.*" 這種萬用字元彈性路徑樣式。(** 代表零到多層子目錄) 經過研究,這...

昨天看到董大偉老師耗資 1800 元進行人體實驗,驗證「綠燈能不能左轉?圓形或箭頭是關鍵」。(延伸閱讀:圓形綠燈到底可不可以左轉?) (看在老師踩雷分享的份上,大家可訂閱或抖內以表支持) 不意外地,討論這個議題一定會冒出兩種聲音: 連這個都不知道,駕照是雞腿換的? 我記得駕照沒有考這個呀! 基於...