活用 NLog 規則個別控制 LogLevel (詳細程度)
ASP.NET 排程模組 - Hangfire 有個蠻酷的功能,能偵測專案是否已啟用 Serilog、NLog、Log4Net、EntLib Logging、Loupe 或 Elmah 等 Log 程式庫,一旦發現會自動寫入 Log。但大多時候 Hangfire 穩定執行,這堆用不到的 Log 便顯... Read More
View Article打破砂鍋 - Hangfire 會不會補跑錯過的排程?
計劃在專案重用 Hangfire 跑排程之際,發現 Hangfire 對錯過排程的處理原則讓我捉摸不定,例如:若伺服器凌晨三點停機到早上八點,有個每天早上四點的排程,八點啟動時會不會補跑四點排程?在開發環境測了幾次,有時會補跑,有時不會,歸納不出規則。若無法 100% 預期行為,將重要任務交付給它讓... Read More
View Article全世界只有我遇到?ASP.NET Core localhost 動態 Port 繫結錯誤
用 Visual Studio 建了一個 ASP.NET Core 專案跑不起來,試了用 dotnet new 新建也是如此,錯誤訊如下: X:\MyTest\EmptyWeb>dotnet run Building... Unhandled exception. System.Invalid... Read More
View ArticleJavaScript 範例 - scrollIntoView 實現清單自動捲動
分享一個 JavaScript 小技巧,假設有個很多項目的清單,靠 CSS overflow-y: scroll 啟用垂直捲軸,除了由使用者操作上下捲動,也能用程式控制捲動到指定的一筆嗎? 用講的不容易理解,看示範就清楚吧! 在以下展示中,我用 div 當清單容器放入 16 個項目 div,清單高度... Read More
View Article重新認識 C# - C# in Depth 第一章筆記
年初許下要把 C# in Depth 看完的宏願,隔週還上演電子書失而復得的插曲。然而,一年都過完 3/4 了,新年新希望又爛尾了嗎? 要說沒爛尾是騙人的,平日有一搭沒一搭,想到才翻幾頁,按這速度,拖到領老人年金還看不完。這樣不行呀,黑大! 動筆開始寫讀書筆記吧,希望起點催速效果。 C# in D... Read More
View Article【茶包射手日記】Windows 驗證網站無法自動登入,需每次敲 AD 帳號密碼
使用者反映某個 Windows 驗證網站,原本可以瀏覽器可以用登入 Winows 的 AD 帳號自動登入,後來變成會彈出輸入帳號密碼,需要重新敲帳號密碼。 問題跟 AD 架構有關,畫個圖說明一下: AD 樹狀結構如上圖,根網域為 utopia.net,網站在 hq.utopia.net 子網域,... Read More
View ArticleGit 開發分支 Rebase 主分支之快捷做法
使用 Git 協同開發時,我常遇到以下情境。 從主分支 master 新開了 jeffrey-work 分支寫新功能,於此同時團隊其他成員(假設叫 Eric 好了)也從 master 開了分支改程式,比我早開發好已併入 master 並 push 到版控主機。得知消息後,我做了 fetch 取得遠端... Read More
View Article重新認識 C# [1] - C# 2.0 泛型、Nullable、委派簡化
【本系列是我的 C# in Depth 第四版讀書筆記,背景故事在這裡】 書的第二部分來到 C# 2-5,從現在的角度,這些已經老到不能再老,每個 C# 開發者幾乎都能信手拈來的基本技巧,不過閱讀過程仍有不少驚喜,學到一些過去沒注意的細節。 Generic 泛型 沒寫過 C# 1.0/1.1 的... Read More
View ArticleCoding4Fun - 寫個 dynamic 變形蟲物件
11 年前玩過用 ExpandoObject + dynamic 彈性處理屬性(參考:既然要動態就動個痛快 - ExpandoObject),6 年前見識到 DapperRow 靠實作 IDynamicMetaObjectProvider 憑空捏造物件行為供 dynamic 存取的奇妙手法。最近在讀... Read More
View Article也來玩 Azure AI 好了 - 電腦不只會挑土豆,還會看照片
雖然工作還沒什麼應用 AI 的機會,在人工智慧當紅的年代,沒吃過豬肉也要看看豬走路,依據我的技能樹,玩微軟的人工智慧解決方案加減有主場優勢,就從 Azure AI 服務下手吧。 想寫程式整合微軟 AI 服務必須先有 Azure 訂閱帳戶。如果你有 Visual Studio Enterprise 訂... Read More
View Article【笨問題】C# 字串依 ASCII 排序
許多程式老骨腦袋都有這麼一張表,並且會背幾組特別數字:空白鍵是 32 (0x20),0 是 48 (0x30)、A 是 65 (0x41),加 32 可以變成 a 96 (0x61)... 圖片來源:維基百科 在 C# 做字串排序,一時恍忽,熊熊覺得 new[] { "Jeffrey&q... Read More
View Article重新認識 C# [2] - C# 2.0 Iterator 及其他進化
【本系列是我的 C# in Depth 第四版讀書筆記,背景故事在這裡】 繼續談 C# 2.0 Iterator foreach 在 IEnumerable 之外多支援 IEnumerable<T>,並加入了 Iterator Iterator 可用於 IEnumerable、IEn... Read More
View ArticleGit 小技巧 - 免 Checkout 快轉合併分支
我習慣開發分支合併到主分支前先做 Rebase 再合併 (延伸閱讀:直接合併 vs 先 Rebase 再合併)。舉例來說,假設我從 master 開了 featureX 分支開發,現在要合併回 master: 我會先從 featureX 分支 git rebase master 將 feature... Read More
View ArticleVue 2 升級 Vue 3 之全域元件註冊問題
在我專案裡 Vue.js 主要用來處理 MVVM,用 <script> 載入 vue.js,寫幾行 JavaScript 搞定,走不寫模組,不用 TypeScript,免編譯打包的「輕前端」模式,但常用邏輯還是會寫成元件(Component)方便共用。 在 Vue 2 時代,我習慣在網頁... Read More
View Article當心 Windows KB5018410、KB5018418 更新導致 TLS/SSL 相關應用程式異常
學新東西時最怕有其他系統問題來亂,你通常先檢討自己程式沒寫好或漏掉什麼關鍵,查又查試了又試,依然連簡單到靠北的範例都做不出來,沮喪到懷疑人生... 這幾天在練習寫 Azure AI 程式,便遇上了這種狀況。 照著 PowerShell 跟 C# 範例初步測試成功,陸續加了邏輯也順利執行,但改一改 C... Read More
View Article程式整合 Azure 文字轉語音服務 - PowerShell / C# 範例
上回試玩了 Azure AI 照片分析有些意猶未盡,繼續試試文字轉語音。 文字轉語音(Text-To-Speech, TTS)的功能很早就有了,Windows 從早期版本便已內建 SAPI (Speech API),也有 Balabolka 之類的免費軟體能將中文文字轉成語音,但當年技術還不夠成熟,... Read More
View ArticleHTML5 自閉標籤(Self-Closing Tag)誤用案例
踩到一個地雷。從舊專案搬了網頁到新專案,有些文字顯示不出來,花了點時間追查,發現是因為某 jQuery 元件用了 <span class="..." /> 這種不合法寫法,舊專案為相容 IE 還在用 jQuery 用 1.12 版,搬到改用 jQuery 3.6 的新... Read More
View Article掌握 Windows 更新第一手消息
10/12 的 Windows 安全更新造成一些 TLS 相關的應用程式異常,新學 Azure AI SDK 時就遇上系統問題來亂,身處搖滾區特別有感。 (說實在話,自己也在寫程式,對「系統更新搞壞東西」這事兒比較能用平常心看待,因為我也常幹(掩面),大家將心比心默默改變社會風氣,輪我出包時可望... Read More
View Article【笨問題】防止 .NET 編譯產生不需要的多語系資源檔
針對需要支援多語系的場合,.NET 標準做法是為各語系建立專屬資源檔,放入該語系的文字翻譯、專用圖示,Visual Studio 會將這些資源檔編譯成衛星組件(Satellite Assembly)。如此,執行時可依環境彈性載入,有專屬資源就用,沒有就用英文;開發時也可依需求逐步增加新語系,很方便。... Read More
View Article重新認識 C# [3] - C# 3,為成就 LINQ 而生
【本系列是我的 C# in Depth 第四版讀書筆記,背景故事在這裡】 讀書記筆晃晃悠悠來到 C# 3 惹。C# 3 的改良重點集中在 LINQ,許多新特性算是配合 LINQ 而生。以今天的角度來看,心得可能會是「靠,這還要講?」,請用溫故知新的心態面對,哈。 筆記附上各特性的原文術語,未來 Go... Read More
View Article