Что это?
πfs это революционная файловая система, которая вместо того, чтобы тратить место на вашем жестком диске, хранит все данные в π. Вам никогда больше не придется заботится о свободном месте! Вам говорили, что 100% сжатие невозможно? Да вот же оно!
Как собрать?
πfs собирается элементарно:
./configure
make
Да и использовать его не сложнее:
πfs -o mdd=<metadata directory> <mountpoint>
Где metadata directory — каталог с метаданными (названия файлов, смещение в π), а mountpoint — каталог монтирования.
Что же π делает с моими данными?
π — одна из самых важных констант математики, и у нее есть куча интересных свойств (о которых можно прочесть в статье на википедии)
Одним из таких свойств числа π предположительно является нормальность, что означает, что все его числа распределяются равномерно, при условии, что это дизъюнктивная последовательность, т.е. все конечные числовые последовательности находятся внутри него. Если мы рассмотрим число π по основанию 16 (HEX), то это предположение верно. Первая запись об этом была в 2001 году.
Ну а если так, то зачем нам хранить все эти эксабайты данных на винчестерах, если мы можем найти их в π?
И что, прямо каждый-каждый файл можно найти в π?
А ТО! Любой файл, который создали вы или кто-то другой, или даже еще не создали! Вас судят за нарушение копирайта? Да хрена с два — вы просто достали последовательность из константы, она всю жизнь там была!
Но как же найти мне свои данные в π?
Если вы знаете смещение файла и его длину в π, вы можете их достать используя формулу Bailey–Borwein–Plouffe. Аналогично, вы можете использовать эту формулу чтобы узнать смещение вашего файла.
Так как нахождение целиком нужной последовательности займет слишком много времени, нам нужно разбить файл на несколько маленьких последовательностей для увеличения быстродействия.
В этой реализации, мы разбиваем файл на отдельные байты, и эти байты ищем в π.
Ну нашел я смещение файла в π, что мне с ним делать-то?
Ну, очевидно, вам нужно его куда-нибудь записать, на бумажку, например, но у нас же теперь есть куча свободного места на винчестере, почему бы не сохранить его туда?
Ну а если я потеряю смещение?
Да ничего страшного — ваши данные от этого из π не пропадут! Найдете когда-нибудь.
Почему это говно такое медленное? На сохранение 400 строк теста у меня ушло 5 минут!
Ну, это прототип, к тому же, у нас есть закон Мура!
Исходник на GitHub