<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Профессиональная разработка интернет приложений</title>
	
	<link>http://pro-dev.ru</link>
	<description>Программирование на Java, PHP, Flash...</description>
	<lastBuildDate>Fri, 18 May 2012 16:48:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/webappdev" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="webappdev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>JQuery. Обработка нажатий в Iphone</title>
		<link>http://pro-dev.ru/2012/05/18/jquery-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d0%bd%d0%b0%d0%b6%d0%b0%d1%82%d0%b8%d0%b9-%d0%b2-iphone/</link>
		<comments>http://pro-dev.ru/2012/05/18/jquery-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d0%bd%d0%b0%d0%b6%d0%b0%d1%82%d0%b8%d0%b9-%d0%b2-iphone/#comments</comments>
		<pubDate>Fri, 18 May 2012 16:48:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=254</guid>
		<description><![CDATA[Ради интереса решил проверить один из своих Web проектов, как он работает под iPhone. В этом проекте большое количество javascript. Обнаружил, что кнопки, на которые с помощью jQuery повешено событие click, работают очень странно. При первом клике происходит их выделение &#8211; срабатывает css :hover, а сам клик отрабатывает только если кликнуть по той же кнопке [...]]]></description>
			<content:encoded><![CDATA[<p>Ради интереса решил проверить один из своих Web проектов, как он работает под iPhone. В этом проекте большое количество javascript. Обнаружил, что кнопки, на которые с помощью jQuery повешено событие click, работают очень странно. При первом клике происходит их выделение &#8211; срабатывает css :hover, а сам клик отрабатывает только если кликнуть по той же кнопке еще раз.</p>
<p>Выяснилось, что бразузер Safari, для некоторых элементов, не обрабатывает событие click, но на эти элементы можно повесить событие tap, touchstart. В итоге, я решил повесить на кнопку оба события, что решило мою проблему:</p>
<p>$(&#8216;#fn-cue&#8217;).bind(&#8216;click touchstart&#8217;, router.actions.cue);</p>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2012/05/18/jquery-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d0%bd%d0%b0%d0%b6%d0%b0%d1%82%d0%b8%d0%b9-%d0%b2-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Конференция для веб-разработчиков «ZFConf 2012»</title>
		<link>http://pro-dev.ru/2012/04/17/%d0%ba%d0%be%d0%bd%d1%84%d0%b5%d1%80%d0%b5%d0%bd%d1%86%d0%b8%d1%8f-%d0%b4%d0%bb%d1%8f-%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%87%d0%b8%d0%ba%d0%be%d0%b2-%c2%abzfconf-201/</link>
		<comments>http://pro-dev.ru/2012/04/17/%d0%ba%d0%be%d0%bd%d1%84%d0%b5%d1%80%d0%b5%d0%bd%d1%86%d0%b8%d1%8f-%d0%b4%d0%bb%d1%8f-%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%87%d0%b8%d0%ba%d0%be%d0%b2-%c2%abzfconf-201/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 07:06:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=250</guid>
		<description><![CDATA[Конференция для веб-разработчиков «ZFConf 2012» 21 апреля, Москва 21 апреля в Москве пройдет очередная ежегодная конференция для веб-разработчиков ZFConf 2012, посвященная популярной платформе Zend Framework. В этом году с докладом выступит гость из Италии — Enrico Zimuel из Zend Framework Core Team. А также Виктор Фараздаги, Александр Веремьев, Алексей Качаев и многие другие специалисты. На [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zfconf.ru/" target="_blank"><img src="http://www.zfconf.ru/images/logos/zfconf/logo_habr_friends_20120329.jpg" alt="" width="192" height="139" /></a></p>
<h1>Конференция для веб-разработчиков «ZFConf 2012»</h1>
<h2>21 апреля, Москва</h2>
<p>21 апреля в Москве пройдет очередная ежегодная конференция для  веб-разработчиков ZFConf 2012, посвященная популярной платформе Zend  Framework.</p>
<p>В этом году с докладом выступит гость из Италии — Enrico Zimuel из Zend  Framework Core Team. А также Виктор Фараздаги, Александр Веремьев,  Алексей Качаев и многие другие специалисты.</p>
<p>На сайте опубликован полный <a href="http://www.zfconf.ru/2012/talks/" target="_blank">список докладов</a> и открыта <a href="http://www.zfconf.ru/2012/registration/" target="_blank">регистрация</a>.</p>
<p><strong>Доклады</strong></p>
<p><strong><a href="http://www.zfconf.ru/2012/talks/zend-framework-2-a-quick-start/" target="_blank">Zend Framework 2, a quick start</a><br />
</strong>Enrico Zimuel (<a href="http://www.zend.com/" target="_blank">Zend Technologies</a>, Zend Framework Core Team)<br />
<strong><br />
<a href="http://www.zfconf.ru/2012/talks/code-generation-and-scaffolding-in-zend-framework-2/" target="_blank">Code Generation и Scaffolding в Zend Framework 2</a><br />
</strong>Виктор Фараздаги (Simple Square, Senior Developer)<br />
<strong><br />
<a href="http://www.zfconf.ru/2012/talks/ibm-db2-embedded-sql-for-php-implementation/" target="_blank">Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL</a><br />
</strong>Александр Веремьев (Zend Framework contributor)<br />
<strong><br />
<a href="http://www.zfconf.ru/2012/talks/distributed-network-applications-with-zend-framework-2-and-zeromq/" target="_blank">Распределенные сетевые приложения c Zend Framework 2 и ZeroMQ</a><br />
</strong>Алексей Качаев (<a href="http://cogniance.com/" target="_blank">Сogniance</a>, Senior Software Engineer)<br />
<strong><br />
<a href="http://www.zfconf.ru/2012/talks/dependency-management-in-php-and-zend-framework-2/" target="_blank">Dependency Management в PHP и Zend Framework 2</a><br />
</strong>Кирилл Чебунин (<a href="http://www.creara.ru/" target="_blank">Creara</a>, Senior PHP Developer)<br />
<strong><br />
<a href="http://www.zfconf.ru/2012/talks/caching-without-misses-with-zend-framework-2/" target="_blank">Кеш без промахов средствами Zend Framework 2</a><br />
</strong>Никита Грибалев (<a href="http://www.nival.com/" target="_blank">Nival</a>, Lead PHP Developer)<br />
<strong><br />
<a href="http://www.zfconf.ru/2012/talks/architecture-design-implementation-and-organization-of-the-development-process-on-the-example-of-own-zend-framework-project/" target="_blank">Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного проекта на основе ZF</a><br />
</strong>Антон Великанов (<a href="http://sandsign.ru/" target="_blank">Sand Sign</a>, Founder&amp;CEO)<br />
<strong><br />
<a href="http://www.zfconf.ru/2012/talks/capistrano-for-deployment-php-applications/" target="_blank">Capistrano для деплоймента PHP-приложений</a></strong><br />
Роман Лапин (<a href="http://evercodelab.com/" target="_blank">Evercode Lab</a>, Senior Developer)</p>
<p>К участию также приглашаются <a href="http://www.zfconf.ru/2012/sponsors/" target="_blank">спонсоры</a> и инфопартнеры. По всем предложениям и вопросам пишите, пожалуйста, через <a href="http://www.zfconf.ru/contacts/" target="_blank">форму обратной связи</a>.</p>
<p><strong>Следите за последними новостями:</strong></p>
<ul>
<li><strong>Хабраблог:</strong> <a href="http://habr.ru/company/wizartech/blog/" target="_blank">habr.ru/company/wizartech/blog/</a></li>
<li><strong>Facebook:</strong> <a href="http://www.facebook.com/groups/143714275748061/" target="_blank">facebook.com/groups/143714275748061/</a></li>
<li><strong>ВКонтакте:</strong> <a href="http://vk.com/zfconf" target="_blank">vk.com/zfconf</a></li>
<li><strong>RSS:</strong> <a href="http://feeds.feedburner.com/zfconf" target="_blank">feeds.feedburner.com/zfconf</a></li>
<li><strong>Twitter:</strong> <a href="http://twitter.com/zfconf" target="_blank">twitter.com/zfconf</a></li>
</ul>
<p><strong>Организатор:</strong> <a href="http://www.wizartech.ru/" target="_blank">компания Wizartech</a><br />
<strong>Партнеры:</strong> <a href="http://zendframework.ru/" target="_blank">сообщество Zend Framework</a> и <a href="http://frameworksdays.com/" target="_blank">конференция Frameworks Days</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2012/04/17/%d0%ba%d0%be%d0%bd%d1%84%d0%b5%d1%80%d0%b5%d0%bd%d1%86%d0%b8%d1%8f-%d0%b4%d0%bb%d1%8f-%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%87%d0%b8%d0%ba%d0%be%d0%b2-%c2%abzfconf-201/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex. Должен ли ItemRenderer знать тип модели?</title>
		<link>http://pro-dev.ru/2011/08/02/flex-%d0%b4%d0%be%d0%bb%d0%b6%d0%b5%d0%bd-%d0%bb%d0%b8-itemrenderer-%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d1%82%d0%b8%d0%bf-%d0%bc%d0%be%d0%b4%d0%b5%d0%bb%d0%b8/</link>
		<comments>http://pro-dev.ru/2011/08/02/flex-%d0%b4%d0%be%d0%bb%d0%b6%d0%b5%d0%bd-%d0%bb%d0%b8-itemrenderer-%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d1%82%d0%b8%d0%bf-%d0%bc%d0%be%d0%b4%d0%b5%d0%bb%d0%b8/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 14:41:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=241</guid>
		<description><![CDATA[Начать нужно с того, нравится ли вам разрабатывать на строго типизированном языке программирования или на не типизированном. В последнем случае, вам не имеет смысла читать статью дальше. Если вам, как и мне, по душе строгая типизация, давайте поразмышляем&#8230; Как известно, для отображения данных, в ItemRenderer присутствует переменная data. Проблема заключается в том, что тип этой [...]]]></description>
			<content:encoded><![CDATA[<p>Начать нужно с того, нравится ли вам разрабатывать на строго типизированном языке программирования или на не типизированном. В последнем случае, вам не имеет смысла читать статью дальше. Если вам, как и мне, по душе строгая типизация, давайте поразмышляем&#8230;</p>
<p>Как известно, для отображения данных, в ItemRenderer присутствует переменная data. Проблема заключается в том, что тип этой переменной &#8211; Object. И это не приемлимо, если все модели в проекте типизированны.</p>
<p>Я считаю, что переменная data, в ItemRenderer должна иметь тип обрабатываемого объекта. Это позволит избежать досадных ошибок при рефакторинге &#8211; о них вы узнаете еще до запуска программы, на этапе компиляции. А это, как вы понимаете, не малого стоит.</p>
<p>Поэтому я предлагаю во всех ItemRender-ах использовать типизированные переменные отображаемых данных. Например, я поступаю так:</p>
<pre>&lt;fx:Declarations&gt;
  &lt;my:MyClass id="myVar"&gt;
    {data}
  &lt;/my:MyClass&gt;
&lt;/fx:Declarations&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2011/08/02/flex-%d0%b4%d0%be%d0%bb%d0%b6%d0%b5%d0%bd-%d0%bb%d0%b8-itemrenderer-%d0%b7%d0%bd%d0%b0%d1%82%d1%8c-%d1%82%d0%b8%d0%bf-%d0%bc%d0%be%d0%b4%d0%b5%d0%bb%d0%b8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Profiler во Flash Builder. Проблема запуска</title>
		<link>http://pro-dev.ru/2011/07/26/profiler-%d0%b2%d0%be-flash-builder-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d0%b0-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b0/</link>
		<comments>http://pro-dev.ru/2011/07/26/profiler-%d0%b2%d0%be-flash-builder-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d0%b0-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b0/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 20:50:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[профайлер]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=238</guid>
		<description><![CDATA[Разрабатывая программы, я люблю пользоваться профайлером. Очень уж мне хочется, чтобы мои творения работали быстро и приносили максимальное удовольствие пользователям. Разработка на Flex &#8211; не исключение. Однако, меняя рабочие места, очень часто я сталкивался с проблемой, что на некоторых машинах профайлер отказывается запускаться. Долгое время мне не удавалось вычислить причину данной проблемы. Вроде бы и [...]]]></description>
			<content:encoded><![CDATA[<p>Разрабатывая программы, я люблю пользоваться профайлером. Очень уж мне хочется, чтобы мои творения работали быстро и приносили максимальное удовольствие пользователям. Разработка на Flex &#8211; не исключение.</p>
<p>Однако, меняя рабочие места, очень часто я сталкивался с проблемой, что на некоторых машинах профайлер отказывается запускаться. Долгое время мне не удавалось вычислить причину данной проблемы. Вроде бы и дистрибутив один и тот же устанавливается, система такая же &#8211; а не работает.</p>
<p>И вот, свершилось! Когда в очередной раз профайлер не запустился, я заметил, что workspaсe создал в папке, путь к которой содержит пробел. А не из-за него ли это, подумал я. Оказалось, что я попал в точку. Вот и решение &#8211; <strong>в пути к рабочему пространству проекта не должно быть пробелов</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2011/07/26/profiler-%d0%b2%d0%be-flash-builder-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d0%b0-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d0%ba%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Список докладов и финальная регистрация ZFConf 2011 — второй российской конференции по Zend Framework</title>
		<link>http://pro-dev.ru/2011/05/10/%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%b4%d0%be%d0%ba%d0%bb%d0%b0%d0%b4%d0%be%d0%b2-%d0%b8-%d1%84%d0%b8%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d1%80%d0%b5%d0%b3%d0%b8%d1%81%d1%82%d1%80%d0%b0/</link>
		<comments>http://pro-dev.ru/2011/05/10/%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%b4%d0%be%d0%ba%d0%bb%d0%b0%d0%b4%d0%be%d0%b2-%d0%b8-%d1%84%d0%b8%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d1%80%d0%b5%d0%b3%d0%b8%d1%81%d1%82%d1%80%d0%b0/#comments</comments>
		<pubDate>Tue, 10 May 2011 08:41:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=235</guid>
		<description><![CDATA[Основные подготовительные работы по конференции закончены. Доклады сформированы. Среди спикеров представители KnpLabs, Magento, JetBrains, Sphinx и других известных компаний. Открыта финальная регистрация! Если Вы проходили предварительную регистрацию, то для прохождения финальной регистрации Вам нужно перейти по специальной ссылке, отправленной на e-mail. Введенную ранее информацию нужно будет только подтвердить. Если ссылка не приходила Вам, ее можно [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zfconf.ru/" target="_blank"><img class="alignleft" src="http://cs9981.vkontakte.ru/g14951507/a_78058dc0.jpg" alt="" width="192" height="139" /></a></p>
<p>Основные подготовительные работы по конференции закончены. Доклады  сформированы. Среди спикеров представители KnpLabs, Magento, JetBrains,  Sphinx и других известных компаний.</p>
<p>Открыта <a href="http://www.zfconf.ru/registration/" target="_blank"><strong>финальная регистрация</strong></a>!</p>
<p><strong>Если Вы проходили предварительную регистрацию</strong>, то для  прохождения финальной регистрации Вам нужно перейти по специальной  ссылке, отправленной на e-mail. Введенную ранее информацию нужно будет  только подтвердить. Если ссылка не приходила Вам, ее можно запросить  через <a href="http://www.zfconf.ru/get-registration-path/" target="_blank">специальную форму</a>.</p>
<p>Пожалуйста, обратите внимание на то, что <strong>изменилось <a href="http://www.zfconf.ru/2011/location/" target="_blank">место проведения</a></strong>!  Мероприятие будет проходить на прошлогодней площадке — в актовом зале  ЛГТЦ (Ленгипротранс-Центр), по адресу: Московский пр., 143, ст. м.  «Электросила». Кофе-брейки и обсуждения на флипчартах будут проходить в  фойе.</p>
<p><strong>Cписок докладов:</strong></p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/flexible-architecture-using-dependency-injection/" target="_blank">Гибкая архитектура Zend Framework приложений с использованием Dependency Injection</a></strong><br />
Алексей Качаев (<a href="http://cogniance.com/" target="_blank">Сogniance</a>, Senior PHP Developer)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/performance-increasing-with-phpdaemon-varnish-esi/" target="_blank">Воюем за ресурсы: Повышение производительности Zend Framework приложения с помощью phpDaemon, Varnish и ESI</a></strong><br />
Алексей Качаев (<a href="http://cogniance.com/" target="_blank">Сogniance</a>, Senior PHP Developer)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/behavior-driven-development/" target="_blank">Behavior Driven Development в PHP и Zend Framework</a></strong><br />
Константин Кудряшов (<a href="http://www.knplabs.com/" target="_blank">KnpLabs</a>, Senior Web Developer)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/multitasking-distributed-system-with-job-queue/" target="_blank">Разделение труда: Организация многозадачной, распределенной системы в Zend Framework с помощью Job Queue</a></strong><br />
Александр Готгельф (<a href="http://www.magentocommerce.com/" target="_blank">Magento</a>, PHP-разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/how-can-help-development-environment/" target="_blank">Как может помочь среда разработки при написании приложения на Zend Framework?</a></strong><br />
Николай Матвеев (<a href="http://www.jetbrains.com/" target="_blank">JetBrains</a>, разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/creating-rest-api-for-third-party-developers-and-mobile-devices-with-oauth/" target="_blank">Создание REST-API для сторонних разработчиков и мобильных устройств с авторизацией по протоколу OAuth 1.0</a></strong><br />
Дмитрий Чижевский (<a href="http://zenmoney.ru/" target="_blank">Дзен-мани</a>, разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/fat-model-through-orm-development-history/" target="_blank">Толстая модель: История разработки собственного ORM</a></strong><br />
Михаил Шамин (<a href="http://geometria.ru/" target="_blank">Геометрия</a>, ведущий разработчик)</p>
<p><strong><a href="http://www.zfconf.ru/2011/topics/what-is-sphinx-and-how-use-it-with-php/" target="_blank">Что такое Sphinx, зачем он вообще нужен и как его использовать с PHP (от простого индекса до поискового кластера)</a></strong><br />
Владимир Федорков (<a href="http://sphinxsearch.com/" target="_blank">Sphinx</a>, Director of Professional Services)</p>
<p>Стоимость участия в мероприятии составит 1500 руб. В данную сумму  входит: участие в самой конференции, кофе-брейки (от внешней  кейтеринг-компании), пакет материалов участника и доступ к  профессиональным видеозаписям докладов (после мероприятия). Доступно <a href="http://www.zfconf.ru/payment-types/" target="_blank">множество способов оплаты</a>.</p>
<p>Торопитесь, <strong>количество мест ограничено</strong>!</p>
<p>Обязательно следите за последними новостями:<br />
<strong>RSS-канал:</strong> <a href="http://feeds.feedburner.com/zfconf" target="_blank">feeds.feedburner.com/zfconf</a><br />
<strong>Twitter:</strong> <a href="http://twitter.com/zfconf" target="_blank">@zfconf</a><br />
<strong>Группа ВКонтакте:</strong> <a href="http://vkontakte.ru/club14951507" target="_blank">vkontakte.ru/club14951507</a></p>
<p><strong>Организатор:</strong> <a href="http://www.wizartech.ru/" target="_blank">компания Wizartech</a><br />
<strong>Партнеры:</strong> <a href="http://zendframework.ru/" target="_blank">сообщество zendframework.ru</a> и <a href="http://zfconf.org.ua/" target="_blank">конференция ZFConf Ukraine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2011/05/10/%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%b4%d0%be%d0%ba%d0%bb%d0%b0%d0%b4%d0%be%d0%b2-%d0%b8-%d1%84%d0%b8%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d1%80%d0%b5%d0%b3%d0%b8%d1%81%d1%82%d1%80%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка BlaseDS</title>
		<link>http://pro-dev.ru/2011/03/25/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-blaseds/</link>
		<comments>http://pro-dev.ru/2011/03/25/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-blaseds/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 06:04:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[первый запуск]]></category>
		<category><![CDATA[установка]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=232</guid>
		<description><![CDATA[Для работы BlaseDS, на вашем компьютере должна быть установлена среда выполнения Java. Скачать ее можно тут: http://www.oracle.com/technetwork/java/javase/downloads/index.html. После ее установки, можно приступать к экспериментам с BlaseDS. Для начала скачаем последнюю версию сервера BlaseDS. Сделать это можно на странице http://opensource.adobe.com/wiki/display/blazeds/Downloads . Для загрузки потребуется регистрация. На странице загрузки вам будет предложено 3 варианта дистрибутива: Turnkey &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Для работы BlaseDS, на вашем компьютере должна быть установлена среда выполнения Java. Скачать ее можно тут: http://www.oracle.com/technetwork/java/javase/downloads/index.html. После ее установки, можно приступать к экспериментам с BlaseDS.</p>
<p>Для начала скачаем последнюю версию сервера BlaseDS. Сделать это  можно на странице  http://opensource.adobe.com/wiki/display/blazeds/Downloads . Для  загрузки потребуется регистрация. На странице загрузки вам будет  предложено 3 варианта дистрибутива:</p>
<ul>
<li>Turnkey &#8211; сервер, полностью готовый к работе. Для начала скачаем именно его</li>
<li>Binary distribution &#8211; war архив для установки в сервер приложений</li>
<li>Source &#8211; исходные коды сервера</li>
</ul>
<p>Скопируйте содержимое архива, во вновь созданную папку. Теперь можно  совершить первый запуск сервера. Но не торопитесь. С сервером поставляется несколько ознакомительных приложений, для работы которых нужна тестовая база данных. К счастью она тоже включена в поставку. Ее нужно только запустить. Для этого в командной строке переходим в папку sampledb и выполняем команду startdb.</p>
<p>После запуска базы данных можно запустить tomcat. Для этого перейдите в папку tomcat\bin и  запустите скрипт strartup. После старта сервера, перейдите в браузере на адрес http://localhost:8400/ , и вы увидите главную страницу BlaseDS</p>
<p>С этой страницы вы можете перейти в панель управления сервером или на страницу с ознакомительными приложениями. Все они уже готовы к работе.</p>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2011/03/25/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-blaseds/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP и FileReference во Flex</title>
		<link>http://pro-dev.ru/2011/03/23/php-%d0%b8-filereference-%d0%b2%d0%be-flex/</link>
		<comments>http://pro-dev.ru/2011/03/23/php-%d0%b8-filereference-%d0%b2%d0%be-flex/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 06:05:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[загрузка]]></category>
		<category><![CDATA[сессия]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=226</guid>
		<description><![CDATA[В любом RIA приложении необходима авторизация. Благо сделать ее не составляет труда. Чаще всего авторизация проводится на серверной части и ее результаты записываются в параметры сессии. Это позволяет запрашивать данные авторизации пользователя только один раз, за весь сеанс его работы с приложением. В связке Flex и PHP такая схема работает без проблем. Все запросы к [...]]]></description>
			<content:encoded><![CDATA[<p>В любом RIA приложении необходима авторизация. Благо сделать ее не составляет труда. Чаще всего авторизация проводится на серверной части и ее результаты записываются в параметры сессии. Это позволяет запрашивать данные авторизации пользователя только один раз, за весь сеанс его работы с приложением.</p>
<p>В связке Flex и PHP такая схема работает без проблем. Все запросы к серверной части можно защитить проверкой данных авторизации в сессии PHP. Но если вы попробуете проверить авторизацию в обработчике POST запроса загрузки файла из FileReference, у вас ничего не выйдет. Сессия в обработчике этого запроса будет пустая.</p>
<p>Сессия PHP связывается с сессией браузера посредством идентификатора, хранящегося в cookie браузера. Проблема же заключается в том, что при запросе через FileReference cookie не передаются. В результате PHP открывает новую сессию.</p>
<p>Для того, чтобы PHP использовал уже имеющуюся сессию, необходимо к адресу запроса добавить параметр идентификатора текущей сессии. Например:</p>
<pre>public function browse():void
{
	fileReference = new FileReference();
	fileReference.addEventListener(Event.SELECT, onDocumentSelected);
	fileReference.browse();
}

private function onDocumentSelected(event:Event):void
{
	getSession();
}

private function sessionRecieved(sessionId:String):void
{
	var url:String = "http://example.com?PHPSESSID=" + sessionId;
	var urlRequest:URLRequest = new URLRequest(url);
	fileReference.upload(urlRequest);
}
</pre>
<p>В примере, в обработчике выбора документа вызывается метод getSession(), запрашивающий у PHP части идентификатор сессии. Когда этот идентификатор получен, вызывается метод sessionRecieved, помещающий идентификаторы сессии в строку запроса и инициирующий загрузку файла. Идентификатор сессии помещается в параметр PHPSESSID.</p>
<p>Так же идентификатор PHP cессии можно запросить через JavaScript. Но мне этот вариант не нравится.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 156px; width: 1px; height: 1px; overflow: hidden;">public function execute():void<br />
{<br />
fileReference = new FileReference();<br />
fileReference.addEventListener(Event.SELECT, onDocumentSelected);<br />
fileReference.addEventListener(Event.OPEN, openHandler);<br />
fileReference.addEventListener(IOErrorEvent.IO_ERROR, ioErrorUpload);<br />
fileReference.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError);<br />
fileReference.addEventListener(Event.CANCEL, cancelUpload);<br />
fileReference.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCopmpleteDataHandler);<br />
fileReference.browse([FileUpload.DOCUMENTS_FILTER, FileUpload.IMAGES_FILTER]);<br />
}</p>
<p>private function uploadCopmpleteDataHandler( event:DataEvent ) :void {<br />
logger.debug(&laquo;responseHandler::event.data = &raquo; +(event.data as String));<br />
var data:Object = JSON.decode(event.data as String);<br />
if (data.result != &laquo;ok&raquo;){<br />
model.sharedFiles.state = SharedFiles.UNPENDING_STATE;<br />
AlertDefault.show(ResourceManager.getInstance().getString(&#8216;ui_res&#8217;, &#8216;file_uppload_fail&#8217;), ResourceManager.getInstance().getString(&#8216;ui_res&#8217;, &#8216;ufc_alrt_00&#8242;));<br />
}else{<br />
new UploadFileCheckFileConvCom().execute();<br />
}<br />
}</p>
<p>private function onDocumentSelected(event:Event):void<br />
{<br />
if((event.currentTarget as FileReference).size &gt; 15728640){<br />
//check that file size &lt; 15728640<br />
AlertDefault.show(ResourceManager.getInstance().getString(&#8216;ui_res&#8217;, &#8216;upload_file_size_limit_message&#8217;));<br />
}<br />
else{<br />
if(model.guiState.isAllowedLoadDocuments || model.conference.iam.privileges.hasBroadcast){<br />
model.sharedFiles.state = SharedFiles.PENDING_STATE;<br />
new GetSession(sessionRecieved, getSessionError).call();<br />
}else{<br />
AlertDefault.show(ResourceManager.getInstance().getString(&#8216;ui_res&#8217;, &#8216;deny_upload_document_message&#8217;));<br />
}<br />
}<br />
}</p>
<p>private function getSessionError():void{<br />
model.sharedFiles.state = SharedFiles.UNPENDING_STATE;<br />
}</p>
<p>private function sessionRecieved(sessionId:String):void<br />
{<br />
var url:String = ConferenceManagerModel.httpBaseUrl + &laquo;?act=upload&raquo;;</p>
<p>url += (&laquo;&amp;conf_url=&raquo; + model.conference.urlConf);<br />
url +=  (!(ConferenceManagerModel.isOwner || ConferenceManagerModel.isRegistered) ? &laquo;&amp;author_reg=0&#8243; : &laquo;&amp;author_reg=1&#8243;);<br />
url += &laquo;&amp;author=&raquo; + (!(ConferenceManagerModel.isOwner || ConferenceManagerModel.isRegistered) ? model.conference.iam.name : ConferenceManagerModel.uid) ;<br />
url += &laquo;&amp;PHPSESSID=&raquo; + sessionId;<br />
logger.info(&laquo;Attempt of upploading file to url: &raquo; + url);<br />
var urlRequest:URLRequest = new URLRequest(url);<br />
fileReference.upload(urlRequest);<br />
}</p></div>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2011/03/23/php-%d0%b8-filereference-%d0%b2%d0%be-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что такое BlazeDS</title>
		<link>http://pro-dev.ru/2011/03/02/%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-blazeds/</link>
		<comments>http://pro-dev.ru/2011/03/02/%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-blazeds/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 16:41:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[описание]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=222</guid>
		<description><![CDATA[Разрабатывая RIA приложение на Flex, для обработки данных необходимо использовать http сервер. Для этих целей подойдет и обычный сервер Apache, с установленным на него PHP. Общение серверной и клиентской части будет происходить посредством HTTP запросов, в которых будут передаваться данные в формате XML или JSON. У технологии Flash есть родной формат передачи данных &#8211; AMF3. [...]]]></description>
			<content:encoded><![CDATA[<p>Разрабатывая RIA приложение на Flex, для обработки данных необходимо использовать http сервер. Для этих целей подойдет и обычный сервер Apache, с установленным на него PHP. Общение серверной и клиентской части будет происходить посредством HTTP запросов, в которых будут передаваться данные в формате XML или JSON.</p>
<p>У технологии Flash есть родной формат передачи данных &#8211; AMF3. Описанную выше конфигурацию можно доработать для поддержки этого формата, установив на Apache библиотеку AMFPHP.</p>
<p>Проблема заключается в том, что для небольших приложений языка PHP вполне хватает. Но если планируется создать крупную систему, нужно подумать о переходе на более пригодный для нее язык &#8211; например Java. Кроме того, для осуществления взаимодействия программ на этом языке с Flex клиентами есть замечательный сервер &#8211; BlazeDS.</p>
<p>BlazeDS &#8211; это веб приложение, запускаемое в контейнере сервлетов или сервере приложений Java. BlazeDS представляет собой набор сервисов, управление которыми осуществляется посредством JMX агентов.  Его возможности:</p>
<ul>
<li>Выполняет удаленные Java методы по запросу Flex приложения</li>
<li>Транслирует Java объекты в объекты AS3 при возвращении результата выполнения удаленного Java метода</li>
<li>Транслирует AS3 объекты в объекты Java при вызове уделенного Java метода из Flex приложения</li>
<li>Обслуживает соединения между Flex приложением и Java приложением</li>
<li>Доставляет данные на клиент без запроса</li>
</ul>
<p>В скором времени на блоге появятся статьи, подробно описывающие создание RIA приложений с использованием BlazeDS.</p>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2011/03/02/%d1%87%d1%82%d0%be-%d1%82%d0%b0%d0%ba%d0%be%d0%b5-blazeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Недостаток конструкции WITH</title>
		<link>http://pro-dev.ru/2011/02/18/%d0%bd%d0%b5%d0%b4%d0%be%d1%81%d1%82%d0%b0%d1%82%d0%be%d0%ba-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%86%d0%b8%d0%b8-with/</link>
		<comments>http://pro-dev.ru/2011/02/18/%d0%bd%d0%b5%d0%b4%d0%be%d1%81%d1%82%d0%b0%d1%82%d0%be%d0%ba-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%86%d0%b8%d0%b8-with/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 12:03:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[with]]></category>
		<category><![CDATA[компилятор]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=220</guid>
		<description><![CDATA[Вот что написано про конструкцию &#171;with&#187; в документации по ActionScript: Establishes a default object to be used for the execution of a statement or statements, potentially reducing the amount of code that needs to be written. То есть конструкция &#171;with&#187; должна обеспечивать уменьшение объема кода. Но кроме красивого кода, приложение должно отличаться еще и надежностью. [...]]]></description>
			<content:encoded><![CDATA[<p>Вот что написано про конструкцию &laquo;with&raquo; в документации по ActionScript:</p>
<blockquote>
<table class="summaryTable" cellspacing="0" cellpadding="3">
<tbody>
<tr class="row0">
<td class="summaryTableStatementCol"></td>
<td class="summaryTableLastCol">Establishes  a default object to be used for the execution of a statement or  statements, potentially reducing the amount of code that needs to be  written.</td>
</tr>
</tbody>
</table>
</blockquote>
<p>То есть конструкция &laquo;with&raquo; должна обеспечивать уменьшение объема кода. Но кроме красивого кода, приложение должно отличаться еще и надежностью. А как раз с этой точки зрения данная конструкция показывает себя с негативной стороны. Дело в том, что компилятор Flex не может обнаружить отсутствующие переменные в объекте, переданном в &laquo;with&raquo;.</p>
<p>Например, если у нас есть класс Foo, а мы с помощью &laquo;with&raquo; попробуем вызвать несуществующий метод &laquo;bar&raquo; объекта этого класса, компилятор будет молчать:</p>
<pre>var foo:Foo = new Foo();
with (foo)
{
    bar();
}
</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<table class="summaryTable" cellspacing="0" cellpadding="3">
<tbody>
<tr class="row0">
<td class="summaryTableStatementCol"></td>
<td class="summaryTableLastCol">Establishes  a default object to be used for the execution of a statement or  statements, potentially reducing the amount of code that needs to be  written.</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2011/02/18/%d0%bd%d0%b5%d0%b4%d0%be%d1%81%d1%82%d0%b0%d1%82%d0%be%d0%ba-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%86%d0%b8%d0%b8-with/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex 4. При наведении мерцают кнопки</title>
		<link>http://pro-dev.ru/2010/12/02/flex-4-%d0%bf%d1%80%d0%b8-%d0%bd%d0%b0%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b8-%d0%bc%d0%b5%d1%80%d1%86%d0%b0%d1%8e%d1%82-%d0%ba%d0%bd%d0%be%d0%bf%d0%ba%d0%b8/</link>
		<comments>http://pro-dev.ru/2010/12/02/flex-4-%d0%bf%d1%80%d0%b8-%d0%bd%d0%b0%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b8-%d0%bc%d0%b5%d1%80%d1%86%d0%b0%d1%8e%d1%82-%d0%ba%d0%bd%d0%be%d0%bf%d0%ba%d0%b8/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 14:36:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[кнопки]]></category>
		<category><![CDATA[скин]]></category>
		<category><![CDATA[события]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=213</guid>
		<description><![CDATA[Разрабатывая на Flex 4 видеоплеер, элементы управления которого скрываются, когда мышь выходит за его пределы и появляются, когда мышь оказывается над ним, я использовал события объекта класса Application mouseOut и mouseOver. В обработчике первого события устанавливался флаг, что мышь за пределами приложения, в обработчике второго, данный флаг переводился в значение, сигнализирующее наличие указателя мыши над [...]]]></description>
			<content:encoded><![CDATA[<p>Разрабатывая на Flex 4 видеоплеер, элементы управления которого скрываются, когда мышь выходит за его пределы и появляются, когда мышь оказывается над ним, я использовал события объекта класса Application mouseOut и mouseOver. В обработчике первого события устанавливался флаг, что мышь за пределами приложения, в обработчике второго, данный флаг переводился в значение, сигнализирующее наличие указателя мыши над приложением. Свойство visible, всех элементов управления было привязано к этому флагу.</p>
<p>Плеер работал как надо, но был замечен один недостаток: при наведении мыши на любой из элементов управления, которые представляли собой объекты класса Button, наблюдалось моргание остальных элементов. Было вычислено, что происходило это из-за того, что при наведении на кнопку, флаг описывающий положение курсора, быстро переключался туда и обратно.</p>
<p>Решением данной проблемы является использование событий rollOver и rollOut, вместо mouseOver и mouseOut. В подробности я не вдавался, т.к. и без этого потратил достаточно времени на решение такой простой и в то же время очевидной проблемы.</p>
]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2010/12/02/flex-4-%d0%bf%d1%80%d0%b8-%d0%bd%d0%b0%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b8-%d0%bc%d0%b5%d1%80%d1%86%d0%b0%d1%8e%d1%82-%d0%ba%d0%bd%d0%be%d0%bf%d0%ba%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

