平常工作上的測試框架都是使用xunit,但 .NET自己其實就有測試框架,而且在Vistual Studio的整合度也是最高的,所以我自己私心喜歡MS Test,而Test Deiver的框架,我覺得依照個人喜好,例如BDD的的優點是讓測試敘述易讀,可以讓後續維護方便和非開發人員也能看懂測試案例,但以自己隨便寫的小專案來說,我覺得不需要用到這麼大的陣仗,測試只要包含核心邏輯即可,所以趁著有一點時間來練習一下怎麼使用MS Test。
Posted by Lynn on Sunday, July 9, 2023
以往我們比較熟悉的是Queue和ConcurrentQueue,偶爾也會看到BlockingCollection,Queue的主要概念就是先進先出的原則,舊有的Queue基本的方法就是Enqueue、Dequeue、Peek,但不是Thread safe的,而ConcurrentQueue雖然是Thread safe,但卻不能限制Queue的長度大小,而最新的BlockingCollection雖然可以限制長度了,但相比之下少了Async的支援和一些靈活性,以下是整理比較。
Enqueue
Dequeue
Peek
容器化已經慢慢變一個趨勢了(當然還有更潮的ServerLess),聽到的大部分公司不是正在前往容器化的路上就是已經完成容器化,甚至Dotnet在建立專案的時候都可以直接建立Dockfile,執行的時候也可以直接用docker container的方式執行,簡直有夠完美,但假設接下來會需要整合自己的CI/CD流程,這個時候就很需要自定義dockerfile了。
Posted by Lynn on Saturday, July 8, 2023
來還技術債啦!!!
剛入職時接到的第一份工作是要匯出一個API回傳的資料,並處理成CSV的格式匯出讓使用者下載,因為格式單純所以那時也沒有使用任何CSV的套件,就單純回傳一個組好的物件。
那時資料量不多,所以也安安穩穩的度過了一年的時間,直到最近資料量暴增,於是發生了OOM 😆
但目前很可惜要處理這問題的人並不是我,所以想說直接來練練手好了
Posted by Lynn on Tuesday, June 27, 2023
常常聽到TCP、UDP等等ProtocolType,但這些東西都被封裝得好好的,實在是沒自己特別寫過,基於好玩想說來測試看看,.NET 自己有實作了TcpClient和TcpListener,實現方式也很簡單,不過官網明確說明了建議進階使用者使用Socket Class,因為TcpClient和TcpListener建立在System.Net.Sockets.Socket 之上,不過今天是想抓抓看傳輸內容,所以就直接用TcpClient和TcpListener吧,Socket Class就等下篇文章了。
TcpClient
TcpListener
Socket Class
System.Net.Sockets.Socket
Posted by Lynn on Sunday, June 25, 2023
.NET Developer, Open Source Enthusiast