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

XML *

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

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

Python meetup — 2 года

Время на прочтение2 мин
Количество просмотров11K
Python Meetup Minsk Всем привет!
В июне Python Meetup исполнилось 2 года. Чтобы отметить это, мы собрались в субботу 27 июня и провели весь день вместе, общаясь и слушая доклады. Речь шла о:
  • Оптимальном наименовании переменных
  • Безопасном запуске чужого кода на своем компьютере
  • Использовании Jenkins в тестировании игр
  • Парном удаленном программировании
  • Объектной подсистеме Python


Записи выступлений под катом. Хорошего просмотра!
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии11

Шаблоны проектирования XSD

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


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

Сегодня хочу поговорить о том, какие есть шаблоны проектирования XSD, о преимуществах и недостатках каждого, и почему мы для своих задач выбрали «Райский сад».
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии4

Новые операторы в Blogger

Время на прочтение1 мин
Количество просмотров2.9K
Как сообщает Blogger Buzz, в движок блогохостинга Blogger была добавлена поддержка нескольких новых операторов, с помощью которых можно более тонко настроить внешний вид отдельных страниц при написании собственного шаблона.


Если раньше были доступны лишь операции сложения и сравнения с многоуровневыми условиями if...else, то теперь доступны следующие выражения.
Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Комментарии0

Импорт данных из YouTube и Vimeo в Google.Docs

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

UPDATE (12 мая 2015):


Вынужден сообщить, что с 1 мая 2015 года данные устарели. Youtube поменял правила работы API: теперь невозможно осуществлять анонимные запросы. Для получения данных необходим Authorization API-key.


Предыстория


Совсем недавно у нас случилась ситуация, когда «потерялись» все YouTube и Vimeo ссылки на ролики, количество просмотров которых нам необходимо выводить на сайте. Это нужно, чтобы потенциальные инвесторы и партнеры видели, какие текущие показатели у наших сериальных проектов. Скрипт обновляет данные раз в сутки, хотя я неоднократно просил сделать обновление показателей в реальном времени. Я много лет не программирую, ушел в совершенно иной вид деятельности и в настоящий момент возглавляю анимационную студию. Конечно же, я был обескуражен возникшей ситуацией с потерей данных, устроил разнос и прочее, но это к делу отношения не имеет.

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

Подробности
Всего голосов 23: ↑22 и ↓1+21
Комментарии7

Истории

Поддержка DOM L3 XPath в Project Spartan

Время на прочтение5 мин
Количество просмотров8.1K
Примечание от переводчика: я серверный Java-программист, но при этом так исторически сложилось, что работаю исключительно под Windows. В команде все сидят в основном на Mac или Linux, но кто-то же должен вживую тестировать веб-интерфейсы проектов под настоящим IE, кому как не мне? Так что я уже довольно много лет использую его и по рабочей необходимости, и — в силу лени — в качестве основного браузера. По-моему, с каждой новой версией, начиная с девятой, он становится всё более и более достойным, а Project Spartan и вовсе обещает быть отличным. По крайней мере, в технологическом плане — на равных с другими. Предлагаю вашему вниманию перевод статьи из блога разработчиков, дающей некоторые основания на это надеяться.
image

Обеспечивая совместимость с DOM L3 XPath


Поставив перед собой задачу обеспечить в Windows 10 по-настоящему совместимую и современную веб-платформу, мы постоянно работаем над улучшением поддержки стандартов, в частности, в отношении DOM L3 XPath. Сегодня нам хотелось бы рассказать, как мы этого добились в Project Spartan.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии7

Способы передачи финансовых данных #2: протокол FAST

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

В одном из прошлых топиков мы рассмотрели протокол FIX, который был создан для передачи финансовой информации и автоматизации коммуникаций на фондовом рынке. Однако этот протокол оказался не самым идеальным инструментом в условиях все увеличивающихся объёмов финансовых данных, поэтому в качестве его развития был создан новый стандарт — протокол FAST (FIX Adapted for STreaming). Сегодня мы поговорим об этой технологии.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии15

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

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



В статье «Анатомия шаблонов Blogger» вопрос настройки нестандартного шаблона для работы с дизайнером шаблонов был опущен автором, поэтому я решил восполнить этот пробел.
Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии4

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

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


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

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

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

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

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

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

Осторожно! Данное решение имеет существенный недостаток, который выражается в высокой загрузке процессора (около 25%). Происходит это только во время загрузки файла, около 1-2 секунд, потом все возвращается в норму.
Читать дальше →
Всего голосов 99: ↑78 и ↓21+57
Комментарии73

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

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

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

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

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

Звучит весьма вкусно, но реальность, как всегда, больно-больно ударяет по самым незащищенным местам
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии26

Как я подружил 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, и все (по крайней мере мне надоело искать информацию на офф сайте).
Читать дальше →
Всего голосов 5: ↑3 и ↓2+1
Комментарии0

Много-файловое хранилище 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;
	}
}

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

Читать дальше →
Всего голосов 19: ↑9 и ↓10-1
Комментарии3

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

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

Введение


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

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

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


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

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

Читать дальше →
Всего голосов 11: ↑5 и ↓6-1
Комментарии11

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

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

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

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

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

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

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

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

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

Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии9

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

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

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

Читать дальше →
Всего голосов 83: ↑79 и ↓4+75
Комментарии10

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

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

Вступление


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

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

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

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