ВНИМАНИЕ! Требуются...

Coordinator
Nov 15, 2013 at 5:56 AM
Edited Nov 18, 2013 at 10:16 PM
Проекту требуются: ответственный редактор документации и ответственные beta-тестеры.

Хочу сразу предупредить: несмотря на то, что TinyOPDS проект не коммерческий, и зарплат никто тут не платит, работать все же нужно. Если у вас нет желания/возможностей/способностей - не морочьте мне голову и не апплайтесь. К сожалению, есть уже отрицательный опыт с "энтузизистами" с коротким дыханием :( Мне не нужны "номинальные" члены команды; нужны энтузиасты и профессионалы...

НО! Если у вас действительно есть желание поработать на (абстрактное!) благо человечества - you are welcome!
Nov 18, 2013 at 11:27 AM
Тут Вам, как мне кажется, нужен больше верстальщик. Хотя.. Вы бы выложили описание ТЗ, лично мне интересно почитать (тем более на ближайшее время появилось свободное окно), т.к. лично я пока не понимаю, где и для чего нужен вывод HTML.
Спасибо!
Coordinator
Nov 18, 2013 at 10:24 PM
aStelm , на подробное ТЗ, к сожалению, нет времени :( У Славы (это разработчик, работающий сейчас над конвертированием XML вывода в HTML с помощью XSL шаблона) тоже со временем не густо (так получилось, как я понимаю). Мне все-таки хотелось-бы зарелизить версию 2.0 в ближайшем будущем - очень не люблю "висяки", даже если это fun projects.

В двух словах, все довольно просто: нужно создать XSL шаблон-программу (XSL - это язык) для конвертирования XML атомов выдачи OPDS в HTML. Конвертация осуществляется на сервере (теоретически может работать и на клиенте, но тут MS постаралась с IE - короче, проще ни сервере).
Как это сейчас работает, можно посмотреть из релиза в dropbox-е (ссылка в треде ниже). Слава закоммиттил-таки на прошлых выходных апдейт, и сейчас оно работает (на первый взгляд, я долго не тестировал) более-менее приемлимо, разве, что в описаниях присутствуют неубранные HTML тэги (я не знаю, как вообще это фиксить - в HTML я практически 0).

Зачем это нужно? В принципе, хороший вопрос :) Ответ - потому, что это достается нам как-бы "даром" (т.е. HTTP сервер и XML вывод уже есть), так почему бы и нет? Опять-таки, если любимая читалка не держит OPDS, а с web работает нормально - опять-таки, неплохая фича ;)
Nov 19, 2013 at 7:53 AM
Edited Nov 19, 2013 at 7:54 AM
SeNS wrote:
нужно создать XSL шаблон-программу (XSL - это язык) для конвертирования XML атомов выдачи OPDS в HTML.
Жаль, в этой сфере я не силен.

SeNS wrote:
в описаниях присутствуют неубранные HTML тэги (я не знаю, как вообще это фиксить - в HTML я практически 0).
а вот тут я, возможно, смогу Вам помочь если в нескольких словах сориентируете меня где и что смотреть (так понимаю версия с html выводом в закрытой бете?)
Coordinator
Nov 19, 2013 at 1:46 PM
Да нет, официальной беты пока нет. Последняя сборка лежит вот тут: https://www.dropbox.com/sh/7bdoinns0te2vwd/jjOI2U5wu7

"Убирать" тэги (а лучше - правильно помещать внутрь таблицы, чтобы они отображались) нужно именно через XSL файл. Нужно не только почистить вывод, но и добавить навигацию, поиск. Но все это - тоже через XSL. Вот потому-то я и писал, что нужен web-программист, а не "верстальщик"...
Nov 19, 2013 at 2:52 PM
Завтра посмотрю что\где\как..
почитал вики по описанию формата - вроде не так сложно, как на первый взгляд, а с разметкой - так все еще проще обстоит.
Если появятся вопросы - буду задавать здесь.
Coordinator
Nov 19, 2013 at 3:45 PM
Да, если поместить файл xml2html.xsl в стартовый каталог TinyOPDS, то сервер будет использовать внешний файл. Правда, при изменении, нужно каждый раз рестартовать сервер (или могу для тебя выложить - туда-же, на dropbox - debug версию, в которой рестартовать сервер не нужно).

Текущий файл (то, что сделал Слава) xml2html.xsl можно скачать из source tree (т.е. "плясать" желательно от него).
Coordinator
Nov 20, 2013 at 2:37 AM
aStelm , выложил на дропбокс (ссылка сверху) debug-версию (в каталоге Debug). Поиграйся, может, получится добавить поиск и навигацию.
Nov 20, 2013 at 1:40 PM
Сегодня я понял, почему не пишу web приложения на C# :)))
Спасибо за дебаг версию, все равно студию ставить пришлось, что бы пересобрать решение.. и так:
В - почему криво отображается описание книги? (вылезает html код)
О - потому что парсер пытается создать валидный xsl выпиливая при компиляции строки все лишнее, проще говоря - делает escape переданной строке. А т.к. в xml символы < и > являются невалидными - заменяются на сущности.. в итоге парсер браузера заменяет сущности на символы (unescape), но думает, что это простой текст, а не элементы DOM дерева..
Как вариант решения (уххх.. сколько у Вас кода, хоть все интуитивно понятно, но не везде) предлагаю следующее: вместо строки (ориентировочно 233) в файле OPDS\BooksCatalog.cs
new XElement("content", new XAttribute("type", "text/html"), bookInfo)
будем использовать
new XElement("content", XElement.Parse("<message>" + bookInfo + "</message>"))
но это не решает остальную часть проблемы, где теряются одиночные теги: <br/>,<hr/>, etc

Я бы предложил фундаментальное разделение кода программы и HTML вставки, оставив последнее на разметку в xsl файле.. иначе беда-беда..
Coordinator
Nov 20, 2013 at 2:19 PM
Edited Nov 20, 2013 at 2:39 PM
Ну, кино и ненцы :) Дорогой aStelm, программа выдает xml atoms, понятные OPDS программам... Ничего менять в XML выводе НЕ НУЖНО - иначе у OPDS-enabled читалок буду проблемы! Выделение некоторых частей описания книги bold-ом было сделано специально для FBReader-а, и меняться 100% НЕ БУДЕТ - мне так удобнее :)

То, что "пихают" люди в book description - это сугубо их личное дело (пусть даже это нарушает FB2 стандарт, но с этим поделать мы ничего не можем); задача программиста - используя язык XSL, сформировать правильный HTML. Смотреть нужно в XSL файл; кстати, ты посмотри описание языка и его возможности - там много mess-а, но и возможностей довольно много, в принципе, вполне полноценный язык, делать можно практически все, что хочешь (если знать, как).

Никакого "фундаментального разделения кода" не будет; задача именно в том, чтобы получить нормальный HTML базируясь на валидном XML. Да, для ее решения нужен программист, а не верстальщик или GUI web-дизайнер.
Nov 20, 2013 at 2:40 PM
Да я так и понял, что всем не угодишь.. но вопрос еще и в том, что в теле программы зашиты, например, такие моменты:
bookInfo += string.Format("<b>{0}</b> {1} Kb<br/>", Localizer.Text("Size:"), (int) book.DocumentSize / 1024);
что, из-за невалидности строки парсер XElement превратит в выводе в HTML во что-то типа:
&lt;b&gt;Размер:&lt;/b&gt; 1670 Kb&lt;br/&gt;
тут хоть крути xls файл, хоть верти его - результат нулевой будет, т.к. парсер браузера не станет работать с такой строкой как с DOM деревом.

или я опять ошибаюсь?
Coordinator
Nov 20, 2013 at 2:46 PM
Edited Nov 20, 2013 at 5:24 PM
Я выше объяснил - это сделано специально, для удобства и красоты отображения в FBReader-е под Android (моя основная читалка).

На счет "ошибаюсь" - ничего сказать не могу - не разбирался детально с XSL, нет времени, потому и ищу программиста, который бы занялся плотно (у Славы оказалось мало времени на проект). Замечу, что конвертация идет на сервере, а не в браузере на клиенте (см. файл \Server\OPDSServer.cs, начиная с line 216) Думаю, что "что-то" сделать можно - в XSL есть функции сравнения и поиска строк.

P.S. Да, еще замечу, что задачу выдачи HTML можно решить и другими путями: например, добавить аналоги классов из фолдера OPDS, но с выдачей HTML (кстати, с точки зрения производительности это было-бы намного выгоднее). Единственно, почему было выбрано решение использовать конвертацию - это отсутствие времени для поддержки HTML и "дешевизна" такого решения с моей стороны. Если, например, у тебя возникнет желание написать HTML вывод на C# (и поддерживать его в дальнейшем) - welcome to the project!
Nov 27, 2013 at 7:00 AM
Извиняюсь, что так долго не появлялся.. работаю по-немногу. Возникло несколько вопросов:
главный: для кого предназначена HTML выдача?
второстепенные:
  • браузеры, которые будут просматривать HTML выдачу поддерживают ли JS
  • какая версия движка этих браузеров
  • нужно ли предусмотреть на стороне сервера сжатие картинок-обложек, т.к. по-умолчанию клиенту передается полноформатное изображение, которое слишком здоровое, как по-мне
    И просьба тех, у кого есть возможность протестировать на читалках - http://opds2.stelm.be/ (это JS версия отображения каталога, пока что flibusta библиотеки, т.к. нет пока возможности запустить дома tinyopds на сервере (лениво ставить mono))
    Данная версия берет выдачу xml с opds сервера, парсит и выводит на страницу результат. не работает в IE < 7, по возможности проверил и в остальных браузерах (в том числе и мобильных) - работа в целом нормальная, НО это ДЕМО версия. Тут только парсинг и простейшая навигация.
Параллельно работаю над парсером xsl - основная загвоздка, как я писал выше, это конвертация на сервере невалидных символов в сущности и выдача клиенту.. пока не получилось побороть обратно..

Как-то так..
Coordinator
Nov 27, 2013 at 2:48 PM
Немного не понял "главный вопрос" :) Ну, как для кого? Для людей, human being, так сказать :)

По остальным вопросам:
  • да (но, желательно, не очень злоупотреблять)
  • последняя (притом, как desktop, так и mobile)
  • если запрашивать thumbnail вместо cover, получится маленькая картинка (cover - (480, 800), thumbnail - (48, 80))
"Танцевать" желательно от "печки", то-бишь от имеющегося файла xml2html.xsl (в source tree). Посмотри feature request к текущему состоянию конвертора: https://tinyopds.codeplex.com/workitem/1167

Результат присылать в виде patch-а (по хорошему), ну, или можно правленный файл мне.