p2p сеть для книгообмена.
Jun. 8th, 2007 03:44 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Я тут подумал, что требования к peer-to-peer протоколу для работы с электронными книгами сильно отличаются от требований к протоколу для разадчи multimedia, под которые заточены всякие ed2k и bittorrent.
Если музыка и фильмы это, как правило, немного больших файлов, и возможность распределения нагрузки по раздаче является существенной, то электронная библиотека - это много-много (десятки тысяяч) относительно маленьких файлов.
Причем начиная с того момента, как у человека образовалась эта библиотека, дальнейшиф траффик очень маленький - новинки, исправления опечаток и т.д.
С другой стороны, мультимедиа-файлы обычно редактированию конечным пользователем не поддаются. А вот опечатки в электронной книге может исправлять любой.
Соответвтвенно, для синхронизации изменений в электронных библиотеках (если предположить что на начальный момент участия в p2p сети каждый участник обзавелся копией библиотеки на момент вступления, например выкачав ежегодный снапшот из традиционных p2p),
гораздо больше подходят такие средства как rsync и unison.
Эти средства позволяют поддерживать в консистентном состоянии сколько угодно мирроров одной и той же коллекции книг с минимальным количеством траффика. При этом если любой пользователь исправит опечатку, это исправление расползется по всем хостам сети.
Кстати, если кому-то жалко места на диске, он вполне может синхронизировать у себя не всю библиотеку, а определенные жанры или определенных авторов. Для этого нужна только соответствующая структура каталогов.
Злесь, правда, есть такая тонкость, что необходима какая-то система учета доверия к пользователям. А то в сети заведутся обязательно гады, которые будут книги портить. Впрочем, формат FB2 легко защищается электронной подписью на базе xmldsig. При этом файл подписи можно положить рядом, чтобы не мешал читалкам. Тогда если при синхронизации приехали изменения к существующему файлу, можно посмотреть, кто под ними подписался, и, в зависимости от этого, либо сразу включить в основной архив, или оставить до ревизии владельцем данной копии, который, может быть, потом и своей подписью под этими изменениями подпишется. Новые книги, ранее в библиотеке отсутствовавшие, можно принимать и без подписи.
Если музыка и фильмы это, как правило, немного больших файлов, и возможность распределения нагрузки по раздаче является существенной, то электронная библиотека - это много-много (десятки тысяяч) относительно маленьких файлов.
Причем начиная с того момента, как у человека образовалась эта библиотека, дальнейшиф траффик очень маленький - новинки, исправления опечаток и т.д.
С другой стороны, мультимедиа-файлы обычно редактированию конечным пользователем не поддаются. А вот опечатки в электронной книге может исправлять любой.
Соответвтвенно, для синхронизации изменений в электронных библиотеках (если предположить что на начальный момент участия в p2p сети каждый участник обзавелся копией библиотеки на момент вступления, например выкачав ежегодный снапшот из традиционных p2p),
гораздо больше подходят такие средства как rsync и unison.
Эти средства позволяют поддерживать в консистентном состоянии сколько угодно мирроров одной и той же коллекции книг с минимальным количеством траффика. При этом если любой пользователь исправит опечатку, это исправление расползется по всем хостам сети.
Кстати, если кому-то жалко места на диске, он вполне может синхронизировать у себя не всю библиотеку, а определенные жанры или определенных авторов. Для этого нужна только соответствующая структура каталогов.
Злесь, правда, есть такая тонкость, что необходима какая-то система учета доверия к пользователям. А то в сети заведутся обязательно гады, которые будут книги портить. Впрочем, формат FB2 легко защищается электронной подписью на базе xmldsig. При этом файл подписи можно положить рядом, чтобы не мешал читалкам. Тогда если при синхронизации приехали изменения к существующему файлу, можно посмотреть, кто под ними подписался, и, в зависимости от этого, либо сразу включить в основной архив, или оставить до ревизии владельцем данной копии, который, может быть, потом и своей подписью под этими изменениями подпишется. Новые книги, ранее в библиотеке отсутствовавшие, можно принимать и без подписи.
no subject
Date: 2007-06-08 12:29 pm (UTC)no subject
Date: 2007-06-08 12:42 pm (UTC)Из pdf можно выдернуть текст, но можно ли его будет безболезненно вставить обратно?
no subject
Date: 2007-06-08 02:04 pm (UTC)pdftotext'ом можно вытащить текст обоих документов и сравнить. Не уверен, правда, что без граблей обойдётся.
diff покажет место исправления - можно решить, справедливо ли оно. Оставить тот pdf, что больше нравится.
no subject
Date: 2007-06-08 05:34 pm (UTC)Буквы (т.е. глифы) в pdf могут располагаться на странице в произвольном порядке (с указанием координат чуть ли не для каждого глифа), плюс к этому, наличие какого-либо внятного энкодинга - не гарантируется. Для встроенных фонтов, энкодинг строится по мере вхождения глифов. Да, предусматривается перекодировочная таблица - но ее наличие не гарантируется.
no subject
Date: 2007-06-08 08:24 pm (UTC)no subject
Date: 2007-06-09 04:58 am (UTC)Помогло как раз указание кодировки utf-8:
Mime application/pdf "text/plain; charset=utf-8" "pdftotext -cfg .xpdfrc -raw -enc UTF-8 $1 - "
Понятно, что при использовании какого-то хитровывернутого фонта, никто его может и не знать, равно как и из картинок текст достать сложно, но для вменяемо построенных pdf и индексация (тем же google), и сравнение (как следствие), думаю, возможны.
no subject
Date: 2007-06-09 12:02 pm (UTC)no subject
Date: 2007-06-08 08:25 pm (UTC)FuFinereader.