<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7942007115115228150</id><updated>2024-09-24T22:31:16.301+03:00</updated><category term="AS3"/><category term="Flash"/><category term="Flex"/><category term="Проекты"/><category term="CYCLOPicture"/><category term="Flash Player 10"/><category term="Разное"/><category term="Шейдеры"/><category term="CMF"/><category term="CMS"/><category term="Enterprise"/><category term="FDT"/><category term="IBM"/><category term="IDE"/><category term="PHP"/><category term="SWC"/><category term="Synchronet.ru"/><category term="XML"/><title type='text'>Дмитрий Краснов</title><subtitle type='html'>Когда не лень...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-2256413529797162384</id><published>2010-07-09T04:00:00.001+04:00</published><updated>2010-07-09T04:03:17.213+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="Flex"/><category scheme="http://www.blogger.com/atom/ns#" term="Synchronet.ru"/><category scheme="http://www.blogger.com/atom/ns#" term="Проекты"/><title type='text'>Synchronet.ru</title><content type='html'>&lt;p&gt;Недавно компания «&lt;a href=&quot;http://synchro-systems.ru/&quot;&gt;Синхро системс&lt;/a&gt;», в которой я работаю ведущим Flash-разработчиком, объявила о запуске своего нового продукта &lt;a href=&quot;http://synchronet.ru/&quot;&gt;Synchronet.ru&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://synchronet.ru/&quot;&gt;Synchronet.ru&lt;/a&gt; – это единственный, насколько мне известно, интернет-сервис в российском сегменте сети, позволяющий пользователю синхронизировать персональную информацию (контакты, календари, закладки, заметки) и файлы на множестве мобильных (и не только) устройств, будь то мобильные телефоны, КПК, нетбуки, стационарные ПК или что-то еще.&lt;/p&gt;&lt;p&gt;Сервис также несет в себе социальную составляющую, благодаря которой владелец данных может открывать другим пользователям и группам пользователей системы доступ к своим контактам, календарям, файлам и прочей информации. Причем доступом можно управлять очень тонко, вплоть до предоставления прав на чтение отдельного контакта или события в календаре. Кроме того, посредством т.н. внешних ссылок, можно открывать публичный доступ к отдельным файлам, скачать которые можно без регистрации в системе, т.е. сервис можно использовать, в том числе, и как своеобразный файлообменник.&lt;/p&gt;&lt;p&gt;Управлять всем&lt;span style=&quot;mso-spacerun:yes&quot;&gt;  &lt;/span&gt;этим функциональным великолепием пользователь может в окне браузера, при помощи клиента, разработанного на базе платформы &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;Adobe&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;Flash&lt;/span&gt;. Собственно, я как раз и занимался разработкой этого клиента. Работал я не один, а в сотрудничестве с еще двумя Flash-разработчиками. С этими товарищами приятно работать, за что я им искренне благодарен.&lt;/p&gt;&lt;p&gt;Вообще, процесс разработки получился весьма интересным как с технологической, так и с методологической точки зрения. Например, наряду с каскадным планированием в процесс органично вплелись элементы &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language:EN-US&quot;&gt;eXtreme&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language:EN-US&quot;&gt;Programming&lt;/span&gt;. Что бы там не говорил Кент Бек (&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language:EN-US&quot;&gt;Kent&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language:EN-US&quot;&gt;Beck&lt;/span&gt;), &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language:EN-US&quot;&gt;XP&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;с успехом можно внедрять частично, не загоняя весь процесс в рамки этой концепции.&lt;/p&gt;&lt;p&gt;Руководству, на уровне всего проекта, особенно в самом начале, привычней мыслить&lt;span style=&quot;mso-spacerun:yes&quot;&gt;  &lt;/span&gt;категориями неглубокого каскадного планирования. Это позволяет крупно оценить сроки, размер финансирования и прочие вещи, которые относятся к проекту в целом. В то же время моя команда всегда работает короткими итерациями, постоянно взаимодействуя с руководством и командой разработчиков сервера, каждодневно обсуждая требования к новому функционалу или изменения уже существующего. Это экономит нам массу времени, избавляя от ненужного формализма, характерного для каскадного подхода.&lt;/p&gt;&lt;p&gt;Принцип коллективного владения кодом отлично себя зарекомендовал и я стараюсь следить за тем чтобы все участники моей команды понимали код вне зависимости от того кто из нас его писал. Основное преимущество такого подхода заключается в ускорении процесса разработки, поскольку при появлении необходимости исправить ошибку или ввести новый функционал эту работу может произвести, как правило, любой разработчик команды.&lt;/p&gt;&lt;p&gt;Парное программирование мы практикуем не постоянно, а лишь для решения затруднительных ситуаций, в которые может попасть один из разработчиков. Таким образом, мы избегаем продолжительных &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US&quot;&gt;roadblock&lt;/span&gt;-ов т.к. в паре любая проблема решается с феноменальной скоростью, а активный обмен опытом уменьшает риск возникновения проблем в будущем. Помимо того, эта практика поддерживает принцип коллективного владения кодом: работая в разных парах, разработчики знакомятся со всеми частями кода, с упором на проблемные места.&lt;/p&gt;&lt;p&gt;Как я уже говорил, технологическая сторона проекта тоже оказалась очень интересной. Разрабатывать Flash-клиент я решил на основе фреймворка &lt;a href=&quot;http://puremvc.org/&quot;&gt;PureMVC MultiCore&lt;/a&gt; и совершенно об этом не жалею. Да, &lt;a href=&quot;http://puremvc.org/&quot;&gt;PureMVC&lt;/a&gt; имеет особенность, которую условно можно посчитать недостатком – работая с ним необходимо писать, на первый взгляд, избыточное количество кода. Грубо говоря, то, что можно прототипировать за пару часов, в базисе &lt;a href=&quot;http://puremvc.org/&quot;&gt;PureMVC&lt;/a&gt; может раскладываться пару дней. Но это является серьезной проблемой лишь на первый взгляд. Достоинства фреймворка начинаешь понимать, когда требования к функционалу начинают активно изменяться и дополняться. Ты не задумываешься, как правильнее ввести новый функционал или изменить уже имеющийся, сколько кода придется переписать, как удержать в голове все внутренние зависимости кода, как объяснить коллеге, чего ты тут понаписал и т.д. Ты просто программируешь согласно концепции, которую диктует &lt;a href=&quot;http://puremvc.org/&quot;&gt;PureMVC&lt;/a&gt; и пребываешь в полной уверенности в том, что все будет хорошо.&lt;/p&gt;&lt;p&gt;Поскольку клиентская и серверная части разрабатываются параллельно, иногда возникает ситуация, когда на сервере пока отсутствует интерфейс, необходимый для отладки функционала, который в данный момент разрабатывается на клиенте. В таких ситуациях мы используем &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language:EN-US&quot;&gt;m&lt;/span&gt;ock-объекты на основе пакета &lt;a href=&quot;http://asmock.sourceforge.net/&quot;&gt;ASMock&lt;/a&gt;, имитирующие полноценные &lt;a href=&quot;http://puremvc.org/&quot;&gt;PureMVC&lt;/a&gt;-прокси, которые ведут себя так, словно они взаимодействуют с сервером. Конечно, можно было обойтись без &lt;a href=&quot;http://asmock.sourceforge.net/&quot;&gt;ASMock&lt;/a&gt; и написать заглушки вручную, но &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language:EN-US&quot;&gt;m&lt;/span&gt;ock-объекты проще программировать и они располагают к модульному тестированию, необходимость в котором вот-вот назреет.&lt;/p&gt;&lt;p&gt;С точки зрения UI, мы, по большей части, обошлись стандартными компонентами Adobe Flex, изредка вворачивая элементы &lt;a href=&quot;http://code.google.com/p/flexlib/&quot;&gt;FlexLib&lt;/a&gt; или что-то уж совсем оригинальное. А вот наш дизайнер периодически нас озадачивал. Дело в том, что его фантазия никак не увязана с техническими ограничениями скинирования во Flex. Так что иногда мы использовали пакет &lt;a href=&quot;http://www.degrafa.org/&quot;&gt;Degrafa&lt;/a&gt;, а в особо клинических случаях – психологическое давление на дизайнера.&lt;/p&gt;&lt;p&gt;В процессе разработки было еще немало интересных моментов, но я, пожалуй, на этом остановлюсь. И без того уже вышел эдакий постмортем, хотя проект будет развиваться и впереди нас ждет еще много работы.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/2256413529797162384/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2010/07/synchronetru.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2256413529797162384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2256413529797162384'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2010/07/synchronetru.html' title='Synchronet.ru'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-688517182399066178</id><published>2009-05-20T17:10:00.001+04:00</published><updated>2009-05-20T17:10:00.857+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Enterprise"/><category scheme="http://www.blogger.com/atom/ns#" term="Flex"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><title type='text'>Интеграция Adobe Flex и IBM WebSphere Portal</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/library/wa-flexwebsphere/index.html&quot;&gt;Integrating Adobe Flex and IBM WebSphere Portal&lt;/a&gt; - статья под таким названием была недавно опубликована на сайте компании IBM в разделе developerWorks инженерами подразделения IBM China.&lt;/p&gt;&lt;p&gt;Статья представляет собой подробную инструкцию по созданию клиент-серверного приложения на базе Adobe Flex и IBM WebSphere Portal. В ней рассматриваются такие моменты как создание проектов в Adobe Flex Builder и IBM Rational Software Architecture. Особое внимание уделяется процедуре упаковки Flex-приложения, Web-компилятора, пакета BlazeDS и Java-классов удаленного сервиса в один портлет и развертыванию его на сервере приложений IBM WebSphere. Вскользь упоминается возможность сокращения размера конечного WAR-файла за счет использования разделяемых библиотек.&lt;/p&gt;&lt;p&gt;Не вижу смысла разбирать эту статью более подробно. При желании вы можете сами с ней ознакомиться. Материал там подается достаточно доходчиво и сопровождается примерами. Примечательным же, на мой взгляд, является сам факт появления такой статьи на сайте компании IBM. Я склонен рассматривать это как сигнал партнерам и клиентам IBM о том, что Adobe Flex можно и нужно использовать в проектах на базе продуктов семейства IBM WebSphere. Если учесть, что основными потребителями продуктов такого класса в России являются такие гиганты как Центральный банк РФ, ОАО &quot;РЖД&quot;, РАО &quot;ЕЭС России&quot;, Альфа-банк и подобные им, то можно предположить, что Flash-платформу ждет большое будущее уровня enterprise.&lt;/p&gt;&lt;p&gt;P.S. В августе 2008 года в беседе с &lt;a href=&quot;http://riapriority.com/blogs/constantiner.php&quot;&gt;Константином Ковалёвым&lt;/a&gt; я предположил что-то подобное. Это была всего лишь ироничная шутка, но ирония оказалась глубже.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/688517182399066178/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2009/05/adobe-flex-ibm-websphere-portal.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/688517182399066178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/688517182399066178'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2009/05/adobe-flex-ibm-websphere-portal.html' title='Интеграция Adobe Flex и IBM WebSphere Portal'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-5691949418518207211</id><published>2009-01-30T22:45:00.002+03:00</published><updated>2009-10-12T21:01:54.584+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash Player 10"/><category scheme="http://www.blogger.com/atom/ns#" term="Шейдеры"/><title type='text'>Очередь асинхронных ShaderJob не работает никак, потому что она не существует.</title><content type='html'>&lt;p&gt;...По крайней мере, в документации я на сей счет ничего вразумительного не обнаружил, а на вопрос из &lt;a href=&quot;http://dmitrykrasnov.blogspot.com/2009/01/shaderjob.html&quot;&gt;моей предыдущей заметки&lt;/a&gt; не смогли ответить даже на форуме Adobe. Таким образом, я пришел к выводу, что очередь нужно реализовывать самому.&lt;/p&gt;&lt;p&gt;Задача оказалась довольно простой.&lt;/p&gt;&lt;p&gt;Вот пример класса, реализующего очередь:&lt;/p&gt;&lt;pre&gt;package ru.dmitrykrasnov.service.shader {
  import flash.display.ShaderJob;
  import flash.events.ShaderEvent;

  public class ShaderJobQueue {
      public static const INSTANCE:ShaderJobQueue = new ShaderJobQueue();

      private var queue:Vector.&amp;lt;ShaderJob&amp;gt;;
      private var inProgress:Boolean;

      public function ShaderJobQueue() {
          if (INSTANCE != null) throw new Error(&quot;Сonstructor is locked.&quot;);
          queue = new Vector.&amp;lt;ShaderJob&amp;gt;();
      }

      public function addToQueue(shaderJob:ShaderJob):void {
          queue.push(shaderJob);
          if (!inProgress) {
              inProgress = true;
              run();
          }
      }

      private function run():void {
          var shaderJob:ShaderJob = queue.shift();
          shaderJob.addEventListener(ShaderEvent.COMPLETE, shaderJobCompleteHandler);
          shaderJob.start();
      }

      private function shaderJobCompleteHandler(event:ShaderEvent):void {
          event.target.removeEventListener(ShaderEvent.COMPLETE, shaderJobCompleteHandler);
          if (queue.length &gt; 0) {
              run();
          } else {
              inProgress = false;
          }
      }
  }
}&lt;/pre&gt;&lt;p&gt;При необходимости, этот класс можно использовать самостоятельно, вставив в свой код строку:&lt;/p&gt;&lt;pre&gt;ShaderJobQueue.INSTANCE.addToQueue(shaderJob);&lt;/pre&gt;&lt;p&gt;Но это некрасиво. Эстетики ради, можно немного усовершенствовать класс ShaderJob:&lt;/p&gt;&lt;pre&gt;package ru.dmitrykrasnov.service.shader {
  import flash.display.Shader;
  import flash.display.ShaderJob;

  public class ShaderJobEnhanced extends ShaderJob{
      private var addedToQueue:Boolean;

      public function ShaderJobEnhanced(shader:Shader = null, target:Object = null, width:int = 0, height:int = 0) {
          super(shader, target, width, height);
      }

      public override function start(waitForCompletion:Boolean = false):void {
          if (waitForCompletion || addedToQueue) {
              super.start(waitForCompletion);
          } else {
              addedToQueue = true;
              ShaderJobQueue.INSTANCE.addToQueue(this);
          }
      }
  }
}&lt;/pre&gt;&lt;p&gt;Тогда метод ShaderJobEnhanced.start() будет полностью соответствовать документации метода ShaderJob.start().&lt;/p&gt;&lt;p&gt;Честно говоря, сейчас я даже рад, что Adobe не предоставила готовую реализацию очереди т.к. у нас есть возможность сделать эту реализацию сколь угодно специфичной (например, сейчас мне нужна очередь с динамической сортировкой). Только надо было как-то более адекватно отразить это в документации.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/5691949418518207211/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2009/01/shaderjob_30.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/5691949418518207211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/5691949418518207211'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2009/01/shaderjob_30.html' title='Очередь асинхронных ShaderJob не работает никак, потому что она не существует.'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-8214500980213694229</id><published>2009-01-14T15:20:00.003+03:00</published><updated>2009-02-09T02:25:00.249+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash Player 10"/><category scheme="http://www.blogger.com/atom/ns#" term="Шейдеры"/><title type='text'>Как работает очередь асинхронных ShaderJob?</title><content type='html'>&lt;p&gt;То ли  я недостаточно сообразителен, то ли документация не совсем соответствует действительности. Вобщем, суть проблемы такова:&lt;/p&gt;&lt;p&gt;В документации по ShaderJob.start() сказано:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/ShaderJob.html#start()&quot;&gt;Русская версия&lt;/a&gt;: &quot;Одновременно может выполняться только одна фоновая операция ShaderJob. Все операции затенения помещаются в очередь и выполняются последовательно. При вызове метода start() во время выполнения операции затенения еще одна операция добавляется в конец очереди. Впоследствии, когда наступает очередь, она выполняется.&quot;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/ShaderJob.html#start()&quot;&gt;Английская версия&lt;/a&gt;: &quot;Only one background ShaderJob operation executes at a time. Shader operations are held in a queue until they execute. If you call the start() method while a shader operation is executing, the additional operation is added to the end of the queue. Later, when its turn comes, it executes.&quot;&lt;/p&gt;&lt;p&gt;Но в реальности, при запуске нескольких ShaderJob...&lt;/p&gt;&lt;pre&gt;shaderJob1.start();
shaderJob2.start();
shaderJob3.start();&lt;/pre&gt;&lt;p&gt;...выполняется только shaderJob1 и все. Никакой очереди и последовательного выполнения.&lt;/p&gt;&lt;p&gt;В чем дело? Что может быть не так?&lt;/p&gt;&lt;p&gt;Буду весьма признателен вам за любую помощь.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/8214500980213694229/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2009/01/shaderjob.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/8214500980213694229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/8214500980213694229'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2009/01/shaderjob.html' title='Как работает очередь асинхронных ShaderJob?'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-363971830455195749</id><published>2008-12-26T17:30:00.002+03:00</published><updated>2008-12-26T17:59:06.866+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="Flex"/><category scheme="http://www.blogger.com/atom/ns#" term="Разное"/><title type='text'>Об именовании Flash-специалистов.</title><content type='html'>&lt;p&gt;Меня всегда сильно смущало, принятое в нашем сообществе, деление Flash-специалистов на &quot;флешеров&quot; и &quot;флексеров&quot; по странному, на мой взгляд, принципу: если в твоей работе много графики и анимации и немного (технически несложной, но иногда весьма впечатляющей) интерактивности, то ты - &quot;флешер&quot;. А если ты создаешь бизнес-приложения, клиент-серверные решения, сервисы и прочие &quot;большие и серьезные вещи&quot;, изобилующие сотнями килобайт кода и ветвистыми объектными структурами, то ты - &quot;флексер&quot;, и точка.&lt;/p&gt;&lt;p&gt;Когда-то Flash был лишь технологией ограниченно программируемой векторной графики и анимации. Любой работающий с ней человек, спустя короткое время, получал полный и исчерпывающий пакет знаний по этой технологии. Если этот человек обладал, ко всему, еще и способностями художника или дизайнера, то он мог с чистой совестью называть себя Flash-специалистом или попросту &quot;флешером&quot;. Он знал о Flash почти все и умел этим пользоваться. Чем не специалист-то? Для того времени - специалист - не вопрос. Но сейчас-то ситуация совсем другая. Flash, сохранив свои прежние возможности, развился до мощной клиентской платформы с полноценным языком программирования, оброс кучей библиотек и фреймворков, а &quot;флешеры&quot; до сих пор владеют лишь технологией ограниченно программируемой векторной графики и анимации. Так может им следует называть себя как-то иначе? Flash-художник/аниматор/дизайнер. И для посторонних людей будет звучать понятно и солидно.&lt;/p&gt;&lt;p&gt;Flex - фреймворк (или технология, как угодно), позволяющий быстро создавать развитый GUI для приложений на базе Flash-платформы. Именно появление Flex позволило всерьез говорить о Flash, как о платформе для бизнес-приложений. И вот, люди, освоившие этот фреймворк, стали называть себя &quot;флексерами&quot;. Сделали они это, по всей видимости, для того, чтобы выбиться из массы &quot;флешеров&quot; и заявить о своей &quot;серьезности&quot;. Любопытно то, что они продолжают так себя называть даже сейчас, после того как поняли, что Flex - один из многих фреймворков, которые приходится использовать в работе.&lt;/p&gt;&lt;p&gt;На мой взгляд, все это очень глупо. Глупо называть себя по имени платформы, когда не собираешься (и не в состоянии) изучать и использовать все ее возможности. Это, как и &quot;компьютерщик&quot;, пахнет дилетантством. Глупо программисту называть себя по имени одного из фреймворков, используемых в повседневной работе. Представте, к примеру, что Java-программисты начнут называть себя &quot;свингерами&quot;. Думаю, ряд, весьма забавных и даже пикантных, недоразумений им гарантирован.&lt;/p&gt;&lt;p&gt;Если бы этим заблуждением страдали только новички и дилетанты, это было бы простительно, хотя и опасно. Но ведь и серьезные специалисты (возможно, не осознавая этого) нередко сами несут эту чушь в массы своими высказываниями в блогах, подкастах и форумах. Слова этих людей имеют ощутимый вес, как в сообществе, так и за его пределами. К ним прислушиваются, в том числе и люди, принимающие бизнес-решения т.е. наши потенциальные заказчики и работодатели. Они не склонны к разбору тонкостей терминологии и могут по-разному толковать сложившеюся неоднозначность. Будьте уверенны, в большинстве случаев, толкование будет самым неправильным. Замечу, что для этих людей это не вопрос о том, кто и как называется, это вопрос об имидже и возможностях специалистов, и платформы в целом.&lt;/p&gt;&lt;p&gt;Нужно что-то менять.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/363971830455195749/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/12/flash.html#comment-form' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/363971830455195749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/363971830455195749'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/12/flash.html' title='Об именовании Flash-специалистов.'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-4950304461756782531</id><published>2008-06-09T22:40:00.000+04:00</published><updated>2008-06-09T22:41:11.286+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><category scheme="http://www.blogger.com/atom/ns#" term="CYCLOPicture"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="Проекты"/><title type='text'>Очередное обновление технологической демо-версии проекта CYCLOPicture</title><content type='html'>&lt;ul&gt;&lt;li&gt;Увеличена скорость обработки панорамы. Прирост составил около 50%.&lt;/li&gt;&lt;li&gt;Ликвидирована загрузка процессора во время простоя. Перерисовка теперь происходит только при необходимости.&lt;/li&gt;&lt;li&gt;Изменена подсистема динамического сглаживания и перспективной коррекции.&lt;/li&gt;&lt;li&gt;Угол зрения (FOV) теперь составляет 90 градусов. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ознакомиться с технологической демо-версией можно на &lt;a href=&quot;http://www.dmitrykrasnov.ru/projects/cyclopicture.html&quot;&gt;странице проекта&lt;/a&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/4950304461756782531/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/06/cyclopicture.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/4950304461756782531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/4950304461756782531'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/06/cyclopicture.html' title='Очередное обновление технологической демо-версии проекта CYCLOPicture'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-4588608162474494441</id><published>2008-05-26T15:10:00.001+04:00</published><updated>2008-05-26T15:10:03.053+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><category scheme="http://www.blogger.com/atom/ns#" term="CYCLOPicture"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="Проекты"/><title type='text'>Обновлена технологическая демо-версия проекта CYCLOPicture</title><content type='html'>&lt;ul&gt;&lt;li&gt;На 70% увеличено разрешение панорамы на выходе текстурного преобразователя. По моим данным, это математический максимум того, что можно выжать из текстурного преобразователя без потери качества.&lt;/li&gt;&lt;li&gt;Изменен алгоритм интерполяции. Качество панорамы на выходе текстурного преобразователя теперь не уступает оному таких профессиональных продуктов как PTGui Pro и пр.&lt;/li&gt;&lt;li&gt;На 30% повышена скорость обработки панорамы.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ознакомиться с технологической демо-версией можно на &lt;a href=&quot;http://www.dmitrykrasnov.ru/projects/cyclopicture.html&quot;&gt;странице проекта&lt;/a&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/4588608162474494441/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/05/cyclopicture.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/4588608162474494441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/4588608162474494441'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/05/cyclopicture.html' title='Обновлена технологическая демо-версия проекта CYCLOPicture'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-8841393297050246308</id><published>2008-05-13T18:15:00.002+04:00</published><updated>2008-05-13T18:19:12.727+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><category scheme="http://www.blogger.com/atom/ns#" term="CYCLOPicture"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="Проекты"/><title type='text'>Старт проекта CYCLOPicture</title><content type='html'>&lt;p&gt;Простите, я довольно долго ничего здесь не писал. Дело в том, что недавно я озадачился парой идей: Во-первых, мне захотелось создать проигрыватель интерактивных панорам и виртуальных туров, обладающий рядом полезных для потенциального заказчика функций, но отсутствующих в других продуктах этого класса. А во-вторых, я хотел успеть сделать хоть что-нибудь до конца приема работ на &lt;a href=&quot;http://www.flashawards.ru/&quot;&gt;Russian Flash Awards&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Создать за месяц готовый коммерческий продукт я, конечно же, не успел, но технологическая демо-версия получилась неплохая, я считаю. Вышел эдакий публичный сервис просмотра эквидистантных панорамных фотографий, размещенных на других ресурсах (например, &lt;a href=&quot;http://www.flickr.com/groups/equirectangular/pool/&quot;&gt;на сайте Flickr, в группе Equirectangular&lt;/a&gt; можно найти обширную коллекцию эквидистантных панорамных фотографий). Впрочем, &lt;a href=&quot;http://www.dmitrykrasnov.ru/projects/cyclopicture.html&quot;&gt;посмотрите сами&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Теперь бы попасть в каталог Russian Flash Awards и моему счастью не будет предела.&lt;/p&gt;&lt;p&gt;Мысли, посещавшие меня по ходу разработки, а также планы по развитию этого проекта будут опубликованы позже.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/8841393297050246308/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/05/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/8841393297050246308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/8841393297050246308'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/05/blog-post.html' title='Старт проекта CYCLOPicture'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-579170764809442209</id><published>2008-02-18T23:55:00.002+03:00</published><updated>2009-02-09T02:31:49.349+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><title type='text'>Трансформация объекта относительно произвольной точки</title><content type='html'>&lt;p&gt;Недавно столкнулся с задачей трансформации (масштабирование, поворот или наклон) объекта относительно произвольной точки. Предлагаю к ознакомлению свое решение этой задачи.&lt;/p&gt;&lt;pre&gt;package com.dmitrykrasnov.research {
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.geom.Matrix;
    import flash.geom.Point;

    public class TransformationAboutPoint extends Sprite {
        public function TransformationAboutPoint() {

            // Для примера, нарисуем квадрат.
            var myBox : Shape = new Shape();
            myBox.graphics.lineStyle(1, 0x000000);
            myBox.graphics.beginFill(0x000000);
            myBox.graphics.drawRect(16, 16, 32, 32);
            myBox.graphics.endFill();

            // Возьмем его матрицу трансформации и повернем ее на 45 градусов.
            // Заметьте, поворот произойдет относительно начала координат.
            var myMatrix : Matrix = myBox.transform.matrix;
            myMatrix.rotate(Math.PI / 4);

            // Выберем точку вращения (пусть это будет центр нашего квадрата).
            var axisPoint : Point = new Point(32, 32);

            // Выясним, куда она сместилась в результате поворота.
            var newPoint : Point = myMatrix.transformPoint(axisPoint);

            // Вычислим относительное смещение.
            var deltaX : Number = axisPoint.x - newPoint.x;
            var deltaY : Number = axisPoint.y - newPoint.y;

            // Компенсируем относительное смещение.
            myMatrix.translate(deltaX, deltaY);

            // Применим трансформации к нашему квадрату.
            myBox.transform.matrix = myMatrix;

            // Посмотрим на результат.
            addChild(myBox);

            // На всякий случай, нарисуем проверочные направляющие.
            var guideLines : Shape = new Shape();
            guideLines.graphics.lineStyle(1, 0xFF0000);
            guideLines.graphics.moveTo(0, axisPoint.y);
            guideLines.graphics.lineTo(64, axisPoint.y);
            guideLines.graphics.moveTo(axisPoint.x, 0);
            guideLines.graphics.lineTo(axisPoint.x, 64);
            addChild(guideLines);
        }
    }
}&lt;/pre&gt;&lt;p&gt;Если кому-то известно более изящное решение, пожалуйста, опишите его в комментариях.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/579170764809442209/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/blog-post.html#comment-form' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/579170764809442209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/579170764809442209'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/blog-post.html' title='Трансформация объекта относительно произвольной точки'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-2348825784435242352</id><published>2008-02-17T23:35:00.000+03:00</published><updated>2008-02-18T00:12:19.322+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Разное"/><title type='text'>Впечатления от 3-й встречи RAFPUG</title><content type='html'>&lt;p&gt;Сегодня я посетил 3-ю встречу RAFPUG, которая проходила в московском офисе Adobe. Так что спешу поделиться впечатлениями от этого мероприятия. Они, скажу сразу, не особо положительные, но уж какие есть.&lt;/p&gt;  &lt;p&gt;Началось все с того, что я пришел несколько раньше положенного, спросил, где можно повесить куртку и где у них курят, после чего вышел на улицу, покурить. Через какое-то время следом за мной вышел молодой человек (я сознательно не буду называть его имени, давая ему возможность извиниться) и, обращаясь ко мне на &amp;quot;ты&amp;quot;, с нескрываемым удивлением приподняв брови, спросил: &amp;quot;А ты что, тоже программист?&amp;quot; Выяснив, что он разговаривает все-таки с разумной особью, молодой человек оборвал беседу и спешно удалился. Я, конечно, могу его понять, так же как и те люди, которые меня знают, или хотя бы видели, но, по-моему, подобное поведение является как минимум бестактностью граничащей с хамством, и уж точно не свидетельствует о большом уме человека.&lt;/p&gt;  &lt;p&gt;Первым в программе встречи был анонс конкурса Russian Flash Awards, в ходе которого был продемонстрирован видеоролик, смонтированный из работ участников конкурса прошлого года. Все бы ничего, только впечатление портило то, что многие работы были вставлены в ролик вместе с окном браузера, в котором они работали. На мой взгляд - это не профессионально.&lt;/p&gt;  &lt;p&gt;Далее был катастрофически занудный доклад Александра Козловского в котором он пытался продемонстрировать построение несложного AIR-приложения с использованием Papervision3D. Не знаю, сколько он готовился к этому докладу, но в процессе, то и дело случались какие-то заминки и сбои, что приводило к частым длительным паузам, во время которых скучающая аудитория была вынуждена наблюдать судорожные метания Александра в попытках сделать хоть что-нибудь. Сути и общих принципов в этом докладе было минут на 5, а хоть сколько-нибудь вдохновляющего результата я вообще не увидел, если не считать 3-х тормозных кубиков, которые предлагалось использовать в качестве меню. В общем, во время этого безобразия я постоянно клевал носом, а под конец и вовсе задремал и чуть не упал с кресла. Положение спасал только Артемий Малков (если я не ошибаюсь), который периодически коротко объяснял суть того, что в данный момент происходило или, по крайней мере, должно было происходить.&lt;/p&gt;  &lt;p&gt;Вдохновенность Артемия Малкова, который во время &amp;quot;Hands-on&amp;quot; повествовал о layout-ах и binding-ах, могла бы, как минимум, удивить человека, хотя бы раз видевшего Delphi. Ну а я лишь невесело усмехнулся, встал и ушел.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/2348825784435242352/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/3-rafpug.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2348825784435242352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2348825784435242352'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/3-rafpug.html' title='Впечатления от 3-й встречи RAFPUG'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-2604536284489930984</id><published>2008-02-16T23:21:00.000+03:00</published><updated>2008-02-16T23:38:56.271+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><title type='text'>computeSpectrum - двигатель всего</title><content type='html'>&lt;p&gt;Вдохновившись алхимическими опытами &lt;a href=&quot;http://0xffffff.ru/temp/&quot; target=&quot;_blank&quot;&gt;Татьяны Белой&lt;/a&gt; (огромное ей спасибо) и перекопав некоторое количество документации, я создал это:&lt;/p&gt;  &lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;http://dmitrykrasnov.ru/Experiments/MusicVisualisation/Eye/index.html&quot; target=&quot;_blank&quot;&gt;Eye (9.4 MB)&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://dmitrykrasnov.ru/Experiments/MusicVisualisation/Eye/index.html&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://dmitrykrasnov.ru/Experiments/MusicVisualisation/Eye/Screenshot.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;Боюсь, что какую-то ценность это имеет только для меня, т.к. ничего нового не изобретено, но получен опыт, да и похвастать очень хочется.&lt;/p&gt;  &lt;p&gt;PS: Градиенты в AS3 меня не обрадовали - излишняя сложность и дефицит возможностей. Вот если бы, скажем, можно было строить градиент вдоль кривой...&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/2604536284489930984/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/computespectrum.html#comment-form' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2604536284489930984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2604536284489930984'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/computespectrum.html' title='computeSpectrum - двигатель всего'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-2649041437645775243</id><published>2008-02-04T19:00:00.000+03:00</published><updated>2008-02-04T19:23:56.995+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CMF"/><category scheme="http://www.blogger.com/atom/ns#" term="CMS"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><title type='text'>MODx - серверная составляющая Flash-сайта</title><content type='html'>&lt;p&gt;MODx - функциональная, расширяемая и удобная система управления сайтом (Content Management System, CMS), свободно распространяемая по лицензии GNU GPL. Сами разработчики позиционируют ее даже как систему разработки сайтов (Content Management Framework , CMF).&lt;/p&gt;  &lt;p&gt;Почему MODx кажется мне удачной серверной составляющей Flash-сайтов? Поясню по пунктам:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Система разработана на языке PHP и для хранения данных использует СУБД MySQL. Это значит, не возникнет проблем с выбором хостинга. &lt;/li&gt;    &lt;li&gt;Гибкая система плагинов, сниппетов, шаблонов и чанков позволяет выводить документы практически в любом формате. Не является исключением и XML-формат, удобный для обмена данными с Flash. К примеру, можно получить XML, содержащий информацию об актуальной структуре сайта и использовать его при формировании навигационного меню. Или получите XML со списком графических файлов в папке и организуйте, легко обновляемую, галерею. И это лишь часть возможностей. &lt;/li&gt;    &lt;li&gt;Инструменты MODx позволяют легко и быстро создать HTML-версию сайта, обновление которой будет происходить автоматически и синхронно с Flash-версией. Таким образом, можно решить проблему поисковой индексации и угодить пользователям не желающим (или не имеющим возможности) установить Flash-плеер. &lt;/li&gt;    &lt;li&gt;Простая установка и настройка. Не менее простое сопровождение и расширение. И все это не требует каких-то особых навыков. Ну а если вы хорошо разбираетесь в PHP, то сможете творить чудеса. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Есть у MODx и недостаток - падение производительности при росте числа документов. Это становится заметно, когда количество документов приближается к 5000. Но такое количество документов свойственно крупным и очень крупным проектам.&lt;/p&gt;  &lt;p&gt;Таким образом, я бы рекомендовал использовать MODx при создании малых и средних Flash-сайтов, требующих регулярного обновления. Таковыми могут быть портфолио дизайнеров или художников, сайты промо-поддержки, корпоративные сайты малых и средних компаний и т.п.&lt;/p&gt;  &lt;p&gt;Информации о MODx в интернете довольно много, даже на русском языке. Достаточно воспользоваться Яndex по слову &amp;quot;MODx&amp;quot;. А официальный сайт находится по адресу: &lt;a href=&quot;http://modxcms.com/&quot; target=&quot;_blank&quot;&gt;modxcms.com&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/2649041437645775243/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/modx-flash.html#comment-form' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2649041437645775243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/2649041437645775243'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/modx-flash.html' title='MODx - серверная составляющая Flash-сайта'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7942007115115228150.post-5239706394180332493</id><published>2008-02-02T19:00:00.000+03:00</published><updated>2008-02-02T19:18:49.231+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AS3"/><category scheme="http://www.blogger.com/atom/ns#" term="FDT"/><category scheme="http://www.blogger.com/atom/ns#" term="Flash"/><category scheme="http://www.blogger.com/atom/ns#" term="Flex"/><category scheme="http://www.blogger.com/atom/ns#" term="IDE"/><category scheme="http://www.blogger.com/atom/ns#" term="SWC"/><title type='text'>Управления компиляцией и доступ к SWC-библиотекам в FDT</title><content type='html'>&lt;p&gt;Недавно я взялся за изучение Flash-платформы: почитал документацию, форумы, блоги, поковырялся в Adobe Flash CS3 Professional, собрал пару элементарных программ на AS3, для общего понимания - и как-то не понравился мне Flash.&lt;/p&gt;  &lt;p&gt;Ну, во-первых, как рабочая среда для программиста, он (Flash) ужасен. Я когда-то давно (лет 5-7 назад) программировал на Java. Так вот, после VisualAge и JBuilder, во Flash нельзя работать, можно только сидеть и горько плакать.&lt;/p&gt;  &lt;p&gt;Во-вторых, меня очень смутило так называемое единство графики и кода. Конечно если ты сам себе программист, дизайнер, архитектор и, заодно, начальник, то такая &amp;quot;единая среда&amp;quot; вполне удобна. Но серьезные задачи, при такой постановке дел, решать невозможно.&lt;/p&gt;  &lt;p&gt;Поскольку отказываться от дальнейшего изучения Flash-платформы я не собирался, а терпеть надругательство над своей, и без того нездоровой, психикой я счел небезопасным, было решено попытаться найти удобную IDE и разобраться с правильной организацией проекта.&lt;/p&gt;  &lt;p&gt;Я решил облегчить себе жизнь и не анализировать весь спектр существующих интегрированных сред, а руководствоваться при выборе IDE мнением компетентных людей. Как оказалось, выбор был, в общем-то, невелик:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Powerflasher FDT - удобная и функциональная среда разработки, представляющая собой плагин к Eclipse. &lt;/li&gt;    &lt;li&gt;FlashDevelop - бесплатный open source продукт. По отзывам и доступной документации, выглядит слабее FDT. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Вопрос оплаты для меня не стоял, открытый исходный код мне без надобности, так что проблема выбора меня не мучила, FDT показался мне наиболее удачным вариантом.&lt;/p&gt;  &lt;p&gt;Установка Eclipse и FDT особых проблем не вызвала. Прочтение FDT - User Guide / Getting Started / Basic AS3 tutorial дало мне возможность в 2-3 клика интегрировать Flex 3 SDK Beta 3 в FDT, создать проект, написать простой класс и запустить его.&lt;/p&gt;  &lt;p&gt;Восторгу не было предела. Да, я могу программировать, компилировать и запускать Flash-приложения! Но как мне управлять компиляцией? Как управлять шириной, высотой, фреймрейтом и параметрами безопасности конечного SWF-файла?&lt;/p&gt;  &lt;p&gt;С этим вопросом я обратился на &amp;quot;Flasher.ru&amp;quot;, где уважаемый господин &lt;a href=&quot;http://etcs.ru/&quot; target=&quot;_blank&quot;&gt;etc&lt;/a&gt; сильно озадачил меня, посоветовав подружить Flex SDK с FDT через Ant. Беглого просмотра документации по Ant хватило мне для того, чтобы ужаснуться до глубины души. Дело в том, что Ant - платформонезависимый аналог UNIX-утилиты make. Из опыта работы с ОС Linux я знаю, что make - мощный, удобный, но весьма сложный инструмент, на освоение которого может уйти какое-то время. Использование такого инструмента при сборке простых проектов - неоправданно и сравнимо с установкой и использованием в таких случаях сервера CVS или Subversion. Написать &amp;quot;Hello World&amp;quot;, сохранить его в CVS и собрать с помощью Ant - абсурд, не так ли? Конечно, Ant и Subversion нужно изучить, но не на этом этапе, а чуть позже.&lt;/p&gt;  &lt;p&gt;Немного поразмыслив, я решил найти более простой способ управления компиляцией, эмпирически изучая FDT. И нашел. Оказалось, что если кликнуть ПКМ по файлу класса в проекте и выбрать Run (или Debug) As / Open Run (или Debug) Dialog, а затем перейти к FDT AS3 Application / [файл класса], то на вкладке Compiler Arguments можно обнаружить поле Arguments, содержащую строку опций компилятора mxmlc. Редактируя эту строку, можно довольно гибко управлять компиляцией конечного SWF-файла. Разумеется, &lt;a href=&quot;http://livedocs.adobe.com/labs/flex3/html/help.html?content=compilers_14.html&quot; target=&quot;_blank&quot;&gt;описание опций компилятора mxmlc&lt;/a&gt; можно найти в Adobe LiveDocs.&lt;/p&gt;  &lt;p&gt;Казалось, счастье есть и можно с наслаждением предаваться программированию, ан нет. Flash - это графика, много графики, очень много графики. Ну не рисовать же все это самому программными средствами? Для этого есть дизайнеры. Flash CS3, как инструмент, будет им в самый раз. В идеале хотелось, чтобы дизайнер, создавая во Flash CS3 необходимый графический контент, имел возможность, в конечном счете, предоставить мне некий ресурс, из которого я мог бы брать графические элементы и использовать их в коде своего проекта под FDT.&lt;/p&gt;  &lt;p&gt;Глядя на мою неудовлетворенность, многоуважаемый господин &lt;a href=&quot;http://etcs.ru/&quot; target=&quot;_blank&quot;&gt;etc&lt;/a&gt; посоветовал мне посмотреть документацию по Flex SDK и метатегу Embed. И я посмотрел. Не буду сейчас описывать, как много нового я узнал, т.к. большую часть из этого я не понял. Главное, что я понял - ненужно разбираться с embedding-ом на третий день изучения Flash-платформы.&lt;/p&gt;  &lt;p&gt;После некоторых теоретических рассуждений и пары-тройки экспериментов я выяснил следующее:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Дизайнер должен создавать графический контент, оформляя отдельные его элементы в символы и компилируя наборы символов в SWC-библиотеку. &lt;/li&gt;    &lt;li&gt;В папке проекта следует (так, для порядка) создать папку lib и поместить туда SWC-библиотеку, предоставленную дизайнером. &lt;/li&gt;    &lt;li&gt;В FDT в окне Flash Explorer, нужно кликнуть ПКМ по файлу SWC-библиотеки и выбрать Source Folder / Add to Classpath. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;После этого символы, которые содержатся в SWC-библиотеке, станут доступны из кода проекта.&lt;/p&gt;  &lt;p&gt;PS: Я так и не понял чем руководствовался премногоуважаемый господин &lt;a href=&quot;http://etcs.ru/&quot; target=&quot;_blank&quot;&gt;etc&lt;/a&gt; давая мне такие своеобразные советы. Видимо, мудрость его так велика, что я не в состоянии постичь его помыслов. Тем не менее, его советы все же помогали мне ориентироваться в информационном пространстве, за что я безмерно ему благодарен. Надеюсь, он простит мне некоторую иронию в его адрес.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://dmitrykrasnov.blogspot.com/feeds/5239706394180332493/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/swc-fdt_5246.html#comment-form' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/5239706394180332493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7942007115115228150/posts/default/5239706394180332493'/><link rel='alternate' type='text/html' href='http://dmitrykrasnov.blogspot.com/2008/02/swc-fdt_5246.html' title='Управления компиляцией и доступ к SWC-библиотекам в FDT'/><author><name>Дмитрий Краснов</name><uri>http://www.blogger.com/profile/14215411495443159577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry></feed>