Сегодня я хочу продолжить описание процесса разработки новой версии Marmalade Framework. В этой части я расскажу о создании подсистемы загрузки конфигурации, поддерживающей формат описания, о котором я рассказывал ранее. Основной сложностью, с которой придется столкнуться на этом шаге, будет поддержка шаблонов (templates), в том числе и локальных.
Читать полностью »
Рубрика «json» - 20
Возрождение Framework-а (Загрузка)
2013-03-03 в 12:04, admin, рубрики: c++, dsl, json, marmalade, Разработка под android, разработка под iOS, метки: dsl, json, marmaladeВозрождение Framework-а (часть 2)
2013-02-22 в 7:53, admin, рубрики: game development, json, marmalade, Разработка под android, разработка под iOS, метки: json, marmalade Как я и обещал, продолжаю описание процесса разработки новой версии Marmalade Framework. Сегодня я расскажу об описаниях scopes и regions, позволяющих строить каркас приложения. Также я расскажу о том, как будут определяться и использоваться переменные и приберегу небольшой бонус напоследок.
Читать полностью »
Возрождение Framework-а (часть 1)
2013-02-21 в 7:11, admin, рубрики: game development, json, marmalade, метки: json, marmaladeВ процессе работы над арканоидом, стало становиться понятным, чего именно не хватает Marmalade Framework-у, разработанному ранее, в процессе создания значительно более простой игры. Выяснилось, что не хватает ему практически всего (именно поэтому я не смог его как либо использовать, работая над арканоидом).
Теперь, когда я готов начать обобщать полученный опыт, я приступаю к работе над следующей версией Framework-а. Как и прежде, цель этой разработки — облегчение выполнения рутинных операций при разработке 2D-игр с использованием инструментальной среды Marmalade, но теперь, основной упор будет сделан на декларативность. В идеале, в коде не должно оставаться никакой конкретики в отношении используемых ресурсов, позиционирования объектов на экране, локализации и т.п.
В этой статье не будет кода (именно поэтому я не помещаю ее в хабы разработки под iOS и Android). Сегодня, по совету crmMaster, я займусь проектированием.
Читать полностью »
Срочно обновляемся до Ruby on Rails 3.2.12, 3.1.11 и 2.3.17 во благо собственных нервов
2013-02-11 в 20:48, admin, рубрики: FIX, json, ruby, ruby on rails, security, информационная безопасность, метки: json, ruby, ruby on rails, security, патч
Доброго времени суток, дорогой читатель. Надеюсь, что ты читаешь этот короткий пост за своим утренним кофе, и тебе не пришлось творить экстренный деплой посреди ночи. Иначе — соболезную, и предлагаю тебе обновить свои Ruby on Rails приложения прямо сейчас.
Читать полностью »
Зачем Google добавляет while(1); к своим JSON-ответам?
2013-02-06 в 8:08, admin, рубрики: ajax, Google, javascript, json, информационная безопасностьЭто позволяет избежать CSRF/XSRF-атак (подделки межсайтовых запросов).
Рассмотрим следующий пример: допустим у Google есть URL вида http://gmail.com/json?action=inbox
, который возвращает 50 первых сообщений вашего почтового ящика в формате JSON. Злоумышленник, чей сайт находятся на другом домене, не может выполнить AJAX запрос, обратившись по данному URL, чтобы получить данные, ввиду same origin policy (правило ограничения домена). Но ничто не мешает злоумышленнику включить вышеуказанный URL на свою страницу с помощью тега <script>
.
Читать полностью »
Маленький отважный арканоид (часть 2 — YAML)
2013-01-20 в 14:57, admin, рубрики: android, iOS, json, marmalade, yaml, Разработка под android, разработка под iOS, метки: android, iOS, json, marmalade, yamlПродолжая рассказ про наш маленький (но очень отважный) arcanoid, я не могу не упомянуть о таком замечательном языке как YAML. Любая, даже самая простая, игра должна хранить массу данных, таких как: описание уровней, текущее состояние настроек, список достижений и т.п. Желательно, чтобы все это хранилось в понятном человеку и легко редактируемом виде. Традиционно, для этих целей используется XML, но он весьма многословен и его вряд-ли можно считать удобным для ручного редактирования.
YAML существенно лаконичнее, и сегодня, мы научимся им пользоваться.
Читать полностью »
Альтернативный WPF язык JAML = XAML − XML + JSON
2013-01-15 в 23:02, admin, рубрики: .net, json, wpf, XAML, XML, интерфейсы, Программирование, метки: .net, c++, json, wpf, XAML, XML На дворе наступал Новый год, а из головы никак не выходила мысль, что XAML может быть лучше. И, чтобы ему быть лучше, ему нужно перестать быть. Так родилась затея написать альтернативу кошмарному и ужасному XAML'ю: без <Setter.Value>
, без {Binding Path=Name, RelativeSource={RelativeSource AncestorType={x:Type Button}}, Converter={StaticResource Converter}}
, без FirstValueEqualsToSecondValueOrThirdValueEqualsNullConverter
, без <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions>
, без <MultiDataTrigger> <MultiDataTrigger.Triggers> <DataTrigger> <DataTrigger.Binding> <MultiDataBinding>...
, без xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
, без всего этого барахла, от написания которого в десятый раз возникают позывы нежно погладить компьютер табуретом и вспоминаются далёкие индусские родственники разработчиков WPF.
Приветствуем: JAML = XAML − XML + JSON
Фичи:
- Тёплый ламповый синтаксис JSON без кавычек вместо дьявольских уголовых скобок XML.
- Краткий и вменяемый синтаксис для markup extensions: километровые один-раз-написал-потом-читать-страшно-байндинги
{Binding Path=Name, RelativeSource={RelativeSource AncestorType={x:Type Button}}, Converter={StaticResource Converter}}
превращаются в почти присваивания{= ~Button.Name, Converter={@Converter} }.
- Кошерные выражения на C# на замену некошерным конвертерам:
{= ${=Property1} == ${=Property2} || ${=Property3} == null }
. - Смерть «элементной» записи свойств —
<Setter.Value>
уходят в небытие. - Зубодробительное повторение повторений объявляется устаревшим: если куда-то можно положить только
ColumnDefinition
, не надо повторять это десять раз. - Сеттеры и триггеры перестают быть многобуквенными сериализованными костылями: сеттеры выглядят как присваивание свойств, триггеры выглядят как условия.
- Смерть дублированию десяти «clr-namespace» с указанием имён соборок и прочей нечисти.
Звучит классно? А выглядит оно так:
_={
$: 'Window root',
Resources: [{
$: 'Style MyButtonStyle Button',
set: {
Background: 'Red', Foreground: 'Green'
},
on: {
'{=this.IsMouseOver}': {set: {
Background: 'Yellow', Foreground: 'Blue'
}}
}
}],
_: [{
$: 'Grid',
RowDefinitions: [ { Height: '*' } ],
ColumnDefinitions: [ { Width: '*' } ],
_: [{
$: 'Button btnPressMe', Content: 'Press me!', Style: '{@MyButtonStyle}'
}]
}]
}
Простой RESTful api сервер на Ruby (Sinatra)
2013-01-06 в 22:03, admin, рубрики: api, json, mysql2, ruby, sinatra, метки: api, json, mysql2, ruby, sinatraОписание и валидация древовидных структур данных. JSON-Schema
2012-11-16 в 13:52, admin, рубрики: IT-стандарты, javascript, json, json-schema, node.js, nodejs, валидация, стандарты, метки: javascript, json, json-schema, nodejs, валидация, стандарты
Многие сервисы и приложения (особенно веб-сервисы) принимают данные в древовидном виде. Например, такую форму имеют данные, поступающие через JSON-PRC, JSON-REST, PHP-GET/POST. Естественно, появляется задача валидировать их структуру. Существует много вариантов решения этой задачи, начиная от нагромождения if-ов в контроллерах и заканчивая классами, реализующими валидацию по разнообразным конфигурациям. Чаще всего для решения этой задачи требуется рекурсивный валидатор, работающий со схемами данных, описанными по определённому стандарту. Одним из таких стандартов является JSON-Schema, рассмотрим его поближе.
Читать полностью »
Делаем информационный виджет для Drupal сайта
2012-11-07 в 7:22, admin, рубрики: ajax, cms, drupal, drupal 7, json, JSONP, виджеты сайтов, метки: ajax, cms, drupal 7, json, JSONP, виджеты сайтов Недавно передо мной возникла задача — сделать информационный виджет для одного сервиса, что бы размещать его на сторонних сайтах.
Коротко о сервисе — Сайт «Умное слово на каждый день» — это первый образовательный ресурс подобного рода. Неизвестные широким массам слова появляются каждый день и составляют крупнейший в рунете словарь «умных» слов. Заходи на Everydayword.ru каждое утро и повышай словарный запас.
Читать полностью »