by wzyboy on 2018-04-24
旅行者:我是来自未来的时间旅行者,你有什么想问的?
我:你是怎么来到这个时代的?
旅行者:(指着身后的巨大金属机械)时间机器。
我:(惊疑不定)这机器的形状怎么看着那么像个……乌龟?
旅行者:这是 Gömböc 的形状!时间机器运作的时候机体内部会产生重力异常,采用 Gömböc 的形状可以让旅途更加稳定。
我:你来自什么时代?
旅行者:(和善的笑容)不要问旅行者来自什么时代,就像不要问女孩子的年龄一样,这是常识!
我:可是,为什么呢?
旅行者:为了避免祖父悖论。如果你知道我来自什么时代,那你可以针对性地杀死我的祖先,使我无法回到我自己的时代。
我:平行世界理论吗?
旅行者:(叹气)你知道 Git 吧?使用时间机器在不同时间段内跳跃,就像在一个 Git 项目里 checkout 不同的 commit 一样。从未来回到过去的时候,无论我多么小心,我作为不属于这个时代的人,所做的一切都必然会对这个时代产生影响,在我回到未来的时候,就像是对这个时代到未来的所有 commits 做了一次 rebase 一样。如果我对过去的改变足够小,当我回到未来时,虽然已经和出发时的未来有所不同(commit hash 变了),但是 ……
by wzyboy on 2018-03-08
在数据存储领域,「备份」和「冗余」是两种常见的数据保护策略。两种策略各有不同的使用场景,对于重要数据,两者一起使用自然是最好了。本文介绍使用 SnapRAID 实现灵活的数据冗余存储。
以下两篇文章与本文内容有联系,推荐阅读:
BorgBackup —— 增量备份方案
使用 mergerfs 合并多块硬盘的剩余空间
一、神奇的奇偶校验
小时候一直觉得 WinRAR 的「恢复卷」功能非常神奇。比如有一个 100 MiB 的压缩文件分成 10 个分卷,每个 10 MiB,创建者又创建了 3 个恢复卷,每个也是 10 MiB。当复制、分发这些卷的时候,如果因为数据传输、磁盘存储等各种原因,导致 10 个数据卷中有部分文件损坏或丢失,只要损坏或丢失的数据卷的数量小于等于恢复卷的数量,就可以用对应数量的恢复卷来修复压缩包。
小时候不理解为什么丢失一部分数据之后可以用现有的数据重新算出来,现在明白了,最简单的实现便是奇偶校验。
奇偶校验常见于数据传输中。比如 1 个字节(byte)由 8 个比特(bit)组成,但双方约定:只用 7 bit 来存储数据,剩下 1 bit 作为校验位(parity bit)。校验规则是: ……
by wzyboy on 2018-02-25
Amazon Kindle 至今已有十年历史了,它所支持的电子书格式也发生了许多有趣的变化。
一、起源:MOBI
MOBI 是 MobiPocket Reader 专门的格式。MobiPocket Reader 是 MobiPocket 公司出品的电子书阅读器。MobiPocket 公司成立于 2000 年,于 2005 年被 Amazon 收购,2007 年 Amazon 推出第一代 Kindle。可以说 Amazon 是在 MobiPocket 的技术积累上进军电子书市场的。如今 MobiPocket 的网站早就已经下线(Internet Archive),但 MobiPocket 对 Kindle 系列的影响十年之后仍未完全消失。
MOBI 的封装容器是 PalmOS 上数据库 PDB。PalmOS 使用 PDB 来存储程序、文档、图片等各种数据,MOBI 是类型为 BOOKMOBI 的 PDB。如今 PalmOS 早已消亡,但是 PDB 却借着 MOBI 一直活了下来。
初代的 Amazon Kindle 的电子书格式便是轻微修改过的 MOBI。Amazon 在原始 MOBI 的基础上加上了 DRM, ……
by wzyboy on 2018-02-07
互联网时代的报纸广告
Read the Docs 是供开源项目发布文档的平台。自 2016 年起,Read the Docs 开始在文档页面显示广告以补贴开支,但是他们没有使用任何一家广告平台,而是遵循自己独特的广告政策自己刊登广告。Read the Docs 有一个专门的页面阐述他们「有道德的广告」的理念:
We’re doing newspaper advertising, on the internet. For a hundred years, newspapers put an ad on the page, some folks would see it, and advertisers would pay for this. This is our model.我曾在《浏览器指纹》一文中提过不少网站用来识别、追踪、定位用户的技术。这些技术理论上当然可以为老大哥所用,但它们对各大广告商更有实际价值:你在一个网站上搜索了某个商品,广告商可以根据你的浏览器指纹,在你访问别的不相关的网站的时候识别出你,从而持续向你推荐相关商品的广告,达到如影随形的「精准投放」的广告效果。而 Read the Do ……
by wzyboy on 2018-02-05
两年前,我买了一台 HP Gen8 微型服务器,其功能之一是作为网络存储。当时它只接了一块 SSD 作为系统盘和一块 2 TB HDD 作为存储盘。随着存储文件的增多,我又先后增加了两块 4 TB HDD,现在它已经接了共计 10 TB 的存储空间。我觉得有必要分享一下我用来将这些硬盘的空间合并在一起的工具——mergerfs。
一、网络存储之硬盘困境
在讲工具之前,我有必要先说明一下我目前的存储方案。
我的 Gen8 没有直接装通用操作系统,而是先通过 ESXi 实现了虚拟化,再将存储盘通过 RDM 的方式完整地映射给其中的一台虚拟机(Arch Linux)。在 Arch Linux 里运行了 Samba, NFS, aria2 RPC, Transmission daemon, BorgBackup 等服务,供局域网电脑存取文件、远程下载,以及备份。
我在存储盘里的东西分为两类:一类是多份备份中的一份(BorgBackup);另一类是从互联网上下载的可再生资源。前者本身有冗余,后者丢了不心疼。出于以上考虑,为了硬盘空间利用率的最大化,我并没有采用 RAID 1 或 RAID 5 之类的冗余存储的方案,而是 ……