<?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://the-notebook.org/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://the-notebook.org</link>
	<description>Описание вашего блога</description>
	<lastBuildDate>Fri, 17 Jun 2011 22:03:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>cocos2d &#8211; фреймворк для создания игр для iPhone</title>
		<link>http://the-notebook.org/12/11/2009/cocos2d-frejmvork-dlya-sozdaniya-igr-dlya-iphone/</link>
		<comments>http://the-notebook.org/12/11/2009/cocos2d-frejmvork-dlya-sozdaniya-igr-dlya-iphone/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 13:46:22 +0000</pubDate>
		<dc:creator>Snaky</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://the-notebook.org/?p=143</guid>
		<description><![CDATA[
Cocos2d &#8211; это небольшой opensource фреймворк для создания 2D игр. Изначально он создавался для программ, написанных на python&#8217;е для платформ Windows, Linux и Mac, но потом появились версии для iPhone и даже для Android.
Мы использовали его для написания своей игры iTreasure &#8211; ремейка &#8220;Тайны Океана&#8221; и ни разу не пожалели об этом. 
Почему cocos2d
- Богатые [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://the-notebook.org/wp-content/uploads/2009/11/logo.png"><img src="http://the-notebook.org/wp-content/uploads/2009/11/logo.png" alt="logo" title="logo" width="55" height="55" class="alignright size-full wp-image-158" /></a><br />
<a href="http://code.google.com/p/cocos2d-iphone/">Cocos2d</a> &#8211; это небольшой opensource фреймворк для создания 2D игр. Изначально он создавался для программ, написанных на python&#8217;е для платформ Windows, Linux и Mac, но потом появились версии для iPhone и даже для Android.</p>
<p>Мы использовали его для написания своей игры <a href="http://www.lvl-up.biz/r.php?s=103&#038;d=0" onclick="javascript:pageTracker._trackEvent('PostLink', 'Click', 'iTreasure');">iTreasure</a> &#8211; ремейка &#8220;Тайны Океана&#8221; и ни разу не пожалели об этом. </p>
<h4>Почему cocos2d</h4>
<p><em>- Богатые возможности.</em><br />
Все, что нужно от движка для двумерной игрушки в нем есть. Ниже я еще расскажу подробнее о функциональности.</p>
<p><em>- Простота.</em><br />
Если вы уже писали что-нибудь для iPhone, то начать использовать cocos2d вам практически ничего не будет стоить.</p>
<p><em>- Открытость.</em><br />
У движка очень хорошая лицензия &#8211; GNU Lesser GPL, что позволяет свободно использовать его в коммерческих продуктах.</p>
<p><em>- Большое комьюнити.</em><br />
Уже более 200 программ игр сделано с использованием cocos2d. В интернете можно найти огромное количество информации о тонкостях и проблемах, связанных с использованием движка (правда, на английском языке).</p>
<p><em>- Множество рабочих примеров и приложений с открытым кодом.</em><br />
Во-первых, очень много рабочих примеров включено в дистрибутив фреймворка. Кроме того, многие люди открывают исходники своих приложений (даже продающихся в appstore), для того, чтобы другие могли найти в них готовые решения и ответы на свои вопросы.</p>
<h4>Немного о возможностях фреймворка</h4>
<p><em>- Управление сценами.</em><br />
Всю игру можно разбить на сцены. Фактически, к сцене можно относиться как к небольшому подпроекту. Между сценами можно переключаться с использованием различных эффектов: fade, slide, rotation и т.д.</p>
<p><em>- Спрайты и менеджеры спрайтов.</em><br />
Фреймворк дает богатые возможности по управлению спрайтами. Менеджеры спрайтов позволяют оперировать атласами спрайтов, что позволяет эффективно использовать память. Кроме этого, есть классы для работы со спрайтовыми шрифтами, использование которых существенно ускоряет отрисовку текста.</p>
<p><em>- Анимация (actions).</em><br />
Анимация в cocos2d осуществляется с помощью специальных классов, которые называются Actions. Их можно применять почти к любому объекту в игре. В движке есть большой набор типов анимаций и кроме того, можно создавать свои.</p>
<p><em>- Базовая реализация меню и кнопок.</em><br />
Кнопки не такие продвинутые, как в UIKit, но для создания игровых меню их вполне достаточно. Для текста в меню можно использовать спрайтовые шрифты.</p>
<p><em>- Система частиц.</em><br />
Движок поддерживает системы частиц. Можно создавать различные эффекты, типа дождя, снега, фейерверка. Частицы могут различаться размерами, вращаться, к ним может применяться гравитация, можно настраивать их время жизни и так далее.</p>
<p><em>- Встроенные физические движки <a href="http://www.box2d.org/">Box2d</a> и <a href="http://code.google.com/p/chipmunk-physics/">Chipmunk</a>.</em><br />
Честно говоря, мы их сами не использовали, но демо выглядят впечатляюще. Столкновения, трение, твердые тела, упругость и прочее.</p>
<p><em>- Cocos Live &#8211; сервис для онлайн-рекордов.</em><br />
Движок использует сервера, предоставляемые Google App Engine для хранения онлайн-рекордов и предоставляет API для работы с этими рекордами. Но мы решили вместо Cocos Live использовать социальную сеть <a href="http://openfeint.com/">OpenFeint</a>, которая тоже позволяет пользователям делиться своими рекордами с другими игроками, а кроме этого предоставляет много других возможностей. Если вам будет интересно, расскажу про нее более подробно.</p>
]]></content:encoded>
			<wfw:commentRss>http://the-notebook.org/12/11/2009/cocos2d-frejmvork-dlya-sozdaniya-igr-dlya-iphone/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Как найти хорошего программиста</title>
		<link>http://the-notebook.org/13/01/2008/kak-nayti-horoshego-programmista/</link>
		<comments>http://the-notebook.org/13/01/2008/kak-nayti-horoshego-programmista/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 20:38:33 +0000</pubDate>
		<dc:creator>Snaky</dc:creator>
				<category><![CDATA[Buzz]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://the-notebook.org/13/01/2008/kak-nayti-horoshego-programmista/</guid>
		<description><![CDATA[Перевод с английского. Оригинал находится на сайте http://www.inter-sections.net/.
Как опознать хорошего программиста будучи бизнесменом?
Это не так-то просто, как может показаться. Опыт, указанный в резюме мало чем помогает, так как лучшие программисты часто не имеют &#8220;официального&#8221; опыта, доказывающего, что они лучшие. На самом деле, опыт, указанный в резюме, часто может вводить в заблуждение. Тем не менее, даже [...]]]></description>
			<content:encoded><![CDATA[<p>Перевод с английского. <a href="http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/">Оригинал</a> находится на сайте <a href="http://www.inter-sections.net/">http://www.inter-sections.net/</a>.</p>
<p>Как опознать хорошего программиста будучи бизнесменом?</p>
<p>Это не так-то просто, как может показаться. Опыт, указанный в резюме мало чем помогает, так как лучшие программисты часто не имеют &#8220;официального&#8221; опыта, доказывающего, что они лучшие. На самом деле, опыт, указанный в резюме, часто может вводить в заблуждение. Тем не менее, даже эта информация может помочь определить хорошего программиста.</p>
<p>Я считаю себя довольно хорошим программистом. В то же время, мне некоторое время приходилось заниматься деловой частью IT-бизнеса. Я провел кучу времени, просматривая различные резюме и проводя собеседования с кандидатами на должность программиста. Я думаю, что благодаря этому я получил некоторый опыт в определении хороших программистов, и я хочу поделиться этим опытом, в надежде, что он поможет другим бизнесменам. И, кто знает, может быть некоторые программисты, у которых есть потенциал стать хорошими, узнают из этой статьи чего им не хватает для того, чтобы быть лучшими.</p>
<p>В своей статье <a href="http://www.paulgraham.com/startupmistakes.html">18 ошибок, которые убивают стартапы</a>, Пол Грэм пишет:</p>
<p><em>&#8220;&#8230; плохое программирование убило большинство стартапов в электронной коммерции в 1990х годах. Большинство из этих компаний были созданы бизнесменами, которые считали, что если у них есть хорошая идея, то достаточно нанять программистов, чтобы они ее воплотили и получить успешный стартап. На самом деле все гораздо сложнее, даже почти невозможно потому, что бизнесмены не могут определить какие программисты являются хорошими. Они даже редко встречают таких, хорошие программисты редко хотят работать, воплощая в жизнь идеи бизнесменов.</p>
<p>Как правило, бизнесмен нанимает человека, которого считает хорошим программистом (у него же написано в резюме, что он Сертифицированный Разработчик Микрософт), а на деле он оказывается плохим. В результате стартап оказывается в ситуации бомбардировщика времен второй мировой войны, в то время как остальные стартапы проносятся мимо, как современные истребители. Такие стартапы становятся похожими на большие компании, но без их преимуществ.</p>
<p>Так как же найти хорошего программиста, если вы не являетесь программистом? Я сомневаюсь, что на этот вопрос существует ответ. Сначала я хотел написать, что для того, чтобы нанимать работников, вам нужно найти программиста, но как сделать хотя бы это?&#8221;</em></p>
<p>Я не согласен с Грэмом в этом вопросе. Думаю, что существуют признаки, по которым можно определить хорошего программиста (и, соотвественно, не очень хорошего), такие, которыми может воспользоваться даже бизнесмен.</p>
<p><strong>1. Страсть.</strong> За время работы в больших компаниях я столкнулся с новым типом IT-специалиста, с которым раньше никогда не встречался: программист-карьерист. Такие люди работают в IT потому, что считают, что это хорошая карьера. Они не занимаются программированием в свободное время. Они удивляются, когда узнают, что у меня дома сетка из трех компьютеров. Они программируют только на работе. Они не изучают ничего нового, если только их не отправляют на дополнительное обучение (или не мотивируют новой работой, для которой нужно изучить новую технологию). Они нечасто разговаривают о компьютерах вне работы. А когда делают это, то не испытывают энтузиазма. Говоря кратко, они не одержимы компьютерами.</p>
<p><strong>2. Самообучение и любовь к учебе.</strong> Программирование &#8212; это постоянно развивающаяся область. Ни одного года не проходит без того, чтобы какая-нибудь новая технология не сменила старую, установив новые стандарты и изменив половину IT-индустрии. Не нужно говорить, что хорошие программисты стараются принять эти изменения и держаться на гребне волны. Однако существуют такие программисты, которые ни за что не будут изучать новые технологии, если только их не заставят, потому что они не любят изучать новое. Такие программисты вероятно изучали программирование в университете, и теперь думают, что им хватит того, чему они там научились и может быть того, чему они научатся на курсах, на которые их отправит их компания.</p>
<p>Если человек, которого вы хотите нанять, хоть раз произнесет что-нибудь вроде: &#8220;Я смогу с этим работать, только отправьте меня на курсы на неделю и я буду готов&#8221;, не нанимайте этого человека. Хорошему программисту не нужны курсы, чтобы изучить новую технологию. На самом деле, хороший программист прожужжит вам все уши, рассказывая о новой технологии, о которой вы никогда не слышали, объясняя вам почему нужно использовать именно ее, несмотря на то, что другие сотрудники не знают как ее использовать.</p>
<p><strong>3. Интеллект.</strong> Некоторые деловые люди считают, что отсутствие такта и отсутствие интеллекта это одно и то же. На самом деле, у интеллекта есть несколько признаков, и эмоциональность/социальность только один из них. Хорошие программисты не бывают тупыми. Никогда. В действительности, хорошие программисты являются одними из самых умных людей, которых вы знаете. Многие из них обладают также и социальными качествами. То, что программисты часто не могут нормально поддерживать разговор &#8212; это всего лишь заблуждение. Я был на нескольких собраниях London Ruby User Group и могу сказать, что за небольшим исключением, все они являются умными, общительными, интересными людьми.</p>
<p>Это, конечно, не значит, что они свободно чувствуют себя в любом обществе. Но это значит, что если общество достаточно комфортно, то вы сможете так же нормально общаться с ними, как вы бы общались и с другими &#8220;общительными&#8221; людьми.</p>
<p>Никогда не нанимайте глупых людей, которые считают себя хорошими разработчиками. Потому что они таковыми не являются. Если человек не может нормально общаться в расслабленной обстановке, скорее всего он не является хорошим программистом. С другой стороны, у умного человека высокий шанс оказаться хорошим программистом.</p>
<p><strong>4. Скрытый опыт.</strong> Я уже говорил об этом в разделе &#8220;Страсть&#8221;, но это такой важный признак, что я хочу поговорить о нем отдельно.</p>
<p>Я начал программировать когда мне было около 9 лет, на Commodore 64. Потом я перешел на PC и немного программировал на Паскале. Когда мне было 14, я написал свой raycasting движок и провел кучу времени развлекаясь с различными графическими эффектами, которые можно было выжать из видеокарты, обращаясь к ней напрямую. Я называю этот период стадией &#8220;куколки&#8221;. Когда я начинал входить в эту стадию, я был посредственным программистом, и у меня не хватало уверенности для того, чтобы заниматься действительно сложными вещами. Когда я закончил эту стадию, такая уверенность появилась. Я знал, что в принципе, я могу написать все что угодно, если действительно захочу.</p>
<p>Упоминал ли я когда-нибудь об этом в своем резюме? Нет.</p>
<p>Я уверен, что у большинства хороших программистов целая куча подобного опыта и они не пишут о нем в своем резюме. Часто они думают, что такой опыт не относится напрямую к предстоящей работе, и не является &#8220;подходящим опытом&#8221;, но на самом деле, это потрясающие достижения. Хорошим вопросом на интервью мог бы быть: &#8220;Есть ли у вас какой-нибудь собственный проект, необязательно относящийся к вашей будущей работе, которым вы занимались в свободное время, но не упомянули о нем в резюме?&#8221;. Если у вашего кандидата нет таких проектов (конечно, если их резюме не занимает 20 страниц), то вполне вероятно, что он не является хорошим программистом. Даже у программиста с огромным резюме есть проекты о которых он не упомянул.</p>
<p><strong>5. Множество технологий.</strong> Ну, это довольно просто. Если человек любит учиться и ему нравится возиться с новыми технологиями, что является признаками хорошего программиста, то он неизбежно (если ему больше 22 лет) будет разбираться в дюжине различных технологий. Изучение новых технологий это одно из самых любимых занятий, которым может заниматься человек, одержимый программированием. Таким образом его портфолио будет набито различными технологиями, с которыми он &#8220;немного возился&#8221;. Он необязательно будет экспертом во всех них, но если он приличный программист, то он будет разбираться в целой куче технологий, которые не относятся напрямую к его работе.</p>
<p>Эти &#8220;неотносящиеся напрямую к работе&#8221; технологии иногда сложно распознать, особенно непрораммисту. Любой Java-программист может написать целый список различных технологий, с которыми он работал: Java, J2EE, Ant, XML, SQL, Hibernate, Spring, Struts, EJB, Shell Scripting, и так далее. Но это все части одной и той же технологии, и все тесно связанны друг с другом. Сильная специализация в одной линейке технологий часто является признаком не очень хорошего программиста.</p>
<p>И наконец, если некоторые из этих технологий являются совсем новыми, это тоже признак хорошего программиста.</p>
<p><strong>6. Формальные сертификаты.</strong> Это скорее не анти-признак, а не-признак. Главное, что стоит здесь отметить, это то, что формальные сертификаты ничего не значат при поиске хорошего программиста. Многие хорошие программисты заканчивали какой-нибудь институт по компьютерной специальности. Многие нет. Сертификаты вроде MCSE или SCJP тоже ничего не значат. Они разработаны таким образом, чтобы быть доступными для всех. Единственное, что они показывают, это то, что их владелец обладает некоторыми знаниями в определенной технологии. Они являются дополнительными подтверждениями знаний, позволяющими людям в больших корпорациях до собеседования узнать, что &#8220;этот человек знает Java и у него есть сертификат, подтверждающий это&#8221;. Если вы нанимаете людей для маленького бизнеса, или вам нужны очень умные программисты, для команды хакеров, которой нужно быстро что-то написать, вам нужно игнорировать большинство из этих сертификатов. Они действительно не очень много говорят о качестве программиста. То же самое относится к возрасту. Есть отличные программисты, которым 18 лет. Есть отличные программисты, которым 40. Невозможно оценить качество программиста, основываясь на его возрасте (хотя, возможно, лучше нанимать людей примерно одного возраста; пожалуйста, обратите внимание, что дискриминация по возрасту является нелегальной во многих странах!).</p>
<p>Ну и напоследок скажу, что мой опыт показывает, что большинство плохих или средних программистов начали программировать в университете, когда им стали преподавать соответствующий курс. Большинство хороших программистов начали программировать гораздо раньше. Если ваш кандидат не занимался программированием до университета, и начал получать опыт в программировании только на своей первой работе, то он вполне вероятно не очень хороший программист.</p>
<p><strong>Заключение</strong><br />
Разумеется, все эти признаки не являются абсолютными. Вы можете найти программиста, который не подходит под некоторые из них. Но мое мнение состоит в том, что навряд ли вы найдете хорошего программиста, который не попадает под все эти признаки. Тоже самое относится и к плохим программистам, которые могут соответствовать некоторым из этих критериев. Но чем большему количеству признаков соответствует ваш кандидат, тем больше вероятность, что он тот самый &#8220;хороший программист&#8221;, которого вы искали.</p>
<p>Если вам понравилась эта статья, рекомендую также прочитать:<br />
<a href="http://the-notebook.org/26/01/2006/kak-stat-bogatyim/">Как стать богатым</a><br />
<a href="http://the-notebook.org/21/04/2006/idei-dlya-startapa/">Идеи для стартапов</a><br />
<a href="http://the-notebook.org/08/11/2009/kakovy-startapy-na-samom-dele/">Каковы стартапы на самом деле</a><br />
<a href="http://the-notebook.org/02/08/2007/veschi/">Вещи</a></p>
]]></content:encoded>
			<wfw:commentRss>http://the-notebook.org/13/01/2008/kak-nayti-horoshego-programmista/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Стартап на практике</title>
		<link>http://the-notebook.org/19/06/2007/startap-na-praktike/</link>
		<comments>http://the-notebook.org/19/06/2007/startap-na-praktike/#comments</comments>
		<pubDate>Tue, 19 Jun 2007 14:31:16 +0000</pubDate>
		<dc:creator>Snaky</dc:creator>
				<category><![CDATA[Веб-технологии]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Статьи]]></category>

		<guid isPermaLink="false">http://the-notebook.org/19/06/2007/startap-na-praktike/</guid>
		<description><![CDATA[Начать стартап легко &#8212; довести до конца сложно. Поэтому стартапы и не появляются как дождевые черви после летнего дождя, несмотря на то, что почти любой сайт на народе.ру можно назвать стартапом. Даже самые простые проекты требуют вложений времени и усилий. И не факт, что эти усилия окупятся, независимо от того, какую прибыль вы ожидаете, будь [...]]]></description>
			<content:encoded><![CDATA[<p>Начать стартап легко &#8212; довести до конца сложно. Поэтому стартапы и не появляются как дождевые черви после летнего дождя, несмотря на то, что почти любой сайт на народе.ру можно назвать стартапом. Даже самые простые проекты требуют вложений времени и усилий. И не факт, что эти усилия окупятся, независимо от того, какую прибыль вы ожидаете, будь то денежная прибыль или какая-нибудь другая.</p>
<p>Вот что помогло нам завершить <a href="http://guidoscope.com/ru">Guidoscope</a>:</p>
<ol>
<li>
Проектом занималось три человека и в моменты, когда казалось, что все заглохло, один из нас доделывал какую-нибудь фичу и тем самым вдохновлял на дальнейшую работу остальных участников. Обязательно найдите себе напарника, даже простое обсуждение с ним деталей или идей поможет вам собраться с мыслями и выбраться из творческого тупика.
</li>
<li>
Мы разбили задачу на несколько этапов, итогом каждого из которых был готовый продукт со своим списком реализованных функций. Первый этап &#8212; создание прототипа был завершен без оглядки на возможные баги и недочеты. В результате, мы быстро получили каркас приложения, который был запущен на тестовом сервере и мы имели возможность вживую тестировать новые наработки.
</li>
<li>
Проект писался в свободное от основной работы время, поэтому не было никаких жестких сроков и никто никого не подгонял. На мой взгляд, атмосфера в таких проектах должна максимально отличаться от рабочей.
</li>
<li>
Был создан общий скайп-чат, в котором мы общались друг с другом, задавали вопросы и обсуждали текущие проблемы. Пожалуй, общий чат &#8212; это один из самых мощных инструментов, помогающих двигать проект.
</li>
<li>
Мы подобрали удобный инструментарий для работы:<br />
 &#8211; <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> &#8212; Настроенный веб-сервер с php, mysql для разработки на локальной машине.<br />
 &#8211; <a href="https://freepository.com">https://freepository.com</a> &#8212; Бесплатный репозиторий для CVS.<br />
 &#8211; <a href="http://wincvs.org/">http://wincvs.org/</a> &#8212; Бесплатный клиент для CVS.<br />
 &#8211; <a href="http://winmerge.org/">http://winmerge.org/</a> &#8212; Очень удобное бесплатное приложение для сведения различных версий файлов.<br />
 &#8211; <a href="http://www.bugzilla.org/">Bugzilla</a> &#8212; Обязательно пользуйтесь каким-нибудь инструментом для отслеживания багов. Мы пользовались багзиллой.
</li>
</ol>
<p>Если вы сомневаетесь, стоит ли начинать стартап, мой вам совет &#8211; начинайте. И обязательно доведите его до конца, несмотря на то, что в процессе вам может показаться, что ваш проект никому не нужен. Вы получите колоссальный опыт, но самое главное, завершенный проект даст вам силы для того, чтобы начать новый, более серьезный проект и закончить его.</p>
<h4>Если вам понравилась эта статья, проголосуйте за нее на <a href="http://news2.ru">News2.ru</a></h4>
<p><iframe src='http://news2.ru/api/votethis.php?url=http://the-notebook.org/19/06/2007/startap-na-praktike' frameborder='0' width='62' scrolling='no' height='80'></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://the-notebook.org/19/06/2007/startap-na-praktike/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

