<?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>The Rpsl Blog &#187; Полезное</title>
	<atom:link href="http://blog.rpsl.info/category/zametki/poleznoe/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rpsl.info</link>
	<description></description>
	<lastBuildDate>Tue, 24 Jan 2012 11:35:02 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Translimit.sh patch</title>
		<link>http://blog.rpsl.info/2012/01/translimit-sh-patch/</link>
		<comments>http://blog.rpsl.info/2012/01/translimit-sh-patch/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 11:35:02 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Заметки]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[nas]]></category>
		<category><![CDATA[torrents]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=31719</guid>
		<description><![CDATA[Поднимая в очередной раз тему моего NAS'a, хочу обратить внимание владельцев на поломанный translimit.sh. Это скрипт, который запускается по крону и производит ротацию ваших торрентов, что бы они запускались или останавливались, нарабатывали ratio и т.п. В версии выложенной на сайте и форуме readynas, есть ошибка и поэтому он не работает с новыми версиями transmission. Ошибка заключается в неправильном парсинге переменных с помощью awk, видимо api поменялось, а пропатчить забыли. Для решения проблемы, можно скачать готовый файл и заметить им существующий, либо поправить руками. Строку: RATIO="$($REMOTE $TRANSOPT -t $ID -i &#124; grep Ratio &#124; awk '{ print $2; }')" &#160; Заменить [...]]]></description>
			<content:encoded><![CDATA[<p>Поднимая в очередной раз тему моего NAS'a, хочу обратить внимание владельцев на поломанный translimit.sh. Это скрипт, который запускается по крону и производит ротацию ваших торрентов, что бы они запускались или останавливались, нарабатывали ratio и т.п. В версии выложенной на сайте и форуме readynas, есть ошибка и поэтому он не работает с новыми версиями transmission.</p>

<p>Ошибка заключается в неправильном парсинге переменных с помощью awk, видимо api поменялось, а пропатчить забыли. Для решения проблемы, можно скачать <a href="http://pastebin.com/Ngu3g6Qr" target="_blank">готовый файл</a> и заметить им существующий, либо поправить руками.</p>

<p>Строку:</p>
<code lang="bash">
            RATIO="$($REMOTE $TRANSOPT -t $ID -i | grep Ratio | awk '{ print $2; }')"
</code>
<p>&nbsp;</p>
<p>Заменить на:</p>
<code lang="bash">
            RATIO="$($REMOTE $TRANSOPT -t $ID -i | grep Ratio: | awk '{ print $2; }')"
</code>
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2012/01/translimit-sh-patch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP &#8212; fastcgi_finish_request</title>
		<link>http://blog.rpsl.info/2011/09/php-fastcgi_finish_request/</link>
		<comments>http://blog.rpsl.info/2011/09/php-fastcgi_finish_request/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 07:49:56 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=31695</guid>
		<description><![CDATA[А вы знаете про эту замечательную функцию? Если кратко, то используя ее можно заставить приложение отдавать контент пользователю гораздо быстрее, разделяя логику приложения на "это необходимо пользователю" и "это пользователю не очень важно". Когда php работает в fastcgi режиме, например в популярной связке nginx+php-fcgi, у вас появляется возможность сначала посчитать все данные которые необходимы что бы отдать пользователю страницу, а уже потом, когда страница отдана и nginx отдает ее клиенту, можно выполнить все остальные действия, например отправить письма или обновить кэш или запустить некие механизмы очистки. Нужно отдельно упомянуть, что для правильной работы, fastcgi_finish_request должен запускать после session_write_close и ob_* [...]]]></description>
			<content:encoded><![CDATA[<p>А вы знаете про эту замечательную функцию?</p>
<p>Если кратко, то используя ее можно заставить приложение отдавать контент пользователю гораздо быстрее, разделяя логику приложения на "это необходимо пользователю" и "это пользователю не очень важно". Когда php работает в fastcgi режиме, например в популярной связке nginx+php-fcgi, у вас появляется возможность сначала посчитать все данные которые необходимы что бы отдать пользователю страницу, а уже потом, когда страница отдана и nginx отдает ее клиенту, можно выполнить все остальные действия, например отправить письма или обновить кэш или запустить некие механизмы очистки.</p>
<p>Нужно отдельно упомянуть, что для правильной работы, fastcgi_finish_request должен запускать после session_write_close и ob_* функций.</p>
<p>Простой пример:</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Hello word'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// В данной реализации, данные отдадутся в клиенту сразу,</span>
    <span style="color: #666666; font-style: italic;">// а если закомментировать вызов fastcgi_finish_request(),</span>
    <span style="color: #666666; font-style: italic;">// клиент будет ждать 10 секунд, до того, как получит ответ.</span>
    fastcgi_finish_request<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/09/php-fastcgi_finish_request/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>9 million hits/day with 120 megs RAM</title>
		<link>http://blog.rpsl.info/2011/09/9-million-hits-day-with-120-megs-ram/</link>
		<comments>http://blog.rpsl.info/2011/09/9-million-hits-day-with-120-megs-ram/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 18:55:37 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=31680</guid>
		<description><![CDATA[Оставлю у себя в закладках. After checking this for about 9 months, I can tell you this almost always reads that number: 300 microseconds. This is about one third the time a camera flash illuminates. That’s, well, pretty quick. When I started, my software was taking about 0.25 seconds (250 000 microseconds) to produce the front page of my website. I needed to improve performance by over 800x. Далее]]></description>
			<content:encoded><![CDATA[Оставлю у себя в закладках.



<blockquote>After checking this for about 9 months, I can tell you this almost always reads that number: 300 microseconds. This is about one third the time a camera flash illuminates. That’s, well, pretty quick. When I started, my software was taking about 0.25 seconds (250 000 microseconds) to produce the front page of my website. I needed to improve performance by over 800x.</blockquote>


<a href="http://tumbledry.org/2011/08/31/9_million_hits_day_with_120">Далее</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/09/9-million-hits-day-with-120-megs-ram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node Saver</title>
		<link>http://blog.rpsl.info/2011/08/node-saver/</link>
		<comments>http://blog.rpsl.info/2011/08/node-saver/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 00:00:45 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=31622</guid>
		<description><![CDATA[Примерно в марте месяце, пока мне было скучно и хотелось поиграться с MongoDB, я решил сделать свой аналог замечательного сайта peeep.us. Дело в том, что peeep.us хоть и жутко удобный, но не совсем безопастный, добавленные туда страницы потом хрен удалишь и самое ужасное, он открыт к индексации. Кстати все кто хочет почитать лепру но не имеют туда доступа могут ..., ну короче намек поняли, все как с мегафоном. Первую версию, которая на момент публикации поста, живет на save.rpsl.info я написал часа за четыре, из них примерно два часа я искал у кого своровать дизайн :D После этого, я решил что [...]]]></description>
			<content:encoded><![CDATA[<p>Примерно в марте месяце, пока мне было скучно и хотелось поиграться с MongoDB, я решил сделать свой аналог замечательного сайта <a href="http://www.peeep.us/" target="_blank">peeep.us</a>. Дело в том, что peeep.us хоть и жутко удобный, но не совсем безопастный, добавленные туда страницы потом хрен удалишь и самое ужасное, он открыт к индексации. Кстати все кто хочет почитать лепру но не имеют туда доступа могут ..., ну короче намек поняли, все как с мегафоном.</p>

<a href="http://blog.rpsl.info/wp-content/uploads/2011/08/Snimok-e-krana-2011-08-29-v-23.29.27.png"><img src="http://blog.rpsl.info/wp-content/uploads/2011/08/Snimok-e-krana-2011-08-29-v-23.29.27-300x279.png" alt="" title="Saver by Rpsl" width="300" height="279" class="alignleft size-medium wp-image-31623 colorbox-31622" /></a>

<p>Первую версию, которая на момент публикации поста, живет на <a href="http://save.rpsl.info" target="_blank">save.rpsl.info</a> я написал часа за четыре, из них примерно два часа я искал у кого своровать дизайн :D</p>
<p>После этого, я решил что связка php и mongodb для такой микрозадачи не нужна и решил переписать ее на node.js. За несколько вечеров я разобрался и сделал и то, что хотел. В конечном варианте полностью отказалася от MongoDB и заменил его на Memcached. Зачем мне тут монго? Данные я кладу на несколько дней, данных мало, заодно и решится вопрос с их очисткой, а то, что не надежно, ну и фиг с ним. Ничего ценного там хранить смысла нету, а статистика ребута memcached'a на серваке говорит о том, что если раз в полгода я и потеряю данные, то ничего страшного не произойдет.</p>
<p>И все бы было хорошо, но я не решил главную проблему - сохранение работает только для открытых источников, как передавать страницу с сайта, которая закрыта basic auth я не придумал. У меня есть конечно несколько идей, но проверять их мне слишком лениво. Вторая проблема в том, что мне не хочется из-за этой мелочи поднимать на боевом серваке Node.JS, в какой-то момент пробовал взять виртуалку у clodo.ru, заодно потестировать его, но тесты оказались плачевными, потом хотел у alice2k стрельнуть кусочек vds, но уехал в Испанию и снова забил на это.</p>
<p>В итоге с марта месяца, у меня на рабочем столе лежит папка node, которую я все время хочу удалить и в последний момент вспоминаю, что этого делать не стоит. Несколько раз приходилось доставать из бэкапа.</p>
<p>Сегодня мне захотелось ее удалить, поэтому я решил выложить сорцы на github</p>
<p>В общем форкайте меня, все дела. <a href="https://github.com/Rpsl/node-saver">https://github.com/Rpsl/node-saver</a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/08/node-saver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проверка multi_query в mysqli</title>
		<link>http://blog.rpsl.info/2011/08/proverka-multi_query-v-mysqli/</link>
		<comments>http://blog.rpsl.info/2011/08/proverka-multi_query-v-mysqli/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 08:06:22 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=31618</guid>
		<description><![CDATA[Увидел сегодня красивое решение проверки выполнения мультизапроса в mysqli. Если кто не в курсе, то можно сформировать в одну строку кучу запросов, разделяемых точкой с запятой, а потом отдать это на выполнение. Так вот проверять ошибки можно разными способами, а можно просто в конец добавить некий абстрактный SELECT 'complete'. Это подходит для запросов типа INSERT, DELETE, UPDATE. Eще, у меня в примере указан не прямой вызов multi_query, а обертка для запросов, думаю что это и зачем вам объяснять не нужно. if &#40; $DB&#40;&#41;-&#62;multi&#40;&#34; UPDATE someshit SET bla=bla-1 WHERE id='%d'; DELETE FROM someshit WHERE category='%d'; DELETE FROM someshit WHERE id='%d'; SELECT [...]]]></description>
			<content:encoded><![CDATA[<p>Увидел сегодня красивое решение проверки выполнения <a href="http://php.net/manual/en/mysqli.multi-query.php" target="_blank">мультизапроса в mysqli</a>.</p>

<p>Если кто не в курсе, то можно сформировать в одну строку кучу запросов, разделяемых точкой с запятой, а потом отдать это на выполнение. Так вот проверять ошибки можно разными способами, а можно просто в конец добавить некий абстрактный SELECT 'complete'. Это подходит для запросов типа INSERT, DELETE, UPDATE.</p>

<p>Eще, у меня в примере указан не прямой вызов multi_query, а обертка для запросов, думаю что это и зачем вам объяснять не нужно.</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$DB</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">multi</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;
    UPDATE someshit SET bla=bla-1 WHERE id='<span style="color: #009933; font-weight: bold;">%d</span>';
    DELETE FROM someshit WHERE category='<span style="color: #009933; font-weight: bold;">%d</span>';
    DELETE FROM someshit WHERE id='<span style="color: #009933; font-weight: bold;">%d</span>';
    SELECT 'complete';&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$category</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;complete&quot;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$resultCode</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">DB_ERROR</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$resultCode</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">SUCCESS</span><span style="color: #339933;">;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/08/proverka-multi_query-v-mysqli/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP &#8212; Переворот числа</title>
		<link>http://blog.rpsl.info/2011/08/php-perevorot-chisla/</link>
		<comments>http://blog.rpsl.info/2011/08/php-perevorot-chisla/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 18:14:11 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=28183</guid>
		<description><![CDATA[Видать dotZero почувствовал, что я уже устал переворачивать строки, поэтому подкинул сегодня задачу, которую я до этого не решал. Днем разбираться с ней было некогда, а вечером, решил все-таки уделить ей внимание и разобраться как это работает. Задача простая. Перевернуть любое целое число используя только математические операторы. Было 5432, должно стать 2345. &#60;?php &#160; function reverseInt&#40; $a &#41; &#123; $tmp = $a; $return = 0; &#160; while&#40; $tmp &#62; 0 &#41; &#123; /* &#160; Играть с числами очень весело, можно находить и открывать для себя их волшебные свойства. Так, например, если 432 разделить на 10, то мы получим 43.2 &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Видать <a href="http://dotzero.ru/" target="_blank">dotZero</a> почувствовал, что я уже устал переворачивать строки, поэтому подкинул сегодня задачу, которую я до этого не решал. Днем разбираться с ней было некогда, а вечером, решил все-таки уделить ей внимание и разобраться как это работает.</p>
<p>Задача простая. Перевернуть любое целое число используя только математические операторы. Было 5432, должно стать 2345.</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">function</span> reverseInt<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$a</span> <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$tmp</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$a</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$return</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$tmp</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">/* 
&nbsp;
            Играть с числами очень весело, можно находить и открывать для себя
            их волшебные свойства. Так, например, если 432 разделить на 10, 
            то мы получим 43.2
&nbsp;
            Выделяя остаток от деления, нам очень легко решить нашу 
            задачу по перестановке числа.
&nbsp;
            Таким образом, проходим по каждому разряду числа, 
            умножая его после каждой итерации на 10
            и прибавляя к результату остаток от деления,
            получаем нужное нам число.
&nbsp;
            */</span>
&nbsp;
            <span style="color: #000088;">$return</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$return</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">10</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$tmp</span> <span style="color: #339933;">%</span> <span style="color: #cc66cc;">10</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #666666; font-style: italic;">/*
            Каждый раз делим исходное число на 10, что-бы обойти каждый его разряд.
            */</span>
&nbsp;
            <span style="color: #000088;">$tmp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$tmp</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">10</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$return</span> <span style="color: #339933;">;</span>
&nbsp;
&nbsp;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000088;">$foo</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">123456789</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Start: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$foo</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$bar</span> <span style="color: #339933;">=</span> reverseInt<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$foo</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'End: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$bar</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span></pre></div></div>




<p>Как видно, все достаточно просто, нужно просто понять как это работает. Теперь хочу найти все варианты с решением этой задачи, думаю что если сделать это с помощью битовых операций получится еще быстрее и красивее.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/08/php-perevorot-chisla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Little MongoDB Book</title>
		<link>http://blog.rpsl.info/2011/04/the-little-mongodb-book/</link>
		<comments>http://blog.rpsl.info/2011/04/the-little-mongodb-book/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 13:40:53 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[mongodb]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=25264</guid>
		<description><![CDATA[Пусть полежит тут в виде зеркала и памятки]]></description>
			<content:encoded><![CDATA[<div style="text-align: center">
<a href="http://blog.rpsl.info/wp-content/uploads/2011/04/mongodb.pdf"><img src="http://blog.rpsl.info/wp-content/uploads/2011/04/mongodb_cover.png" alt="" title="The Little MongoDB Book" width="344" height="200" class="aligncenter size-full wp-image-25265 colorbox-25264" /></a></div>
<p>Пусть полежит тут в виде зеркала и памятки</p>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/04/the-little-mongodb-book/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Как перестать читать интернет и начать делать проекты</title>
		<link>http://blog.rpsl.info/2011/03/kak-perestat-chitat-internet-i-nachat-delat-proekty/</link>
		<comments>http://blog.rpsl.info/2011/03/kak-perestat-chitat-internet-i-nachat-delat-proekty/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 08:36:06 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[работа]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=24967</guid>
		<description><![CDATA[Довольно хороший доклад от Ильи Бирмана]]></description>
			<content:encoded><![CDATA[Довольно хороший доклад от <a href="http://ilyabirman.ru/">Ильи Бирмана</a><br />
<br />
<blockquote>	
<object width="600" height="400"><param name="video" value="http://static.video.yandex.ru/lite/x-raizor/8qcbwcfua6.2726/"></param><param name="allowFullScreen" value="true"></param><param name="scale" value="noscale"></param><embed src="http://static.video.yandex.ru/lite/x-raizor/8qcbwcfua6.2726/" type="application/x-shockwave-flash" width="600" height="400" allowFullScreen="true" scale="noscale" ></embed></object>
</blockquote>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/03/kak-perestat-chitat-internet-i-nachat-delat-proekty/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP Кэширование картинок часть вторая.</title>
		<link>http://blog.rpsl.info/2011/03/php-kehshirovanie-kartinok-chast-vtoraya/</link>
		<comments>http://blog.rpsl.info/2011/03/php-kehshirovanie-kartinok-chast-vtoraya/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 10:38:11 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[картинки]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=24767</guid>
		<description><![CDATA[Я уже когда-то писал про мой способ кэшировать картинки, а сейчас заметил, что не выкладывал сюда переделанный варинт, Идея осталась прежней, только работа с изображениями была отдана либе http://phpthumb.gxdlabs.com/ &#60;?php /** * Скрипт iCacher создан что бы облечить кеширование изображений на сайте * и организовать лаконичную возможность генерации картинок различных размеров. * iCacher является т.н. роутером для http://phpthumb.gxdlabs.com/ и не будет * работать правильно при отсутвие данной библиотеки. * * Для правильно работы подразумевается соблюдение нескольких правил: * * 1. В папке MAIN_FOLDER хранятся оригинальные изображения. * 2. В папку CACHE_FOLDER будут храниться измененные изображения. * 3. При обращение к [...]]]></description>
			<content:encoded><![CDATA[Я уже когда-то писал про <a href="http://blog.rpsl.info/2009/08/php-images-cache.html">мой способ кэшировать картинки</a>, а сейчас заметил, что не выкладывал сюда переделанный варинт,
Идея осталась прежней, только работа с изображениями была отдана либе http://phpthumb.gxdlabs.com/


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
   <span style="color: #009933; font-style: italic;">/**
     * Скрипт iCacher создан что бы облечить кеширование изображений на сайте
     * и организовать лаконичную возможность генерации картинок различных размеров.
     * iCacher является т.н. роутером для http://phpthumb.gxdlabs.com/ и не будет
     * работать правильно при отсутвие данной библиотеки.
     *
     * Для правильно работы подразумевается соблюдение нескольких правил:
     *
     *  1. В папке MAIN_FOLDER хранятся оригинальные изображения.
     *  2. В папку CACHE_FOLDER будут храниться измененные изображения.
     *  3. При обращение к несуществующему файлу из папки CACHE_FOLDER происходит
     *      перенаправление на данный файл*, который в свою очередь создает
     *      необходимый файл либо возвращет 404 ошибку.
     *          * .htaccess rewrite rule:
     *              RewriteRule   ^images_folder/([0-9a-z]+)/([0-9a-z]+)/(.*)$  iCacher.php?param=$1&amp;size=$2&amp;file=$3 [L,QSA]
     *  4. После генерации изображений они должны быть доступны по прямому запросу.
     *  5. Для обновления миниатюр вы должны самостоятельно организовать удаление
     *      созданых скриптом файлов.
     *      В крайнем случае можно использовать GET параметр flush с любым значением.
     *
     *
     *  При необходимости создавайте собственные плагины или ф-ции обработки.
     */</span></pre></div></div>




Скрипт лежит на github.com - https://github.com/Rpsl/iCacher/blob/master/iCacher.php

В целом все хорошо, скрипт местами дебильный и с не логичной реализацией, но уже пол года работает на одном хайлоад проекте.
Кстати, на папку с кэшироваными изображениями натравлен скрипт, который удаляет файлы созданные более 30 дней назад, что бы не скапливать мусор.]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/03/php-kehshirovanie-kartinok-chast-vtoraya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>seo rewrite rule</title>
		<link>http://blog.rpsl.info/2010/10/seo-rewrite-rule/</link>
		<comments>http://blog.rpsl.info/2010/10/seo-rewrite-rule/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 06:21:28 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=15880</guid>
		<description><![CDATA[Оптимизаторы не знают что такое реврайты и эстетическая красота. А меня жутко бесит, когда в корне сайта лежит 100500 html файлов, которые очень нужны для продвижения. Приходится постоянно лечить. RewriteRule ^&#40;&#91;a-z0-9_-&#93;+&#41;.html$ static/seo_pages/$1.html &#91;L,QSA&#93;]]></description>
			<content:encoded><![CDATA[Оптимизаторы не знают что такое реврайты и эстетическая красота. А меня жутко бесит, когда в корне сайта лежит 100500 html файлов, которые очень нужны для продвижения.

Приходится постоянно лечить.


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">RewriteRule   ^<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>a<span style="color:#006600; font-weight:bold;">-</span>z0<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">9</span>_<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">html</span>$  static<span style="color:#006600; font-weight:bold;">/</span>seo_pages<span style="color:#006600; font-weight:bold;">/</span>$1.<span style="color:#9900CC;">html</span> <span style="color:#006600; font-weight:bold;">&#91;</span>L,QSA<span style="color:#006600; font-weight:bold;">&#93;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/10/seo-rewrite-rule/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

