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

XML *

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

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

Дизайнер шаблонов Blogger

Время на прочтение6 мин
Количество просмотров9.2K
Как вы, может быть, знаете, у компании Google есть собственная блоговая платформа под названием Blogger. Её отличительной особенностью среди подобных сервисов является доступ к редактированию шаблона, где с внешним видом и компоновкой блога можно делать всё что угодно. У тех, кто не знает HTML/CSS/JS, возможность создать свой стиль появилась лишь после анонса дизайнера шаблонов. Однако корректно этот редактор работает лишь со стандартными шаблонами, коих не так много.



В статье «Анатомия шаблонов Blogger» вопрос настройки нестандартного шаблона для работы с дизайнером шаблонов был опущен автором, поэтому я решил восполнить этот пробел.
Читать дальше →

Разработка документации при помощи DocBook

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


Так уж сложилось, что в наших проектах ведение технической документации полностью лежит на плечах разработчиков, по принципу: внес изменения в код проекта — актуализировал документацию. Сама документация представляла собой набор Word’овских документов, которая хранилась вместе с исходным кодом под VCS. Данный подход к организации разработки существовал долгое время, но пару лет назад мы решили озаботиться возможностью ведения документации проекта отличными от MS Office средствами.
Читать дальше →

Хитрый способ создания анимированного jpeg'а

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

Сегодня с успехом осуществил свой эксперимент по сжатию гифок. Меня давно уже раздражает отсутствие специального формата для сжатия анимированных файлов. Как так, gif есть, а анимированного jpeg нет, хотя для большинства существующих гифок подходит именно jpeg.

От существующих решений, мое отличается тем, что это один файл svg, который можно вставить на страницу через тэг

Под хабракатом находится сжатая версия вот этой гифки tfirma.name/public/leprosorium.ru/cosss_gif/0004w00e.gif
Оригинал весит 6 мегабайт, сжатая версия — 1,3 мегабайта.

Осторожно! Данное решение имеет существенный недостаток, который выражается в высокой загрузке процессора (около 25%). Происходит это только во время загрузки файла, около 1-2 секунд, потом все возвращается в норму.
Читать дальше →

BaseX. Неизвестная NoSQL Вселенная

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

Далеко-далеко, где-то на краю Галактики, я обнаружил весьма впечатляющее NoSQL решение…

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

Маркетинговая затравка от авторов звучит примерно так:
BaseX является очень легковесной, высокопроизводительной и масштабируемой XML базой данных с XPath/XQuery 3.0 процессором, который имеет полную поддержку W3C Update и Full Text спецификаций. Интерактивный и дружественный графический интерфейс позволяет легко изучать ваши XML документы

Звучит весьма вкусно, но реальность, как всегда, больно-больно ударяет по самым незащищенным местам
Читать дальше →

Как я подружил Quickbooks и PHP сайт с помощью Web Connector'а

Время на прочтение9 мин
Количество просмотров14K
Как-то однажды понадобилось клиенту интеграция Quickbooks (далее QB) и сайта, который мы ему и делаем. Первый вопрос который у меня возник по этому поводу: "Что такое QB, и можно ли вообще это реализовать?".

Немного погуглив я нашел то что искал. Quickbooks — это бухгалтерская программа для малого бизнеса (основной рынок использования США). Это что-то типа 1С но только с нормальным GUI и некоторыми прикольными плюшками. QB — это приложение, которое пользователь ставит у себя на компе (only for Windows) и с помощью пару кликов, разворачивает себе компанию в которой ведет бухгалтерию.

Ладно, теперь я, хотя бы, знаю своего врага в лицо, одной проблемой меньше. Что касается интеграции то тут все немного сложнее. С чем можно интегрировать QB вы можете посмотреть здесь. Что же мы там видим:

  • .NET SDK
  • Java SDK
  • PHP SDK (Coming Soon)
  • Windows Azure SDK
  • QuickBooks QBXML v12 SDK (но on desktop scenarios only)


Мда, PHP SDK (Coming Soon) — последняя надежда… Я почти отчаялся, но меня спасло это. Что же эта за штука такая — Web Connector? На офф сайта по этому есть небольшая страничка, на которой предлагают скачать QuickBooks Web Connector Programmer's Guide, и все (по крайней мере мне надоело искать информацию на офф сайте).
Читать дальше →

Много-файловое хранилище Java объектов в формате xml (часть 2)

Время на прочтение4 мин
Количество просмотров5.7K
Первый пост по теме: Много-файловое хранилище Java объектов в формате xml (часть 1)

Введение


Поскольку прошло немало времени и библиотека изменилась, то решил продолжить описание и осветить некоторые моменты. Огромное спасибо пользователям за конструктивную критику, которая надеюсь помогла повысить usability.
Первое, что хотелось бы отметить, так это то, что из основного фасадного класса XmlDataStore была убрана группа методов для работы с root объектами. Теперь разделение объектов на корневые и остальные отсутствует.

Интерфейс IXmlDataStoreIdentifiable


Поскольку, при обсуждении первой версии было правильно подмечено, что методы getId() и setId() могут быть использованы разработчиками модели данных в каких-то своих целях и необязательно они будут работать с типом java.lang.String, то название методов изменилось на getDataStoreId() и setDataStoreId(). И интерфейс соответственно выглядит следующим образом:
public interface IXmlDataStoreIdentifiable {
	String getDataStoreId();
	void setDataStoreId(String dataStoreId);
}

Также был добавлен абстрактный класс, реализующий этот интерфейс:
public abstract class AbstractXmlDataStoreIdentifiable
		implements IXmlDataStoreIdentifiable {
	
	private String	dataStoreId;
	@Override
	public String getDataStoreId() {
		return dataStoreId;
	}
	@Override
	public void setDataStoreId(final String dataStoreId) {
		this.dataStoreId = dataStoreId;
	}
}

Наследоваться можно как от интерфейса, так и от абстрактного класса.

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

Много-файловое хранилище Java объектов в формате xml

Время на прочтение11 мин
Количество просмотров11K
Много-файловое хранилище Java объектов в формате xml (часть 2)

Введение


В программировании часто перед нами встают задачи, которые мы можем решить несколькими путями: найти и использовать уже готовые решения, или же решать задачу самостоятельно. Хоть и написано множество спецификаций и их реализаций, они не всегда дают нам то, что требуется в конкретном случае. Вот и мне в очередной раз пришлось столкнуться с подобной ситуацией.
Задача состояла в хранении объектов в файле в формате xml. Ничего казалось бы сложного, если бы не несколько «но». Объектов много, имеют они древовидную структуру и над ними постоянно выполняются операции добавления, изменения и удаления в разных потоках. Как вы понимаете постоянные запись и чтение большого xml файла довольно трудоемкая задача. Тем более если с одними и теми же данными работают несколько потоков. Так собственно и родилась идея написать много-файловое хранилище объектов в формате xml.
В этой статье я не буду рассматривать саму реализацию. Приведу лишь основные идеи и как использовать эту реализацию. Если вы хотите углубиться, то можете скачать посмотреть исходные коды.

Исходники доступны по ссылке: xdstore-1.3
Исходные тексты немного отличаются от приведенных в этой статье. В них были глубже проработаны исключительные ситуации, а именно, — для каждой операции, включая чтение, выбрасывается свое исключение. Также в последней версии реализована фрагментация.

Основная идея разработки


Главная идея заключается в том, чтобы объекты хранить не в одном файле, а в некотором множестве. При этом предоставить возможность настраивать политики хранения для каждого требуемого класса. Для класса можно установить одну из следующих политик:
  • ParentObjectFile – объекты класса будут сохраняться в файле объекта владельца как дочерние элементы, эта политика применяется по умолчанию;
  • SingleObjectFile – каждому объекту класса предоставляется отдельный файл, а в файле объекта владельца будет сохранена лишь ссылка на этот объект (в дальнейшем буду просто называть ее объектной ссылкой); все файлы каждого объекта будут сохраняться в отдельной папке внутри хранилища;
  • ClassObjectsFile – все объекты этого класса будут храниться в отдельном файле, а в файлах объектов владельцев будут сохранены лишь объектные ссылки.

Под понятием объектной ссылки понимается объект указанного класса, у которого проставлено одно поле – идентификатор. В xml файле вместо полных данных этого объекта сохраняется лишь имя класса и идентификатор, чтобы в дальнейшем по этой ссылке можно было получить все данные. Загрузка таких объектов подобна поздней инициализации в hibernate.
Сохраняемые объекты должны быть реализованы как JavaBeans с методами get(is) и set для сохраняемых полей.

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

JAXB и XSLT с использованием StAX

Время на прочтение5 мин
Количество просмотров21K
В одном из проектов понадобилось обрабатывать большие XML файлы, от сотен мегабайт до десятков гигабайт.
Причем выдернуть надо было только некоторые тэги с расположенные на различной «глубине». XSLT «в лоб» ломался от недостатка памяти. Пришлось подумать и вспомнить о потоковом парсере.
Далее

Использование dynamic для быстрого создания Xml

Время на прочтение2 мин
Количество просмотров5.6K
Не так давно разрабатывал функционал, формирующий по некоторому алгоритму разнообразный xml.
Логично, что при написании первого же теста возник традиционный вопрос ленивого программиста: как сэкономить себе силы, а читающим тесты нервы и быстро и наглядно представить, что же я хочу получить?
Поэтому придумал такой вот способ:
Читать дальше →

Самый быстрый SAX-парсер для python

Время на прочтение2 мин
Количество просмотров20K
Внезапно захотелось пересчитать все xml-теги в 240 тысячах xml-файлов общим весом 180 GB. Питоном — и побыстрее.
Читать дальше →

NoSQL СУБД MarkLogic — краткий обзор

Время на прочтение3 мин
Количество просмотров11K
Цель данной статьи — познакомить читателей хабра с NoSQL-СУБД MarkLogic (ML). Беглый поиск показывает, что в среде русскоговорящих айтишников она малоизвестна. Данным обзором я попытаюсь исправить эту ситуацию.

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

Как сделать бомбу из XML

Время на прочтение5 мин
Количество просмотров43K
В рассылке oss-security было опубликовано обсуждение различных уязвимостей, связанных с разбором XML. Уязвимостям подвержены приложения, которые разрешают библиотекам обрабатывать именованные и внешние сущности в DTD, встроенном в XML-документ, полученный из недоверенного источника. Т.е. по сути — приложения, не изменяющие настроек парсера по умолчанию.

Примеры XML-бомб под катом. Если у вас есть приложения, обрабатывающие XML, вы можете самостоятельно проверить их на предмет наличия уязвимостей. Проверка бомб в этом посте производится на примере утилиты xmllint, входящей в комплект поставки библиотеки libxml2, но можно использовать и другие синтаксические анализаторы.

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

Анатомия шаблонов Blogger

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

Вступление


В Сети, как оказалось, не так уж и много информации относительно того, как создавать свои собственные темы оформления для блоговой платформы от Google, во всяком случае, в Рунете. Есть какие-то куцые посты про то, как настроить отдельное свойство конкретного виджета, да и только. Посему, в этой статье я решил консолидировать знания на данную тему.
Читать дальше →

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

Zen Reports и %XML.Writer для генерации отчётов Excel в Caché

Время на прочтение25 мин
Количество просмотров6.4K
Как известно MS Excel последних версий поддерживает описание структуры документа в формате xml. Это обстоятельство позволяет создавать отчеты в Excel с помощью генерации xml-файлов. В СУБД Caché существует несколько способов создания xml. В этой статье будут рассмотрены два, возможно наиболее удобных, способа эффективной программной генерации отчетов в MS Excel: с помощью Zen Reports и с использованием класса %XML.Writer.
Читать дальше →

Простейшее голосовое меню на Cisco VoiceXML

Время на прочтение5 мин
Количество просмотров23K
Неподготовленному человеку, который захочет написать самое простецкое голосовое меню с использованием языка VoiceXML на голосовом шлюзе от компании Cisco, предстоит наступить на множество граблей. Некоторые из них я отмечу в этой статье. Вполне возможно, что какой-нибудь Cisco-специалист фыркнет и скажет, что это всё элементарщина, но тем не менее, когда передо мной встала эта задача, я не знал с чего начать. Google не давал сколько-нибудь толковых примеров готовых IVR. Единственной более-менее хорошей исходной точкой послужила эта статья. Мой хабравопрос также не дал особых результатов. Но отбросим лирику и перейдем к делу. Предположим, что у нас есть голосовой шлюз Cisco, поддерживающий выполнение скриптов на языке VoiceXML (например, Cisco 3925). Будем разрабатывать голосовое меню, показанное на картинке. В рабочие часы будет воспроизводиться приветствие и звонок будет переводиться на заданный внутренний номер, в нерабочее и выходные — специальное объявление, что, мол, звоните по будням.

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

XML-сериализация для развёртывания начальных данных в Caché. Часть I

Время на прочтение5 мин
Количество просмотров4.9K
image
Думаю, не преувеличением будет сказать, что почти каждый разработчик информационной системы сталкивается с задачей формирования начальных данных при внедрении.
У Caché-разработчиков есть несколько стандартных подходов к инициализации начальных данных:

  • загрузка данных для классов-справочников из внешних файлов,
  • получение данных из онлайн-сервисов,
  • импорт статических данных из файлов-глобалов,
  • выполнение методов класса, создающих начальные данные из “зашитых” в код данных.

Для инициализации статических данных, небольших справочников или каких-либо конфигурационных данных системы, есть еще один способ, о котором пойдет речь в статье.
Читать дальше →

Запрос номера из реестра «Россвязи»

Время на прочтение2 мин
Количество просмотров24K
Доброго времени суток!
Давно искал инструмент, чтобы быстро можно было узнать принадлежность того или иного телефонного номера к тому или иному оператору связи и/или региону.

Всегда использовал для этих задач МТТ, чего, в принципе всегда хватало.
Но хотелось чего-то ещё более простого и быстрого.

Если Вас также как и меня интересовало что-то подобное, прошу под кат.
Читать дальше →

Случайная сортировка и вывод случайных элементов в XSLT

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

Вступление


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

Изначально была задача сделать сортировку под PHP-ный XSLT процессор. Но захотелось сделать что-то более универсальное.

Опытный образец


Для начала нам понадобиться образец для тестирования сортировки. Не будем заниматься хитросплетениями и напишем просто.

Файл данных data.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="view.xsl"?>
<root>
<item id="1"/><item id="2"/><item id="3"/><item id="4"/><item id="5"/><item id="6"/><item id="7"/><item id="8"/><item id="9"/><item id="10"/>
</root>

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

Визуальный XML редактор Syntext Serna

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

Введение

С тех далеких времен как был изобретен язык разметки XML, он успел проникнуть во все сферы нашей повседневной компьютерной жизни. Мы его уже практически не замечаем; или по крайней мере старательно делаем вид. Вот тут он используется для хранения конфигурационных данных, а здесь он используется для удаленного вызова процедур (XML RPC). А вот тут он уже во всю стал основой для XHTML.

Эти три буквы, изменившие мир, можно любить или ненавидеть. Но есть, как минимум, одна область IT, в которой XML произвел не только переворот сравнимый по масштабности с революцией, но и стал его непоколебимым фундаментом. Я говорю о создании и поддержке документации.

Вы же ведь слышали о DocBook или fb2, не так ли?

Внимание: в статье присутствует графический материал.

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

XSD — умный XML

Время на прочтение3 мин
Количество просмотров568K
XSD — это язык описания структуры XML документа. Его также называют XML Schema. При использовании XML Schema XML парсер может проверить не только правильность синтаксиса XML документа, но также его структуру, модель содержания и типы данных.

Такой подход позволяет объектно-ориентированным языкам программирования легко создавать объекты в памяти, что, несомненно, удобнее, чем разбирать XML как обычный текстовый файл.

Кроме того, XSD расширяем, и позволяет подключать уже готовые словари для описания типовых задач, например веб-сервисов, таких как SOAP.

Стоит также упомянуть о том, что в XSD есть встроенные средства документирования, что позволяет создавать самодостаточные документы, не требующие дополнительного описания.

Рассмотрим в качестве примера XSD документ, описывающий часть структуры аккаунта на хабре.



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