把思考,写清楚。
关于 AI 应用、Agent、AI Infra 与软件工程的实践和判断。公开文章独立维护,保留原始时间与稳定引用。
查看迁移清单与未迁移原因 →
TaleFrame 架构实录:原生 Android 如何接上 Vercel 小说后台 ↗
TaleFrame 已接通原生 Android 阅读器与独立小说后台。本文从实际代码和线上书库出发,说明小说列表、章节正文、发布版本与封面分别存在哪里,追踪一次后台发布如何到达 App,并解释离线缓存、回退、存储成本与尚未实现的产品能力。

围绕 Vercel,搭一套独立开发者的交付套件 ↗
从原生 Android 小说 App TaleFrame 出发,整理一套 Vercel、Next.js、Neon 与 Blob 的小产品交付方案。用 4,105 章内容的实测数据解释存储取舍,再讲清草稿发布、版本检查、离线缓存、备份恢复与费用边界,判断哪些能力值得复用,哪些基础设施可以等。

从 AI 工程到产品技术专家:我的三年职业发展规划 ↗
面向 2026.11.01—2029.11.01,以 AI Systems & Product Engineering 为主线,将执行提案审核、授权边界、风险分级审批与评估回放纳入职业能力建设。保留系统深度与产品判断,分阶段验证真实任务和用户价值,并用季度复盘调整假设。

HyperFrames 的原理:让 HTML 成为可寻址的视频时间线 ↗
HyperFrames 不是把网页录成视频的截图工具,而是一套把 HTML、媒体时间、可寻址动画和确定性渲染接在一起的运行时。本文从 composition、clip、timeline 和 media playback 四个边界出发,解释它为什么能从 HTML 生成可编辑、可复现的视频,以及哪些写法看似合理却会破坏渲染结果。

Bearer Token Authentication 到底是什么:从 Authorization Header 到安全验证 ↗
Bearer Token 是 HTTP API 最常见的访问凭证,却经常被误认为 JWT、OAuth 2.0 或普通 API Key。本文从 RFC 6750 出发,讲清 Authorization Header、Access Token、JWT 与 Refresh Token 的边界,并给出一套可运行的 Node.js 验证、Scope 授权和错误响应实现。

从 rcedit 到 resedit:给 Bun 单文件 EXE 修改 VERSIONINFO 的兼容层设计 ↗
最近一次 Windows 构建工具迁移,让我重新理解了 PE、VERSIONINFO 与 Bun 单文件可执行程序之间的关系。本文从零解释 Windows PE,并复盘如何用 resedit 替代归档的 rcedit,同时通过不变量校验保护 Bun 的自定义 section。

Windows 下 AI 浏览器的最佳启动参数配置 ↗
Windows 下的 Chromium-based AI 浏览器不该靠一串启动参数维持生产可用。本文给出 Production、Internal Diagnosis、Automation/Eval 三套 Profile,逐项判断 GPU、Sandbox、Remote Debugging、Profile、Proxy、Crash 与 V8 参数的边界,并提供可复制配置和安装验收清单。

Omaha 到底是什么:一篇讲清 Chromium 自动更新的客户端、协议与服务端 ↗
Omaha 既是 Google Update 的开源项目名,也常被用来指 Chromium 更新协议与服务端。本文拆清 Chromium Updater、Omaha Protocol、CUP、CRX3 和 Authenticode 的责任边界,并串起一次完整的自动更新。

RSS 到底是什么:为什么 FlyOS 性能评测不能只看一个内存数字 ↗
最近做 FlyOS 性能 baseline 时,同一轮空闲采样里,进程树 RSS 均值是 949.4 MiB,Physical Footprint 均值却只有 355.5 MiB。本文从这组真实数据出发,讲清 Resident Set Size 的统计边界、Chromium 多进程下的重复计数,以及判断内存回归和泄漏时应该怎样选指标。

darwin-arm64、win32-x64、linux-x64 到底是什么:一篇讲清安装包命名 ↗
下载 CLI、桌面应用或原生依赖时,我们经常遇到 darwin-arm64、win32-x64、linux-x64、AMD64、AArch64、gnu、musl 等名字。本文从 OS、CPU、ABI 与 release channel 四个维度拆解这些标签,解释它们的历史来源、兼容关系与选包方法。

把 Agent Skill 当作架构边界:平台开发与发行版开发为什么要拆开 ↗
Agent Skill 不只是提示词集合,它会影响 Agent 从哪里读上下文、能修改什么、如何判断交付完成。本文以平台工程与 Browser Distribution 为例,解释为什么要拆开平台开发和发行版开发 Skill,并给出命名、目录、依赖和验收边界的实践框架。

从静态 Reference 到 LLM Wiki:让 Agent Skill 拥有可持续演进的知识底座 ↗
Agent Skill 可以封装流程,却不适合长期内嵌持续变化的业务知识。本文以脱敏的数据研发场景为例,拆解 Raw Sources、Wiki、Schema 三层架构,以及 Ingest、Query、Lint 如何把静态 Reference 升级为可追溯、可校准、可持续演进的知识底座。

Git worktree:AI 时代的并行开发工作台 ↗
Git worktree 让同一个仓库同时拥有多个独立工作目录。它解决的不是“少 clone 一次”,而是人和 AI Agent 并行开发时的上下文隔离、可验证交付与低成本切换问题。

Profile 到底是什么意思:先分清用户资料、构建方案与交付策略 ↗
`Profile` 没有一个放之四海而皆准的中文解释。它可以指浏览器用户资料、工程构建方案,也可以指产品发行配置。本文从这个词的共同语义出发,重点解释 FlyOS 的 Distribution Profile、Build Profile、User Profile 与 Settings 分别描述什么,以及看到裸写的 Profile 时应该怎样判断。

AI 浏览器不是 Chrome 加个聊天框:从 BrowserOS 拆解七层架构 ↗
AI 浏览器不只是 Chromium 加一个聊天界面,而是浏览器内核、原生集成、Agent Runtime、语义工具、模型连接与工程交付系统的组合。本文以 BrowserOS 源码为线索,拆解七层架构,并讲清构建、发布和多产物更新链路。

Taste Is All You Need ↗
当 AI 把实现和生成的成本迅速压低,真正稀缺的能力开始转向问题选择、方案取舍、边界判断与结果验收。本文结合 Owlet、青山湖设计语言和跨端 Design Skill,讨论 Taste 为什么会成为 AI 时代的核心生产力,以及怎样把个人直觉沉淀为 Agent 可以执行和验证的规则。

Evidence 到底是什么:Agent 系统如何证明自己真的完成了任务 ↗
Evidence 不是知识、引用或日志的别名,而是 Agent 系统用来支撑或反驳具体 Claim 的可验证事实记录。本文从 W3C PROV、Verifiable Credentials、in-toto、SLSA 与 Agent Tracing 出发,讲清 Evidence 的领域边界、数据模型、生命周期和生产验收方法。

Agent 系统的一级领域对象:从 Task、Run 到 Evidence ↗
Agent、Task、Run、Tool、Memory、Policy、Evidence 经常被放在同一张架构图里,却不是同一层概念。本文交叉比对 OpenAI Agents SDK、Anthropic、A2A、MCP、LangGraph 与 W3C PROV,给出一级领域对象的判定标准、十二个核心对象及生产化建模顺序。

如何构建可验证、可恢复、可评测的 Agent Runtime 与 Harness ↗
Agent 真正进入生产后,难点不再是能否调用模型和工具,而是结果能否验证、失败能否恢复、能力能否持续评测。本文从前端转 Agent/AI Infra 的视角,拆解 Runtime 与 Harness 的边界、核心对象、恢复等级、证据链和评测闭环,并给出可分阶段实施的工程方案。

用 Context7、Serena 和 Session 把 Codex 的 token 花在刀刃上 ↗
我把 Context7、Serena 和合理拆 Session 放进一次真实的 coding agent 工作流里,解释它们各自解决什么问题、为什么有时能省 token、什么时候反而会增加上下文成本,以及如何在探索、实现和验证之间建立清晰的上下文边界。

向量 RAG、GraphRAG、编译式 RAG:用一个客服实战讲清如何选 ↗
向量 RAG、GraphRAG 和编译式 RAG 并不是一条从低级到高级的升级路线。本文用一个脱敏的跨行业客服知识助手贯穿三种方案,拆解知识问答、订单关联和服务流程如何命中证据,并给出从 MVP 到生产架构的选型矩阵、评测方法与组合策略。

AI Native 知识库:给人维护,给 Agent 调用,给双方追溯 ↗
传统知识库围绕人阅读,AI 知识库增加问答,AI Native 知识库则把 Agent 作为一等消费者。本文梳理从 FTS、BM25、Vector Search、RAG、GraphRAG 到 Agentic Retrieval 的发展,给出 Source、Index、Evidence、Revision 与 Permission 的最佳实践,以及不同技术的选型和组合方法。

Coding Agent 的交付汇报:6 种状态怎么写 ↗
Coding Agent 的汇报不是给管理者读的周报,而是交付给下一个执行者的状态接口。本文拆分完成交付、进行中、失败阻塞、Bug 诊断、方案决策和评审发布 6 种场景,说明每种状态必须留下哪些变更、验证与 Git/部署证据。

GBrain 从入门到精通:构建可引用的本地知识层 ↗
GBrain 不只是一个 RAG 工具,而是一层连接事实源、检索、Evidence、Citation 和 LLM 的知识基础设施。本文从基本概念、数据流、索引检索、云端与本地部署讲起,结合一个 Agent 应用给出一套可落地的接入、验证和生产化方法。

GBrain、Sirchmunk、Understand Anything 怎么搭配:Agent 知识基础设施的三层实践 ↗
GBrain、Sirchmunk 和 Understand Anything 都在解决 Agent 的上下文问题,却分别面向长期知识、实时原始数据和代码结构。本文结合桌面 Agent Host 的架构实践,拆解三者的能力边界、组合方式、云端与本地部署,并给出从单一知识底座逐步演进的选型框架。

Raw Knowledge 如何变成可信知识资产:以及中文 FTS 为什么不是改个配置 ↗
接入 GBrain 后,我真正困惑的不是如何执行 import,而是原始仓库、语雀文档和会议记录何时才算可信知识,以及中文问句为什么明明包含术语却检索不到。本文结合一个 Agent 应用的实测,拆清 Raw Knowledge、GBrain Page、Knowledge Asset、中文 FTS 与 Embedding 的边界,并给出一条可落地的项目知识接入路线。

从 FTS、BM25 到 LLM Wiki:把 RAG 知识检索讲明白 ↗
RAG、FTS、BM25、Vector Search、GraphRAG 和 LLM Wiki 经常一起出现,却解决着不同层次的问题。本文用一条从文档到答案的链路,把这些概念放进同一张地图,并结合一个 Agent 应用说明什么时候该用关键词检索、语义检索、图谱,什么时候需要 Evidence 和 Revision。

Provider Pattern:在 Agent Ops App 中统一 Codex、Qoder 与未来执行引擎 ↗
当 Agent Ops App 同时接入 Codex、Qoder,未来还要支持 Hermes 时,真正的难点不是多写几个 SDK 调用,而是阻止 Provider 私有协议渗透业务层。本文结合桌面 Agent Host 实践,拆解 Provider、Adapter、Registry、Capability、Session Pin 与 Runtime Resolver 的职责,并给出一套可持续扩展的实现框架。

修复中文输入法按回车误发送:React Chat Composer 的 IME 事件陷阱 ↗
在 Chat Composer 里,Enter 通常代表发送,但在中文、日文、韩文等 IME 输入过程中,它还承担确认候选词的职责。本文从真实故障出发,拆解 composition 与 keyboard 事件时序、Safari/WebKit 的兼容陷阱,并给出适用于 React 和 Agentic Chat 的稳健修复与测试方案。

Sidecar 边车模式:给本地 Agent 划出一间受控执行舱 ↗
Sidecar 不只是 Kubernetes 里的辅助容器,也适合解决桌面 Agent 的多运行时、权限和故障隔离问题。本文从 Tauri、原生 Core 与 Node Agent Host 的真实架构取舍出发,解释边车模式是什么、什么时候值得用、IPC 和权限边界怎样设计,以及它为什么不等于安全沙箱。

我把AI生图做成了工程能力:better-imagegen的实战与判断 ↗
这篇文章复盘我近期把 AI 生图用于产品视觉、角色设计、透明图标、macOS App Icon、动态壁纸与帧动画的真实过程,并介绍 better-imagegen 如何把模型路由、Prompt 约束、后处理、交付规格和元数据沉淀成一套可复用的视觉工程能力。

青山湖设计风格的诞生记 ↗
青山湖设计风格不是从一套漂亮配色表开始的,而是在 Argos 与小界两个真实产品里,经过景区意象提炼、界面反例纠偏、macOS 安全实现和跨项目复用逐步长出来的。本文复盘它从一句自然语言需求到 DESIGN.md 的全过程,以及我如何和 Agent 一起建立可执行、可验证、可迁移的设计语言。

让云雾动起来:聊天界面的分层氛围动画 ↗
复盘一次 Agent 聊天界面的云雾层改造:如何用伪元素、多个 radial-gradient 和低成本 transform 动画,把静态淡绿背景做成有层次但不抢内容的氛围层;也记录了从“铺满整屏”到“收束留白”的关键调参过程。

从高频轮询到按需刷新:本地 Agent 数据面的性能优化 ↗
Owlet 同时读取 Claude Code JSONL 与 Codex SQLite,并驱动菜单栏、灵动岛、灵动卡和仪表盘。本文复盘最近一轮性能优化:怎样合并高频刷新、拆分不同 UI surface 的 analytics,并避免无变化数据触发 SwiftUI 重绘。

@unchecked Sendable 骗过了编译器:一次 Swift 并发字典崩溃复盘 ↗
这篇文章复盘我在 Owlet 里一天内连修的两次 Swift 崩溃。第一次是并发数据竞争:一个被 @unchecked Sendable 骗过编译器的普通 Dictionary,在两个并发 import 里被同时写坏内存,崩溃点还飘到毫不相干的第三个线程上。第二次是确定性的 Data 下标越界:removeFirst 之后 Data 的 startIndex 不归零,用字面量 0 当索引直接越界 SIGTRAP。文章从崩溃日志反推根因,讲清楚为什么细粒度锁不够、read-modify-write 为什么必须整段串行、Swift 6 里 async 上下文为什么不让你裸用 NSLock.lock(),以及切片类型的索引为什么不能信 0。

我在给自己建一个 LLM wiki ↗
这篇文章想聊一个我最近才想明白的事:当我把"怎么做一件事"沉淀进 CLAUDE.md 规则、Claude Code skill、还有博客文章时,我其实是在为 AI 建一个知识库——一个 LLM wiki。它和传统给人看的 wiki 不一样:读者是 LLM,所以要可执行、有触发词、能被 ground truth 校验。文章结合我这半年从前端转 Agent 的实践,讲清这三种沉淀载体各自的定位,以及怎么写才能真正被复用。

我用 Claude Code + Codex vibe 了一个 macOS App:Owlet ↗
这篇文章记录我用 Claude Code 和 Codex 以 vibe coding 方式做一个 macOS menu-bar 应用的全过程:从最初想“看看我每天烧了多少 token”,到做出 Owlet 这个能实时监控 Claude Code 和 Codex 使用量的小工具。过程中有 AI 双开协作的节奏、把家乡青山湖风景写进配色的执念,也有对 menu-bar app 电量的偏执。

打包后 Bundle.module 直接崩:一个 SPM app 首启必崩的资源陷阱 ↗
这篇文章复盘我在 Owlet 上遇到的一个「用户第一次装、一打开就崩」的 bug。两台不同机器、不同用户、不同 macOS 版本,crash log 一模一样,崩溃点是 SwiftPM 合成的 Bundle.module 在触发 _assertionFailure。根因是纯 SPM 的 macOS app 手动组装成 .app 之后,Swift Package Manager 默认生成的 Bundle.module 资源定位逻辑找不到资源包,会直接 fatalError;而我在 8 处加载资源里,唯独一处漏用了自己写的兜底封装。文章从 crash log 反推根因,讲清楚 Bundle.module 为什么在开发时不崩、用户首装必崩,以及为什么这种「只有一处漏网」的 bug 最难在本地复现。

一次 macOS 灵动卡崩溃排查:别把桌面小组件当普通窗口 ↗
这篇文章记录我在做 Argos 灵动卡时踩到的一次 macOS 桌面浮窗崩溃:同样是 Apple Silicon、同样是新版系统,有的机器稳定,有的机器一打开就崩。真正的问题不在业务逻辑,而在 AppKit window level、透明 panel、系统材质和启动持久化策略叠加后的边界行为。

为什么选 Fumadocs:Node.js 项目接入开箱即用文档站 ↗
给 Midway.js 后端服务搭文档站的选型过程:为什么在 Vitepress / Docusaurus 里最终选了 Fumadocs,它开箱即用的颜值从何而来,fumadocs-openapi 如何自动从 OpenAPI spec 生成接口文档,以及怎么用 Next.js 静态导出 + egg-static 把它嵌进 Midway 项目、一个命令同时跑服务端和文档站。

粒子系统实践:从一版难看的彩纸特效说起 ↗
这篇文章复盘一次 macOS 工具里“段位晋级彩纸特效”的真实迭代:为什么一开始会像从上往下掉、为什么彩带会显得别扭、爆点和光晕为什么不一定高级,以及如何用 emitter、particle、glint、ambient sparkle、bloom、lifetime、distribution、motion field 这些概念,把一个庆祝动画调到可接受。

Facebook广告预算反推:一天100元想拿2000成效现实吗 ↗
很多投流问题看起来像优化问题,本质却是数学约束。本文用「一天 100 元预算、目标 2000 个成效」这个例子,拆解目标单次成本、当前成本、受众规模和放量节奏之间的关系,给出一个判断框架:什么时候该优化素材,什么时候该扩受众,什么时候必须承认预算目标不现实。

Facebook Pixel 接入踩坑全记录:从 AEM 到 ChapterCompleted 触发时机 ↗
为小说站点接入 Facebook Pixel 并对接广告投流,踩了一堆坑。整理 6 个非显而易见的问题:AEM 术语已废弃、三层事件类型搞混、ChapterCompleted 触发时机错误、两个后台工具职责不清、Meta 广告系列目标锁死、CAPI 在静态导出站的额外成本。给同样做内容站投流的前端开发者参考。

Claude Code Skill Token 优化实践:从 162KB 到 117KB ↗
记录一次给 Claude Code 自定义 Skill 做 token 瘦身的实践。核心方法是把 reference 文件按"谁在哪个 phase 用"拆分,把同一个合规说明的三份副本压缩成一份,把 21 个 costume 模板压缩为 5 个 exemplar。结果:最重的单个 reference 文件从 162KB 降到 117KB,每次插图生成额外省 27KB 上下文。适合正在构建 Claude Code 自定义 Skill 的开发者。

冷流量 Ch1 钩子:把第一章当 Landing Page 来写 ↗
我在做一个 Facebook 投流 + 小说站套利的 AI Agent 系统。这篇讲的是其中一个让我意识到"写作即产品设计"的规范——如何写第一章,让广告带来的冷流量读者在 200 字内决定继续读下去。不谈文学,只谈转化。
用 Claude Code + Remotion 复刻 RunCat 奔跑的猫帧动画 ↗
RunCat 菜单栏那只随 CPU 使用率加速奔跑的小猫,本质是 5 帧 PNG 的循环 sprite 动画。这篇文章先扒开它的源码,拆解帧循环和速度公式,再用 Claude Code + Remotion 把这套逐帧动画在 React 里声明式复刻出来、渲染成可无限循环的 GIF,并讲清楚 Remotion「纯函数帧模型」的适用边界,以及这条工作流里 AI 到底加速了什么。

Agentic System Engineer 成长路线图与学习指南 ↗
从这张能力架构图出发,结合全栈开发背景,规划一条系统化的 Agent 工程师成长路径。

字节 agent-tars 技术揭秘(硬啃) ↗
深入阅读字节跳动开源的 agent-tars 源码,剖析其基于 Electron 的双进程架构、Aware/Executor/AgentFlow 三层 Agent 循环设计,以及 MCP 工具调用与事件管理机制。
「已解决」error:0308010C:digital envelope routines::unsupported ↗
Node.js 17+ 升级 OpenSSL 3 后,旧版 Webpack 等构建工具可能触发 error:0308010C。本文说明根因、临时绕过方案,以及应当优先做的长期修复。
Node.js 的 incompatible engine:该忽略,还是该修依赖? ↗
遇到 package.json 的 engines 与本地 Node.js 版本不匹配时,先区分 warning 与 hard failure。本文说明 npm、Yarn、pnpm 的处理方式,以及何时绝不能忽略。
「已解决」Failed to connect to github.com port 443 ↗
git push 或访问 GitHub 时出现 Failed to connect to github.com port 443,优先按 DNS、代理与网络出口逐层定位。不要再依赖易失效的 hosts IP。

React Native 引入第三方 Android SDK ↗
在 React Native 开发中,如果一个原生 SDK 没有适配 React Native 的插件,原则上我们不推荐你使用。但是万不得已的情况下,我们有办法吗?答案是肯定的。步骤大致分为集成 SDK、编写桥接代码。知难行易,本文就是顺着这个思路来解决让前端工程师脑壳疼的集成第三方 SDK 并编写桥接代码的问题。
为什么 Rust 需要局部变量隐藏 ↗
在 Rust 的世界中,变量可以被一个同名的变量覆盖掉的现象就叫做隐藏。这意味着我们随后使用这个名称时,他指向的将会是第二个变量。
从零使用 Go 语言构建 CLI 项目 ↗
项目基于流行的 Go CLI 框架 Cobra 项目开发,基本按预期实现了需求和设计目标,为之后进一步完善开发者生态找到了抓手,为形成开发闭环添加了重要一环(皮一下)。
使用 Jest 和 Enzyme 进行 React Native 单元测试 ↗
通常来说,程序员每修改一次程序就会进行最少一次单元测试,在编写程序的过程中前后很可能要进行多次单元测试,以证实程序达到软件规格书要求的工作目标,没有程序错误。在 TDD 中,甚至是先根据设计编写单元测试,然后根据单元测试写代码。
叮,一份 Deno GitHub Action 源码解析请查收 ↗
GitHub Action 是 GitHub 官方的 CI/CD 工具,相较于 Travis CI 和 Circle CI,更轻量和易于扩展,marketplace 中有大量社区贡献的插件。各大开源项目都纷纷转向使用 GitHub Action 作为持续集成的工具,比如本文的主角 Deno。
当我们在聊 React Native 时,我们在聊什么 ↗
那是 18 年的夏天,公司 6 月底去成都团建回郑州后,小弟、肖老师和当时绰号小萌的我(以下简称三剑客)开始了使用 React Native 开发 App 的工作。当时经验尚浅的我也只是有小程序和公众号的开发经验,唯一的亮点就是封装了 wx-promise-pro 并独立完成了一个小程序的全栈开发,而另外两位同事一个后端大佬经验丰富,一个 ios、vue、android、C#、Java 等等技能栈点满。
深入理解 Rust 所有权、借用、生命周期 ↗
本文由浅入深,深入浅出地讲解了 Rust 中的所有权、借用、生命周期,希望能帮助大家更好地理解 Rust 中的所有权、借用、生命周期。
解决方案架构师技巧:架构图的 5 种类型 ↗
本文将讨论你应该根据五个不同的受众制作的五种不同类型的图表。
闲鱼宗心大佬聊跨端职业发展 ↗
首先感谢掘金这个帮助开发者成长的社区,从 2020 年开始写博客至今,不仅沉淀(水)了近 80 篇博客,还完成了职业生涯的小突破。最重要的在优弧大大发掘我之后,借由掘金这个平台认识了很多好朋友和大佬。其中大圣和言哥对我的影响最多,在我多次迷茫或者瞎搞的时候给出建议或者直接敲打我。

使用 rollup 打包 React Native 插件并发布 ↗
本文接绍了如何使用 rollup 打包 React Native 插件并发布的流程和使用到的 rollup 插件

2023 Rollup 插件机制源码解析 ↗
一个 Rollup 插件是由一个或多个属性、构建钩子函数、输出钩子函数组成的对象,插件还需要符合一些官方的约定。一个插件应该作为一个包来发布,这个包导出一个可以用插件特定的选项来调用的函数,并且该函数返回一个对象。
向微软官方贡献 @types 包后引发的思考 ↗
在前端社区中,TypeScript 差不多是老生常谈的主题了。这不仅反映了 TypeScript 的流行度,也反映了它的学习上手成本。今天我们不来探讨 TypeScript 本身。而是记录一下我艰难地发布一个 @types包的历程。
「已解决」TypeError: moment().tz is not a function ↗
moment().tz is not a function 通常不是时区格式问题,而是 moment-timezone 没有被正确加载。本文给出可复现的导入方式、排查步骤和替代方案。
基于 Probot 实现 GitHub NPM 发布机器人🤖 ↗
GitHub Apps 是 GitHub 中优秀的产品。一个 GitHub App 通过 API 直接使用自己的身份进行操作,这意味着你不需要作为一个单独的用户维护一个机器人或服务账户。
React 性能优化实践 ↗
React 组件性能优化的核心是减少渲染真实 DOM 节点的频率,减少 VirtualDOM 比对的频率。

前端组件化实战之 Button ↗
以 Button 为例拆解 React Native 组件库的主题、交互与 API 设计,讨论组件开发中如何在设计语义、可复用性和工程约束之间做取舍。
掘金一下 | 从零开发一款基于 webview 的 vscode 扩展 ↗
在团队降本提效的基建中,紫升开发了一款 vscode 插件,第一版我使用的是 vscode 内置 UI,虽说也能用,但是用户体验欠佳。由于 vscode 内置 UI 不够灵活,一番调研后我决定使用 webview 重构。
如何开发一款 VS Code yarn.lock 预览插件 ↗
人们总是喜欢炫耀自己的新技能,紫升也不例外,毕竟新技能需要大量的实战练习。在入门了 VS Code 扩展开发后,遇到开发痛点我就习惯地用 VS Code 插件的思路去解决。不过大多扩展 idea 都已经名花有主,直到我想到可以将 yarn.lock 文件可视化并搜索相关插件无果后,我知道机会来了。
前端无感知刷新 Token ↗
为了安全考虑,一般后端都要求在请求接口时传递登录的 Token。为了防止 Token 泄漏的风险,服务器的 Token 一般不会设置太长时间,比如我最近联调的,两个小时就会过期,token 过期就需要重新登陆。

基于 code-server 实现 WebIDE 的探索 ↗
WebIDE 是基于 H5 支持多语言的在线集成开发环境。相较于传统的本地 IDE,WebIDE 是开箱即用的,你不用配置 git 环境、node 环境、react 环境甚至 React Native 环境。
single-spa 原理解析 ↗
Single-spa 是一个将多个单页面应用聚合为一个整体应用的 JavaScript 微前端框架。 使用 single-spa 进行前端架构设计可以带来很多好处

每个前端都值得拥有自己的组件库,就像每个夏天都拥有西瓜🍉 ↗
这是一篇干货比较多的组件库搭建实战教程,不仅有通用的代码规范、提交规范、文档维护、单元测试、GitHub Action 配置的讲解,还涉及基于 lerna 的多包管理架构、React Native 图标库建设、React Native 组件库开发调试、按需加载原理及实现。

少壮不努力,老大写博客 ↗
回顾从搭建博客到持续技术写作的路径,讨论输入、系列化输出和社区参与如何积累个人影响力,为技术人长期写作提供一套可执行的起点。

2020 年中总结 ↗
怕什么真理无穷,进一寸有一寸的欢喜 | 掘金征文 上半年总结 2020 的上半年注定是不平凡的一年,不管什么谈话基本都可以从疫情聊起: 朋友A:你们公司复工了吗?还在家办公吗? 朋友B:你们工资及时发了吗?公司不会倒闭了吧? 某亲戚:今年这疫情弄得,办个婚礼都没人去,好多都推了。 面试官:你为什么从之前公司离职? 我:教育行业,因为疫情拖欠了俩月工资 总的来说,疫情对我的直接影响还挺大。...

一个前端工程师的 Docker 学习笔记 ↗
Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效和轻松!

写给前端的 Linux 实战教程 ↗
本文主要讲解了写给前端的 Linux 实战教程,简单易懂,又有实战操作,对你有一定的参考价值,需要的朋友可以学习下。

前端规范化开发实践 ↗
本文以 React Native 项目为示例介绍了前端规范化开发涉及的工具及知识,但是所涉及内容具有通用性,建议读者点赞收藏(^▽^)。

React Native 架构面面观 ↗
本文记录了一些 React Native 架构方案的最佳实践
React Native 字体缩放:别为了布局稳定一刀切关掉无障碍 ↗
React Native 的 allowFontScaling 能修复字号变大后的布局问题,但全局关闭会伤害无障碍体验。本文给出排查路径、组件级处理方式与适合全局限制的边界。
wx-promise-pro ↗
wx-promise-pro 是一个 强大、优雅的小程序异步库🚀 小程序 promise 插件

从零开发一个 Node Cli ↗
Node.js 用途很广,常用来开发服务、桌面应用等被开发者熟知,Node.js 还有另外一个非常实用的场景 - 命令行应用(后文统称 CLI)。
ES 标准中相等比较算法 SameValue 和 SameValueZero ↗
JavaScript 对值的相等判断有很多不同的算法,== 只是最常用的一种。由于 NaN 和正负零的涉入,除了 == 和 === 之外还有 SameValue 和 SameValueZero 算法。

JavaScript 作用域:双语学习笔记 ↗
解释作用域链及内外作用域关系,与闭包笔记形成可回看的知识链。

JavaScript 原型链:双语学习笔记 ↗
包含 Object.create 的具体示例和属性查找过程,保留原作者署名及词汇。

JavaScript 变量提升:双语学习笔记 ↗
对变量与函数声明的提升行为有连续解释,保留中英对照及相关术语。

JavaScript 的 this:双语学习笔记 ↗
围绕调用上下文、bind、call、apply 展开,保留原视频和中英对照。

JavaScript 闭包:双语学习笔记 ↗
围绕词法环境、闭包与循环变量展开,保留双语解释和词汇积累。

ReAct:推理与行动的论文阅读笔记 ↗
保留论文的原始实验语境、图表和原始项目链接,不冒充本人研究成果。

三数之和:排序与双指针 ↗
有完整思路、去重规则、示例和可运行代码,保留原解法署名。

二分查找与左右边界 ↗
有实现、边界变体和测试示例;修正说明中的中点括号及术语错误后保留。

浏览器事件循环与微任务笔记 ↗
有任务顺序代码和微任务示例;修正浏览器与 Node.js 混用及执行时机表述后保留。

算法英语听写与跟读练习 ↗
包含逐句听写、语音标记和明确的 TED-Ed 来源,属于具体学习材料。

软件开发英语词汇与例句 ↗
长期积累的技术词汇、音标与应用例句,适合检索复习。