Как известно MS Excel последних версий поддерживает описание структуры документа в формате xml. Это обстоятельство позволяет создавать отчеты в Excel с помощью генерации xml-файлов. В СУБД Caché существует несколько способов создания xml. В этой статье будут рассмотрены два, возможно наиболее удобных, способа эффективной программной генерации отчетов в MS Excel: с помощью Zen Reports и с использованием класса %XML.Writer.
Читать полностью »
Рубрика «XML» - 14
Zen Reports и %XML.Writer для генерации отчётов Excel в Caché
2012-12-26 в 15:14, admin, рубрики: cache, Excel, intersystems cache, reports, XML, zen, Блог компании InterSystems, отчеты, метки: cache, Excel, InterSystems cache, reports, XML, zen, отчетыСохранение игры в Unity3D
2012-12-18 в 18:47, admin, рубрики: game development, serialization, unity3d, XML, метки: c++, serialization, unity3d, XML Если вы пишете не казуалку под веб и не беспощадный суровый рогалик, без сохранения данных на диск не обойтись.
Как это делается в Unity? Вариантов тут достаточно — есть класс PlayerPrefs в библиотеке, можно сериализовать объекты в XML или бинарники, сохранить в *SQL*, можно, в конце-концов, разработать собственный парсер и формат сохранения.
Рассмотрим поподробнее с первые два варианта, и заодно попробуем сделать меню загрузки-сохранения со скриншотами.
Будем считать, что читающий дальше базовыми навыками обращения с этим движком владеет. Но при этом можно не подозревать о сущестовании в его библиотеке PlayerPrefs, GUI, и ещё в принципе не знать о сериализации. С этим всем и разберёмся.
А чтобы эта заметка не стала слишком уж увлекательной и полезной, ориентирована она самый неактуальный в мобильно/планшетно/онлайновый век вариант — сборку под винду (хотя, конечно, более общих моментов достаточно).
- Кстати, пару недель назад на Хабре была статья, где автор упомянул, что Unity3D проходят в курсе компьютерной графики на кафедре информатики питерского матмеха. Занятный факт, немало говорящий о популярности движка.
Хотя насколько это в целом хорошая идея — на мой взгляд, тема для дискуссии. Может быть, обсудить это было бы даже интереснее вопросов сериализации =)
Простые стейт-машины на службе у разработчика
2012-11-26 в 10:08, admin, рубрики: framework, FSM, GoF, KISS, reflection, XML, конечный автомат, Программирование, метки: c++, framework, FSM, GoF, kiss, reflection, XML, конечный автоматПредставьте на минутку обычного программиста. Допустим, его зовут Вася и ему нужно сделать анимированную менюшку на сайт/десктоп приложение/мобильный апп. Знаете, которые выезжают сверху вниз, как меню у окна Windows или меню с яблочком у OS X. Вот такое.
Начинает он с одного выпадающего окошка, тестирует анимацию, выставляет ease out 100% и наслаждается полученным результатом. Но вскоре он понимает, что для того, чтобы управлять менюшкой, хорошо бы знать закрыто оно сейчас или нет. Мы-то с вами тут программисты опытные, все понимаем, что нужно добавить флаг. Не вопрос, флаг есть.
var opened = false;
Вроде, работает. Но, если быстро кликать по кнопке, меню начинает моргать, открываясь и закрываясь не успев доанимироваться в конечное состояние. Вася добавляет флаг animating. Теперь код у нас такой:
var opened = false;
var animating = false;
function onClick(event) {
if (animating) return;
if (opened) close();
else open();
}
Через какое-то время Васе говорят, что меню может быть полностью выключено и неактивно. Не вопрос! Мы-то с вами тут программисты опытные, все понимаем, что… нужно добавить ЕЩЕ ОДИН ФЛАГ! И, всего-то через пару дней разработки, код меню уже пестрит двустрочными IF-ами типа вот такого:
if (enabled && opened && !animating && !selected && finishedTransition && !endOfTheWorld && ...) { ... }
Вася начинает задаваться вопросами: как вообще может быть, что animating == true и enabled == false; почему у него время от времени все глючит; как тут вообще поймешь в каком состоянии находится меню. Ага! Состояния... О них дальше и пойдет речь.
Знакомьтесь, это Вася.
Работа с файлами .plist в Cocoa/CocoaTouch
2012-11-15 в 8:28, admin, рубрики: iOS, mac os x, osx, XML, разработка под iOS, метки: iOS, mac os x, osx, XMLВсем доброго хабрадня!
Сегодня я бы хотел рассказать о некоторых аспектах сохранения настроек и прочих данных программы в OS X и/или iOS. Как обычно, у нас есть несколько вариантов: Core Data, «голый» SQLite, свои бинарные форматы, свои текстовые форматы, NSUserDefaults и, как Вы уже наверняка слышали, файлы типа PLIST, то есть XML Property List.
Вкратце, plist-файлы представляют из себя обычный XML, но с некоторыми оговорками. К примеру, порядок тегов в нём обусловлен некоторыми правилами: они идут парами «ключ-значение», но теги типа «ключ» и теги типа «значение» располагаются на одном уровне. Типичный пример:
<key>identifier</key>
<string>j3qq4-h7h2v</string>
Плисты умеют хранить основные типы данных Cocoa: NSString, NSNumber (int, float, BOOL), NSDate, NSArray, NSDictionary и NSData. Этим типам соответствуют следующие теги: <string>, <integer>, <real>, <true/>, <false/>, <date>, <array>, <dict>, <data>
. Собственно, plist состоит из тегов <key>
, за которыми следуют перечисленные теги со значением.
Под катом — описание дополнительных ограничений и, что самое главное, API для работы с такими файлами.
Читать полностью »
XMPP для самых маленьких
2012-09-14 в 3:54, admin, рубрики: irc, jabber, XML, xmpp, Программирование, метки: irc, jabber, xmppДорогой дневник,
IRC отмирает, — кто-то уходит в социальные сети с концами, кто-то сменяет IRC на Jabber. На протяжении 6 лет моим хобби было написание mIRC бота (это как Emacs, только чат, но с таким же потенциалом для обвешивания его разным функционалом), но каналы опустели и теперь стало писать не для кого.
А писал я, позвольте похвастаться, многое — реализации HTTP, FTP, IRC серверов, Feed агрегатор, игры для IRC, и просто различные утилиты, которые выполняли рутинную задачу и делали жизнь легче. Все это — на чистом mIRC Scripting Language.
С потерей популярности IRC я не хочу отказываться от чатов и тоже перешел на Jabber, но в конференциях без своего бота, который предоставляет кучу полезных фич и развлекает посетителей — совсем не то. Поэтому я решил написать реализацию XMPP клиента, и для тех, кому это тоже может быть полезно — сделал шпаргалку, с описанием основных команд. По ней вы, используя любой любимый ЯП, в котором нет библиотек для XMPP, — да даже просто используя telnet, сможете сидеть в Jabber'е. Сравнивать я буду с IRC.Читать полностью »
Использование XML для генерации панели меню в Swing
2012-09-13 в 8:09, admin, рубрики: java, sax, swing, XML, Программирование, метки: java, sax, swing, XML Доброго времени суток, дорогие читатели.
Недавно столкнулся с проблемой создания панели меню — стандартной панели, которая присутствует почти в каждом мало-мальски функциональном UI. И не с той проблемой, что ее сложно создать, напротив, в Swing создание UI занятие довольно нетривиальное, большинство элементов интерфейса создаются в пару строк кода (это в равной степени касается и меню). А с проблемой создания многофункционального, сложного меню, которое выливается в невероятное количество кода, который в последствии не то чтобы сопровождать, а порой даже и читать невозможно.
Для хранения всего процесса генерации меню любой сложности, решил я прибегнуть к силе под названием XML. С его помощью можно описать меню, как мы хотим его видеть, а благодаря классу-утилите, который не приминем создать, наш XML будет распарсен и в итоге можно будет получить то, ради чего все это и затевается — меню любой сложности. Если вас это заинтересовало, добро пожаловать под хаброкат...Читать полностью »
Импортирование данных класификатора ОКАТО в базу MySql
2012-08-28 в 8:44, admin, рубрики: mysql, XML, импорт данных, Программирование, метки: mysql, XML, импорт данныхВозникла у меня необходимость добавить к моему приложению справочники с регионами России и городами. Первая идея которая меня посетила это поискать готовые файлы XML с регионами и городами в интернете, и в случае успеха импортировать данные в мои таблицы. Оптимизма поубавилось когда я начал искать. Конечно никто для меня специально не готовил эти данные, но это и не удивительно. Имея уже однажды опыт импортирования данных из КЛАДР в SqlServer, в структуру отличную от КЛАДР, я решил что придется снова повторить подвиг и организовывать импорт из КЛАДР в мою структуру. Я прекрасно помнил и тот факт что в КЛАДР данные хранятся в таблицах DBF, а импортировать данные Читать полностью »
Слить два xml, чтобы добавить кнопку в панель быстрого доступа Microsoft Office 2010
2012-07-26 в 13:43, admin, рубрики: linqtoxml, XML, системное администрирование, метки: linqtoxmlИногда бывает необходимо всем пользователям вашей корпоративной сети добавить какую-нибудь кнопку в панель быстрого доступа Outlook. Например, кнопку «Изменить сообщение».
К счастью, в Microsoft Office 2010 настройки панели быстрого доступа хранятся в XML-файлах с расширением *.officeUI, которые лежат в %appdata%/Microsoft/Office. У меня %appdata% — это папка «C:/users/user_name/AppData/Local/».
Поэтому для того, чтобы осчастливить всех пользователей, нужно у каждого на его компьютере заменить соотв. файл на нужный.
Формат *.officeUI файлов описан в статье Deploying a Customized Ribbon and Quick Access Toolbar in Office 2010…
XML-сериализация для деплоймента начальных данных в Caché. Часть I
2012-07-24 в 5:40, admin, рубрики: cache, dbms, deployment, intersystems, intersystems cache, XML, Блог компании InterSystems, деплоймент, Программирование, сериализация, метки: cache, dbms, deployment, InterSystems, InterSystems cache, XML, деплоймент, сериализация
Думаю, не преувеличением будет сказать, что почти каждый разработчик информационной системы сталкивается с задачей формирования начальных данных при внедрении.
У Caché-разработчиков есть несколько стандартных подходов к инициализации начальных данных:
- загрузка данных для классов-справочников из внешних файлов,
- получение данных из онлайн-сервисов,
- импорт статических данных из файлов-глобалов,
- выполнение методов класса, создающих начальные данные из “зашитых” в код данных.
Для инициализации статических данных, небольших справочников или каких-либо конфигурационных данных системы, есть еще один способ, о котором пойдет речь в статье.
Читать полностью »
Структура данных проекта OpenStreetMap, заглянем под юбку сервису
2012-06-25 в 15:54, admin, рубрики: OpenStreetMap, OSM, XML, метки: OpenStreetMap, OSM, XMLПролог
Проект OpenStreetMap (OSM) открытых геоинформационных данных под свободной лицензией CC-BY-SA (а в скором времени под Open Database Licence) известен достаточно широко, что бы не тратить время на его подробное представление. Главной особенностью проекта и его основным преимуществом по сравнению с любыми другими аналогами являлся принцип полностью открытых географических данных, которые могут быть использованы кем угодно и и как угодно (в рамках лицензи CC-BY-SA) и могут свободно дополняться и уточняться любым участником проекта. Как и любые другие данные, географические данные точно так же подлежат структурированию при хранении и обработке. В данной статье я постараюсь описать основные части структуры данных OSM остановившись больше на принятых типах данных и представлении их в пространственном виде. Работая постоянно с данными проекта OSM очень часто приходится уточнять или пояснять не которые базовые аспекты, поэтому возникла необходимость кратко изложить их в виде одного текста.
Читать полностью »