<?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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Писать не обещаю, но буду...</title>
	
	<link>http://alexey.tokar.net.ua</link>
	<description>...о Javascript, о PHP, о Java и о прочем...</description>
	<lastBuildDate>Fri, 27 Aug 2010 08:34:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/alexeytokar" /><feedburner:info uri="alexeytokar" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>50.4333</geo:lat><geo:long>30.5167</geo:long><item>
		<title>Халтура Лебедева</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/a_LWE_3kppE/</link>
		<comments>http://alexey.tokar.net.ua/2010/08/%d1%85%d0%b0%d0%bb%d1%82%d1%83%d1%80%d0%b0-%d0%bb%d0%b5%d0%b1%d0%b5%d0%b4%d0%b5%d0%b2%d0%b0/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 08:34:59 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[дизайн]]></category>
		<category><![CDATA[косяки]]></category>
		<category><![CDATA[Лебедев]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=446</guid>
		<description><![CDATA[Что-то все чаще и чаще студия СамиЗнаетеКого косячит в своих работах. Так, нфпример, в последней работе очень бросающийся в глаза косяк с отражением:]]></description>
			<content:encoded><![CDATA[<p>Что-то все чаще и чаще студия СамиЗнаетеКого косячит в своих работах.</p>
<p>Так, нфпример, в последней работе очень бросающийся в глаза косяк с отражением:</p>
<p><img src="http://alexey.tokar.net.ua/wp-content/uploads/2010/08/03-noproblems-1.jpg" alt="" title="03-noproblems-1" width="720" height="501" class="aligncenter size-full wp-image-447" /></p>

<p><a href="http://feedads.g.doubleclick.net/~a/i2JPfoo9DqtzeIx5IikO4WhqI3o/0/da"><img src="http://feedads.g.doubleclick.net/~a/i2JPfoo9DqtzeIx5IikO4WhqI3o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/i2JPfoo9DqtzeIx5IikO4WhqI3o/1/da"><img src="http://feedads.g.doubleclick.net/~a/i2JPfoo9DqtzeIx5IikO4WhqI3o/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=a_LWE_3kppE:s7LNHdKqAoM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=a_LWE_3kppE:s7LNHdKqAoM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=a_LWE_3kppE:s7LNHdKqAoM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=a_LWE_3kppE:s7LNHdKqAoM:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/a_LWE_3kppE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/08/%d1%85%d0%b0%d0%bb%d1%82%d1%83%d1%80%d0%b0-%d0%bb%d0%b5%d0%b1%d0%b5%d0%b4%d0%b5%d0%b2%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/08/%d1%85%d0%b0%d0%bb%d1%82%d1%83%d1%80%d0%b0-%d0%bb%d0%b5%d0%b1%d0%b5%d0%b4%d0%b5%d0%b2%d0%b0/</feedburner:origLink></item>
		<item>
		<title>Ищу консоль на пару дней</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/NAFD41B-dqI/</link>
		<comments>http://alexey.tokar.net.ua/2010/08/%d0%b8%d1%89%d1%83-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d1%8c-%d0%bd%d0%b0-%d0%bf%d0%b0%d1%80%d1%83-%d0%b4%d0%bd%d0%b5%d0%b9/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 09:43:05 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Общая]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=444</guid>
		<description><![CDATA[День добрый. Буду краток. Случайно ни у кого из вас нет xbox или sp2 дать в аренду на пару деньков? :) Заранее благодарен]]></description>
			<content:encoded><![CDATA[<p>День добрый. Буду краток.</p>
<p>Случайно ни у кого из вас нет xbox или sp2 дать в аренду на пару деньков? :)</p>
<p>Заранее благодарен</p>

<p><a href="http://feedads.g.doubleclick.net/~a/yjv5IujNrrzZjIG1mzMAeOCgYrQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/yjv5IujNrrzZjIG1mzMAeOCgYrQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/yjv5IujNrrzZjIG1mzMAeOCgYrQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/yjv5IujNrrzZjIG1mzMAeOCgYrQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=NAFD41B-dqI:Lrlz_lIY3ek:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=NAFD41B-dqI:Lrlz_lIY3ek:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=NAFD41B-dqI:Lrlz_lIY3ek:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=NAFD41B-dqI:Lrlz_lIY3ek:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/NAFD41B-dqI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/08/%d0%b8%d1%89%d1%83-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d1%8c-%d0%bd%d0%b0-%d0%bf%d0%b0%d1%80%d1%83-%d0%b4%d0%bd%d0%b5%d0%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/08/%d0%b8%d1%89%d1%83-%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d1%8c-%d0%bd%d0%b0-%d0%bf%d0%b0%d1%80%d1%83-%d0%b4%d0%bd%d0%b5%d0%b9/</feedburner:origLink></item>
		<item>
		<title>Знакомство с Питоном</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/nIRQvaZfPso/</link>
		<comments>http://alexey.tokar.net.ua/2010/08/%d0%b7%d0%bd%d0%b0%d0%ba%d0%be%d0%bc%d1%81%d1%82%d0%b2%d0%be-%d1%81-%d0%bf%d0%b8%d1%82%d0%be%d0%bd%d0%be%d0%bc/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 07:36:55 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Разработка]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[знакомство]]></category>
		<category><![CDATA[основные конструкции]]></category>
		<category><![CDATA[сравнение]]></category>
		<category><![CDATA[язык]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=442</guid>
		<description><![CDATA[Сейчас встала задача: написать небольшой плагин (строк на 200-250) для софтины. Плагины к ней можно писать на сях и на питоне. Так как уже давно я являюсь ярым сторонником ООП, то выбор был очевиден &#8211; нужно изучать новый для меня язык. И прежде чем написать те заветные 200 строк кода, хочется разобраться как можно лучше [...]]]></description>
			<content:encoded><![CDATA[<p>
Сейчас встала задача: написать небольшой плагин (строк на 200-250) для софтины. Плагины к ней можно писать на сях и на питоне. Так как уже давно я являюсь ярым сторонником ООП, то выбор был очевиден &#8211; нужно изучать новый для меня язык. И прежде чем написать те заветные 200 строк кода, хочется разобраться как можно лучше в синтаксисе и принципах разработки под python. Посему была открыта <a href="http://docs.python.org/">онлайн документация</a> и все подробнейше изучено&#8230;
</p>
<p>
Практически сразу бросилась в глаза двойственность языка. С одной стороны разработчики старались упростить языковые конструкции, с другой &#8211; добавили странные для меня типы данных. Так, например, в питоне не оказалось привычного всем цикла for &#8211; его заменили конструкцией for X in Y (эквивалент foreach) + снабдили функцией range() для кол-венной итерации. Разработчики не ввели такой привычный оператор switch, а вместо этого сократили if/elseif/else до if/elif/else, что позволило структурировать условия в удобный столбик. Авторы добавили удобные операции с массивами и строками (получение и замещение срезов) и ввели оператор &laquo;*&raquo; для повторения символов. Но при всем этом, зачем-то были введены словари, таплы, списки, последовательности и наборы, что могло слихвой быть заменено словарями (хотя может я еще чего-то не понимаю).
</p>
<p>
Вот такой мое первое знакомство с этим достаточно интересным языком. Не скажу что он меня покорил, так как отсутствует моя любимая строгая типизация, да и отсутствие скобочек для выделения блоков немного раздражает. В остальном язык достаточно интересен с академической точки зрения.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/oarFd98sizJ4YvHE5MJOMsdylPo/0/da"><img src="http://feedads.g.doubleclick.net/~a/oarFd98sizJ4YvHE5MJOMsdylPo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/oarFd98sizJ4YvHE5MJOMsdylPo/1/da"><img src="http://feedads.g.doubleclick.net/~a/oarFd98sizJ4YvHE5MJOMsdylPo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=nIRQvaZfPso:XG8t9M5NL5g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=nIRQvaZfPso:XG8t9M5NL5g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=nIRQvaZfPso:XG8t9M5NL5g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=nIRQvaZfPso:XG8t9M5NL5g:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/nIRQvaZfPso" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/08/%d0%b7%d0%bd%d0%b0%d0%ba%d0%be%d0%bc%d1%81%d1%82%d0%b2%d0%be-%d1%81-%d0%bf%d0%b8%d1%82%d0%be%d0%bd%d0%be%d0%bc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/08/%d0%b7%d0%bd%d0%b0%d0%ba%d0%be%d0%bc%d1%81%d1%82%d0%b2%d0%be-%d1%81-%d0%bf%d0%b8%d1%82%d0%be%d0%bd%d0%be%d0%bc/</feedburner:origLink></item>
		<item>
		<title>Профессиональное</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/R2Boq4xMcaA/</link>
		<comments>http://alexey.tokar.net.ua/2010/07/%d0%bf%d1%80%d0%be%d1%84%d0%b5%d1%81%d1%81%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b5/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 08:01:47 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[демократия]]></category>
		<category><![CDATA[компетентность]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=440</guid>
		<description><![CDATA[Есть люди, которые считают себя компетентными в проф. областях. Но искать научные исследования, рассуждать и принимать правильные решения они не умеют. Они умеют искать обрывки фраз и монопольно прекращать полемику. Таких мы беспощадно увольняем.]]></description>
			<content:encoded><![CDATA[<p>
Есть люди, которые считают себя компетентными в проф. областях. Но искать научные исследования, рассуждать и принимать правильные решения они не умеют. Они умеют искать обрывки фраз и монопольно прекращать полемику.
</p>
<p>
<strong>Таких мы беспощадно увольняем.</strong></p>

<p><a href="http://feedads.g.doubleclick.net/~a/AZO7APl40MWMpmQxxhg5dotyXdA/0/da"><img src="http://feedads.g.doubleclick.net/~a/AZO7APl40MWMpmQxxhg5dotyXdA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AZO7APl40MWMpmQxxhg5dotyXdA/1/da"><img src="http://feedads.g.doubleclick.net/~a/AZO7APl40MWMpmQxxhg5dotyXdA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=R2Boq4xMcaA:eY_peZ7gcVw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=R2Boq4xMcaA:eY_peZ7gcVw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=R2Boq4xMcaA:eY_peZ7gcVw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=R2Boq4xMcaA:eY_peZ7gcVw:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/R2Boq4xMcaA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/07/%d0%bf%d1%80%d0%be%d1%84%d0%b5%d1%81%d1%81%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/07/%d0%bf%d1%80%d0%be%d1%84%d0%b5%d1%81%d1%81%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b5/</feedburner:origLink></item>
		<item>
		<title>А кто в WinAPI шарит? 8-)</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/Vw8k1IR-4Lg/</link>
		<comments>http://alexey.tokar.net.ua/2010/07/%d0%b0-%d0%ba%d1%82%d0%be-%d0%b2-winapi-%d1%88%d0%b0%d1%80%d0%b8%d1%82-8/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 10:31:19 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Общая]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=437</guid>
		<description><![CDATA[Нужно написать небольшую тулзу, либо помочь советом]]></description>
			<content:encoded><![CDATA[<p>Нужно написать небольшую тулзу, либо помочь советом</p>

<p><a href="http://feedads.g.doubleclick.net/~a/lt2F6u3s7sR6SS3jTUgikZN9z_k/0/da"><img src="http://feedads.g.doubleclick.net/~a/lt2F6u3s7sR6SS3jTUgikZN9z_k/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/lt2F6u3s7sR6SS3jTUgikZN9z_k/1/da"><img src="http://feedads.g.doubleclick.net/~a/lt2F6u3s7sR6SS3jTUgikZN9z_k/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=Vw8k1IR-4Lg:2tiVZ7-CeRY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=Vw8k1IR-4Lg:2tiVZ7-CeRY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=Vw8k1IR-4Lg:2tiVZ7-CeRY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=Vw8k1IR-4Lg:2tiVZ7-CeRY:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/Vw8k1IR-4Lg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/07/%d0%b0-%d0%ba%d1%82%d0%be-%d0%b2-winapi-%d1%88%d0%b0%d1%80%d0%b8%d1%82-8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/07/%d0%b0-%d0%ba%d1%82%d0%be-%d0%b2-winapi-%d1%88%d0%b0%d1%80%d0%b8%d1%82-8/</feedburner:origLink></item>
		<item>
		<title>Подскажите по ZF Route</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/PAy0jaEWf3Q/</link>
		<comments>http://alexey.tokar.net.ua/2010/07/%d0%bf%d0%be%d0%b4%d1%81%d0%ba%d0%b0%d0%b6%d0%b8%d1%82%d0%b5-%d0%bf%d0%be-zf-route/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 08:19:14 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[routes]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=432</guid>
		<description><![CDATA[Задача: есть пути: /users/$username и /users/$some_action Как правильно организовать роуты в системе ZF? Мое решение на данный момент: UsersController::view UsersController::someAction routes.php -&#62;addRoute&#40;&#34;user-view&#34;, new Zend_Controller_Router_Route&#40; &#34;users/:username/*&#34;, array&#40; &#34;controller&#34; =&#62; &#34;users&#34;, &#34;action&#34; =&#62; &#34;view&#34; &#41; &#41; &#41; UsersController::view try &#123; $user = $this-&#62;getUserFromRequest&#40;&#41;; &#160; &#125; catch &#40; PageException_NotFound $e &#41; &#123; $action = $this-&#62;getRequest&#40;&#41;-&#62;getParam&#40; 'username' &#41;; $this-&#62;_forward&#40; [...]]]></description>
			<content:encoded><![CDATA[<h2>Задача:</h2>
<p>есть пути:<br />
<code>/users/$username</code><br />
и<br />
<code>/users/$some_action</code></p>
<p>Как правильно организовать роуты в системе ZF?</p>
<h2>Мое решение на данный момент:</h2>
<p><strong>UsersController::view</strong><br />
<strong>UsersController::someAction</strong></p>
<p><strong>routes.php</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addRoute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user-view&quot;</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Controller_Router_Route<span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">&quot;users/:username/*&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">&quot;controller&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;users&quot;</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">&quot;action&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;view&quot;</span>
    <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span></pre></div></div>

<p><strong>UsersController::view</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">try <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getUserFromRequest</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span> catch <span style="color: #009900;">&#40;</span> PageException_NotFound <span style="color: #000088;">$e</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$action</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getRequest</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getParam</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'username'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_forward<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$action</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/kByRuEBQXcrGZr_ngEz8gvuzJrE/0/da"><img src="http://feedads.g.doubleclick.net/~a/kByRuEBQXcrGZr_ngEz8gvuzJrE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/kByRuEBQXcrGZr_ngEz8gvuzJrE/1/da"><img src="http://feedads.g.doubleclick.net/~a/kByRuEBQXcrGZr_ngEz8gvuzJrE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=PAy0jaEWf3Q:N7k0n1vKMcs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=PAy0jaEWf3Q:N7k0n1vKMcs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=PAy0jaEWf3Q:N7k0n1vKMcs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=PAy0jaEWf3Q:N7k0n1vKMcs:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/PAy0jaEWf3Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/07/%d0%bf%d0%be%d0%b4%d1%81%d0%ba%d0%b0%d0%b6%d0%b8%d1%82%d0%b5-%d0%bf%d0%be-zf-route/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/07/%d0%bf%d0%be%d0%b4%d1%81%d0%ba%d0%b0%d0%b6%d0%b8%d1%82%d0%b5-%d0%bf%d0%be-zf-route/</feedburner:origLink></item>
		<item>
		<title>TagIt для Mootools</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/5gCDHMYdcf0/</link>
		<comments>http://alexey.tokar.net.ua/2010/06/tagit-%d0%b4%d0%bb%d1%8f-mootools/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 09:17:45 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Разработка]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[tagit]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=422</guid>
		<description><![CDATA[Уж больно мне понравился плагин для жиквери по работе с тегами. Но ввиду того, что работаем мы в основном с mootools, было решено написать нечто подобное и для своих нужд. В процессе написания интерфейс был расширен методом getTags, который возвращает все добавленные теги в виде массива. Изменения в отличае от оригинала: теги могут быть многословными [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_424" class="wp-caption aligncenter" style="width: 370px"><img src="http://alexey.tokar.net.ua/wp-content/uploads/2010/06/tait-jquery.png" alt="jquery tagit plugin" title="tagit-jquery" width="360" height="156" class="size-full wp-image-424" /><p class="wp-caption-text">внешний вид результата работы плагина</p></div>
<p>
Уж больно мне понравился <a href="http://levycarneiro.com/projects/tag-it/example.html">плагин для жиквери по работе с тегами</a>. Но ввиду того, что работаем мы в основном с mootools, было решено написать нечто подобное и для своих нужд. В процессе написания интерфейс был расширен методом getTags, который возвращает все добавленные теги в виде массива.
</p>
<p>
Изменения в отличае от оригинала:
</p>
<ul>
<li>теги могут быть многословными</li>
<li>тег создается при нажатии на enter или запятую</li>
<li>улучшено поведение интерфейса</li>
</ul>
<p>
<a href="http://alexey.tokar.net.ua/pg/tagit/">Скачать и поиграться</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/Un5aeQLB7xbILunsYYGZVfsmoG8/0/da"><img src="http://feedads.g.doubleclick.net/~a/Un5aeQLB7xbILunsYYGZVfsmoG8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Un5aeQLB7xbILunsYYGZVfsmoG8/1/da"><img src="http://feedads.g.doubleclick.net/~a/Un5aeQLB7xbILunsYYGZVfsmoG8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=5gCDHMYdcf0:pX5LqJ0wUbI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=5gCDHMYdcf0:pX5LqJ0wUbI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=5gCDHMYdcf0:pX5LqJ0wUbI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=5gCDHMYdcf0:pX5LqJ0wUbI:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/5gCDHMYdcf0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/06/tagit-%d0%b4%d0%bb%d1%8f-mootools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/06/tagit-%d0%b4%d0%bb%d1%8f-mootools/</feedburner:origLink></item>
		<item>
		<title>К PHP разработчикам</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/_hAVRYUzEBo/</link>
		<comments>http://alexey.tokar.net.ua/2010/06/%d0%ba-php-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%87%d0%b8%d0%ba%d0%b0%d0%bc/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 12:58:07 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Разработка]]></category>
		<category><![CDATA[вакансия]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=417</guid>
		<description><![CDATA[Ищем программиста для пополнения команды веб-разработчиков. Делаем средние и крупные веб-проекты. Проекты непростые и интересные. Работа в офисе в 5 минутах от метро &#171;Левобережная&#187;. Удобное кресло, большой монитор, чай, кофе, книги. Требования Самостоятельность и ответственность. Нужно уметь делать свою задачу хорошо, до конца и вовремя. Не искать причины, почему не получается, а делать так, чтобы [...]]]></description>
			<content:encoded><![CDATA[<p>Ищем программиста для пополнения команды веб-разработчиков. Делаем средние и крупные веб-проекты. Проекты непростые и интересные.</p>
<p>Работа в офисе в 5 минутах от метро &laquo;Левобережная&raquo;. Удобное кресло, большой монитор, чай, кофе, книги.</p>
<h3>Требования</h3>
<ul>
<li>Самостоятельность и ответственность. Нужно уметь делать свою задачу хорошо, до конца и вовремя. Не искать причины, почему не получается, а делать так, чтобы получалось.</li>
<li>Умение писать чистый и качественный код. Так, чтобы его было легко понимать остальным участникам проекта, поддерживать и использовать повторно.</li>
<li>Понимание ООП (зачем оно нужно, как и когда пользоваться).</li>
<li>Умение и желание быстро разбираться в новом (чужой код, технологии, API, &#8230;)</li>
<li>Желательно знать xhtml, css. Верстать не придётся, но понимать что и почему &#8211; нужно.</li>
</ul>
<h3>Технологии</h3>
<p>Проекты пишутся на PHP с использованием Zend Framework, Doctrine, PHPUnit. Знать это всё не обязательно, но тогда нужно будет разобраться.</p>
<h3>З/п от 1500 до 2000$, в зависимости от.</h3>
<p>связаться можно по почте: <a href="mailto://job@strangecompany.ru">job@strangecompany.ru</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/k48j6RJ_b3DyN1Zo-SaaTz8XJ8g/0/da"><img src="http://feedads.g.doubleclick.net/~a/k48j6RJ_b3DyN1Zo-SaaTz8XJ8g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/k48j6RJ_b3DyN1Zo-SaaTz8XJ8g/1/da"><img src="http://feedads.g.doubleclick.net/~a/k48j6RJ_b3DyN1Zo-SaaTz8XJ8g/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=_hAVRYUzEBo:Kwtisq8oPd4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=_hAVRYUzEBo:Kwtisq8oPd4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=_hAVRYUzEBo:Kwtisq8oPd4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=_hAVRYUzEBo:Kwtisq8oPd4:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/_hAVRYUzEBo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/06/%d0%ba-php-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%87%d0%b8%d0%ba%d0%b0%d0%bc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/06/%d0%ba-php-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%87%d0%b8%d0%ba%d0%b0%d0%bc/</feedburner:origLink></item>
		<item>
		<title />
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/GdGxj7D_tpk/</link>
		<comments>http://alexey.tokar.net.ua/2010/06/416/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 09:01:28 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Общая]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/2010/06/416/</guid>
		<description><![CDATA[Почему у нас проще остановить изготовление тортов на летний период, чем обеспечить правильную логистику и хранение?]]></description>
			<content:encoded><![CDATA[<p>Почему у нас проще остановить изготовление тортов на летний период, чем обеспечить правильную логистику и хранение?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/O3hzk5AgJ5wY4QLjj04EaMzkp7Y/0/da"><img src="http://feedads.g.doubleclick.net/~a/O3hzk5AgJ5wY4QLjj04EaMzkp7Y/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/O3hzk5AgJ5wY4QLjj04EaMzkp7Y/1/da"><img src="http://feedads.g.doubleclick.net/~a/O3hzk5AgJ5wY4QLjj04EaMzkp7Y/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=GdGxj7D_tpk:zY4-Pu7jft4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=GdGxj7D_tpk:zY4-Pu7jft4:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/GdGxj7D_tpk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/06/416/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/06/416/</feedburner:origLink></item>
		<item>
		<title>Активная фильтрация на странице сайта</title>
		<link>http://feedproxy.google.com/~r/alexeytokar/~3/6977gTVYTIc/</link>
		<comments>http://alexey.tokar.net.ua/2010/06/%d0%b0%d0%ba%d1%82%d0%b8%d0%b2%d0%bd%d0%b0%d1%8f-%d1%84%d0%b8%d0%bb%d1%8c%d1%82%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d0%b5-%d1%81%d0%b0%d0%b9%d1%82/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 16:15:49 +0000</pubDate>
		<dc:creator>Алексей Токарь</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Разработка]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[фильтр]]></category>

		<guid isPermaLink="false">http://alexey.tokar.net.ua/?p=377</guid>
		<description><![CDATA[Недавно на Хабре проскочила статья об активных фильтрах на сайтах. И вот что меня удивило &#8211; многие в комментариях интересовались а как же сего зверя реализовать самостоятельно. Вот я и постараюсь доступно и по шагам разложить основные положения реализации данной фичи на сайте. Сторона клиента Больше всего кода прийдется написать именно тут. Хотя все зависит [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://alexey.tokar.net.ua/wp-content/uploads/2010/06/filter_sample.resized.png" alt="" title="filter_sample.resized" width="199" height="136" class="alignleft size-full wp-image-380" /> Недавно на Хабре проскочила <a href="http://habrahabr.ru/blogs/ui_design_and_usability/95119/">статья об активных фильтрах</a> на сайтах. И вот что меня удивило &#8211; многие в комментариях интересовались а как же сего зверя реализовать самостоятельно. Вот я и постараюсь доступно и по шагам разложить основные положения реализации данной фичи на сайте.<br />
<span id="more-377"></span></p>
<div style="clear: both;"></div>
<h3>Сторона клиента</h3>
<p>Больше всего кода прийдется написать именно тут. Хотя все зависит от сложности выборки на стороне сервера. Если воспользоваться готовым поисковым механизмом типа Sphinx, то писать прийдется крайне мало, а вот на клиенте, как я говорил, прийдется попотеть.<br />
Итак, представим что у нас вполне конкретная задача: фильтровать фильмы по неким параметрам. Для нашего примера ограничимся жанром и полем сортировки записей (по году выпуска или по рейтингу).<br />
<div id="attachment_382" class="wp-caption aligncenter" style="width: 266px"><img src="http://alexey.tokar.net.ua/wp-content/uploads/2010/06/diag1.png" alt="" title="классы участники" width="256" height="118" class="size-full wp-image-382" /><p class="wp-caption-text">классы участники и отношения между ними в разрабатываемой системе</p></div></p>
<p>Графический интерфейс тоже усложнять не станем. В столбик сделаем группу чекбоксов и селект для выбора сортировки, под ними список отфильтрованых результатов.<br />
Теперь можно нахардкодить много кода, который проверяет каждый элемент, читает какие-то его атрибуты, создает строку запроса на сервер и отправляет все для получения данных, но мы поступим иначе: сначала мы создадим два класса, которые будут представлять сущность каждого типа выбора. Чекбоксами мы можем выбрать несколько значений для отображения, а селектом только одно. Таким образом нам нужны классы MultipleSelect и SingleSelect. Их интерфейс на диаграмме.<br />
<div id="attachment_390" class="wp-caption aligncenter" style="width: 342px"><img src="http://alexey.tokar.net.ua/wp-content/uploads/2010/06/diag21.png" alt="" title="diag2" width="332" height="142" class="size-full wp-image-390" /><p class="wp-caption-text">Модели еденичного и множественного выборов</p></div></p>
<p>Как видно из диаграммы, интерфейсы классов идентичные. Они оба обладают методами select(), getSelected() и reset(). Отличия, как принято в ООП, наблюдаются только в реализации. Класс SingleSelect в методе select() заполняет указанным значением приватную переменную selected, и таким образом у него выбран всегда только один конкретный вариант, который возвращается методом getSelected().<br />
MultipleSelect же в свою очередь при каждом вызове select() добавляет переданный идентификатор во внутренний массив selected, и метод getSelected() возвращает этот массив. Дополнительный метод unselect(), как можно догадаться, удаляет из массива выбранных значений указанное.<br />
Методы reset() в обоих случаях ведут себя одинаково &#8211; они очищают приватную переменную от установленных значений.</p>
<p>Теперь у нас есть рабочая модель пользовательского выбора и мы можем связать ее с интерфейсом.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// создаем объект выбора для жанров</span>
<span style="color: #003366; font-weight: bold;">var</span> genres_selector <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> MultipleSelect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">/** 
 * для каждого чекбокса в списке жанров добавляем событие на нажатие, 
 * которое отмечает выбранный жанр в объекте выбранных, либо удаляет его от туда
 */</span>
$$<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'ul.genres input[type=checkbox]'</span> <span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span> cb_element <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    cb_element.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">checked</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            genres_selector.<span style="color: #660066;">select</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'value'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            genres_selector.<span style="color: #660066;">unselect</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'value'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #006600; font-style: italic;">// создаем объект выбора для сортировки</span>
<span style="color: #003366; font-weight: bold;">var</span> sort_selector <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> SingleSelect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// отмечаем выбор, при изменении значения в селекте</span>
$<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'sort-selector-el'</span> <span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'change'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    sort_selector.<span style="color: #660066;">select</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'value'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Теперь при взаимодействии с пользовательским интерфейсом наша модель заполняется данными.</p>
<p>Последнее что необходимо делать &#8211; отправлять запросы для обновление коллекций на сервер. Чтобы не зависеть от кол-ва критериев фильтрации, а также инкапсулировать логику в одном месте, создадим еще один класс &laquo;FilterRequestor&raquo;.<br />
<div id="attachment_401" class="wp-caption aligncenter" style="width: 357px"><img src="http://alexey.tokar.net.ua/wp-content/uploads/2010/06/diag3.png" alt="" title="diag3" width="347" height="103" class="size-full wp-image-401" /><p class="wp-caption-text">Класс для получения с сервера отфильтрованных данных</p></div></p>
<p>Какой принцип действия у этого класса?<br />
После инстанциирования он заполняется объектами фильтра, каждому из которых присваивается название атрибута (второй параметр в методе addSelector() ). При добавлении нового селектора, ему при помощи шаблона &laquo;<a href="http://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C)">Наблюдатель</a>&laquo;, добавляем слушателя на события onSelect, onUnselect и onReset, которые бросаются при каждом вызове методов select(), unselect() и reset() соответственно.<br />
При каждом из этих действий FilterRequestor должен запросить данные с сервера. Для этого он использует метод doRequest(), по окончании работы который бросает событие onSuccess, передав данные как аргумент функции-слушателю.</p>
<p><img src="http://alexey.tokar.net.ua/wp-content/uploads/2010/06/diag1.resized.png" alt="Порядок выполнения программы" title="diag1.resized" width="550" height="358" class="aligncenter size-full wp-image-411" /></p>
<p>Все. Осталось получить массив отфильтрованых данных (либо готовый HTML) и вставить на место старого.</p>
<p>О серверной части говорить пока не стану &#8211; там все должно быть понятно. Ну а если нет &#8211; пишите и эту тему раскрою более детально.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/1sMpyN4EpKS3nW6aYRWbMpmise8/0/da"><img src="http://feedads.g.doubleclick.net/~a/1sMpyN4EpKS3nW6aYRWbMpmise8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1sMpyN4EpKS3nW6aYRWbMpmise8/1/da"><img src="http://feedads.g.doubleclick.net/~a/1sMpyN4EpKS3nW6aYRWbMpmise8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexeytokar?a=6977gTVYTIc:nEnyvTJKo5E:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=6977gTVYTIc:nEnyvTJKo5E:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexeytokar?a=6977gTVYTIc:nEnyvTJKo5E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/alexeytokar?i=6977gTVYTIc:nEnyvTJKo5E:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexeytokar/~4/6977gTVYTIc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexey.tokar.net.ua/2010/06/%d0%b0%d0%ba%d1%82%d0%b8%d0%b2%d0%bd%d0%b0%d1%8f-%d1%84%d0%b8%d0%bb%d1%8c%d1%82%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d0%b5-%d1%81%d0%b0%d0%b9%d1%82/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://alexey.tokar.net.ua/2010/06/%d0%b0%d0%ba%d1%82%d0%b8%d0%b2%d0%bd%d0%b0%d1%8f-%d1%84%d0%b8%d0%bb%d1%8c%d1%82%d1%80%d0%b0%d1%86%d0%b8%d1%8f-%d0%bd%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d0%b5-%d1%81%d0%b0%d0%b9%d1%82/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.782 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-08-30 20:12:27 -->
