0%

hi all, 小弟最近在讀本書,叫做原子習慣,那這本書主要在講如何透過建立習慣,來達到自己的目標,這篇文章主要會用來記錄這本書的內容,預防針打一下,不一定是每個知識點都會紀錄。

所有的筆記都會紀錄在這一篇,所以這是一篇連載筆記?

閱讀全文 »

前言

Hi all, 今天在進行 code review 時,我們討論到一個有趣的問題:如何在 C# 中動態解析 JSON 字串,特別是當我們不確定 JSON 結構,或是結構過於複雜不值得建立完整模型時。

傳統上,我們可能會使用 Dictionary<string, object> 或建立專用的類別來解析 JSON。但今天我想分享另一個更靈活的方法:使用 C# 的 dynamic 類型搭配 ExpandoObject

閱讀全文 »

Hi all,因應工作需求,我們使用了在日常開發中不太常用的 HttpContextAccessor,覺得很方便,特此做個筆記。

情境介紹

  • 多個 API 需要共用相同參數(以下以 customerId 為例)。
  • 業務邏輯層需先將 customerId 轉換後再使用。
  • 如果在每個 API 都分別定義相同的 Request Model 並實現相同的轉換邏輯,程式碼會大量重複。
  • 因此,我們希望透過依賴注入(DI)注入一個 StatusContext,在其中統一取得並轉換 customerId,上層使用時只要注入即可。
閱讀全文 »

How to apply APM to .NetCore

Some referred from FeloSearch

Certainly! Setting up Elastic APM with your .NET application involves several steps, which I’ll outline in detail below. We will cover installation, configuration, and deployment, ensuring you’ll be able to monitor your .NET application effectively.

1. Prerequisites

  • Elastic Stack: Ensure you have an Elastic Stack (Elasticsearch, Kibana, and APM Server) set up. You can do this locally, but it is often deployed as part of an Elastic Cloud setup.
  • .NET SDK: Ensure you have the .NET SDK installed.
  • NuGet Package Manager: This is needed for installing necessary dependencies.
閱讀全文 »

接續上篇,書中有一個小篇章在講述狀態這件事情,並講述到 STM 這個防併發的做法,覺得蠻有趣的故作個筆記。

What’s Software Transaction Memory

簡單來說,它是個限制存取資源的機制,STM 透過把一組 (讀取, 寫入) 封裝在一個 transaction 中,來實現所謂的操作原子性,其中最主要的目的在於避免資源競爭、Dead-Lock 的情況發生。

以下是 STM 的一些特性:

閱讀全文 »

有天心血來潮去天瓏書局逛逛,看到了一本由 UncleBob 撰寫的 Functional Design。乍聽之下感覺還不錯,就當給自己的 2025 年新年禮物回家讀,所以才會有這篇筆記。

什麼是 Functional Design

簡單來說,就是以 function 的方式撰寫程式碼(我知道這樣有講跟沒講一樣…)。

以下是 Uncle Bob 的回答:

Programming without assignment statements.

以下是我結合書上列出來的觀點及一些自身的想法所列出來的 Functional Design 的幾個特色:

  1. Always f(x)=yf(x)=y
  2. Function 內不會有變數上的變動
閱讀全文 »

到底怎麼切微服務這是個蠻好發起的問題,以下是我跟我的前同事 丁丁 在吃晚餐時隨口聊的,覺得蠻有趣的所以寫寫文章。

為什麼要切微服務

  • 當一個組織想做一些架構重構的時候,首先要想的並不是服務怎麼切,應該要想為什麼要切。

對於一個對技術有相對熱忱的工程師來說,我知道遇到問題不去想解法是件很難的事情。但就自己在經歷了前公司的微服務後,加上前前後後看到的一些架構後,回頭反思一下,得到了一個啟發:

閱讀全文 »

ECS Log Standard

ECS(Elastic Common Schema)是一個開放的標準,用於統一和簡化不同來源的日誌資料。以下是一些關於ECS log standard的重要資訊:

為什麼使用ECS?

ECS 提供了一個統一的結構,使得來自不同來源的日誌資料可以更容易地被解析和分析。這有助於提高日誌資料的可用性和可理解性。

ECS 的主要特點

  • 一致性:ECS 定義了一組標準欄位,使得不同來源的日誌資料可以使用相同的欄位名稱。
  • 擴展性:ECS 允許使用者根據需要擴展欄位。
  • 相容性:ECS 與多種日誌管理工具和函式庫相容。
閱讀全文 »

Hi all, 因為工作上的關係接觸到了所謂的 AOP 框架, 覺得挺有趣的故藉此文章分享。

Introduce

AOP(面向方面程式設計/Aspect-Oriented Programming), 他是一種寫程式的方法,簡單來說就是把一些常常要用到,但是跟主要業務邏輯無關的功能抽出來統一處理。
舉個例子, 假設我們在寫一個購物網站然後建立交易的流程如下:

閱讀全文 »