念头。遇见不同想法 NIANTOU.NET

在别人的文字里,遇见自己的念头。

独立书写 · 自由阅读

CatCoding

按发表时间排列
20 篇

Winlane:我的 Mac 工具箱

我在 macOS 上日常用得最多的软件是 contexts ,这是一个窗口 switcher,但这个软件似乎好几年都没更新了。我之前还发邮件去问过作者,他回复说一切都工作得很好,也没有什么新功能想法,所以就一直没更新。 然后某天我看到有的人用 Rust 实现了跨平台的输入法,于是我就起了个新坑,尝试用 AI 来帮我重新实现类似 Contexts 的工具,整个过程比较顺利,项目代码在 Winlane 。 Contexts 有很多配置项,但我只用它最核心的窗口切换功能。而做完这些基础功能之后我又忍不住继续把我日常依赖的

Dotr: 一个简单的配置备份工具

这周我的 Mac 突然无法开机了,睡午觉之前我没插电让它继续跑程序,回来后就发现已经黑屏,无论如何充电都无法开机。用了 14 年 Mac 第一次出现这种情况,麻烦的是我暑假在湖南老家待着,发现整个地级市都没办法修复 Mac,无奈寄去长沙的苹果售后修理。 但这两天我还有些工作需要处理,所以就在家人的 PC 机上开始重建我的工作流程和工具。这时候才想起,我应该是有份比较新的配置备份。然后直接从 GitHub 的私有库上拉取下来,交给 AI 帮我恢复配置,一切都方便多了。 完成这次备份的小工具是 dotr ,几个月之前我

Obr: a Web UI for My Obsidian Vault

A few years ago I built a tiny personal tool called Obweb . Its purpose was dead simple: open a browser, type a quick thought, and append it to my Obsidian notes. Then one day the VPS was shutdown for some reasons, I need to redeploy it on another VPS and it i

ghr:把开源维护工作搬进终端

五一期间我看到 dhh 发的一个帖子推荐 GitHub TUI: ghui ,我安装试了一下,发现还需要安装 bun,另外功能看起来也不太够用。 我也看过 gh-dash ,这东西是 gh 的一个 extension,我试了一下同样感觉体验不好,于是手痒开始让 AI 帮我用 Rust 重新写一个。 最近在工作中也写过一个 Rust 的 TUI 工具,感觉 Rust 的生态已经很成熟了,写起来也很顺手。于是就有了 ghr 这个项目。 它的目标一开始很简单:我想少在 GitHub 网页里来回点。作为一个经常看 PR、r

GitHeron:把网页标注写到 GitHub

最近写了一个 Chrome 插件,叫 GitHeron 。它想解决的问题很简单: Web highlights and clippings, synced to GitHub as Markdown. 我一直使用 Hypothesis 来同步冲浪记录,然后使用一个 Obsidian 插件 来同步到我的知识库。但 hypothesis 的浏览器插件体验不佳,时不时需要登录,选中文字打算做备注时又偶尔无法激活,我就想自己写个插件来解决这个问题。 GitHeron 的思路是直接使用 Github token 访问私有 r

开发 Runnel 的一些记录

最近断断续续 Vibe Coding 写了一个小工具,叫 Runnel 。因为我之前用的两个机场都跪了 (虽然后来又逐渐恢复了),于是萌生了自己写个代理工具的想法,顺便把一些网络相关的东西重新摸一遍。 Runnel 有“小河流”的意思,我觉得还挺贴切:不是要做一个很宏大的网络基础设施,就是在本机和远端之间挖一条能用、能看、能调试的小通道。 先让 AI 快速撸了一个车 native-http 版本的,然后又加了多路复用的 native-mux 模式。后来又想到一个同事说他一直用自己写的代理工具叫做 daze ,所以立

macOS 奇怪的安全扫码机制

今天跑 Rust 编译器测试的时候又发现非常地慢,CPU 资源根本无法利用起来,我记得几年前碰到过这个问题,当时我写了篇 文章 分享出来,并发现很多人都有同样的困扰。 而我今天碰到的这个问题虽然现象一样,但解决方法又不同了。我不确定是 macOS 系统更新,亦或是我更新了 VS Code 造成的。 问题 复现脚本很简单,循环创建随机命名的 shell 脚本,然后对比首次和再次执行的耗时: # !/bin/bash rm - rf /tmp/speed_test mkdir - p /tmp/speed_test f

hexo-rs:玩 Vibe Coding

月底升级了 Copilot Pro+,月初额度重置,这几天可以放开用,想到什么就 vibe 一把。 我的博客跑在 Hexo 上很多年了。其实没什么大问题,就是每次看到那几百 MB 的 node_modules,心里总有点膈应——生成几百个静态 HTML,真的需要这么多依赖吗?但迁移到别的博客系统又懒得折腾,所以一直拖着。 这次干脆试试:能不能用 AI 一个下午撸一个 Rust 版的 Hexo?我的目标比较简单:生成跟原来一样的静态文件,兼容我现在用的主题就行。 我用的是 OpenCode + Opus 4.5。陆陆

How Fiber Network Works

I just got back from CKCon in beautiful Chiang Mai 🌴, where I gave a talk on the Fiber Network. To help everyone wrap their heads around how Fiber (CKB’s Lightning Network) actually moves assets, I hacked a visual simulation with AI. To my surprise, people di

在开源中使用 LLM

越来越多的开发者开始使用 LLM 等 AI 工具,过去半年我看到不少相关讨论:有人非常反感使用 LLM 工具,有人保持中立,但确实有相当数量的 AI 生成 PR 给开源项目维护者带来了负担和困扰。 现在出现了一些新苗头,比如 GitHub 账号也开始“养号”。我推测大概有以下几个原因: 为了加密货币空投 2023–2024 年类似的情况比较多,有些加密货币项目会根据开发者的 GitHub 公开提交记录进行空投。如果一个账号给项目方关注的项目提过 PR,就更容易获得。例如 Rust 在区块链领域用得比较多,所以 Ru

Rust 背锅了:Cloudflare 故障分析

这两天都在讨论 Cloudflare 的安全事故 Cloudflare outage on November 18, 2025 ,我也写点自己的想法。 这个事故当然引起的范围特别广,我当时正在用 ChatGPT,突然再打开总是提示正在加载,我还以为是自己的 VPN 出了问题,第二天起来才知道 Cloudflare 跪了好久。 没多久 Cloudflare 就发出来了一个非常详细的事故说明。我对里面的场景非常熟悉,因为我之前因为类似的原因把大疆的大部分流量都给搞挂了,具体请看 谈谈工作中的犯错 中的配置错误。 这次事

零知识证明入门

无论是在聊 L2、隐私还是下一代 Web 技术,零知识证明都是经常会碰到的技术术语,听起来就像是科幻小说里的东西: 向你证明我知道一个秘密,但绝不透露这个秘密本身 ,这简直是程序员的终极浪漫。 大多数人粗看都会觉得这东西是密码学博士们的专属玩具,我花了一段时间学习后,发现这条通往魔法世界的路似乎有迹可循,希望这篇入门介绍能帮助到更多这方向的学习者。 魔法洞穴 忘掉所有数学,我们先从一个故事开始——“阿里巴巴洞穴”,这是理解 ZKP 最经典的例子,最早由 Jean-Jacques Quisquater 等人于 199

RISC-V from Scratch: Building a Virtual Machine

I’ve always wanted to learn RISC-V. A few days ago, I finally got my hands dirty with it now. This post will guide you through the process of building a simple RISC-V VM from the ground up, using Rust as our implementation language. Understanding the Core Conc

Rust Week 2025 杂记

5 月中旬我参加了在荷兰 Utrecht 举行的 Rust Week,想来可以写篇文章记录下所见所闻。 我年初和 Rust 基金会邮件确认参加,但直到 4 月 9 日才开始动手申请签证。在深圳办理荷兰签证流程简单,只需提交材料并录指纹,但我嫌麻烦找了中介帮忙。据说大概也就两周多就会有结果,但直到五一查询还是没结果,中介说可以加 600 元加急。看到官网解释近期审批延迟,我便花钱加急,第二周拿到了签证。不知道这其中是否有猫腻,但确实有华为的朋友同样卡在那个节点审批,结果没有如期下来。 从广州白云机场有直飞阿姆斯特丹的

从椭圆曲线到 secp256k

区块链这行经常会和椭圆曲线密码算法打交道,我也在尝试理解这其中的数学原理,这里记录一下。 什么是椭圆曲线 (elliptic curve) 先想象一个普通的曲线,比如抛物线(抛个球的轨迹)。椭圆曲线不是椭圆(名字有点误导),而是一种长得像“对称小山丘”或者“歪歪扭扭的环”的数学图形。 椭圆曲线通常表示为: $$ y^2 = x^3 + ax + b$$ 通过这个方程我们可以看到椭圆曲线是上下对称的,其中 (a) 和 (b) 是曲线参数,比如下面这些曲线就是 b = 1 的情况下,a 从 2 变到 -3 的情况: 我

Future 的大小对性能的影响

在 Rust 异步编程中,有一种观点认为: Future 的大小显著影响性能 。你是否怀疑过这个说法的真实性?如果是真的,这种性能差异的根源又是什么?今天,我翻阅了一些源码,并编写实验代码来一探究竟。 Future 的大小如何计算? 为了验证“Future 大小影响性能”这一说法是否成立,我们先从一些简单代码入手。首要任务是弄清楚一个 Future 的大小是如何确定的。毕竟,在编译器眼里,Future 只是一个 trait: pub trait Future { type Output ; fn poll ( se

Fiber Network: 基于 CKB 实现的闪电网络

最近一年我在做 Fiber Network 这个新的开源项目,上个月底刚好 主网第一个版本发布 : 这个项目的挑战还是挺大的,上主网只是一个新的开始。我在开发过程中学到了很多东西,这是我前段时间写的一篇关于 Fiber 的大致介绍。 Fiber 简介 Fiber 是基于 CKB 构建的闪电网络协议,旨在实现快速、安全且高效的链下支付解决方案。借鉴了比特币闪电网络的核心理念,Fiber 针对 CKB 的独特架构进行了深度优化,提供低延迟、高吞吐量的支付通道,适用于微支付和高频交易等场景。与传统的闪电网络不同,Fibe

2024:简单的理想生活

2024 年快结束了,在这最后的一两个小时里我写着这篇年终总结准备跨年了,顺着大致时间线来回顾一下就好了。 年初就起了个好头,众多加密货币开始上涨。总体而言,2024 年是个加密货币和区块链的大年。有那么一小段时间我每天都在关注涨跌,渐渐地我发现这个领域涨跌都是太频繁了,而过多关注除了浪费时间并没有什么大的用处。因为两年前开始在这个领域工作,所以我自然也会投资一些加密货币。刚开始我稍微接触了一下合约,但很快亏掉了几千元,算是交了学费。然后很快理智地退出了,合约本质上来说和赌博有点类似,钱来得也快亏得也快,但大概率是

CKB new script verification with VM pause

CKB 相关技术文章第三篇。 背景 CKB 的每一个交易在提交到交易池之前都会经过一个 script verification 的过程,本质上就是通过 CKB-VM 把交易里的 script 跑一遍,如果失败了则直接 reject,如果通过了才会继续后面的流程。 这里的 script 就是一种可以在链上执行的二进制可执行文件,也可以称之为 CKB 上的合约。它是图灵完备的,我们通常可以通过 C、Rust 来实现这些 script,比如 nervosnetwork/ckb-system-scripts 就是 CKB

CKB RBF 设计和实现

CKB 相关技术文章第二篇。 Replace by fee 问题 如果一个交易成功发送到交易池,但可能出现因为费用较低而一直得不到处理。之前 CKB 没有其他措施来处理这种情况。 例如 Dotbit 4 位域名注册拥堵 这个事故发生过程中, CKB 的应用方无法使用任何方式来尽快让自己的交易被打包,这就是引入 Replace-by-fee(RBF) 的原因,我们需要一个机制来提高已经在交易池里交易的费用,替换掉旧的交易,让新的交易尽快被打包。 在新的 multi_index_map 重构后,交易在 pending

读到这里,留一点时间给自己的念头。