<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Просто про веб технологии &#187; Tips And Tricks</title>
	<atom:link href="http://pro100pro.com/category/tips-and-tricks/feed" rel="self" type="application/rss+xml" />
	<link>http://pro100pro.com</link>
	<description>Про PHP, MySQL, Sphinx и Zend Framework, про архитектуру и производителность, про высокие нагрузки и масштабирование</description>
	<lastBuildDate>Thu, 13 Oct 2011 12:58:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Увеличиваем производительность Sphinx BuildExcerpts</title>
		<link>http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts</link>
		<comments>http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts#comments</comments>
		<pubDate>Sun, 07 Aug 2011 09:41:04 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[Search excerpts]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=568</guid>
		<description><![CDATA[English version of this post. Начиная с версии 2.0.1 в Sphinx появилась возможность параллельного построения поисковых сниппетов. Под параллельным построением имеется ввиду, что процесс обработки массива текста предназначенного для построения сниппетов будет распределен по нескольким CPU. Приведенная ниже реализация лучше всего подойдет системам в которых требуется генерировать сниппеты для сотен мегабайт текста. Для распараллеливания процессов [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ivinco.com/blog/high-performance-buildexcerpts-with-sphinx-search/" title="High performance BuildExcerpts() with Sphinx Search" target="_blank">English version</a> of this post. </p>
<p>Начиная с версии 2.0.1 в Sphinx появилась возможность параллельного построения поисковых сниппетов. Под параллельным построением имеется ввиду, что процесс обработки массива текста предназначенного для построения сниппетов будет распределен по нескольким CPU.  Приведенная ниже реализация лучше всего подойдет системам в которых требуется генерировать сниппеты для сотен мегабайт текста.</p>
<p>Для распараллеливания процессов в Sphinx предусмотрена опция dist_threads, которая указывает searchd на сколько CPUs разбивать задачу.  dist_threads используется как для обработки поисковых запросов в распределенных индексах, так и для обработки сниппетов, которые мы рассмотрим ниже.</p>
<p>Рассмотрим функцию SphinxAPI BuildExcerpt. По умолчанию функция BuildExcerpt в качестве первого параметра принимает массив текста для обработки,<br />
но к сожалению такой вызов функции не использует параллельную обработку. </p>
<p>Но, начиная с версии 2.0.1, для BuildExcerpt был разработана новая опция load_files. load_files указывает Sphinx, что первый параметр функции BuildExcerpt должен содержать имена файлов, в которых должен находиться текст для обработки. Опция load_files совместно с опцией dist_threads позволяет Sphinx распаралеливать процесс построения сниппетов.</p>
<p>К сожалению у данной реализации есть узкое место - это необходимость использовать файловую систему.  Так как, прежде чем генерировать сниппеты на основе файлов, надо эти файлы создать, а для жестких дисков это достаточно медленная операция.  Поэтому, правильное решение, это создавать файлы в памяти, т.к. запись в память происходит в тысячи раз быстрее, чем на жесткий диск.</p>
<p>Для создания файлов в оперативной памяти в ядро Linux начиная с версии 2.4. включена файловой системой tmpfs, который мы и воспользуемся. </p>
<h3>Файловая система</h3>
<p>Для этого создадим директорию будущей системы и смонтируем ее.</p>
<div class="igBar"><span id="lcode-4"><a href="#" onclick="javascript:showPlainTxt('code-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-4">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mkdir /space</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mount -t tmpfs -o size=1G,nr_inodes=10k,mode=<span style="color:#800000;color:#800000;">0700</span> tmpfs /space </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>В данном примере права на запись будут только у владельца директории /space, а максимальный размер файловой системы будет установлен в 1Gb.</p>
<h3>Модифицируем BuildExcerpts</h3>
<div class="igBar"><span id="lcode-5"><a href="#" onclick="javascript:showPlainTxt('code-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-5">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">function buildExcerptFile<span style="color:#006600; font-weight:bold;">&#40;</span>$documents, $options = array<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; foreach<span style="color:#006600; font-weight:bold;">&#40;</span>$documents as $doc<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $file = <span style="color:#CC0000;">"/space/"</span>.<span style="color:#CC0000;">'snip_'</span>.<span style="">md5</span><span style="color:#006600; font-weight:bold;">&#40;</span>$doc<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#CC0000;">'_'</span>.<span style="">time</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file_put_contents<span style="color:#006600; font-weight:bold;">&#40;</span>$file, $doc<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $files<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = $file;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; $client = new SphinxClient<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $client-&gt;<span style="">setServer</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'localhost'</span>, <span style="color:#800000;color:#800000;">9312</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; $res = $client-&gt;<span style="">BuildExcerpts</span><span style="color:#006600; font-weight:bold;">&#40;</span> $files, <span style="color:#CC0000;">'index'</span>, $keywords,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; array<span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'around'</span>=&gt;<span style="color:#800000;color:#800000;">10</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'limit'</span> =&gt; <span style="color:#800000;color:#800000;">300</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'load_files'</span> =&gt; <span style="color:#800000;color:#800000;">1</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; foreach<span style="color:#006600; font-weight:bold;">&#40;</span>$files as $file<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unlink<span style="color:#006600; font-weight:bold;">&#40;</span>$file<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; return $res;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Функция работает в три этапа: </p>
<ul>
<li>Первый. Записываем все документы в файлы, причем имена файлов выбираются так, чтоб не получилось коллизий.</li>
<li>Второе. Вызываем функцию Sphinx BuildExcerpt, первым параметром передаем массив файлов вместо массива текста.  А в третьем параметре указываем опцию load_files = 1</li>
<li>Третий. Удаляем созданные файлы для очистки памяти.</li>
</ul>
<h3>Sphinx.conf</h3>
<p>В разделе searchd добавляем следующую строку:</p>
<div class="igBar"><span id="lcode-6"><a href="#" onclick="javascript:showPlainTxt('code-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-6">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">dist_threads = <span style="color:#800000;color:#800000;">2</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
dist_thread лучше делать равным количеству CPU в системе.</p>
<p>На моих тестовых данных, данная реализация работает в два раза быстрее «стандартного» вызова BuildExcerpts на системе с двумя CPU. Средний размер документа 1-3 Mb, количество документов для одной было равным 100, т.е. один вызов обрабатывал в среднем 200 Mb текста.</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2011. |
<a href="http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts">Permalink</a> |
<a href="http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts&title=Увеличиваем производительность Sphinx BuildExcerpts">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/performance" rel="tag">Performance</a>, <a href="http://pro100pro.com/tag/search-excerpts" rel="tag">Search excerpts</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/uvelichivaem-proizvoditelnost-sphinx-buildexcerpts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как я установливал MongoDB на Ubuntu 64bit</title>
		<link>http://pro100pro.com/kak-ya-ustanovlival-mongodb-na-ubuntu-64bit</link>
		<comments>http://pro100pro.com/kak-ya-ustanovlival-mongodb-na-ubuntu-64bit#comments</comments>
		<pubDate>Wed, 08 Sep 2010 12:47:39 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=496</guid>
		<description><![CDATA[MongoDB для Ubuntu устанавливается следующей командой PLAIN TEXT CODE: sudo apt-get install mongodb После, по туториалу создал каталог для данных PLAIN TEXT CODE: mkdir -p /data/db/ &#160; chown `id -n` /data/db Запускаю mongodb командой mongodb и получаю следующую ошибку: PLAIN TEXT CODE: mongo: error while loading shared libraries: libmozjs.so: cannot open shared object file: No [...]]]></description>
			<content:encoded><![CDATA[<p>MongoDB для Ubuntu устанавливается следующей командой</p>
<div class="igBar"><span id="lcode-11"><a href="#" onclick="javascript:showPlainTxt('code-11'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-11">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">sudo apt-get install mongodb </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>После, по туториалу создал каталог для данных</p>
<div class="igBar"><span id="lcode-12"><a href="#" onclick="javascript:showPlainTxt('code-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-12">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mkdir -p /data/db/</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">chown `id -n` /data/db </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Запускаю mongodb командой mongodb и получаю следующую ошибку:</p>
<div class="igBar"><span id="lcode-13"><a href="#" onclick="javascript:showPlainTxt('code-13'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-13">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mongo: error while loading shared libraries: libmozjs.<span style="">so</span>: cannot open shared object file: No such file or directory </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Лучиться путем определения пути к libmozjs.so во время запуска mongodb или mongo клиента:</p>
<div class="igBar"><span id="lcode-14"><a href="#" onclick="javascript:showPlainTxt('code-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-14">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">LD_LIBRARY_PATH=/usr/lib/xulrunner-`xulrunner --gre-version` mongodb </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Теперь все работает.</p>
<p>Ждем пока мэинтейнеры пофиксят MongoDB зависимости.</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/kak-ya-ustanovlival-mongodb-na-ubuntu-64bit">Permalink</a> |
<a href="http://pro100pro.com/kak-ya-ustanovlival-mongodb-na-ubuntu-64bit#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/kak-ya-ustanovlival-mongodb-na-ubuntu-64bit&title=Как я установливал MongoDB на Ubuntu 64bit">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/bug" rel="tag">bug</a>, <a href="http://pro100pro.com/tag/mongodb" rel="tag">MongoDB</a>, <a href="http://pro100pro.com/tag/nosql" rel="tag">NoSQL</a>, <a href="http://pro100pro.com/tag/ubuntu" rel="tag">Ubuntu</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/kak-ya-ustanovlival-mongodb-na-ubuntu-64bit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sphinx query log parser &#8211; анализ query performance</title>
		<link>http://pro100pro.com/sphinx-query-log-parser-analiz-query-performance</link>
		<comments>http://pro100pro.com/sphinx-query-log-parser-analiz-query-performance#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:13:05 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Sphinx Search]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[query log]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=448</guid>
		<description><![CDATA[Написал простой скриптик на awk для парсинга Sphinx query.log файла. Парсинг всего файла: PLAIN TEXT CODE: awk '{ s += $6 } END { print &#34;seconds: &#34;, s, &#34; average: &#34;, s/NR, &#34; queries: &#34;, NR }' query.log Парсинг за конкретный период, например за второе Июня: PLAIN TEXT CODE: awk '{ if($2==&#34;Jun&#34; &#38;&#38; $3==2) {s [...]]]></description>
			<content:encoded><![CDATA[<p>Написал простой скриптик на awk для парсинга Sphinx query.log файла.</p>
<p>Парсинг всего файла:</p>
<div class="igBar"><span id="lcode-17"><a href="#" onclick="javascript:showPlainTxt('code-17'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-17">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">awk <span style="color:#CC0000;">'{ s += $6 } END { print &quot;seconds: &quot;, s, &quot; average: &quot;, s/NR, &quot; queries: &quot;, NR }'</span> query.<span style="">log</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Парсинг за конкретный период, например за второе Июня:</p>
<div class="igBar"><span id="lcode-18"><a href="#" onclick="javascript:showPlainTxt('code-18'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-18">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">awk <span style="color:#CC0000;">'{ if($2==&quot;Jun&quot; &amp;&amp; $3==2) {s += $6; r++} } END {print &quot;total seconds: &quot;, s, &quot;average: &quot;, s/r, &quot; total queries: &quot;, r}'</span> query.<span style="">log</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>В приведенных скриптах $N - это номер строки в лог файле.</p>
<p>NR - это общее количество записей в файле разделенных переводом строки.</p>
<p>Пример лог файла:</p>
<p>[Wed Jun  2 11:20:52.379 2010] 0.002 sec [ext2/0/rel 2024 (0,10)]  [wordpress] spectrum<br />
[Wed Jun  2 11:20:52.384 2010] 0.003 sec [ext2/0/rel 2 (0,1000)  @post_type] [wordpress] spectrum<br />
[Wed Jun  2 11:20:52.709 2010] 0.002 sec [ext2/0/rel 963 (0,10)]  [wordpress] tin<br />
[Wed Jun  2 11:20:52.713 2010] 0.002 sec [ext2/0/rel 2 (0,1000)  @post_type] [wordpress] tin<br />
[Wed Jun  2 11:20:52.997 2010] 0.003 sec [ext2/0/rel 1154 (0,10)]  [wordpress] xi<br />
[Wed Jun  2 11:20:53.004 2010] 0.004 sec [ext2/0/rel 2 (0,1000)  @post_type] [wordpress] xi<br />
[Wed Jun  2 11:20:53.029 2010] 0.003 sec [ext2/0/rel 1945 (0,10)]  [wordpress] nasa<br />
[Wed Jun  2 11:20:53.035 2010] 0.003 sec [ext2/0/rel 2 (0,1000)  @post_type] [wordpress] nasa<br />
[Wed Jun  2 11:21:09.359 2010] 0.005 sec [ext2/0/rel 22308 (0,10)]  [wordpress] september</p>
<p>На выводе получится:</p>
<p>seconds:  566.738  average:  0.00948642  queries:  59742</p>
<p>Надеюсь это краткое описание языка awk поможет вам написать парсер для своих лог файлов.</p>
<p>Спасибо!</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/sphinx-query-log-parser-analiz-query-performance">Permalink</a> |
<a href="http://pro100pro.com/sphinx-query-log-parser-analiz-query-performance#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/sphinx-query-log-parser-analiz-query-performance&title=Sphinx query log parser &#8211; анализ query performance">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/awk" rel="tag">awk</a>, <a href="http://pro100pro.com/tag/performance" rel="tag">Performance</a>, <a href="http://pro100pro.com/tag/query-log" rel="tag">query log</a>, <a href="http://pro100pro.com/tag/sphinx-search" rel="tag">Sphinx Search</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/sphinx-query-log-parser-analiz-query-performance/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание простого доступа к ресурсам из ZF контроллера</title>
		<link>http://pro100pro.com/sozdanie-prostogo-dostupa-k-resursam-iz-zf-kontrollera</link>
		<comments>http://pro100pro.com/sozdanie-prostogo-dostupa-k-resursam-iz-zf-kontrollera#comments</comments>
		<pubDate>Mon, 22 Mar 2010 10:08:56 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[ZendFramework]]></category>
		<category><![CDATA[Action Helpers]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=439</guid>
		<description><![CDATA[Было бы очень хорошо иметь возможность доступа к загружаемым в bootstrap ресурсам из контроллеров приложения. Например, я хотел бы получить доступ к "DB" ресурсу из контроллера следующим образом $this->db;
Для этого напишем Action Helper, который будет загружать определенные ресурсы в контроллер приложения:]]></description>
			<content:encoded><![CDATA[<p>Было бы очень хорошо иметь возможность доступа к загружаемым в bootstrap ресурсам из контроллеров приложения. Например, я хотел бы получить доступ к "DB" ресурсу из контроллера следующим образом $this->db;<br />
Для этого напишем Action Helper, который будет загружать определенные ресурсы в контроллер приложения:</p>
<div class="igBar"><span id="lcode-19"><a href="#" onclick="javascript:showPlainTxt('code-19'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-19">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">class My_ResourceInjector extends Zend_Controller_Action_Helper_Abstract</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; protected $_resources;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function __construct<span style="color:#006600; font-weight:bold;">&#40;</span>array $resources = array<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;_resources = $resources;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function preDispatch<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $bootstrap&nbsp; = $this-&gt;<span style="">getBootstrap</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $controller = $this-&gt;<span style="">getActionController</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; foreach <span style="color:#006600; font-weight:bold;">&#40;</span>$this-&gt;_resources as $name<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if <span style="color:#006600; font-weight:bold;">&#40;</span>$bootstrap-&gt;<span style="">hasResource</span><span style="color:#006600; font-weight:bold;">&#40;</span>$name<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $controller-&gt;$name = $bootstrap-&gt;<span style="">getResource</span><span style="color:#006600; font-weight:bold;">&#40;</span>$name<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function getBootstrap<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; return $this-&gt;<span style="">getFrontController</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="">getParam</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'bootstrap'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>и инициализируем его в bootstrap:</p>
<div class="igBar"><span id="lcode-20"><a href="#" onclick="javascript:showPlainTxt('code-20'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-20">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">class Bootstrap extends Zend_Application_Bootstrap_Bootstrap</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; protected function _initResourceInjector<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; Zend_Controller_Action_HelperBroker::<span style="">addHelper</span><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new My_ResourceInjector<span style="color:#006600; font-weight:bold;">&#40;</span>array<span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'db'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'layout'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'navigation'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Код выше, создаст ссылки на ресурсы: db, layout и navigation. Это значит, что теперь вы можете получить к ним прямой доступ из контроллеров.</p>
<div class="igBar"><span id="lcode-21"><a href="#" onclick="javascript:showPlainTxt('code-21'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-21">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">class FooController extends Zend_Controller_Action</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; public function barAction<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;<span style="">layout</span>-&gt;<span style="">disableLayout</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $model = $this-&gt;<span style="">getModel</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $model-&gt;<span style="">setDbAdapter</span><span style="color:#006600; font-weight:bold;">&#40;</span>$this-&gt;<span style="">db</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $this-&gt;<span style="">view</span>-&gt;<span style="">assign</span><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'model'</span>&nbsp; &nbsp; &nbsp; =&gt; $this-&gt;<span style="">model</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0000;">'navigation'</span> =&gt; $this-&gt;<span style="">navigation</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// ...</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Этото решение ведет к некоторому упрощению - теперь нет необходимости вытягивать bootstrap из объекта инициализации, а потом вытягивать ресурс.<br />
Но, у этого решения есть несколько проблем: Откуда мы знаем, какие ресурсы были связаны с контроллером? Как мы можем это контролировать?<br />
Отсюда, вытекает решение создать пул необходимых ресурсов для контроллера.<br />
(...)<br/>Read the rest of <a href="http://pro100pro.com/sozdanie-prostogo-dostupa-k-resursam-iz-zf-kontrollera">Создание простого доступа к ресурсам из ZF контроллера</a> (334 words)</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2010. |
<a href="http://pro100pro.com/sozdanie-prostogo-dostupa-k-resursam-iz-zf-kontrollera">Permalink</a> |
<a href="http://pro100pro.com/sozdanie-prostogo-dostupa-k-resursam-iz-zf-kontrollera#comments">2 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/sozdanie-prostogo-dostupa-k-resursam-iz-zf-kontrollera&title=Создание простого доступа к ресурсам из ZF контроллера">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/action-helpers" rel="tag">Action Helpers</a>, <a href="http://pro100pro.com/tag/php" rel="tag">PHP</a>, <a href="http://pro100pro.com/tag/zend-framework" rel="tag">Zend Framework</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/sozdanie-prostogo-dostupa-k-resursam-iz-zf-kontrollera/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IE7 не показывает скрытый html после удаления CSS класса который его скрывал с помощью jQuery</title>
		<link>http://pro100pro.com/ie7-display-bug-css-jquery-solution</link>
		<comments>http://pro100pro.com/ie7-display-bug-css-jquery-solution#comments</comments>
		<pubDate>Thu, 24 Dec 2009 13:36:13 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=411</guid>
		<description><![CDATA[У IE7 и IE6 есть такая особенность, что когда вы удалете класс, который скрывал (display:none) содержимое строки таблицы (тег tr) с помощью jQuery метода removeClass(), то сожержимое строки таблицы (тег tr) все равно не будет отображаться. ]]></description>
			<content:encoded><![CDATA[<h3>Проблема</h3>
<p>У IE7 и IE6 есть такая особенность, что когда вы удалете класс, который скрывал (display:none) содержимое строки таблицы (тег tr) с помощью jQuery метода removeClass(), то сожержимое строки таблицы (тег tr) все равно не будет отображаться. </p>
<h3>Пример</h3>
<p>Есть у нас форма в таблице, у которой первые две строки видны, а остальные спрятаны и должны отображаються по нажатию на ссылку.</p>
<div class="igBar"><span id="lcode-26"><a href="#" onclick="javascript:showPlainTxt('code-26'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-26">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;table&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;Your name: &lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;&lt;input type=<span style="color:#CC0000;">"text"</span> name=<span style="color:#CC0000;">'name'</span>&gt;&lt;/td&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/tr&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;Your email: &lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;&lt;input type=<span style="color:#CC0000;">"text"</span> name=<span style="color:#CC0000;">'email'</span>&gt;&lt;/td&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/tr&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td colspan=<span style="color:#CC0000;">'2'</span>&gt;&lt;a href=<span style="color:#CC0000;">"javascript:void(0);"</span> onClick=<span style="color:#CC0000;">"showAdvFields();"</span> id=<span style="color:#CC0000;">"showAdvFields"</span>&gt;+ Show advanced options&lt;/a&gt;&lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;tr class=<span style="color:#CC0000;">'hide'</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;Your twitter: &lt;/td&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;&lt;input type=<span style="color:#CC0000;">"text"</span> name=<span style="color:#CC0000;">'twitter'</span>&gt;&lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;tr&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;&lt;/td&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;td&gt;&lt;input type=<span style="color:#CC0000;">"submit"</span> value=<span style="color:#CC0000;">'Submit'</span>&gt;&lt;/td&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/tr&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/table&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;scripty type=<span style="color:#CC0000;">"text/javascript"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">//$j - это ссылка на jQuery.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">function showAdvFields<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; if <span style="color:#006600; font-weight:bold;">&#40;</span>$j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">hasClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'hide'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.hide"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">addClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'showAdv'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.hide"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">removeClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'hide'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"#showAdvFields"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">html</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">" - Hide advanced options"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> else <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.showAdv"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">addClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'hide'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.showAdv"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">removeClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'showAdv'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"#showAdvFields"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">html</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">" + Show advanced options"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/script&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h3>Решение</h3>
<p>Во первых перестаньте использовать барузер Internet Explorere и переходите на FireFox и Google Chrome :). А если у вас нет выбора, то решение использовать функцию jQuery show, которая решает проблему совместимости с IE.<br />
Вот так я изменил метод показа и скрытия строки таблицы.</p>
<div class="igBar"><span id="lcode-27"><a href="#" onclick="javascript:showPlainTxt('code-27'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-27">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">function showAdvFields<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; if <span style="color:#006600; font-weight:bold;">&#40;</span>$j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">hasClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'hide'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.hide"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">addClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'showAdv'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.hide"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">show</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.hide"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">removeClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'hide'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"#showAdvFields"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">html</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">" - Hide advanced options"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> else <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.showAdv"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">addClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'hide'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.showAdv"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">hide</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"tr.showAdv"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">removeClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'showAdv'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $j<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"#showAdvFields"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="">html</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">" + Show advanced options"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h3>Вывод</h3>
<p>Не используйте доморощенные решения, читайте документацию и используйте стандартные методы. Я добавил вызов $j("tr.hide").show(), что помогло решить проблему показа и вызвов $j("tr.showAdv").hide() что решило проблему скрытия строки.</p>
<p>Можно конечно обойтись и без класса hide, но такое решения было очень практично.</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2009. |
<a href="http://pro100pro.com/ie7-display-bug-css-jquery-solution">Permalink</a> |
<a href="http://pro100pro.com/ie7-display-bug-css-jquery-solution#comments">One comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/ie7-display-bug-css-jquery-solution&title=IE7 не показывает скрытый html после удаления CSS класса который его скрывал с помощью jQuery">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/bug" rel="tag">bug</a>, <a href="http://pro100pro.com/tag/css" rel="tag">CSS</a>, <a href="http://pro100pro.com/tag/ie6" rel="tag">IE6</a>, <a href="http://pro100pro.com/tag/ie7" rel="tag">IE7</a>, <a href="http://pro100pro.com/tag/javascript" rel="tag">Javascript</a>, <a href="http://pro100pro.com/tag/jquery" rel="tag">jQuery</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/ie7-display-bug-css-jquery-solution/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Простой загрузчик файлов для Zend Framework</title>
		<link>http://pro100pro.com/prostoy-loader-failov-zendframework</link>
		<comments>http://pro100pro.com/prostoy-loader-failov-zendframework#comments</comments>
		<pubDate>Thu, 17 Dec 2009 13:26:05 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[ZendFramework]]></category>
		<category><![CDATA[Code snippet]]></category>
		<category><![CDATA[File Loader]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=392</guid>
		<description><![CDATA[Сегодня увидел хороший code snippet простого лоадера файлов в проект на Zend Framework. PLAIN TEXT CODE: class App_Application_Resource_Fileloader extends Zend_Application_Resource_ResourceAbstract &#123; &#160; /** &#160; &#160;* @return null &#160; &#160;*/ &#160; public function init&#40;&#41; &#123; &#160; &#160; &#160; &#160; $options = $this-&#62;getOptions &#40;&#41;; &#160; &#160; &#160; &#160; foreach &#40;$options as $filePath&#41; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня увидел хороший code snippet простого лоадера файлов в проект на Zend Framework.</p>
<div class="igBar"><span id="lcode-29"><a href="#" onclick="javascript:showPlainTxt('code-29'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-29">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">class App_Application_Resource_Fileloader extends Zend_Application_Resource_ResourceAbstract <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#008000;">/**</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp;* @return null</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp;*/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">public function init<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $options = $this-&gt;<span style="">getOptions</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; foreach <span style="color:#006600; font-weight:bold;">&#40;</span>$options as $filePath<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include $filePath;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">return null;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">resources.<span style="">fileLoader</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = LIBRARY_PATH <span style="color:#CC0000;">"/App/Regex_Functions.php"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">resources.<span style="">fileLoader</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = LIBRARY_PATH <span style="color:#CC0000;">"/App/Api_Functions.php"</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2009. |
<a href="http://pro100pro.com/prostoy-loader-failov-zendframework">Permalink</a> |
<a href="http://pro100pro.com/prostoy-loader-failov-zendframework#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/prostoy-loader-failov-zendframework&title=Простой загрузчик файлов для Zend Framework">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/code-snippet" rel="tag">Code snippet</a>, <a href="http://pro100pro.com/tag/file-loader" rel="tag">File Loader</a>, <a href="http://pro100pro.com/tag/zend" rel="tag">zend</a>, <a href="http://pro100pro.com/tag/zend-framework" rel="tag">Zend Framework</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/prostoy-loader-failov-zendframework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autoload своих библотек в Zend Framework 1.8+</title>
		<link>http://pro100pro.com/autoload-svoix-biblotek-v-zend-framework-1-8</link>
		<comments>http://pro100pro.com/autoload-svoix-biblotek-v-zend-framework-1-8#comments</comments>
		<pubDate>Fri, 11 Dec 2009 16:49:09 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[ZendFramework]]></category>
		<category><![CDATA[Loader]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=389</guid>
		<description><![CDATA[Чтоб загружать в Zend Framework свои библиотеки, нам надо сделать следующее: Первое - это добавить физический путь к библиотеке в include_path. Второе - это указать префикс классов библиотеки, если такой вообще используется. Добавить путь в include_path можно двумя способами: 1. Жетско прописать путь в public/index.php файле: PLAIN TEXT CODE: set_include_path&#40;implode&#40;PATH_SEPARATOR, array&#40; &#160; &#160; realpath&#40;APPLICATION_PATH . [...]]]></description>
			<content:encoded><![CDATA[<p>Чтоб загружать в Zend Framework свои библиотеки, нам надо сделать следующее:<br />
Первое - это добавить физический путь к библиотеке в include_path.<br />
Второе - это указать префикс классов библиотеки, если такой вообще используется.</p>
<p>Добавить путь в include_path можно двумя способами:<br />
1. Жетско прописать путь в public/index.php файле:</p>
<div class="igBar"><span id="lcode-34"><a href="#" onclick="javascript:showPlainTxt('code-34'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-34">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">set_include_path<span style="color:#006600; font-weight:bold;">&#40;</span>implode<span style="color:#006600; font-weight:bold;">&#40;</span>PATH_SEPARATOR, array<span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; realpath<span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#CC0000;">'/../library'</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; realpath<span style="color:#006600; font-weight:bold;">&#40;</span>APPLICATION_PATH . <span style="color:#CC0000;">'/../mylib'</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; get_include_path<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
2. Прописать путь в конфигруационном файле application/configs/application.ini</p>
<div class="igBar"><span id="lcode-35"><a href="#" onclick="javascript:showPlainTxt('code-35'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-35">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">includePaths.<span style="">mylib</span> = APPLICATION_PATH <span style="color:#CC0000;">"/../mylib"</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
В обоих случаях мы добавляем путь к mylib в include_path. Второй способ более предпочтительный, так как на основе выбранной конфигурации (production, develeopment, test) можно устанавливать путь к различным версиям mylib.<br />
Кстати используя этот же прием, можно устанавливать путь и к каталогу library/Zend и на основе конфигураций подгружать различный версии Zend Framework.</p>
<p>И так, второе что нам необходимо сделать - это подключить автозагрузчик и установить префикс используемый классами библиотеки.<br />
Я прописал автозагрузчик в файле public/index.php</p>
<div class="igBar"><span id="lcode-36"><a href="#" onclick="javascript:showPlainTxt('code-36'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-36">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">require_once <span style="color:#CC0000;">'Zend/Loader/Autoloader.php'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$loader = Zend_Loader_Autoloader::<span style="">getInstance</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$loader-&gt;<span style="">registerNamespace</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'My_'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p>
В данном случае префикс классов в моей библиотеки "My_".</p>
<p>Также, этот же код можно прописать и в классе Bootstrap.php</p>
<div class="igBar"><span id="lcode-37"><a href="#" onclick="javascript:showPlainTxt('code-37'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-37">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">protected function _initAutoload<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; require_once <span style="color:#CC0000;">'Zend/Loader/Autoloader.php'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $loader = Zend_Loader_Autoloader::<span style="">getInstance</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; $loader-&gt;<span style="">registerNamespace</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'My'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Все, теперь ZF знает как загружать классы из вашей бибилиотеки.</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2009. |
<a href="http://pro100pro.com/autoload-svoix-biblotek-v-zend-framework-1-8">Permalink</a> |
<a href="http://pro100pro.com/autoload-svoix-biblotek-v-zend-framework-1-8#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/autoload-svoix-biblotek-v-zend-framework-1-8&title=Autoload своих библотек в Zend Framework 1.8+">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/loader" rel="tag">Loader</a>, <a href="http://pro100pro.com/tag/php" rel="tag">PHP</a>, <a href="http://pro100pro.com/tag/zend-framework" rel="tag">Zend Framework</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/autoload-svoix-biblotek-v-zend-framework-1-8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Studio: Workspace in use choose different workspace</title>
		<link>http://pro100pro.com/zend-studio-workspace-in-use-choose-different-workspace</link>
		<comments>http://pro100pro.com/zend-studio-workspace-in-use-choose-different-workspace#comments</comments>
		<pubDate>Mon, 07 Dec 2009 10:25:43 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Clients Configuration]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[Zend Studio]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Workspace]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=387</guid>
		<description><![CDATA[Вот такую ошибку я увидел недавно, после того как экстренно завершила работу Zend студия. Причем заставить выбрать рабочее простраство по умолчанию не представляется возможным. Вот как решается это под Linux (Ubuntu): rm -rf /tmp/eclipse С данной проблемой под Windows не сталкивался, поэтому точного решения не подскажу. Но, как ориентир, я порекомендовал бы почистить "tmp" каталог [...]]]></description>
			<content:encoded><![CDATA[<p>Вот такую ошибку я увидел недавно, после того как экстренно завершила работу Zend студия.<br />
Причем заставить выбрать рабочее простраство по умолчанию не представляется возможным.<br />
Вот как решается это под Linux (Ubuntu):<br />
<code>rm -rf /tmp/eclipse</code><br />
С данной проблемой под Windows не сталкивался, поэтому точного решения не подскажу.<br />
Но, как ориентир, я порекомендовал бы почистить "tmp" каталог в Application Data. </p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2009. |
<a href="http://pro100pro.com/zend-studio-workspace-in-use-choose-different-workspace">Permalink</a> |
<a href="http://pro100pro.com/zend-studio-workspace-in-use-choose-different-workspace#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/zend-studio-workspace-in-use-choose-different-workspace&title=Zend Studio: Workspace in use choose different workspace">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/bug" rel="tag">bug</a>, <a href="http://pro100pro.com/tag/workspace" rel="tag">Workspace</a>, <a href="http://pro100pro.com/tag/zend-studio" rel="tag">Zend Studio</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/zend-studio-workspace-in-use-choose-different-workspace/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HG Mercurial email уведомления</title>
		<link>http://pro100pro.com/hg-mercurial-email-uvedomleniya</link>
		<comments>http://pro100pro.com/hg-mercurial-email-uvedomleniya#comments</comments>
		<pubDate>Tue, 24 Nov 2009 08:21:24 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Mercurial HG]]></category>
		<category><![CDATA[Server Configuration]]></category>
		<category><![CDATA[Tips And Tricks]]></category>
		<category><![CDATA[CVS]]></category>
		<category><![CDATA[HG]]></category>
		<category><![CDATA[hg email]]></category>
		<category><![CDATA[hg hook]]></category>
		<category><![CDATA[hg notify]]></category>
		<category><![CDATA[Mercurail]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=377</guid>
		<description><![CDATA[В каждом серьезном проекте используется контроль версий и разработку зачастую ведет не один программист. Как минимум, кроме программиста есть еще и главный программист, который следит за качеством разработки. С помощью hg mercural мы можем предоставить главному программисту мониторинг изменений в репозитории, особенно когда это касается обновления главной ветки. В mercurial для этого есть замечательный встроенный [...]]]></description>
			<content:encoded><![CDATA[<p>В каждом серьезном проекте используется контроль версий и разработку зачастую ведет не один программист. Как минимум, кроме программиста есть еще и главный программист, который следит за качеством разработки.<br />
С помощью hg mercural мы можем предоставить главному программисту мониторинг изменений в репозитории, особенно когда это касается обновления главной ветки.<br />
В mercurial для этого есть замечательный встроенный плагин notify, который поможет нам настроить уведомления по email.</p>
<p>Схема репозиториев будет следующая:</p>
<ol>
<li> Главный /www/mybigsite.com/</li>
<li> Транзитный /home/repos/mybigsite</li>
<li> Репозиторий разработчика находится в его домашнем каталоге.</li>
</ol>
<p>Когда разработчику надо отправить новую порцию изменений в главный репозиторий, он:</p>
<ol>
<li> Отправляет данные в транзитный репозиторий (команда hg pus)</li>
<li> А потом главный разработчик проверяет изменения и обновляет главный репозиторий (команда hg pus &amp;&amp; hg up)</li>
</ol>
<p>Настроим два уведомления:</p>
<ol>
<li> По событию hg pus в транзитный репозиторий -  будем отправлять diff изменений главному программисту. Таких обновлений (hg pus) разработчик или разработчики могут сделать несколько, до того как будет обновлен главный репозиторий.</li>
<li> Главный программист получив уведомления об обновлении транзитного репозитория проверяет изменения и обновляет главный репозиторий. По этому событию мы отправляем главному разработчику новую порцию diff изменений, который содержит именно все порции обновлений, что попали на главный репозиторий.</li>
</ol>
<p>Теперь перейдем к настройке уведомлений используя hghook notify.<br />
Открываем файл команд hgrc транзитного репозитория, если файла нет, то создаем его /home/repos/mybigsite/.hg/hgrc и добавляем следующие строки</p>
<p>(...)<br/>Read the rest of <a href="http://pro100pro.com/hg-mercurial-email-uvedomleniya">HG Mercurial email уведомления</a> (592 words)</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2009. |
<a href="http://pro100pro.com/hg-mercurial-email-uvedomleniya">Permalink</a> |
<a href="http://pro100pro.com/hg-mercurial-email-uvedomleniya#comments">No comment</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/hg-mercurial-email-uvedomleniya&title=HG Mercurial email уведомления">del.icio.us</a>
<br/>
Post tags: <a href="http://pro100pro.com/tag/cvs" rel="tag">CVS</a>, <a href="http://pro100pro.com/tag/hg" rel="tag">HG</a>, <a href="http://pro100pro.com/tag/hg-email" rel="tag">hg email</a>, <a href="http://pro100pro.com/tag/hg-hook" rel="tag">hg hook</a>, <a href="http://pro100pro.com/tag/hg-notify" rel="tag">hg notify</a>, <a href="http://pro100pro.com/tag/mercurail" rel="tag">Mercurail</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/hg-mercurial-email-uvedomleniya/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL меняем storage engine в нескольких таблицах на InnoDB</title>
		<link>http://pro100pro.com/mysql-menyaem-storage-engine-v-neskolkix-tablicax-na-innodb</link>
		<comments>http://pro100pro.com/mysql-menyaem-storage-engine-v-neskolkix-tablicax-na-innodb#comments</comments>
		<pubDate>Tue, 17 Nov 2009 05:18:33 +0000</pubDate>
		<dc:creator>Yaroslav Vorozhko</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tips And Tricks]]></category>

		<guid isPermaLink="false">http://pro100pro.com/?p=370</guid>
		<description><![CDATA[Задача изменить storage engine для всех таблиц mysql в одной базе данных. Это решение работает для тех таблиц, которые имеют одинаковый префикс, например для таблиц wordpress и других CMS поддерживающих префиксы. Коротко, задача решается получением списка всех таблиц в один файл, с помощью замены строк строятся правильные SQL команды и последнее - надо выполнить команды. [...]]]></description>
			<content:encoded><![CDATA[<p>Задача изменить storage engine для всех таблиц mysql в одной базе данных.</p>
<p>Это решение работает для тех таблиц, которые имеют одинаковый префикс, например для таблиц wordpress и других CMS поддерживающих префиксы.</p>
<p>Коротко, задача решается получением списка всех таблиц в один файл, с помощью замены строк строятся правильные SQL команды и последнее - надо выполнить команды.</p>
<p>1)Получаем список таблиц в файл:</p>
<div class="igBar"><span id="lcode-44"><a href="#" onclick="javascript:showPlainTxt('code-44'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-44">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mysql -u username -ppassword -D dbname -e <span style="color:#CC0000;">"show tables"</span>&gt; outputfile.<span style="">txt</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
2)Открываем файл outputfile.txt например в vim и делаем следующие замены:</p>
<ul>
<li>Префикс меняем на ALTER TABLE prefix_ - для vim: %s/prefix_/ALTER TABLE prefix_/g</li>
<li>Перенос строки меняем на ENGINE=InnoDB плюс перенос строки - для vim: %s/\n/ ENGINE=InnoDB;\r/g</li>
</ul>
<p>3)Выполняем скрипт, но прежде делаем бэкап базы:</p>
<div class="igBar"><span id="lcode-45"><a href="#" onclick="javascript:showPlainTxt('code-45'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-45">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mysqldump -u username -ppassword -D dbname&gt; dbname.<span style="">sql</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">mysql -u username -ppassword -D dbname &lt;outputfile.<span style="">txt</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Может кто нибудь подскажет как сделать то же самое для таблиц без одинакового префикса?</p>
<hr />
<p><small>© Yaroslav Vorozhko  for <a href="http://pro100pro.com">Просто про веб технологии</a>, 2009. |
<a href="http://pro100pro.com/mysql-menyaem-storage-engine-v-neskolkix-tablicax-na-innodb">Permalink</a> |
<a href="http://pro100pro.com/mysql-menyaem-storage-engine-v-neskolkix-tablicax-na-innodb#comments">3 comments</a> |
Add to
<a href="http://del.icio.us/post?url=http://pro100pro.com/mysql-menyaem-storage-engine-v-neskolkix-tablicax-na-innodb&title=MySQL меняем storage engine в нескольких таблицах на InnoDB">del.icio.us</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://pro100pro.com/mysql-menyaem-storage-engine-v-neskolkix-tablicax-na-innodb/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

