OberonCore https://forum.oberoncore.ru/ |
|
Xmlcore - реализация DOM и XML для BlackBox https://forum.oberoncore.ru/viewtopic.php?f=90&t=1006 |
Страница 2 из 4 |
Автор: | Info21 [ Среда, 04 Июнь, 2008 12:30 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Ярослав Романченко писал(а): ... Вообще за Flash баннеры вбывав-бы ... Флэшу -- бойкот. Не устанавливать. Потерпеть Роллан Гаррос без флэша. В этом году они уже научились делать альтернативу из чистого html. |
Автор: | Иван Горячев [ Среда, 04 Июнь, 2008 12:31 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Ярослав Романченко писал(а): Оперу запросто мог повесить Flash баннер на какой-то из закладок. То-ли баннеры кривые попадаются, то-ли плагин глючный. Вообще за Flash баннеры вбывав-бы Именно SVG - проверено экспериментально. И меня вообще по умолчанию флэш и картинки отключены. Собственно вот (4 мб) (02.08.2011, модератор) ветка про Strings выделена в отдельную тему: viewtopic.php?f=90&t=3524 |
Автор: | Иван Кузьмицкий [ Среда, 04 Июнь, 2008 13:04 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Иван Горячев писал(а): ...Собственно вот (4 мб) Да, у меня Опера 9.26, на нём падает. Но InkScape открыл картинку нормально, хотя и ме-е-едленно. Так что не в формате дело. |
Автор: | Пётр Кушнир [ Среда, 04 Июнь, 2008 20:15 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Про SVG: Слепил в InkScape простенький SVG, пропустил через парсер Xmlcore(прочитал в XMLДокумент, записал из XMLДокумента) и открыл обратно в InkScape - файл открылся корректно. Что радует. |
Автор: | Борис Рюмшин [ Четверг, 05 Июнь, 2008 09:23 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Petryxa писал(а): Ммм. Было бы неплохо. Ну тогда сообщите пожалуйста параметры SVN репозитория. Сообщите мне имя пользователя - пароль личным сообщением. Остальные параметры сообщу чуть позже. |
Автор: | Пётр Кушнир [ Понедельник, 09 Июнь, 2008 14:11 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Dom + Xmlcore В архиве последняя версия, чтобы быть иметь хоть какую то синхронизованность. |
Автор: | Борис Рюмшин [ Вторник, 10 Июнь, 2008 00:25 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Petryxa писал(а): Dom + Xmlcore В архиве последняя версия, чтобы быть иметь хоть какую то синхронизованность. Товарищи, прошу прощения, завтра (уже сегодня) к середине дня вопрос с репозиторием будет решён. |
Автор: | Пётр Кушнир [ Вторник, 10 Июнь, 2008 13:09 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Да ну что вы, в самом деле не стоит... |
Автор: | Иван Горячев [ Вторник, 10 Июнь, 2008 13:56 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Стоит-стоит. У ББ так мало разработчиков, что любые способы концентрации усилий можно только приветствовать. |
Автор: | Пётр Кушнир [ Вторник, 10 Июнь, 2008 14:17 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Иван Горячев писал(а): Стоит-стоит. У ББ так мало разработчиков, что любые способы концентрации усилий можно только приветствовать. Да я про извинения говорил Репозиторий конешно нужОн, без него как-то некомфортно. |
Автор: | Борис Рюмшин [ Среда, 11 Июнь, 2008 16:18 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Друзья, ещё раз прошу прощения за задержку. Иван, вы знаете, где SVN. Именно там - новый каталог Components. Petryxa, для вас сейчас личное сообщение будет. Остальные, кто хочет присоединиться к разработке: имя пользователя, пароль личным сообщение мне. Желающим просто понаблюдать, придётся немного обождать. |
Автор: | Иван Горячев [ Суббота, 14 Июнь, 2008 04:51 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Просьба к тем, кто будет править через SVN - перейдите на ББ 1.6 или не пишите по-русски, иначе мне придётся постоянно конвертировать документы (в ББ 1.6 русские буквы, набранные в предыдущих версиях, выглядят кракозябрами). |
Автор: | Info21 [ Суббота, 14 Июнь, 2008 06:36 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Иван Горячев писал(а): в ББ 1.6 русские буквы, набранные в предыдущих версиях, выглядят кракозябрами перенес вопрос сюда: viewtopic.php?f=3&t=1025 |
Автор: | Пётр Кушнир [ Суббота, 14 Июнь, 2008 09:56 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Иван Горячев в оффтопной ветке писал(а): Пётр Кушнир писал(а): Ну, тесты разные бываютЪ. Подозреваю Vlad имел ввиду этот тест. Спасибо Владу, пошёл скачал и проверил. Не, ещё работать и работать, чтобы он хотя бы valid ветки проходил Усё это оффтоп, давайте куда-нибудь в другое место Вот, перенёс в другое место... Подозреваю, Vlad не имел в виду этот тест. Но штука полезная. Нет смысла тестировать на таком тесте, если не все функции парсера ещё реализованы(там же сплошь DTD). Посмотрите в модуль Parser, сколько методов там закомментировано. Есть мнение, нужно их до-портировать сначала. |
Автор: | Пётр Кушнир [ Воскресенье, 15 Июнь, 2008 22:38 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Появилась идея переделать модули XmlcoreScanner и XmlcoreWriter в виде абстрактных интерфейсов со скрытой реализацией. Сейчас всё это выглядит как что-то непонятное, с привязкой к типам из Files. План такой. Вообщем по модулю XmlcoreScanner: Описать абстрактную фабрику объектов. Reader(курьер чтения): Описать абстрактный тип Reader, c набором методов, необходимых Сканнеру. В реализации Reader инкапсулировать Stores.Reader(или, в будущем, какой-нибудь другой Reader). Для Scanner: Scanner.r объявить типа Reader. Scanner.ConnectTo также переделать, чтобы сканнер присоединялся к Reader, а НЕ к Files.File, как сейчас. Остаётся нерешённым, как Reader присоединять к источнику данных. Я думаю, подойдёт метод фабрики dir.NewReader(source : ANYPTR). Тогда реализация Reader будет сама приводить тип к "своему" типу источника данных. Также потребуется незначительная модификация XmlcoreParser Вообщем по модулю XmlcoreWriters: Переименовать XmlcoreWriters в XmlcoreFormatter. Переименовать тип Writer в Formatter. Writer(курьер записи): Описать абстрактный тип Writer и методы, необходимые для Formatter. Присоединение к источнику данных сделать аналогично как в Reader, через метод фабрики, передавая указатель неопределённого типа. Для Formatter: Присоединять Formatter к Writer, а НЕ к Files.File, как сейчас. Также потребуется незначительная переделка Generator. Вот примерный код: Код: MODULE XmlcoreScanner; TYPE Reader = POINTER TO ABSTRACT RECORD <some fields> END; StdReader = POINTER TO RECORD (Reader) <some fields> rider : Stores.Reader; END; Scanner = POINTER TO RECORD <some fields> rider- : Reader; END; Directory = POINTER TO ABSTRACT RECORD END; PROCEDURE (rd : Reader) ConnectTo(source : ANYPTR), NEW, ABSTRACT; PROCEDURE (rd : StdReader) ConnectTo(source : ANYPTR); BEGIN ASSERT(source IS Stores.Reader) (* ну, или в зависимости от типа предпринимать действия *) rd.rider := source; <some actions> END ConnectTo; PROCEDURE (d : Directory) NewScanner(reader : Reader), NEW, ABSTRACT; PROCEDURE ((d : Directory) NewReader(source : ANYPTR), NEW, ABSTRACT; (* При работе нужно будет сделать что-то типа: *) XmlcoreScanner.dir.NewScanner(XmlcoreScanner.dir.NewReader(source)); Код: MODULE XmlcoreFormatter;
TYPE Writer = POINTER TO ABSTRACT RECORD <some fields> END; StdWriter = POINTER TO RECORD (Reader) <some fields> rider : Stores.Writer; END; Formatter = POINTER TO RECORD <some fields> rider- : Writer; END; Directory = POINTER TO ABSTRACT RECORD END; PROCEDURE (wr : Writer) ConnectTo(source : ANYPTR), NEW, ABSTRACT; PROCEDURE (wr : StdWriter) ConnectTo(source : ANYPTR); BEGIN ASSERT(source IS Stores.Writer) (* типы выдуманные, названия могут несовпадать*) wr.rider := source; <some actions> END ConnectTo; PROCEDURE (d : Directory) NewFormatter(writer : Writer), NEW, ABSTRACT; PROCEDURE ((d : Directory) NewWriter(source : ANYPTR), NEW, ABSTRACT; (* При работе нужно будет сделать что-то типа: *) XmlcoreFormatter.dir.NewFormatter(XmlcoreFormatter.dir.NewWriter(source)); |
Автор: | Евгений Темиргалеев [ Воскресенье, 15 Июнь, 2008 23:30 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Пётр Кушнир писал(а): Появилась идея переделать модули XmlcoreScanner и XmlcoreWriter в виде абстрактных интерфейсов со скрытой реализацией. Сейчас всё это выглядит как что-то непонятное, с привязкой к типам из Files. А планируется несколько реализаций парсера? И возможность подмены реализации во время работы ББ?
|
Автор: | Vlad [ Понедельник, 16 Июнь, 2008 07:54 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Пётр Кушнир писал(а): Основной затык скорости приходился на посимвольный набор строки, с посимвольным выделением памяти... А может просто избавиться от посимвольного набора строки? Я вот недавно прототипчик писал, который как раз интенсивно со строками работает (что-то типа индексирования текста). Прототип заработал, но работал очень тормозно даже для прототипа. После анализа в ряде мест "обычные" строки были заменены "специальными", которые "внутри" представляли собой константные итераторы (да-да, те самые итераторы! ) по существующему тексту. Скорость выросла более чем на порядок. P.S. Это не реклама итераторов Это предложение взглянуть на задачу с позиции выше, чем "как максимально оптимизировать посимвольный набор строки". |
Автор: | Пётр Кушнир [ Понедельник, 16 Июнь, 2008 10:28 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Евгений Темиргалеев писал(а): А планируется несколько реализаций парсера? И возможность подмены реализации во время работы ББ? Ну, например, можно получать XML данные не с диска, а из сети... написать jabber-клиент на ББ например(идея-фикс ). В случае абстрактной реализации потребуется только подменить Reader и Writer а остальные части останутся прежними. Я пока говорил только про абстрактные курьеры, но можно абстрагировать и весь парсер... Например, если кто-то захочет использовать готовую обёрнутую библиотеку Vlad писал(а): P.S. Это не реклама итераторов Это предложение взглянуть на задачу с позиции выше, чем "как максимально оптимизировать посимвольный набор строки". В таком случае нужно ещё и строки абстрагировать... |
Автор: | Евгений Темиргалеев [ Понедельник, 16 Июнь, 2008 12:00 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Пётр Кушнир писал(а): Я пока говорил только про абстрактные курьеры, но можно абстрагировать и весь парсер... Нда, плохо читал...Пётр Кушнир писал(а): Vlad писал(а): P.S. Это не реклама итераторов Это предложение взглянуть на задачу с позиции выше, чем "как максимально оптимизировать посимвольный набор строки". В таком случае нужно ещё и строки абстрагировать... Однако, применим ли этот подход к xml-файлам, вопрос. Какого размера на практике может попасться xml-файл? |
Автор: | Пётр Кушнир [ Понедельник, 16 Июнь, 2008 14:17 ] |
Заголовок сообщения: | Re: Реализация Document Object Model(DOM) и XML для BlackBox |
Евгений Темиргалеев писал(а): Однако, применим ли этот подход к xml-файлам, вопрос. Какого размера на практике может попасться xml-файл? Так сразу и не скажешь, на моём компьютере я нашёл размеры ~1 кбайт до 4 мегабайт причём размеры распределены довольно равномерно на всём промежутке, вот здесь товарищ говорит о 6 мегабайтном файле, в XML-БД "Седна"(как-то так) вообще размер неопределённо большой может быть... Можно ориентироваться на 4-х мегабайтный файл, который в наличии. Самое неприятное то, что в DOM строки всё равно ДОЛЖНЫ хранится как массив символов(ну или указатель на массив, в случае BlackBox это неважно). Тогда, если организовыать список строк в памяти, то нужно будет переделать Dom так, чтобы в качестве входных параметров методов узлов выступали указатели на строки, а не сами строки... Это будет очень полезно в плане производительности, потому как строка с содержимым будет создаваться только один раз в парсере, а основная работа будет происходить с указателем на неё... Но это создаст некоторые неудобства при прямой работе с самим DOM. Например простой метод SetNodeValue('value') превратится в SetNodeValue(CreateDynString('value')); Хотя, стандарт не запрещает просто ввести новый метод SetNodeDynValue(val : POINTER TO ARRAY OF CHAR). |
Страница 2 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |