de en es fr nl pl pt sv zh

每周轮子之 server-only:一个空包背后的“毒药”

4Ark

前言 三年前写过两篇《每周轮子》系列文章,讲如何从零实现一个日常都在用的 npm 包。其中的乐趣就是看看自己实现和别人有什么不一样,同时也能开阔视野。 现在迎来第三篇,这次我们将目光转向 React Server Components(说到转,旧手机可以找… 毕竟众所周知,这个月初 Next.js 圈子大型翻车现场,先后爆出几个 CVE,最出名的当属 CVE-2025-55182,据闻我们的大善人 Cloudflare 两周崩两次也是因为它,逼得我几次在群里嘴臭。 (PHP 有一个很经典的漏洞叫作 PHP Object Injection) 当我知道这个 CVE 时,上 fofa...

一文讲透 Etherpad 插件开发

4Ark

Etherpad 是什么 Etherpad 是一款基于 Node.js 的开源实时协作编辑器,能让很多人同时在线编辑,团队用它写文章、新闻稿、会议记录或者待办事项都很方便。跟 Google Docs 比,它最大的优点是数据可以自己管,扩展性也很强。 本文不重复官方文档里那些基础的东西,而是结合实际,好好讲讲怎么开发一个集成了“富文本、组件化内容、多渠道发布”的插件。 Etherpad 大概长这样: 技术架构 Etherpad 用的是全栈 JavaScript,靠 Socket.io 做实时通信,还用 OT 算法解决多人同时编辑的冲突。 前端 (jQuery + Ace2):页面用...

多 Mac 设备配置同步方案

4Ark

前言 过去几年,我的主力机一直是那台 14 英寸的 M1 Pro,虽然也有 dotfiles 仓库,通过手工软链来同步,但充其量只是为了版本控制。 直到我入手了 Mac mini M4,才有了要同步两台设备配置的需求。因为我已经不止一次:在 A 机上装了某个命令行工具,到了 B 机又得重新安装、重新配置……折腾几次后,还是得找一种方案。 我的目标很简单:只要在任意一台机器上安装新软件或修改配置,其他设备可以快速做到 1:1 同步。 核心就两条命令: 离开当前机器前,运行 macup —— 将所有改动备份到仓库 到另一台机器前,执行 macdown —— 从仓库里还原 以下全是细节。...

OpenSpec 使用心得

4Ark

一、引言 如果在 2025 年,你还没有在工作中借助 AI,要么你的水平已经超越 AI,要么你就是被 AI 代替的部分。大多数人都不是前者,也不愿成为后者。如何高效、可靠地利用 AI,是每位开发者的必修课。 我个人的探索大致经历了以下几个阶段,从最初的简单补全,到如今的规范驱动开发——OpenSpec。 二、AI 工具演进阶段 洪荒时代:AI 仅作“补全” • 编辑器里集成 Copilot 插件,或者 ChatGPT 网页窗口复制粘贴,AI 只能做最基础的代码补全,效率提升有限。 集成时代:对话式编辑 • Cursor 等工具将聊天窗口直接搬进...

uni-app 多端组件属性与样式透传行为一致性实践

4Ark

现状分析 起因是一个以微信小程序为主开发的 uni-app 应用,在编译到 App 端后,出现了各种样式问题。 为了更好地理解这个问题,让我们创建一个最小化的示例项目: pnpm create uni@latest # 什么都不加 一个经典的嵌套组件,用于测试三个端组件样式表现: 这里可以看到,每个组件都开启了 style scoped,此时三个端的表现是一致的,没有任何问题: 然而,在实际开发中,我们经常会遇到这样一种情况:由于启用了 style scoped,往往会倾向于使用简单的 class 命名,比如大量使用 container 这样的通用类名。让我们看一个具体示例:...

uni-app 与原生小程序混合开发方案

4Ark

前言 在过去两年里,我接手维护了多个原生语法开发的微信小程序项目。由于新项目均采用 uni-app 开发,这些原生项目无法复用在 uni-app 生态积累的工具库、业务组件和 Hooks 等基础设施。 为了解决技术栈割裂的问题,探索并实践了多种混合开发方案,本文将分享相关的技术方案与实践经验。 项目现状分析 或许会好奇,为什么不直接选择用 uni-app 对项目进行全面重构呢? 其实,除了精力有限,更重要的原因在于: 线上存在众多活动页,这些页面相对独立且变动频率低,重构它们的收益并不高 项目已有功能较为复杂,后续开发需求主要是新增页面,而不是对现有功能进行大规模改造...

我如何自己实现 lint-staged

4Ark

前言 都 2025 年了还在聊 lint-staged?确实有点复古。但最近实在闲得慌,博客都快长草了,索性把过去几年踩过的坑和折腾过的轮子翻出来炒冷饭。接下来会陆续更新一系列文章,就当是给自己这几年的搬砖生涯做个总结。 为什么要自己实现 lint-staged? 说来惭愧,我司用的不是 git,而是 Mercurial (hg) 这个「冷门」版本控制工具。所以很自然地,git 生态下的各种神器都用不了。2022 年写过一篇 《Hg hooks 实践历程》,主要就是给 hg 造了个 husky 轮子,结果被领导看上了,在公司内推广使用。既然都做到这份上了,lint-staged...

2024 年终总结

4Ark

前言 “今年是过去十年最糟糕的一年,但可能是未来十年最好的一年。”在 2019 年,这句带着预言性质的话,当时我还未完全理解其深意。但如今站在 2024 年回望,竟显得如此贴切,甚至更具分量。 在经济下行、行业调整的大环境下,谁的日子都不好过。许多公司都在减员,失业的人也越来越多,这并非个人努力所能轻易改变,而是整个行业,整个社会都在经历一段艰难时期。 于我个人而言,今年似乎是凝固的一年,各方面都乏善可陈,几乎没有任何的改变。然而,在这充满不确定性的环境下,或许这种“不变”本身竟也未尝不是一种幸运。它意味着,尽管没有迎来期待中的跃升,但至少也没有滑向更深的低谷,还能维持着现有的状态。...

2024,我使用的工具从 A 到 Z

4Ark

写在前面 今年有一次,同事突然问我,可有什么好工具推荐。我一时竟怔住,不知如何作答。倒也不是没有,平日里确实积累了不少趁手的工具,只是仓促间让我说出来,倒也为难。 只因每种工具有其特定的适用场景,而每个人偏好亦有不同。正所谓:我之蜜糖,彼之砒霜。 事后想想,其实可以写一篇文章,把我用的工具都介绍一下。虽然数量不少,也不一定都适合每个人,但肯定有人能从中找到适合自己的。所以,我决定参考别人的方式,写一篇我自己的《从 A 到 Z》,把我 2024 年日常工作和生活中使用的各种工具,按照字母顺序一一列出来,和大家分享。 以下是一些工具的分类,包括 macOS、iOS、安卓 TV...

对 RSS 的再思考:被忽视的力量

4Ark

引言 作为一名多年的 RSS 重度用户,我曾通过 RSS 订阅几乎所有你能想到的内容:技术博客、社区帖子、Twitter(现称为 X)的动态、Telegram 消息、YouTube 更新等。得益于开源项目 RSSHub,我可以轻松地制作和订阅各种源。 我甚至尝试过将整本书的所有章节、某个网站的全部内容制作成 RSS 源,每天推送一篇给自己。这种方式既新颖又有趣。 然而,在 2023 年,我几乎停止了使用 RSS。主要原因是我意识到自己花在信息流上的时间过多,影响了工作和生活的其他重要方面。每天花费数小时浏览信息流,大多只是快速浏览标题,真正深入阅读的内容寥寥无几。停用 RSS...