檔案夾符號

Stacked PR 如何提昇代碼審查品質

當只有 10 行代碼改動還可能會細心檢查留言,當有 1000 行改動一切都 LGTM(Looks Good to Me)!要讓人好好集中精神盯著幾千行的代碼改動本身就是很難得的事,身為提交的一方,有沒有可以改善審核效率的方式?或許能試試看 Stacked PR。

瀏覽器符號

Cypress 與 Playwright 如何選擇?

在網頁提到 E2E 測試通常有 Cypress 與 Playwright 兩種選項,而兩種測試工具我都嘗試過。單論整體開發體驗來說我更喜歡 Playwright,不過還有更多可以考慮的要素在選擇合適的測試工具,紀錄我會在意的細節與選擇原因。

打勾框符號

什麼是測試金字塔?它真的有用嗎?

近期在回顧一些測試的概念,其中有個測試金字塔的概念來自於 Mike Cohn 的書 《Succeeding with Agile: Software Development Using Scrum》。還沒有看過這本書,但這個詞彙只要有研究過測試多少都會接觸到,這次來重新了解一下並輸出自己對這個議題的理解。

連結節點圖示

使用 Git Worktree 快速切換複雜的專案情境

近期不管是用 AI Vibe Coding 還是工作上切換不同功能感覺使用 git stash 不是很方便,雖然大致知道有 git worktree 但都還懶得學直接先跳過。這次有空來學如何使用 Git Worktree 快速切換複雜的專案情境。

上升箭頭符號

Vue defineExpose 是啥?子元件如何溝通?

近期要重寫很多的 Vue 發現多得是我需要多補充的知識。你可能了解 Vue 元件間透過 props down 與 event up 或是使用 Scoped Slots 來傳遞資訊。還有一種做法是「顯式地暴露某些變數或函式給父組件使用」。

鑰匙符號

瞭解「驗證」和「授權」的差別

驗證(Authentication)與授權(Authorization)是存取控制中兩個常被混淆的概念,背後分別代表兩種問題:你是誰?你被允許做哪些事?同時也將介紹幾種常見的授權模式,例如 RBAC 與 ABAC 管理授權。

早餐土司符號

從網頁演進看 Jamstack 如何解決傳統架構的痛點

要了解 Jamstack 架構解決什麼問題,需要先回顧網頁演變的歷史,從靜態檔案到動態伺服器渲染再到客戶端渲染,Jamstack 的核心概念是強調預先生成靜態頁面並解耦商業邏輯與內容,以提高網站效能、彈性與安全性。適合大多數動態資料不多的網站。

移動方塊

透過漸層偽元素淡入淡出可捲動內容

近期預覽我的線上履歷時發現閱讀體驗有點生硬,甚至最糟的情況下會裁到文字行間,導致沒有任何提示指明可以繼續往下滑動,這篇文章描述如何透過 CSS 偽元素達成捲動元素淡入的樣式。這個樣式我應用於自己的線上履歷或 CodePen 範例可以參考看看。

手指移動符號

實作可拖動 DOM 元素增添網站互動與趣味性

最初是看到 Glitch 網站 圖示像冰箱磁鐵可以隨意挪動的功能覺得充滿趣味,背後是使用 react-draggable 套件製作。不過考慮到速度與維護性,部落格不打算因為一頁特效就引入額外套件,所以從頭用 DOM API 手刻了相關功能。

資料庫符號

設置 Drizzle ORM 連接 Postgres 為範例

單純透過 SQL 與關聯式資料庫直接溝通,可能會帶來開發效率與安全性的問題,因此挑選一款合適的 ORM 多一層抽象是常見的選擇,而 Drizzle ORM 是我最常使用也是接觸 ORM 的起點。它在 TypeScript 生態中有出色支援,雖然相對新穎,但社群活躍,值得一試。

代碼方框符號

初學 Docker 並輕鬆建構 Postgres

剛接觸後端時我還不清楚如何有效重現服務供其他開發者使用,直到遇見 Docker 才大幅簡化各種設施的維護與重現的工作,是一項非常高回報的實用技能,本篇從實做角度透過 Docker 建構 Postgres 服務,了解它的便捷快速。

檔案夾符號

與關聯式資料庫對話:SQL vs SQL Builder vs ORM

開發網站無可避免的會和關聯式資料庫打交道,而互動的方式有三種:SQL、SQL Builder、ORM。這三者有著不同的使用方式、優缺點與適用場景,了解它們的差異能幫助我們做出更適合專案需求的技術選擇。分享我在 Node.js 的學習經歷。

公事包

挑戰改善 104 人力銀行網站清單載入體驗

近期很頻繁使用到臺灣最知名的求職平台:104 人力銀行,其中個人資料選單的體驗有潛在的問題值得挖掘。就目前 104 的體驗對我來說沒什麼好抱怨的,就是最少這個 `0` 如果能改成 `-` 或 `載入中` 代表無資料都清楚得多阿!就和 `0` 與 `null` 一樣,它們相近的意義是不同的。