четверг, 17 марта 2011 г.

Байты каждый день

Байты каждый день:

Представляю вашему вниманию перевод главы «Chapter 2 – Everyday bytes» (PDF) из книги «What can you do with bytes ?»

В предыдущей главе мы рассмотрели важные концепции управления двоичными данными в Flash Player. Настало время использовать эти концепции на практике в реальных проектах. Мы увидим как с помощью нашего лучшего друга – API класса ByteArray можно осуществлять внедрение двоичных ресурсов, управление звуком, парсинг SWF и т.д. – все то, что было недоступно прежде в ActionScript.

Мы продолжим наше путешествие в ByteArray, рассматривая различные примеры его применения, с которыми вы можете сталкиваться каждый день во время работы с Flash.

Содержание:
- Копирование объектов
- Сериализация/десериализация пользовательских объектов
- Внедрение ресурсов
- Внедрение байтов
- Прогрессивная загрузка изображений
- Компрессия/декомпрессия данных
- Генерация файлов изображений (PNG или JPEG)
- Сохранение двоичного потока с помощью удаленного сервера
- Сохранение двоичного потока локально
- Генерация PDF
- От байтов к звуку
- Парсинг двоичных данных (на примере SWF)

Копирование объектов

Одно из наиболее частых применений класса ByteArray – дублирование объектов. Вспомним, что AMF сериализация и десериализация доступна посредством интерфейса класса ByteArray. Метод writeObject это то, что нам нужно [...]

MultibyteStream – запись и чтение информации побитово

MultibyteStream – запись и чтение информации побитово:

На одном из UAFPUG’ов я коротко рассказал и показал этот проект, созданный в качестве 'proof of concept'. Проект позволяет сохранять данные динамической длины, используя бит, как единицу данных. Даёт возможность самому контролировать количество бит отводимых под хранение конкретных значений. Когда вы сохраняете данные, то всегда используете чётко определённые правила хранения информации. К примеру, для сохранения целочисленных значений используется всегда 8/16/32 бита, а для дробных(рациональных чисел) – 32 или 64 бита и т.д. Данный проект позволяет изменять эти правила в свою пользу и, таким образом, уменьшать количество данных, требуемых для сохранения значений. Так же, при сохранении данных, вы избавляетесь ссылок и контекстов, что приводит к ещё большей экономии бит/байт требуемых для хранения информации. Но это является и недостатком, т.к. требует строгого описания протокола хранения информации.

Для большего понимания, можно сравнить посмотреть на формат хранения данных JSON [...]

среда, 16 марта 2011 г.

ExternalInterface + IE = memory leaks. Workaround

ExternalInterface + IE = memory leaks. Workaround:

Пишет Александр Козловский:

Interlude

Как известно, ExternalInterface + IE любой версии порождает совершенно адские утечки памяти. Течёт именно JS. Не буду приводить результаты трёх бесконечных дней тестирования и сами тесты, поверьте наслово: течёт js-метод, добавляемый на страницу Flash Player'ом при каждой инициализации Flash-приложения, позволяющий вызывать со страницы методы, 'раcшаренные' во Flash-приложении с помощью ExternalInterface.addCallback().

А само решение в коде - под катом [...]

вторник, 15 марта 2011 г.

Minipodcast. Часть 1 -- общение флэш клиента с Erlang сервером.

Minipodcast. Часть 1 -- общение флэш клиента с Erlang сервером.:

Tags:

Intro

Задумал я тут мелкий проект -- помесь миниблога с подкастом -- миниподкаст. Зачем? Erlang пощупать, да скринкасты записать :) Ну и потом запустить это на своем сайте, чтобы доставать народ не только своей занудной писаниной, но и своим занудным голосом.

Технически все просто -- флэш клиент (audio recorder) соединяется с erlyvideo, захватывает микрофон и публикует аудиопоток. Erlyvideo сохраняет это дело в flv файл.

Затем флэш клиент соединяется с Erlang сервером (пока отдельный сервер, потом, может быть, это будет плагин к erlyvideo), и просит его сохранить инфу о записи (id, name, description, creation date и т.д.). Сервер сохраняет это дело в базе данных Mnesia.

Затем другой флэш клиент (minipodcast player) соединяется с Erlang сервером, получает список записей, отображает их. Для прослушивания записи соединяется с erlyvideo и получает flv файл.

Ну и все.

Работу над сим несложным проектом я решил осветить в серии статей и скринкастов.

Скринкаст к данной статье:

Если бы это был коммерческий проект, мы бы оценили его, помимо всего прочего, со стороны возможных рисков. В проекте есть часть, по которой нет ни знаний, ни опыта -- это написание Erlang сервера и общение с ним флэш клиента. А раз нет ни знаний, ни опыта, то эта часть самая рискованная. А раз она сама рискованная, то с нее и нужно начинать работу :)

Почему Erlang?

В коммерческом проекте мы бы выбирали технологию под требования проекта. В домашнем проекте можно поступать наоборот. И можно даже полностью проект придумать под технологию. Что я и сделал в данном случае :)

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

Erlang сервер

Разумеется, для знакомства с Erlang нужно прочитать (хотя бы частично) одну из двух книг:

А еще весьма актуальна для данного проекта книга Erlang OTP in Action, где подробно описан OTP фреймворк, стандартный для Erlang проектов. В этой книге, в 11-й главе есть практически готовый вариант TCP сервер, который нужно лишь чутка адаптировать к флэш клиенту. А именно -- реагировать на его security policy request и сериализовать/десериализовать AMF данные.

Там предлагается TCP сервер в виде стандартного OTP приложения, с супервайзером, с gen_server behaviour и прочими такого рода штуками. Он умеет принимать соединения, получать и отправлять бинарные данные. Разумеется, он может обслуживать несколько клиентов одновременно, запуская для каждого из них отдельный поток. Что не проблема для Erlang (а для Java, например, было бы проблемой).

Пересказывать то, что прекрасно описано в книге, во-первых, глупо, во-вторых, лень. Посему остановлюсь только на том, что специфично в данном проекте.

Privacy policy request

Разработчики флэш плеера решили осложнить мне, разработчику под флэш плеер, жизнь. И для этого придумали модель безопасности. Это модель подразумевает, что я, разработчик под флэш плеер, являюсь злобным созданием, и из всех сил стремлюсь навредить пользователю. В принципе подход правильный :) [...]

TowerDefence #7. Движение врагов

TowerDefence #7. Движение врагов:

В прошлых уроках мы подготовили все самое необходимое, чтобы наконец перейти к полноценной разработке игры. Сегодня мы реализуем полноценное движение врагов и доработаем редактор уровней, а так же добавим пару полезных математических классов в наш проект [...]

четверг, 10 марта 2011 г.

Отчет о конференции BAFPUG New Wave

Отчет о конференции BAFPUG New Wave:

Tags:

Итак, 11-я конференция Belarus Adobe Flash Platform User Group состоялась и была успешной. Мы собрали около 50 человек, прочитали 5 докладов, вместо запланированных 4-х и записали видео.

Видео я пока выложил в торренты, на rutracker.org. Но я понимаю, что это не всем удобно. Поэтому видео также будет выложено на video.com. Но не сразу, это займет некоторое время.

Первым выступил Сергей Гончар aka Flastar. С недавних пор Сергей работает в компании Alternativa 3D, и он рассказывал о новых возможностях одноименного 3D движка.

На видео демки движка плохо видны, и их лушче смотреть в оригинале :)

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

Сергей Степуро рассказал про Parsley Application Framework и поделился опытом использования этого фреймворка.

Юра Жлоба aka yzh44yzh (то есть я), рассказал про технологии использования видео в интернете. Я постарался дать каркас знаний по этой обширной теме, позволяющий в ней ориентироваться.

И завершал конференцию Владимир Кривошеев aka Develar рассказом про использование Maven и Flexmojos в флекс проектах. Кроме того, Владимир немного рассказал о проекте, который он делает в JetBrains -- UI Designer для флекс проектов в Intellij IDEA, аналог Design View во Flash Builder.

[...]

суббота, 5 марта 2011 г.

Обучающий семинар от MotoCMS в Одессе

Обучающий семинар от MotoCMS в Одессе: "

Дорогие друзья! Если вы менеджеры веб-студий, создающие флэш-сайты - просим вас внимательно прочесть информацию ниже. Если вы не менеджер - позовите менеджера, ему эта информация будет полезнее.

Рады Вам сообщить, что разработчик программного обеспечения для управления сайтами - «MotoCMS» проводит обучающий бесплатный закрытый семинар в Одессе.

Время проведения: 11 марта, начало в 11.00

В программе семинара по MotoCMS:

  1. Первая секция: «Создаем сайт с MotoCMS»
  2. Определение понятий. Основы работы с Панелью управления. Работа с шаблонами. Работа со слотами и модулями. Возможности редактирования.
  3. Вторая секция: «Продаем сайт с MotoCMS»
  4. Преимущества продукта. Участие в закрытой аффилиатской программе. Выпуск продуктов на базе MotoCMS под брендом агентства. Модели продаж. Преимущества при работе с клиентами.

 
Отдельное внимание будет уделено вопросам монетизации и удобству продажи сайтов, созданных на базе Moto CMS. Приглашаем представителей Одесских веб-студий, флешеров и фрилансеров-одиночек к участию в семинаре.
 
Важно: Для участия в мероприятии (подготовка комплекта раздаточных материалов) необходима предварительная регистрация (ФИО, студия, контактный телефон).
 
По результатам семинара участникам будут выданы сертификаты, подтверждающие прохождение обучения.
 
Участие в семинаре БЕСПЛАТНОЕ [...]