<?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; Рамблер</title>
	<atom:link href="http://kostenko.name/category/%d1%80%d0%b0%d0%bc%d0%b1%d0%bb%d0%b5%d1%80/feed/" rel="self" type="application/rss+xml" />
	<link>http://kostenko.name</link>
	<description>&#38;gugu;</description>
	<lastBuildDate>Wed, 09 May 2012 13:11:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>perl2port</title>
		<link>http://kostenko.name/2009/12/03/perl2port/</link>
		<comments>http://kostenko.name/2009/12/03/perl2port/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 13:17:29 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Рамблер]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[perl2port]]></category>

		<guid isPermaLink="false">http://kostenko.name/2009/12/03/perl2port/</guid>
		<description><![CDATA[Странно, что этого до сих пор никто не написал: App::Pm2Port Создаёт порт из перлового модуля и отправляет его разработчикам FreeBSD. Как работать: pm2port CSS::Croco Тестируем и находим баги.]]></description>
			<content:encoded><![CDATA[<p>Странно, что этого до сих пор никто не написал: <a href="http://search.cpan.org/~gugu/App-Pm2Port-0.23/">App::Pm2Port</a></p>
<p>Создаёт порт из перлового модуля и отправляет его разработчикам FreeBSD.</p>
<p>Как работать:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pm2port CSS::Croco</pre></div></div>

<p>Тестируем и находим баги.</p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2009/12/03/perl2port/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ускоряем свой HTTP-сервер</title>
		<link>http://kostenko.name/2009/11/05/accept-filters/</link>
		<comments>http://kostenko.name/2009/11/05/accept-filters/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 19:17:38 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Web2]]></category>
		<category><![CDATA[Рамблер]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=633</guid>
		<description><![CDATA[Для начала расскажу, как обычно работают сервера: Создаётся сокет, который слушает порт Вызывается системный вызов accept, который берёт первого клиента из очереди соединений, а если его нет &#8211; то блокирует приложение до тех пор, пока он не появится Приложение что-то делает с этим клиентом и в конце концов с ним прощается goto пункт два nginx <a href='http://kostenko.name/2009/11/05/accept-filters/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Для начала расскажу, как обычно работают сервера:</p>
<ol>
<li>Создаётся сокет, который слушает порт</li>
<li>Вызывается системный вызов accept, который берёт первого клиента из очереди соединений, а если его нет &#8211; то блокирует приложение до тех пор, пока он не появится</li>
<li>Приложение что-то делает с этим клиентом и в конце концов с ним прощается</li>
<li>goto пункт два</li>
</ol>
<p>nginx и lighttpd использует вместо accept функции select/kevent/epoll, которые позволяют работать со многими клиентами одновременно, но это уже отдельная история (к асинхронным веб-серверам accept-фильтры применимяются точно так же)</p>
<p>Accept-фильтры &#8211; это модули ядра FreeBSD, которые не говорят, что сокет готов до тех пор, пока не выполнится какое-то условие. Я нашёл только два фильтра:</p>
<ul>
<li><b>dataready</b> &#8211; accept блокирует сокет до тех пор, пока в него прийдут данные. Когда мы получаем сокет, мы уже точно можем из него что-то считать</li>
<li><b>httpready</b> &#8211; сокет блокируется до тех пор, пока не прийдёт полный GET/HEAD запрос. Соответственно, нам не надо тратить время на переключение контекста, если запрос ещё не собрался.</li>
</ul>
<h3>Остановимся на фильтре httpready</h3>
<p>Буферизирует он только GET и HEAD запросы, так как в POST/PUT может прийти 600мегабайтный <a href="http://mirrors.kernel.org/gentoo/releases/amd64/autobuilds/current-iso/install-amd64-minimal-20091029.iso">порнофильм</a>.<br />
Итак, подключаем модуль accf_http:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">    kldload accf_http
    echo 'accf_http_load=”YES”' &gt;&gt; /boot/loader.conf</pre></div></div>

<p>Далее нужно изменить работу с сокетом &mdash; установить опцию httpready:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">        <span style="color: #993333;">struct</span> accept_filter_arg afa<span style="color: #339933;">;</span>
        bzero<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>afa<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>afa<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        strcpy<span style="color: #009900;">&#40;</span>afa.<span style="color: #202020;">af_name</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;httpready&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        setsockopt<span style="color: #009900;">&#40;</span>sok<span style="color: #339933;">,</span> SOL_SOCKET<span style="color: #339933;">,</span> SO_ACCEPTFILTER<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>afa<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>afa<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Результаты тестов</h3>
<p>Так как существует мнение, что accept-фильтры бесполезны, мы решили провести тестирование. Веб-сервер был выбран AnyEvent::HTTPD, клиент &#8211; ab. Итак, результаты:</p>
<ol>
<li>локальная машина, 10000 запросов, concurrency = 4: httpready даёт прирост в 10%</li>
<li>локальная сеть, 10000 запросов, concurrency=1000: httpready даёт прирост в 10%</li>
<li>локальная сеть, 10000 запросов, concurrency = 4: прирост в 25%</li>
<li>локальная сеть, 1000 запросов, concurrency = 1: в два раза!</li>
</ol>
<p>В боевых условиях, при наличии GPRS, 256k и прочего позора цивилизации, скорость ещё увеличится.</p>
<h3>Настройка веб-серверов</h3>
<p>В apache 1.3+ и nginx accept-фильтры поддерживаются.</p>
<p>Apache под FreeBSD изначально содержит такую конфигурацию:</p>

<div class="wp_syntax"><div class="code"><pre class="none" style="font-family:monospace;"> AcceptFilter http httpready
 AcceptFilter https dataready</pre></div></div>

<p>и менять её не стоит.<br />
А вот в настройках сервера nginx стоит добавить опцию</p>

<div class="wp_syntax"><div class="code"><pre class="none" style="font-family:monospace;">    accept_filter &quot;httpready&quot;;</pre></div></div>

<h3>Ссылки</h3>
<ul>
<li><a href="http://sysoev.ru/freebsd/accept-filters.html">статья Игоря Сысоева</a></li>
<li>man accf_http</li>
<li>man accf_data</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2009/11/05/accept-filters/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LeechBlock</title>
		<link>http://kostenko.name/2009/10/05/leechblock/</link>
		<comments>http://kostenko.name/2009/10/05/leechblock/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 17:14:15 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Рамблер]]></category>
		<category><![CDATA[leechblock]]></category>
		<category><![CDATA[time management]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=585</guid>
		<description><![CDATA[Этот пост посвящен распиздяям, которые не могут заставить себя работать. Я из таких людей. Ведь кроме исправления говна, которое я накодировал, есть всякие вконтактики, фейсбуки, твиттеры и остальные убивалки времени. И я нихрена не успеваю. Как только я пришёл в Рамблер, я осознал, что из-за постоянного распиздяйства в Приватбанке, я вконец разленился. И начал заставлять <a href='http://kostenko.name/2009/10/05/leechblock/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Этот пост посвящен распиздяям, которые не могут заставить себя работать. Я из таких людей. Ведь кроме исправления говна, которое  я накодировал, есть всякие вконтактики, фейсбуки, твиттеры и остальные убивалки времени. И я нихрена не успеваю.</p>
<p>Как только я пришёл в Рамблер, я осознал, что из-за постоянного распиздяйства в Приватбанке, я вконец разленился. И начал заставлять себя работать. В этом мне помог отличный плагин к Firefox &#8211; <a href="https://addons.mozilla.org/en-US/firefox/addon/4476">LeechBlock</a>.</p>
<p>Он умеет</p>
<ul>
<li>блокировать заразные сайты (vkontakte,twitter, etc)</li>
<li>блокировать сайты по времени &#8211; например, с 13:00 до 24:00 у меня заблокирована вся гадость</li>
<li>во время блокировки можно запретить изменение настроек и доступ к <a href="about:config">about:config</a></li>
<li>можно ставить лимиты, напоимер: 5 минут в час на почту, 5 минут в день &#8211; на вконтакте</li>
</ul>
<p>Вот и сейчас себе его поставил&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2009/10/05/leechblock/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Небольшой пост о моей личной жизни&#8230;</title>
		<link>http://kostenko.name/2009/07/08/private/</link>
		<comments>http://kostenko.name/2009/07/08/private/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 21:15:56 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Рамблер]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=438</guid>
		<description><![CDATA[Сегодня заметил, что прошёл уже год, как Я работаю в Рамблере&#8230; По этому поводу я напишу немного букав. Как сейчас помню фразу, сказанную моим начальником, АП Витязем: - Пока у вас нет семьи и детей, вы не привязаны ни к чему. Можете в любой момент взять и уехать куда-то. Может быть я не передал фразу <a href='http://kostenko.name/2009/07/08/private/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Сегодня заметил, что прошёл уже год, как Я работаю в <a href="http://rambler.ru/">Рамблере</a>&#8230;</p>
<p>По этому поводу я напишу немного букав. Как сейчас помню фразу, сказанную моим начальником, АП Витязем:</p>
<blockquote><p>- Пока у вас нет семьи и детей, вы не привязаны ни к чему. Можете в любой момент взять и уехать куда-то.</p></blockquote>
<p>Может быть я не передал фразу дословно, но смысл был таким. Через пару месяцев я поехал на UA Web в Киев, где с отвисшей челюстью слушал о том, как у Яндекса и других компаний всё охуенно. И подумал, а не отправить ли мне резюме в Яндекс.</p>
<p>Отправил. Для симметрии его же послал в Рамблер и Mail.ru. Кто-то из этой счастливой тройки (скорее всего Mail.ru) позвонил моему начальнику из Приватбанка, за что я получил изрядных пиздюлей <img src='http://kostenko.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Когда я ехал в Маскву, я надеялся, что мне удастся найти работу в Яндексе. Ну и собеседование в Рамблере для галочки пройти стоило. <img src='http://kostenko.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Тогда же я устроил аукцион прикольный. В стиле &#8220;пойду к тем, кто больше заплатит&#8221;. Яндексоиды предложили больше, но мне уже хотелось в Рамблер. Ведь в Рамблере был мой любимый Catalyst и DBIx::Class <img src='http://kostenko.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>И я ни разу не пожалел об этом решении&#8230; К чему это я? Да ни к чему, просто понос мыслей.</p>
<p>Но если вы такой зануда, что не заснули, читая мой пост, то я задам вам вопрос:</p>
<p>Пригодилось ли вам реально в жизни высшее образование? С реальными историями, желательно.</p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2009/07/08/private/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Андрею нехуй нечего было делать делать в 5 утра</title>
		<link>http://kostenko.name/2008/11/04/algorithm-floodcontro/</link>
		<comments>http://kostenko.name/2008/11/04/algorithm-floodcontro/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 02:08:41 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[perl]]></category>
		<category><![CDATA[Рамблер]]></category>
		<category><![CDATA[Algorighm::FloodControl]]></category>
		<category><![CDATA[cpan]]></category>

		<guid isPermaLink="false">http://kostenko.name/?p=217</guid>
		<description><![CDATA[Для начала расскажу историю. В далёком 2004-м году чувак по имени Vladi Belperchinov-Shabanski &#8220;Cade&#8221; написал модуль Algorithm::FloodControl. В те дремучие века люди не знали, что такое ООП и их заботила поддержка Perl4 Сделал апгрейд этому модулю. Сделал его ООП-шным, добавил поддержку backend-ов для Cache::Memcached::Fast, Cache::FastMmap. Сделал и для Cache::Memcached, ибо не сложно три строки написать, <a href='http://kostenko.name/2008/11/04/algorithm-floodcontro/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Для начала расскажу историю. В далёком 2004-м году чувак по имени <a href="http://cade.datamax.bg/">Vladi Belperchinov-Shabanski &#8220;Cade&#8221;</a> написал модуль Algorithm::FloodControl. В те дремучие века люди не знали, что такое ООП и их заботила поддержка Perl4 <img src='http://kostenko.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Сделал апгрейд этому модулю. Сделал его ООП-шным, добавил поддержку backend-ов для Cache::Memcached::Fast, Cache::FastMmap. Сделал и для Cache::Memcached, ибо не сложно три строки написать, но когда 15 процессов инкрементят запись, то срабатывает от силы 10% инкрементов. Ниипу почему.</p>
<p>Наверное, ещё будут бока с документацией. Это я поправлю.</p>
<p><a href="http://kostenko.name/wp-content/uploads/2008/11/algorithm-floodcontrol-190tar.gz">Algorithm-FloodControl-1.90</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2008/11/04/algorithm-floodcontro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>боянчег)</title>
		<link>http://kostenko.name/2008/10/31/%d0%b1%d0%be%d1%8f%d0%bd%d1%87%d0%b5%d0%b3/</link>
		<comments>http://kostenko.name/2008/10/31/%d0%b1%d0%be%d1%8f%d0%bd%d1%87%d0%b5%d0%b3/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 17:08:53 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Рамблер]]></category>

		<guid isPermaLink="false">http://kostenko.name/2008/10/31/%d0%b1%d0%be%d1%8f%d0%bd%d1%87%d0%b5%d0%b3/</guid>
		<description><![CDATA[— Ага, ось ці хлопці…Я роблю особливе, вуличне чаклунство…Хочете побачити трішечки чаклунства? — Ненене, Дэвид Блейн, отвали от нас….Мы вообще по-украински не понимаем!! — А, то ви москалі? А що робите в Тернополі? — Отвали, демон! Что хотим, то и делаем! И не москали, а русские. — А ви впевнені, що ви русскіє? Ось ти…Ти <a href='http://kostenko.name/2008/10/31/%d0%b1%d0%be%d1%8f%d0%bd%d1%87%d0%b5%d0%b3/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>— Ага, ось ці хлопці…Я роблю особливе, вуличне чаклунство…Хочете побачити трішечки чаклунства?<br />
— Ненене, Дэвид Блейн, отвали от нас….Мы вообще по-украински не понимаем!!<br />
— А, то ви москалі? А що робите в Тернополі?<br />
— Отвали, демон! Что хотим, то и делаем! И не москали, а русские.<br />
— А ви впевнені, що ви русскіє? Ось ти…Ти впевнений в цьому?<br />
— Ну блин….Уверен конечно.<br />
— А що це ти тоді вирядився так? Вишиванка …ше й оселедець козацький на голові.<br />
— Что??? Какая еще вышиванка? В рот мне ноги, демон, что ты наделал? Верни нам наши шмоты…фак мой мозг!<br />
— Доречі, хлопці…я щось забув вдома свій годинник….Не підкажете котра година?<br />
— Ееее….За вісім хвилин шоста….Фак мій моск, демон…що ти наробив….я говорю українською!!! Очманіти можна…Ноги мені до рота! Зупинись….відчепись від нас, добре? Ну що ще? Що ти пиришся, демон?<br />
— Та я оце думаю…Ви плануєте святкувати майбутній день народження Степана Бандери?<br />
— Якого Бандери? Цього злісного націоналіста, який чинив звірства серед мирного населення? Ой…що це я несу всяку московську пропаганду…Це ж справжній незламний патріот нашої України….Слава Україні! Відсвяткуємо як треба, з розмахом!<br />
— Героям слава)) Ну бувайте…Годі з вас&#8230; я бачу, що ви хороші хлопці…</p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2008/10/31/%d0%b1%d0%be%d1%8f%d0%bd%d1%87%d0%b5%d0%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Поиска от гугла в рамблере, скорее всего, не будет&#8230;</title>
		<link>http://kostenko.name/2008/10/23/%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d0%be%d1%82-%d0%b3%d1%83%d0%b3%d0%bb%d0%b0-%d0%b2-%d1%80%d0%b0%d0%bc%d0%b1%d0%bb%d0%b5%d1%80%d0%b5-%d1%81%d0%ba%d0%be%d1%80%d0%b5%d0%b5-%d0%b2%d1%81%d0%b5%d0%b3/</link>
		<comments>http://kostenko.name/2008/10/23/%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d0%be%d1%82-%d0%b3%d1%83%d0%b3%d0%bb%d0%b0-%d0%b2-%d1%80%d0%b0%d0%bc%d0%b1%d0%bb%d0%b5%d1%80%d0%b5-%d1%81%d0%ba%d0%be%d1%80%d0%b5%d0%b5-%d0%b2%d1%81%d0%b5%d0%b3/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 09:26:07 +0000</pubDate>
		<dc:creator>Андрей Костенко</dc:creator>
				<category><![CDATA[Рамблер]]></category>
		<category><![CDATA[fas]]></category>
		<category><![CDATA[gays]]></category>
		<category><![CDATA[rambler]]></category>

		<guid isPermaLink="false">http://kostenko.name/2008/10/23/%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d0%be%d1%82-%d0%b3%d1%83%d0%b3%d0%bb%d0%b0-%d0%b2-%d1%80%d0%b0%d0%bc%d0%b1%d0%bb%d0%b5%d1%80%d0%b5-%d1%81%d0%ba%d0%be%d1%80%d0%b5%d0%b5-%d0%b2%d1%81%d0%b5%d0%b3/</guid>
		<description><![CDATA[Lenta.ru: Бизнес: Антимонопольщики не разрешили купить &#8220;Бегуна&#8221; Федеральная антимонопольная служба (ФАС) отказала компании Kokuna Holdings Limited в приобретении у компании Rambler Media агентства контекстной рекламы &#8220;Бегун&#8221;. Об этом говорится в официальном пресс-релизе ФАС. от себя могу добавить: в ФАС пидарасы. всё. до единого.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.lenta.ru/news/2008/10/23/noagree/">Lenta.ru: Бизнес: Антимонопольщики не разрешили купить &#8220;Бегуна&#8221;</a><br />
<blockquote>Федеральная антимонопольная служба (ФАС) отказала компании Kokuna Holdings Limited в приобретении у компании Rambler Media агентства контекстной рекламы &#8220;Бегун&#8221;. Об этом говорится в официальном пресс-релизе ФАС.</p></blockquote>
<p>от себя могу добавить: в ФАС пидарасы. всё. до единого.</p>
]]></content:encoded>
			<wfw:commentRss>http://kostenko.name/2008/10/23/%d0%bf%d0%be%d0%b8%d1%81%d0%ba%d0%b0-%d0%be%d1%82-%d0%b3%d1%83%d0%b3%d0%bb%d0%b0-%d0%b2-%d1%80%d0%b0%d0%bc%d0%b1%d0%bb%d0%b5%d1%80%d0%b5-%d1%81%d0%ba%d0%be%d1%80%d0%b5%d0%b5-%d0%b2%d1%81%d0%b5%d0%b3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

