<?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/" version="2.0">

<channel>
	<title>Профессиональная разработка интернет приложений</title>
	
	<link>http://pro-dev.ru</link>
	<description>Java, PHP, ROR...</description>
	<pubDate>Mon, 01 Feb 2010 15:39:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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>В конце марта 2010 г. в Санкт-Петербурге пройдет первая в России конференция по Zend Framework</title>
		<link>http://pro-dev.ru/2010/02/01/zconf/</link>
		<comments>http://pro-dev.ru/2010/02/01/zconf/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:35:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Zend Framework]]></category>

		<category><![CDATA[конференция]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=144</guid>
		<description><![CDATA[
На днях закончился прием тезисов по планируемым докладам. Примечательно, что в состав докладчиков вошли ведущие участники русскоязычного сообщества ZF, опытнейшие специалисты и лично один из создателей фрэймворка!

Участие в конференции планируется сделать бесплатным или за небольшую стоимость. На данный момент уже открыта предварительная регистрация на конференцию! Для решения ряда вопросов организаторам очень важно сейчас понять приблизительное [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zfconf.ru/" target="_blank"><img src="http://lh5.ggpht.com/_LTrMB58vSzk/S2XRVWUWqMI/AAAAAAAAABw/ItmlHrVIMVs/s800/205x175.png" width="205" height="175" align="left"></a></p>
<p>На днях закончился прием тезисов по планируемым докладам. Примечательно, что в состав докладчиков вошли ведущие участники русскоязычного сообщества ZF, опытнейшие специалисты и лично один из создателей фрэймворка!</p>
<p>
Участие в конференции планируется сделать бесплатным или за небольшую стоимость. На данный момент уже открыта <a href="http://www.zfconf.ru/pre-registration.php" target="_blank"><strong>предварительная регистрация</strong></a> на конференцию! Для решения ряда вопросов организаторам <strong>очень важно</strong> сейчас понять приблизительное количество человек, которые смогут посетить конференцию или каким-то иным образом принять участие в ней.</p>
<p>Каждый предстоящий доклад возможно обсудить на форуме ZF-сообщества. Ваше мнение очень важно для авторов!</p>
<p>
<strong>Планируемые доклады</strong></p>
<p>
<strong><a href="http://zendframework.ru/forum/index.php?topic=2269.0" target="_blank">Жизненный цикл предложений (proposals) в проекте Zend Framework</a></strong><br />
<br />
Александр Веремьев (<a target="_blank" href="http://www.zend.com">Zend Technologies</a>, <a href="http://pro-dev.ru/tag/zend-framework/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  Zend Framework">Zend Framework</a> Core команда) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2270.0" target="_blank">Zend_Search_Lucene в деталях</a></strong> </p>
<p>
Александр Веремьев (<a target="_blank" href="http://www.zend.com">Zend Technologies</a>, <a href="http://pro-dev.ru/tag/zend-framework/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  Zend Framework">Zend Framework</a> Core команда) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2271.0" target="_blank">Zend Framework и производительность</a></strong><br />
<br />
Александр Махомет (создатель сообщества <a target="_blank" href="http://zendframework.ru">ZendFramework.ru</a>) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2272.0" target="_blank">Zend Framework и MVC, &laquo;толстая&raquo; модель</a></strong> </p>
<p>
Александр Стешенко (<a target="_blank" href="http://norada.com">Norada Corporation</a>, PHP-разработчик)<br />
<br />
<strong><br />
</p>
<p><a href="http://zendframework.ru/forum/index.php?topic=2273.0" target="_blank">ФотоСтрана.ru: Прототипирование с использованием ZF (история боевого применения Zend Framework в highload-проекте)</a></strong><br />
<br />
Леонид Жаворонков (<a target="_blank" href="http://fotostrana.ru">ФотоСтрана.ru</a>, тимлид) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2274.0" target="_blank">Использование очередей сообщений в повседневных проектах</a></strong><br />
<br />
Денис Баклыков (<a href="http://obnovlenie.ru" target="_blank">Обновление</a>, веб-разработчик) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2275.0" target="_blank">Zend Framework и Doctrine</a></strong><br />
<br />
Степан Танасийчук (руководитель веб-студии <a target="_blank" href="http://stfalcon.com">stfalcon.com</a>) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2276.0" target="_blank">Zend Framework и мультиязычность</a></strong><br />
<br />
Степан Танасийчук (руководитель веб-студии <a target="_blank" href="http://stfalcon.com">stfalcon.com</a>) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2277.0" target="_blank">История проекта e-Штаб</a></strong><br />
<br />
Анатолий Ларин (<a target="_blank" href="http://www.e-legion.com">e-Легион</a>, веб-программист) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2278.0" target="_blank">Что нового несет нам Zend Framework 2.0?</a></strong><br />
<br />
Надежда Блинова (<a target="_blank" href="http://www.wizartech.ru">Wizartech</a>, веб-программист), Георгий Туревич (<a href="http://www.wizartech.ru" target="_blank">Wizartech</a>, ведущий веб-программист) </p>
<p><strong><a href="http://zendframework.ru/forum/index.php?topic=2279.0" target="_blank">Интеграция Zend Framework c Javascript-фрэймворками jQuery и Dojo Toolkit</a></strong><br />
<br />
Георгий Туревич (<a href="http://www.wizartech.ru" target="_blank">Wizartech</a>, ведущий веб-программист)</p>
<p>
Смело обсуждайте доклады и <a href="http://www.zfconf.ru/pre-registration.php" target="_blank"><strong>регистрируйтесь</strong></a>!</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>
К участию также приглашаются информационные и финансовые спонсоры.</p>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://pro-dev.ru/2008/10/30/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b0%d1%82%d0%be%d1%80%d0%b0%d0%bc%d0%b8-%d1%84%d0%be%d1%80%d0%bc-%d0%b2-zend-framework/" title="Работа с валидаторами форм в Zend Framework (Октябрь 30, 2008)">Работа с валидаторами форм в Zend Framework</a> (3)</li>
	<li><a href="http://pro-dev.ru/2009/08/26/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d0%bf%d0%be%d1%8f%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bd%d1%83%d0%bb%d0%b5%d0%b2%d0%be%d0%b9-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8/" title="История появления нулевой ссылки (Август 26, 2009)">История появления нулевой ссылки</a> (0)</li>
	<li><a href="http://pro-dev.ru/2008/10/13/%d0%b0%d1%83%d1%82%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d0%b2-zend-framework/" title="Аутентификация в Zend Framework (Октябрь 13, 2008)">Аутентификация в Zend Framework</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2010/02/01/zconf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>История появления нулевой ссылки</title>
		<link>http://pro-dev.ru/2009/08/26/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d0%bf%d0%be%d1%8f%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bd%d1%83%d0%bb%d0%b5%d0%b2%d0%be%d0%b9-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8/</link>
		<comments>http://pro-dev.ru/2009/08/26/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d0%bf%d0%be%d1%8f%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bd%d1%83%d0%bb%d0%b5%d0%b2%d0%be%d0%b9-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 06:38:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[видео]]></category>

		<category><![CDATA[конференция]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=139</guid>
		<description><![CDATA[Наткнулся на видео с конференции &#8220;QCon&#8221;, где рассказывается история появления нулевых ссылок из первых уст! Интересно посмотреть.

	Связанные записи
	
	В конце марта 2010 г. в Санкт-Петербурге пройдет первая в России конференция по Zend Framework (0)


]]></description>
			<content:encoded><![CDATA[<p>Наткнулся на <a href="http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare">видео</a> с конференции &#8220;QCon&#8221;, где рассказывается история появления нулевых ссылок из первых уст! Интересно посмотреть.</p>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://pro-dev.ru/2010/02/01/zconf/" title="В конце марта 2010 г. в Санкт-Петербурге пройдет первая в России конференция по Zend Framework (Февраль 1, 2010)">В конце марта 2010 г. в Санкт-Петербурге пройдет первая в России конференция по Zend Framework</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/26/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d0%bf%d0%be%d1%8f%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bd%d1%83%d0%bb%d0%b5%d0%b2%d0%be%d0%b9-%d1%81%d1%81%d1%8b%d0%bb%d0%ba%d0%b8/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BigDecimal вместо Float</title>
		<link>http://pro-dev.ru/2009/08/25/bigdecimal-vs-float/</link>
		<comments>http://pro-dev.ru/2009/08/25/bigdecimal-vs-float/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 07:32:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[BigDecimal]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=137</guid>
		<description><![CDATA[Очень часто, в разрабатываемых нами программах реализуется работа с деньгами. Нетрудно догадаться, что отвечающий за это код должен быть хорошо отлажен и защищен от ошибок. Но иногда могут возникнуть такие ошибки, которые заметить очень сложно, а когда они будут замечены - приложение может уже работать у клиента. Одной из таких ошибок является использования класса Float [...]]]></description>
			<content:encoded><![CDATA[<p>Очень часто, в разрабатываемых нами программах реализуется работа с деньгами. Нетрудно догадаться, что отвечающий за это код должен быть хорошо отлажен и защищен от ошибок. Но иногда могут возникнуть такие ошибки, которые заметить очень сложно, а когда они будут замечены - приложение может уже работать у клиента. Одной из таких ошибок является использования класса Float для хранения и проведения операций с финансовой информацией. Эту ошибку часто совершают начинающие разработчики, которые еще не знают, что у класса Float есть проблемы с округлением чисел.</p>
<p>Проведем простой эксперимент:</p>
<pre>System.out.println(0.9f - 0.8f);</pre>
<p>Можно ожидать, что приведенный код выведет на консоль &#8220;0.1&#8243;, но на самом деле мы видим &#8220;0.099999964&#8243;. Это число может быть выведено на страницу счета, что уже плохо. Но самое страшное, что в процессе округления, часть суммы может быть потеряна.</p>
<h1><a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a></h1>
<p>Класс <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a> позволяет производить округление с помощью различных алгоритмов:</p>
<pre>RoundingMode:
UP          - округление от нуля
DOWN        - округление к нулю
CEILING     - округление в сторону +∞
FLOOR       - округление в сторону -∞
HALF_UP     - округление от нуля, если дробная часть &gt;= 0.5
HALF_DOWN   - округление от нуля, если дробная часть = 0.5
HALF_EVEN   - как и ROUND_HALF_UP, только в случае эквивалентности расстояния
               до соседей - округление выполняется в сторону четного числа
UNNECESSARY - округление не производится</pre>
<p>Часто, если округление производится в операциях по выплате денег клиентам, используют округление ROUND_DOWN и ROUND_UP для выставления счетов. Для продолжения вычислений с округленным числом используют ROUND_HALF_EVEN, так как этот алгоритм обеспечивает наибольшую точность.</p>
<p>Класс <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>  - немодифицируемый, поэтому такие операции как setScale() - возвращают новый объект класса <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>.</p>
<p>Пример округления значения:</p>
<pre>System.out.println("UP: " + new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(1.5f).setScale(0, RoundingMode.UP));
System.out.println("HALF_UP: " + new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(1.5f).setScale(0, RoundingMode.HALF_UP));
System.out.println("HALF_DOWN: " + new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(1.5f).setScale(0, RoundingMode.HALF_DOWN));
System.out.println("HALF_EVEN: " + new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(1.5f).setScale(0, RoundingMode.HALF_EVEN));</pre>
<pre>Результаты:</pre>
<pre>UP: 2
HALF_UP: 2
HALF_DOWN: 1
HALF_EVEN: 2</pre>
<p>Но не стоит расслабляться - привденный ниже код также возвращает &#8220;0.099999964237213134765625&#8243;, как и код, приведенный в начале:</p>
<pre>System.out.println(new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(0.9f).subtract(new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(0.8f)));</pre>
<p>Поэтому, если мы считаем копейки, которые должны выставить в счете, необходимо изменить код:</p>
<pre>System.out.println(new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(0.9f).subtract(new <a href="http://pro-dev.ru/tag/bigdecimal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  BigDecimal">BigDecimal</a>(0.8f)).setScale(2, RoundingMode.UP));</pre>
<p>И вот теперь мы можем взять у клиента эти 10 копеек!</p>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li>Похожих записей нет.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/25/bigdecimal-vs-float/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Доступ к компонентам Seam из фильтров</title>
		<link>http://pro-dev.ru/2009/08/21/seam_components_and_filters/</link>
		<comments>http://pro-dev.ru/2009/08/21/seam_components_and_filters/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 11:18:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[filters]]></category>

		<category><![CDATA[seam]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=135</guid>
		<description><![CDATA[При попытке доступа к компонентам Seam из фильтров web-приложения может возникнуть исключение: &#8220;javax.servlet.ServletException: java.lang.IllegalStateException: No active event context&#8221;. Для того, чтобы гарантированно получить нужный компонент, код необходимо выполнить в ContextualHttpServletRequest:
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain)
		throws IOException, ServletException {

	new ContextualHttpServletRequest((HttpServletRequest) request) {
		@Override
		public void process() throws Exception {
			...
			MyComponent component = (Component) Component.getInstance(MyComponent.class);
			...
		}
	}.run();
	chain.doFilter(request, response);
}

	Связанные записи
	
	Приложение [...]]]></description>
			<content:encoded><![CDATA[<p>При попытке доступа к компонентам <a href="http://pro-dev.ru/tag/seam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  seam">Seam</a> из фильтров web-приложения может возникнуть исключение: &#8220;javax.servlet.ServletException: java.lang.IllegalStateException: No active event context&#8221;. Для того, чтобы гарантированно получить нужный компонент, код необходимо выполнить в ContextualHttpServletRequest:</p>
<pre>@Override
public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain)
		throws IOException, ServletException {

	new ContextualHttpServletRequest((HttpServletRequest) request) {
		@Override
		public void process() throws <a href="http://pro-dev.ru/tag/exception/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  exception">Exception</a> {
			...
			MyComponent component = (Component) Component.getInstance(MyComponent.class);
			...
		}
	}.run();
	chain.doFilter(request, response);
}</pre>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://pro-dev.ru/2009/07/29/%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-seam-%d1%81-%d0%bd%d1%83%d0%bb%d1%8f/" title="Приложение на Seam с нуля (Июль 29, 2009)">Приложение на Seam с нуля</a> (1)</li>
	<li><a href="http://pro-dev.ru/2009/08/13/%d0%b2%d0%bf%d0%b5%d1%87%d0%b0%d1%82%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%82-seam/" title="Впечатления от Seam (Август 13, 2009)">Впечатления от Seam</a> (0)</li>
	<li><a href="http://pro-dev.ru/2009/08/19/hibernate_filters/" title="Безопасное включение/отключение фильтров в Hibernate (Август 19, 2009)">Безопасное включение/отключение фильтров в Hibernate</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/21/seam_components_and_filters/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Безопасное включение/отключение фильтров в Hibernate</title>
		<link>http://pro-dev.ru/2009/08/19/hibernate_filters/</link>
		<comments>http://pro-dev.ru/2009/08/19/hibernate_filters/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:32:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[Для начинающих]]></category>

		<category><![CDATA[filters]]></category>

		<category><![CDATA[Hibernate]]></category>

		<category><![CDATA[фильтры]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=133</guid>
		<description><![CDATA[Иногда, при выполнении запроса, вам необходимо отключить некоторые фильтры Hibernate. Для этого можно использовать методы сессии - disableFilter(String), enableFilter(String). Если фильтр по умолчанию включен, то сначала его отключают, потом выполняют запрос, а затем включают снова. Но если в промежутке между отключением и включением фильтра будет брошено исключение, то код снова включающий фильтр, выполнен не будет, [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда, при выполнении запроса, вам необходимо отключить некоторые фильтры <a href="http://pro-dev.ru/tag/hibernate/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  Hibernate">Hibernate</a>. Для этого можно использовать методы сессии - disableFilter(String), enableFilter(String). Если фильтр по умолчанию включен, то сначала его отключают, потом выполняют запрос, а затем включают снова. Но если в промежутке между отключением и включением фильтра будет брошено исключение, то код снова включающий фильтр, выполнен не будет, и если исключение будет обработано таким образом, что выполнение программы не прекратится, то ее дальнейшее поведение может быть непредсказуемым. Запросы, зависящие от выключенного фильтра будут возвращать ненужные данные.</p>
<p>Чтобы избежать такой ситуации, вызов метода включающего фильтр, необходимо заключить в блок <em>finally</em>:</p>
<pre>try {
    session.disableFilter("filterName");
    .....
} finally {
    session.enableFilter("filterName");
}</pre>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://pro-dev.ru/2009/04/16/%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b0-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d0%be%d0%b2-hibernate-%d0%b8%d0%b7-%d1%84%d0%b0%d0%b9%d0%bb%d0%b0/" title="Загрузка параметров hibernate из файла (Апрель 16, 2009)">Загрузка параметров hibernate из файла</a> (0)</li>
	<li><a href="http://pro-dev.ru/2009/08/21/seam_components_and_filters/" title="Доступ к компонентам Seam из фильтров (Август 21, 2009)">Доступ к компонентам Seam из фильтров</a> (0)</li>
	<li><a href="http://pro-dev.ru/2008/07/14/spring-hibernate/" title="Spring + Hibernate (Июль 14, 2008)">Spring + Hibernate</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/19/hibernate_filters/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Скриптовые языки, работающие на JVM стали быстрее</title>
		<link>http://pro-dev.ru/2009/08/17/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%be%d0%b2%d1%8b%d0%b5-%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d1%8e%d1%89%d0%b8%d0%b5-%d0%bd%d0%b0-jvm-%d1%81%d1%82%d0%b0%d0%bb/</link>
		<comments>http://pro-dev.ru/2009/08/17/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%be%d0%b2%d1%8b%d0%b5-%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d1%8e%d1%89%d0%b8%d0%b5-%d0%bd%d0%b0-jvm-%d1%81%d1%82%d0%b0%d0%bb/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 14:08:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[JVM]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=130</guid>
		<description><![CDATA[В JDK7 появились новые возможности по работе с динамически типизированными языками, работающими на JVM. В этой статье описываются новые возможности JVM. И приводятся примеры использования этих возможностей для JDK7.
Что же, ждем ускорения работы интерпритаторов скриптовых языков, работающих на JVM.

	Связанные записи
	
	Похожих записей нет.
	

]]></description>
			<content:encoded><![CDATA[<p>В JDK7 появились новые возможности по работе с динамически типизированными языками, работающими на <a href="http://pro-dev.ru/tag/jvm/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  JVM">JVM</a>. В <a href="http://java.sun.com/developer/technicalArticles/DynTypeLang/index.html">этой статье</a> описываются новые возможности <a href="http://pro-dev.ru/tag/jvm/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  JVM">JVM</a>. И приводятся примеры использования этих возможностей для JDK7.</p>
<p>Что же, ждем ускорения работы интерпритаторов скриптовых языков, работающих на <a href="http://pro-dev.ru/tag/jvm/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  JVM">JVM</a>.</p>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li>Похожих записей нет.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/17/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%be%d0%b2%d1%8b%d0%b5-%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d1%8e%d1%89%d0%b8%d0%b5-%d0%bd%d0%b0-jvm-%d1%81%d1%82%d0%b0%d0%bb/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Влияние кризиса на открытые проекты</title>
		<link>http://pro-dev.ru/2009/08/14/%d0%b2%d0%bb%d0%b8%d1%8f%d0%bd%d0%b8%d0%b5-%d0%ba%d1%80%d0%b8%d0%b7%d0%b8%d1%81%d0%b0-%d0%bd%d0%b0-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d1%82%d1%8b%d0%b5-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%8b/</link>
		<comments>http://pro-dev.ru/2009/08/14/%d0%b2%d0%bb%d0%b8%d1%8f%d0%bd%d0%b8%d0%b5-%d0%ba%d1%80%d0%b8%d0%b7%d0%b8%d1%81%d0%b0-%d0%bd%d0%b0-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d1%82%d1%8b%d0%b5-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%8b/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 12:45:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[кризис]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=125</guid>
		<description><![CDATA[Андрей Лоскутов привел интересный граффиик, отображающий количество коммитов в проекты с открытым исходным кодом. На нем видно, что с конца 2008 года по настоящее время наметилась тенденция активного падения количества коммитов. Причем это наблюдается абсолютно по всем языкам. С большой вероятностью, причиной этого является мировой финансовый кризис.
Я думаю, что разработчики стали меньше коммитить в Open-source [...]]]></description>
			<content:encoded><![CDATA[<p>Андрей Лоскутов <a href="http://www.jroller.com/andyl/entry/financial_crisis_and_open_source">привел интересный граффиик</a>, отображающий количество коммитов в проекты с открытым исходным кодом. На нем видно, что с конца 2008 года по настоящее время наметилась тенденция активного падения количества коммитов. Причем это наблюдается абсолютно по всем языкам. С большой вероятностью, причиной этого является мировой финансовый кризис.</p>
<p>Я думаю, что разработчики стали меньше коммитить в Open-source проекты, так как переместили свои приоритеты на проекты, работая над которыми можно заработать больше. А может быть это связано с уменьшением финансирования проектов, связанным с тем же финансовым кризисом.</p>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li>Похожих записей нет.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/14/%d0%b2%d0%bb%d0%b8%d1%8f%d0%bd%d0%b8%d0%b5-%d0%ba%d1%80%d0%b8%d0%b7%d0%b8%d1%81%d0%b0-%d0%bd%d0%b0-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d1%82%d1%8b%d0%b5-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%8b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Впечатления от Seam</title>
		<link>http://pro-dev.ru/2009/08/13/%d0%b2%d0%bf%d0%b5%d1%87%d0%b0%d1%82%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%82-seam/</link>
		<comments>http://pro-dev.ru/2009/08/13/%d0%b2%d0%bf%d0%b5%d1%87%d0%b0%d1%82%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%82-seam/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 14:18:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[seam]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=123</guid>
		<description><![CDATA[Вот уже как 2 месяца я работаю с Jboss Seam. Хочу отметить несколько моментов, которые меня очень порадовали:

Быстрый старт. Начать работать с Seam очень просто. Я уже писал об этом. После создания скелета приложения, хватит одной только интуиции и небольшого опыта web-программирования, чтобы добавить несложный функционал.
Высокая скорость разработки. Расширив класс EntityHome, вы получаете уже готовую [...]]]></description>
			<content:encoded><![CDATA[<p>Вот уже как 2 месяца я работаю с Jboss <a href="http://pro-dev.ru/tag/seam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  seam">Seam</a>. Хочу отметить несколько моментов, которые меня очень порадовали:</p>
<ol>
<li>Быстрый старт. Начать работать с <a href="http://pro-dev.ru/tag/seam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  seam">Seam</a> очень просто. Я уже <a href="http://pro-dev.ru/2009/07/29/%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-seam-%d1%81-%d0%bd%d1%83%d0%bb%d1%8f/">писал</a> об этом. После создания скелета приложения, хватит одной только интуиции и небольшого опыта web-программирования, чтобы добавить несложный функционал.</li>
<li>Высокая скорость разработки. Расширив класс EntityHome, вы получаете уже готовую часть программы, отвечающую за CRUD. Расширив класс EntityList, вы реализуете код, предназначенный для отображения списка объектов и навигации по нему.</li>
<li>Новые возможности, реализуемые с помощью Conversations. Вам теперь не надо беспокоиться о передаче параметров, при реализации действия пользователя, состоящего из отображения нескольких страниц.</li>
</ol>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://pro-dev.ru/2009/07/29/%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-seam-%d1%81-%d0%bd%d1%83%d0%bb%d1%8f/" title="Приложение на Seam с нуля (Июль 29, 2009)">Приложение на Seam с нуля</a> (1)</li>
	<li><a href="http://pro-dev.ru/2009/08/21/seam_components_and_filters/" title="Доступ к компонентам Seam из фильтров (Август 21, 2009)">Доступ к компонентам Seam из фильтров</a> (0)</li>
	<li><a href="http://pro-dev.ru/2009/08/09/seamtomcatjsf-%d1%87%d1%82%d0%be-%d0%bd%d0%b5-%d1%82%d0%b0%d0%ba/" title="Seam+tomcat+jsf что не так? (Август 9, 2009)">Seam+tomcat+jsf что не так?</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/13/%d0%b2%d0%bf%d0%b5%d1%87%d0%b0%d1%82%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%82-seam/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Seam+JSF+Tomcat</title>
		<link>http://pro-dev.ru/2009/08/11/seamjsftomcat/</link>
		<comments>http://pro-dev.ru/2009/08/11/seamjsftomcat/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 08:10:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[exception]]></category>

		<category><![CDATA[seam]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=120</guid>
		<description><![CDATA[Недавно я писал о проблемах, возникших при добавлении Seam в приложение, использующее jsf и работающее на Tomcat. Наконец-то эти проблемы решены. Сиптомы:

Одно или несколько сообщений при старте приложения: &#8220;There should only be one Seam phase listener per application&#8221;
Многократное срабатывание сеттеров, описанных в pages.xml
На некоторых серверах появление исключения:

SEVERE: Exception sending context initialized event to listener instance [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно я писал о <a href="http://pro-dev.ru/2009/08/09/seamtomcatjsf-%d1%87%d1%82%d0%be-%d0%bd%d0%b5-%d1%82%d0%b0%d0%ba/">проблемах</a>, возникших при добавлении <a href="http://pro-dev.ru/tag/seam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  seam">Seam</a> в приложение, использующее jsf и работающее на Tomcat. Наконец-то эти проблемы решены. Сиптомы:</p>
<ul>
<li>Одно или несколько сообщений при старте приложения: &#8220;There should only be one <a href="http://pro-dev.ru/tag/seam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  seam">Seam</a> phase listener per application&#8221;</li>
<li>Многократное срабатывание сеттеров, описанных в pages.xml</li>
<li>На некоторых серверах появление исключения:</li>
</ul>
<pre>SEVERE: <a href="http://pro-dev.ru/tag/exception/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  exception">Exception</a> sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! null
	at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:212)
	at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:174)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NullPointerException
	at com.sun.faces.config.processor.ApplicationConfigProcessor.addResouceBundle(ApplicationConfigProcessor.java:578)
	at com.sun.faces.config.processor.ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:245)
	at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:94)
	at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:119)
	at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:94)
	at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:132)
	at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:202)
	... 16 more</pre>
<p>Проблема заключалась в том, что приложение использует одновременно RichFaces и MyFaces, от чего нельзя было отказаться, а папке WEB-INF/lib приложения содержалась библиотека jsf-impl-1.2_08.jar . После ее удаления - исключение больше не появлялось. Но осталось сообщение об уже запущенном экземпляре SeamPhaseListener. От этого сообщения я избавился исключив из faces-config.xml описание SeamPhaseListener. Скорее всего, экземпляр этого класса уже создавался при чтении faces-config.xml, лежащего в одной из библиотек <a href="http://pro-dev.ru/tag/seam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  seam">Seam</a>.</p>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li><a href="http://pro-dev.ru/2009/07/29/%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-seam-%d1%81-%d0%bd%d1%83%d0%bb%d1%8f/" title="Приложение на Seam с нуля (Июль 29, 2009)">Приложение на Seam с нуля</a> (1)</li>
	<li><a href="http://pro-dev.ru/2009/08/21/seam_components_and_filters/" title="Доступ к компонентам Seam из фильтров (Август 21, 2009)">Доступ к компонентам Seam из фильтров</a> (0)</li>
	<li><a href="http://pro-dev.ru/2009/08/13/%d0%b2%d0%bf%d0%b5%d1%87%d0%b0%d1%82%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%82-seam/" title="Впечатления от Seam (Август 13, 2009)">Впечатления от Seam</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/11/seamjsftomcat/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Важно вовремя успокоиться</title>
		<link>http://pro-dev.ru/2009/08/10/%d0%b2%d0%b0%d0%b6%d0%bd%d0%be-%d0%b2%d0%be%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d1%83%d1%81%d0%bf%d0%be%d0%ba%d0%be%d0%b8%d1%82%d1%8c%d1%81%d1%8f/</link>
		<comments>http://pro-dev.ru/2009/08/10/%d0%b2%d0%b0%d0%b6%d0%bd%d0%be-%d0%b2%d0%be%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d1%83%d1%81%d0%bf%d0%be%d0%ba%d0%be%d0%b8%d1%82%d1%8c%d1%81%d1%8f/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 19:41:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Психология]]></category>

		<guid isPermaLink="false">http://pro-dev.ru/?p=118</guid>
		<description><![CDATA[Бывают такие часы, когда работается очень легко. Задачи решаются одна за другой. Чувствую, что поймал кураж и получаю огромное удовольствие от своего кода и решений, которые применяю. Так может пройти весь день, и с работы ухожу абсолютно счастливым человеком. Но во время такого куража может попасться сложная задача, требующая нестандартного решения или решения, которое не [...]]]></description>
			<content:encoded><![CDATA[<p>Бывают такие часы, когда работается очень легко. Задачи решаются одна за другой. Чувствую, что поймал кураж и получаю огромное удовольствие от своего кода и решений, которые применяю. Так может пройти весь день, и с работы ухожу абсолютно счастливым человеком. Но во время такого куража может попасться сложная задача, требующая нестандартного решения или решения, которое не получилось увидеть сразу, и я начинаю понимать, что получение решения все больше и больше задерживается. Начинаю напрягаться. Ведь надо уже закончить с этой злосчастной задачей. Меня ждут другие, более интересные, а я вожусь все с этой. Ели решения так и не получается найти, это может перерасти в судорожные поиски помощи в интернете. В итоге, остается только небольшая вероятность найти правильное решение в таком состоянии. Нужен отдых, обращение внимания на что-то другое, не связанное с работой - переключение. И вот, после небольшого отдыха, я возвращаюсь на рабочее место и понимаю, что решение было практически под носом, но я его не замечал. Так почему же не устроить отдых намного раньше, когда только еще начинаешь осознавать, что задача затягивается! Забыв на некоторое время про задачу, можно вернуться к ней со свежей головой и новыми идеями, созревшими во время отдыха. А самый важный плюс такого подхода - экономия нервных клеток и времени!</p>
<p>Хотелось бы узнать, часто ли в вашей практике программирования встречаются ситуации, когда вы понимаете, что несколько минут отдыха сэкономили бы вам пару часов, и что вы делаете, чтобы избежать таких ситуаций?</p>

	<h4>Связанные записи</h4>
	<ul class="st-related-posts">
	<li>Похожих записей нет.</li>
	</ul>

]]></content:encoded>
			<wfw:commentRss>http://pro-dev.ru/2009/08/10/%d0%b2%d0%b0%d0%b6%d0%bd%d0%be-%d0%b2%d0%be%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d1%83%d1%81%d0%bf%d0%be%d0%ba%d0%be%d0%b8%d1%82%d1%8c%d1%81%d1%8f/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
