档案夹符号

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` 一样,它们相近的意义是不同的。