<?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>Хороший, годный блог</title>
	<atom:link href="http://www.gotsulyak.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gotsulyak.com</link>
	<description>Сергей Гоцуляк - заметки для тех, кто неравнодушно взирает на успех Кремниевой Долины. Маркетинг программных продуктов и веб-сервисов, развитие бизнеса в сфере высоких технологий, стартапы и венчуры, shareware и Web 2.0, дизайн и юзабилити. А также житейские советы, апология православия и прочие темы, не чуждые всем человекам.</description>
	<lastBuildDate>Tue, 31 Aug 2010 10:00:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>История китайского шароварщика</title>
		<link>http://www.gotsulyak.com/2010/08/post454</link>
		<comments>http://www.gotsulyak.com/2010/08/post454#comments</comments>
		<pubDate>Tue, 31 Aug 2010 09:58:06 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Шаровара]]></category>
		<category><![CDATA[Китай]]></category>
		<category><![CDATA[Рентакодер]]></category>
		<category><![CDATA[клон]]></category>
		<category><![CDATA[oDesk]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=454</guid>
		<description><![CDATA[
Я стоял в центре небольшого китайского городка, тусклые фонари едва освещали улицу. Тишина была абсолютной и слегка гнетущей. Обстановка вокруг коренным образом отличалась от того океана огней и звуков, к которому я привык. Значительная высота над уровнем моря неуловимо меняла ощущения от воздуха и всей атмосферы. Здесь в горах, привычные вещи воспринимались несколько иначе, и [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gotsulyak.com/wp-content/uploads/2010/08/china-shareware.jpg" alt="china-shareware" title="china-shareware" width="500" height="333" /></p>
<p>Я стоял в центре небольшого китайского городка, тусклые фонари едва освещали улицу. Тишина была абсолютной и слегка гнетущей. Обстановка вокруг коренным образом отличалась от того океана огней и звуков, к которому я привык. Значительная высота над уровнем моря неуловимо меняла ощущения от воздуха и всей атмосферы. Здесь в горах, привычные вещи воспринимались несколько иначе, и я бы сказал &#8211; несколько угрожающе. Благодаря финансовому благополучию центральных властей, все дороги покрыты асфальтом, так как китайским провинциям уделяется особое внимание, но немногие жители деревень в горах провинции Юннань имеют автомобили, поэтому дороги не изнашиваются. На них лежат листья, которые шуршат под ногами и сопровождают меня повсюду непривычными звуками.</p>
<p><span id="more-454"></span></p>
<p>Группа мужчин сидит в дверном проеме, куря табак из китайского кальяна и смотря мне вслед с отрешенными лицами. Я немного тороплюсь. Цель где-то рядом. Повернув за угол узкой улочки, наконец увидел это &#8211; постер полураздетой красотки с большой грудью в отражении красного и синего света жужжащих флуоресцентных ламп. Я все-таки нашел местное интернет-кафе.</p>
<p>Проходя через узкий проход, пришлось протиснуться через юную пару подростков, взявшихся за руки и стоявших снаружи. У парня был шрам через весь лоб, и я слегка задумался, что могло быть его причиной. Быть может, эти двое могли рассказать необычную историю любви, которая  бесконечно трагична, а быть может &#8211; невероятно скучна. Этого я никогда не узнаю, потому что прошел внутрь и был поражен комбинацией отсвета сотен компьютерных экранов; разных двигающихся на мониторах фигур; цветных сайтов, которые отражались в глазах увлеченных парней; курящих мужчин, прокручивающих новости; сборищ малолеток, собравшихся вместе возле экрана, стреляющих и хохочущих. Большое помещение было битком заполнено людьми, блуждающими по интернету и играющими в игры. Интернет-кафе, которые давно уже умерли в других местах, просто отступили сюда в горы и теперь наполнены местными жителями, которые наслаждаются всеми теми вещами, которые они просто не могут позволить себе дома.</p>
<p>После обязательной регистрации с паспортом возле конторки, я купил целую ночь интернет-серфинга, и начал с проверки новостей на TechCrunch. Я прошелся по своему обычному набору сайтов, которые читаю, пропустив фейсбук и твиттер, так как они не работают здесь.</p>
<p>Я был единственным иностранцем, и ловил множество взглядов, хихиканий и криков &#8220;Hello&#8221; от детей вокруг. Я думал, что кто-нибудь из них подойдет поговорить со мной, поэтому когда кто-то действительно взял меня за плечо, я очень удивился, увидев перед собой не стриженного подростка, а улыбающегося мужчину средних лет с сигаретой, свисающей с губ. Он начал знакомство фразой: &#8220;TechCrunch мой любимый сайт&#8221;. По английски он говорил с акцентом, но весьма недурно.</p>
<p>Я просто смотрел на него, не найдясь, что ответить. Но мне и не нужно было отвечать, потому что он начал говорить со мной о тех последних статьях, которые он прочитал на TechCrunch. Я вставил всего лишь пару фраз, в основном для того, чтобы согласиться с его иногда необычными, но очень проницательными мнениями о том, что они пишут. Он говорил так, как будто ему раньше никогда не приходилось упоминать в разговоре TechCrunch, и он нуждался в том, чтобы огласить все свои мысли.</p>
<p>Через полчаса, он пригласил меня выпить вместе с ним и его друзьями. Он стал возбужденно звонить по телефону, изъясняясь на локальном диалекте, затем мы вышли. Он привел меня в какую-то местную забегаловку и сел снаружи на пластиковые стулья. На столе появились бутылки с пивом. Вскоре подъехали его друзья на абсолютно новой машине BYD, и присоединились к нам.</p>
<p>Он рассказал мне о том, что делает: продает софт. Продает много софта. Каждый месяц он зарабатывает более пяти тысяч долларов, что более чем в пятьдесят раз превышает среднюю зарплату местных жителей. Вот как это получилось &#8211; довольно необычная история.</p>
<p>Он научился программировать у своего друга. Они оба переехали в другой город и начали там работать, но когда его отец заболел, пришлось вернуться домой на ферму, чтобы поддерживать семью. Отец был болен около года и они серьезно нуждались в деньгах. Не имея возможности куда-то уехать, он по рекомендации друзей начал искать задания на сайтах oDesk, Rentacoder и других подобных. После написания приложения для одного клиента он вдруг понял одну важную вещь:</p>
<p><strong>ДОСТАТОЧНО ПРОСТО ПОСМОТРЕТЬ НА СПИСОК ПРОЕКТОВ ДЛЯ РАЗРАБОТКИ, ЧТОБЫ ПОЛУЧИТЬ ИДЕИ О ТОМ, КАКОЙ СОФТ СТОИТЬ ДЕЛАТЬ.</strong></p>
<p>Он решил попробовать, и вместо выполнения различных заданий для клиентов, создал свои собственные программные продукты, которые затем выложил в интернет. Через три дня после того, как он скопировал одну простую идею с Rentacoder на свой сайт, он получил сразу две продажи за один день. Дополнительные двадцать баксов каждый день практически удвоили его месячные доходы в качестве фермера. Он продолжал работать над другими продуктами и копировать больше идей, и вскоре уже имел десяток софтинок, которые продавал. Объем продаж на старте был небольшим, но в то время для него это были существенные деньги.</p>
<p>Продолжая клонировать софт, изучая открытые проекты рентакодера, и стараясь понять, что интересует людей, он закончил тем, что большая часть его программ попала в категорию кодировщиков видео. Кроме того, он стал играться open source проектами, изменяя их вид и продавая онлайн. Было несколько рефандов, но в целом, большинство людей покупало его программы без каких либо нареканий. Он сказал, что пытался даже продавать Firefox, но продажи были низки благодаря конкуренции со стороны бесплатной версии.</p>
<p>На данный момент он зарабатывает более пяти тысяч баксов в месяц на протяжении последних четырех лет. Он является одним из наиболее крупных игроков на рынке софта для кодирования видео.</p>
<p>Когда мы расставались, он решил подкинуть меня до местного отеля, где находились мои друзья. Он сжал мою руку с большим энтузиазмом и обещал что обязательно скинет e-mail, но сейчас ему пора спать, так как утром нужно работать на ферме. Это было для меня сюрпризом. Зачем продолжать фермерство? Он пожал плечами в той типичной манере, которую имеют многие деревенские. &#8220;Просто так!&#8221; &#8211; сказал он. &#8220;Мне нравится работать на земле&#8221;.</p>
<p>Оригинальный текст <a href=" http://maxkle.in/a-chinese-villager-who-sells-more-software-daily-than-you-do/">здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2010/08/post454/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP vs. Python vs. Ruby vs. Groovy</title>
		<link>http://www.gotsulyak.com/2010/08/post404</link>
		<comments>http://www.gotsulyak.com/2010/08/post404#comments</comments>
		<pubDate>Sun, 22 Aug 2010 07:41:17 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Вебмастеринг]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[динамические языки]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP vs Python]]></category>
		<category><![CDATA[PHP vs Ruby]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby vs Python]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=404</guid>
		<description><![CDATA[Холивар между поклонниками того или иного языка программирования не закончится никогда. Рискну подбросить дров в огонь, поделившись результатами сравнительного тестирования четырех динамических языков: PHP, Python, Ruby и Groovy. Выбор первых трех очевиден &#8211; они наиболее популярны в среде веб-разработчиков. Groovy пока малоизвестен, но в будущем может занять достойную нишу за счет врожденной 100% интеграции с [...]]]></description>
			<content:encoded><![CDATA[<p>Холивар между поклонниками того или иного языка программирования не закончится никогда. Рискну подбросить дров в огонь, поделившись результатами сравнительного тестирования четырех динамических языков: <a href="http://www.php.net/">PHP</a>, <a href="http://www.python.org/">Python</a>, <a href="http://ruby-lang.org/">Ruby</a> и <a href="http://groovy.codehaus.org/">Groovy</a>. Выбор первых трех очевиден &#8211; они наиболее популярны в среде веб-разработчиков. Groovy пока малоизвестен, но в будущем может занять достойную нишу за счет врожденной 100% интеграции с технологиями Java.</p>
<p>Два года назад один хороший человек написал более-менее <a href="http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/">адекватные скрипты для тестирования</a> производительности всех упомянутых языков и выложил результаты в блог. Я воспроизвел тесты на последних версиях интерпретаторов, результатами и комментариями делюсь ниже.</p>
<p><span id="more-404"></span></p>
<h3>Тестовая среда</h3>
<p>Все тесты проводились на моем домашнем ноутбуке Intel Core2 Duo T5500 (два ядра по 1.66 GHz) с тремя гигабайтами оперативной памяти и быстрым SSD-диском. Управляет парадом свежая инсталляция 32-битной Windows 7 Home Premium.</p>
<p>Каждый скрипт запускался три раза, через некоторое время после прогона всех языков, выполнялся еще один проход по три раза, в качестве итогового времени взяты усредненные значения.</p>
<p>Теоретически, каждый процесс должен был выполняться на одном из ядер процессора, загружая его под завязку (что косвенно подтверждалось постоянным показателем загрузки двухядерного процессора в 50%), но график Диспетчера Задач почему-то показывал одинаковую загрузку в 50% обоих ядер во время теста.</p>
<p>Во время второго прогона также замерялся расход памяти, согласно показаниям Диспетчера Задач. </p>
<h3>Производительность</h3>
<p>Привожу точные данные по времени выполнения одной итерации скрипта каждым из языков (считается автоматически): табличная форма дает точные цифры, диаграмма позволяет оценить их наглядно.</p>
<p><em><strong>Точные данные производительности</strong></em></p>
<table width="400" border="1" cellpadding="4" cellspacing="1">
<tr>
<td><b>Язык</b></td>
<td><b>Время</b>, микросекунд</td>
</tr>
<tr>
<td>Groovy 1.7.4</td>
<td>260</td>
</tr>
<tr>
<td>PHP 5.2.14</td>
<td>1,200</td>
</tr>
<tr>
<td>Python 2.6.5</td>
<td>210</td>
</tr>
<tr>
<td>Python 2.6.5 + Psyco 2.0</td>
<td>70</td>
</tr>
<tr>
<td>Ruby 1.8.7</td>
<td>400</td>
</tr>
<tr>
<td>Ruby 1.9.2</td>
<td>300</td>
</tr>
</table>
<p><em><strong>Визуальное представление</strong></em></p>
<p><img src="http://www.gotsulyak.com/wp-content/uploads/2010/08/groovy-php-python-ruby-performance-comparison.png" alt="groovy-php-python-ruby-performance-comparison" title="groovy-php-python-ruby-performance-comparison" width="400" height="320" /></p>
<h3>Потребление памяти</h3>
<p>Здесь необходимо сделать пару замечаний. Большинство интерпретаторов сразу занимали определенный обьем памяти, и в течение работы этот показатель уже не менялся. Однако запросы PHP во время работы линейно росли (особенность тестового кода?), а Ruby 1.8.7 забирал и отпускал память волнообразно (сборка мусора)? В табличку вошли максимальные значения.</p>
<table width="400" border="1" cellpadding="4" cellspacing="1">
<tr>
<td><b>Язык</b></td>
<td><b>Память</b>, мегабайт</td>
</tr>
<tr>
<td>Groovy 1.7.4</td>
<td>27</td>
</tr>
<tr>
<td>PHP 5.2.14</td>
<td>37</td>
</tr>
<tr>
<td>Python 2.6.5</td>
<td>3.8</td>
</tr>
<tr>
<td>Python 2.6.5 + Psyco 2.0</td>
<td>4</td>
</tr>
<tr>
<td>Ruby 1.8.7</td>
<td>2</td>
</tr>
<tr>
<td>Ruby 1.9.2</td>
<td>1.8</td>
</tr>
</table>
<p><img src="http://www.gotsulyak.com/wp-content/uploads/2010/08/groovy-php-python-ruby-memory-consuption.png" alt="groovy-php-python-ruby-memory-consuption" title="groovy-php-python-ruby-memory-consuption" width="400" height="320" /></p>
<h3>Некоторые замечания</h3>
<p>Прежде всего, очень разочаровал PHP. Отвратительное быстродействие и жуткий расход памяти. Я попытался улучшить ситуацию, установив eAccelerator 0.9.5.3, но он фактически никак не повлиял ни на скорость выполнения, ни на потребление памяти. Насколько я понимаю, его фишка состоит в кешировании предварительно скомпилированных скриптов, и устранении фазы интерпретации при повторном обращении к коду. На быстродействие самого кода он не влияет, поэтому в наших условиях толк от него нулевой.</p>
<p>Приятно удивил ускоритель Питона Psyco. Незначительно увеличился расход памяти, при многократно возросшей скорости выполнения. Впечатляющий прирост производительности, в три раза! Связка Python/Psyco позволяет оторваться от всех конкурентов, рассматривая удаляющиеся силуэты в зеркале заднего вида <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>С другой стороны, Ruby оказался очень экономичным, потребляя в два раза меньше памяти, чем Python, и более чем на порядок обходя PHP. Несомненный плюс. Я ожидал, что версия 1.9.2 будет раза в два-три быстрее предыдущей генерации 1.8.7, но чуда не произошло, разница составляет процентов 30%. Полагаю, что разрыв в большинстве реальных применений будет все-таки значительно больше.</p>
<h3>Ну а что же C++ и Java?</h3>
<p>Тесты для этих языков я также воспроизвел, но результаты сводить в общую табличку не стал. Например, Java выполняет каждую итерацию всего лишь за полторы микросекунды, то есть в 100-200 раз быстрее, чем указанные динамические языки. С другой стороны, в реальных приложениях разрыв будет гораздо меньше, так как основная часть работы динамических скриптов будет выполняться в подключаемых библиотеках, которые компилируются в двоичный выполнимый код конкретной платформы и работают без потерь производительности. </p>
<h3>SLoC, Verbosity, Syntactic Sugar</h3>
<p>Немалое значение для программистов, работающих с языками, имеют такие показатели, как количество строк кода (SLoC, Source lines of code), а также количество ключевых слов, скобок, спецсимволов (Verbosity) и вообще красота конструкций языка, легкость восприятия кода, и его красота (Syntactic Sugar).</p>
<p>Можно спорить о субьективных показателях, но с цифрами не поспоришь: программа на Python в два раза короче, чем аналогичный код на Groovy, PHP, C++ или Java. Ruby где-то посередине: программа в полтора раза длинее, чем питонный аналог, но все еще значительно короче, чем остальные скрипты.</p>
<p>Насчет красоты конструкций, изящности и легкости восприятия писать не буду &#8211; на вкус и цвет все фломастеры разные, смотрите сами, решайте сами <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Так кто самый крутой?</h3>
<p>Не буду прятаться за размытыми формулировками <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  На мой вкус, очевидно, что круче всех оказался Python (в случае ускорения за счет Psyco), где-то очень рядом находится новый Ruby 1.9.2 &#8211; теряя в производительности, получаем выигрыш в расходе памяти.</p>
<p>Конечно, все цифры и выводы относятся только к данному тестовому приложению, в других условиях, на других платформах, <del>более прямыми руками</del> выводы могут быть противоположными, поэтому приветствуется перепроверка моих результатов, критика и комментарии, а также варианты иных тестовых скриптов, которые могут изменить расстановку сил на Олимпе. Ниже вы найдете все исходные коды для разных языков, а значит &#8211; сможете самостоятельно повторить мои опыты. Дерзайте и делитесь результатами <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Важные обновления</h3>
<p><em><b>UPD1</b> Важное замечание для Python: если функцию range заменить на xrange, чтобы не генерировать огромные списки в памяти, а обходить цикл по итератору, производительность скрипта возрастает незначительно, но расход памяти падает в два раза, с 4 до 2 MB (2.5 MB в случае Psyco)! Таким образом, описанное выше преимущество Ruby по памяти становится неактуальным, интерпретаторы идут ноздря в ноздрю по этому показателю.</em></p>
<p><em><b>UPD2</b> Оптимизированный <a href="http://sql.ru/forum/actualthread.aspx?bid=24&#038;tid=783586&#038;pg=-1#9305025">PHP-скрипт с форума SQL.ru</a> (без сеттеров-геттеров), показывает более чем в два раза лучшее быстродействие. Среднее время выполнения подскочило до 500 микросекунд на итерацию. Потребление памяти, к сожалению, осталось на прежнем уровне.</em></p>
<h3>Исходные тексты скриптов</h3>
<p><strong>Groovy</strong></p>
<pre class="brush: groovy;">
class Chain
{
    def size
    def first

    def init(siz)
    {
        def last
        size = siz
        for(def i = 0 ; i &lt; siz ; i++)
        {
            def current = new Person()
            current.count = i
            if (i == 0) first = current
            if (last != null)
            {
                last.next = current
            }
            current.prev = last
            last = current
        }
        first.prev = last
        last.next = first
    }

    def kill(nth)
    {
        def current = first
        def shout = 1
        while(current.next != current)
        {
            shout = current.shout(shout,nth)
            current = current.next
        }
        first = current
    }
}

class Person
{
    def count
    def prev
    def next

    def shout(shout,deadif)
    {
        if (shout &lt; deadif)
        {
            return (shout + 1)
        }
        prev.next = next

        next.prev = prev
        return 1
    }
}

def main(args)
{
    println &quot;Starting&quot;
    def ITER = 100000
    def start = System.nanoTime()
    for(def i = 0 ; i &lt; ITER ; i++)
    {
        def chain = new Chain()
        chain.init(40)
        chain.kill(3)
    }
    def end = System.nanoTime()
    println &quot;Total time = &quot; + ((end - start)/(ITER * 1000)) + &quot; microseconds&quot;
}

def ITER = 100000
def start = System.nanoTime()
for(def i = 0 ; i &lt; ITER ; i++)
{
    def chain = new Chain()
    chain.init(40)
    chain.kill(3)
}
def end = System.nanoTime()
println &quot;Time per iteration = &quot; + ((end - start)/(ITER * 1000)) + &quot; microseconds&quot;
</pre>
<p><strong>PHP</strong></p>
<pre class="brush: php;">
class Person
{
    function __construct($c)
    {
        $this-&gt;count = $c;
    }       

    function getPrev()
    {
        return $this-&gt;prev;
    }           

    function setPrev($pr)
    {
        $this-&gt;prev = $pr;
    }   

    function getNext()
    {
        return $this-&gt;next;
    }

    function setNext($nxt)
    {
        $this-&gt;next = $nxt;
    }

    function shout($shout, $nth)
    {
        if ($shout &lt; $nth)
        {
            return $shout + 1;
        }
        $this-&gt;getPrev()-&gt;setNext($this-&gt;getNext());
        $this-&gt;getNext()-&gt;setPrev($this-&gt;getPrev());
        return 1;
    }
}

class Chain
{
    var $first;

    function __construct($size)
    {
        $last = null;

        for($i = 0; $i &lt; $size ; $i++)
        {
            $current = new Person($i);
            if ($this-&gt;first == null) $this-&gt;first = $current;
            if ($last != null)
            {
                $last-&gt;setNext($current);
                $current-&gt;setPrev($last);
            }
            $last = $current;
        }
        $this-&gt;first-&gt;setPrev($last);
        $last-&gt;setNext($this-&gt;first);
    }

    function kill($nth)
    {
        $current = $this-&gt;first;
        $shout = 1;
        while($current-&gt;getNext() !== $current)
        {
            $shout =  $current-&gt;shout($shout,$nth);
            $current = $current-&gt;getNext();
        }
        $this-&gt;first = $current;
    }
}

$start = microtime(true);
$ITER = 100000;
for($i = 0 ; $i &lt; $ITER ; $i++)
{
    $chain = new Chain(40);
    $chain-&gt;kill(3);
}
$end = microtime(true);
printf(&quot;Time per iteration = %3.2f microseconds &quot;,(($end -  $start) * 1000000 / $ITER));
</pre>
<p><strong>Python</strong></p>
<pre class="brush: python;">
import psyco
psyco.full()

class Person(object):
    def __init__(self,count):
        self.count = count;
        self.prev = None 

        self.next = None
    def shout(self,shout,deadif):
        if (shout &lt; deadif): return (shout + 1)
        self.prev.next = self.next
        self.next.prev = self.prev
        return 1

class Chain(object):
    def __init__(self,size):
        self.first = None
        last = None
        for i in range(size):
            current = Person(i)
            if self.first == None : self.first = current
            if last != None :
                last.next = current
                current.prev = last
            last = current
        self.first.prev = last
        last.next = self.first
    def kill(self,nth):
        current = self.first
        shout = 1
        while current.next != current:
            shout = current.shout(shout,nth)
            current = current.next
        self.first = current
        return current

import time
ITER = 100000
start = time.time()
for i in range(ITER):
    chain = Chain(40)
    chain.kill(3)
end = time.time()
print 'Time per iteration = %s microseconds ' % ((end - start) * 1000000 / ITER)
</pre>
<p><strong>Ruby</strong></p>
<pre class="brush: ruby;">
class Person
    attr_reader :count, :prev, :next
    attr_writer :count, :prev, :next

    def initialize(count)
        #puts 'Initializing person : ' + count.to_s()
        @count = count
        @prev = nil
        @next = nil
    end

    def shout(shout, deadif)
        if shout &lt; deadif
            return shout + 1
        end
        @prev.next = @next
        @next.prev = @prev
        return 1
    end
end      

class Chain
    attr_reader :first
    attr_writer :first

    def initialize(size)
        @first = nil
        last = nil
        for i in (1..size)
            current = Person.new(i)
            if @first == nil
                @first = current
            end
            if last != nil
                last.next = current
                current.prev = last
            end
            last = current
        end
        @first.prev = last
        last.next = @first
    end

    def kill(nth)
        current = @first
        shout = 1
        while current.next != current
            shout = current.shout(shout,nth)
            current = current.next
        end
        @first = current
        return current
    end
end

ITER=100000
start = Time.now
ITER.times { |i|
chain = Chain.new(40)
chain.kill(3)
}
ends = Time.now
puts 'Time per iteration = ' + ((ends - start) * 1000000 / ITER).to_s() + &quot; microseconds&quot;
</pre>
<p><strong>C++</strong></p>
<pre class="brush: cpp;">[/cpp]
#include &lt;stdio .h&gt;
#include &lt;stdlib .h&gt;
#include &lt;time .h&gt;
#include &lt;sys /time.h&gt;

class Person
{

    public:

        Person(int count) : _next(NULL), _prev(NULL) { _count = count; }
        int shout(int shout, int nth)
        {
            if (shout &lt; nth) return (shout + 1);
            _prev-&gt;_next = _next;

            _next-&gt;_prev = _prev;
            return 1;
        }
        int count() { return _count; }
        Person* next() { return _next; }
        void next(Person* person) { this-&gt;_next = person ; }
        Person* prev() { return _prev; }
        void prev(Person* person) { this-&gt;_prev = person; }
    private:
        int _count;
        Person* _next;
        Person* _prev;
};

class Chain
{
    public:
        Chain(int size) : _first(NULL)
        {
            Person* current = NULL;
            Person* last = NULL;
            for(int i = 0 ; i &lt; size ; i++)
            {
                current = new Person(i);
                if (_first == NULL) _first = current;
                if (last != NULL)
                {
                    last-&gt;next(current);
                    current-&gt;prev(last);
                }
                last = current;
            }
            _first-&gt;prev(last);
            last-&gt;next(_first);
        }
        Person* kill(int nth)
        {
            Person* current = _first;
            int shout = 1;
            while(current-&gt;next() != current)

            {
                Person* tmp = current;
                shout = current-&gt;shout(shout,nth);
                current = current-&gt;next();
                if (shout == 1)
                {
                    delete tmp;
                }
            }
            _first = current;
            return current;
        }
        Person* first() { return _first; }
    private:
        Person* _first;
};

int main(int argc, char** argv)
{
    int ITER = 1000000;
    Chain* chain;
    struct timeval start, end;
    gettimeofday(&amp;start,NULL);
    for(int i = 0 ; i &lt; ITER ; i++)
    {
        chain = new Chain(40);
        chain-&gt;kill(3);

        delete chain;
    }
    gettimeofday(&amp;end,NULL);
    fprintf(stdout,&quot;Time per iteration = %d microseconds &quot;, (((end.tv_sec - start.tv_sec) * 1000000) + (end.tv_usec - start.tv_usec)) / ITER);
    return 0;
}
[cpp]</pre>
<p><strong>Java</strong></p>
<pre class="brush: java;">
public class Chain
{
	private Person first = null;

	public Chain(int size)
	{
		Person last = null;
		Person current = null;
		for (int i = 0 ; i &lt; size ; i++)
		{
			current = new Person(i);
			if (first == null) first = current;
			if (last != null)
			{
				last.setNext(current);
				current.setPrev(last);
			}
			last = current;
		}
		first.setPrev(last);
		last.setNext(first);
	}

	public Person kill(int nth)
	{
		Person current = first;
		int shout = 1;
		while(current.getNext() != current)
		{
			shout = current.shout(shout, nth);
			current = current.getNext();
		}
		first = current;
		return current;
	}

	public Person getFirst()
	{
		return first;
	}
	public static void main(String[] args)
	{
		int ITER = 100000;
		long start = System.nanoTime();
		for (int i = 0 ; i &lt; ITER ; i++)
		{
			Chain chain = new Chain(40);
			chain.kill(3);
		}
		long end = System.nanoTime();
		System.out.println(&quot;Time per iteration = &quot; + ((end - start) / (ITER )) + &quot; nanoseconds.&quot;);
	}
}

class Person
{
	int count;
	private Person prev = null;
	private Person next = null;

	public Person(int count)
	{
		this.count = count;
	}

	public int shout(int shout, int deadif)
	{
		if (shout &lt; deadif) return (shout + 1);
		this.getPrev().setNext(this.getNext());
		this.getNext().setPrev(this.getPrev());
		return 1;
	}

	public int getCount()
	{
		return this.count;
	}

	public Person getPrev()
	{
		return prev;
	}

	public void setPrev(Person prev)
	{
		this.prev = prev;
	}

	public Person getNext()
	{
		return next;
	}

	public void setNext(Person next)

	{
		this.next = next;
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2010/08/post404/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Разница менталитетов&#8230;</title>
		<link>http://www.gotsulyak.com/2010/08/post397</link>
		<comments>http://www.gotsulyak.com/2010/08/post397#comments</comments>
		<pubDate>Sun, 15 Aug 2010 08:31:20 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[Латынина]]></category>
		<category><![CDATA[Чечня]]></category>
		<category><![CDATA[дерзость]]></category>
		<category><![CDATA[драка]]></category>
		<category><![CDATA[лагерь Дон]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=397</guid>
		<description><![CDATA[Цитата из недавнего интервью Юлии Латыниной на &#8220;Эхе Москвы&#8221;:
Что случилось в лагере «Дон»? 14 июля туда заехало 403 человека из Чечни, 350 – дети, 50 – сопровождающие. На этих 350 чеченских детей приходилось 36 русских детей. Чеченские дети тоже были условные, с волосатыми животами, перебитыми носами и поломанными ушами. Сопровождающими у детей с поломанными ушами [...]]]></description>
			<content:encoded><![CDATA[<p>Цитата из недавнего <a href="http://www.echo.msk.ru/programs/code/699444-echo/">интервью Юлии Латыниной</a> на &#8220;Эхе Москвы&#8221;:</p>
<blockquote><p>Что случилось в лагере «Дон»? 14 июля туда заехало 403 человека из Чечни, 350 – дети, 50 – сопровождающие. На этих 350 чеченских детей приходилось 36 русских детей. <strong>Чеченские дети тоже были условные, с волосатыми животами, перебитыми носами и поломанными ушами.</strong> Сопровождающими у детей с поломанными ушами были два тренера, один – по дзюдо, другой – по вольной борьбе.</p>
<p>Понятно, что молодая банда в самом правильном для хунвэйбинов возрасте (17-20 лет), заехавшая по подложным документам, она занялась мелким бытовым террором: повесили флаг Чечни, обирали маленьких, забирали провиант у детей из других регионов, на дискотеках танцевали только чеченские песни.</p>
<p>Через 10 дней, 24 июля, члены этой банды, затерроризировавшей лагерь, втроем пристают к 13-летней девочке. Втроем тут ключевое слово, потому что втроем нельзя ухаживать, втроем можно только приставать. <strong>Девочка отказала, ее повалили наземь, стали бить. Втроем 13-летнюю девочку. Молодцы, джигиты.</strong></p>
<p>За девочку вступился замдиректора лагеря Борис Усольцев, сын директора лагеря. Что значит, что вступился взрослый? Это значит, что все остальные были запуганы. <strong>Эти трое подонков не стали бить сына директора, они набросились на него, когда их собралось минимум девять, включая обоих тренеров.</strong> Один тренер подсек Усольцева, другой, когда тот упал, сломал лежачему нос. А спутнику Усольцева, армянину Кешешьяну воткнули нож в грудь. <strong>Собственно, это было ошибкой, потому что, естественно, армяне вступились за своего.</strong></p>
<p>Самое поразительное, что русских-то там было раз, два и обчелся. И тут оказалось, что вся эта гопота, которая била 13-летнюю девочку втроем, и двух мужиков вдевятером, что они трусы. Потому что вы мне объясните, как могут 25 армян, максимум 50, побить 400 чеченцев. Тут прав чеченский уполномоченный Нурди Нухажиев – банда-то стала прятаться. Только не среди русских. 400 чеченцев не могут спрятаться среди 36 русских детей. Тем более что русские дети в этот момент заперлись в медсанчасти, подальше и от армян, и от чеченцев. Вот эта банда стала использовать, судя по всему, в качестве живого щита чеченских малолеток. Потому что, повторяю, такой социальный закон: люди, которые бьют втроем 13-летнюю девочку, к какой бы национальности они ни принадлежали, потом оказываются трусами.</p>
<p>И вот тут начинается самое главное. Потому что то, что трое подонков пристали к 13-летней девочке, это не фашизм, это хулиганство. То, что куча народу, плюс два тренера, избили заступившегося за девочку мужика, это не фашизм. То, что налетели после этого стенка на стенку, тоже не фашизм – массовая драка. <strong>Но вот если власти республики заявляют, что хулиганы правы, это фашизм.</strong> А уж если г-н Астахов заявляет, что во всем виноват директор лагеря, то я не знаю… То ли у него такой странный взгляд на мир, то ли он от страха яйца потерял, когда ему из Чечни кто-нибудь позвонил.</p>
<p>В заявлениях чеченских властей что самое важное? Есть заявление уполномоченного по правам юных фашистов Нурди Нухажиева. Конфликт, по его словам, начинался с того, что пьяный замдиректора лагеря набросился на чеченских детей со словами «я вас давил в Чечне и здесь буду давить». Извините, самый простой вопрос. Если Усольцева и Кишишьяна били, как минимум, девять человек, после того, как тот заступился за русскую девочку, как же пьяный русских может избить девятерых чеченских спортсменов?</p>
<p>В значительной степени, мне кажется, <strong>чеченская реакция – это в том числе и проблема сознания, развращенного постоянным сочувствием к народу, пострадавшему во время войны, проблема нации, которая привыкла, что она может делать всё что угодно.</strong> Если ей прилетит в ответ – «ай, нас обижают, российские фашисты, извинитесь, а то мы сорвем Олимпиаду в Сочи».</p>
<p>Простите, это как понять? Уполномоченный по правам хулиганов г-н Нухажиев пошлет хулиганов взорвать Сочи? Или отряд Кадырова Сочи аннексирует? Не надо говорить, что Россия бедным чеченцам по гроб жизни должна. Долги России перед Чечней не бесконечны. Да, извините, мы убили 250 тысяч чеченцев, мирных чеченцев. А немцы сожгли 6 млн. евреев в печках. Но вы не встретите ситуацию, когда три еврея забьют немецкую девочку с криком «немецкая шлюха», а потом президент Израиля скажет: «Да мы правы, нас обижают, нам все должны».</p>
<p>Понимаете, какая проблема? <strong>В России есть ксенофобия, в России есть фашисты. Но в России ксенофобия не является государственной идеологией, общественной идеологией. Ксенофобию абсолютное большинство интеллектуалов и интеллигентов считает постыдной. В Чечне позиция «раз я чеченец, значит, я прав» стала нормой.</strong> А это то, чем отличается патриотизм от фашизма. Патриот – это тот, кто говорит: «Я русский (или я немец, я чеченец), поэтому я буду лучше, добрее и умнее». А фашист – это тот, кто говорит: «Я русский, поэтому я самый лучший».</p>
<p>Проблема заключается еще и в том, что каждый раз в спонтанных массовых драках одной из сторон обычно являются чеченцы. Подрались в Кабарде чеченцы с кабардинцами. Подрались в Калмыкии чеченцы с калмыками. Подрались в Ингушетии чеченцы с ингушами. Подрались в Москве чеченцы с русскими. Почему-то нет массовых драк калмыков и русских.</p>
<p>Более того, в этой ситуации в Туапсе подрались чеченцы и армяне. Господа, русских там было два с половиной человека. Ну русские-то тут причем? Извините, эта война была чеченско-армянской.</p>
<p><strong>Что Чечня хочет? Отделиться? Ради бога. Мы с удовольствием посмотрим на то, что там будет, из прекрасного далеко.</strong> Там будет кровавая драка Кадырова с ваххабитами. В этой драке у Кадырова, конечно, будет больше шансов, например, чем у Наджибуллы. Кадыров – это сильный правитель, это не марионетка Путина.</p>
<p>Но с учетом того, что единственным источником денег для Чечни является федеральный бюджет, экономики в ней нет, раздражение против господства центоройского клана среди некогда свободных чеченцев переходит все мыслимые пределы, это будет не очень веселая картина для всех сторон. Еще раз повторяю, у каждого события есть некая причина. Вот есть Кондопога, и там однозначно были виноваты русские уголовники, спровоцировавшие чеченцев на драку.</p>
<p>Вот есть убийство Юрия Волкова, которое я не комментировала, потому что это очень темная история. В метро сошлись две группы фанатов. Чеченцев было трое, русских восемь. Волков убит. Забивали там заранее стрелку, не забивали, кто кого дернул… Это темная история. Я не знаю, что про нее сказать.</p>
<p>Зато я вам расскажу еще одну замечательную историю. Мне ее рассказал один парень, который жил в дорогом доме на Ленинском проспекте. <strong>Там жило много чеченцев. И их дети завели такую привычку – плевать во взрослых русских. Это очень тонко рассчитанная привычка.</strong> Это как голова Алексеевой на Селигере. Как на эту привычку реагировать? Сделать ребенку замечание? Так он того и ждет. Побить ребенка? Как-то круто: он в тебя плюнул, а ты его побил. Разбираться со взрослым? Взрослый скажет: «Это не я». Так что приходится ничего не делать.</p>
<p>Понимаете, какой парадокс. Живут русские в Америке и не плюют на взрослых американцев. Живут негры и не плюют. <strong>Т.е. либо чеченская нация, получается, такая дефективная, что-то в геноме, что у них дети плюются, либо тут генетика ни при чем, а это идеология. Идеология, которую поощряют взрослые. Поскольку я в геном не верю и в изначальную дефективность нации не верю, то получается, что это идеология, которую поощряют взрослые.</strong> А эта идеология чисто фашистская: я чеченец, а русский – недочеловек. А фашизм чеченский ничуть не хуже и не лучше фашизма русского или фашизма немецкого.</p>
<p>Проблема в том, еще раз повторяю, что к этому фашизму в чеченском и русском обществе относятся по-разному. В русском обществе фашизм не распространен. Т.е. есть упыри, которые кричат «бей жидов» или «бей чеченцев», но среди интеллигенции верный тон – это «ах, как мы виноваты перед всеми народами, которые мы завоевали». <strong>В чеченском обществе принцип «я чеченец, поэтому я прав» возведен сейчас почти в ранг аксиомы.</strong></p></blockquote>
<p>Впрочем, <a href="http://elena-samoylova.livejournal.com/21317.html">неудивительно</a>:</p>
<blockquote><p>Кое-что интересное о чеченском менталитете я почерпнула, наблюдая за тем, как  чеченцы воспитывают мальчиков. То, что я увидела, происходило в Москве в одной весьма обеспеченной чеченской семье. Два брата-бизнесмена учили своих пятилетних сыновей и племянников «быть мужчинами». Детей сначала накормили сладким, а потом, когда они попросили пить кинули им одну бутылку газировки на всех. Естественно, детвора стала драться за бутылку. А взрослые вместо того, чтобы их разнимать стояли и весело хохотали, «подначивая» малышей. Один папаша очень при этом расстраивался, что его сын – тихий скромный мальчик с ангелоподобной внешностью: белокурыми локонами и чистыми голубыми глазами не участвует в потасовке. Отец тряс мальчишку за плечи как грушу и повторял: «Дерись! Почему не дерешься?! Надо быть дерзким! Смелым! Понял? Дерзким!» «Не дерется и все тут!» &#8211; расстроено объяснил мне бизнесмен, &#8211; Если вырастет слабаком, тряпкой, он не будет для меня стоить больше чем этот спичечный коробок». Чеченец демонстративным жестом кинул коробок в угол комнаты и снова принялся трясти сына: «Чеченец должен быть смелым! Дерзким!» В общем, в итоге к великому удовольствию отца мальчишка стал драться. Мне объяснили, что <strong>ключевое качество, которое должно быть в мужчине, по чеченским понятиям – это «дерзость»</strong>. «Дерзкий» для чеченца – это комплимент. Ребенка в первую очередь учат быть не добрым, не умным, а именно дерзким. Дерзким, сильным и смелым. Именно эти качества культивируются с малых лет.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2010/08/post397/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Так вот ты какой, интернет-предприниматель&#8230;</title>
		<link>http://www.gotsulyak.com/2010/08/post388</link>
		<comments>http://www.gotsulyak.com/2010/08/post388#comments</comments>
		<pubDate>Sat, 14 Aug 2010 11:08:38 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Бизнес]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Стартапы]]></category>
		<category><![CDATA[стартап]]></category>
		<category><![CDATA[финансирование]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=388</guid>
		<description><![CDATA[Mashable опубликовал небольшую статью с красивой инфографикой на основе исследования CB Insights различных параметров интернет-предпринимателей, получающих деньги от венчурных инвесторв.
Если резюмировать, то сводный портрет чрезвычайно неполиткорректен: бизнесмены предпочитают вкладывать деньги в белых мужчин в самом расцвете сил.
Самый для меня интересный вывод &#8211; развеян миф о молодых гениях. Стартаперы в возрасте до 25 практически не имеют [...]]]></description>
			<content:encoded><![CDATA[<p>Mashable опубликовал небольшую <a href="http://mashable.com/2010/08/11/startup-demographics/">статью с красивой инфографикой</a> на основе <a href="http://www.cbinsights.com/blog/venture-capital/venture-capital-human-capital-report-gender-and-education">исследования CB Insights</a> различных параметров интернет-предпринимателей, получающих деньги от венчурных инвесторв.</p>
<p>Если резюмировать, то сводный портрет чрезвычайно неполиткорректен: бизнесмены предпочитают вкладывать деньги в белых мужчин в самом расцвете сил.</p>
<p>Самый для меня интересный вывод &#8211; развеян миф о молодых гениях. Стартаперы в возрасте до 25 практически не имеют веса в общей картине. Хотя надо учитывать, конечно, что многие хорошие идеи рождаются как раз в головах амбициозных молодых умников, а состояния реальных прототипов, продуктов и сервисов, когда в них уже не страшно инвестировать, достигают только через несколько лет.</p>
<p>И тем не менее, абсолютно очевидно, что <strong>основную роль в инновационном бизнесе играют вполне зрелые мужчины 30-40 лет и старше</strong>.</p>
<p>Нужны подробности? Смотрите под катом.</p>
<p><span id="more-388"></span></p>
<p>Привожу картинку здесь:</p>
<p><img src="http://www.gotsulyak.com/wp-content/uploads/2010/08/startupstats1.jpg" alt="Исследование интернет-предпринимателей" title="Исследование интернет-предпринимателей" width="640" height="1734" /></p>
<p>А это оригинал доклада:</p>
<p><object id="_ds_49664597" name="_ds_49664597" width="650" height="900" type="application/x-shockwave-flash" data="http://viewer.docstoc.com/"><param name="FlashVars" value="doc_id=49664597&#038;mem_id=3783755&#038;doc_type=pdf&#038;fullscreen=0&#038;allowdownload=1&#038;showrelated=0&#038;showotherdocs=0" /><param name="movie" value="http://viewer.docstoc.com/"/><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object><br /><script type="text/javascript">var docstoc_docid="49664597";var docstoc_title="Gender and Education Demographics: Venture Capital Human Capital";var docstoc_urltitle="Gender and Education Demographics: Venture Capital Human Capital";</script><script type="text/javascript" src="http://i.docstoccdn.com/js/check-flash.js"></script><font size="1"><a href="http://www.docstoc.com/docs/49664597/Gender-and-Education-Demographics-Venture-Capital-Human-Capital">Gender and Education Demographics: Venture Capital Human Capital</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2010/08/post388/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Домашние роды &#8211; опаснее, чем предполагал</title>
		<link>http://www.gotsulyak.com/2010/08/post386</link>
		<comments>http://www.gotsulyak.com/2010/08/post386#comments</comments>
		<pubDate>Sat, 14 Aug 2010 10:45:32 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[домашние роды]]></category>
		<category><![CDATA[статистика]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=386</guid>
		<description><![CDATA[Так как многие друзья рожали дома (вполне благополучно), полагаю, многим будет интересно узнать, что новейшая американская статистика говорит против:
Вывод диаметрально противоположен для женщин и младенцев. Получается, что дома женщинам рожать лучше: у них меньший процент разрывов, инфекций, кровотечений и прочих осложнений. Им реже требуется эпидуральная аналгезия, эпизиотомия, кесарево и т.п. Что, в общем, вполне объяснимо.
А [...]]]></description>
			<content:encoded><![CDATA[<p>Так как многие друзья рожали дома (вполне благополучно), полагаю, многим будет интересно узнать, что новейшая американская статистика говорит против:</p>
<blockquote><p>Вывод диаметрально противоположен для женщин и младенцев. Получается, что дома женщинам рожать лучше: у них меньший процент разрывов, инфекций, кровотечений и прочих осложнений. Им реже требуется эпидуральная аналгезия, эпизиотомия, кесарево и т.п. Что, в общем, вполне объяснимо.</p>
<p>А вот с младенцами полный караул получается. Смертность дома В ДВА РАЗА ВЫШЕ (2.09), чем в роддоме для всех вообще новорожденных и почти В ТРИ РАЗА ВЫШЕ (2.82) &#8211; для плодов без врожденных дефектов и аномалий.</p></blockquote>
<p>Подробности <a href="http://uncle-doc.livejournal.com/236032.html">здесь</a>, а тут <a href="http://uncle-doc.livejournal.com/236521.html">продолжение</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2010/08/post386/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вернулся из Крыма</title>
		<link>http://www.gotsulyak.com/2010/08/post379</link>
		<comments>http://www.gotsulyak.com/2010/08/post379#comments</comments>
		<pubDate>Wed, 11 Aug 2010 12:37:17 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Лытдыбр и Метафизика]]></category>
		<category><![CDATA[Евпатория]]></category>
		<category><![CDATA[Инкерман]]></category>
		<category><![CDATA[Крым]]></category>
		<category><![CDATA[Массандра]]></category>
		<category><![CDATA[Штормовое]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=379</guid>
		<description><![CDATA[На прошлой неделе вернулся из Крыма, и чувствую, надо запротоколировать некоторые впечатления на память.
Перед отьездом рассчитывал попробовать разных крымских вин, но как раз с этим желанием сильно промахнулся. Ассортимент &#8220;Массандры&#8221; там продается на каждом углу, конечно &#8211; но все, что находится вне фирменных магазинов (а их в Крыму можно по пальцам пересчитать) является подделкой. Для [...]]]></description>
			<content:encoded><![CDATA[<p>На прошлой неделе вернулся из Крыма, и чувствую, надо запротоколировать некоторые впечатления на память.</p>
<p>Перед отьездом рассчитывал попробовать разных крымских вин, но как раз с этим желанием сильно промахнулся. Ассортимент &#8220;Массандры&#8221; там продается на каждом углу, конечно &#8211; но все, что находится вне фирменных магазинов (а их в Крыму можно по пальцам пересчитать) является подделкой. Для того, чтобы это понять, пришлось сначала собрать небольшую коллекцию бутылок и потом уже в интернетах узнать о масштабах распространения паллиатива. Короче оригинальные массандровские вина купил уже перед отьездом, в Евпатории, и оценивать их придется дома <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>А в Крыму распробовал &#8220;Инкерман&#8221;. То ли повезло, то ли его так массово не подделывают, но инкермановский &#8220;Древний Херсон&#8221; (полусладкое ординарное красное вино) пошел на ура.</p>
<p>Поразил факт продажи домашних колбас прямо на местном базарчике. За 200 русских рублей можно взять совершенно улетную натуральную домашнюю украинскую колбасу и зажарить ее дома. Вкус фактически такой же, который остался в памяти с детства, правда в детстве колбаса жарилась в печи, а потому была все же вкуснее <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>За все время отпуска не слышал ни на пляже, ни вне его (и порядком уже доставшего в России) мата. Субьективно показалось, что народ на Украине гораздо менее агрессивный и более открытый. Проблем с языком также ни разу не возникло.</p>
<p>Зато беспредел и кидалово встречаются такие, о которых в России уже и помыслить невозможно. Короче, в поезде предложили купить две вручную закатанные поллитровые баночки икры &#8211; красной и черной. Ясно, что какой-то подвох тут есть <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Икра или просроченная, или невкусная, или залита какими-нибудь консервантами &#8211; такое достаточно часто встречается и с легальными поставками. Но вот на что я никак не рассчитывал, так это на крайний глумеж и обман &#8211; под видом настоящей икры продавалась искусственная! А продавцы заливают про севрюжину в Азовском море, и поставки с Дальнего Востока <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Как удалось выяснить уже дома, икра изготваливается на основе альгината натрия, то есть ушлые ребятки накручивали стоимость в 5-10 раз&#8230; Данный бизнес однозначно хорошо крышуется, я подозреваю, что в России это дело давно бы свернули правоохранительные органы, слишком уж наглый обман.</p>
<p>Во время отдыха наконец удалось приобщиться хорошей литературе: перечитал &#8220;Жизнь Арсеньева&#8221; Бунина, и &#8220;Идиота&#8221; Достоевского. Уже несколько лет не удавалось взять в руки ни одного из русских классиков. </p>
<p>P.S: А еще пришлось на целый день окунуться в дым подмосковных торфяников и сильно задержаться в Шереметьево, с достаточно туманной (каламбур) перспективой вылета обратно в Екатеринбург. Однако повезло. А вот на следующий день ситуация осложнилась, и почти все рейсы были отменены. Жаль, не успел снять белый саван, окутавший столицу, и москвичей в масках, на видео <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2010/08/post379/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javatar</title>
		<link>http://www.gotsulyak.com/2010/07/post377</link>
		<comments>http://www.gotsulyak.com/2010/07/post377#comments</comments>
		<pubDate>Fri, 02 Jul 2010 17:42:34 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=377</guid>
		<description><![CDATA[Вот ведь, оказывается как: противостояние Java и .NET еще актуальная вещь! Хотя вроде Sun уже слился, и главный разработчик Java его недавно официально бросил&#8230;
В-общем, кто хотя бы частично связан с программированием, оценит юмор  

]]></description>
			<content:encoded><![CDATA[<p>Вот ведь, оказывается как: противостояние Java и .NET еще актуальная вещь! Хотя вроде Sun уже слился, и главный разработчик Java его недавно официально бросил&#8230;</p>
<p>В-общем, кто хотя бы частично связан с программированием, оценит юмор <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/jWAJGvsxb6g&amp;hl=ru_RU&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/jWAJGvsxb6g&amp;hl=ru_RU&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2010/07/post377/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как обойти крупных конкурентов, концентрируясь на нескольких фишках продукта</title>
		<link>http://www.gotsulyak.com/2009/11/post362</link>
		<comments>http://www.gotsulyak.com/2009/11/post362#comments</comments>
		<pubDate>Wed, 11 Nov 2009 19:59:48 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Бизнес]]></category>
		<category><![CDATA[Стартапы]]></category>
		<category><![CDATA[37signals]]></category>
		<category><![CDATA[Chipotle]]></category>
		<category><![CDATA[концентрация]]></category>
		<category><![CDATA[простота]]></category>
		<category><![CDATA[Flip]]></category>
		<category><![CDATA[фокус]]></category>
		<category><![CDATA[Pinkberry]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=362</guid>
		<description><![CDATA[Если вы регулярно читаете мой блог, то уже знаете, что я большой поклонник позиционирования и специализации. Сегодня в блоге компании 37sginals, создающей гениальные по дизайну и удобству пользования веб-сервисы, появилась короткая заметка на эту тему. Итак&#8230;

Открою маленький неприглядный секрет простоты: ее тяжело достичь. Именно поэтому большинство людей делает сложные вещи. Простота требует глубины мышления, дисциплины [...]]]></description>
			<content:encoded><![CDATA[<p>Если вы регулярно читаете мой блог, то уже знаете, что я большой поклонник позиционирования и специализации. Сегодня в блоге компании <a href="http://37signals.com/">37sginals</a>, создающей гениальные по дизайну и удобству пользования веб-сервисы, появилась <a href="http://37signals.com/svn/posts/2007-how-chipotle-pinkberry-and-others-win-big-by-doing-just-a-few-things-well">короткая заметка</a> на эту тему. Итак&#8230;</p>
<hr />
<p>Открою маленький неприглядный секрет простоты: ее тяжело достичь. Именно поэтому большинство людей делает сложные вещи. Простота требует глубины мышления, дисциплины и терпения &#8211; именно этих свойств не хватает многим компаниям. Но именно поэтому у вас есть шанс. Делайте что-то проще, чем конкуренты, и многие люди предпочтут работать именно с вами.</p>
<p>В меню ресторанов мексиканской кухни Chipotle есть только три основных составляющих: два вида кукурузных лепешек с начинками и салаты. <a href="http://www.usnews.com/money/business-economy/articles/2008/01/09/chipotles-secret-salsa.html">В одной из статей</a> Стив Элльс, директор этой сети ресторанов резюмировал бизнес-модель всего в одном предложении: &#8220;Сфокусируйтесь на нескольких вещах и делайте их лучше других&#8221;.</p>
<p>Вы не найдете в Chipotle  десертов. Аналитики скажут вам, что печенье или другой десерт после окончания застолья поднимут продажи на 10 и более процентов. Но Стива это не волнует. &#8220;Мы уже 10 лет получаем двузначные чеки, без всякого печенья. Так зачем начинать продавать какие-то сладости? Я вижу только отрицательные последствия этого&#8221;.</p>
<p>Производитель йогуртов Pinkberry <a href="http://www.latimes.com/business/la-et-pinkberryaug04,0,5813232.story">стартовал</a>, предлагая только два вида своей продукции: обычный йогурт, и йогурт со вкусом зеленого чая. Это означало гораздо меньшую нервотрепку с учетом, оборудованием,  рецептами и другими сложностями, которые возникают при производстве линейки продуктов. Вместо этого компания сконцентрировалась на вкусе. Теперь это целая сеть магазинов с ярыми приверженцами, которые называют их йогурты Crackberry (crack на английском сленге означает наркотик &#8211; прим. редакции). Представляете себе название своего продукта с таким префиксом в начале?</p>
<p>Эта стратегия работает не только для ресторанов. Нинтендо обошла другие компании именно потому, <a href="http://37signals.com/svn/posts/132-nintendo-thriving-in-third-place">что делала меньше, чем конкуренты</a>. Flip завоевал приличный кусок рынка видеокамер, <a href="http://37signals.com/svn/posts/923-the-flip-takes-13-of-the-camcorder-market-by-doing-less">делая меньше, чем конкуренты</a>. Велосипеды без переключения скоростей <a href="http://www.dailyutahchronicle.com/sports/activities-if-the-bike-is-fixed-it-ain-t-broken-1.346050">набирают популярность</a> благодаря своему простому дизайну и простоте обслуживания (<em>А в России других особо и не выпускали <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8211; прим. переводчика</em>).</p>
<p>Вы можете попробовать выиграть войну свойств, предлагая такое их разнообразие, которое только возможно под солнцем. А можете сконцентрироваться на ряде вещей, делать их действительно хорошо и приобрести сторонников, которым действительно нравятся эти фишки, и которые полюбят ваш продукт. Для небольших компаний это самый разумный подход.</p>
<p>Когда вы выбираете этот путь, вы обретаете ясность. Все становится проще. Проще объяснить суть продукта. Проще ее понять. Проще что-то изменить. Проще обслуживать. Проще начать использовать. Подобрать ингредиенты проще. Сделать упаковку тоже проще. Поддержка проще. <a href="http://37signals.com/svn/posts/1566-lesson-from-the-flip-do-less-and-you-get-to-print-less">Составление руководств проще</a>. Заявить о себе всему свету проще. И самое главное. Добиться успеха тоже становится проще.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2009/11/post362/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Размещение пресс-релизов без аспирина</title>
		<link>http://www.gotsulyak.com/2009/11/post356</link>
		<comments>http://www.gotsulyak.com/2009/11/post356#comments</comments>
		<pubDate>Wed, 04 Nov 2009 19:48:39 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[BuzzMe]]></category>
		<category><![CDATA[пресс-релиз]]></category>
		<category><![CDATA[размещение пресс-релизов]]></category>
		<category><![CDATA[рассылка пресс-релизов]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=356</guid>
		<description><![CDATA[UPD: Для тех, кто не любит много читать, даю короткую ссылку: www.buzzme.ru
Более семи лет назад я написал свою первую шароварную программу на продажу. Я не понимал, как работает рынок, за счет чего крутятся колесики бизнеса, зачем тратить деньги на рекламу&#8230; в-общем, я был полным нулем.
В то время наиболее понятными, доступными, и популярными средствами для продвижения [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPD:</strong> Для тех, кто не любит много читать, даю короткую ссылку: <a href="http://www.buzzme.ru">www.buzzme.ru</a></p>
<p>Более семи лет назад я написал свою первую шароварную программу на продажу. Я не понимал, как работает рынок, за счет чего крутятся колесики бизнеса, зачем тратить деньги на рекламу&#8230; в-общем, я был полным нулем.</p>
<p>В то время наиболее понятными, доступными, и популярными средствами для продвижения своего софта был сабмит в онлайн-каталоги и рассылка пресс-релизов. Как ни странно, в силу своей доступности для понимания, сравнительной дешевизны и фактически гарантированного (хотя бы и минимального) положительного эффекта, эти способы до сих пор остаются самыми востребованными при ограниченном бюджете.</p>
<p>За эти годы я успел набраться знаний, опыта, а заодно собрал солидную базу адресов редакторов бумажных газет и журналов, преимущественно ИТ-тематики. Для усиления эффекта была дополнительно собрана база качественных порталов Рунета, которые размещают пресс-релизы на бесплатной основе. Это позволяет рассчитывать не только на бумажные публикации, но и на поток живых посетителей с порталов, а также дополнительные внешние ссылки, что весьма полезно с точки зрения поискового продвижения. В принципе, даже термин сейчас появился такой, <a href="http://www.buzzme.ru">продвижение пресс-релизами</a>.</p>
<p>Изредка по этим базам распространялись софтверные пресс-релизы, но по большому счету, сокровище сие лежало невостребованно под спудом.</p>
<p>Не так давно количество перешло в качество. Жена освоила все премудрости работы с таким деликатным объектом, как пресс-релиз, и мы открыли <a href="http://www.buzzme.ru">агентство BuzzMe, которое занимается подготовкой текста и рассылкой пресс-релизов</a>.</p>
<p>Основная суть проекта &#8211; максимальная автоматизация труда маркетолога, рекламиста или PR-менеджера компании по работе с пресс-релизами. Специалист имеет собственный аккаунт на сервисе, личный кабинет, который позволяет добавлять новые пресс-релизы, выбирать рубрики и дату рассылки, отслеживать ход выполнения работ, изучать отчеты.</p>
<p>Пока автоматизация минимальная, так как непонятно, предпочтут ли маркетологи работу через веб-интерфейс, или будут по старинке общаться с менеджером через почту, но если будет интерес, будет и полная автоматизация.</p>
<p>Расценки, на мой взгляд, человечные &#8211; рассылка пресс-релиза в традиционные СМИ (бумажные газеты и журналы), а также сабмит в приличные тематичные порталы стоит 2,900 рублей &#8211; а ведь там немало и интеллектуальной, но еще больше рутинной ручной работы, которую ни один маркетолог не потянет, неинтересно это <img src='http://www.gotsulyak.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>В-общем, я надеюсь, что сервис будет интересен как одиночкам (таким, как шароварщики), так и большим респектабельным компаниям. Уверен, мы можем повысить эффективность работы любого маркетолога, который понимает вкус пресс-релизов&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2009/11/post356/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Джек Траут. В поисках очевидного</title>
		<link>http://www.gotsulyak.com/2009/11/post354</link>
		<comments>http://www.gotsulyak.com/2009/11/post354#comments</comments>
		<pubDate>Wed, 04 Nov 2009 10:11:26 +0000</pubDate>
		<dc:creator>Сергей Гоцуляк</dc:creator>
				<category><![CDATA[Бизнес]]></category>
		<category><![CDATA[Рецензии]]></category>
		<category><![CDATA[В поисках очевидного]]></category>
		<category><![CDATA[Джек Траут]]></category>
		<category><![CDATA[УТП]]></category>
		<category><![CDATA[позиционирование]]></category>
		<category><![CDATA[рецензия]]></category>

		<guid isPermaLink="false">http://www.gotsulyak.com/?p=354</guid>
		<description><![CDATA[Джек Траут &#8211; это человек, который изобрел самую важную концепцию современного маркетинга &#8211; позиционирование.
Позиционирование &#8211; это фактически развитие идеи Уникального Торгового Предложения (или УТП) Россера Ривза, и это самая важная штука, которую нужно учитывать как при создании новых продуктов и услуг, так и во время их развития и продвижения на рынке.
Джек уже много лет пишет [...]]]></description>
			<content:encoded><![CDATA[<p>Джек Траут &#8211; это человек, который изобрел самую важную концепцию современного маркетинга &#8211; позиционирование.</p>
<p>Позиционирование &#8211; это фактически развитие идеи Уникального Торгового Предложения (или УТП) Россера Ривза, и это самая важная штука, которую нужно учитывать как при создании новых продуктов и услуг, так и во время их развития и продвижения на рынке.</p>
<p>Джек уже много лет пишет статьи и книги на эту тему, а сегодня я хочу отрецензировать самое свежее издание под названием <a href="http://www.ozon.ru/context/detail/id/4291913/?partner=gotsulyak">&#8220;В поисках очевидого&#8221;</a> и подзаголовком &#8220;Как избавиться от хаоса в маркетинге и бизнес-стратегии&#8221;.</p>
<p>В этой работе Траут поставил перед собой задачу развеять туман &#8220;креативных решений&#8221; в маркетинге, брендинге, рекламе, коммуникациях и прочих областях бизнеса, который сгустился над американскими корпорациями в последние годы. Директора и менеджеры отказываются от очевидных решений своих проблем и ищут сложные, запутанные, и обязательно &#8220;креативные&#8221; ответы на свои вопросы. Это неправильно, это не работает &#8211; и Джек объясняет почему.</p>
<p>Основная задача маркетинга &#8211; создать и укрепить в сознании потребителя определенный образ товара, услуги, компании. Причем место для конкретного бренда нельзя выбрать произвольно &#8211; так как существует серьезное конкурентное поле, а для существующих товаров, еще и текущие представления людей о нем. </p>
<p>Возникает несколько парадоксальная ситуация: объективные свойства товара вторичны, первичен именно образ в сознании потребителя, так как именно потребитель платит за товар деньги.</p>
<p>Так например, в России Volkswagen знают как достаточно престижную и дорогую марку. А в Америке этот немецкий концерн особо не уважают, так как исторически связывают его с &#8220;жуком&#8221; Beetle &#8211; именно эту машину немцы первой массово повезли в Штаты. Очень быстро немецкий жук стал лидером нового сегмента, но потом Volkswagen допустил ошибку &#8211; попытался сделать ставку на престижные автомобили, в результате чего потерял и лидерство в нише малолитражек, которое перехватили японцы.</p>
<p>Пример с другого полушария &#8211; Honda. В нашей стране это опять таки солидный бренд с положительным восприятием. А в Японии Хонду знают прежде всего как производителя мотоциклов, поэтому к машинам компании относятся с долей пренебрежения. </p>
<p>Вот такие чудеса глобализации и лишнее подтверждение концепции позиционирования. Товар с одними и теми же свойствами может очень по разному восприниматься разными людями &#8211; а все благодаря тому, что в нашей голове все частенько заранее разложено по полочкам, и менять свое мнение мы не собираемся, и чихаем на объективные данные.</p>
<p>В главах про рекламщиков Траут набрасывается на агентства, которые заполонили эфир веселыми, красивыми, забавными, интересными, шокирующими роликами. Которые НЕ продают. Которые не передают идею отличия рекламируемого товара от других. Которые часто не несут вообще никакого смысла!</p>
<p>Реклама, по мнению Джека, должна быть очевидной. Она должна явно назвать товар, явно показать его отличия, явно попросить купить. Не надо церемониться, не надо креативить. Это не сработает, зрителям понравится ролик в целом, но почти никто после не сможет вспомнить названия компании или рекламируемого товара. Это провальная стратегия. </p>
<p>Весьма интересна концепция парности, не раз упоминаемая на страницах книги. Автор убедительно доказывает, что на любом рынке в перспективе остается только два основных игрока &#8211; лидер и догоняющий. Все остальные обречены владеть мизерными кусочками общего пирога. Поэтому лучше быть на рынке первым и закрепиться в категории лидера, чем выпускать лучшие товары, но быть вторым. Люди склонны покупать не объективно лучшие товары, а то, что покупает большинство &#8211; так как по их мнению, раз это покупается, значит это обладает лучшими свойствами. Траут называет это стратегией лидерства, и то, что она на самом деле работает, лишний раз подтверждает целостность и адекватность модели позиционирования именно в сознании покупателей, а не на рынке вообще.</p>
<p>Если книга мне нравится, а мысли вызывают резонанс, я беру ручку и начинаю подчеркивать самые яркие высказывания. Таким образом, книга с заметками получает как бы мою личную печать качества. Так вот &#8211; эта книга просто пестрит линиями и восклицательными знаками на полях. КРАЙНЕ рекомендую.</p>
<p><a href="http://www.ozon.ru/context/detail/id/4291913/?partner=gotsulyak"><strong><em>Ссылка на книгу в магазине Озон.</em></strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gotsulyak.com/2009/11/post354/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
