<?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>Pusher&#039;s home &#187; программирование</title>
	<atom:link href="http://pusher.kiev.ua/tag/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/feed/" rel="self" type="application/rss+xml" />
	<link>http://pusher.kiev.ua</link>
	<description>homepage&#38;blog</description>
	<lastBuildDate>Thu, 02 Feb 2012 22:45:16 +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>Обжора skype</title>
		<link>http://pusher.kiev.ua/professional/%d0%be%d0%b1%d0%b6%d0%be%d1%80%d0%b0-skype/</link>
		<comments>http://pusher.kiev.ua/professional/%d0%be%d0%b1%d0%b6%d0%be%d1%80%d0%b0-skype/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 22:54:33 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/?p=455</guid>
		<description><![CDATA[Разработчикам нужно отрезать пальцы.]]></description>
			<content:encoded><![CDATA[<p><a href="http://pusher.kiev.ua/wp-content/uploads/2012/01/20120129-b52-85kb.jpg"><img class="alignnone size-full wp-image-456" title="20120129-b52-85kb" src="http://pusher.kiev.ua/wp-content/uploads/2012/01/20120129-b52-85kb.jpg" alt="" width="457" height="300" /></a><span></span></p>
<p>Разработчикам нужно отрезать пальцы.</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/professional/%d0%be%d0%b1%d0%b6%d0%be%d1%80%d0%b0-skype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>История юзер-агентов</title>
		<link>http://pusher.kiev.ua/professional/work/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%8e%d0%b7%d0%b5%d1%80-%d0%b0%d0%b3%d0%b5%d0%bd%d1%82%d0%be%d0%b2/</link>
		<comments>http://pusher.kiev.ua/professional/work/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%8e%d0%b7%d0%b5%d1%80-%d0%b0%d0%b3%d0%b5%d0%bd%d1%82%d0%be%d0%b2/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 16:10:57 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Перепосты]]></category>
		<category><![CDATA[Работа]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[перепост]]></category>
		<category><![CDATA[полезно]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/?p=359</guid>
		<description><![CDATA[В начале был NCSA Mosaic, и Mosaic называл себя NCSA_Mosaic/2.0 (Windows 3.1), и Mosaic показывал картинки с текстом, и счастье пришло. И потом пришел новый веб-браузер, известный как «Mozilla», что сокращением было для «Mosaic Killer»(«Убийца Мозаики») в конце этой увлекательной статьи вы узнаете, почему юзер-агент Гугл Хрома выглядит так дико: Mozilla/5.0 (Windows; U; Windows NT [...]]]></description>
			<content:encoded><![CDATA[<p><em>В начале был NCSA Mosaic, и Mosaic называл себя NCSA_Mosaic/2.0 (Windows 3.1), и Mosaic показывал картинки с текстом, и счастье пришло.</p>
<p>И потом пришел новый веб-браузер, известный как «Mozilla», что сокращением было для «Mosaic Killer»(«Убийца Мозаики»)</em></p>
<p>в конце этой увлекательной статьи вы узнаете, почему юзер-агент Гугл Хрома выглядит так дико:<br />
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13</p>
<p><a href="http://habrahabr.ru/blogs/browsers/84222/" target="_self">рекомендуется к прочтению</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/professional/work/%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%8e%d0%b7%d0%b5%d1%80-%d0%b0%d0%b3%d0%b5%d0%bd%d1%82%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mysql, postgre, mongodb и снова mysql</title>
		<link>http://pusher.kiev.ua/professional/work/mysql-postgre-mongodb-%d0%b8-%d1%81%d0%bd%d0%be%d0%b2%d0%b0-mysql/</link>
		<comments>http://pusher.kiev.ua/professional/work/mysql-postgre-mongodb-%d0%b8-%d1%81%d0%bd%d0%be%d0%b2%d0%b0-mysql/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 17:27:52 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/?p=90</guid>
		<description><![CDATA[На работе столкнулся с досадным недостатком mysql: он не умеет делать слияние отсортированных индексом массивов. На пальцах: пусть есть таблица  objects (id, category_id, time) с индексом (category_id, time). Задача &#8211; выбрать среди данных нескольки категорий N последних. Запрос: SELECT  * FROM objects WHERE category_id IN (10,11,12,13, 14) ORDER BY time DESC LIMIT 10; даже не [...]]]></description>
			<content:encoded><![CDATA[<p>На работе столкнулся с досадным недостатком mysql: он не умеет делать слияние отсортированных индексом массивов.</p>
<p>На пальцах: пусть есть таблица  objects (id, category_id, time) с индексом (category_id, time). Задача &#8211; выбрать среди данных нескольки категорий N последних.</p>
<p>Запрос:<br />
SELECT  * FROM objects WHERE category_id IN (10,11,12,13, 14) ORDER BY time DESC LIMIT 10;<br />
даже не думает работать по индексу. Он отбирает все объекты из этих категорий, сортирует их filesort&#8217;ом и потом отбирает первые. Хотя очень логично поступить аналогично сортировке слиянием: взять отсортированные последовательности для каждой категории и сливать их, пока не получим N элементов.</p>
<p>Итак, мелькнула идея попробовать применить PostgreSQL. Поставил, перелил в него таблицу, сделал аналогичные запросы &#8211; он приятно удивил: 0.5-0.6 секунд против 2.5-3.0 в мускуле. Причём Постгре был под виндой, а Мускул под FreeBSD. Не могу точно утверждать, индексы разруливает лучше или просто сыграл тот факт, что движок быстрее (а он реально быстрее), потому что он и без проставленных индексов работал быстрее мускула (в районе 1.0-1.5 сек).</p>
<p>Я бы на этом и остановился, но шеф настоял, чтобы я попробовал MongoDB. Опустив лирику, могу только подписаться под резюме: &#8220;Быстрый, как понос&#8221;. Для той же самой задачи он дал результаты порядка 0.2-0.3 сек.</p>
<p>И уже все были готовы перейти на использование MongoDB, как вдруг мелькнула шальная мысль. Сделали копию таблицу в Mysql MEMORY engine, внесли данные в нужном порядке, убрали (!) все индексы. Ура! Результаты порядка 0.02-0.05 сек.</p>
<p>Что тут сказать&#8230; Универсальных решений не бывает, вот и всё.</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/professional/work/mysql-postgre-mongodb-%d0%b8-%d1%81%d0%bd%d0%be%d0%b2%d0%b0-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>partial distinct</title>
		<link>http://pusher.kiev.ua/common/partial-distinct/</link>
		<comments>http://pusher.kiev.ua/common/partial-distinct/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 14:26:00 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[задачи]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/uncategorized/partial-distinct/</guid>
		<description><![CDATA[предлагаю SQL-задачку. не надуманная, возникла на работе. контекст: музыкальный сайт, таблица (mysql) с плейлистами юзера playlists: { int id, //автоинкремент int song_id, //id самой песни int user_id, //id юзера, который добавил себе песню datetime added, //время, когда добавлена песня в его плейлист } song_id не уникальны, т.к. песню могли добавить несколько юзеров. задача: написать SQL [...]]]></description>
			<content:encoded><![CDATA[<p>предлагаю SQL-задачку. не надуманная, возникла на работе.</p>
<p>контекст: музыкальный сайт, таблица (mysql) с плейлистами юзера</p>
<p>playlists:<br />
{<br />
  int id, //автоинкремент<br />
  int song_id, //id самой песни<br />
  int user_id, //id юзера, который добавил себе песню<br />
  datetime added, //время, когда добавлена песня в его плейлист<br />
}</p>
<p>song_id не уникальны, т.к. песню могли добавить несколько юзеров.</p>
<p>задача: написать SQL для выборки: &#8220;последние песни, добавленные в плейлисты пользователей&#8221;. для песен нужно вывести кто и когда их добавил в последний раз. дубликаты песен выводить не нужно, если песню добавили два юзера &#8211; вывести последнее добавление. </p>
<p>иными словами, нужно выбрать &#8220;последние N неповторяющихся песен в плейлистах с указанием того, кто последний и когда её добавил&#8221;.</p>
<p>то, что пока придумал я, имеет 4 select&#8217;а в запросе и 3й уровень вложенности этих select&#8217;ов. сможешь лучше?</p>
<p>P.S. конечно же, должно работать максимально быстро. в наличии есть индекс по added.</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/common/partial-distinct/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>день программиста</title>
		<link>http://pusher.kiev.ua/common/%d0%b4%d0%b5%d0%bd%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0/</link>
		<comments>http://pusher.kiev.ua/common/%d0%b4%d0%b5%d0%bd%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 23:11:00 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[события]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/uncategorized/%d0%b4%d0%b5%d0%bd%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0/</guid>
		<description><![CDATA[с праздником нас! Программист — человек, больной тяжёлой формой поражения коры головного мозга &#8211; интеллектом, дальше]]></description>
			<content:encoded><![CDATA[<p>с праздником нас!</p>
<p><i>Программист — человек, больной тяжёлой формой поражения коры головного мозга &#8211; интеллектом, </i> <a href="http://absurdopedia.wikia.com/wiki/Программист">дальше</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/common/%d0%b4%d0%b5%d0%bd%d1%8c-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Напрягай мозги!</title>
		<link>http://pusher.kiev.ua/common/%d0%bd%d0%b0%d0%bf%d1%80%d1%8f%d0%b3%d0%b0%d0%b9-%d0%bc%d0%be%d0%b7%d0%b3%d0%b8/</link>
		<comments>http://pusher.kiev.ua/common/%d0%bd%d0%b0%d0%bf%d1%80%d1%8f%d0%b3%d0%b0%d0%b9-%d0%bc%d0%be%d0%b7%d0%b3%d0%b8/#comments</comments>
		<pubDate>Sun, 10 May 2009 14:59:00 +0000</pubDate>
		<dc:creator>justpusher</dc:creator>
				<category><![CDATA[Общая]]></category>
		<category><![CDATA[задачи]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://pusher.kiev.ua/uncategorized/%d0%bd%d0%b0%d0%bf%d1%80%d1%8f%d0%b3%d0%b0%d0%b9-%d0%bc%d0%be%d0%b7%d0%b3%d0%b8/</guid>
		<description><![CDATA[Юра Зновьяк сегодня подкинул забавную задачку. Цитирую: Interview question: f(f(n)) == -n Design a function f, such that: f(f(n)) == -n Where n is a 32 bit signed integer; you can&#8217;t use complex numbers arithmetic. If you can&#8217;t design such a function for the whole range of numbers, design it for the largest range possible. [...]]]></description>
			<content:encoded><![CDATA[<p>Юра Зновьяк сегодня подкинул забавную задачку. Цитирую:</p>
<p>Interview question: f(f(n)) == -n<br />
Design a function f, such that:<br />
f(f(n)) == -n<br />
Where n is a 32 bit signed integer; you can&#8217;t use complex numbers arithmetic.<br />
If you can&#8217;t design such a function for the whole range of numbers, design it for the largest range possible.</p>
<p>В двух словах: нужно написать int f(int n) {&#8230;} такую что f(f(n))==-n.</p>
<p>Я написал для всего диапазона int, кроме 3х чисел. Мне понадобилась 2 минуты чтобы придумать и минуты 3 чтобы закодить. А ты?</p>
]]></content:encoded>
			<wfw:commentRss>http://pusher.kiev.ua/common/%d0%bd%d0%b0%d0%bf%d1%80%d1%8f%d0%b3%d0%b0%d0%b9-%d0%bc%d0%be%d0%b7%d0%b3%d0%b8/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

