Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Сб Фев 17, 2007 14:27 Заголовок сообщения: Вопрос про картинки |
|
|
А можно "текст" картинки (тот, что base64'ный код) - прямо в картинку втыкать? Сейчас вроде бы низя, а в будущем такое сделать? Было бы удобно. А то сейчас читаю заголовки (инфу о книгах), чтобы создать индекс для показа списка. И получается, что нужно парсить файлы целиком. Накладно получается. Особенно если этих картинок в файле - ну, зззавались.
А так открыл - прочитал начало - бросил, пошел дальше читать.
Я сделал кэш такой в своём формате (я там правда еще картинки пережимаю, разрешение уменьшаю для уменьшения размера, сохраняю в бинарном виде), так ускорение просто катастрофическое. ФБ2 читается "тыртыртыр", а кэш - "вжжж". |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Сб Фев 17, 2007 15:09 Заголовок сообщения: |
|
|
Теперь уж наврят.
Тут еще такой момент, что использование отдельного хранилища позволяет использовать ту же картинку много раз, что для каких-нить псевдобукв, например, архиважно. То есть, разнесенное хранение так и так у нас должно быть. А иметь два механизма для одного и того же явно избыточно, только алгоритмы засорять. Решение компромисное, возможно, но во всяком случае простое. |
|
Вернуться к началу |
|
|
Mike Sinkovsky Зрелый участник форума
Зарегистрирован: 27.10.2005 Сообщения: 296 Откуда: Пермь
|
Добавлено: Сб Фев 17, 2007 15:38 Заголовок сообщения: |
|
|
Ну почему, вроде принципиально ничто не мешает разрешить перемешивать тэги <body> и <binary> в произвольном порядке, и размещать картинку содержащую coverpage между <description> и первым <body>.
Или я неправильно понял? |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Сб Фев 17, 2007 16:07 Заголовок сообщения: |
|
|
Mike Sinkovsky писал(а): | Ну почему, вроде принципиально ничто не мешает разрешить перемешивать тэги <body> и <binary> в произвольном порядке, и размещать картинку содержащую coverpage между <description> и первым <body>.
Или я неправильно понял? |
а, так вот... Ну это да, действительно решение. Хотя теперь уже, думается, поздновато так делать, я вот на вскидку вспомню несколько скриптов у себя, которые совершенно не факт, что такое смещение переживут... Но для fb3, вероятно, стоит как минимум подумать об этом. Потестировать с разным софтом и посмотреть, что получится - мой fb2any, к примеру, спокойно должен такой сдвиг пережить. Но если софт будет падать и глючить - не получится уже, увы.
Но я так понял там речь о другом шла, чтобы прямо в <img>base649087ad80ad</img> колбасить. Это, думается, неправильно. |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Сб Фев 17, 2007 16:27 Заголовок сообщения: |
|
|
GribUser
Ну, если делать ссылки на картинки и сами картинки, то запросто. Картинка объявляется (прописывается) при первом к ней обращении, а потом просто идут ссылки.
Но это мне и самому не очень нравится. А вот если <binary> прописывать прямо внутри <image> - это было бы очень интересно.
Как такая мысль? |
|
Вернуться к началу |
|
|
Admin Администратор информационного портала FB
Зарегистрирован: 11.06.2004 Сообщения: 1610 Откуда: Воронеж
|
Добавлено: Сб Фев 17, 2007 23:58 Заголовок сообщения: |
|
|
GribUser писал(а): | Ну это да, действительно решение. Хотя теперь уже, думается, поздновато так делать, я вот на вскидку вспомню несколько скриптов у себя, которые совершенно не факт, что такое смещение переживут... Но для fb3, вероятно, стоит как минимум подумать об этом. Потестировать с разным софтом и посмотреть, что получится - мой fb2any, к примеру, спокойно должен такой сдвиг пережить. Но если софт будет падать и глючить - не получится уже, увы. |
А стоит ли игра свеч, вносить сумятицу в существующую схему, где все так хорошо разложено по полочкам? И ради чего? Через DOM надо работать и парсить не придется построчно весь документ. babaev писал(а): | А вот если <binary> прописывать прямо внутри <image> - это было бы очень интересно. |
Ну вот захотел я буквицы прописать в каждом абзаце. Их все 32. А абзацев 1000. Дальше надо объяснять? |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Вс Фев 18, 2007 0:07 Заголовок сообщения: |
|
|
Admin
DOM - не панацея. Я уже про это говорил. Почему к дому-то привязка такая бешеная? Не хочу я использовать DOM. По достаточному большому количеству причин... А то получается, если нет DOM'а, то и FB2 - не читается? Странный подход.
А про буквицы - я уже сказал. Дать возможность просто binary прописывать внутри тэга image. И всё. И ссылаться на этот binary так же. Просто он будет находиться в другом месте, а не железно внутри FictionBook. |
|
Вернуться к началу |
|
|
GribUser Автор формата FB2 - Автор библиотеки FB
Зарегистрирован: 30.09.2004 Сообщения: 2475 Откуда: Москва
|
Добавлено: Вс Фев 18, 2007 0:16 Заголовок сообщения: |
|
|
babaev писал(а): | Как такая мысль? |
Надо подумать. Что-то совсем не уверен я, что вы так уж много от такого размещения выиграете. А беспорядку прибавится ощутимо. |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Вс Фев 18, 2007 0:44 Заголовок сообщения: |
|
|
GribUser
Я только как "на подумать". Я уже сделал кэш в своём формате (повторяюсь).
Есть ведь два типа картинок. Одни повторяются лишь однажды. Вторые - многократно. Например те же буквицы. Буквицы - можно указывать где угодно, это абсолютно всё-равно. Любое расположение будет одинаково. А вот те, что встречаются один раз - я бы втыкал прямо по месту жительства. Потому что в других местах они не нужны вообще. |
|
Вернуться к началу |
|
|
Admin Администратор информационного портала FB
Зарегистрирован: 11.06.2004 Сообщения: 1610 Откуда: Воронеж
|
Добавлено: Пн Фев 19, 2007 0:35 Заголовок сообщения: |
|
|
babaev писал(а): | А то получается, если нет DOM'а, то и FB2 - не читается? |
Просто без дома придётся шерстить весь файл, а так конечно, можно, но не очень это хорошо получается. А схема завтра изменится? С домом просто - обработку новых элементов/атрибутов добавил и все. А твоим способом? У меня большие сомнения. Впрочем, код не смотрел, может там новый подход? Но не понятно, зачем изобретать велосипед?
И не понятно, почему должны лежать картинки не там где им положено - в подвале файла, а беспорядочно раскиданными по всему документу. Глазками тоже приходится работать с документом, особенно при поиске ошибок, а тут бинарники по документу раскиданы? А что, кроме DOM нет способа быстро найти секцию <binary>?
Я просто хочу понять почему автомобиль нас устраивает, но на бензине ездить не будем, мы по-старинке - на дровах? Или я что-то не понимаю?
(Я понял, что речь идет об обработке документа, как обычного текста, или я ошибаюсь?) |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Пн Фев 19, 2007 0:47 Заголовок сообщения: |
|
|
Admin
Дом тоже всё шерстит
Мой способ настолько же просто поменять, как и обработку дома. Там примерно одинаково. А, например, если правильно закодировать SAX, то его вообще не нужно будет менять.
Дом не плох. Просто это не единственное решение. И не всегда возможное. Это просто стереотип такой Что с домом - проще работать в XML. А как только появляются файлы, которые в DOM'е, увеличившись в 5-10 раз, начинают занимать по 200-400 метров - начинаешь задумываться.
Еще раз. Я хочу сделать читалку для мобильников. На мобильниках - нет достаточного количества памяти для дома. Просто нет. А файлы читать хочется, даже большие и с картинками. Поэтому для меня дом - это пройденный этап.
Плюс, по дому часто плохо делать навигацию. Попробуйте проитерировать элементы. Это уже - обход дерева в глубину. Но это фигня. А вот сделать обратное итерирование, если, например, нет обратных итераторов - это секс еще тот.
Так что дом - это хорошо. Повторюсь, для редактирования дом - это идеальное решение в 98% случаев (кроме очень огромных файлов, но их наверное и не будет пока). Но для читалок - это достаточно некорректное решение. Неудобное минимум.
Добавлено спустя 46 секунд:
Да, и еще. Книга редактируется один раз. А читается - тысячи. Может, стоит хотя бы чуть чуть соптимизировать формат для чтения? |
|
Вернуться к началу |
|
|
Admin Администратор информационного портала FB
Зарегистрирован: 11.06.2004 Сообщения: 1610 Откуда: Воронеж
|
Добавлено: Пн Фев 19, 2007 1:06 Заголовок сообщения: |
|
|
Кстати, насчёт картинки - это две команды (ну, не считая обработки на ошибки):
List := Doc.getElementsByTagName('description/title-info/coverpage/*');
Здесь находим ссылку, а дальше
List := Doc.getElementsByTagName('binary');
И вытягиваем бинарник. И совершенно все равно, где он находится. |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Пн Фев 19, 2007 1:08 Заголовок сообщения: |
|
|
Admin
Это если дом уже построен. А для того, чтобы построить дом - нужно прочитать весь файл. Чего, собственно, я хочу избежать. |
|
Вернуться к началу |
|
|
Admin Администратор информационного портала FB
Зарегистрирован: 11.06.2004 Сообщения: 1610 Откуда: Воронеж
|
Добавлено: Пн Фев 19, 2007 1:14 Заголовок сообщения: |
|
|
babaev писал(а): | А как только появляются файлы, которые в DOM'е, увеличившись в 5-10 раз, начинают занимать по 200-400 метров - начинаешь задумываться. |
Это книги должны быть по 40-80 метров. babaev писал(а): | Еще раз. Я хочу сделать читалку для мобильников. На мобильниках - нет достаточного количества памяти для дома. Просто нет. А файлы читать хочется, даже большие и с картинками. Поэтому для меня дом - это пройденный этап. |
Опа. Тут не спорю. Просто опыта делать под мобильник нет.
babaev писал(а): | Но для читалок - это достаточно некорректное решение. |
Я считал, что для читалок лучше SAX, но чисто теоретически И все же какой механизм обработки документа ты используешь, если не секрет?
Добавлено спустя 6 минут 42 секунды:
babaev писал(а): | А для того, чтобы построить дом - нужно прочитать весь файл. |
Просто загрузить в DOM один раз и работать с деревом. Я не совсем понял, зачем нужна обратная итерация. Текст книги - зашел в body и по слою с первого элемента обрабатывая до самого низа вытягиваешь весь необходимый текст (три-четыре страницы) отображаешь первую, как читатель попадает на вторую и читает, тянешь незаметно пятую. Это я теоритезирую. С ридерами еще не возился. |
|
Вернуться к началу |
|
|
babaev Новенький участник форума
Зарегистрирован: 31.01.2007 Сообщения: 71 Откуда: Санкт-Петербург
|
Добавлено: Пн Фев 19, 2007 1:27 Заголовок сообщения: |
|
|
Admin
Мне уже прислали книгу на 6 метров. Там много картинок А между 6 и 40 - уже не сильно большая разница. Так что будут... Интересно, как их будут редактировать
Я использую так называемый StAX. Streaming API for XML. Если в саксе мне в приложение выдают "события", которые я обрабатываю, то в StAX'е - я сам говорю "дай следующий элемент". То есть читаю, как из потока. Это лично мне - удобнее. Хотя само решение достаточно сильно схоже с SAX.
Ну, и генерю в памяти "образ" документа. Но, в отличие от иерархического ДОМа - линейный. Двусвязный список. После чего бегаю по нему.
А на мобилах - буду либо маппировать файл с этой структурой и бегать по файлу, если будет доступно соответствующее решение, либо буду бегать по файлу напрямую. RandomAccessFile вроде был. Еще не решил, будет зависеть от того, насколько всё плохо под JME. |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|