2023年12月14日 星期四

在 .NET Framework 使用 HttpClientFactory

HttpClient 已經取代 WebClient 成為主流,而早期版本的(推出於 .NET 4.5) HttpClient 有一些問題,

各路人馬也陸續推出解方,微軟後續也推出了擴充套件來一併解決了相關問題,這邊記錄下...


2023年12月11日 星期一

使用 SHFB 工具來建立說明文件

有些場合需要提供Lib 或元件的說明文件,雖然我覺得引用 Lib 並且同時有輸出的 .xml 檔,這樣在寫

程式的時候有相對應的輸入提示也就足夠了,畢竟隨著時光推移註解有時候還會失準(誤),依據情境

找了對應的套件,Sandcastle Help File Builder(SHFB),紀錄實際操作...


2023年12月4日 星期一

限制Chrome 瀏覽器不要自動轉換 Http 網址到 Https

部分網站尚未支援 https 協定,但瀏覽器預設行為會自動導向 https 來瀏覽網頁;這點多少有點困擾,

故若能限制瀏覽器這行為,開發體驗上應該會舒服很多...


2023年11月30日 星期四

EF Core 取得Migration 版本之間差異的 SQL Script

很不幸的有時候正式環境的諸多限制,不能請維運處理 migration 的指令,僅能提供 SQL Script 語法

,再請 DBA 協助執行更新的動作,此時若能快速產生異動的 SQL Script 那就太棒了...


2023年11月28日 星期二

使用 git worktree 達到同時檢視不同版本程式碼的效果

一直有個情境,我可能需要做feature或是hotfix 項目,但有些地方可能需要參考某個分支的版本,

此時我就必須先暫存目前的進度,然後切換到參考的分支,將要參考的檔案內容想辦法記錄起來,

然後切回剛剛暫存的進度,繼續開發...;後來發現這個情境,應該可以借用 git worktree …


2023年11月13日 星期一

ExpandoObject 的第一次親密接觸

最近再看舊的專案,發現有個 ExpandoObject 物件,搭配 dynamic 定義使用挺特別的;雖然我很少

這樣使用,之後也不會這樣用但是知道一下即可...


2023年11月11日 星期六

ReSharper + Visual Studio 常用快捷鍵及其他相關設定

ReSharper 是作用於 Visual Studio 的外掛,實際使用上有些項目會做調整,這邊紀錄一下,另外套了

ReSharper 後相關快捷鍵會由該套件主導,這邊列出需要,特別記憶的項目,未來有增加後續再補上


2023年11月9日 星期四

.NET Core Console Application 使用依賴注入(四)

前回使用Autofac 套件,這回搭配 Microsoft.Extensions.Hosting 套件一起服用,透過Hosting 來掌控

應用程式相關生命週期及統一託管模型


.NET Core Console Application 使用依賴注入(三)

之前有介紹使用內建DependencyInjection 的使用方式,這回嘗試使用 Autofac 套件達到DI的效果,

當然 Autofac 還有其他強大的功能,這邊先透過基本的注入觀察其生命週期


.NET Core Console Application 使用依賴注入(二)

上回介紹了如何使用基本的依賴注入機制,若想要類似ASP.Net Core 那樣有個Hosting 來驅動,

以下測試適用 .NET Core 3.1 SDK 版本或以上


.NET Core Console Application 使用依賴注入(一)

在 ASP.Net Core 專案很自然就使用依賴注入機制(DI),但若是其他應用程式例如 Console 專案,

又該如何使用依賴注入機制,這邊稍微紀錄一下


2023年11月2日 星期四

EF Core Models With Fluent API - 2

在EF Core 的 Model 設計中,還是有一點眉角,這邊也稍微紀錄幾個,增添幾分記憶留存,除了 

Fluent API 支援多屬性組成複合 PK設定之外,再來就是如何設定欄位為 Guid或是索引


EF Core Models With Fluent API

在EF Core 中,其中一環核心的設計應該就是Model ,而 EF Core 提供了數種設定 Model 方式,

一種就是常見的 「Data Annotations」,用於屬性掛載特性(property add Attribute)型式,而另一種方式

就是 EF Core 提供的 「Fluent API」,相較於Data Annotations 的方式其支援程度更廣...


EF Core DBFirst 如何更新異動的資料表

之前文章有討論到 EF Core DBFirst 如何使用,若未來資料表有相關異動,又該如何更新 Entities

與DbContext,以及能否做到指定的資料表更新即可


EF Core DBFirst

Entity Framework 的另一個起手式為 db first,相較於code first 能將既有的資料表快速產出對應的Models 

雛形,若資料表有相關更新,也可以透過工具來更新Models


EF Core CodeFirst

日常中有機會維護到 entity framework 的專案,也僅限於皮毛,而 ef core 也發展了一段時間,而對應的使用

情境似乎也越來越完善,分幾個項目稍微了解一下


2023年10月11日 星期三

計算「時間戳記(Timestamp)」是否在有效期限內

上回 有提到使用 「世界協調時間(UTC)」作為時間戳記,這樣除了還原當地時間變得很方便,若要比對該時間

戳記是還在有效期限內,也是蠻方便的,這邊就稍微紀錄一下' ~ 


2023年9月28日 星期四

使用「世界協調時間(UTC)」作為時間戳

有時候一些情境上會需要夾帶時間戳,用來判斷是否在有效的時間區間,應用情境較為常見的

有 token 的有效期限;而時間戳的選擇當屬「世界協調時間(UTC)」 最為準確,放諸四海皆準


再次踩到網址參數 UrlEncode() 的坑

這篇很明顯是個提醒文,提醒自己不要慌 ~ 

之前有寫一篇 UrlEncode() 特殊字元注意事項 文章,提到 .NET 中若需要網址編碼或解碼的情境,

請使用 Uri.EscapeDataString()、Uri.UnescapeDataString() 方法,這會讓特殊字元的編碼與解碼

都會跟上業界標準...


2023年9月12日 星期二

讓 ngrok 進到 IIS Express 偵錯

之前玩 LINE Bot 有用 ngrok ,那時就覺得這玩意真是厲害方便,讓開發 web hook 很舒服,

這次接第三方 API,想說ngrok 一陣子沒玩了,就來玩一下


2023年9月3日 星期日

解決 Visual Studio Code Terminal 不支援 pnpm 指令

今天安裝了 pnpm ,測試在 windows 環境及 cmder 皆能正常運作,但是來到 VSCode 環境的Terminal 下,

就會出錯,簡單紀錄一下解決過程


2023年8月28日 星期一

如何強制將排除的檔案納入版控

我們都知道在git 中若要將某些類型或相關目錄的下的檔案排除版控之外,可以透過 .gitignore 檔案

來設定相關資訊,但是就是會有例外,至於為何呢?無需太深入,動筆寫一寫


2023年8月22日 星期二

VSCode 偵錯 NET Core App 失效?

一些輕巧的驗證想法專案,有時候會使用 VSCode 來快速建立,但是若要能「偵錯」專案,就需要

一些設定,這時相關步驟就需要紀錄一下,雖然官網有提到但細節上可能沒有到位,故筆記一下


VSCode 檢查更新按鈕消失?

在一些電腦都有安裝VSCode,但最近發現怎麼有的VSCode沒有「檢查更新」按鈕,WTF 這個月份

確實有點敏感;遇到了,那就嘗試去了解並且解決,OK好 ~


ASP.NET Core Minimal Web API 初探

有時候開發時會需要弄個測試專案,但是又不想專案一大包,通常會使用 asp.net core empty 專案,

或是比較專業的說法是 minimal web api,除了輕巧快速之外,手感也不錯,這邊簡單紀錄一下


2023年8月21日 星期一

如何取得 Discord ID (PC版)

最近很多討論都移往 Discord 上,若人數眾多加上名稱搜尋有可能還是會重複,若能提供 ID,這樣更能識別

或是正確的被搜尋到,但是實際操作要找到 ID ,還真的有點繞,隨手筆記一下


新增 Cmder 的 RenameTab 快捷鍵

由於使用 Cmder 的情境時常會需要開很多 tab,好處是tab 的建立與切換都有快捷鍵支援,唯有修改

tab name 既然沒有對應的快捷鍵,這邊就紀錄新增操作,並且列出相關常用快捷鍵


NVM 安裝(Windows 環境)

很多時候本機會安裝多個Node.js 版本,管理上可能會有點費心,這時候透過 NVM 來操作就很

方便,例如檢視本機安裝了哪些版本,或是指定預設運行的版本以及切換


2023年8月18日 星期五

讓JS Function支援非同步

很多時候我們需要自訂JavaScript 方法,並且期望能夠支援非同步(async),以前各家瀏覽器支援度

不齊的情形下,可以借用 jQuery 來達到目的,現在已經不需要這麼麻煩了,直接使用原生的


2023年8月15日 星期二

設定瀏覽器頁籤快捷鍵使其快速「移動」

瀏覽器的「切換」很常使用(『ctrl + tab』與『ctrl + shift + tab』),但是頁籤的移動其實也是有需求,

在這之前都是透過滑鼠操作,有點雞肋,抓滑鼠就是累,能透過鍵盤完成才是王道,以下就是各瀏覽

器安裝套件與設定的過程


2023年8月9日 星期三

Create Live Template For Rider

最近更新 Rider 至 2023.2 的版本,突然發現原本設定的 live template 失效了,覺得怪,回頭使用

ReSharper 又正常呈現,覺得怪但一時間沒有去深究原因,就手動新增並紀錄一下


2023年8月7日 星期一

調整Cmder 的Minimize/Restore 快捷鍵

這篇算是一個備忘筆記,自己大部分習慣使用 Cmder 來處理指令的需求 ,但若是剛好在VSCode 下,

就會使用內建的 Terminal 快速處理,但當需要快速出或隱藏時會與Cmder 相衝突


2023年7月13日 星期四

SQL Server DateTime 型別注意事項

最近撈取資料並且使用 DateTime 型別欄位排序,但發現怎麼沒有跟預期的有差,想說資料新增進去應該

會差個幾毫秒,應該排序不是這樣的結果,想了想後,發現又忘了一個細節


2023年7月12日 星期三

使用 tampermonkey 安裝瀏覽器擴充功能

一些小型的瀏覽器擴充功能,不一定會出獨立的安裝套件,也許是一段腳本(JavaScript),此時就需要

透過 tampermonkey 這類的載體,方便我們加入相關腳本


2023年7月5日 星期三

使用 Bogus 套件產生假資料

有時測試資料在不同物件間的轉換時,都會先塞入一些臨時資料,然後再觀察其轉換的狀況,

重點其實是放在實際轉換的狀況,若前面的預先塞入資料能夠更方便那就太好了,無意間發現

Bogus 這個套件,測試了下挺不錯的...


2023年7月4日 星期二

解決 VS2022 套件管理器主控台訊息亂碼問題

今需要透過「套件管理器主控台」安裝套件,不料出現中文亂碼問題,猜想應該是需要指定編碼,

這篇就紀錄一下如何設定


2023年7月3日 星期一

使用 Mapster 資料轉換

之前都用 AutoMapper 套件當作兩個物件的資料轉換,但使用起來稍嫌麻煩,偶然發現Mapster 套件,

後續做了點實作,直覺使用上簡潔一些些,效能似乎也是不錯,筆記一下


2023年6月28日 星期三

使用 MERGE 語法新增修改刪除資料

有時會有個需求,是要將 A 資料表的內容倒入 B 資料表,或是某個資料來源結構跟B資料表類似,希望比對後新增或修改,常常我們會透過 IF EXIST() 方法來判斷,這次使用 MERGE 語法來試試


2023年6月20日 星期二

[小心防範] 測試Form 如何傳遞JSON格式文本

前些日子看了一下黑哥的文章:ASP.NET MVC 防止 AJAX POST CSRF 攻擊,好奇表單Form 要如何

傳送 Json 格式?不能全然相信這類設計


2023年6月11日 星期日

.NET Core 預設不支援「BIG5」編碼

.NET Core 預設不支援 BIG5編碼,使用時需要特別撰寫註冊,這部分可能會在使用有需求是透過 Encoding 物件做相關操作時會遇到,今天的情形是,需要測試讀取某個網頁內容,也會有 BIG5 問題,隨手紀錄一下


Console App 使用 top-level statements(頂層語句)該如何接收參數

C#9 開始支援 Top-level statements,VS建立專案時預設都會使用頂層語句,除非手動勾選取消,

,若使用了頂層語句,在程式進入點(Program.cs)都會少了 Main() 方法,一開始會稍稍不習慣,

稍微了解後也就還好...


2023年6月1日 星期四

JavaScript 判斷物件是否為空 '{}'、'[]'

今有個邏輯判斷,需要判斷物件是否為空 '{}',也許過程中會在該物件身上掛上屬性或方法,但在某些

情境下還是希望確認目前該物件的狀況是否為空,試了幾個方式,分享一下


ASP.NET Core Http Error 500.31

近期發現專案啟動時站台就噴錯,想說最近這專案應該沒有調整,怎突然來這一發,想想可能跟更新了

Visual Studio 2022 有關?


2023年5月30日 星期二

Tesseract-OCR:簡單應用光學影像辨識套件

最近有幸接觸到 Tesseract ,是個光學辨識引擎,是HP實驗室的專屬軟體,輾轉演變為開源,

而後由 google 開始贊助開發,現已非常強大


2023年5月28日 星期日

撰寫Python 自動安裝套件腳本

最近有幸接觸一些 Python 專案,開啟專案後會出現一些錯誤,提醒缺少一些套件,此時就必須依據提示一項

一項來安裝缺少的套件,過程確實繁瑣...


2023年5月9日 星期二

SQL Server 各暫存表的差異

會使用暫存表的情境,除了需要對資料做多次操作之外,再者就是要取得的資料過程過於複雜,如子查詢或是JOIN 三張表以上,而暫存表有幾種分類,稍微紀錄差異

2023年4月25日 星期二

使用FluentFTP 來實作簡易連線 Ftps

上回介紹中已使用 FileZilla 架設 FTP Server ,並且透過 FileZilla Client 來測試連線,這回我們寫程式使用 FluentFTP 來協助我們完成連線...


2023年4月24日 星期一

FileZilla 模擬 Ftps 連線

說到資料交換方式,其中FTP 會是許多廠商喜歡的方案,工程師需要模擬連線並取得對方 Server上的

的檔案,而Ftps 設定起來也很輕鬆...


2023年4月16日 星期日

ASP.NET Core 7.0 如何引用 Autofac

ASP.NET Core 在引用Autofac 套件中,相較於 Core 3.1 的版本而在 7.0 的版本中設定稍微簡潔一點

(但就真的只有一點點...),隨手紀錄一下


2023年4月8日 星期六

使用LINQ 達到Left Join 的效果(GroupJoin)

LINQ 的Join() 方法其效果等同於 SQL 的 INNER JOIN ,若有類似 Left Join 或Right Join 的效果話,

那使用 GroupJoin 會是一個解法,


2023年4月6日 星期四

透過 LINQ 達到自訂型別比對的效果

使用 LINQ 有時會需要比對相關集合,若集合內比對的元素為「字串」或是「數值」那就單純許多,但

若是欲比對的元素為自訂型別(Class),那就需要注意了;這邊稍微紀錄一下若自訂型別屬性不多時,可

使用較為簡潔的比對方式...