Разработка

Cross-domain ajax на Java сервере

Разрабатывали систему Виджетов для нашего сервиса, которые должны устанавливаться на "чужие" сервера, обращаться к нашему сервису, а потом строить графики, отчёты. После выпуска релиза оказалось, что мы при тестировании пропустили кросс-доменное (Cross-domain) тестирование. И у нас выскочила ошибка вида

 XMLHttpRequest Origin null is not allowed Access-Control-Allow-Origin for file: ...

Подробнее: Cross-domain ajax на Java сервере

Подключение библиотек при компилировании flex приложения через maven

Долго возился с решением этого вопроса. Даже поиск не помогал. Итак имеем задачу, при компиляции flex приложения с использованием maven (flexmojos-maven-plugin) необходимо использовать аналог параметра компиляции -compiler.include-libraries. В конфигурации самого плагина такого параметра не предусмотрено. Выход оказался очень прост: для этого в элемент зависимости надо вставить тег scope. Вот как это должно выглядеть:

Подробнее: Подключение библиотек при компилировании flex приложения через maven

Первый тест

В данном примере мы создадим простой проект в котором мы используем инструмент сборки проектов Maven 2, фреймоврк Spring, ORM Hibernante, и библиотеку для тестирования JUnit.

Подробнее: Первый тест

Как вычислить следующую дату по Cron-выражению

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

 (new CronTrigger("1", "2", "0 0 0/5 * * ?")).computeFirstFireTime(new BaseCalendar())

Данное решение корректно вычисляет следующую дату, когда должно сработать cron-выражение.

Maven Spring Hibernate JUnit DBunit

Некоторое время назад я задался вопросом, как организовать корректное тестирование серверной части своего приложения. Входные данные для решения этой задачи были следующими. Приложение работает на основе БД postgres 8.4, создания скелета приложения используется Spring 3, приложение собирается при помощи maven 2.1. Для тестирования была выбрана связка JUnit и DBUnit.

Подробнее: Maven Spring Hibernate JUnit DBunit

Водяные знаки

Встала передо мной задача сделать водяной знак во Flex приложении, чтобы в итоге получилось как на картинке:

watersign_1

Решение оказалось не самым тривиальным:

Подробнее: Водяные знаки

Ошибка при установке AIR - Error #2032

При использовании Air инсталятора от Adobe у меня возникла неприличная ситуация. При начале процесса скачивания приложения, появляется следующее окно с ошибкой

Подробнее: Ошибка при установке AIR - Error #2032

Контекстное меню в AdvancedDataGrid

Во флексе есть удобный по своей задумке компонент AdvancedDataGrid. Для пользователя это очень удобный компонент, который может делать приятные вещи. Но для разработчиков этот компонент сущая головная боль. Одним из вопросов часто бывает, а как вставить контекстное меню в таблицу, ведь нажатие правой клавиши мыши не приводит к выделению компонента, да из самого события нельзя понять куда же пользователь кликнул мышкой. Следовательно нет возможности правильно отобразить контекстное меню.

Подробнее: Контекстное меню в AdvancedDataGrid

Повышение производительности AS3 приложений

Данную статью я взял (без разрешения) из блога http://gorbatov.blogspot.com/2008/03/as3.html. Просто, чтобы не потерять для себя. От себя ни чего не добавлено и не исправлено.

Подробнее: Повышение производительности AS3 приложений

AdvancedDataGrid cортировка

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

dataGrid.dataProvider.sort = new Sort();
var field:SortField = new SortField("priority");
dataGrid.dataProvider.sort.fields = [ field ];
dataGrid.dataProvider.refresh();

Создание Flex-приложений c использованием Parsley. Часть 3, MVC

Рассмотрев некоторые аспекты работы с применением Parsley можно сформулировать некоторые аспекты как данная библиотека поможет нам построить гибкое, масштабируемое и, самое главное, хорошо разделённое на модули приложение.

Подробнее: Создание Flex-приложений c использованием Parsley. Часть 3, MVC

Создание Flex-приложений c использованием Parsley. Часть 2, обмен данными

В предыдущей статье, я начал рассказ о технологии, которая позволяет гибко конфигурировать Flex приложение, где рассмотрел первый аспект, а именно связывание различных компонентов приложения в одно целое. В данной статье хочу подробнее остановиться на организации модели обмена данными в приложении созданном с использованием Parsley.

Подробнее: Создание Flex-приложений c использованием Parsley. Часть 2, обмен данными

Создание Flex-приложений c использованием Parsley. Часть 1, связывание

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

Подробнее: Создание Flex-приложений c использованием Parsley. Часть 1, связывание

Связываем Flex(Air) и Базу данных, используя RemoteObject, BlazeDS, Spring и Hibernate

В прошлой статье я описал настройку связи Java сервера и Flex (Air) келиента, используя BlazeDS под управлением Spring. В этой статье мы добавим связь с БД (Postgres 8.3) используя набор библиотек Hibernate3.

Подробнее: Связываем Flex(Air) и Базу данных, используя RemoteObject, BlazeDS, Spring и Hibernate

Жизненный цикл Flex компонентов

Жизненый цикл компонентов во flex, похож на тот, который был в предыдущей 2-ой версии, когда вы создаёте хранилище, добавляете дочерние объекты, задаёте размер и генерируете событие. Следующие четыре метода играют роль для отображения компонента.

Подробнее: Жизненный цикл Flex компонентов

Связываем Java и Flex в Air используя BlazeDs через Spring

Встала передо мной интересная задачка, написать маленькое Air приложение, которое получала бы данные с Java сервера. Использовать XML для таких задач - это против моей сущности. Не люблю я это дело. По этому сразу был взят курс на технологии LiveCycleDs и BlazeDs. Первая технология хороша, но очень уж дорога. BlazeDS бесплатна и свободо распрострянается. Её возможностей более чем за глаза хватает для решения поставленной передо мной задачи. Т.к. задача предполагает обращение к БД, то в дальнейшем планируется использовать Hibernate. И чтоб не завязываться на ручное инициализирование сессий и разруливание всяких проблемм с пулом соединений было принято решение использовать Spring для связи всё в единое пространство на стороне сервера.

Подробнее: Связываем Java и Flex в Air используя BlazeDs через Spring

Аннотация для RemoteOBject в BlazeDS

Очень часто бывает, что при использовании Hibernate, на серверной стороне Java, для исключения избыточности данных, часть полей помечаются как ленивые (lazy="true"). И в этом случае, когда данные сериализуются для передачи данных во Flex-уровень возникает LazyInitializationException. Очень желательно оградить такие поля от сериализации, так же бывает необходимо по различным причинам исключить часть полей из сериализации из Java-уровня во Flex.

Подробнее: Аннотация для RemoteOBject в BlazeDS