基于荷尔蒙开发的开源项目

TUIC 终究又是一个失败的开源项目,至少现在看来如此。一方面是社区上的失败,另一方面是我个人的失败。 开源项目到底是什么 究其根本,一个没有商业化的开源项目,本质上就是开发者的技术热情。换句话讲,这样的开源项目就是其开发者荷尔蒙在成果上的体现。 人类的本性永远是自私的。为什么我们会将自己辛苦思考并创作的结果,不求任何回报地分享给他人? 对技术的热爱 分享欲 成就感 “我要让世界变得更好” 捐赠收入 可惜,这些都不足以支撑一个开源项目长期发展。 我为什么要开发且开源 TU

近况说明与新的博客

已经一年多没有再更新了。其间发生了很多事情,也有很多想法,但是我没有记录下来。这是一个很大的遗憾。 首先,关于本博客。 这些年来,我对一些事物的理解发生了很大的变化。对于这个记录我多年来技术与想法的记事本,我觉得其最有价值的是其中的内容,而非是它的形式,或是它本身。所以,我决定将它迁移到一个新的平台上。 从 2015 年到最近,我一直在用 Typecho 作为博客引擎。Typecho 是一个非常棒的项目。对我而言,它还是很特殊的意义,甚至可以说,是它引导我开始在技术方面探索。

分布式状态机共识协议 Copilot——论文阅读:Tolerating Slowdowns in Replicated State Machines using Copilots

论文原文:Tolerating Slowdowns in Replicated State Machines using Copilots 以下内容是对这篇论文的阅读总结,以及部分重要章节(§3 Design、§5 Optimizations)的翻译。 前言 现有的分布式状态机共识协议,不论其是何种流派,何种实现,都在模型中将节点状态抽象为仅有“在线”与“下线”两种情况。然而在实践上,节点状态并非只有这两种互斥的状态——节点可能因配置错误,节点侧网络问题,部分硬件出现问题,

基于 QUIC 的代理软件:TUIC

QUIC 协议汲取了大量人们给 TCP 糊墙的经验教训,把连接结构优化到(目前来看)极致。但是现在市面上的代理工具还没有能完全利用 QUIC 特性的存在,所以我自己动手写了一个基于 QUIC 协议的新代理工具:TUIC https://github.com/EAimTY/tuic 1-RTT TCP 中继 0-RTT UDP 中继,且 NAT 类型为 FullCone 在用户空间的拥塞控制,也就是说可以在任何系统平台实现双向的 BBR 两种 UDP 中继模式: native

HashMap,以及没有 hash 的 HashMap

我之前对 HashMap 有很多错误的理解,特别是在 hash 函数对性能的影响上。最近我对 HashMap 的了解稍稍深入了一些,所以写了这篇笔记,对之前的错误理解修正总结。 “透明”的 hash 函数 首先从 hash 函数说起。 在我之前的理解中,hash 的用处就是: 能根据一个任何(支持被 hash)类型的值计算出一个无符号整数 对于两个相同的值,hash 出的值必须相等 对于两个不同的值,hash 出的值必须有极大概率(接近 100%)不同,也就是碰撞概率要低

将 git 仓库作为数据库的动态 CMS:hummingbird

我从今年六月开始学 Rust,到现在差不多有半年了。写 hummingbird 这个项目的想法我在八月就已经有了:写一个用 git 仓库作为数据库的内容管理系统,给 git repo 中 markdown 格式的文章套 HTML 模板,然后 serve。 这样能结合传统 CMS 和 GitHub Pages 的优点——能用对于 CMS 本身只读的 git 仓库保证数据的安全性,也能像传统的 CMS 一样提供动态内容,比如搜索文章内容,甚至支持在一次搜索中使用多个 filter

使用 teledustry,通过 Telegram bot 远程管理你的 Mindustry 游戏服务器

最近架了个 Mindustry 游戏服务器和朋友一起玩 PvP(然而没玩几天就弃坑跑去 MC 了),感觉不错,只是每次输命令和上传地图的时候都要 ssh/sftp 到服务器上有点不方便,所以就写了个 Telegram 机器人用来输命令和上传地图: teledustry - Manage your Mindustry server through Telegram bot 我不会写 Java,所以没把这个 bot 写成 mod 的形式,而是直接把游戏服务器进程创建为子进程,然后

Xuanwu - 在全角字符与半角字符间添加空格的命令行工具

Pangu 是一个有名的用来在全角字符与半角字符间添加空格的库,支持多种语言,其中 Node.js 版 pangu.js 可以作为命令行前端来使用。 但是由于是 Node.js,想要用 pangu 就需要装很多依赖,类 Unix 系统有包管理还好说,在 Windows 平台下装 node 只为了用 Pangu 实在是有点麻烦。 为了解决这个问题,我写了一个 Pangu 的命令行前端 Xuanwu,基于 pangu-rs,非常简单,只有六十行代码😂,还没有任何依赖。 需要用 P

用 Rust 写一个用于 OCR 的 Telegram Bot

最近一段时间在学 Rust,想写一些简单的小工具来巩固一下。之前用其它语言写过 Telegram bot,所以我就用 Rust 写 Telegram bot 吧。 Rust 相比于其它流行的语言网络上的资源比较少,中文内容更是寥寥无几。虽然我的 Rust 连入门都谈不上,代码里可能会有不少不合理的地方,但是还是想把过程记录一下,供他人参考,希望可以为 Rust 社区做一些微不足道的贡献,也算是抛砖引玉吧。 成品 bot 在 EAimTY/eaimty_bot。这是个用来练手的

牛年伊始,自我总结

又是整整一年过去,是时候该总结一下之前的一年了。 过去的一年我干了什么?无非只是吃饭、睡觉、摸鱼、应付考试而已。有时候心血来潮会学习或写一些新东西,可惜都是三天打鱼两天晒网,没有向哪个方向深入就停下了。深知自己没什么技术,可是却一直提不起干劲。 由于大流行,去年有近9个月的时间都是在家中度过的,经常熬夜,靠外卖度日,下半年回到学校后也是经常摸鱼。过了这样一年“懒散”的生活,再加上作息与饮食的不规律,我感觉自己变“老”了。这里的“老”指的并不是年龄的增长,而是指精神状态变差。我