Как стать автором
Поиск
Написать публикацию
Обновить
7.73

XML *

Расширяемый язык разметки

Сначала показывать
Порог рейтинга
Уровень сложности

SQL Server JSON

Время на прочтение26 мин
Количество просмотров41K


Когда много лет подряд Microsoft лихорадит из одной крайности в другую, то понемногу начинаешь привыкать к этому и все новое ждешь с неким скепсисом. Со временем это чувство становится только сильнее и подсознательно ничего хорошего уже не ожидаешь.

Но иногда все получается в точности да наоборот. Microsoft вываливает из коробки идеально работающий функционал, который рвет все устоявшиеся жизненные стереотипы. Ты ждешь от новой функционала очередных граблей, но, с каждой минутой, все больше понимаешь, что именно этого тебе не хватало все эти годы.

Такое пафосное вступление имеет определенные на то основания, поскольку долгое время на Microsoft Connect поддержка работы с JSON на SQL Server была одной из самых востребованных фич. Шли годы и неожиданно данный функционал реализовали вместе с релизом SQL Server 2016. Забегая вперед скажу, что вышло очень даже хорошо, но Microsoft не остановилась на этом и в SQL Server 2017 существенно улучшили производительность и без того быстрого JSON парсера.
Подробнее

Злой XML с двумя кодировками

Время на прочтение4 мин
Количество просмотров30K
WAFы видят вместо документа белый шум!
00000000 3C3F 786D 6C20 7665 7273 696F 6E3D 2231 <?xml version="1
00000010 2E30 2220 656E 636F 6469 6E67 3D22 5554 .0" encoding="UT
00000020 462D 3136 4245 2200 3F00 3E00 3C00 6100 F-16BE".?.>.<.a.
00000030 3E00 3100 3300 3300 3700 3C00 2F00 6100 >.1.3.3.7.<./.a.
00000040 3E >
В статье — небольшой рассказ про кодировки в XML и про обход WAFов с их помощью.
Читать дальше →

Java XML API: выбираем правильно. StAX: работаем с удовольствием

Время на прочтение5 мин
Количество просмотров59K
Здравствуйте!
Несмотря на снижение популярности формата XML с начала 2000х, он прочно занял свои ниши. Я сталкивался с обработкой XML ~ в 60% проектов и посвятил ей занятие своей стажировки Masterjava. Наиболее частые его применения: XHTML, SOAP, различные конфигурации (например Tomcat, SoapUI, IntelliJ IDEA, Spring XML конфигурация), импорт-экспорт данных.

В Java есть несколько API для работы с XML и для разработчика важно понимать, какое из API требуется выбрать в каждой конкретной ситуации. В этой статье я кратко перечислю все Java XML API, их назначение и примеры использования, и подробнее остановлюсь на работе с достаточно редкой, но в ряде случаев единственно верной технологией StAX. Предполагается что с элементами XML вы уже знакомы.
Читать дальше →

Семантическая разметка: LaTeX, DocBook или ???

Время на прочтение4 мин
Количество просмотров19K
Писал комментарий к статье и понял, что надо выносить в отдельный пост.
Как многие отмечают там в комментариях статья отстой, человек не разбирается и смешал всё в кучу, попробую поделиться своими выводами от использования разных разметок.
Читать дальше →

Декларативное программирование в web-е

Время на прочтение13 мин
Количество просмотров25K

image


Что же такое декларативное программирование? Википедия подскажет нам:


Декларати́вное программи́рование — это парадигма программирования, в которой задается спецификация решения задачи, то есть описывается, что представляет собой проблема и ожидаемый результат.

Далее в статье пойдет речь о том, как использовать данную парадигму в современном web-программировании. В частности, я хотел бы затронуть вопрос о валидации/верификации входных данных для веб сервисов. Примеры будут на php, так как это язык мне наиболее близок в профессиональном плане.

Читать дальше →

Тестирование БД мобильного Delphi-приложения

Время на прочтение10 мин
Количество просмотров9.2K
В предыдущем материале «Выбор СУБД для мобильного Delphi-приложения», как следует из его названия, был показан первый этап в разработке той подсистемы приложения, что отвечает за хранение и бо́льшую часть обработки его данных; уточнение про «бо́льшую часть» сделано неспроста, т. к. в итоге обозначенный выбор пал на СУБД Interbase именно из-за возможности применять хранимые процедуры (ХП), которые и стали сосредоточением основной логики по работе с данными, оставляя за Делфи-кодом несложную задачу по их вызову.

Для лучшего понимания необходимости тестирования в данном конкретном случае, нужно отметить, что в описанном проекте изначально была задана довольно высокая планка качества, поддержание которой в части функционала, реализованного в процедурах, достиглось, в том числе, за счёт автотестов, проверяющих ключевые ХП (они ответственны за критический для приложения функционал – систему рекомендаций). Именно один из способов организации такого тестирования – на основе DUnitX и XML – и является предметом статьи.
Читать дальше →

Применение IMS QTI в электронных курсах в формате ePUB

Время на прочтение13 мин
Количество просмотров7.5K

Суть проблемы


В системах электронного обучения (СЭО), используемых в образовательных учреждениях, часто требуется помимо подключения электронного курса к СЭО, также импортировать его отдельные компоненты для формирования единых банков образовательных ресурсов. Такие банки используются в образовательном процессе, в том числе для создания междисциплинарных спецкурсов, итоговых тестирований по всему периоду обучения. Как правило, это в первую очередь тестовые задания, изображения, мультимедийные компоненты. Некоторые элементы контента, в частности тестовые задания, созданные без использования машиночитаемых форматов (CSV, JSON, XML, XLS), не поддаются эффективному автоматизированному импорту в СЭО. Особенно это касается HTML/CSS/JavaScript, применяемых в контейнере для электронных курсов и публикаций ePUB. Для решения этой задачи автором предлагается использовать описания тестов и отдельных тестовых вопросов в составе курса в машиночитаемом формате XML в соответствии со спецификацией IMS Question and Test Interoperability v.2.2 (IMS QTI).


Пару слов о ePUB v.3


ePUB версии 3, разработан ассоциацией IDPF и является стандартом для обмена и дистрибуции электронных публикаций. ePUB получил широкое распространение среди издателей электронных учебников и курсов. Формат поддерживается на большинстве мобильных платформ, и лег в основу ряда других подобных форматов, например, ibooks компании Apple.


Рисунок 1. Структура EPUB-контейнера
image

Читать дальше →

Автоматизация печати в корпоративных системах или как подружить свой «велосипед» с принтером

Время на прочтение6 мин
Количество просмотров9.9K
Привет, хабражитель! Хочу поделиться с тобой наболевшим опытом, надеюсь, будет полезен. Сегодня расскажу о том, как разрабатывали систему печати документов в корпоративной системе.

С чего все начиналось


А началось все с разработки ERP-платформы в одной торговой компании примерно 2 года назад. Был выбран Linux, стек С++/Qt, PostgreSql и фронт под web. На C++/Qt был реализован сервер приложений и там же, через прослойку JS интерпретатора писалась бизнес логика. Почему так — это отдельная история, здесь рассмотрим, как разрабатывалась система печати.
Читать дальше →

Интеграция XML данных — другой путь

Время на прочтение18 мин
Количество просмотров35K
В данной статье описывается «нетрадиционная», но достаточно мощная технология обработки XML, позволяющая импортировать любые XML-данные и преобразовывать их структуру эффективно и просто, при этом один и тот же процесс обработки позволяет трансформировать исходные данные любой структуры без какого-либо изменения программного кода.
Читать дальше →

Чтение конфигурационных файлов без проблем

Время на прочтение5 мин
Количество просмотров18K
В данной статье мне бы хотелось рассмотреть проблему загрузки настроек из конфигурационных файлов. Как правило, разработчики используют тяжеловесное и сложное API из пространства имен System.Configuration и считывают настройки шаг за шагом. В случае если в конфигурационном файле секция, которую надо считать, представляет из себя простую структуру (без вложенностей), то, в принципе, считывание не вызывает особых проблем. Однако, как только конфигурация усложняется и/или появляются вложенные подсекции, то распарсивание превращается в настоящую головную боль. Для простого и быстрого считывания настроек и загрузку их в память отлично подойдет библиотека ConfigurationParser, которая возьмет на себя все сложности работы с конфигурационными файлами.
Читать дальше →

VectorDrawable — часть третья

Время на прочтение4 мин
Количество просмотров5.9K
Ранее в этой серии статей мы рассмотрели реализацию VectorDrawable, изпользуя данные под тегом path в SVG. А после применили несколько простых анимаций к отдельным элементам path.

Romain Guy написал приложение, которое рисует маршруты. Он использовал SVG path, чтобы определить маршрут, а затем по этому маршруту «рисовал» линию путем регулирования параметра dash.

Так как VectorDrawable поддерживает данные SVG из тега path, можем ли мы использовать ту же технику? Конечно можем. Но, на сам деле, нам это не нужно. Мы можем достичь того же эффекта, манипулируя некоторыми атрибутами элемента в нашем VectorDrawable.
Читать дальше →

Как я разбирал docx с помощью XSLT

Время на прочтение16 мин
Количество просмотров69K

Задача обработки документов в формате docx, а также таблиц xlsx и презентаций pptx является весьма нетривиальной. В этой статье расскажу как научиться парсить, создавать и обрабатывать такие документы используя только XSLT и ZIP архиватор.

Читать дальше →

Simple XML Framework — пишем API для работы с диаграммами DIA

Время на прочтение8 мин
Количество просмотров7.1K
Simple Xml Framework Dia Diagram Editor   Dia Diagram Editor

Фреймфорк Simple XML — известен многим, при своей простоте, он способен потягаться возможностями с большим «интерпрайзным» JAXB, и при этом совместим с Андроид.

Статей по его использованию не «навалом», но хватает. Фреймфорк упоминался на Хабре, есть статья на ibm developerworks, в конце концов, на официальном сайте есть хорошие примеры и руководство.

В общем и целом, как использовать фреймворк ясно. Но бывает, встречаются структуры, для которых уже не хватает методов, описанных в мануалах и туториалах. Именно такую структуру XML я обнаружил, когда начал разбираться с тем, как DIA хранит свои диаграммы.

В данной статье будет рассказано о том, как научить Simple Framework работать в такой ситуации. Мы создадим собственную «стратегию» для Simple Framework; мы отнаследуемся от класса TreeStrategy и опишем «хитрую логику» того, как надо сопоставлять элементы xml-файла DIA к Java классам.

И да, я предполагаю, что читатель знаком с основами использования Simple XML Framework.
Читать дальше →

Ближайшие события

Экспорт табличных данных из приложений написанных под .NET на языке C#

Время на прочтение5 мин
Количество просмотров7.2K

Предыстория


Все началось с того, что стал писать простенькую программу, которая должна была выполнять функции телефонного справочника. В качестве основного компонента, в котором будут размещаться все данные, выбрал объект класса ListView. Но любая хорошая программа должна уметь сохранять все свои данные в отдельный файл, с последующей его загрузкой, для продолжения работы с данными.

Что бы не изобретать велосипед, я принял решение о сохранение данных в XML-файл. Такой тип файла, очень удобен и популярен у многих разработчиков, с ним легко работать. Единственным его недостатком является слабая защищенность данных. Его можно открыть любым простым редактором текста, хотя и можно применить шифрование текста — это не гарантирует полной безопасности для информации в файле.

Как осуществить экспорт данных?


image

Как видно из скриншота, в элементе меню «Файл» уже все заготовлено для Экспорта и Импорта нашей телефонной книги, осталось написать сам код.

При написании данной программы, у меня еще не было практического опыта работы с XML-файлами на языке С# под платформой .NET. Поэтому я стал искать материал на просторах интернета. Но все мои результаты поисков были не утешительные. Все найденные результаты давали очень грубый и «макаронный» код, который можно адаптировать под свои нужды. Однако, это все же не практично. Такой код не возможно легко использовать в разных проектах.

После чего я решил углубиться в саму особенность работы с XML-файлами на языке C#.
Читать дальше →

Рецепты. Как установить ПО на серверы используя VMmanager и DCImanager

Время на прочтение6 мин
Количество просмотров5.9K


Согласитесь, приятно получить сервер уже готовый к выполнению задач. Установленный ISPmanager позволит сразу приступить к размещению сайта. Teamspeak – организовать тренировку по WoT без траты времени на инсталляцию.
Провайдеры за счет этого повышают доход. Сегодня они предлагают не просто машины с чистой ОС, а бухгалтерские, торговые, игровые серверы. «Предпродажная подготовка» повышает лояльность клиентов и уменьшает нагрузку на техподдержку.

Изначально в наших продуктах это было реализовано посредством установки нужных пакетов через Шаблон ОС. Проблема в том, что шаблоны требуют значительных затрат на создание, поддержку и актуализацию. Все усугубляется, когда клиент просит сделать предустановку непопулярного набора пакетов. К примеру, BigBlueButton, платформы для проведения вебинаров. Пользователь заказывает VDS и проводит видеоконференции, но только раз в 3 месяца. Он не хочет тратить по 30 минут на инсталляцию ПО при каждом заказе выделенного сервера. Провайдеру же подобные запросы не всегда интересны. Узкоспециализированный шаблон порой влечет неоправданные издержки.
Под катом мы расскажем о том, как решить такие проблемы с помощью рецептов — скриптов, выполняющих автоматическую установку ПО в VMmanager и DCImanager.

Читать дальше →

Разработка динамических REST-сервисов на документо-ориентированной БД Bagri

Время на прочтение16 мин
Количество просмотров5.3K
Не так давно, просматривая ленту CNews, наткнулся на анонс конференции “ИТ в здравоохранении: в ожидании прорыва”. Оказывается, “начиная с 2011 г. в России реализуется масштабный государственный проект по внедрению Единой государственной информационной системы в сфере здравоохранения (ЕГИСЗ)”. Углубившись немного в материал обнаружил, что ЕГИЗС базируется на широко используемых на западе стандартах организации Health Language 7 (далее HL7). А в основе стандартов HL7 лежит XML. Появилось желание построить прототип системы, обрабатывающей документы HL7, на документной БД Bagri и, если прототип выйдет удачным, подготовить доклад о нем на конференцию.

image

Читать дальше →

Разработка на базе фреймворка COREmanager. Как наши партнёры создавали решение для аутсорсинга техподдержки

Время на прочтение18 мин
Количество просмотров5K


Если кто-то решил начать своё дело и хочет предоставлять виртуальный хостинг, запустить онлайн-сервис по продаже цветов или кофе по франшизе, есть множество готовых инструментов для организации работы. С другой стороны, если запустить какой-то бизнес просто, надо быть готовым к большому количеству конкурентов в этой сфере. Вероятность “прогореть” повышается.
Если же заходить в какую-то мало освоенную область, где конкуренция меньше, то готовых инструментов для автоматизации задач может и не быть. Да, первое время можно всё делать вручную, однако когда количество клиентов подрастёт, придётся всерьёз задуматься над оптимизацией процессов.

При разработке средства автоматизации можно использовать фреймворк COREmanager как основу, скелет, продукта. Это сократит затраченное на кодирование время, а также позволит применить разные языки программирования для реализации различных функций.

Под катом — подробности разработки системы для аутсорс-техподдержки компанией ISPlicense.

Читать дальше →

1С магия XDTO-пакетов на примере интеграций с ГИС ЖКХ

Время на прочтение15 мин
Количество просмотров56K
Есть очень много статей о том, как работать с XSL/XSD из 1С, но все они в стиле: возьмем нашу XSD схему (простую и удбоную) или наш web-сервис и смотрите, как все легко экспортировать или импортировать. А что делать, если нам дали пачку XSD-схем со сложным взаимосвязями и изменять мы них не можем, а работать и поддерживать актуальность схем надо?
Читать дальше →

YML (Yandex Market Language) — Генерация файла товаров для Яндекс Вебмастер

Время на прочтение2 мин
Количество просмотров41K
Недавно я заметил что в Yandex Webmaster появился новый есть раздел, он называется «Товары и цены». Там я увидел как можно бесплатно улучшить в выдаче яндекса, страницы товаров магазина.

yandex

Так как я разрабатываю сейчас интернет магазин, такая возможность показалось очень заманчивой.
Читать дальше →

Генерация автоматических тестов: Excel, XML, XSLT, далее — везде

Время на прочтение7 мин
Количество просмотров16K

Проблема


Есть определенная функциональная область приложения: некая экспертная система, анализирующая состояние данных, и выдающая результат — множество рекомендаций на базе набора правил. Компоненты системы покрыты определенным набором юнит-тестов, но основная «магия» заключается в выполнении правил. Набор правил определен заказчиком на стадии проекта, конфигурация выполнена.
Более того, поскольку после первоначальной приемки (это было долго и сложно — потому, что “вручную") в правила экспертной системы регулярно вносятся изменения по требованию заказчика. При этом, очевидно, неплохо — бы проводить регрессионное тестирование системы, чтобы убедиться, что остальные правила все еще работают корректно и никаких побочных эффектов последние изменения не внесли.

Основная сложность заключается даже не в подготовке сценариев — они есть, а в их выполнении. При выполнении сценариев “вручную", примерно 99% времени и усилий уходит на подготовку тестовых данных в приложении. Время исполнения правил экспертной системой и последующего анализа выдаваемого результата — незначительно по сравнению с подготовительной частью. Сложность выполнения тестов, как известно, серьезный негативный фактор, порождающий недоверие со стороны заказчика, и влияющий на развитие системы («Изменишь что-то, а потом тестировать еще прийдется… Ну его...»).

Очевидным техническим решением было бы превратить все сценарии в автоматизированные и запускать их регулярно в рамках тестирования релизов или по мере необходимости. Однако, будем ленивыми, и попробуем найти путь, при котором данные для тестовых сценариев готовятся достаточно просто (в идеале — заказчиком), а автоматические тесты — генерируются на их основе, тоже автоматически.

Под катом будет рассказано об одном подходе, реализующим данную идею — с использованием MS Excel, XML и XSLT преобразований.
Читать дальше →