每周见闻(88):你知道常见的端口号的由来吗?
约 1643 字大约 5 分钟
2026-10-04
每周见闻:2026-09-28 - 2026-10-04
你知道常见的端口号的由来吗?
<smarmelling> — The accidental history of 3000, 8080, and other port numbers[^3]
标签:网络,冷知识
你有想过常用的端口号是怎么来的吗?为什么 Redis 是 6379;Vite 是 5173?这篇文章里,作者探索了这个问题。答案或许和你想的不同。
比如 3000 大概率是 Rails 的 DHH 随手挑的;8080 是 80 加 80;5173 藏着 VITE 的梗(VI=51,TE=73);Redis 的 6379 用九宫格手机能敲出 Merz,是意大利模特的名字,被作者拿来当蠢的代名词。并非什么端口都有原因,很可能只是因为第一个人随便一写,后面的人就只是单纯地跟着用而已。

SkillCat 新增【Skill 优化】和【触发记录】功能
在 37 周的周刊中,介绍了我开发的 Skill 管理工具:SkillCat
最近趁着国庆假期,便猛猛地指挥“蓝色大肥鱼(DeepSeek)”更新了一波功能。这一次主要添加了两个与 Skill 管理相关的功能:
- Skill 的优化建议:当用户配置好自己的 API Key 后可以让大模型对当前 Skill 提出优化建议。
- Skill 的触发统计:记录 Agent 触发 Skill 的次数、时间、频率、触发词。方便观察 Skill 的调用情况(目前仅适配了 OpenCode)


需要对 Skill 进行管理的朋友不妨试试看这个工具。SkillCat 官方网站
技术
1、The Grand Unifying Architecture of Frontend[^1]
标签:前端,架构
这篇文章讨论了一个老问题:状态到底该放客户端还是服务端。
作者认为,前端架构其实就三层职责——导航归浏览器、内容归服务端、即时反馈(loading、乐观更新)归客户端。而 SPA、HTMX、LiveView、Astro 到现在的同步引擎,无非是这三层权重不同的组合。他还拿 Solid 2.0 演示怎么把三层都做成可调的。
我比较赞同按职责划分,让服务端成为内容的唯一来源。客户端只负责做样式以及数据的清洗,不做提供。这样当出现问题时,链路和排查会相对容易许多。

2、Improving site performance by shipping more CSS[^5]
标签:CSS,性能,设计系统
GitHub 的 Primer 把 CSS-in-JS 迁回 CSS Modules 换来性能提升。CSS-in-JS 是 React 流行后带来的变化,将 CSS 作为组件的整体并且可以通过变量的控制来切换样式,在代码编写上更加地灵活。
但当组件增多时,就面临了性能上的问题。CSS-in-JS 需要在客户端初始化样式、在服务端收集样式,组件一多就崩。新方案没有运行时,最后 SSR 时间降了 55%,组件初始化快了 25%。顺带还清理了大量 sx prop,把历史包袱也一并卸了。
由此也可见技术上并没有所谓的“银弹”。早期流行的技术,等体量上来后也会成为历史包袱。

3、Optimizing objects with null prototypes[^6]
标签:JavaScript,V8,性能
在 JavaScript 中,对象通过原型链传递,所有的对象都指向 Object 对象。因此,有时会使用 { __proto__: null } 字面量建一个干净的对象。但在 V8 中,它会永久掉进 dictionary 模式,读写都走哈希表,在性能上会慢上一大截。
作者发现 Node core 的 WebStreams 里就有几处这样的对象躺在热路径上,换成 class 实例或 Object.setPrototypeO 之后,pipe-to 吞吐直接翻倍。当然并非所有的 __proto__: null 都要拆,只收拾那些一秒跑一百万次的,就能有很大的性能提升。
工具
1、Introducing cf: the agentic CLI for the entire Cloudflare API[^2]
标签:Cloudflare,CLI,Agent
Cloudflare 发布了面向 Agent 的 CLI:cf,覆盖整个 Cloudflare 3000 近 3000 多个 API。随着 AI Agent 调用占比的增加,现有 Wrangler 280 个 API 无法应对数千种操作。
cf 从设计之初就是针对 Agent 使用的:默认输出 JSON、自带内建命令搜索、使用 TypeScript 编写配置。未来 CLI 的开发,除了面向人也要考虑面向 Agent。

标签:性能,前端
一个 JS 页面的性能预算工具,把 JS 对终端用户的真实成本算出来,超出限制时就可以在 CI 中报错。
除了传统的体积上的检查和限制,它还通过 headless Chrome 测真实的下载和执行时间,可以获得更加准确的时间。支持 ES module 和 tree-shaking,使用 --why 还能用 Statoscope 找到最大的依赖。许多流行库如 MobX、MUI、Ant Design 都在用。

生活
1、道歉要趁早[^7]
标签:人际,随笔
作者路上听播客时被一句话绊住:道歉一定要趁早。顺着这句聊开——成年人关系降温,多半不是天塌下来的冲突,而是缺了一句及时的道歉。拖着不认错,原本的技术性失误会在沉默里发酵成人品问题。对方嘴上说没事早忘了,心里其实早把你从朋友降成了泛泛之交。
从这点引申开去,趁早也不意味着越快越好。太快会让人觉得出于形式,没有意识到问题的所在;花半天到一天把错误的原因想明白,把问题捋顺并给出后续的解决方案,或许是个合适的时机。
参考文章:
- [1] The Grand Unifying Architecture of Frontend: https://dev.to/playfulprogramming/the-grand-unifying-architecture-of-frontend-bhk
- [2] Introducing cf: the agentic CLI for the entire Cloudflare API: https://blog.cloudflare.com/cloudflare-cf-cli-launch/
- [3] <smarmelling> — The accidental history of 3000, 8080, and other port numbers: https://smarmelling.com/posts/the-accidental-history-of-3000-8080-and-other-port-numbers.html
- [4] ai/size-limit: Calculate the real cost to run your JS app or lib to keep good performance. Show error in pull request if the cost exceeds the limit.: https://github.com/ai/size-limit
- [5] Improving site performance by shipping more CSS: https://github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css/
- [6] Optimizing objects with null prototypes: https://adventures.nodeland.dev/archive/optimizing-objects-with-null-prototypes/
- [7] 道歉要趁早: https://blog.solazy.me/20260930/
