Как стать автором
Обновить
2

XML *

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

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

Работаем с XML как с массивом, версия 2

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

Всем привет.

Хочу поделиться с вами опытом в парсинге XML файлов размером до четырёх гигабайт. Что бы это происходило быстро, мы читаем файл последовательно, частями, парсим только нужные нам элементы.

В двух словах для быстрого парсинга файлов надо пользоваться XMLReader в связке с yield.

О моей реализации этой связки читайте ниже.

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии31

Как я участвовал в создании информационных систем для медицины

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

В 1987-м году я окончил с красным дипломом приборостроительный факультет челябинского политехнического института по специальности "Автоматика и телемеханика", хотя планировал стать физиком-теоретиком и школу заканчивал в специализированной школе-интернате №18 при МГУ. По распределению попал в специализированное конструкторское бюро и до 1991-го года разрабатывал электронные блоки для бронетанковой техники. До сих пор считаю что полученная при этом инженерная школа является чем-то недостижимым в современных реалиях. В частности, мы с коллегами создали комбинированный аналого-цифровой программируемый комплекс, который в реальном времени проводил расчеты по математической модели объекта, описываемой системой дифференциальных уравнений 4-го порядка с 14-ью нелинейными элементами и принимал решения более 10 тысяч раз в секунду. На современных вычислителях это наверное и можно было бы сделать, но в то время мы решали задачу имея в распоряжении только набор интегральных микросхем, самой крутой из которых была ПЗУ на 2 килобайта и всё наше творчество должно было уместиться в 9 литров объёма и работать в диапазоне температур от -40 до +85.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии12

Java. Работа с XML-документами

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

Привет, Хабр! Меня зовут Михаил, я SDET-специалист компании SimbirSoft. Я занимаюсь автоматизацией тестирования, в основном это работа с WEB и REST API, но на последнем проекте применял SOAP. Мне приходилось работать с сообщениями этого протокола, а именно:

— выполнять проверку наличия обязательных атрибутов и тегов SOAP сообщений;

— сравнивать содержание различных сообщений;

— вносить изменения или генерировать новые сообщения для исходящих запросов.

В своей статье я поделюсь несколькими способами работы с XML-документами. Материал будет полезен тем, кто впервые сталкивается  в работе из кода с подобными документами на Java.

Читать далее
Всего голосов 9: ↑7 и ↓2+5
Комментарии8

Парсинг XML в Golang

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

Актуальность XML в 2022 году была бы под вопросом, но все еще остается много legacy систем, которые могут предоставлять данные в этом формате, поэтому нам приходится с ним работать. XML популярен в travel индустрии. Например, GDS (международные системы бронирования, более подробно можно почитать в википедии) или информационная система Darwin ассоциации железнодорожных транспортных компаний Великобритании активно используют его. Поэтому, я надеюсь, что эта статья будет кому-то полезна. В ней рассмотрена пара подходов к парсингу xml в Golang: обычный и потоковый, пользовательский парсинг поля и работа с различными кодировками. Мы будем использовать пакет encoding/xml из стандартной библиотеки. Если вы уже работали c encoding/json, то будет много похожего, но некоторые различия все же есть.

Читать далее
Всего голосов 6: ↑3 и ↓30
Комментарии2

Истории

Custom View — разбиваем функционал

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

В этой статье пойдет речь о вынесении UI в отдельный блок, компоновкой стандартных элементов.

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

Основной пример будет рассмотрен на простой задаче когда нам необходим Switch в котором будет и текст и описание.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии2

Стартуем из 1С в Python

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

В 2022 модно уметь в Python. Я 1Сник, не гоняюсь за модой, но возникла задача. Клиент хотел обрабатывать XML файл УПД, полученный из «Мой склад» — убрать стартовые нули в тегах КодТов. Выбрал Python для скрипта и получил нужный результат за час!

Читать далее
Всего голосов 27: ↑4 и ↓23-19
Комментарии67

Humane API REST Protocol

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

Здравствуйте, меня зовут Дмитрий Карловский и я… как скульптор, отрезаю всё лишнее, чтобы оставить лишь самую мякотку, которая в наиболее лаконичной и практичной форме решает широкий круг задач. Вот лишь несколько спроектированных мною вещей:


  • MarkedText — стройный легковесный язык разметки текста (убийца MarkDown).
  • Tree — структурированный формат представления данных (убийца JSON и XML).

На этот же раз мы спроектируем удобный клиент-серверный API, призванный убрать кровавую пелену с глаз фронтендеров и стальные мозоли с пальцев бэкендеров..


HARP OData GraphQL
Architecture ✅REST ✅REST ❌RPC
Common uri query string compatible ⭕Back ✅Full
Single line query
Pseudo-static compatible ⭕Back ⭕Partial
Same model of request and response
File name compatible
Web Tools Friendly
Data filtering ⭕Unspec
Data sorting ⭕Unspec
Data slicing ⭕Unspec
Data aggregation ⭕Unspec
Deep fetch
Limited logic
Metadata query
Idempotent requests ✅Full ⭕Partial ❌Undef
Normalized response
Читать дальше →
Всего голосов 21: ↑10 и ↓11-1
Комментарии25

Как мы создаем модуль выверки данных на основе стандартов CIM и чем он может помочь российской электроэнергетике

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

В информационных системах российских распределительных сетей трудностей немало, одна из самых весомых — отсутствие достоверных данных о распределительной сети 0.4-20 кВ, важных для формирования обоснованной инвестиционной программы.

В СИГМЕ комплексные задачки любят. Поэтому отдел решений по автоматизации расчетов технических условий, чья работа напрямую зависит от достоверности данных, взялся за создание универсального инструмента для их выверки. И начали мы с разработки механизма загрузки и выгрузки данных с помощью конструктора на базе стандартов CIM (Common Information Model, electricity).

Команда работала над модулем выверки в рамках СИГМА СУС — решения нашей компании для управления распределительными электрическими сетями. Однако созданный конструктор и наши рекомендации будут полезны не только тем, кто занимается выверкой данных в распределительных электросетевых компаниях, но и тем, кто работает с показателями на других проектах.  

Обо всём по порядку
Всего голосов 6: ↑5 и ↓1+4
Комментарии8

Wix toolset: не так страшен черт, как Windows installer

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

В статье я хотел бы поделиться своим опытом написания инсталлятора для Windows с использованием инструмента Windows Installer XML Toolset (далее - Wix). К сожалению, несмотря на всю мощь данного инструмента, его использование сильно осложняется куцей документацией, старенькими кукбуками, вялыми ветками форумов и вытеснением .msi и .exe пакетов контейнеризацией. Однако, сегодня продолжают активно развиваться и создаваться программные продукты требующие развертывания на виндовой машине с использованием традиционных установочных пакетов.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии12

Android: как подружить ваше приложение с Google Ассистентом?

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

Многие из вас прекрасно знают, что такое Google Ассистент. Это голосовой помощник, подобный Siri, Алисе, Алексе и другим. Когда пользователь что-то говорит, Google Ассистент понимает это с помощью natural language understanding (NLU). NLU преобразует человеческую речь в специальную структуру данных, которую уже можно обработать.

У разработчиков Android есть возможность интегрировать NLU в свои приложения через специальный api, который называется App Actions. Точнее, существует два вида интеграции: мы можем получить и использовать Deep Link из речи пользователя или получить данные из приложения, не открывая его, и показать их прямо в Google Ассистенте через Slice.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии7

CSS в Oxygen XML для гуманитариев

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

Всем привет!

Меня зовут Татьяна и я старший технический писатель в компании Orion Innovation. В нашей уже немаленькой команде мы используем довольно обширный стэк инструментов и технологий, но наиболее востребованы и удобны в работе - XML-редакторы с поддержкой DITA архитектуры. Моя статья - для технических писателей. Особенно для тех из нас, кто, как и я, имеет гуманитарное образование. Для разработчиков, особенно фронтендеров, это может показаться элементарными вещами, но для техписов, возможно, будет полезной. 

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

Последний велосипедно-питоний бой с ошибками импорта  sqlite за 2 174 433 строчки. Часть 3

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

Замечание. Вся трилогия (часть 1 тутчасть 2 туто велосипедостроении с sqlite, xml, csv только для совсем маленьких Питоньих кодеров. Не для крутых кодеров, они умрут от скуки в нашем опусе и ничего нового не увидят. В третьей части заканчиваем все, что начали ранее.

Начинаем изыски причины и местонахождения ошибки.

Итак: правильный ответ: ошибки в коде нет. Ну точнее ошибка возникает при работе кода из-за ошибки данных в файлах. 

Чтобы убедиться, что это так, добавим в код обработку исключений.

Совсем немного поправим наш код, добавим обработку и вывод на печать исключений:

Читать далее
Всего голосов 8: ↑4 и ↓40
Комментарии7

Продолжаем велосипедостроение с Python, xml, csv, sqlite. Часть 2. Ищем и правим ошибки, пока не налетаем на…

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

Примечание. Как и первая часть эта тоже для совсем маленьких кодеров-велосипедостроителей на Питоне. Для прожженных кодеров будет скучно. Изначально хотели внести исправления сразу в первую статью по мере нахождения ошибок, но после некоторого раздумия решили, что это неудобно. Ошибки исчезнут совсем, а именно ошибки приносят максимальную пользу для начинающего кодера. А посему ошибки оставляем в первой части, а в этой начинаем от них избавляться.

окончание трилогии тут (часть 3): "Последний велосипедно-питоний бой с ошибками импорта sqlite за 2 174 433 строчки. Часть 3"

Читать далее
Всего голосов 1: ↑0 и ↓1-1
Комментарии2

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

Laconic POM для Maven: скрываем многословность pom.xml

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

Зачастую, одна из претензий к Maven - выбор многословного XML для описания проекта. Polyglot for Maven должен был решить эту проблему, но проект не "взлетел". Для буквального сокрытия этой проблемы существует IDEA-плагин Laconic POM.

Читать далее
Всего голосов 11: ↑9 и ↓2+7
Комментарии11

Построение простого flow в IBM App Connect (Integration Bus)

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

Make legacy great again.

Когда я только начинал работать на IBM Integration Bus, руководств по построению приложений я толком найти не мог, тем более на русском, в том числе и на Хабре. Пора это исправлять. Наша цель - построить простой сервис, который на вход будет принимать JSON с одной цифрой и возвращать её инкремент. Данное руководство работает как в десятой версии интеграционной шины, так и в одиннадцатой.

Читать далее
Рейтинг0
Комментарии4

Состоялся релиз Firefox 92

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

Состоялся релиз web-браузера Firefox 92, сообщает Techradar. Новая версия, как сообщают разработчики, обеспечивает пользователей усиленными протоколами защиты данных, исправлены мелкие недочеты и улучшена производительность браузера, а также разработчики продлили срок поддержки версий 78.14.0 и 91.1.0. 

Кроме этого, версия Firefox 93 перешла в стадию бета-тестирования, релиз которой намечен на 5 октября.

Основные нововведения Firefox 92:

- Появилась возможность автоматического проброса на HTTPS с использованием протокола HTTPS в DNS вместо HTTP-заголовка Alt-Svc (HTTP Alternate Services, RFC-7838), что позволяет серверу определять альтернативный способ обращения к сайту. При отправке DNS-запросов, помимо записей A и AAAA для определения IP-адресов, теперь также запрашивается DNS-запись HTTPS, через которую передаются дополнительные параметры установки соединения.

- Реализована поддержка корректного воспроизведения видео в полном цветовом диапазоне RGB.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии52

Парсим базу юриков ФНС (велосипедостроение с xml, csv, SQLite и Питоном)

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

Замечания: статья для совсем маленьких и крутым спецам по кодингу будет не интересно, лучше ее пропустить. В коде первым комментарием поставлена ссылка на расположение файла с этим кодом для удобства и простоты. Главная задача была получить результат в виде таблицы SQLite. Качество кода оцениваем как ниже среднего, но с заявкой на максимальную простоту. Код написан достаточно просто и без пояснений, но готовы исправиться, поясниться.

Вводная

Что хотим сделать: взять данные по юридическим лицам (ЮЛ) РФ за 2019 год (идентификаторы ЮЛ: наименование и ИНН(ЮЛ), оборот, расход) и положить в SQLite.

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии16

Кратко: запросы к API и разбор XML-ответов. Python

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

Этот пост предназначен в первую очередь для новичков в разработке, впервые столкнувшихся с необходимостью отправить post/get запросы к какому-нибудь API и проанализировать полученный в XML ответ. Постаралась собрать необходимы минимум в одном месте.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии7

Техническая документация и Agile: совместить несовместимое

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

Привет, меня зовут Татьяна, я — старший технический писатель в Центре разработки Orion Innovation. Недавно нам пришлось переводить в Agile крупный проект. Несколько Scrum-команд разработчиков, довольно обширный стэк документов, многие из которых устарели просто потому, что в каскадной разработке писатели не успевали их обновлять. Служба поддержки завалена жалобами от пользователей: «Но у вас же так написано, почему не работает?»

Сразу спойлер: интеграция техписов в Agile прошла успешно, хоть и не всегда гладко. Благодаря этому опыту, мы выработали несколько рекомендаций, которыми хочу поделиться.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии4

JSON. Вы человек или машина?

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

Недавно я переехал в Москву в квартиру без письменного стола.  Это было неловким, отягчающим непростую ситуацию обстоятельством: спального места тоже не было. В общем, я позвонил в IKEA и попросил привезти мне и то и другое.

Через пару дней мебель доставили. Я распаковал первую коробку, из нее вывалилась инструкция и у меня опустились руки: в ней наверняка пятьдесят разных языков, все мелким шрифтом, как книга заклинаний из Гарри Поттера. Но приглянувшись, в ней были только рисунки: два смешных чувачочка показывали как обращаться с деталями, как их вертеть, собирать и так далее. Уф, счастье! Я подумал о JSON и XML. IKEA молодцы они использовали универсальный язык жестов и картинов, понятный всем на свете.

Читать далее
Всего голосов 18: ↑7 и ↓11-4
Комментарии47

Вклад авторов