Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Admin Администратор информационного портала FB
Зарегистрирован: 11.06.2004 Сообщения: 1610 Откуда: Воронеж
|
Добавлено: Пн Фев 19, 2007 1:58 Заголовок сообщения: |
|
|
Я по DOM тоже бегал с помощью рекурсии, получается тоже быстро. Там алгоритм простой, встречаешь элемент пошел вглубь и так несколько раз пока до текста без элементов не добрался, а в памяти тем временем строишь образ текста с отображением всех элементов. Вот, к сожалению, кусок программы сейчас не могу найти.
Я это к тому, что как-то мы копаемся каждый сам по себе, а задачи решаются общие и, главное, достаточно специфичные, судя по литературе, не очень распространенные, вот и хочется выяснить, кто как решает, где какие грабли, чтобы по одиночке велосипеды не изобретать. Для этого и форум завел. Я не профи, я любитель. Мне интересно возиться на стыке XML и программы. Вот сейчас заболел, не работаю, использую это время для изучения C#, хочу на нем с xml повозиться через .NET. |
|
Вернуться к началу |
|
|
Mike Sinkovsky Зрелый участник форума
Зарегистрирован: 27.10.2005 Сообщения: 296 Откуда: Пермь
|
Добавлено: Пн Фев 19, 2007 9:19 Заголовок сообщения: |
|
|
Не, несогласная я.
Перемешивать текст и картинки - неправильно. Вручную править будет неудобно, как выше сказали, а этим тоже жертвовать не хотелось бы.
Читалке ведь по сути нужно не это, ей нужен быстрый доступ к основным структурным элементам - description, body и binary.
Так это гораздо логичнее сделать не так - оформить файл fb3 в виде архива zip с фиксированной структурой, например так:
Код: |
\description.xml
\body\main.xml
\body\notes.xml
\binary\coverpage.png
\binary\image1.jpg
\binary\image2.jpg
|
Тогда любой элемент будет доступен за фиксированное небольшое время через индекс архива. И не нужно всегда парсить весь файл.
Собственно сейчас так оформлять модно, аналогичную структуру имеют файлы опенофиса и m$ворд2007
Бонусы:
- пароль на архив ставить можно для платных документов
- ассоциировать .fb3 с читалкой можно (.fb2.zip в винде нельзя) |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Пн Фев 19, 2007 10:42 Заголовок сообщения: |
|
|
Mike Sinkovsky
Это на будущее. Согласный я. Так - можно. Про бонусы - отдельный разговор, но в принципе - очень интересный вариант.
Admin
"По дом с помощью рекурсии" - это я и называл обходом в глубину. Стандартный алгоритм. Он быстрый. Просто на него памяти нужно немного + symbol.getNext() всё-таки быстрее. |
|
Вернуться к началу |
|
|
Marina_Ch Постоянный участник форума
Зарегистрирован: 14.04.2006 Сообщения: 779 Откуда: Москва
|
Добавлено: Пн Фев 19, 2007 10:47 Заголовок сообщения: |
|
|
Admin писал(а): | Глазками тоже приходится работать с документом, особенно при поиске ошибок, а тут бинарники по документу раскиданы? | +1
Не нужны нам бинарники в режиме сорцов - как тогда редактировать-то? Жутко ж неудобно будет.
babaev писал(а): | Книга редактируется один раз. А читается - тысячи. | Не всегда один - есть еще правки после вычитки. Некоторые книги правятся по плдюжины раз разными людьми. И каждый должен легко видеть структуру документа. _________________ REB 1100, REB 1200, SE P910i |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Пн Фев 19, 2007 11:05 Заголовок сообщения: |
|
|
Marina_Ch
Эх вы, редакторы Мы, читатели, с вами категорически не согласные.
Вопрос удобного представления внутри редактора - это проблема программы-редактора.
А вопрос нормальной работы на мобиле - это вопрос в том числе формата. Вы думаете, почему fb2 на мобилах-то нет? Потому что действительно, чтобы его туды засунуть, нужно через голову прыгнуть. Хочется? Да, хочется. А делать для этого почему-то ничего не хочется.
Наоборот должно быть. Редактировать, возможно, сложнее (программу можно заставить что угодно отобразить. Будут бинари внутри, можно будет их коллапсить, будет отлично). Зато читать нужно максимально просто.
Но это уже флейм пошел. Не хотим картинки пихать - не нужно |
|
Вернуться к началу |
|
|
Marina_Ch Постоянный участник форума
Зарегистрирован: 14.04.2006 Сообщения: 779 Откуда: Москва
|
Добавлено: Пн Фев 19, 2007 11:56 Заголовок сообщения: |
|
|
babaev писал(а): | Не хотим картинки пихать - не нужно |
Не хотим! _________________ REB 1100, REB 1200, SE P910i |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Пн Фев 19, 2007 12:09 Заголовок сообщения: |
|
|
babaev писал(а): | Потому что действительно, чтобы его туды засунуть, нужно через голову прыгнуть. |
Ой да ладно... Всего-то нужно при открытии файл пробежать один раз и запомнить те самые смещения байтовые. Пропарсить 400k даже на самом захудалом железе можно вообще без проблем, я, честно говоря, описываемых трудностей в упор не вижу. Тем более что для работы ссылок файл так и так парсить придется. |
|
Вернуться к началу |
|
|
Admin Администратор информационного портала FB
Зарегистрирован: 11.06.2004 Сообщения: 1610 Откуда: Воронеж
|
Добавлено: Пн Фев 19, 2007 12:12 Заголовок сообщения: |
|
|
Mike Sinkovsky писал(а): | Так это гораздо логичнее сделать не так - оформить файл fb3 в виде архива zip с фиксированной структурой, например так:
Код:
\description.xml
\body\main.xml
\body\notes.xml
\binary\coverpage.png
\binary\image1.jpg
\binary\image2.jpg
Тогда любой элемент будет доступен за фиксированное небольшое время через индекс архива. И не нужно всегда парсить весь файл. |
Угу. Я тоже с этим согласен. Особенно после того, как посмотрел формат docx. И именно упакованный с расширением fb3. Как-то давно обсуждалось что-то подобное, но тогда было опасение потерять часть файла. Но docx не теряет, потому что никогда на диске во время работы не распаковывается, работа идет только в памяти. Слово за автором формата. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Пн Фев 19, 2007 13:42 Заголовок сообщения: |
|
|
В первую очередь это убъет обратную совместимость. Насмерть. О таком стоит подумать очень крепко. В остальном идея имеет право на существование. |
|
Вернуться к началу |
|
|
Mike Sinkovsky Зрелый участник форума
Зарегистрирован: 27.10.2005 Сообщения: 296 Откуда: Пермь
|
Добавлено: Пн Фев 19, 2007 13:54 Заголовок сообщения: |
|
|
GribUser писал(а): | В первую очередь это убъет обратную совместимость. Насмерть. |
Это чем это? Не вижу вроде проблем конвертировать ни туда, ни обратно...
Код: |
description <-> \description.xml
body[1] <-> \body\main.xml
body[@name="notes"] <-> \body\notes.xml
body[*] <-> \body\body*.xml
binary[@id="*.*"] <-> \binary\*.* |
|
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Пн Фев 19, 2007 14:23 Заголовок сообщения: |
|
|
Mike Sinkovsky
GribUser
Я бы просто сделал возможность ссылаться как на локальный путь (сейчас это id), так и на внешний ресурс (сделать атрибут externalId например). И будет всё отлично. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Пн Фев 19, 2007 15:15 Заголовок сообщения: |
|
|
Mike Sinkovsky писал(а): | Не вижу вроде проблем конвертировать |
Совместимость и конвертация есть вещи взаимоисключающие в данном контексте.
babaev писал(а): | Я бы просто сделал возможность ссылаться как на локальный путь (сейчас это id), так и на внешний ресурс (сделать атрибут externalId например). И будет всё отлично. | Вот это, кстати, возможное решение, да. Там и делать ничего не надо, в данный момент стандарт не регламентирует использование внешних ссылок. |
|
Вернуться к началу |
|
|
Mike Sinkovsky Зрелый участник форума
Зарегистрирован: 27.10.2005 Сообщения: 296 Откуда: Пермь
|
Добавлено: Пн Фев 19, 2007 17:09 Заголовок сообщения: |
|
|
GribUser писал(а): | Совместимость и конвертация есть вещи взаимоисключающие в данном контексте. |
А, в этом смысле. Предполагается совместимость сверху вниз? Чтобы новый софт жрал и старые *.fb2.zip без всякой конвертации?
Ну можно и так наверно.
Если пишем <image l:href="#pic001.png"/>, то картинка в том-же файле в base64, а если например <image l:href="image\pic001.png"/>, то в отдельном файле внутри того-же архива.
Тогда вроде и схему менять не надо.
И все-таки хотелось бы и notes как-то в отдельный файл. Чтобы пореже перезапускать потоковые декомпрессоры и парсеры.
Хотя.. Не, наверно все равно не поможет, два экземпляра парсера слишком много памяти сожрут. Ладно, текст наверно все равно придется парсить целиком и запоминать закладки. Ладно, наверно тут лучше не трогать, бесполезно.
А вот картинки - очень ускорит, особенно если архивировать без компрессии, все равно обычно несжимаемые.
А назвать эту бяку как, типа fbz пресловутой, или все-таки fb3?
Потому что стандарт то не регламентирует, но читалки и редакторы такого поворота не ждут, как то надо отличать все равно. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Пн Фев 19, 2007 17:20 Заголовок сообщения: |
|
|
Думать нужно.
Mike Sinkovsky писал(а): | Чтобы пореже перезапускать потоковые декомпрессоры и парсеры. | Давайте все-таки помнить о том, что fb2 не предназначен для непосредственного чтения на любом устройстве. Гораздо важнее, что его можно очень легко конвертировать во что-то, что на любом устройстве читается. У нас есть сони ридеры, лубки и туча всего еще, и разработка софта для них, сильно более многочисленного и разнообразного, так же не должна превращаться в кошмар. Если его на телефоне удастся прочитать - хорошо. Не удастся - пусть txt читают, в конце концов, конвертация без проблем происходит.
Так что я к идее зипа отношусь сдержанно. Это лишние сущности, причем многочисленные. Которые сделают легких разработку ридеров проще, а все остальное - сложнее, да в добавок отправят на помойку весь имеющийся софт. |
|
Вернуться к началу |
|
|
Admin Администратор информационного портала FB
Зарегистрирован: 11.06.2004 Сообщения: 1610 Откуда: Воронеж
|
Добавлено: Пн Фев 19, 2007 21:37 Заголовок сообщения: |
|
|
GribUser писал(а): | В первую очередь это убъет обратную совместимость. Насмерть. О таком стоит подумать очень крепко. В остальном идея имеет право на существование. |
Дим, тут альтернативы мало. Стремление сохранить обратную совместимость накладывает большие ограничения на изменения формата. Стремление сделать формат качественней - убивает обратную совместимость. Думать надо, да. Но мне кажется в сторону простоты конвертации формата fb2 в fb3, придется перелопатить все библиотеки, и предоставить пользователям инструмент для конвертации собственных библиотек, и редакторы и библиотекари и ридеры - все переделывать под новый формат. Вот такая глыба. Удастся поднять, ты будешь свободен в изменении формата, не удастся - значит надо вносить изменения, оглядываясь постоянно на совместимость. Значит то, о чем говорим в последних ветках и в этой в частности, слабо реализуемо.
Добавлено спустя 16 минут 26 секунд:
GribUser писал(а): | Давайте все-таки помнить о том, что fb2 не предназначен для непосредственного чтения на любом устройстве. Гораздо важнее, что его можно очень легко конвертировать во что-то, что на любом устройстве читается. У нас есть сони ридеры, лубки и туча всего еще, и разработка софта для них, сильно более многочисленного и разнообразного, так же не должна превращаться в кошмар. Если его на телефоне удастся прочитать - хорошо. Не удастся - пусть txt читают, в конце концов, конвертация без проблем происходит. |
Формат, полученный из fb - это компромисс, для случаев, когда ограничены технические средства или слишком уникально устройство. Пока Левченко не сделает поддержку fb мне его lbook интересен в смысле любопытства, практический интерес появится после хорошей поддержки fb. Такчто давай лучше исходить из того, что читалки должны аботать напрямую с fb везде, где это возможно. Такая видится тенденция, и она уже просматривается. GribUser писал(а): | Так что я к идее зипа отношусь сдержанно. Это лишние сущности, причем многочисленные. |
Вообще-то это уже тенденция развития софта, с конкретными примерами. Ты меня сам учил, что с тенденциями надо считаться. Иначе уже завтра fb3 устареет. |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|