Notes

28 posts with this tag

CA: Data Transfer Object (DTO)
為了解決層與層之間的耦合,內部核心 Entities、Use Cases 去依賴外部格式,可能會造成今天欄位異動,連動核心需要跟著去修改,違反了依賴反轉原則(DIP),日後要擴充或是重構也是一大挑戰。
6 mins read
一分鐘闡述你的價值
從過去不管是找工作或推甄面試,還是社交場合與人溝通,又或是跨部門合作時,有多次情境會碰到需要短時間介紹或敘事一個內容,這也是最快讓別人認識你的機會,如果沒有經過練習通常很難講得流暢。
5 mins read
為何軟體開發要做向下兼容
平常在使用應用程式時,或許你經常會聽到為什麼改版後,舊的功能就不能用了,或者是系統要求你更新,否則就無法繼續使用。這種情況下可能就缺乏向下兼容性。
7 mins read
為什麼 TypeScript 不做更強的型別推論
為什麼 TypeScript 不做更強的型別推論
關於 TypeScript 為何不做更強的型別推論的這個問題,其實背後牽涉到型別系統的哲學,簡單來說,就是一個「型別安全與靈活性之間」的取捨。
8 mins read
MECE 金字塔原則
MECE 金字塔原則
在許多知名企業的新人訓練或專業培訓中,都會聽過 MECE 金字塔原則,目的是提升溝通與邏輯思考能力,確保資訊的分類「不重疊且無遺漏」,幫助個人在論述時更有條理與說服力。
8 mins read
Vitest with React Testing
Vitest with React Testing
撰寫測試一直都是確保程式碼可靠性的一個重要環節,通常在 React 中,我們可以選擇使用 Jest 或 Vitest 根據專案需求來撰寫 Unit Test,不過 Vitest 在 Vite 專案中整合較為容易。
6 mins read
Kubernetes - Deployment Strategies
Kubernetes - Deployment Strategies
在軟體業工作一陣子後,一定都會碰到 Zero Downtime 的問題,特別是在版本更新時,如何確保系統穩定、不影響使用者體驗,如何解決是 DevOps 中的重要課題。
8 mins read
MacOS 將 Docker 檢測為惡意軟體問題
MacOS 將 Docker 檢測為惡意軟體問題
近期在開發過程中,因為重新啟動了 MacOS 後一直跳出不明彈窗,顯示檢測到 Docker 包含惡意軟體,也因為這個東西搞了個大烏龍,算是個寶貴的經驗...,還是紀錄一下好了。
5 mins read
[TS] Set、flatMap 優化資料搜尋
[TS] Set、flatMap 優化資料搜尋
最近在工作中遇到需要從複雜的資料結構中提取特定資料的問題,面對這種多層結構的資料直接暴力搜尋效能明顯不太理想,正確的方式應該是先將資料做扁平化處理,再透過更高效的搜尋策略來提升效能。
6 mins read
[TS] Enhancing React Views with Enums
[TS] Enhancing React Views with Enums
在設計元件時,面對不同的情境通常會需要撰寫各種不同的表達式。一般除了使用物件來定義之外,Enums 的寫法也是一種既優雅又高效的選擇。
5 mins read
Common Mistakes with useEffect Dependencies
Common Mistakes with useEffect Dependencies
useEffect 作為 cleanup function,是個強大的副作用處理函式,但如果加了錯誤的依賴,可能導致效能變差,或發生無法預期的行為。此外也談談一些對 useEffect 的誤解。
8 mins read
Using SWR for Better Data Fetching
Using SWR for Better Data Fetching
傳統 API Data Fetching 經常需要依賴 state、redux 管理狀態,同時也要為效能優化去實作,如:Cache、Revalidate、Asynchronous、Dependent Fetching 等機制,但這些都可以透過 SWR 來簡化。
6 mins read
Handling Errors Gracefully in React
Handling Errors Gracefully in React
錯誤處理對開發者一直都是門課題,不論系統穩定性或使用者體驗都十分重要。而在 React 16 中引入了 Error Boundaries 能夠用來捕捉渲染錯誤進而導致頁面崩潰的問題。
4 mins read
Homebrew 打造簡潔優雅的開發環境
Homebrew 打造簡潔優雅的開發環境
近期工作換到 MacOS 上開發,也因此接觸到 Homebrew。除了是開源之外,Homebrew 也非常容易透過 CLI 來安裝各種 Package,當需要換開發環境時,也能夠整包匯出帶到新的環境。
4 mins read
TypeScript 之 Generics 泛型
TypeScript 之 Generics 泛型
Generics 泛型是一種高靈活性定義行為或結構的一種方法,當你定義了不重複但有相似內容的結構時,泛型是個很好的選擇,而 JS 本身並不支援泛型,直到 TS 出現才引入泛型的特性。
5 mins read
Redux Toolkit (RTK) 簡化狀態管理
Redux Toolkit (RTK) 簡化狀態管理
在 Redux Toolkit 出現前,使用 Redux 頻繁操作 state 是一件相對麻煩的事情,而 Redux Toolkit 的出現簡化了重複性流程,也提供了一些 API 減少重複性質的程式碼。
6 mins read
React 開發上的小技巧
React 開發上的小技巧
平時在撰寫 React 最常做的動作不外乎就是建立元件、匯入 Hook 或其他 lib,本篇分享幾個快捷鍵加快開發的小技巧,另外也會提到幾個快捷鍵重寫變數、快速調整程式碼排版等等。
4 mins read
前端效能優化(2) - Throttle
前端效能優化(2) - Throttle
Throttle 也是一種常見的效能優化方式,與 Debounce 類似,但不同的地方在 Throttle 能確保一個函式在一段時間內只會觸發一次,無論該函式被呼叫幾次。
3 mins read
前端效能優化(1) - Debounce
前端效能優化(1) - Debounce
Debounce 是一種常見的效能優化方式,主要用於限制高頻事件的觸發次數,例如:當你使用 Google 搜尋某個關鍵字,它並不會在你輸入過程不斷搜尋,而是當你停下輸入後才去做搜尋的動作。
3 mins read
使用 Astro+Tailwind 實現 Dark mode
使用 Astro+Tailwind 實現 Dark mode
紀錄如何使用 Astro+Tailwind 來實現 Dark mode 功能,並將狀態儲存在 localStorage,每次進入時檢查 localStorage 的 theme 來切換 mode。
3 mins read
淺談 JavaScript 單執行緒語言如何做到異步運算
淺談 JavaScript 單執行緒語言如何做到異步運算
JavaScript 是單執行緒語言,照理來說應該一次只能做一件事情,但他卻能做到非同步進程,不讓程式被 blocked,這要歸功於 Event Loop,但 Event Loop 並不存在語言本身,而是由 runtime 來實現。
6 mins read
在寫 HTML 需要注意的事
在寫 HTML 需要注意的事
本篇主要整理過去當助教期間碰過的詢問以及個人也曾犯過的錯,標籤語意化、標題標籤順序性、h1標籤的唯一性、列表標籤的正確使用方式、你所忽略的 alt 屬性、type 屬性的重要、寫好 head 標籤
6 mins read
JavaScript 之 this 的運作
在 JavaScript 中,this 的指向通常是根據函數如何被調用來決定的。首先我們先觀察一個函式的參數包含哪些東西
3 mins read
動態規劃 DP
動態規劃 DP
動態規劃 (Dynamic Programming) 簡稱DP,屬於 Divide-and-conquer 的延伸,主要可以將原問題分解為相較簡單的子問題,再通過子問題的解求出複雜問題的方法
3 mins read
CSS 階層效能優化
CSS 階層效能優化
其實CSS階層在瀏覽器上會影響效能,但因為現今電腦性能極佳,電腦跑起來可能沒有明顯差異,就算對於電腦影響看似不大,也會衍伸出程式上的管理問題
3 mins read
在 CSS 中的權重
在 CSS 中的權重
在 CSS 中經常會遇到需要覆蓋樣式的情況,這通常涉及到 CSS 的權重問題。當多個 CSS 使用在同一個元素並且產生衝突時,就會根據權重來決定最終的樣式為何
2 mins read
效能分析與複雜度
效能分析與複雜度
演算法的目的在於改善一個東西或問題,並在從問題中找出現有最好的辦法,一個好的演算法可以節省許多時間與記憶體空間,而程式在執行時所佔用的記憶體空間也會反映出執行所需要的時間,因此才需要效能分析,但其實也不用要求的非常精準,只需要一個最後結果可符合需求且大家都能夠接受的就行了
5 mins read
jQuery 濃縮精華
jQuery是HTML、CSS、JavaScript撰寫出來的library,用來製作動畫效果,雖然撰寫上很方便,但當程式碼龐大時會因寫法的關係較難維護
4 mins read