enx:认证从 Cognito 换成了 Clerk,单词高亮换成了浏览器原生的 Highlight API。

enx:认证从 Cognito 换到 Clerk

当初选 Cognito 的原因是,那会儿在聊一个职位,对方公司用 Java 技术栈,也用 AWS。我想让自己更熟悉 AWS 和 Java 一些,所以 enx 选型的时候选了 Cognito,还给 enx 加了一个 Java 后端。

那个职位后来没有 Offer,见 W33。

这周把认证换成了 Clerk。换的原因是 Clerk 和 Google 登录集成得更好一些,另外它同时支持 Google 和 GitHub 两种登录。网页端和扩展的会话也能同步。两端手写的 OAuth 客户端一起下线,Cognito 那套基础设施也删掉了。

enx:单词高亮换成浏览器原生的 Highlight API

有天晚上碰到思科的前同事 Roc,聊了一会儿,发现自己的前端知识实在太匮乏了。页面上点一下要查的词,其实可以用鼠标的坐标反查到点中的是哪个词,不需要像之前那样预先改 DOM、把所有词都拆开包起来,也不用挂那么多 onClick。

以前的做法就是把匹配到的单词用元素包起来,再给这个元素加样式。这样会改动页面的 DOM,在结构复杂或者会自己重绘的页面上容易出问题。

这周换成了 CSS Custom Highlight API:高亮范围用 Range 描述,交给浏览器渲染,不再往页面里插元素。点击查词改成在容器上做事件委托,用 caretPositionFromPoint 定位点到的是哪个词。

顺带把两件事拆开了:「阅读时高亮生词」和「点击查词」现在是两个独立的开关,可以只启用其中一个。X 上切换推文时正文是原地替换的,加了自动重建。Playwright 的用例按新的实现重写了一遍。

周六:大黑石

周六老婆公司团建,在大黑石的海边烧烤,她带着女儿去了。女儿下午有英语课,我中午开车去大黑石的沙滩接她们。

据说,小朋友到了沙滩就想去海边,饭都不吃了。一开始还在岸边挖沙子,后来看妈妈下水游泳,她也要下水。下水之后就不想走了,用老婆的话说是 “血脉觉醒”。

上次带她去海边是在广鹿岛,那时候她还只是在浅水里捡海星和贝壳。

路边为啥要栽这么多树…

开车去大黑石的路上,偶尔过桥的时候能看到远处的山,景色还不错。其余大部分时间视线都被路两边的树挡着,开多久,窗外都是一样的树。

如果没有这些树,能看到远处的村庄和远处的山,会不会更好看一些。路边的树是不是栽得太密了。

望鱼山

大黑石的沙滩走到尽头是望鱼山,那里有一处距今三四千年的遗址,青铜时代。因为要赶时间带女儿回市区上课,没有往山上走,下次再去看看。

从遗址所在的位置看,背山面海。古代人类也是很会挑地方。

李诞的书

在看《李诞工作手册》,断断续续地看。等电梯的时候、坐电梯的时候、手边没有电脑的时候,或者 AI Agent 正在干活、我在等它输出的时候,看几页。

2026 W36