PaperBack:如何在一张A4纸上存储数据

更新时间:2015-10-15 10:02:34点击次数:971次

一天,一位程序员的儿子问爸爸:“光盘是怎么存下那么多数据的呢?”他想了一下,拿出一支铅笔在纸上画一些点,来解释数据的密度有多么大。他儿子又问:“那这一张纸最多可以存多少数据呢?”他大体估计了一下,说100K吧。“我们能试试吗?”他儿子说。于是这位程序员就花了四五天的时间证明这个结论,后来又花了两个周的时间编写了PaperBack,这位程序员叫Olly

PaperBack是一款基于GPL的自由软件,可以将文件存储到一张巨大的位图图像中。如果有一台600dpi的激光打印机,那么就可以在一张A4纸上保存500,000byte的未压缩数据,如果用来存代码的话,一张纸可以保存3,000,000+(约3M)的C语言代码。

为什么要写这个软件呢?Olly说,现在已经有很多高级存储设备了,比如硬盘,光盘。但是这些都有一个缺陷:一段时间之后,你无法确定这些数据是否完好无损,是否可读,除非你使用相应地机器去读读看。纸就不一样了,很久以前,程序员就用穿孔纸带来保存代码,那时纸就被当做一种数据的保存方式。纸不仅可以当做廉价的存储介质,还可以像笔记本一样用,人们(不对,是程序员)甚至可以读懂上面的代码。

这种方式对硬件的依赖很低。首先纸本身就是可读的,(最多你可能需要借助一个放大镜),其次这款软件是自由软件,可以在Linux或者OS X上运行这些代码。还可以将数据打印出来之后邮寄到偏远地区,即使他们没有电脑也能分享到你的数据。

PaperBack的使用方法非常简单,软件只有一个exe文件,无需安装直接下载之后就可以运行。界面如下图:

参数说明

  • Dot density:分辨率。最重要的参数,最好设定为打印机分辨率的一半。如果是喷墨打印机,要设定在200dpi之内。

  • Dot size:点大小。点之间必须有明确的区分,通常70%是最佳选择。

  • Compression:压缩。如果你的计算机特别慢的话,选择fast,否则一般选Maximal(最大化压缩)。

  • Redundancy:冗余。冗余可以使数据更加可靠,例如,如果5个数据块中有一个坏了(选择1:5的时候),冗余就可以补救。冗余占用了存储空间,但是提高了安全性。

  • Header and footer:是否在头尾添加文件的相关信息。

  • Border around the page:是否添加边框。

  • Decoding:PaperBack使用了非常棒的纠错技术,即使有一部分数据有损了,也会被接受。这样加快了处理速度但是却导致了一些坏块。如果你想知道真实数据的质量,勾选Determine best quality,PaperBack会提供一个报告,但是需要一些时间。

  • Encryption:是否加密。

生成的位图图像如下: 
图片描述

使用PaperBack也可以将数据打印出来。现在的版本尚不支持打印文件夹,如果你要备份一个文件夹的话,需要先压缩。PaperBack支持拖拽操作,将一个非bmp文件拖入,就会自动打印。如果是bmp文件,默认的操作是解码。

PaperBack支持所有TWAIN接口的扫描仪来恢复数据。使用时需要关闭所有优化选项,PaperBack有自己的优化操作。如果存储的时候选择了加密,解码的时候会被要求输入密码。


  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息