把 Hexo 文章文件名、URL 和排序分开管理 从 source/_posts 的扫读体验开始,重新拆分 Hexo 的本地文件名、公开 URL 和列表排序。文章说明为什么文件名改成日期 + 中文标题,公开路径交给 url_title,同日排序用 url_title 稳定,文章资源继续映射到对应的 /files/ 公开目录。 2026-06-07
读《置身钉内》:AI 办公里的权力、责任和人的边界 围绕《置身钉内》这篇长文,顺着钉钉 ONE 项目的立项、发布、共创、迭代和收缩,讨论 AI 办公产品里的组织目标、产品权力、责任分配和人的位置。重点不是复述钉钉故事,而是看一个 AI 系统到底在替谁承担成本,又把哪些责任推回给人、团队和组织。 2026-06-07
iOS WebKit 中 transform 和 z-index 的一次层级闪烁排查 移动 H5 奖励卡在 Android 正常,iOS 切换时却短暂层级错乱。文章把问题缩到 WebKit 在 transform 动画里的合成处理,解释 z-index、旋转卡片和合成层之间的关系,以及为什么一行看似不改位置的样式能稳定表现,并提醒移动端要单独验证动画层级。 2026-06-05
一个 H5 装饰按钮在 Android WebView 和 iOS Safari 上的两次渲染排查 一个固定在右下角的 H5 装饰按钮,先后在 Android WebView 和 iOS Safari 暴露纹理、mix-blend-mode、半像素描边、overflow、圆角和动画裁剪问题。文章记录两次排查以及最后用更明确的裁剪和纹理层级稳住渲染,也提醒桌面 Chrome 正常不代表 WebView 稳定。 2026-06-05
Codex Skill 里不应该明文保存密钥 以 Figma token 为例,说明 Codex Skill 不应该保存明文密钥。Skill 是长期可复用指令,密钥会过期、泄露和轮换;更稳的做法是把私有 env、读取规则、过期提醒、备份范围和上下文暴露边界分开管理,避免进入仓库、日志和 Agent 上下文。 2026-06-04
组件状态和就近差异样式 从上传组件这类状态影响多个子元素的场景出发,讨论组件状态应该放在根元素上,子元素根据根状态改变表现。文章继续拆 SCSS、Less、Stylus、CSS Modules 和 Vue scoped 下 &、@at-root、空格和 BEM 选择器的输出边界,让状态样式更靠近组件结构。 2026-06-04
给 Vite Chrome Extension 补一个开发态自动 reload Chrome Extension content script 开发时很容易跑着旧运行时。文章把自动 reload 拆成三段:Vite watch 持续写真实 dist,扩展运行时负责重新加载,目标页面刷新后重新注入 content script,并说明为什么不能直接套普通 Web App HMR。 2026-06-03
Chrome Extension 里缓存已观察数据该放哪里 围绕 Jenkins enhancer 的已观察构建记录,比较页面 localStorage、chrome.storage.local、IndexedDB、storage.session 和内存变量。文章重点不是哪个 API 更高级,而是数据归属、可见性、生命周期和查询能力。 2026-06-02
Android 和 iOS App WebView 远程调试排查记录 按平台整理 App WebView 远程调试入口。Android 侧区分无线 adb pair/connect 和 USB 兜底,iOS 侧回到 Safari Web Inspector、WebKit 与 Xcode CoreDevice 链路,并说明无线调试的实际边界。 2026-06-02
静态站点缓存怎么配:从 Hexo 全站协商到 Astro 的 hash 资源 从 Hexo 博客错误使用长缓存头讲起,区分稳定 URL 和带 hash 资源的缓存策略。文章说明无 hash 的 HTML、CSS、XML 更适合协商缓存,浏览器每次复用前要验证;Astro 这类 hash 产物则可以走长期强缓存和 immutable,也解释 no-cache 名字为什么容易误导。 2026-06-02