vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
В связи с тем, что lib.rus.ec окончательно скурвился я купил себе 32Гб SD-шку, возникает вопрос о работе с НУ ОЧЕНЬ большим набором электроных книг.

И да, primary target platform - maemo.

Т.е. возникает задача хранения каталога библиотеки отдельно от самой библиотеки, периодической актуализации и т.д.

Основная операция с этим каталогом - найти некоторое множество книг и вытащить его в "рабочий набор", то есть в случае maemo в рабочий каталог FBReader-а, владельцы всяких lbook-ов и openinkpot-ов лучше знают, что у них там.

[livejournal.com profile] phd тут рекламировал MyRuLib. Мне не понравилось. Во-первых, оно требует свежего wxWidgets. Более свежего чем в lenny (хотя пакет якобы для Debian 5.0 на сайте есть), так что даже на десктопе попробовать не получилось.
Во-вторых, в maemo вообще с wxWidgets туго.

В третьих, залез я в их базу данных посредством sqlite и показалось мне что проектировал её типичный php-кодер. Поле genres в таблице books, содержащее конкатенацию каких-то кодов...

Вот и думаю теперь что делать. Либо пытаться все же использовать эту заботливо подготовленную неграмотными людьми базу, либо писать свою извлекалку метаинформации из fb2 (pdf и djvu меня интересуют меньше, потому что на 32Гб флэшку они не влезут и читать их на экране 800x480 неудобно).

Либо вообще прикрутить sqlite-каталог к FBReader-у.

Но вот как должен выглядеть интерфейс этого библиотечного приложения?
Очевидно что просмотр списка из десятков тысяч авторов - не вариант. Тем более что нужен поиск по сериалам (sequence) или названиям.

Столь же очевидно, что о полнотекстовом поиске сразу надо забыть. Сделать полнотекстовый индекс существенно меньший по объему, чем сама библиотека вряд ли удастся, а библиотека занимает более половины доступного объема.

Ничего лучшего, чем повторить форму поиска на сайте lib.rus.ec мне в голову пока не приходит
Page 1 of 2 << [1] [2] >>

Date: 2009-11-26 10:04 pm (UTC)
From: [identity profile] dzz.livejournal.com
У букридеров работа с большими каталогами - вообще больное место (возникает вопрос - а зачем там тогда поддержка больших флэшек?).

По поводу интерфейса - с очевидностью, нужна рубрикация и поиск по автору, названию, жанру.

(no subject)

From: [identity profile] fr0ster.livejournal.com - Date: 2009-11-27 05:56 am (UTC) - Expand

(no subject)

From: [identity profile] fr0ster.livejournal.com - Date: 2009-11-27 09:28 am (UTC) - Expand
From: [identity profile] cmotrujj.livejournal.com
Странная сумма - 10 уе\месяц. Многовато. Вот 5 в год - еще куда-то как-то.
Похоже на проворкацию, вброс. Не торопиться с выводами, имхо.

Date: 2009-11-26 10:39 pm (UTC)
From: [identity profile] dottedmag.livejournal.com
Главное - чтобы D-Bus-интерфейс был!

Шучу, шучу.

Date: 2009-11-26 10:52 pm (UTC)
From: [identity profile] http://users.livejournal.com/mak_/
посмотрите на торрентс.ру библиотеку траума. у меня под рукой нет, но помнится туда включена база данных для желающих самостоятельно что-то структуризовать.

Date: 2009-11-26 10:52 pm (UTC)
From: [identity profile] tritopora.livejournal.com
О как, Ларин в душу наплевал, значит? Даже не знал. Конвертишь тут, вычитываешь, человечество благодетельствуешь в личное время, а тут такую плюху вываливают.

Date: 2009-11-27 05:58 am (UTC)
From: [identity profile] fr0ster.livejournal.com
Я только что зашел и скачал для пробы Лукьяненка. Думаю зарегится для скачки не такая и проблема.
From: [identity profile] neo-der-tall.livejournal.com
Мы придумали такое http://www.e-uch.ru/ - справа "Библос" юзер и пароль guest

дисклэймер!

Date: 2009-11-26 10:57 pm (UTC)
From: [identity profile] neo-der-tall.livejournal.com
а) это даже не прототип еще толком
б) проект заморожен
в) разрабатывалось под "тыканье пальцем"

Date: 2009-11-26 10:55 pm (UTC)
From: [identity profile] roman_sharp.livejournal.com
У меня виндовая http://home-lib.net/ стоит. Особо яростно не гонял, но чего-то делала и выдавала. Может ссылка сгодиться на что...

Date: 2009-11-27 02:42 am (UTC)
phd_ru: (Default)
From: [personal profile] phd_ru
Правильно. Не нужен Витусу на Maemo никакой wx. Нужен Wine! :-D

(no subject)

From: [identity profile] fr0ster.livejournal.com - Date: 2009-11-27 06:02 am (UTC) - Expand

(no subject)

From: [identity profile] fr0ster.livejournal.com - Date: 2009-11-27 09:43 am (UTC) - Expand

(no subject)

From: [identity profile] roman_sharp.livejournal.com - Date: 2009-11-27 08:41 pm (UTC) - Expand

(no subject)

From: [identity profile] roman_sharp.livejournal.com - Date: 2009-11-27 08:43 pm (UTC) - Expand

Date: 2009-11-26 11:08 pm (UTC)
From: [identity profile] alexkuklin.livejournal.com
lib.rus.ec отступил на очередные заранее заготовленные позиции, как я понял

(no subject)

From: [identity profile] alexkuklin.livejournal.com - Date: 2009-11-27 07:25 am (UTC) - Expand

Date: 2009-11-26 11:21 pm (UTC)
From: [identity profile] permea-kra.livejournal.com
Емнип, fb2-xml-based? распаковать - натравить xqilla с правильным запросом, проверить корректность завершения, запустить вывод xqilla на вход шелла, нет?

Полнотекстовый индекс нужен по полям с метаинформацией, полнотекстовый по книге практически бесполезен.

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2009-11-27 06:27 am (UTC) - Expand

Date: 2009-11-26 11:22 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
Ну, самые простые вещи, которые бы хотелось видеть - это sondex или что-то подобное для приблизительного поиска (перепутал букву в названии и т.д.) и всё-таки полнотекстовый поиск. Да, делать полный индекс тяжко (кстати, не факт, что он такой уж большой будет - слов в языке много меньше, чем текстов с этими словами).

(no subject)

From: [identity profile] amarao-san.livejournal.com - Date: 2009-11-27 02:51 pm (UTC) - Expand

(no subject)

From: [identity profile] amarao-san.livejournal.com - Date: 2009-11-27 04:33 pm (UTC) - Expand

(no subject)

From: [identity profile] gegmopo4.livejournal.com - Date: 2009-11-28 09:46 am (UTC) - Expand

Date: 2009-11-26 11:31 pm (UTC)
From: [identity profile] painstakinglyyz.livejournal.com
Ya poproboval copy-paste kusok koda, no k stidu svoemu ne znayu do sih por, kak eto sdelat' v ZhZh.

http://code.google.com/p/cutebookshelf/source/browse/trunk/parsers.py

Ostal'naya chast' proekta ne rasschitana osobo na polnuyu biblioteku Lib.rus.ec.

(no subject)

From: [identity profile] painstakinglyyz.livejournal.com - Date: 2009-11-27 05:36 am (UTC) - Expand

(no subject)

From: [identity profile] painstakinglyyz.livejournal.com - Date: 2009-11-27 10:04 am (UTC) - Expand
From: [identity profile] sastanin.livejournal.com
У меня есть по этому поводу следующая мысль.

Решать нужно три задачи: сохранение и распространение имеющихся книг, организация удобного произвольного доступа к файлам отдельных книг и развитие и пополнение архива. С последней задачей либрусек пока ещё вроде справляется, поэтому наиболее насущны первые две.

1) Распространение. Эффективно — весь архив полностью торрентом (http://torrent.rus.ec/viewforum.php?f=186), но так неудобно для поиска и для получения отдельной книги. Удобно для чтения — находить по автору, жанру, названию — и скачивать по одной или несколько книг. Однако любой централизованный сайт будет или подавлен, или закрыт, или подкуплен (что и наблюдаем). В принципе, массовое пофайловое распространение возможно в P2P, оно децентрализованно, и может быть при желании и анонимным. Однако для P2P важно обеспечить одинаковые и описателные названия файлов и/или извлечение метаданных.

2) Организация произвольного доступа к файлам книг. Пока P2P не станет работающим и массовым вариантом, нужно работать локально с полным архивом. В большинстве случаев мне лично нужно найти искомого автора и затем уже выбрать из списка его книг. Реже — искать по названию или части названия. Предполагаю доступности полного архива (который в торрентах). В целях минимизации места на диске и удобства, желательно, чтобы программа доступа к книге умела работать с архивом именно в том виде, в котором он раздаётся в торрентах.

В связи с этим, меня привлекает следующее решение: user-space файловая система fuse, которая индексирует набор zip-архивов с fb2 и другими файлами внутри (а именно так распространяется архив). Пусть программа-индексатор извлекает из всех fb2 только метаданные. Используя эти метаданные, файловая система может представить архив в естественном библиографически упорядоченном виде. Для пользователя это будет выглядеть как иерархия каталогов, вроде такой:

/author/первая буква фамилии/фамилия и остальные имена, включая других авторов/название произведения/файлы
/genre/название жанра/author/первая буква фамилии/...
/genre/название жанра/title/первая буква названия/название/автор/файлы
/year/19xx/1950/author/...

Файлы при этом должны быть названы описательно, примерно так:

«Фамилия Имя Отчество. Название (Год) Издание.fb2»

При этом:

* для поиска отдельной книги в большинстве случаев хватит обычных средств работы с файлами (файлового менеджера или командной оболочки)
* основные пути поиска книги будут соответствовать вложенности каталогов
* возможны ортогональные иерархии, и по жанру, и по году, и по ISBN, и вообще по чему угодно; раз индекс метаданных уже раз собран
* ничего с самим архивом (85 ГБ на сегодня) делать не надо, его можно хранить и раздавать как есть, то есть массовое распространение библиотеки будет оставаться эффективным, сидов будет больше
* размер индекса, полагаю, будет невелик, а индекс будет меняться редко (старые zip-файлы не меняются, только добавляются новые)
* представление библиотеки в виде файловой системы никак не ограничивает ни выбор читалки, ни выбор полнотекстовых индексаторов (ежели кому-то они всё же понадобятся)
* представление всей библиотеки с библиографически организованной структурой каталогов и описательными названиями файлов, позволит людям легко выкладывать архив как в веб, так и в P2P (ну и вообще будет способствовать частичному, то есть удобному, человечному распространению книг) — и при этом можно раздавать и обновлять архив через торрент.

Мне кажется вариант почти идеальным. Если даже всего несколько десятков или сотен гиков откроют такую виртуальную ФС с библиотекой в P2P, почти любая книга будет легко находиться и быстро скачиваться вообще без централизованной библиотеки. При этом книги будут доступны не только гикам, но и вполне обыкновенным пользователям. За DDOSить такую систему распространения будет трудно. И всех читателей не подкупишь.

FUSE, пишут, есть и для maemo, так что решение может оказаться и вполне мобильным.

Наконец, отмечу, почему мне не нравятся все программы-каталогизаторы (в виндовом стиле), сама идея таких программ. Вместо нормальных полноценных файлов в них можно получить только элементы интерфейса. Это только если на десктопе с экрана читать. Даже взять и скопировать файл на флэшку или карточку памяти в них не всегда возможно.
Edited Date: 2009-11-26 11:54 pm (UTC)
From: [identity profile] michael.ul.myopenid.com (from livejournal.com)
Либрусек вполне справлялся с указанными вами задачами (как - другой вопрос), но оказался уязвим для копирастов. Организовать подобный сервис на базе p2p практически не реально, p2p плохо подходит для таких задач. Но на p2p свет клином не сошёлся. Есть ещё всякие darknet'ы. Почему бы, например, не организовать зеркало либрусека в anonet'е?

Date: 2009-11-27 06:52 am (UTC)
From: [identity profile] silly_sad.livejournal.com
"ну вы же программист! сделайте что-нибудь чтобы работало!"

Date: 2009-11-27 07:44 am (UTC)
From: [identity profile] fantaseour.livejournal.com
вопрос -- а нужны ли 200000 книг? Личная библиотека, это все же не свалка, а какой-то лично Ваш срез. У меня технической литературы 18 гигов, и я в общем-то обхожусь файловым менеджером. Мне даже актуальнее понятие книжной полки (как раз хотел сделать такую запись). Т.е. вытащил из библиотеки литературы на неделю вперед и имеешь быстрый доступ.

При том, что весь этот набор не цельно тяпнутый архив, а плод многолетнего коллекционирования, мне последнее время хочется библиотеку проредить. Есть книжки, которые особой ценности не представляют, вряд ли там написано что-то уникальное, и очень маловероятно, что я когда-то их буду читать. А поиск по книжкам они немного затрудняют -- файлов получается много. Запасаться заранее литературой "на всякий случай" интересное, но не очень практичное занятие.

Отдельный интерес -- "собрать абсолютно все книги". Это может быть интересно, как задача сама по себе. Тогда можно наверное исходить из узкой направленности задачи, спроектировать БД, не иметь в виду все это запихнуть в современную электронную читалку и т.д.

Date: 2009-11-27 08:00 am (UTC)
From: [identity profile] karpion.livejournal.com
Я спрашивал про задачу "вот у меня есть на SD-карточке 200000 книг в формате FB2.
Для начала я бы попытался отказаться от условия "в формате FB2". В идеале хорошо бы хранить файлы в таком виде:
  • Создаётся БД с перечислением всех употребляемых слов, благо слова постоянно повторяются.
  • Слова кодируются исходя из правил языка: т.е. для существительных указывается само существительное, число и падеж.
  • Слова кодируются так, чтобы часто повторяющиеся слова кодировались короткими последовательностями. Это классика, но не помню, имени кого.
  • И сам текст, и БД для поиска содержат не сами слова, а тх коды.


Как тут уже скзали ло меня:
"ну вы же программист! сделайте что-нибудь чтобы работало!"

(no subject)

From: [identity profile] karpion.livejournal.com - Date: 2009-11-27 10:06 am (UTC) - Expand

(no subject)

From: [identity profile] karpion.livejournal.com - Date: 2009-11-27 12:52 pm (UTC) - Expand

Date: 2009-11-27 08:21 am (UTC)
From: [identity profile] besm6.livejournal.com
Ничего лучшего, чем повторить форму поиска на сайте lib.rus.ec мне в голову пока не приходит

Мне тоже. Для наладонника весьма удобно.

Date: 2009-11-27 08:45 am (UTC)
From: [identity profile] mikhailian.livejournal.com
Поле genres в таблице books, содержащее конкатенацию каких-то кодов...


В Друпале очень часто поля таблиц используются для сериализации данных, по которым не планируется искать. И тем не менее, популярнейшая CMS. Может, не стоит судить по одному факту? В наше время RDBMS зачастую используется как тупейшее хранилище данных, где главное — простота, а о foreign keys и нормализации никто не вспоминает. Например, у Ruby on Rails такая политика.

Date: 2009-11-27 08:49 am (UTC)
From: [identity profile] kmmbvnr.livejournal.com
А разве Ruby on Rails сохраняет сериализованные объекты в бд, и про foreign keys constraint ничего не знает??

(no subject)

From: [identity profile] mikhailian.livejournal.com - Date: 2009-11-27 09:05 am (UTC) - Expand

(no subject)

From: [identity profile] kmmbvnr.livejournal.com - Date: 2009-11-27 10:55 am (UTC) - Expand

Date: 2009-11-27 09:10 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
я храню книги в eMule :)
но проблема быстрого доступа есть, да.

кстати, насчет бэкапа публичных хранилищ - что имеет смысл выкачивать\кравлить? могу потом захостить, если что

(no subject)

From: [personal profile] wizzard - Date: 2009-11-27 10:21 am (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2009-11-27 11:11 am (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2009-11-27 01:09 pm (UTC) - Expand

(no subject)

From: [identity profile] alek-juzhnyj.livejournal.com - Date: 2009-11-27 06:48 pm (UTC) - Expand

Date: 2009-11-27 09:13 am (UTC)
From: [identity profile] dm-ig.livejournal.com
прикрутить sqlite-каталог к FBReader-у
По моему, идея весьма здравая. Не находите?

FBReader меня весьма радует как читалка, думаю, вы тоже им довольны. Так почему бы не помочь проекту?
Перевести хранилище на sqlite и приделать поиск по нему.

(no subject)

From: [identity profile] nikolaypultsin.livejournal.com - Date: 2009-11-27 10:56 am (UTC) - Expand

(no subject)

From: [identity profile] nikolaypultsin.livejournal.com - Date: 2009-11-27 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] nikolaypultsin.livejournal.com - Date: 2009-11-27 12:42 pm (UTC) - Expand

(no subject)

From: [identity profile] nikolaypultsin.livejournal.com - Date: 2009-11-27 01:53 pm (UTC) - Expand

(no subject)

From: [identity profile] nikolaypultsin.livejournal.com - Date: 2009-11-27 07:46 pm (UTC) - Expand

(no subject)

From: [identity profile] nikolaypultsin.livejournal.com - Date: 2009-11-27 09:53 pm (UTC) - Expand

Date: 2009-11-27 10:36 am (UTC)
From: [identity profile] afa-at-work.livejournal.com
собирал на коленке каталогизатор - там с .fb2 еще одна пакость. процентов 10 файликов невалидны с точки зрения xml. пришлось регэкспами выкусить .+ нафиг.
а про полнотекстовый - сделал для любимых цитаток. потихоньку пополняемый и дополняемый в фоне.

(no subject)

From: [identity profile] afa-at-work.livejournal.com - Date: 2009-11-27 12:04 pm (UTC) - Expand

(no subject)

From: [identity profile] gegmopo4.livejournal.com - Date: 2009-11-28 11:15 am (UTC) - Expand

Date: 2009-11-27 12:46 pm (UTC)
From: [identity profile] mincao.livejournal.com
Гм. А что случилось с либрусеком?
Когда ты-таки сформируешь библиотеку, хотелось бы переписать :)

(no subject)

From: [identity profile] mincao.livejournal.com - Date: 2009-11-27 12:55 pm (UTC) - Expand

мои ¢2

Date: 2009-11-27 04:51 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Есть похожая задача, не раз решавшаяся: управление шрифтами. Пусть есть 10 тыщ шрифтов, держать их все установленными глупо, искать только по названию долго. Соотв. софт управления, в духе fontmatrix, позволяющий выделять группы, вешать теги, включать-выключать сразу группы или отдельные шрифты, смотерть информацию и образцы без установки, etc.

Вдруг какие идеи оттуда пригодятся.

Re: мои ¢2

From: [identity profile] painstakinglyyz.livejournal.com - Date: 2009-11-27 10:29 pm (UTC) - Expand

Re: мои ¢2

From: [identity profile] prokoudine.livejournal.com - Date: 2009-11-28 02:42 am (UTC) - Expand

Re: мои ¢2

From: [personal profile] nine_k - Date: 2009-11-28 09:17 am (UTC) - Expand

Re: мои ¢2

From: [identity profile] prokoudine.livejournal.com - Date: 2009-11-28 02:38 am (UTC) - Expand

Re: мои ¢2

From: [identity profile] prokoudine.livejournal.com - Date: 2009-11-28 06:21 pm (UTC) - Expand

Re: мои ¢2

From: [identity profile] prokoudine.livejournal.com - Date: 2009-11-28 08:19 pm (UTC) - Expand

Re: мои ¢2

From: [personal profile] nine_k - Date: 2009-11-28 09:15 am (UTC) - Expand

Re: мои ¢2

From: [identity profile] prokoudine.livejournal.com - Date: 2009-11-28 08:24 pm (UTC) - Expand

Date: 2009-11-27 10:30 pm (UTC)
From: [identity profile] painstakinglyyz.livejournal.com
А какая интерфейсная библиотека сейчас наиболее кошерна под маемо? В смысле, чтобы и на старых, и на новых (которые скоро уйдут на Qt как основную платформу).

Date: 2009-11-28 06:59 am (UTC)
From: [identity profile] mkevac.livejournal.com
О каком maemo идет речь? Nokia N900?

(no subject)

From: [personal profile] abbra - Date: 2009-11-28 05:50 pm (UTC) - Expand

(no subject)

From: [personal profile] abbra - Date: 2009-11-28 06:11 pm (UTC) - Expand

(no subject)

From: [personal profile] abbra - Date: 2009-11-28 08:38 pm (UTC) - Expand

(no subject)

From: [personal profile] abbra - Date: 2009-11-28 09:05 pm (UTC) - Expand

(no subject)

From: [personal profile] abbra - Date: 2009-11-28 10:26 pm (UTC) - Expand

(no subject)

From: [personal profile] abbra - Date: 2009-11-29 10:04 am (UTC) - Expand

(no subject)

From: [personal profile] abbra - Date: 2009-11-29 10:41 am (UTC) - Expand

Date: 2009-11-28 04:18 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Я для хранения и каталогизации использую файловую систему. Есть утилита (https://fb2-perl-tools.svn.sourceforge.net/svnroot/fb2-perl-tools/trunk/fb2-python-tools/fb2maketree.py), которая пробегается по списку файлов и строит дерево, основываясь на информации. Например, "язык/автор/название.fb2". Или "язык/серия : автор/номер. название.fb2".

Файлы не копируются, а делаются жёсткие ссылки, поэтому места дерево почти не занимает. Если у текста несколько авторов, то создаётся каталог и мягкие ссылки с каталогов отдельных авторов. Дерево на 7,5 тыс. файлов строится секунд за 13 (не считая сканирования ФС).

Теперь вот думаю, что следует разделить задачу. Отдельно сбор метаинформации (простая база: имя файла — метаинформация) и отдельно построение дерева. Тогда построение ещё быстрее будет. Да и простые запросы делать можно будет.
Page 1 of 2 << [1] [2] >>

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2025

S M T W T F S
1 23 4 56 7
89 1011 12 13 14
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 15th, 2025 07:55 am
Powered by Dreamwidth Studios