为了重玩金庸群侠传,我研究了一下 Ruffle 怎么复活 Flash

6 月 22 日
阅读 9 分钟
184
最近突然想重温一下《金庸群侠传》。不是 Steam 上的重制版,也不是 DOSBox 里跑的老版本,而是很多年前网页上流传的那个 Flash 游戏版本。结果点开才发现:文件还在,情怀还在,浏览器不认了。

用官方模板理解 Decky 插件:一次从模板到架构的速览

5 月 10 日
阅读 19 分钟
1.3k
面向第一次接触 Steam Deck 插件开发的读者。本文以官方仓库 decky-plugin-template 为索引,逐个文件讲清它们为什么存在、如何协作,并给出模板之外、上线前必遇的几个坑。

Drizzle 凭什么贴着 Go 跑——从设计哲学到热路径源码

5 月 10 日
阅读 16 分钟
909
前几天翻 Drizzle 的官网,看到 benchmark 页面上有这么一张图:Drizzle(TypeScript ORM)和 Go 放在一起对比,数字还差不多。

TSRX:一份源码,编译到 React / Solid / Vue / Preact / Ripple

5 月 9 日
阅读 7 分钟
828
TL;DR一份 .tsrx 源码,编译到 React / Preact / Solid / Vue / RippleUI 从表达式变成语句:if / for / try 直接用&{ } 统一响应式解构,条件 Hooks 由编译器处理目前 Alpha,可逐文件采用,影响半径可控

GetX — Flutter 的瑞士军刀,还是过度封装的陷阱?

4 月 22 日
阅读 11 分钟
1.7k
pub.dev 上 likes 排名前列、GitHub 10k+ star,几乎每个 Flutter 新手教程都会提到它 — 但 Flutter 官方文档并没有把它作为新手主线方案。GetX 想做 Flutter 的 "全家桶",一个包搞定状态管理、路由、依赖注入、国际化。全家桶的代价是什么?

Qwopus3.5 — 用 Reasoning SFT 释放 27B 模型的推理潜力

4 月 22 日
阅读 5 分钟
1.3k
你不需要 H100 集群,也不需要每月 $200 的 API 账单。一台 16GB 显存的笔记本,就能跑一个推理能力显著超越同级别开源模型的本地模型。

用 3100 个数字造一台计算机

4 月 8 日
阅读 5 分钟
1.1k
不是说你桌上那台——那个有几十亿个晶体管、跑着操作系统和浏览器的庞然大物。我说的是最本质的那个东西:能算数、能画画、能放音乐、能响应你的键盘和鼠标。

深入 JavaScript Iterator Helpers:从 API 到引擎实现

3 月 29 日
阅读 16 分钟
967
ES2025 正式引入了 Iterator Helpers —— 一组挂载在 Iterator.prototype 上的函数式方法。本文从 API 用法、性能优势、规范算法三个层面逐层展开,带你真正理解这套机制的设计哲学与底层实现。

深入理解 Go Context:从原理到实战(基于 Go 1.26)

3 月 29 日
阅读 20 分钟
2.7k
在 Go 的并发编程中,context 包是最核心的基础设施之一。它解决了一个看似简单却极其重要的问题:如何优雅地控制 goroutine 的生命周期?

RTK:给 AI 编码助手瘦身的 Rust 代理

3 月 29 日
阅读 11 分钟
2.6k
当你使用 Claude Code、Cursor、Gemini CLI 等 AI 编码工具时,每一次 git status、cargo test、ls -la 的输出都会被完整地送入 LLM 上下文。一个 30 分钟的编码会话,仅命令输出就可能消耗 ~118,000 tokens。

Pagefind:为静态网站打造的极速搜索方案

2 月 2 日
阅读 11 分钟
2.8k
Pagefind 是一个专为静态网站设计的开源搜索引擎,它能够自动索引你的网站并提供完全离线的搜索体验。核心特性按需加载:只下载搜索相关的内容片段,而不是整个索引轻量级:核心 JS 仅约 20KB,索引文件高度压缩(相比 Lunr.js 减少 85%)零配置:自动识别内容,开箱即用多语言支持:内置中文、日文等多语言分词器完全静...

跨平台框架怎么选:16 个框架全景对比(2026 版)

2 月 2 日
阅读 31 分钟
5.9k
选错框架的代价:某团队用 Electron 做笔记应用,上线后用户反馈"启动 5 秒,内存 500MB"。重构用了 3 个月。如果一开始选 Tauri 或 Wails,这个坑完全可以避免。

Porffor:用 JavaScript 写的 JavaScript AOT 编译器

2 月 1 日
阅读 7 分钟
1.5k
如果你写过 JavaScript,你可能习惯了它的动态类型、即时编译(JIT)和无处不在的运行时。但有没有想过,如果把 JavaScript 提前编译成机器码会发生什么?

ECS 架构深度解析:从 OOP 到数据驱动的游戏开发革命

2 月 1 日
阅读 43 分钟
2k
引言:一个游戏开发中的经典难题想象你正在开发一款 RPG 游戏,游戏中有这样几种角色:玩家角色:可以移动、攻击、使用技能、装备武器NPC 商人:可以移动、可交互、有库存系统怪物:可以移动、攻击、有AI可破坏的箱子:可以被攻击、有生命值、可掉落物品如果你使用传统的面向对象编程(OOP),你可能会设计这样的继承结...

Hono 路由器为什么这么快?

1 月 25 日
阅读 6 分钟
1.2k
在众多 JavaScript Web 框架中,Hono 以其极致的性能表现脱颖而出。特别是在 Cloudflare Workers、Deno 等边缘计算环境中,Hono 的路由匹配速度在同类框架中名列前茅。这背后的秘密是什么?答案就藏在它的 RegExpRouter 实现中。

HonoX:下一代全栈 Web 框架深度解析

1 月 25 日
阅读 11 分钟
1.8k
在现代 Web 开发中,我们面临着一个永恒的挑战:如何在提供丰富交互体验的同时,保持快速的加载速度和优秀的性能?传统的单页应用(SPA)虽然交互流畅,但首屏加载慢、SEO 困难;而传统的服务端渲染(SSR)虽然首屏快,但缺乏现代前端框架的开发体验。

SaaS 时代已死,SaaS 时代已来

1 月 10 日
阅读 2 分钟
1.4k
Software as a Service → Service as a Software上周我用 Claude Code 写一个项目,从描述需求到上线,3 小时。以前这活儿我得写两周。坐在屏幕前,看着 Agent 自己读文件、改代码、跑测试,我脑子里突然冒出一个念头:完了,游戏规则变了。新人的路,可能被堵死了这事让我挺难受的。我是怎么成长起来的?写代码、踩坑、...

Ripple:一个现代的响应式 UI 框架

1 月 10 日
阅读 7 分钟
3.6k
AI 可以快速生成代码,但它生成的往往是"能跑就行"的代码——冗余的状态管理、不必要的重渲染、臃肿的依赖。当项目规模增长,这些问题会被放大。

基于 Squoosh WASM 的浏览器端图片转换库

1 月 8 日
阅读 8 分钟
1.4k
在 Web 开发中,图片处理是一个常见需求。传统方案要么依赖服务端处理,要么使用 Canvas API,但前者增加服务器负担,后者在压缩质量上不尽人意。Google 的 Squoosh 项目提供了基于 WASM 的高质量图片编解码器,但直接使用比较繁琐。

Grit:代码重构利器

2025-12-30
阅读 10 分钟
1.5k
面对需要修改数百个文件的代码迁移,你还在手动一个个改吗?今天介绍一款能让代码批量重构像查找替换一样简单的工具 —— Grit。为什么需要 Grit作为开发者,我们经常遇到这样的场景:团队决定统一使用 lodash-es 替代 lodash,需要修改几百个 import 语句项目要从 React 类组件迁移到 Hooks,涉及上千个组件某个废弃的 AP...

手写一个 Askama 模板压缩工具

2025-12-23
阅读 15 分钟
1.4k
在 Web 开发中,前端资源的大小直接影响用户体验。大型模板文件不仅占用带宽,还会延长页面加载时间。虽然市面上有很多 HTML 压缩工具,但对于使用了模板引擎的 HTML 文件(如 Askama、Jinja2 等),通用压缩器往往会破坏模板语法。

妙用 localeCompare 获取汉字拼音首字母

2025-10-09
阅读 3 分钟
1.8k
在前端开发中,开发者通常会使用 localeCompare 来进行中文字符的排序比较。但 localeCompare 还有一种较为少见的应用场景 —— 通过获取中文字符的拼音首字母来实现检索功能。本文将详细介绍这一实用技巧及其应用。

超长定时器 long-timeout

2025-10-08
阅读 5 分钟
2.3k
在 JavaScript 开发中,定时器是常用的异步编程工具。然而,原生的 setTimeout 和 setInterval 存在一个鲜为人知的限制:它们无法处理超过 24.8 天的定时任务。

前端部署工具 PinMe

2025-09-29
阅读 2 分钟
3.9k
PinMe 是一个免费的 IPFS 托管平台,专为静态网站部署设计。它能让开发者在几秒钟内将网站部署到 IPFS 网络上,确保内容的持久性和抗审查能力。

聊聊前端框架的未来 Signals

2023-10-07
阅读 5 分钟
4.3k
国庆节前最后一周在 Code Review 新同学的 React 代码,发现他想通过 memo 和 useCallback 只渲染被修改的子组件部分。事实上该功能在 React 中是难以做到的。因为 React 状态变化后,会重新执行 render 函数。也就是在组件中调用 setState 之后,整个函数将会重新执行一次。

前端持久化缓存优化

2023-09-24
阅读 4 分钟
3.6k
缓存是提升 web 应用程序有效方法之一,尤其是用户受限于网速的情况下。提升系统的响应能力,降低网络的消耗。当然,内容越接近于用户,则缓存的速度就会越快,缓存的有效性则会越高。

利用中介模式开发全局控制器

2023-09-10
阅读 5 分钟
4.5k
随着应用程序的规模增大,对象越来愈多,他们之间的关系也越来复杂。对象间很容易出现相互引用而导致程序无法运行。同时开发者需要改变或者删除某一个对象时候,需要查找并且改造所有引用到它的对象。这样一来,改造的成本会变的非常高。

聊聊版本号的作用与价值

2023-09-10
阅读 4 分钟
2.6k
在项目开发和运行的过程中,总是少不了各类升级。例如某个功能组件需要更高的依赖库、数据项需要进行兼容等等问题。遇到此类问题开发者需要使用版本号来解决。今天我们就来分析一下项目迭代过程中会遇到的各类升级问题以及如何使用版本号来解决。

聊聊存储引擎的实现要素

2023-06-27
阅读 2 分钟
2.1k
众所周知,MySQL 的 InnoDB 存储引擎使用了 B+ 树作为索引实现,那么为什么不使用其他的数据结构呢?数组、链表或者哈希表。实现存储引擎究竟需要什么条件呢?

让 React 拥有更快的虚拟 DOM

2023-06-18
阅读 3 分钟
3k
Million.js 是一个非常快速和轻量级的 ( <4kb) 虚拟 DOM。框架可以通过包装 React 组件来提升性能(该框架目前版本只兼容 React 18 及以上版本)。