Web

41 篇内容

技术文章Bram.us

Unlock Immediate Diagonal Scrolling with CSS scroll-axis-lock: none

本文介绍 CSS 新属性 `scroll-axis-lock`,用于控制浏览器默认的滚动轴锁定(railing)行为。当用户在二维滚动容器中的手势沿单一轴向有明显优势时,浏览器会锁定该轴,忽略垂直方向的微小偏移,这有时会阻碍用户立即进行对角线滚动。`scroll-axis-lock: none` 可以禁用此锁定,使滚动完全跟随用户输入。文章通过视频对比了 Chrome 与 Safari 的差异,并提供了交互演示和代码示例。当前仅 Chromium 153 支持,Firefox 和 Safari 尚未支持,作者建议将其作为渐进增强使用。该属性适用于需要精确对角线滚动的场景,但可能引入直线滚动时的抖动,开发者需根据平台差异权衡。

本文以清晰的解释和对比演示,揭示了浏览器滚动轴锁定的底层行为及其对用户体验的影响,并提供了直接的控制手段。适合前端开发者、交互设计师理解并解决二维滚动交互中的“卡顿”问题。文中展示的渐进增强实践和平台差异分析,可迁移至其他新 CSS 特性的评估与应用,具有显著的参考价值。

工程实践Cloudflare Blog

Introducing Kitesurf: The agent-first browser that runs in V8 isolates on Cloudflare Workers

Cloudflare推出Kitesurf,专为AI代理设计的轻量浏览器,运行于Cloudflare Workers的V8隔离环境中。文章阐述了为何需要新浏览器:传统Chromium对代理而言资源开销大,而代理更关注令牌数、上下文窗口和成本。团队采用Rust编译为WebAssembly、借助Web Platform Tests驱动开发、强调组件隔离与无状态设计。整体架构分为Engine处理CDP/HTTP、PageScript利用动态Worker解析HTML/CSS/JS、PageRenderer光栅化生成截图。性能上比Chromium节省3-7倍内存和CPU,但渲染速度慢1.7倍。当前兼容性有限,不支持视频和WebGL,适合一次性截图、PDF生成等简单任务。项目仅12周,开源在即。

推荐收录,因为文章并非产品发布,而是深入的技术工程案例,详尽阐述了为AI代理构建轻量浏览器的设计决策、架构实现和性能权衡。适合从事浏览器、AI代理或边缘计算基础设施的工程师阅读,其中的隔离、无状态设计与WPT测试驱动开发方法可迁移到类似复杂系统的构建中。但需注意项目尚处早期,兼容性有限。

技术文章Cloudflare Blog

Building an open Agentic Internet: readable, discoverable, callable, and payable

文章提出“代理互联网”愿景,将AI代理视为网站的新型访问者,围绕可读、可发现、可调用、可支付四个特性构建开放基础设施。作者分析了传统网络对代理的不适应性,如重复抓取、广告模型失效,并阐述了Cloudflare提供的技术组件:Markdown for Agents和Kitesurf浏览器实现高效读取,AI搜索和AEO优化发现,WebMCP和Code Mode支持直接调用页面功能,x402协议和钱包机制处理支付。文章强调身份认证(Web Bot Auth、PACT)和开放标准的重要性,旨在让域名所有者自主选择对代理的接纳与付费规则,避免互联网封闭。内容偏重架构设计理念,未涉及具体实现细节,但为开发者和架构师理解代理时代的网络基础设施提供了方向性参考。

该文章勾勒了AI代理与互联网融合的底层架构蓝图,提出的“可读、可发现、可调用、可支付”框架切中当前代理生态的关键需求,对构建开放、互操作的Web服务具有长远参考意义。适合关注Web基础设施、AI工程化和分布式系统的开发者与架构师了解前沿趋势和设计模式,虽然缺乏代码级细节,但其概念模型可迁移至实际系统设计中。

工程实践Simon Willison

One-shotting a Raccoon Heist game using Claude Fable 5

Simon Willison 使用 Claude Fable 5,仅凭一条旧推文和两张概念图,全程在手机上完成了一个 3D 浣熊盗窃浏览器游戏。文章详细记录了从 GitHub Pages 部署、提示词设计到 AI 自主生成纹理、构建场景、添加巡逻犬等机制的全过程。Claude 不仅使用 Three.js 和 Playwright 进行自动化测试,还通过 OpenAI 图像 API 生成静态资源,并完成了多屏适配。作者最终评估了游戏可玩性,指出 AI 擅实现但不懂“好玩”,并将其视为探索 AI 代理能力的低风险实验。该案例为 AI 辅助开发的工程流程、局限性和迭代方式提供了具体参照。

文章以完整的工程案例展示了 AI 编程代理从零构建软件的过程,包含提示词、代码片段、测试方法和最终评判,信息密度高且证据链完整。适合关注 AI 辅助开发、快速原型或工具集成的从业者阅读,文中的工作流程、自动化测试方式及对 AI 设计能力局限的坦诚分析具有可迁移的参考价值。

技术文章Bram.us

Styling the Navigation: Declarative Route and Navigation Matching in CSS

本文介绍了Chrome团队提出的CSS声明式路由与导航匹配新规范,旨在解决多页应用(MPA)中使用View Transitions时难以根据来源和目的地页面对导航动画进行声明式样式控制的痛点。作者详细阐述了@route、@navigation、:nav-source和:link-to()等关键语法:@route定义命名路由模式,@navigation查询当前导航的起止端点,:nav-source定位发起导航的元素,:link-to()则允许基于链接目标路由应用样式。文中的一个滑动导航Demo演示了该方案无需JavaScript即可动态切换视图过渡类型,显著简化了导航动画逻辑。该规范目前处于早期提案阶段,即将提交CSS工作组F2F会议讨论,参数匹配等细节仍在设计中,实验性支持已可在Chrome Canary中启用。

推荐收录,因为文章深入解释了正在演进中的CSS导航匹配规范,详细提供了设计动机、语法定义和实际用例,对关注View Transitions和声明式CSS能力的前端开发者具有直接参考价值。它为简化导航动画、减少JavaScript干预指出了一条标准化路径,读者可以提前了解并影响规范走向,但其API尚未最终确定,请留意未来变化。

技术文章Jake Archibald

Fixing my tooltip accessibility mistake

文章记录了一次工具提示(tooltip)无障碍(accessibility)实现错误及修复过程。作者在制作基于popover='hint'的图标按钮提示时,初始使用aria-describedby将按钮与提示相关联,但因提示文字重叠导致屏幕阅读器重复朗读,便错误地移除了按钮的aria-label,使按钮失去可访问名称。在专家反馈后,作者将aria-describedby改为aria-labelledby,直接从提示元素获取可访问名称,解决了朗读重复和语义缺失问题。文中还讨论了分割标签与描述的备选方案,并强调需用多个屏幕阅读器测试以避免单一工具遗漏问题。本文适合需要为SVG图标按钮提供无障碍说明的前端开发者,明确区分了两个ARIA属性的适用场景与边界。

本文通过作者亲身踩坑案例,清晰对比了aria-describedby与aria-labelledby的无障碍语义差异,直接展示了从错误到修复的完整过程与测试依据,对前端开发者编写可访问的图标按钮、工具提示具有直接可迁移的指导价值。尤其适合关注Web无障碍实践与屏幕阅读器兼容性的开发者参考。

个人心得Julia Evans

Some more things about Django I've been enjoying

作者记录了自己尝试使用 Django 构建 2010 年代风格网站(后端渲染 HTML、最小化 JavaScript、SQL 数据库)的学习过程和个人体验。她重点分享了几项让她感到愉快的 Django 特性:可组合的查询集(QuerySet)方法让查询条件封装和复用变得可读且模块化;内置模板过滤器(如 urlize、linebreaksbr、date、querystring)极大简化了 HTML 生成和链接拼接;自动数据库迁移系统使模型变更和演进成本极低。在代码组织上,她放弃了基于类继承的视图,转而采用函数式视图,感觉更直观。她还提到对 Django 性能的困惑,如模板缓存被误关闭、不确定性能预期与优化方向。全文是从业者视角的具体经验分享,而非系统教程。

这是一篇真实的开发者实践反思,聚焦于 Django 框架中提升效率和可读性的具体特性(查询集封装、模板过滤器、自动迁移)以及个人在代码组织和性能调校上的取舍。对正在学习或评估后端渲染栈、尤其是小型到中型 Web 应用的开发者来说,文中列举的便利点与踩坑经历具有直接的可迁移参考价值。

工程实践Julia Evans

Learning a few things about running SQLite

Julia Evans 分享了她近期在 Django 网站中使用 SQLite 时积累的几个运维经验。她首先发现对 4000 行的表使用 FTS5 全文搜索耗时 5 秒,运行 ANALYZE 后降至毫秒级,推测是查询计划不佳所致。清理大量行时,删除操作超过 5 秒会导致其他工作线程写入超时崩溃,她通过小批量处理来规避。备份方面,最初使用 sqlite3 VACUUM INTO 加上 restic 上传到 S3,但偶尔 OOM 并产生锁问题;近期改用 Litestream 进行增量备份。她还提到拆分多个数据库文件有助于管理。文章基于个人小型项目,作者坦言若需要多写入支持可能得迁移到 PostgreSQL。

本文来自真实工程实践,详细记录了 ANALYZE 优化查询、批量清理避免写入冲突以及两种备份方案的具体步骤,对使用 SQLite 搭建个人或小型 Web 应用的开发者有直接参考价值。虽然深度有限,但作者的反思和解决方案具有可迁移性,适合作为入门级运维经验收录。

技术文章Simon Willison

Firefox in WebAssembly

文章介绍Puter团队将Firefox浏览器编译为WebAssembly,使整个浏览器能在其他浏览器中运行的技术项目。作者展示了自己的博客在WebAssembly版Firefox中加载的效果。项目选择Firefox/Gecko引擎因为其对单进程模式支持较好;利用Claude Opus和Fable等AI工具辅助编程,借助订阅计划大幅降低了实际成本。演示通过Wisp协议将所有网络流量经Puter服务器代理,以绕过浏览器内代码无法直接发起网络连接的限制,团队为此扩展了服务器容量。文章还验证了端到端加密对HTTPS站点有效,对HTTP站点则为明文,并提及了类似的WebKit编译项目但缺少在线演示。该项目展示了WebAssembly在运行复杂桌面应用方面的潜力和代理架构的约束。

该项目是WebAssembly技术在浏览器端运行大型C++应用的典型案例,对前端开发者、浏览器引擎研究者和关注AI辅助编程的工程师有直接参考价值。文章涵盖了引擎选型、网络代理、成本控制和加密验证等关键工程细节,展示了从设想到实现的完整技术路径。收录此案例有助于读者理解WebAssembly的能力边界和集成模式,并迁移到类似跨平台应用项目。

工程实践知乎 - NGINX洪志道

09 | AI太擅长写业务了

文章以 Nginx 上 Lua Web API 的开发为例,介绍了如何利用 AI 辅助编程实现 Request、Response 和 Headers 对象。核心方法是统一对象模型的设计模式:通过 create(创建骨架)、get(取出 C 结构体)和 fill(填充数据)三个独立职责,解耦对象定义、数据来源和跨语言访问,确保 Lua 与 C 两侧的一致性。作者强调 AI 更适合在清晰的设计约束下快速复制正确模式,而人负责确定模型和边界。文章还讨论了 AI 在加速理解系统和生成代码方面的价值,以及如何在迭代中提升代码质量。结论是“人设计,AI 实现”能平衡效率与质量,但需要较强的设计能力来引导,且 AI 初始输出需人工审校。适用场景包括跨语言系统开发、嵌入式脚本扩展等,不足在于对设计者能力要求较高。

推荐收录,因为文章不仅展示了 Nginx/Lua 跨语言对象管理的具体工程实现,还提炼出可复用的 create/get/fill 设计模式,并提供了人机协作的实践边界。对于需要开发嵌入式脚本接口、处理跨语言对象生命周期,或希望利用 AI 提升编码效率的工程师,文中模式可以直接迁移,协作理念也具有长期参考价值。

工程实践Red Blob Games

Responsive design calculator

作者发现个人网站因手动计算 px 到 rem 转换时四舍五入导致字体大小微小偏差,从而追溯了从固定宽度布局到响应式布局的演变过程。文章详细介绍了利用断点插值和斜率统一控制边距分配的方法,并开发了交互式计算器,基于断点自动生成 CSS 代码。作者进一步探索了在现代 CSS 中使用 min()、clamp() 和 round() 函数实现布局计算,最终形成一套可复用的公式。本文展示了从问题定位、手工计算修复到自动化工具构建的完整工程实践,适用于需要实现平滑响应式布局的前端场景,但对非常老旧的浏览器兼容性有限。

本文提供了一个从微小 bug 定位到工具化改进的典型工程案例,聚焦于响应式布局断点计算的真实约束与取舍。对于前端开发者和 UI 工程师,文中的斜率控制方法、交互式计算器以及现代 CSS 函数应用可直接迁移到类似项目中,具有明确的实践参考价值。

工具笔记Simon Willison

Have your agent record video demos of its work with shot-scraper video

本文介绍了 shot-scraper 1.10 新增的 `shot-scraper video` 命令:通过 `storyboard.yml` 定义一组浏览器动作,再借助 Playwright 录制这些步骤的演示视频。作者把它用于 Datasette 的新功能演示,证明这种方式比手工录屏更适合让编码代理自动产出可展示的成果。文章还说明了这套方案如何被 GPT-5.5 xhigh 在 Codex Desktop 中自动生成,包括 YAML 剧本、演示数据库和使用说明。实现过程中遇到的关键问题是 Playwright 早期视频会带调试边框、开头出现白帧,以及录制宽度受限;这些问题分别依赖后续改进和 1.61.0 版本修复才得以落地。作者进一步强调,用命令的 `--help` 输出就能让代理理解并调用工具,这种设计像把技能说明内嵌进 CLI,适合自动化演示、文档生成和代理式工程流程,但更依赖较新的 Playwright 生态。

收录价值明确:文章给出了可复用的“CLI + storyboard + Playwright 录屏”工作流,并展示了编码代理如何直接基于 `--help` 生成可运行的演示脚本。适合做开发工具、自动化文档和 agent 工程的参考,但读者需要注意它依赖较新的 Playwright 版本,且更偏演示录制而非通用测试。

工具笔记Simon Willison

Count the number of Safari tabs

这篇短文记录了一个极小但实用的 macOS 技巧:通过 AppleScript 在命令行里统计 Safari 当前打开的全部标签页数量。作者给出的命令是 `osascript -e 'tell application "Safari" to count tabs of every window'`,直接利用 Safari 的脚本接口遍历所有窗口并汇总标签数。文章没有展开 AppleScript 语法或 Safari Automation 的背景,但它清楚展示了一个可复制的自动化片段,适合需要快速盘点浏览器状态、做脚本集成或写小工具的人。其适用范围主要限于 Safari 和支持 AppleScript 的 macOS 环境,对其他浏览器或跨平台场景不直接适用。

有明确可执行命令作为直接证据,能立刻用于 Safari 自动化或状态检查,适合 macOS 开发者和效率工具使用者。局限也很清楚:依赖 Safari 与 AppleScript,迁移到其他浏览器时需要重写。

技术文章Jake Archibald

The Goldilocks customizable select height

文章围绕可定制 select 的下拉面板高度设计,提出一套“既不贴边、也不过小、还不过大”的 CSS 方案。作者先解释浏览器默认的 anchor positioning、max-block-size: stretch、position-try-fallbacks 等行为,再逐步用 viewport margin、最小/最大高度约束改善交互。核心难点在于不同浏览器对百分比高度、翻转边距和 intrinsic size 的支持不一致,因此文章引入 calc-size() 把 fit-content 和 stretch 这类内在尺寸纳入 min()/max() 计算。文中还给出 Firefox/Safari 的降级写法,以及在选项较少时避免“最小高度反而显得难看”的补丁。整体内容适合需要做现代表单控件、CSS 适配和跨浏览器布局调优的前端开发者参考,但其中部分最佳方案仍受浏览器支持度限制。

有明确的可复用代码和浏览器差异分析,不是泛泛介绍新特性,而是解决 select picker 高度控制的具体工程问题。适合前端开发者在做可定制表单控件、CSS 新特性落地和跨浏览器降级时直接借鉴。

工程实践知乎 - NGINX洪志道

05|NGINX 脚本化历史,以及为什么选择官方 Lua

文章梳理了 NGINX 脚本化能力的演进脉络:从早期 Perl、SSI,到作者参与的 njs、QuickJS,再到自己尝试的 nginx-lua-web,说明 NGINX 一直在扩展可嵌入脚本运行时。核心论点是,这个新项目不想让用户直接面对 NGINX 的 body filter 等内部概念,而是提供更接近纯 Web 运行时的编程体验。作者进一步比较了 OpenResty 常用的 LuaJIT 与官方 Lua,认为后者在当前版本中性能、GC、稳定性和工程可用性已经足够,且更适合做 C 程序的嵌入式胶水语言。为提升易用性,文章还借鉴了 JS Web APIs,强调用 fetch 等标准接口降低脚本门槛。整体更像一次结合 AI 编程实践的工程选型记录,但其中部分关于版本演进和生态判断带有作者经验视角,适合与实际需求一起审视。

文章直接给出了 NGINX 脚本化路线、官方 Lua 选型和 Web API 设计的工程理由,不是泛泛而谈。适合做嵌入式脚本运行时、Nginx/OpenResty 生态或 AI 辅助开发实践的读者参考;但其中对 LuaJIT/官方 Lua 的结论带有作者立场,具体迁移前仍需结合基准测试验证。

工具笔记Simon Willison

simonw/browser-compat-db

这篇文章记录了作者把 Mozilla 的 mdn/browser-compat-data 兼容性数据仓库转换成一个约 66MB 的 SQLite 数据库的实践。作者借助 Claude Code 和 sqlite-utils 生成转换脚本,再用 Codex Desktop 编写 GitHub Actions 工作流,在构建后把数据库强制推送到一个独立的 orphan 分支。这样做的目的不是做可写数据库,而是利用普通 GitHub 仓库文件可通过 CDN 访问且带开放 CORS 的特性,方便浏览器端直接下载和在 Datasette Lite 中在线探索。文章的核心价值在于展示了“结构化数据仓库 + SQLite + 静态托管 + 前端可直接查询”的发布链路。它更适合静态、可再生成的数据集分发场景,不适合高频写入或需要事务服务化的系统。

文章给出了可直接复用的证据:SQLite 生成脚本、GitHub Actions 自动构建、orphan 分支静态发布,以及利用 GitHub CDN 的开放 CORS 让浏览器端直接访问。对需要发布可下载数据集、做前端只读查询或搭建轻量数据浏览器的工程实践很有参考价值。

工程实践Simon Willison

Porting the Moebius 0.2B image inpainting model to run in the browser with Claude Code

这篇文章记录了作者把 Moebius 0.2B 图像修复模型从原本依赖 PyTorch 和 NVIDIA CUDA 的实现,迁移为可在浏览器中通过 WebGPU 运行的版本,并最终部署到 Hugging Face 和 GitHub Pages 的全过程。文章不仅描述了模型转换为 ONNX、前端加载与执行、以及 1.3GB 权重缓存等关键工程问题,还展示了如何用 Claude Code 以“边做边问”的方式推进一个跨端 AI 应用原型。结论是:在当前浏览器与 WebGPU 能力下,客户端本地运行这类小型模型已经可行,但实际可用性会明显受制于首次下载体积、缓存策略和用户环境兼容性。

推荐收录,因为它提供了一个非常具体、可复用的端到端迁移案例:从模型可行性研究、ONNX 转换、浏览器执行、到部署与缓存优化,完整覆盖了 AI Web 化落地的关键环节。对于做前端 AI、模型部署或开发者工具的人来说,这篇文章的价值不在“结果很酷”,而在于它清楚展示了当下浏览器本地推理的边界与工程路径。

工程实践Simon Willison

Datasette Apps: Host custom HTML applications inside Datasette

这篇文章介绍了 Datasette 新插件 datasette-apps:在严格隔离的 iframe 沙箱中运行自定义 HTML+JavaScript 应用,让应用能够在浏览器侧发起受控的只读 SQL 查询,并在授权后使用存储查询执行写操作。作者重点解释了安全设计:通过 sandbox、CSP 和 MessageChannel 把未信任代码限制在最小权限范围内,避免读取 cookie、localStorage 或向任意外部主机泄露数据。文章还展示了查询与错误日志可见化、基于提示词一键生成应用、以及与 Datasette Agent 结合的 AI 辅助开发流程。一次安全评估还发现了允许普通用户放行 CSP 域名会导致越权 exfiltration 的漏洞,最终通过新增 apps-set-csp 权限和管理员级白名单修复。整体看,这是一个把可视化前端、数据库访问和 AI 编程结合起来的工程化方案,但当前写操作仍依赖预设存储查询,适合受控场景,不适合开放式任意执行环境。

推荐收录,因为文章给出了可验证的工程实现细节:iframe 沙箱、CSP、MessageChannel、存储查询和权限修复都直接对应真实安全约束。适合做前端安全隔离、受控数据库写入和 AI 辅助应用生成的参考,尤其对需要在高敏感数据域内开放扩展能力的系统有迁移价值。

工具笔记Simon Willison

<click-to-play> — a still that plays

这篇文章介绍了一个名为 <click-to-play> 的 Web Component,用来把“GIF 链接 + 首帧图片”的标记包装成可点击播放的静态预览。其核心思路是先只渲染首帧和播放按钮,等用户主动点击后再按需加载真正的 GIF,从而避免页面首次打开就下载大体积动画。作者强调这是一个 progressive enhancement 方案:即便脚本未运行,原始链接与图片也仍可作为降级内容使用。文章还给出了在 Datasette 示例中的实际应用,说明它适合文档、演示页和大量使用动图说明功能的场景。该方案的边界在于主要面向 GIF 这类重资源媒体,对 Web Components 和 JavaScript 可用性有一定依赖。

文章直接展示了可复用的组件接口、标记结构和按需加载机制,不是单纯的想法分享,适合做前端性能优化与组件封装的参考。对需要在文档、博客或产品页中展示动图但又要控制首屏体积的开发者尤其有用。

工具笔记Simon Willison

Publishing WASM wheels to PyPI for use with Pyodide

这篇文章围绕 Pyodide 新增的能力展开:Python 包现在可以像原生平台轮子一样,直接把面向 PyEmscripten 的 WASM wheel 发布到 PyPI,并在运行时安装。作者指出,过去 Pyodide 团队要维护、构建和托管 300 多个包,人工审核成本高,新的分发路径显著降低了社区发布门槛。随后他用自己的 luau-wasm 实验包做了验证:通过 cibuildwheel、GitHub Actions 生成并上传 wheel,再在 Pyodide 中用 micropip 安装后执行 Lua 代码。文中还用 BigQuery 统计了当前带有 pyemscripten_202*_wasm32 标签的 PyPI 包,说明生态已经开始落地但规模仍然有限。文章价值主要在于揭示 WASM Python 包分发链路的变化与实操入口,边界是它更偏发布/工具链更新,而不是深入解释 Pyodide 运行机制。

有明确的直接证据:Pyodide 314.0 已支持把 WASM wheel 直接发布到 PyPI,作者还给出了 luau-wasm 的打包、上传和运行示例。适合需要把 C/C++/Rust 扩展带到浏览器或 Pyodide 环境的维护者参考,但要注意这篇更偏分发工具链更新,生态仍处于早期。

技术文章Xe Iaso

IPv6 zones in URLs are a mistake

这篇文章围绕 IPv6 zone/scope 在 URL 中的表示问题展开,先解释了链路本地地址在不同网卡上会冲突,因此需要用 zone 来消歧义,再说明在 Go 的 net/url 中直接写入 `%eth0` 会被当作非法转义。作者进一步给出正确写法:需要把 `%` 编码成 `%25`,并结合 RFC 6874、浏览器同源策略和其他框架的类似边界案例,说明这是一个跨协议栈、跨实现的长期边缘问题。

推荐收录,因为它不是泛泛讲 IPv6,而是把网络地址语义、URL 语法、Go 标准库行为和相关 RFC 的边界完整串起来,能帮助读者避免真实系统中的解析错误。虽然主题很边缘,但这类协议细节具有很强的可迁移价值,尤其适合做网络编程、URL 处理和标准兼容性排障参考。

技术文章matklad

CSS: Unavoidable Bad Parts

这篇文章是一篇面向“不是 Web 开发者、但需要把页面样式做对”的 CSS/HTML 实用导读,作者试图提炼出一个足够小、可学习的现代 Web 子集。文章围绕语义化标签、CSS reset、classless CSS、box-sizing、margin collapsing、flexbox、响应式设计以及字体尺寸、行高、断行等常见坑展开,强调应优先理解浏览器默认行为和布局约束,而不是把 CSS 当成纯粹的样式拼装。

推荐收录,因为它不是泛泛而谈的 CSS 入门,而是把“简单博客/轻量 GUI 真正会踩的坑”集中梳理成一套可执行经验。对需要快速建立网页样式直觉的工程师很有参考价值,尤其适合非前端背景但要维护页面可用性和可读性的人。

学习路线知乎 - NGINX洪志道

01-完全没基础,怎么开始学编程

这篇文章面向完全零基础的人,提出一条“先建立编程感觉、再补语言体系”的入门路径。作者主张用 JavaScript 和浏览器 Console 作为第一门工具,只学习顺序、条件、循环、变量、值与表达式、函数这六个最基础概念,并用“手机电量”这一单一主线把知识点串起来。文章还强调必须通过复制、修改、运行、观察结果的循环来学习,并把“能独立写出类似小程序”作为真正学会的标准。

推荐收录,因为它不是泛泛而谈“如何学编程”,而是给出了面向零基础学习者的具体起点、知识范围和练习方式,具备明确的可执行性。其价值在于帮助初学者避开环境配置、框架和概念堆砌带来的挫败感,适合作为编程启蒙的长期参考。

工具笔记Go Blog

Introducing the pkg.go.dev API

本文介绍 Go 官方 pkg.go.dev 新增的程序化访问 API,面向工具、IDE 集成和自动化工作流提供模块与包元数据查询能力。API 采用无状态、仅 GET 的设计,当前以 /v1beta 形式提供,覆盖 package、module、versions、packages、search、symbols、imported-by 和 vulns 等核心端点,并同时发布 OpenAPI 规格。文章强调“precision over convenience”:当同一包路径可能由多个模块提供时,API 不像网页端自动猜测,而是要求客户端显式指定模块,否则返回歧义错误。版本控制支持语义化版本以及 main/master 分支自动解析为 pseudo-version,但不支持任意分支名。文中还给出 pkgsite-cli 参考实现,展示如何在终端搜索、查看符号、列出版本与依赖导入者;其边界是 beta 接口仍可能演进,CLI 也尚未稳定。

这篇文章给出了官方 API 的端点、版本规则、歧义处理和 OpenAPI 规格,属于可直接用于工具集成的实用参考,不是单纯的产品宣传。适合做 Go 生态工具、IDE 插件或自动化脚本的读者借鉴,但需注意当前仍是 v1beta,且参考 CLI 接口并未完全稳定。

工程实践知乎 - 鹅厂架构师

两个字符让Django接口快了8倍:一次险些翻车的线上性能排查实录

这篇文章复盘了一次老 Django 接口的线上性能排查,围绕 10000+ 条数据、7MB 响应体和高频调用场景,逐步验证了 ORM 对象构造、values() 直出、字段裁剪、JSON 序列化、gzip 等多个假设。作者最终通过 TTFB/Total 对比、本机回环测试和代码审查,发现真正的瓶颈不是数据库或网络,而是把完整字符串错误地交给 StreamingHttpResponse 导致逐字符输出,修复后接口从 13.6 秒降到 1.7 秒。文章还总结了如何用数据而不是直觉定位 HTTP 性能问题,并说明了该结论对真正流式接口与大对象返回的适用边界。

推荐收录,因为它不是单纯的“改一行代码变快”故事,而是完整展示了从经验判断到数据验证、从错误归因到根因定位的工程排查过程。对做 Web 后端、Python/Django、线上性能治理的读者都有很强的迁移价值,尤其适合理解 TTFB、响应体输出链路和“看起来没错的代码”带来的隐性性能坑。

工具笔记知乎 - 千问云

浏览器自动化:从GUI到OpenCLI

文章讨论了浏览器自动化从“直接操控GUI”转向“解析并复现底层API请求”的方法,核心目标是提升自动化的稳定性、效率和可维护性。作者进一步提出了 OpenCLI 的工作流:通过浏览器观察、网络抓包、鉴权策略分层和适配器生成,把网站能力包装成可调用的 CLI,并明确指出了当前对写操作、请求体捕获等场景的局限。文章最后延伸到“面向 Agent 的可调用性”这一判断,认为未来软件的重要竞争点之一将是是否容易被自动化系统稳定调用。

推荐收录,因为它不仅讲了一个具体工具,还总结了从 UI 自动化转向 API 自动化的可迁移方法,特别适合做开发工具、Agent 工程和浏览器自动化的参考。文章同时给出了认证分层、探索流程和局限边界,具有较强的实践指导意义,而不是停留在概念宣传。

工程实践Yelp Engineering

How Yelp Keeps Server-Driven UI Consistent Across Four Platforms

文章接着前文介绍 Yelp 的 server-driven UI 框架 CHAOS,重点讲它如何与跨平台设计系统 Cookbook 以及自动生成的桥接库 Konbini 协同工作。作者先说明 Yelp 与 Yelp for Business 在 Web、iOS、Android 上存在多套界面变体,导致视觉与交互一致性难以维护。随后描述如何把设计系统组件抽象成可复用的 SDUI 组件,并通过桥接层把同一套定义映射到不同平台渲染实现。文章也讨论了自动生成桥接代码在减少重复劳动、降低差异漂移方面的作用。它更适合已有多端应用和设计系统的团队参考,但前提是组件边界清晰、平台能力差异可被抽象,否则一致性和灵活性仍会冲突。

推荐收录,因为正文直接围绕 CHAOS、Cookbook 和 Konbini 的集成展开,讨论了如何在 Web、iOS、Android 多端保持界面一致,并用自动生成桥接层降低实现分叉。适合做多端产品、设计系统或 SDUI 落地的团队参考;可迁移价值在于组件抽象、跨平台映射和减少重复代码,但也依赖平台差异可被稳定封装。

技术文章Josh W Comeau

An Interactive Guide to SVG Paths

这篇文章是一篇面向前端开发者的 SVG path 交互式教程,核心目标是把最难理解的 `<path>` 元素拆解清楚。作者从 SVG 基本图元讲起,重点解释 path 的紧凑命令语法、坐标含义以及常见指令如何组合成线段、曲线和闭合路径,并通过交互示例帮助读者把“字符串”直观映射到实际图形。文章强调,path 的强大之处在于用一套统一表达方式描述复杂轮廓,因此既能画简单图标,也能处理更复杂的矢量形状。它同时也揭示了该元素的学习门槛:语法高度压缩、可读性差,需要结合可视化工具和反复练习才能掌握。整体更偏向“理解与手写 path”的基础教程,而不是 SVG 渲染原理、动画系统或工程集成方案。

文章直接围绕 SVG `<path>` 的语法与可视化理解展开,属于前端与网页图形开发中长期可复用的基础知识。适合需要手写图标、图表或矢量路径的开发者,交互式讲解对建立坐标与曲线直觉尤其有帮助。

技术文章Josh W Comeau

An Interactive Guide to CSS Grid

这篇文章是一篇面向前端开发者的 CSS Grid 交互式教程,目标不是罗列属性,而是建立可操作的心智模型。作者从网格容器、行列轨道、隐式网格、项目定位与跨列跨行等核心概念入手,结合可视化示例解释 Grid 在二维布局中的工作方式。文中还强调了 fr、minmax、gap、auto-flow 和对齐规则等常用能力,帮助读者理解轨道尺寸分配与自动放置的结果。文章的重点在于把“看懂布局结果”与“预测布局行为”连起来,而不是背诵 API。它适合需要系统掌握现代网页布局的工程实践者,但对只想快速完成单页排版的人来说内容会偏深入。

收录依据很明确:文章围绕 CSS Grid 的概念模型、属性机制和布局结果展开,并通过交互示例帮助读者形成可迁移的理解。适合前端工程师、UI 开发者以及需要从 Flexbox 过渡到二维布局的人长期查阅。

技术文章Josh W Comeau

The “const” Deception

文章围绕 JavaScript 中 `const` 的常见误解展开,指出它并不等于“值不可变”,真正限制的是变量绑定不能被重新赋值。作者重点区分了“assignment(重新赋值)”和“mutation(修改对象内容)”,解释为什么用 `const` 声明的对象和数组仍然可以被修改。文中通过具体示例说明,原始值与引用类型在行为上的差异,以及开发者为何会误把“不可重新指向”理解成“完全冻结”。文章的核心结论是:`const` 适合表达不变的绑定意图,但并不能替代不可变数据结构或深冻结机制。适合已经写 JavaScript、需要减少状态管理和数据共享误解的前端/全栈开发者参考。

推荐收录,因为它直接针对 JavaScript 中最容易被误用的基础概念,且用“赋值 vs 修改”这一可迁移框架解释了 `const` 的真实语义。对前端、全栈和状态管理场景尤其有用,能帮助读者避免把语法约束误当成数据不可变,降低代码理解和维护风险。

技术文章Josh W Comeau

An Interactive Guide to Flexbox

这篇文章以交互式方式讲解 CSS Flexbox 的工作机制,而不只是罗列属性含义。作者从布局算法入手,说明容器与子项在主轴、交叉轴上的尺寸分配、对齐和换行规则,帮助读者理解为什么同一组样式在不同约束下会得到不同结果。文章的重点不在“怎么记属性”,而在于把 flex-grow、flex-shrink、flex-basis 等概念串成可预测的布局模型。它特别适合需要构建自适应页面、减少断点依赖的前端开发场景。局限在于内容偏基础到进阶入门,对复杂布局仍需结合实际浏览器行为与其他 CSS 布局方案一起理解。

推荐收录,因为标题和导语已经明确表明它不是浅层速查,而是围绕 Flexbox 算法与布局规律展开的交互式教程。适合前端工程师、UI 实现者和需要补齐 CSS 布局心智模型的读者,迁移价值在于能直接提升对自适应布局和属性联动的判断能力。

技术文章Josh W Comeau

Designing Beautiful Shadows in CSS

这篇文章围绕“如何用 CSS 设计更自然、更有质感的阴影”展开,先指出网页上常见的灰色模糊阴影过于单调,再说明阴影其实可以通过 CSS 做出更接近真实光照的层次效果。作者以视觉设计为切入点,强调阴影不仅是装饰,还承担空间分层、强调主体和塑造材质感的作用。文章的核心思路是把阴影当作可控的光学效果来设计,而不是简单套用默认参数,从而获得更丰富、更具生命力的界面表现。它更适合前端界面设计和组件细节优化,尤其适合需要提升视觉品质的产品页、组件库和交互界面。其边界在于这类技巧高度依赖具体背景、元素形状和整体视觉语言,不能机械套用到所有场景。

推荐收录,因为标题和导语直接表明它不是泛泛而谈,而是专门讲 CSS 阴影的设计方法,属于可迁移的前端视觉实现经验。适合做界面细节打磨、设计系统和组件库开发的读者参考,但需要结合具体主题色、光源方向和可读性约束使用。

技术文章Josh W Comeau

An Interactive Guide to Keyframe Animations

这篇文章是一篇围绕 CSS keyframe animations 的交互式教程,目标是从底层机制解释关键帧动画如何工作。作者先说明 keyframes 为什么灵活但也容易让人困惑,再通过逐步拆解动画声明、时间轴和关键帧配置,帮助读者建立对动画执行过程的直觉。文章强调的不只是语法用法,还包括如何利用关键帧组合出更高质量的动效,并理解何时适合使用这种方案。它更适合希望提升前端动效能力的读者,尤其是需要把动画效果做得稳定、可控且可维护的人。不过,作为教程类内容,它的长期价值主要来自原理讲解和实践模式,而不是特定项目经验。

文章明确聚焦 CSS keyframe animations 的原理与用法,不是浅层语法速览,而是从机制层面帮助读者建立动画模型。适合前端开发者、动效实现者和需要写可维护交互动画的工程场景,迁移价值主要在于对时间轴、关键帧和表现控制的理解。

工程实践Josh W Comeau

How I Built My Blog

这篇文章系统拆解了作者个人博客的技术实现,重点不是展示页面效果,而是解释背后的前端架构与内容组织方式。文章提到他用 Next.js 的 API routes 实现访问量和点赞计数,用 MDX 在文章中嵌入交互与定制化能力,并进一步说明了代码库的组织方式与维护思路。整体上,它把一个内容型网站如何兼顾静态发布、局部交互和开发体验讲得较完整,适合做个人站点或内容产品的实现参考。它的边界也很清楚:主要针对博客这类中小型 Web 项目,方法高度依赖 Next.js/MDX 生态,未必适用于复杂后端系统。

文章给出了可验证的实现细节:Next.js API routes、MDX 互动内容和代码库组织,而不是泛泛讲博客理念,具备直接参考价值。适合前端工程师、个人站点作者或内容型产品开发者阅读;可迁移的价值在于内容站如何在静态性、交互性和维护成本之间做取舍,但技术栈较框架化。

技术文章Josh W Comeau

What The Heck, z-index??

这篇文章围绕 CSS 中最容易误解的 z-index 现象展开,解释为什么元素的数值看起来更大,却仍然无法覆盖到预期层级。作者重点讲解了 stacking context 的形成条件、层叠顺序以及父子层级之间的限制,说明 z-index 不是全局排名,而是受局部上下文约束的比较规则。文章还进一步讨论了哪些属性会触发新的 stacking context,以及这会如何改变定位、遮挡和弹层行为。最后,作者给出利用这一机制组织页面层级的思路,帮助读者从“调数值”转向“理解上下文”。它的适用范围主要是前端布局与视觉层级排查,不涉及更广泛的浏览器渲染内核细节。

推荐收录,因为文章直接针对 z-index 失效这一高频前端问题,明确解释了 stacking context 的规则与触发条件,而不是停留在经验性排错。适合需要处理弹层、遮罩、菜单和复杂布局的前端开发者,具有很强的可迁移排障价值。

技术文章Josh W Comeau

The Rules of Margin Collapse

文章系统讲解了 CSS 中“外边距折叠”的成因与判定规则,目标不是背结论,而是用一组可执行的原则理解它何时发生、何时不会发生。作者围绕块级元素的上下外边距,分别分析了兄弟元素、父子元素以及空元素场景下的折叠行为,并说明了边框、内边距、内容高度、清除浮动或形成新的格式化上下文等因素为何会阻止折叠。文中强调,外边距折叠并非随机怪现象,而是由布局规范驱动的确定性结果。通过这些规则,读者可以更可靠地预测间距表现,避免用试错方式调 CSS。文章适合希望深入理解浏览器布局机制的前端开发者,但对完全不熟悉 CSS 盒模型的人仍有一定门槛。

收录理由明确:文章不是泛泛介绍 margin collapse,而是把触发条件、阻断条件和典型场景拆成可操作规则,属于可长期复用的 CSS 机制解析。适合前端开发者、样式排障和布局体系设计者阅读,尤其有助于减少对“玄学间距”的试错。

技术文章Josh W Comeau

Boop!

这篇文章是一篇面向 React 前端开发的深入教程,目标是实现一种轻量但很有表现力的“boop”交互效果。作者不是直接堆动画代码,而是把交互行为抽象成可复用的 React 组件与 hooks,强调将“行为逻辑”和“渲染表现”解耦。文章同时讨论了如何设计一个足够简洁、又能覆盖多种使用场景的 API,让调用方只需少量代码就能复用这套交互。它的核心价值不在于某个特定动效本身,而在于展示如何用 React 组织可组合行为、管理状态切换与时序,并把体验细节封装成稳定接口。适用范围主要是 Web/前端交互实现,对通用架构或复杂动画引擎的讨论较少。

文章给出了从交互效果到可复用抽象的完整实现思路,直接体现了 hooks、组件封装和 API 设计的实践证据。适合关注 React 前端、交互设计和可组合封装的读者,尤其适合作为“如何把一个小效果做成可复用能力”的参考。

技术文章Josh W Comeau

Full-Bleed Layout Using CSS Grid

文章围绕现代前端中常见但实现别扭的 full-bleed 布局展开,目标是在同一页面里同时保留居中正文和通栏内容。作者以 CSS Grid 为核心,拆解了网格轨道、内容容器与全宽元素之间的关系,说明如何用一套统一的网格定义让图片、横幅或代码块突破正文栏宽限制而不破坏整体排版。文章重点在于通过 Grid 的显式轨道和对齐机制减少额外嵌套与定位技巧,从而让布局规则更清晰、可维护性更高。它更适合作为 CSS 布局思路的参考,而不是面向所有场景的通用模板;对于需要复杂响应式排版或内容混排的页面尤其实用。其边界在于依赖 CSS Grid 支持,并且需要结合具体设计系统调整间距、宽度和断点。

收录理由明确:正文直接说明是“用 CSS Grid 构建 full-bleed layout”的教程,属于可复用的前端布局方法而非产品介绍。适合前端开发者、设计系统维护者和需要处理复杂内容排版的工程场景,迁移价值在于统一居中正文与通栏元素的布局策略。

技术文章Josh W Comeau

Accessible Animations in React

这篇文章讨论 React 中如何实现“可访问的动画”,核心目标是尊重用户对减少动态效果的偏好,避免动画给部分用户带来不适甚至眩晕。作者从前端动画的实际问题出发,介绍如何检测系统级的 prefers-reduced-motion 设置,并据此在组件层面切换为弱化或关闭动画的实现。文章强调,动效不是必须一刀切删除,而是应根据用户偏好动态调整强度、时长和呈现方式。它适合指导交互动画、页面过渡和 UI 反馈的无障碍改造,但主要覆盖的是“减动效”这一维度,不能替代更完整的可访问性设计。

收录价值明确:标题和简介都直接指向 React 中的 prefers-reduced-motion 处理,这是前端无障碍里可长期复用的具体做法。适合做组件库、交互动画和产品 UI 的开发参考,尤其对需要兼顾视觉效果与用户舒适度的场景很有迁移价值。

技术文章Josh W Comeau

Styling Ordered Lists with CSS Counters

这篇文章讨论如何在不破坏语义结构的前提下美化有序列表。作者指出,直接改写默认编号样式常常受限于浏览器对列表标记的封装,因此引入 CSS counters 作为替代方案,让开发者可以完全控制编号的展示方式、位置和视觉细节。文章的核心思路是:保留 `ol`/`li` 的语义,再用计数器生成自定义序号,从而兼顾可访问性与定制能力。它适合需要精细排版、品牌化列表样式或复杂嵌套编号的前端场景,但本质上仍是展示层技巧,不适用于需要改变文档结构或交互逻辑的情况。

推荐收录,因为它直接给出了用 CSS counters 处理有序列表样式的可复用技巧,并明确强调了“自定义外观但不牺牲语义”这一关键边界。对前端开发者、设计系统维护者和需要精细排版的页面实现场景都很实用,迁移到其他列表编号需求也很容易。

技术文章Josh W Comeau

The Perils of Hydration

这篇文章围绕 React/Gatsby 中的 hydration(重新注入/再水合)问题展开,指出一个很常见但容易被忽视的误解:预渲染出来的页面并不等于最终可交互状态,服务器输出与客户端首次渲染之间的差异会引发难以定位的界面异常。文章以深度教程的方式解释了静态预渲染、客户端补水以及二者约束之间的关系,说明为什么个性化、依赖浏览器环境或实时数据的内容会与 SSR/SSG 产生冲突。作者进一步讨论了常见的规避方式,例如延后仅客户端逻辑、拆分服务端壳与客户端动态区、用占位内容避免初始不一致。整体结论是:hydration 本身不是 bug,而是预渲染架构的必然边界,真正需要处理的是内容一致性与交互时机的设计。适用场景主要是使用 React、Gatsby 或类似前后端同构方案的网页应用,但对高度动态、强个性化页面仍需谨慎。

收录依据很明确:文章不是泛泛讲概念,而是直接围绕预渲染与 hydration 不一致导致的渲染故障,给出可操作的规避思路。适合使用 React/SSR/SSG 的前端工程师阅读,尤其在排查首屏异常、内容闪烁和服务端/客户端不一致时具有迁移价值。