使用 dictd 搭建 DICT 字典服务器

by wzyboy on

本文介绍如何使用 dictd 搭建一个 DICT 字典服务器,并将 Kindle 字典转换、导入其中使用。 一、DICT 协议 说实话,我没想到查字典(自然语言意味)这件事居然有个专门的网络协议。DICT 协议是 1997 年由 RFC 2229 确立的。使用 2628/tcp 通信,它和互联网田园时代的其他协议(如 HTTP/1.0、SMTP)一样,都非常简单,就是直接在 TCP 连接里使用人类可读的英文单词,进行一问一答的交流。比如这是我用 telnet 进行的一次简单的 DICT 会话(粗体文字为我输入的部分): $ telnet 127.0.0.1 2628 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 herus.wzyboy.org dictd 1.12.1/rf on Linux 4.16.12-1-ARCH <auth.mime> <55.25902.1528442646@herus.wzyboy.org> SHOW DB 110 2 databases present OALECD7 "O ……

Anki —— 高效的间隔重复记忆软件

by wzyboy on

本文介绍一款专业的间隔重复(spaced repetition)记忆软件 Anki,以及从 Kindle Vocabulary Builder 导入生词到 Anki 的方法。 一、记忆与 Anki 近现代的心理学家和脑科学家们对记忆进行了不少研究。一般认为,人脑是个讲求效率的机器,会自动舍弃它认为不重要的信息。如果一份信息被大脑接收后不被使用,大脑就会认为它不重要从而舍弃它。这个过程和计算机科学中的垃圾回收(GC)挺像的——没有引用,就被删除。因此要想长久地记住一份信息,自然就是反复使用,让大脑明白这份信息是重要的,不能被舍弃。然而,人生苦短,如果每天都要使用一遍所有记忆的话,时间是不够的。于是科学家们发明了间隔重复。 大脑舍弃记忆的过程并不是瞬间完成的,而是一点一点地进行,先快后慢。德国科学家 Hermann Ebbinghaus 最早系统地研究了这个规律并绘制了遗忘曲线,后人根据遗忘曲线的概念,设计了间隔重复的方法,在即将遗忘的边缘对记忆进行使用,从而达到花最少的时间,保留最多的记忆的目的。 微型计算机普及之后,一家叫 SuperMemo 的公司将上述理论做成了计算机算法,并推出了同名软件。 SuperM ……

BorgBackup 拾遗:备份到 Synology DiskStation

by wzyboy on

在《BorgBackup —— 增量备份方案》一文中,我介绍了一款名为 BorgBackup(或称 Borg)的去重备份工具。本文是对其的补充,介绍将 Synology DiskStation 作为备份宿主所需注意的问题。 场景描述 BorgBackup 需要一个备份宿主。目前对于我使用的不同机器,备份宿主的选择也不同: 对于日常使用的 Arch Linux 笔记本电脑和 Windows 游戏机,备份宿主是家中的 HP Gen8 服务器(相关文章:mergerfs、SnapRAID); 对于世界各地的野生 VPS,备份宿主是原生支持 Borg 的 rsync.net; 对于运行于 AWS EC2 中实例,备份宿主是一台挂载了 EFS 的 EC2。 我最满意的是第一种场景:先使用 SSH 高速内网传输至一个方便随时恢复的宿主,然后 Gen8 上的数据会被定时任务用 rclone 较慢地二次备份到 BackBlaze B2(不易恢复但廉价),完美符合 3-2-1 原则,且兼顾了经济与效率。 但工作用电脑的备份我一直没太上心:办公室里有台 Synology DiskStation,粗略地试了下 SSH 备份没成 ……

关于时间旅行的常见问题

by wzyboy on

旅行者:我是来自未来的时间旅行者,你有什么想问的? 我:你是怎么来到这个时代的? 旅行者:(指着身后的巨大金属机械)时间机器。 我:(惊疑不定)这机器的形状怎么看着那么像个……乌龟? 旅行者:这是 Gömböc 的形状!时间机器运作的时候机体内部会产生重力异常,采用 Gömböc 的形状可以让旅途更加稳定。 我:你来自什么时代? 旅行者:(和善的笑容)不要问旅行者来自什么时代,就像不要问女孩子的年龄一样,这是常识! 我:可是,为什么呢? 旅行者:为了避免祖父悖论。如果你知道我来自什么时代,那你可以针对性地杀死我的祖先,使我无法回到我自己的时代。 我:平行世界理论吗? 旅行者:(叹气)你知道 Git 吧?使用时间机器在不同时间段内跳跃,就像在一个 Git 项目里 checkout 不同的 commit 一样。从未来回到过去的时候,无论我多么小心,我作为不属于这个时代的人,所做的一切都必然会对这个时代产生影响,在我回到未来的时候,就像是对这个时代到未来的所有 commits 做了一次 rebase 一样。如果我对过去的改变足够小,当我回到未来时,虽然已经和出发时的未来有所不同(commit hash 变了),但是 ……

目录级别的冗余存储:SnapRAID

by wzyboy on

在数据存储领域,「备份」和「冗余」是两种常见的数据保护策略。两种策略各有不同的使用场景,对于重要数据,两者一起使用自然是最好了。本文介绍使用 SnapRAID 实现灵活的数据冗余存储。 以下两篇文章与本文内容有联系,推荐阅读: BorgBackup —— 增量备份方案 使用 mergerfs 合并多块硬盘的剩余空间 一、神奇的奇偶校验 小时候一直觉得 WinRAR 的「恢复卷」功能非常神奇。比如有一个 100 MiB 的压缩文件分成 10 个分卷,每个 10 MiB,创建者又创建了 3 个恢复卷,每个也是 10 MiB。当复制、分发这些卷的时候,如果因为数据传输、磁盘存储等各种原因,导致 10 个数据卷中有部分文件损坏或丢失,只要损坏或丢失的数据卷的数量小于等于恢复卷的数量,就可以用对应数量的恢复卷来修复压缩包。 小时候不理解为什么丢失一部分数据之后可以用现有的数据重新算出来,现在明白了,最简单的实现便是奇偶校验。 奇偶校验常见于数据传输中。比如 1 个字节(byte)由 8 个比特(bit)组成,但双方约定:只用 7 bit 来存储数据,剩下 1 bit 作为校验位(parity bit)。校验规则是: ……