ЭДО
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ЭДО
Мне такое не надо было. А так, через vbscript реализуется все, что относится к xml. На вскидку, если надо вытащить вложение, то его можно сохранить в виде обычного файла средствами vbscript, не создавая в кларионовском приложении никаких структур для этого.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ЭДО
На всякий случай надо заметить, что вопрос либо-либо не стоит. Вариант с vbscript позволяет быстро решить любую задачу, связанную с xml. Основное назначение это преобразование сложных структур в простые, с которыми легко работать из клариона. Для отдельных задач можно использовать и другие подходы. По большому счету, чтобы распарсить xml, надо считать файл в строку (например, через win api), а потом пробежаться в ней по байтикам, проверяя их по определённым правилам. У меня есть упрощённая реализация для сохранения содержимого tps файлов базы данных в xml и загрузка их оттуда. Это чистый код на кларионе. Разумеется, о полноценной поддержке всех спецификаций xml речь не идёт.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ЭДО
В этом сомнений нет никаких. Но торопиться не надо с ответом ...
А можно ли добытое vbscript затянуть потом для обработки в Clarion ?
Потому что проверенная десятилетиями технология "в кьюшку через текстушку"
(пардон за каламбур !) - здесь ведь не прокатит однозначно ...
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ЭДО
В любом случае, затянуть результаты работы xml парсера из vbscript не должно быть трудным. Оно изначально предназначено, чтобы скриптом преобразовать сложную структуру в простую. Вопрос может быть в том, как распределить аыполняемую работу между скриптом и кодом на кларионе. Разумно, когда в прикладной приложении на кларионе минимум кода и он максимально прост и понятен.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ЭДО
Да, конечно. Так можно передать бинарные данные из скрипта в программу.
Но получится, что отправив запрос на документы оператору сабжа - мы потом его ответ в XML
запишем в ФАЙЛ, создадим ФАЙЛ с текстом скрипта и запустим его в VBScript, который
запишет результат парсинга в ФАЙЛ и на каждый бинарный тег с документом создаст отдельный ФАЙЛ.
Отжужав, скрипт вернёт всю эту красоту программе, которая загрузит ФАЙЛ с ответом в список и
каждый ФАЙЛ с документом в БД программы ... и вроде как получается, что запрос мы отработали.
Мне одному кажется, что слово "ФАЙЛ" в этой технологии доминирует ?
А ведь старый штатный класс Clarion вот это вот всё может делать в памяти ....
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ЭДО
Можно отдельный, можно не отдельный. Все от задачи зависит. Ключевой момент это преобразование сложных структур в простые встроенным в винду скриптовым языком.
Издержки заключаются в создании временного файла со скриптом и обработка второго временного файла с результатом работы этого скрипта. Обычно это срыто в классе, формирующем скрипт и обрабатывающем результат его работы на стороне кларионовского приложения.
Стоит ли пугаться создания временных файлов? Ну так при формировании печатных форм создаётся много временных файлов (на каждую страницу). А если взять саму винду и разные приложения, там вообще тьма. То есть получаем каплю в море.
Смотреть надо на скорость работы. Сам виндовый парсер, вызываемой в vbscript, работает быстро. Больше времени занимает разложить в кларионовском приложении результат по кьшкам, когда используются универсальные механизмы. Я думаю, это можно оптимизировать, просто xml файлы большого объёма встречаются редко в имеющихся задачах. Опять таки, если вопрос в обеспечении скорострельности, то можно посмотреть и другие инструменты. Но мне чаще попадаются ситуации, когда возникает потребность и её решить надо в течении дня или быстрее. Нет времени выяснять, что может или не может парсер, корректно или не совсем он это делает, как вообще это с его помощью сделать. Тогда на помощь приходят скрипты.
Издержки заключаются в создании временного файла со скриптом и обработка второго временного файла с результатом работы этого скрипта. Обычно это срыто в классе, формирующем скрипт и обрабатывающем результат его работы на стороне кларионовского приложения.
Стоит ли пугаться создания временных файлов? Ну так при формировании печатных форм создаётся много временных файлов (на каждую страницу). А если взять саму винду и разные приложения, там вообще тьма. То есть получаем каплю в море.
Смотреть надо на скорость работы. Сам виндовый парсер, вызываемой в vbscript, работает быстро. Больше времени занимает разложить в кларионовском приложении результат по кьшкам, когда используются универсальные механизмы. Я думаю, это можно оптимизировать, просто xml файлы большого объёма встречаются редко в имеющихся задачах. Опять таки, если вопрос в обеспечении скорострельности, то можно посмотреть и другие инструменты. Но мне чаще попадаются ситуации, когда возникает потребность и её решить надо в течении дня или быстрее. Нет времени выяснять, что может или не может парсер, корректно или не совсем он это делает, как вообще это с его помощью сделать. Тогда на помощь приходят скрипты.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ЭДО
Да, потому что это отлаженное решение (которым массово пользуются).
Интересно, что CapeSoft xFiles 4 тоже какая-то движуха прям, новые релизы в этом году и т.д.
Значит кому-то это нужно, есть юзеры, с этим работают. Не дохлый класс. И это хорошо !
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ЭДО
В егаис так и делается у меня с файлами. Вначале создаётся xml файл с запросом, с помощью curl.exe он отправляется в утм, результат работы возвращается в другой файл. Создаётся файл скрипта для парсинга, получаем файл с результатом, забираем его содержимое в кьюшки.
Получается ряд временных файлов. Наверно, используя curlib и какую-то библиотеку для парсинга xml, можно все сделать в памяти и это будет быстрее. Это факт. Пока скорость устраивала. Ну, пусть будет, условно, 3 сек против 1 сек. На вспомогательной задаче не критично. Зато быстро реализовать и проще отладить. Получили результат в файл, его всегда можно посмотреть. Я, например, для егаис сохраняю результаты ответа утм на типовой запрос в отдельных файлах. То есть, запрос на списание - всегда есть файл с последним ответом на такой тип запроса. Периодически бывает нужно проверить его содержимое, когда происходит какая-то нештатная ситуация. Или когда у нас возникает какая-то непонятки при парсинга, временный файл со скриптом не удаляем, а доводим скрипт до рабочего состояния, не перекомпилируя каждый раз приложение, а потом результаты учитываем в классе, когорый генерит подобный скрипт. Время решения проблемы сокращается в разы.
Получается ряд временных файлов. Наверно, используя curlib и какую-то библиотеку для парсинга xml, можно все сделать в памяти и это будет быстрее. Это факт. Пока скорость устраивала. Ну, пусть будет, условно, 3 сек против 1 сек. На вспомогательной задаче не критично. Зато быстро реализовать и проще отладить. Получили результат в файл, его всегда можно посмотреть. Я, например, для егаис сохраняю результаты ответа утм на типовой запрос в отдельных файлах. То есть, запрос на списание - всегда есть файл с последним ответом на такой тип запроса. Периодически бывает нужно проверить его содержимое, когда происходит какая-то нештатная ситуация. Или когда у нас возникает какая-то непонятки при парсинга, временный файл со скриптом не удаляем, а доводим скрипт до рабочего состояния, не перекомпилируя каждый раз приложение, а потом результаты учитываем в классе, когорый генерит подобный скрипт. Время решения проблемы сокращается в разы.
C6/C11, ШВС, tps/btrieve.
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
ЭДО
Интересно было бы подменить налету ваш файл... и что бы вы его подписали.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ЭДО
Именно так и было. В 2008 г. нам отказались сертифицировать систему для БКИ сделанную
по технологии СМО (слишком много файлов). Так это называется в ЦБ РФ. Переделали ...
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ЭДО
Имя файла переменное. Надо его как-то вычислить.
Содержимое надо, как минимум, понимать, оно проверяется.
Содержимое не содержит ничего такого, что было бы полезно перехватывать.
Вредить проще другими способами. Например, перехватывая http запросы.
Вопросы с безопасностью встают там, где свободный доступ в интернет и неконтролируемая установка софта. И ничто не спасёт в таком случае, ни антивирь, ни брэндмауэр.
Содержимое надо, как минимум, понимать, оно проверяется.
Содержимое не содержит ничего такого, что было бы полезно перехватывать.
Вредить проще другими способами. Например, перехватывая http запросы.
Вопросы с безопасностью встают там, где свободный доступ в интернет и неконтролируемая установка софта. И ничто не спасёт в таком случае, ни антивирь, ни брэндмауэр.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4617
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
ЭДО
Посмотрите, как хранит базу postgre. Там тысячи файлов, раскиданных по разным каталогам. Давайте не будем его использовать, вдруг кто-то подменить файлик и у нас денежки пропадут.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7377
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
ЭДО
Вот видите - Вы там уже были и всё это многообразие видели.
Вы бы конечно не стали там что-то удалять или улучшать.
Но сама возможность беспредела в таком подходе напрягает.
За теми кто отстал - не возвращаться. (С) Кодекс