<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10303035</id><updated>2012-01-31T06:39:30.260+04:00</updated><category term='future'/><category term='microsoft'/><category term='interview'/><category term='robots'/><category term='me'/><category term='fun'/><category term='cpp'/><category term='gamedev'/><category term='books'/><category term='programming'/><title type='text'>Алёна C++</title><subtitle type='html'>программирование для прагматиков</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default?start-index=101&amp;max-results=100'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>461</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10303035.post-1132114657849557431</id><published>2012-01-14T08:39:00.003+04:00</published><updated>2012-01-14T09:01:49.987+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Статья "Notes On Scalability"</title><content type='html'>В статье &lt;a href="http://www.brentozar.com/archive/2012/01/notes-on-scalability/"&gt;Notes on Scalability&lt;/a&gt; сформулированы пять принципов построения масштабируемых систем. Я привожу краткий перевод, по ссылке все подробнее и интереснее.&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight:bold;"&gt;Build it to Break&lt;/span&gt;.&lt;br /&gt;Что бы вы ни разрабатывали, оно сломается. Будьте к этому готовы.&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight:bold;"&gt;Everything is a Feature&lt;/span&gt;&lt;br /&gt;Ваше приложение - это набор решений и компромиссов.&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight:bold;"&gt;Scale Out, Not Up&lt;/span&gt;&lt;br /&gt;Хорошо, когда проблемы масштабирования можно решить добавлением серверов.&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-weight:bold;"&gt;Buy More Storage&lt;/span&gt;&lt;br /&gt;Много маленьких дисков обычно быстрее одного здорового.&lt;br /&gt;&lt;br /&gt;5.&lt;span style="font-weight:bold;"&gt;You’re Going to Do It Wrong&lt;/span&gt; &lt;br /&gt;Вы ошибетесь. Будьте готовы переписывать свой код и пробовать новые идеи.&lt;br /&gt;&lt;br /&gt;По ссылке с &lt;a href="http://highscalability.com/blog/2012/1/10/a-perfect-fifth-of-notes-on-scalability.html"&gt;highscalability&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-1132114657849557431?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/1132114657849557431/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=1132114657849557431' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1132114657849557431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1132114657849557431'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2012/01/notes-on-scalability.html' title='Статья &quot;Notes On Scalability&quot;'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2125513257933248882</id><published>2012-01-09T07:24:00.011+04:00</published><updated>2012-01-15T00:52:20.665+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Карта С++11</title><content type='html'>&lt;a href="http://fearlesscoder.blogspot.com/2012/01/c11-lands.html"&gt;English translation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В последнее время на землях языка С++ &lt;a href="http://alenacpp.blogspot.com/2011/10/iso-c11.html"&gt;происходили масштабные изменения&lt;/a&gt;. И старая карта стала безнадежно устаревшей. Поэтому в новогодние праздники мы с &lt;a href="http://jimblog.me/"&gt;Джимом&lt;/a&gt; напряглись и изобразили их все на карте. Вернее, изображал все конечно он, умение рисовать не относится к числу моих талантов. Он не только добавил бои за новый стандарт, но и значительно улучшил старые территории.&lt;br /&gt;&lt;br /&gt;Так что встречайте новою версию! Осторожно, она здоровая - 13 мегов.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://softwaremaniacs.org/Images/alenacpp/cppmap-2012.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://softwaremaniacs.org/Images/alenacpp/cppmap-2012-small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5695471602841395298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для тех, кто не осилил закачать 13 мегов (кто вы, люди?) - &lt;a href="http://jimblog.me/wp-content/uploads/2012/01/c++map2.jpg"&gt;JPEG&lt;/a&gt; на 4 мега&lt;br /&gt;&lt;br /&gt;Кроме банального "распечатать и повесить на стену" народ нашел старой карте множество применений. В одном немецком вузе ее используют для обучения студентов. Несколько раз она была использована во время выступления на конференциях. Магазин из какого-то российского города (забыла уже откуда именно), торгующий холодным оружием, зачем-то использовал элемнты карты в своей рекламе.&lt;br /&gt;Мы не против того, чтобы вы делали с картой что угодно. Но помните, что часть картинок честно стырена из интернетов и копирайтов на них у нас нет.&lt;br /&gt;&lt;br /&gt;О найденных ошибках и опечатках сообщайте в редакцию, пожалуйста. &lt;strong&gt;Updated&lt;/strong&gt;: опечатку с management поправили&lt;br /&gt;&lt;br /&gt;Исходники:&lt;br /&gt;&lt;a href="http://softwaremaniacs.org/Images/alenacpp/cppmap-2012.cdr"&gt;cppmap-2012.cdr&lt;/a&gt; - собственно исходник&lt;br /&gt;&lt;a href="http://softwaremaniacs.org/Images/alenacpp/cppmap-2012.svg"&gt;cppmap-2012.svg&lt;/a&gt; - он же, конвертнутый в более популярный формат&lt;br /&gt;&lt;a href="http://softwaremaniacs.org/Images/alenacpp/reikland_paper.jpg"&gt;reikland_paper.jpg&lt;/a&gt; - текстура потертой бумаги&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2009/06/c.html"&gt;Карта языка C++ (The C++ Lands)&lt;/a&gt; - cтарая карта&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2125513257933248882?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2125513257933248882/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2125513257933248882' title='Комментарии: 26'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2125513257933248882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2125513257933248882'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2012/01/11.html' title='Карта С++11'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5475786722988758379</id><published>2012-01-06T08:54:00.003+04:00</published><updated>2012-01-06T09:00:29.409+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>CodeFlow - тулза для code review</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-_NKsWbczZFI/TwZ_H_nr5xI/AAAAAAAAAo4/z7cxWnx-fIY/s1600/01-05CodeFlowLogo_sm.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 152px; height: 111px;" src="http://3.bp.blogspot.com/-_NKsWbczZFI/TwZ_H_nr5xI/AAAAAAAAAo4/z7cxWnx-fIY/s200/01-05CodeFlowLogo_sm.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5694378554170271506" /&gt;&lt;/a&gt; Обещают нашу внутреннюю тулзу для code review включить в следующий релиз Visual Studio. Статья об этом:&lt;br /&gt;&lt;a href="http://www.microsoft.com/presspass/features/2012/jan12/01-05CodeFlow.mspx"&gt;A Bar, an Idea, and a Garage: The Story of CodeFlow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CodeFlow - прекрасная вещь, вся из себя интуитивно понятная, рекомедую. Мы ей пользуемся и довольны.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5475786722988758379?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5475786722988758379/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5475786722988758379' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5475786722988758379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5475786722988758379'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2012/01/codeflow-code-review.html' title='CodeFlow - тулза для code review'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-_NKsWbczZFI/TwZ_H_nr5xI/AAAAAAAAAo4/z7cxWnx-fIY/s72-c/01-05CodeFlowLogo_sm.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2586125364338706456</id><published>2011-12-29T10:11:00.002+04:00</published><updated>2011-12-29T10:23:02.722+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>The Art Of Programming — Выпуск №70 [ Drinking ] / Готовимся к новому году с alenaCPP</title><content type='html'>Поучаствовала в новогоднем подкасте &lt;a href="http://habrahabr.ru/blogs/hpodcasts/135418/"&gt;The Art Of Programming&lt;/a&gt;. Душевно пообщались с &lt;a href="https://twitter.com/#!/golodnyj"&gt;golodnyj&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2586125364338706456?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2586125364338706456/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2586125364338706456' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2586125364338706456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2586125364338706456'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/12/art-of-programming-70-drinking-alenacpp.html' title='The Art Of Programming — Выпуск №70 [ Drinking ] / Готовимся к новому году с alenaCPP'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8314965823559031602</id><published>2011-12-17T23:19:00.003+04:00</published><updated>2011-12-17T23:32:21.102+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><title type='text'>Интервью с Корринной Ю</title><content type='html'>&lt;a href="http://www.girlgamer.com/zine/article/1685/"&gt;Women in Gaming: Halo's Corrinne Yu&lt;/a&gt;. Корринна работает в Microsoft Game Studios, занимается архитектурой движка Halo. Интервью просто про жизнь, про программирование там маловато.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8314965823559031602?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8314965823559031602/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8314965823559031602' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8314965823559031602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8314965823559031602'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/12/blog-post.html' title='Интервью с Корринной Ю'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3157711020262243811</id><published>2011-12-12T06:33:00.002+04:00</published><updated>2011-12-12T06:36:54.379+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Пойду на конференцию GoingNative 2012</title><content type='html'>В начале февраля тут у нас в Редмонде будет конференция &lt;a href="http://channel9.msdn.com/Events/GoingNative/GoingNative-2012"&gt;GoingNative 2012&lt;/a&gt;. Рассказывать будут о C++11. Обещают, что там будут Страуструп и Александреску. Схожу, посмотрю на них, потом вам расскажу.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3157711020262243811?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3157711020262243811/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3157711020262243811' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3157711020262243811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3157711020262243811'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/12/goingnative-2012.html' title='Пойду на конференцию GoingNative 2012'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-9033552320803401703</id><published>2011-11-23T09:00:00.008+04:00</published><updated>2011-11-27T12:44:18.582+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Опубликованы исходники Doom 3</title><content type='html'>Помните, Кармак обещал опубликовать исходники Doom 3 после выхода Rage? Он свое слово держит: &lt;a href="https://github.com/TTimo/doom3.gpl"&gt;Doom 3 GPL source release&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/*&lt;br /&gt;===========================================================================&lt;br /&gt;&lt;br /&gt;Doom 3 GPL Source Code&lt;br /&gt;Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company. &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Это только исходники, без данных. Данные можно взять из самой игры.&lt;br /&gt;&lt;br /&gt;Из-за юридических проблем ему пришлось убрать оттуда кусок кода, известный как Carmack's Reverse.&lt;br /&gt;&lt;br /&gt;Должно компиляться под Win32, Linux и MacOS.&lt;br /&gt;&lt;br /&gt;Написано на С++, но это скорее похоже на С с классами - голые указатели, сишные массивы.&lt;br /&gt;&lt;br /&gt;Как это обычно бывает, не все доведено до идеального состояния.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;qglDisableClientState( GL_NORMAL_ARRAY );&lt;br /&gt;qglDisable( GL_FRAGMENT_PROGRAM_ARB );&lt;br /&gt;qglDisable( GL_VERTEX_PROGRAM_ARB );&lt;br /&gt;// &lt;span style="font-weight:bold;"&gt;Fixme&lt;/span&gt;: Hack to get around an apparent bug in ATI drivers.  Should remove as soon as it gets fixed.&lt;br /&gt;qglBindProgramARB( GL_VERTEX_PROGRAM_ARB, 0 );&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Как видно из кода, для отрисовки используется OpenGL. &lt;strike&gt;Почему-то в readme написано, что нужен DirectX. Непонятно.&lt;/strike&gt; DirectX &lt;a href="http://alenacpp.blogspot.com/2011/11/doom-3.html#comment-6702967456750174974"&gt;нужен для DirectInput&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Подменив данные и &lt;span style="font-style:italic;"&gt;слегка&lt;/span&gt; поменяв код можно написать 3D-шутер своей мечты :-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-9033552320803401703?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/9033552320803401703/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=9033552320803401703' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/9033552320803401703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/9033552320803401703'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/11/doom-3.html' title='Опубликованы исходники Doom 3'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-6335666937193899292</id><published>2011-11-05T09:26:00.004+04:00</published><updated>2011-11-20T07:05:01.467+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Статья The Designer's Notebook: Passion Versus Professionalism</title><content type='html'>&lt;a href="http://www.gamasutra.com/view/feature/6523/the_designers_notebook_passion_.php?print=1"&gt;The Designer's Notebook: Passion Versus Professionalism&lt;/a&gt; - статья про то, что игровой индустрии нужны скорее профессионалы, нежели энтузиасты. Но вообще там много интересного написано, что подойдет к любой индустрии.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I would much rather hire someone with professionalism than passion. Professionalism is dedication to doing a great job even if you're not the target audience.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Спасибо анонимному комментатору, который дал в комментариях ссылку на русский перевод статьи: &lt;a href="http://vk.com/note124207547_11562473"&gt;Увлечённость или профессионализм?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://twitter.com/#!/voldmar"&gt;voldmar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-6335666937193899292?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/6335666937193899292/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=6335666937193899292' title='Комментарии: 14'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6335666937193899292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6335666937193899292'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/11/designers-notebook-passion-versus.html' title='Статья The Designer&apos;s Notebook: Passion Versus Professionalism'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-4323383807820875237</id><published>2011-10-13T09:36:00.004+04:00</published><updated>2011-11-27T12:46:05.578+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Пост Stevey's Google Platforms Rant</title><content type='html'>Стив Йеги &lt;strike&gt;(я надеюсь, это произносится именно так)&lt;/strike&gt;, который работает в Гугле, случайно опубликовал в открытом доступе свою статью со сравнением API Амазона и Гугла, хвалит там &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt;. Ну а также там есть немного сплетен о всяких их внутренних делах.&lt;br /&gt;Эта статья стала хитом среди разработчиков, все о ней пишут, все ретвитят. В итоге статью решили из открытого доступа не убирать.  Вот она: &lt;a href="https://plus.google.com/112678702228711889851/posts/eVeouesvaVX"&gt;Stevey's Google Platforms Rant&lt;/a&gt;. Много букв.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;...Amazon had transformed culturally into a company that thinks about everything in a services-first fashion. It is now fundamental to how they approach all designs, including internal designs for stuff that might never see the light of day externally.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-4323383807820875237?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/4323383807820875237/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=4323383807820875237' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4323383807820875237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4323383807820875237'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/10/steveys-google-platforms-rant.html' title='Пост Stevey&apos;s Google Platforms Rant'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-1408657704568771158</id><published>2011-10-11T10:17:00.003+04:00</published><updated>2011-10-11T10:28:15.418+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>ISO C++11 опубликован</title><content type='html'>Мне уже много раз присылали письма с вопросами "новый стандарт С++ уже вышел, почему у тебя в блоге ничего про это нет???". Однако, &lt;a href="http://www.iso.org/iso/pressrelease.htm?refid=Ref1472"&gt;официальный пресс-релиз&lt;/a&gt; о выходе нового Стандарта появился только сегодня, 10.10.2011, и Твиттер начал радоваться именно сегодня. И да, у нас тут всё еще десятое, хотя у вас у многих уже 11.&lt;br /&gt;Итак, можно открывать шампанское и праздновать, с обязательным зачитыванием вслух пресс-релиза. &lt;br /&gt;Герб Саттер написал об этом радостном событии тут: &lt;a href="http://herbsutter.com/2011/10/10/iso-c11-published/"&gt;ISO C++11 Published&lt;/a&gt;. &lt;br /&gt;ISO, как обычно, будет продавать финальный вариант Стандарта за деньги и, как обычно, последний черновик Стандарта, который мало чем отличается от финальной версии, можно взять &lt;a href="http://www.open-std.org/jtc1/sc22/wg21/"&gt;тут&lt;/a&gt;.&lt;br /&gt;Ура.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-1408657704568771158?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/1408657704568771158/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=1408657704568771158' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1408657704568771158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1408657704568771158'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/10/iso-c11.html' title='ISO C++11 опубликован'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7813606427838238425</id><published>2011-10-10T10:09:00.003+04:00</published><updated>2011-10-10T10:15:14.588+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Бесплатный онлайн-курс по машинному обучению</title><content type='html'>Стэнфордский университет предлагает бесплатный онлайн-курс по очень модному сегодня направлению - машинному обучению: &lt;a href="http://www.ml-class.org"&gt;Stanford Machine Learning class&lt;/a&gt;. Всё на английском, есть субтитры.&lt;br /&gt;Туда входят видеолекции, вопросы по каждому разделу и упражнения, в которых надо будет писать код. Есть форум где можно задавать вопросы.&lt;br /&gt;Я начала смотреть, мне нравится.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7813606427838238425?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7813606427838238425/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7813606427838238425' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7813606427838238425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7813606427838238425'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/10/blog-post.html' title='Бесплатный онлайн-курс по машинному обучению'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5063091833186360842</id><published>2011-09-23T08:34:00.003+04:00</published><updated>2011-09-23T09:01:16.167+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Интервью со Страуструпом на bigthink.com</title><content type='html'>&lt;a href="http://bigthink.com/bjarnestroustrup"&gt;Интервью с Бьярном Страуструпом&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;object id="flashObj" width="480" height="270" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"&gt;&lt;param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&amp;isUI=1" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="videoId=722717886001&amp;playerID=651017566001&amp;playerKey=AQ~~,AAAAGuNzXFE~,qu1BWJRU7c26MMkbB19ukwmFB5ysvYz5&amp;domain=embed&amp;dynamicStreaming=true" /&gt;&lt;param name="base" value="http://admin.brightcove.com" /&gt;&lt;param name="seamlesstabbing" value="false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="swLiveConnect" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1&amp;isUI=1" bgcolor="#FFFFFF" flashVars="videoId=722717886001&amp;playerID=651017566001&amp;playerKey=AQ~~,AAAAGuNzXFE~,qu1BWJRU7c26MMkbB19ukwmFB5ysvYz5&amp;domain=embed&amp;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="480" height="270" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" allowScriptAccess="always" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Рассказывает про то, как он создавал С++ и про то какой это хороший язык. :-)&lt;br /&gt;Считает, что каждый программист должен знать 5 языков. Страуструп советует: С++ и набрать еще из Java, Python, Ruby, JavaScript, C, C#, какой-нибудь функциональный язык.&lt;br /&gt;&lt;br /&gt;Сказал, что использует ежедневно и Windows, и Linux.&lt;br /&gt;&lt;br /&gt;В конце дает совет С++ разработчикам: использовать все фичи С++, в том числе посмотреть новый стандарт. "Почитайте хорошую книгу и посмотрите не застряли ли вы в 80х или 90х".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5063091833186360842?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5063091833186360842/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5063091833186360842' title='Комментарии: 26'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5063091833186360842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5063091833186360842'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/09/bigthinkcom.html' title='Интервью со Страуструпом на bigthink.com'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-4697480656137452659</id><published>2011-08-30T07:47:00.010+04:00</published><updated>2011-09-20T23:00:02.190+04:00</updated><title type='text'>Мы все еще нанимаем</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Updated 02.09.2011:&lt;/span&gt; Мой бывший сокурсник и нынешний коллега о работе в Майкрософте: &lt;a href="http://kitya.livejournal.com/288903.html"&gt;В рекламе Микрософт я снялся в роли человека с рюкзаком и фотоаппаратом&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Дорогие друзья, хочу вам напомнить, что наши рекрутеры все еще ждут ваши резюме до 31 августа. Полный текст объявления тут: &lt;a href="http://alenacpp.blogspot.com/2011/07/microsoft-advertising.html"&gt;Microsoft Advertising нанимает&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Мне тут задают много вопросов, часть из них повторяется, давайте я напишу на них ответы тут. Сразу оговорюсь, что не могу давать никаких гарантий. Тут я описываю то, что есть у моих коллег и у меня. Официально гарантировать ваши бонусы может только рекрутер.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Мне не ответили, это значит, что я не подхожу?&lt;/span&gt;&lt;br /&gt;Наши рекрутеры обычно отвечают в любом случае, даже если человек не подошел. &lt;strike&gt;Поэтому, если ответа нет больше недели, лучше написать им еще раз.&lt;/strike&gt; Updated 15.09.2011: плохой совет, могут и дольше не отвечать.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;По визе&lt;/span&gt;&lt;br /&gt;Вы получаете H1B визу, по которой можете работать в США на Майкрософт. Переход в другую компанию возможен, но это определенный гемор.&lt;br /&gt;Ваша жена(муж) получает H4 визу и не может работать. &lt;br /&gt;Майкрософт довольно быстро начинает оформление гринкарты. В моем случае где-то через три месяца после начала работы. На сегодня оформить гринкарту для PhD несколько проще чем для магистра, оформить гринкарту для магистра несколько проще чем для бакалавра.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;По медстраховке&lt;/span&gt;&lt;br /&gt;Страховка делается на всю семью. Это большое дело, я вам скажу, медицина тут дорогая. В том числе застрахованы беременность и роды жены. Если вы сама жена, то вам будет интересно узнать, что к вашей возможной беременности отношение исключительно положительное, меня, например, этой фичей медстраховки активно заманивали.&lt;br /&gt;Ребенок, родившийся на территории США, является гражданином США. &lt;br /&gt;Зубы застрахованы не полностью.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Детские сады&lt;/span&gt;&lt;br /&gt;Детские сады хорошие, но платные. У Майкрософта есть какие-то скидки. Есть двуязычные детские сады. Например, основной язык русский, но с ребенком дополнительно много занимаются английским, потому что в школе ему говорить по-английски.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Отпуск и выходные&lt;/span&gt;&lt;br /&gt;Отпуск 3 недели в год, выходных за год получается где-то с 10 дней - это День Независимости и тому подобное. Короче, сильно меньше чем в России.&lt;br /&gt;Суббота и воскресенье выходные как обычно. &lt;br /&gt;Мужчинам предоставляется отпуск по уходу за ребенком (месяц, по-моему).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;По переезду&lt;/span&gt;&lt;br /&gt;Переезд полностью организован и оплачен, выплачиваются подъемные, предоставляется квартира на первое время. Иногда вместо организации переезда и квартиры просто дается мешок денег. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Съём квартиры&lt;/span&gt;&lt;br /&gt;Однобедрумная квартира, это комната и кухня, совмещенная с гостиной, стоит от 1050 в месяц. Коммунальные платежи дороже, чем в России.&lt;br /&gt;Квартира, как правило, сдается c парковочным местом. Иногда за него надо немного доплатить.&lt;br /&gt;Народ живет либо в Редмонде - это деревня в хорошем смысле слова - зелень, зайчики-белочки. Все блага цивилизации присутствуют. &lt;br /&gt;Либо в Беллвью - это небольшой город. Офисы Бинга находятся в Беллвью, можно близко снять квартиру и на работу ходить пешком. В Беллвью дороже. &lt;br /&gt;Либо в Киркленде - он похож на Редмонд.&lt;br /&gt;Очень многие, смотря на карту, видят что там рядом город Сиэтл и думают поселиться там. Вот это плохая идея. Там дороже а, главное, там пробки, по которым очень неудобно добираться на работу. У вас будет уходить на дорогу минут 40, а то и час, вместо 10-20 минут.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Общественный транспорт&lt;/span&gt;&lt;br /&gt;Регулярно ходят автобусы (сотрудникам оплачивают проездной), есть Майкрософтовские шаттлы. Но с машиной, конечно, удобнее. На велосипеде тут ездить неплохо, много велосипедных дорожек.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Налоги&lt;/span&gt;&lt;br /&gt;Налог у вас будет ~23-30 процентов. Налоговая система странная и мутная, причем декларацию заполняет каждый человек индивидуально. Проценты с депозитов облагаются налогом. Даже с тех депозитов, что остались в России. &lt;br /&gt;Майкрософт может дать вам в помощь налоговых консультантов. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Еще в Майкрософте есть своя пенсионная программа, можно в ней поучаствовать.&lt;br /&gt;&lt;br /&gt;В Майкрософте нет ограничений на пользование устройствами других компаний. То есть вы можете спокойно пользоваться своим iPhon'ом (несколько странный для меня, но частый вопрос).&lt;br /&gt;&lt;br /&gt;В Беллвью, Киркленде, Редмонде очень безопасно, это чувствуется, контраст с Москвой разительный.&lt;br /&gt;&lt;br /&gt;Во всех зданиях Майкрософта есть парковки, парковочные места для всех, а не только для особо приближенных.&lt;br /&gt;&lt;br /&gt;Также мне рассказывали, что если ты полгода не находишься на территории России, то тебя снимают с учета в военкомате. Но эта тема от меня далека, так что точно я ничего сказать не могу.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-4697480656137452659?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/4697480656137452659/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=4697480656137452659' title='Комментарии: 94'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4697480656137452659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4697480656137452659'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/08/blog-post_30.html' title='Мы все еще нанимаем'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>94</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7800424455388496269</id><published>2011-08-22T08:21:00.003+04:00</published><updated>2011-08-22T08:30:02.898+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Восемь заблуждений о распределенных вычислениях</title><content type='html'>В 1994 Питер Дейч сформулировал семь заблуждений о распределенных вычислениях, позже, в 1997, Джеймс Гослинг добавил восьмое. Это типичные ошибки, которые допускают специалисты - новички в разработке распределенных систем.&lt;br /&gt;В википедии об этих заблуждениях есть статья &lt;a href="http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing"&gt;Fallacies of Distributed Computing&lt;/a&gt; с ссылками на подробные объяснения. А я, как обычно, изложу их покороче.&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Сеть надежна&lt;/span&gt;&lt;br /&gt;Всё время что-то ломается. Электричество выключается, сетевые провода обрываются, софт глючит.&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Латентность нулевая&lt;/span&gt;&lt;br /&gt;Даже если пропускная способность вашей сети большая, ей нужно какое-то время, чтобы раскочегариться. Поэтому ваше прекрасное плавное AJAX приложение надо тестировать не только в корпоративной сетке.&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Пропускная способность  бесконечна&lt;/span&gt;&lt;br /&gt;Несмотря на то, что пропускная способность растет очень быстро, мы всегда найдем, чем ее загрузить: богатые интерфейсы, IP-телефония и интересные видео высокого качества.&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Сеть безопасна&lt;/span&gt;&lt;br /&gt;Хакеры не дремлют! Повсюду малварь и DDOS атаки.&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Топология никогда не меняется&lt;/span&gt;&lt;br /&gt;Появляются новые устройства, отключаются старые. В случае мобильных устройств топология меняется постоянно. Так что никогда не стоит думать, что передаваемые данные всегда будут ходить одним и тем же путем.&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Администратор всегда только один&lt;/span&gt;&lt;br /&gt;Когда в разработке задействованы больше чем одна компания, а проблема где-то на стыке, решить ее бывает несколько сложнее.&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Цена передачи данных нулевая&lt;/span&gt;&lt;br /&gt;Компьютеры, роутеры, пропускная способность и люди, которые это все обслуживают, стоят денег.&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Сеть однородна&lt;/span&gt;&lt;br /&gt;В сети работают устройства с разными операционными системами, все время появляются новые - тут опять можно вспомнить про мобильные устройства.&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7800424455388496269?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7800424455388496269/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7800424455388496269' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7800424455388496269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7800424455388496269'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/08/blog-post.html' title='Восемь заблуждений о распределенных вычислениях'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7348538359212654480</id><published>2011-08-12T11:00:00.004+04:00</published><updated>2011-08-12T11:22:27.101+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Выступление Джона Кармака на QuakeCon 2011</title><content type='html'>Джон Кармак как обычно выступал на QuakeCon, вот видеозапись его выступления.&lt;br /&gt;&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/4zgYG-_ha28" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Расшифровку я не нашла, похоже ее пока нет.&lt;br /&gt;Для тех, кто не готов слушать его полтора часа, коротенький пересказ:&lt;br /&gt;Много говорил про мегатекстурирование в Rage и вообще про Rage. Как Rage получился ему нравится. &lt;br /&gt;Говорил про статический анализ кода, говорит, что это вещь и надо им пользоваться. Хвалил майкрософтовский статический анализатор кода и вообще: "Microsoft Research has a lot of really smart people and they do a lot of work covering a lot of different areas."&lt;br /&gt;Этот анализатор идет в комплекте с тулзами под XBOX 360, поэтому "если вы разрабатываете под 360 и не используете статический анализ, то вы совершаете ошибку.&lt;br /&gt;Также упомянул &lt;a href="http://www.viva64.com/en/pvs-studio/"&gt;PVS-studio&lt;/a&gt;.&lt;br /&gt;Иногда ему хочется перейти на функциональные языки программирования. На Haskell, например. Но он считает, что тут будут проблемы с прозводительностью, а также с обучением и наймом людей. Поэтому остаемся с С и С++.&lt;br /&gt;Ему 40 лет, ему нравится программировать и у него отлично получается. Лучше чем когда бы то ни было. (Тут сразу вспоминаются мифы про то, что программировать после 30 невозможно.)&lt;br /&gt;&lt;br /&gt;Ну и самое главное - Код Doom 3 будет открыт в этом году. (!)&lt;br /&gt;&lt;br /&gt;Вопросы и ответы после его выступления:&lt;br /&gt;&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/00Q9-ftiPVQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://twitter.com/#!/ID_AA_Carmack"&gt;Твиттер Кармака&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2008/09/rage-tech5.html"&gt;Rage и Tech5&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2008/09/quakecon-2008.html"&gt;Выступление Джона Кармака на QuakeCon 2008&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2005/09/quakecon-2004.html"&gt;Перевод выступления Кармака на Quakecon 2004&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7348538359212654480?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7348538359212654480/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7348538359212654480' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7348538359212654480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7348538359212654480'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/08/quakecon-2011.html' title='Выступление Джона Кармака на QuakeCon 2011'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/4zgYG-_ha28/default.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7998742034231963901</id><published>2011-07-25T06:41:00.008+04:00</published><updated>2011-07-25T22:26:11.294+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Microsoft Advertising нанимает</title><content type='html'>Microsoft Advertising нанимает. В том числе в нашу команду - Delivery Engine Team. Приходите к нам.&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;img style="border:none" src="http://1.bp.blogspot.com/-0uUhf-fQ7X0/TizZE7GTzAI/AAAAAAAAAoI/CAD8u4ug2lA/s400/MSA_logo.png" alt=""id="BLOGGER_PHOTO_ID_5633115912540507138" /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Microsoft Advertising will be hosting a recruiting event in mid-October this year to recruit top talent from all over Russia and neighboring countries specifically focusing on Software Developers of all experience levels who are interested in relocating to the U.S. At this time, we are looking to hire engineers for the roles below. ALL roles require strong coding and development experience. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Software      Development Engineer (SDE)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Software      Development Engineer II (SDE II)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Principal      SDE &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Engineering      Leads &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;b&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;If interested – please send your information and Resume/CV to the Recruiter organizing this event: &lt;/span&gt;&lt;/b&gt;&lt;a href="mailto:eugenial@microsoft.com"&gt;&lt;b&gt;&lt;span style="font-size:9.0pt; line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:#548DD4; mso-themecolor:text2;mso-themetint:153"&gt;eugenial@microsoft.com&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt; by Wednesday, August 31st.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt; We are focused on broad-based software development skills when considering potential candidates (across the board – no specific technology/product niche requirements). If you are strong in C++, C# or JAVA, we would love to hear from you!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;We are looking for strong Software Development Engineers to help us with a number of hard problems in the following areas:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size:9.0pt; line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;The Advertising Applications Team&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;b&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Front End Team&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:Tahoma"&gt;Microsoft Advertising is a unified Ad Monetization platform chartered to monetize the web and other mediums (including devices) by delivering the right ads to right customers at the right time. With the migration of Yahoo advertisers, Microsoft Advertising is now the second largest advertising solution in the world. We are going through an aggressive growth cycle and plan to expand to 35 global markets over the next couple of years. As we onboard thousands of Advertisers into our system, we want to build an intuitive user experience that serves both novice and expert advertisers, an experience that is industry leading and raises the bar for end user productivity. We offer a start-up like atmosphere with tremendous opportunities for fresh perspectives.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;b&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Middle Tier Team&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:Tahoma"&gt;Excited about architecting a truly scalable and performing public web services APIs and middle-tier web services? Excited about having a revenue impact of billions of dollars and contributing to Microsoft's bottom-line? Excited to work in a team that is fueled by passion, creativity and innovation? If your answer is yes then read on!&lt;br /&gt;AdCenter is the ad based monetization platform for Microsoft online business. We are the application development team responsible for developing applications used by advertisers to create and manage their millions of ad campaigns. Challenges are to engineer a highly performing, secure &amp;amp; scalable customer facing web services and backend services that can support millions of transactions per day. We are looking for someone who has strong coding skill in C# /C++ and ability to solve complex problems. Candidate should demonstrate good understanding in SQL fundamentals, transact-SQL and stored procedures. Experience in design and development of SOA principles based services in an online business will be an added advantage.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;b&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Back End Team&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:Tahoma"&gt;We are working to build a world class application platform fuelled by SQL Server and other data processing technologies with unprecedented scale, performance, partitioning and geo distribution with Petabyte size databases. Our OLTP systems have 10K transactions/sec and billions of transactions flowing through the system on a daily basis. You will be working with a highly motivated team on cutting edge software using agile development strategies and rapid release cycles. &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size:9.0pt; line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;The Advertising Delivery Engine Team&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family:Tahoma"&gt;The Ad Delivery Platform team owns the online ad tracking and delivery system. This is a real-time platform that hosts data and code for various auction algorithms for advertisers and content publishers, click-fraud, merchant fraud, content classification, categorization, demographics prediction, search patterns. We are storing and managing TBs of information which enables us to run the auction algorithms and choose the best ads out of hundreds of thousands choices. And we do all that in just a few milliseconds, while sustaining tens of thousands of requests per second, with an uptime of 99.9%. In this environment, only the best designs and architecture will cut it. The amount of data we handle demands building, managing and monitoring a distributed system; ensuring the system health in the presence of individual failures. The Ad Delivery Engine runs 24/7/365.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;u&gt;&lt;span style="font-size:9.0pt; line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;The Revenue and Relevance Team&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style="font-size:9.0pt;line-height:145%; font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-bidi-font-family:Tahoma"&gt;Do you want to work on technology at the heart of online monetization? The Revenue and Relevance team is looking for skilled developers- in particular, someone who has deep knowledge of large-scale data mining, machine learning, and/or quantitative analytics for online systems. As an engineer on this team, you should be able to translate design ideas into practical implementation in code, and to improve and evolve existing systems. A qualified candidate should have a degree in computer science, math, or a statistics degree and experience with software systems and/or applied research in appropriate areas of Computer Science. The algorithms we develop produce the final selection of the ads that are presented to the user upon entering the search query. As such, our algorithms are at the very heart of the Advertising technology that monetizes Bing and Yahoo. Our technology area combines systems, machine learning, data analysis, and economics --- in short, a very technically challenging area. This work makes a direct contribution to Microsoft’s bottom line.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;u&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:Tahoma"&gt;The Business Intelligence Team&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-bidi-font-family:Tahoma"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The Microsoft Advertising Business Intelligence (BI) team in Online Advertising is responsible for providing our customers with high quality analytics and reporting, giving them vital insights into their search advertising on Bing. The Reporting team within BI delivers the Middle Tier, API, and Reporting UI components that connect Microsoft Advertising BI to our customers. We are focused on providing our customers with a great user experience, a robust Middle Tier and API, and a highly reliable operational system. We work simultaneously on delivering a great product for our customers, improving our engineering processes, and growing our SDE’s skills and abilities. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;u&gt;&lt;span style="font-size:9.0pt;line-height:115%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Display&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style="font-size:9.0pt;line-height:115%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size:9.0pt;line-height:115%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Microsoft: Online Services Division: Display Advertising Platform&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:9.0pt;line-height:115%;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Do you want to be part of one of the fastest growing industries in software today?  Do you want to help Microsoft grow a $2 billion per year business to $5 billion?  Interested in developing online services, and being part of an agile development team that ships every week?  If so, then we have the right opportunity for you!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:9.0pt;line-height:115%;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;The Display Advertising group is…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Delivering the technologies running our online display businesses: Atlas Media Console, Microsoft Media Network (MMN), AdManager, RAPT, and AdExpert - which powers the MSN portal and represented partners.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Competing in a segment of the online advertising industry that is seeing explosive innovation and increased competition. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Poised to make rapid advances in online advertising.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Chartered with building the next generation of display advertiser systems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:9.0pt;line-height:115%;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:9.0pt;line-height:115%;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;Our Display Advertising products and services:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Are responsible for monetizing both internal (MSN, Hotmail, MSNBC, etc.) as well as 3&lt;sup&gt;rd&lt;/sup&gt; party display properties.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Handle 700+ billion monthly ad requests across globally dispersed data centers &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;      line-height:145%;mso-list:l0 level1 lfo1;tab-stops:list .5in;background:      white"&gt;&lt;span style="font-size:9.0pt;line-height:145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;      mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;Deliver over $2 billion in annual advertising revenue.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:7.5pt; line-height:145%;background:white"&gt;&lt;span style="font-size:9.0pt;line-height: 145%;font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;color:#555555"&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7998742034231963901?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7998742034231963901/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7998742034231963901' title='Комментарии: 29'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7998742034231963901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7998742034231963901'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/07/microsoft-advertising.html' title='Microsoft Advertising нанимает'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-0uUhf-fQ7X0/TizZE7GTzAI/AAAAAAAAAoI/CAD8u4ug2lA/s72-c/MSA_logo.png' height='72' width='72'/><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7142303943223901113</id><published>2011-07-12T18:22:00.003+04:00</published><updated>2011-07-13T10:23:45.970+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Порядок инициализации статических переменных</title><content type='html'>Порядок инициализации глобальных статических переменных из разных единиц трансляции не определен. По-английский это называется красивым термином &lt;a href="http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.14"&gt;static initialization order fiasco&lt;/a&gt;. Это означает, что если у вас в разных файлах определены глобальные статические переменные x и y, то лучше, чтобы они не зависели одна от другой, а то тут могут быть неприятные сюрпризы.&lt;br /&gt;&lt;br /&gt;Это было скучная теория. А вот грустные примеры из практики. Пишем много-много кода с большим количеством нетривиальных глобальных статических переменных. Они как-то &lt;span style="font-style:italic;"&gt;самопроизвольно&lt;/span&gt; начинают друг от друга зависеть. До поры, до времени компиляция идет таким путем, что они нормально инициализируются. Но в один прекрасный день, после добавления какого-то куска кода, они вдруг начинают инициализироваться в &lt;span style="font-style:italic;"&gt;немного&lt;/span&gt; другом порядке. И это означает, что надо переосмыслить весь проект целиком. Прямо сейчас.&lt;br /&gt;&lt;br /&gt;Updated 12.07.2011:&lt;br /&gt;В комментариях посоветовали два способа продлить агонию, т.е. заставить компилятор инициализировать глобальные переменные в определенном порядке.&lt;br /&gt;Для GCC это &lt;a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html"&gt;init_priority&lt;/a&gt;&lt;br /&gt;Для VC++ &lt;a href="http://altdevblogaday.com/2011/07/07/writing-a-pre-main-function-forcing-global-initialization-order-within-vc/"&gt;#pragma init_seg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S. Для примеров из жизни я обычно не указываю когда и кем были допущены какие-то ошибки. Это информация для того, чтобы научиться, а не для того, чтобы поглумиться. Мы все ошибаемся.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7142303943223901113?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7142303943223901113/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7142303943223901113' title='Комментарии: 20'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7142303943223901113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7142303943223901113'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/07/blog-post_12.html' title='Порядок инициализации статических переменных'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-1982598437581863150</id><published>2011-07-12T08:06:00.001+04:00</published><updated>2011-07-12T08:07:59.890+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Статья "Девушки, которые выбирают программирование"</title><content type='html'>Написала статью для developers.org.ua про ситуацию с привлечением девушек в IT. &lt;br /&gt;&lt;a href="http://www.developers.org.ua/columns/devushki-kotorye-vybirayut-programmirovanie"&gt;Девушки, которые выбирают программирование&lt;/a&gt;. &lt;br /&gt;Она породила немного флейма.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-1982598437581863150?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/1982598437581863150/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=1982598437581863150' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1982598437581863150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1982598437581863150'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/07/blog-post.html' title='Статья &quot;Девушки, которые выбирают программирование&quot;'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8881537567578555269</id><published>2011-06-17T04:56:00.001+04:00</published><updated>2011-06-17T04:58:06.153+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Статья Lessons From FarmVille: How Zynga Uses The Cloud</title><content type='html'>&lt;a href="http://www.informationweek.com/news/global-cio/interviews/229402805"&gt;Lessons From FarmVille: How Zynga Uses The Cloud&lt;/a&gt; - интересный пример использования облачных технологий, что называется, из жизни.&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://twitter.com/#!/aruslan/status/81081662322130944"&gt;aruslan&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8881537567578555269?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8881537567578555269/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8881537567578555269' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8881537567578555269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8881537567578555269'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/06/lessons-from-farmville-how-zynga-uses.html' title='Статья Lessons From FarmVille: How Zynga Uses The Cloud'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7387581513271204697</id><published>2011-06-05T09:54:00.008+04:00</published><updated>2011-06-19T10:47:51.330+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Перевод статьи Summary of the Amazon EC2 and Amazon RDS Service Disruption in the US East Region</title><content type='html'>В конце апреля 2011 года не работал облачный сервис Амазона в США. После того, как амазоновцы всё починили, они выпустили постмортем, в котором рассказали о том, что именно произошло, и что они будут делать, чтобы такое больше не происходило. &lt;br /&gt;Вот он: &lt;a href="http://aws.amazon.com/message/65648/"&gt;Summary of the Amazon EC2 and Amazon RDS Service Disruption in the US East Region&lt;/a&gt;&lt;br /&gt;Я его перевела. Они там налили немного воды, постоянно норовят одну и ту же фразу повторить в нескольких формулировках, это не трудности перевода, оно вот такое. И некоторые детали явно опущены. &lt;br /&gt;Однако этот постмортем полезно почитать, оттуда можно почерпнуть информацию об инфраструктуре облачных сервисов о том, с какого рода проблемами сталкивается распределенный сервис. Да и учиться лучше на чужих ошибках.&lt;br /&gt;Обратите внимание, что они анализируют произошедшее, а не пытаются назначить виноватых.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;HR&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Анализ сбоя сервисов Amazon EC2 и Amazon RDS в восточном регионе США&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Сейчас, когда функциональность всех сервисов полностью восстановлена, мы хотим поделиться с нашими пользователями деталями того, что произошло с вычислительным облаком компании Амазон (“EC2”) на прошлой неделе, рассказать как мы работали над восстановлением наших сервисов и что мы делаем, чтобы предотвратить повторение подобных проблем в будущем. Мы знаем, что многие из наших пользователей серьезно пострадали от этих проблем, и, как обычно в случае серьезных проблем с сервисом, мы намереваемся поделиться деталями событий и рассказать о том, как мы изменим сервис к лучшему для наших пользователей.&lt;br /&gt;&lt;br /&gt;Сбой затронул пользователей облака EC2 в одной из Зон восточного региона США, проблемы были с частью хранилищ из Amazon Elastic Block Store (“EBS”), не обслуживались операции чтения и записи. В этом документе мы будем ссылаться на эти хранилища данных как на "зависшие диски". Те, кто пытался использовать эти сломанные диски, тоже подвисал, когда пытался читать с них или писать на них. Чтобы восстановить эти диски и стабилизировать кластер EBS в этой Зоне, мы практически все время держали отключенными все управляющие API (Create Volume, Attach Volume, Detach Volume, и Create Snapshot) для EBS в пострадавшей Зоне. Дважды в течение первого дня сбоя, деградировавший EBS кластер затронул EBS API, что привело к высокому числу ошибок и задержек при вызовах этих API во всем восточном регионе США. Как и любая сложна операционная проблема, эта была вызвана несколькими причинами, влиявшими друг на друга, и таким образом у нас есть несколько направлений, по которым надо работать, чтобы защитить наш сервис от повторения подобных проблем.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Обзор системы EBS&lt;/span&gt;&lt;br /&gt;Понимание архитектуры EBS поможет вам лучше понять то, что произошло. EBS - это распределенное реплицированное блочное хранилище данных, которое оптимизировано под консистентность и чтение и запись с низкой латентностью из экземпляров EC2. В EBS два главных компонента. (1) Набор кластеров EBS (каждый из которых находится полностью в одной Зоне), который хранит пользовательские данные и обслуживает запросы экземпляров EC2. (2) - набор сервисов панели управления, которая используется для координации запросов пользователей и распространения их на EBS кластеры, которые работают в каждой Зоне каждого Региона.&lt;br /&gt;&lt;br /&gt;Кластер EBS состоит из нескольких узлов EBS. Эти узлы хранят копии данных на дисках EBS и обслуживают запросы на чтение и запись, поступающие от экземпляров EC2. Для лучшей доступности и надежности, данные с дисков EBS реплицированы на несколько узлов EBS. Каждый узел EBS использует стратегию быстрого преодоления отказа, базирующуюся на технологии точка-точка, которая агрессивно создает новые реплики, если хотя бы одна из копий не синхронизирована или недоступна. Узлы кластера EBS соединены друг с другом с помощью двух сетей. Первая сеть с высокой пропускной способностью используется для обычных операций, т.е. для всех соединений с другими узлами EBS, с экземплярами EC2 и с сервисами панели управления EBS. Вторая сеть предназначена для репликации, это сеть с более низкой пропускной способностью, используется как запасная и обеспечивает узлам EBS возможность надежно соединяться с другими узлами кластера EBS и предоставляет дополнительную пропускную способность для репликации данных. Эта сеть не предназначена для того, чтобы работать со всем трафиком первой сети, она нужна для повышения надежности соединения между узлами EBS внутри кластера EBS.&lt;br /&gt;&lt;br /&gt;Когда один узел теряет соединение с другим узлом, на который он копирует данные, он думает, что тот другой узел сломан. Чтобы сохранить надежность, он должен найти новый узел, на который он может реплицировать данные (этот процесс называется "перезеркалить"). Как часть процесса перезеркаливания, узел EBS ищет в своем кластере EBS другой узел с достаточными количеством свободного места, устанавливает с ним связь и передает данные. В нормально работающем кластере процесс поиска места для новой реплики занимает миллисекунды. В процессе перезеркаливания данных все узлы, которые имеют копии данных, будут хранить их до тех пор пока они не получат подтверждение, что другой узел теперь владеет их порцией. Это предоставляет новый уровень защиты от потери данных пользователей. Также, когда данные на диске пользователя перезеркаливаются, доступ к данным блокируется до тех пор пока система не идентифицирует новую первичную (или доступную для записи) реплику. Это требуется для обеспечения консистентности данных на диске EBS в случае возникновения ошибок. Пока происходит этот процесс, с точки зрения экземпляра EC2, пытающегося делать операцию ввода-вывода на диск, диск кажется "зависшим".&lt;br /&gt;&lt;br /&gt;В дополнение к кластеру EBS, есть набор сервисов панели управления, который принимает запросы пользователя и передает их на нужный кластер EBS. Есть один набор сервисов панели управления EBS на один EC2-регион, но сама панель управления распределена по Зонам, чтобы обеспечить доступность и устойчивость к сбоям. Эти сервисы панели управления также являются авторитетами для кластеров EBS, когда те выбирают первичную реплику для каждого диска кластера (для консистентности, у каждого диска в каждый момент времени должна быть только одна первичная реплика). В панели управления несколько сервисов, мы будем на них на все ссылаться как на "панель управления EBS". &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Первый сбой&lt;/span&gt;&lt;br /&gt;21-го апреля в 0:47 по дневному тихоокеанскому времени в одной из Зон восточного региона США была произведена смена настроек сети, это была часть обычной работы по масштабированию AWS. Целью смены настроек было увеличение пропускной способности первичной сети. Один из стандартных шагов смены настроек - убрать трафик с одного из роутеров с резервированием в первичной сети EBS, чтобы можно было апгрейдиться. Переключение трафика было произведено некорректно и вместо того, чтобы перенаправить трафик на другой роутер в первичной сети, трафик был перенаправлен в сеть EBS с меньшей пропускной способностью. Для части кластера EBS в пострадавшей Зоне это означало, что у него теперь нет ни правильно функционирующей первичной сети, ни вторичной сети, потому что трафик был специально перенаправлен из первичной сети, а вторичная сеть не могла справиться со всем тем трафиком, что в нее пришел. В результате многие узлы EBS в пострадавшей Зоне были полностью изолированы от других узлов кластера EBS. В отличие от случая нормального прерывания работы сети, это изменение отключило одновременно и первичную, и вторичную сети, затронутые узлы были полностью изолированы друг от друга.&lt;br /&gt;&lt;br /&gt;Когда случилась эта проблема со связностью сети, большое число узлов EBS на одном кластере EBS потеряло связь со своими репликами. Когда все вернули обратно и связность была восстановлена, эти узлы тут же начали поиск доступного серверного пространства в кластере EBS, куда бы они могли перезеркалить данные. Повторимся, что в нормально функционирующем кластере это занимает миллисекунды. В данном же случае, из-за того, что одновременно было затронуто много дисков, свободное место на кластере EBS быстро закончилось, многие узлы так и остались зависшими, они продолжали в цикле искать в кластере свободное место. Это быстро привело к "шторму перезеркаливания": большое число дисков зависли, в то время как узлы искали в кластере свободное место, которое им было нужно для реплик. В этот момент примерно 13% дисков в пострадавшей зоне были повисшими.&lt;br /&gt;&lt;br /&gt;После вышеописанной цепочки событий деградация кластера EBS немедленно отразилась на панели управления EBS. Когда кластер EBS входит в шторм перезеркаливания и расходует все доступное свободное место, кластер больше не может отвечать на вызов API "CreateVolume". Так как панель управления EBS (а в особенности вызов функции API CreateVolume) была сконфигурирована  с большим таймаутом, эти медленные API вызовы начали накапливаться, что привело к голоданию потоков в панели управления EBS. В панели управления EBS есть региональный пул потоков, которые можно использовать для обслуживания запросов. Когда все эти потоки были переполнены большим числом накопившихся запросов, панель управления EBS не могла больше обслуживать API запросы и начала также отказывать API запросам из других Зон этого Региона. 21 апреля в 2:40 команда накатила изменение, которое отключало все новые запросы CreateVolume в пострадавшей Зоне, и к 2:50 уровень ошибок и задержек для всех вызовов API, относящихся к EBS, был восстановлен.&lt;br /&gt;&lt;br /&gt;EBS кластер продолжил деградировать по двум причинам. Во-первых, узлы, которые не могли найти новые узлы, не прекращали поиски достаточно быстро, когда они не могли найти свободное место. Вместо этого они продолжали искать. Также в коде узлов EBS было состояние гонки, которое, с очень низкой вероятностью, приводило к их отказу когда они последовательно закрывали большое количество запросов на копирование. На нормально работающем кластере EBS эта проблема привела бы к небольшому числу падений узлов, если бы вообще к ним привела. Однако, во время шторма перезеркаливания количество попыток соединения было очень высоко, и эта проблема начала проявляться чаще. Узлы начали отказывать из-за этого бага, это привело к тому, что еще большему количеству дисков потребовалось перезеркаливание. Это привело к увеличению числа зависших дисков и добавило еще запросов к шторму перезеркаливания.&lt;br /&gt;&lt;br /&gt;К 5:30 увеличилось количество ошибок и задержек для вызовов EBS API в Регионе. Когда данные с дисков должны быть перезеркалены, начинаются переговоры между экземплярами EC2, узлами EBS с данными и панелью управления EBS (которая выступает главной в этом процессе), так что только одна копия данных является первичной репликой и экземпляр EC2 распознает ее как место, куда надо слать все запросы на доступ. Это обеспечивает консистентность дисков EBS. По мере того, как все больше узлов EBS начали отказывать из-за состояния гонки, описанного выше, объем переговоров с панелью управления EBS увеличился. Так как данные не были успешно перезеркалены, число подобных вызовов увеличивалось по мере прихода новых запросов. Нагрузка привела к отказу панели управления EBS и это опять затронуло вызовы EBS API по всему Региону. В 8:20 команда начала отключать все соединения между деградировавшим кластером EBS в пострадавшей Зоне и панелью управления EBS. Несмотря на то, что это заблокировало все доступы EBS API в Зоне (мы обсудим восстановление в следующей секции), в целом задержки и уровень ошибок вернулись к нормальным для EBS API данного Региона.&lt;br /&gt;&lt;br /&gt;Подавляющее большинство дисков деградировавшего кластера EBS все еще функционировали нормально и нашей целью было восстановить кластер без того, чтобы затронуть еще больше дисков. В 11:30 команда нашла как прекратить бессмысленные попытки серверов EBS из деградировавшего кластера EBS связаться друг с другом (в тот момент на них все равно не было свободного места), не затрагивания при этом другие важные коммуникации между узлами кластера. После того, как это изменение было произведено, кластер прекратил деградировать дальше и ушел риск того, что еще какие-то диски повиснут. Перед тем как это изменение было произведено, серверы, отказавшие по причине состояния гонки, добавили еще 5% к общему числу зависших дисков в Зоне. Однако, хотя и медленно, но перезеркаливание дисков продолжилось, по мере того как место понемногу освобождалось и некоторые зависшие диски отвисли. Общим результатом того изменения было то, что общее количество зависших дисков в пострадавшей Зоне стало 13%.&lt;br /&gt;&lt;br /&gt;До полудня 21 апреля пользователи замечали возросшее число ошибок при попытках запустить новые EBS-бакеты экземпляров EC2 в других Зонах, не в той, которая пострадала. Это продолжалось в течение примерно 11 часов, от начала отказа до полудня 21 апреля. Кроме периодов проблем с API, описанных выше, пользователи могли создать EBS-бакеты экземпляров EC2, но количество ошибок и задержки было больше обычного. Новые запуски EBS-бакетов зависят от одного API в панели управления EBS, которое нужно для того, чтобы подключать новые образы дисков. Изначально наша система мониторинга недостаточно хорошо умела работать с этим вызовом API панели управления EBS и ошибки запусков были закрыты общей ошибкой деградировавшего кластера EBS. В 11:30 изменение в панели управления EBS починило это проблему и задержки и уровень ошибок для новых EBS-бакетов экземпляров EC2 быстро снизились и вернулись к почти нормальному уровню к полудню.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Восстановление EBS в затронутой Зоне&lt;/span&gt;&lt;br /&gt;К 12:04 21 апреля сбой был изолирован в одной пострадавшей Зоне и деградировавший кластер EBS был стабилизирован. Во всех остальных зонах API работали хорошо и больше не было новых зависших дисков. Теперь нашей целью было завершить восстановление. Примерно 13% дисков в Зоне оставались зависшими и API EBS были отключены в пострадавшей Зоне. Основным приоритетом стало подключение и выведение онлайн дополнительных объемов для хранения данных, что позволило бы зависшим дискам найти достаточно места для создания новых реплик.&lt;br /&gt;&lt;br /&gt;Перед командой стояло две проблемы, которые не давали подключить дополнительные объемы. Первая, когда узел отказывает, кластер EBS не будет использовать отказавший узел до тех пор, пока каждая реплика не перезеркалена успешно. Это было осознанное решение, оно нужно было для того, чтобы мы могли восстановить данные, если кластер перестает вести себя как спроектирован. Так как мы не хотели использовать отказавшие диски в других целях до тех пор пока мы не будем уверены, что мы сможем восстановить данные пользователей, оказавшиеся на отказавших узлах, команде пришлось установить много новых дисков, чтобы заменить те отказавшие диски. Это довольно долгий процесс, надо было физически собрать все лишние диски по всему восточному региону США и установить их на деградировавший EBS кластер. И вторая: так как были произведены изменения с целью уменьшить количество коммуникаций между узлами, используемые этими узлами для того, чтобы найти свободное место (что в итоге стабилизировало кластер, как описано выше) у команды были проблемы с добавлением новых дисков в кластер. Команде пришлось очень аккуратно вносить изменения в каналы коммуникации, чтобы новые серверы заработали, не загружая при этом старые запросами, которые те все равно не могли бы обслужить. Этот процесс занял больше времени, чем мы ожидали, так как нашей команде пришлось решить ряд проблем при работе с отключенными коммуникациями. Примерно в два часа ночи 22-го апреля команда смогла добавить значительные дисковые объемы и начала просматривать невыполненные запросы на репликацию. Диски консистентно восстановились в течение последующих девяти часов и все, кроме 2.2% дискового объема затронутой Зоны были восстановлены к 12:30 22-го апреля. Пока восстановленные диски полностью реплицировались, не все они мгновенно становились отвисшими с точки зрения прикрепленных экземпляров EC2, потому что некоторые из них были заблокированы, ожидая пока можно будет подключиться к панели управления EBS, чтобы можно было переподключиться к экземпляру EC2 и выбрать новую копию для записи.&lt;br /&gt;&lt;br /&gt;После того, как к кластеру были добавлены достаточные объемы, команда начала работать над тем, чтобы настроить доступ API к панели управления EBS затронутой Зоны и восстановить доступ к оставшимся зависшим дискам. Там накопилось много запросов на смену состояний, которые надо было передать из деградировавших узлов EBS на панель управления EBS и наоборот. Это пришлось делать постепенно, чтобы это не отразилось на восстановленных дисках и на панели управления EBS. Сначала мы пытались включить API в пострадавшей Зоне путем передачи этих состояний таким образом, чтобы не перегрузить панель управления EBS. Мы также начали создавать отдельный экземпляр панели управления EBS, который был бы отделен от пострадавшей Зоны и чтобы тогда передача состояний не отражалась на других Зонах Региона. Мы быстро настроили каналы, но не смогли передать через них правильные запросы и стабилизировать систему. С вечера 22 апреля по утро 23-го мы работали над улучшением этих каналов. К утру субботы мы закончили нашу работу над отдельный панелью управления EBS и над каналами. Первые тесты трафика по направлению к панели управления EBS были успешными и вскоре после 11:30 23-го апреля мы начали потихоньку обрабатывать накопившиеся запросы. К 15:35 мы закончили настраивать связь между панелью управления EBS и деградировавшей Зоной. Это позволило большинству оставшихся дисков, которые все еще ждали ответа панели управления EBS, определить в какую именно реплику будет производиться запись, и прикрепленные к ним экземпляры EC2 могли опять их использовать. В 18:15 23-го апреля, API доступ к ресурсам EBS в пострадавшей Зоне был восстановлен.&lt;br /&gt;&lt;br /&gt;С открытием API доступа к пострадавшей Зоне, API теперь работали во всех Зонах Региона. Восстановление оставшихся 2.2% пострадавших дисков потребовало больше ручной работы. В самом начале команда скопировала эти диски в бэкапы S3, это было сделано в качестве меры предосторожности, чтобы не потерять информацию. К тому моменту, команда закончила разрабатывать и тестировать код, который восстанавливал данные из этих копий и запустила процесс восстановления на ночь. в 12:30 24 апреля мы закончили работы с данными, которые мы таким образом могли восстановить и восстановили все, кроме 1.04% пострадавших дисков. В этот момент команда начала изучать оставшиеся диски, которые показывали хардварные ошибки, и с которых мы не могли снять копии. В 15:00 команда начала восстанавливать и их. В итоге, 0.07% дисков в пострадавшей Зоне не могли быть восстановлены в консистентном состоянии.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Последствия для Реляционных сервисов базы данных Amazon (RDS)&lt;/span&gt;&lt;br /&gt;Проблемы возникли не только с экземплярами EC2, также был затронут реляционный сервис баз данных (RDS). RDS хранит в EBS базы данных и логи, и в результате часть баз данных RDS, хостящихся в пострадавшей Зоне, была недоступна.&lt;br /&gt;&lt;br /&gt;Пользователи могут выбирать, работать ли им с экземплярами RDS в одной Зоне ("одна-AZ") или копировать на несколько Зон ("мульти-AZ"). Сбои в Зоне затрагивают экземпляры базы данных типа одна-AZ. В данном случае, экземпляр базы данных типа одна-AZ был бы поврежден, если завис хотя бы один из дисков EBS, на которые он ссылается. В первой пострадавшей зоне, в пике 45% одна-AZ экземпляров были затронуты зависшим вводом-выводом. Пострадавшая часть RDS несколько больше пострадавшей части EBS, потому что экземпляр базы данных RDS может использовать несколько дисков EBS. Это увеличивает суммарную пропускную способностью ввода-вывода базы данных в нормальных условиях, но это же и означает, что зависший ввод-вывод на одном любом диске базы данных типа одна-AZ может сделать ее нерабочей до тех пор, пока диск не восстановлен. Процент зависших баз типа одна-AZ в пострадавшей Зоне постепенно уменьшался по мере восстановления EBS. Процент зависших экземпляров базы данных типа одна-AZ в пострадавшей Зоне снизился до 41.0% через 24 часа, до 23.5% через 36 часов, до 14.6% через 48 часов. В течение выходных все восстановилось до конца. Несмотря на то, что мы восстановили практически все пострадавшие базы данных, 0.4% экземпляров баз данных типа одна-AZ в пострадавшей Зоне располагались на диске EBS, который восстановить было нельзя. Для этих баз данных пользователи, у которых автоматический бэкап был включен (а он включен по умолчанию), имели опцию начать восстановление базы данных из бэкапа.&lt;br /&gt;&lt;br /&gt;Базы данных типа мульти-AZ более устойчивы к сбоям, поскольку синхронно копируют данные между двумя репликами базы данных в различных Зонах. В случае, если первичная реплика недоступна, RDS автоматически это определяет и переключается на вторичную реплику. 2.5% экземпляров баз данных типа мульти-AZ в восточном регионе США не смогли автоматически переключиться, после того как завис ввод-вывод. Основной причиной этого было то, что отключение сети (той, что соединяла первичную от вторичную реплики) и произошедшее сразу после этого зависание ввода-вывода на первичной реплике вызвали к жизни ранее не замеченный нами баг. Этот баг оставлял первичную реплику в изолированном состоянии, в таком случае наш мониторящий агент не мог безопасно переключиться на вторичную реплику без риска потери данных, здесь требовалось вмешательство человека. Сейчас мы активно работаем над починкой этого бага.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Предотвращение повторения подобного&lt;/span&gt;&lt;br /&gt;Триггером этого события была смена конфигурации сети. Мы проверим наш процесс смены конфигурации сети, по максимуму автоматизируем его, чтобы подобные ошибки не повторялись в будущем. Мы также сфокусируем наши усилия на разработке софта и сервисов, устойчивых к ошибкам. Большинство работ по результатам произошедшего будут направлены на то, чтобы защитить сервис EBS от последствий подобных отказов в будущем.&lt;br /&gt;&lt;br /&gt;Мы внесем изменения, направленные на то, чтобы кластер не мог войти в шторм перезеркаливания. Если бы у кластера EBS было больше свободного места, он бы быстрее справился с большим количеством запросов на перезеркаливание и не вошел бы в шторм перезеркаливания. Теперь мы знаем, какой объем свободного места нужен для таких крупных операций по восстановлению и мы переделаем наши планы по наращиванию объемов и систему оповещения таким образом, чтобы у нас были дополнительные свободные объемы на случай таких крупных ошибок. Мы уже значительно нарастили наши объемы и мы добавим еще больше в ближайшие несколько недель. Мы также пересмотрим нашу логику повторных запросов к узлам EBS, чтобы удержать кластер от вхождения в шторм перезеркаливания. Когда случится крупное отключение, наша логика повторных запросов будет отказывать более агрессивно и фокусироваться на восстановлении связи с прежними репликами, вместо того, чтобы продолжать бессмысленно искать узлы, на которые можно перезеркалиться. Мы начали работать над этими изменениями и мы можем справиться с основной причиной шторма перезеркаливания путем изменения нашей логики. Наконец, мы нашли причину состояния гонки, которая привела к отказам узлов EBS. Мы починили этот баг, протестируем код и выкатим на наши кластеры в течение ближайших двух недель. Таким образом, мы трижды защитим себя от повторения подобного.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Эффект на несколько Зон&lt;/span&gt;&lt;br /&gt;EC2 предоставляет два важных базовых блока доступна: Регионы и Зоны. Согласно дизайну, Регионы совершенно отдельные инсталляции нашей инфраструктуры. Регионы полностью изолированы друг от друга и предоставляют самый высокий уровень независимости. Многие пользователи используют несколько Регионов EC2, чтобы получить устойчивость к ошибкам самого высокого уровня. Однако, если вы хотите переместить данные между Регионами, вам надо делать это самостоятельно с помощью ваших приложений, так как мы не копируем данные между Регионами по запросам пользователей. Вы также должны использовать различные наборы API для управления каждым Регионом. Регионы являются важными базовыми единицами доступности для пользователей, но со стороны разработчиков приложений требуются дополнительные усилия, чтобы использовать преимущества этой изоляции. Мы предоставляем Зоны внутри Регионов, чтобы помочь разработчикам легко строить приложения, устойчивые к ошибкам. Физически и логически инфраструктуры Зон отделены друг от друга, таким образом, чтобы они были независимыми и при этом предоставляли пользователям высокоскоростную сеть с низкой латентностью, простые пути репликации данных и полный и непротиворечивый набор управляющих API. Например, с приложений, запущенных внутри Региона, пользователи могут снимать EBS снэпшоты, которые могут быть восстановлены в любой Зоне и могут программно манипулировать EC2 и EBS ресурсами используя одинаковые API. Мы предоставляем эту слабую связность, потому что она позволяет пользователям легко строить высоконадежные приложения.&lt;br /&gt;&lt;br /&gt;Случившиеся привело к двум последствиям. Во-первых, это отразилось на приложениях, запущенных в пострадавшей Зоне, потому что пострадавшие диски EBS зависли. Архитектура сервисов EBS устроена таким образом, что влияние на запущенные образы было ограничено Зоной. В результате пользователи, которые пишут свои приложения таким образом, чтобы использовать несколько Зон, практически ничего не заметили. Некоторые пользователи сообщали, что у них зависли диски EBS в других Зонах, не в той, которая пострадала в четверг. Наша система мониторинга явно показывает эффект шторма перезеркаливания на панели управления EBS и на дисках в пострадавшей Зоне, она не показывала значительного влияния этого на диски EBS в других Зонах Региона. Хотя мы действительно видим, что в не пострадавших Зонах было чуть больше зависших дисков чем обычно, но все равно это очень малое число. Пиковое значение зависших дисков в процентах, которое мы видели в Регионе за пределами пострадавшей Зоны было менее 0.07%. Мы расследовали число это зависших дисков. Чуть большее, чем обычно, число зависших дисков в этих не пострадавших зонах было вызвано задержками в восстановлении из нормального перезеркаливания, потому что возросла латентность и возросло число ошибок в панели управления EBS, как это описано выше; всегда есть какое-то число процессов перезеркаливания в каждый момент времени. Также мы думаем, что работа, описанная ниже, направленная на то, чтобы изолировать панель управления EBS, сможет предотвратить даже такой, не намного больше, чем обычно, уровень ошибок, если случится что-нибудь подобное.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Хотя приложения пользователей, которые использовали преимущества архитектуры нескольких Зон (мульти-AZ), не пострадали от этого сбоя, проблемы с панелью управления EBS повлияли на возможность создавать диски EBS в Регионе и управлять ими. Одно из преимуществ EC2 - это возможность быстро заменять сломанные ресурсы. Когда панель управления EBS деградировала до такого состояния, что стала недоступна, пользователям с пострадавшими дисками стало сложно заменять их диски или загруженные с EBS образы в других, здоровых, Зонах. Наша главная задача - предотвратить подобное в дальнейшем. &lt;br /&gt;&lt;br /&gt;Несмотря на то, что мы предоставляем нашим пользователям определенный уровень слабой связности, нашей целью было сделать Зоны неотличимыми от совершенно независимых. Наша панель управления EBS разработана таким образом, чтобы пользователи могли иметь доступ к ресурсам в нескольких Зонах, при этом быть устойчивыми к ошибкам в отдельных зонах. Это событие показало нам, что мы должны и в дальнейшем работать над достижением этой цели. Мы сделаем три вещи, которые предотвратят влияние отдельных Зон на панель управления EBS нескольких Зон. Первое, что мы сделаем, - мы немедленно улучшим нашу логику таймаутов, чтобы предотвратить исчерпание потоков, когда один из кластеров в Зоне слишком долго обрабатывает запросы. Это могло бы предотвратить проблемы с API c 0:50 до 2:40 21 апреля. Чтобы решить вторую проблему, возникшую с API, мы добавим к нашей панели управления EBS возможность знать больше о Зонах и разумно сбрасывать лишнюю нагрузку, когда превышена максимальная нагрузка. Подобное уже есть в нашей системе. Также мы хотим перенести кое-что из нашей панели управления EBS в наши сервисы кластеров EBS. Перенеся часть функциональности из панели управления EBS и развертывая эти сервисы на кластерах EBS (которые работают в той же Зоне, что и кластер EBS, который они поддерживают), мы сможем предоставить лучшую изоляцию Зон от панели управления EBS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Упростить использование преимуществ нескольких Зон&lt;/span&gt;&lt;br /&gt;Мы также намерены упростить возможность использования нескольких Зон. Во-первых, мы предложим несколько Зон для всех наших сервисов, включая виртуальное приватное облако Amazon (VPC). Сегодня пользователи VPC имеют доступ только к одной Зоне. Мы пересмотрим наших планы и дадим пользователям VPC доступ к нескольким Зонам как можно быстрее. Таким образом пользователи VPC смогут строить приложения с выским уровнем доступности используя несколько Зон, точно так же как это  EC2 пользователи, не использующие VPC.&lt;br /&gt;&lt;br /&gt;Также мы обнаружили, что нам следуем упросить процесс выкатывания приложений на мульти-AZ. Некоторые приложения пользователей (или значительные части этих приложений, например, базы данных), выкладываются только в одной Зоне. Образы других приложений рассредоточены по нескольким Зонам, но все же имеют единые точки отказа в одной Зоне. В таких случаях расходы на оперирование могут негативно сказаться на досупности приложения, в то время как при правильном процессе выкладки на несколько зон приложение должно продолжать работать как будто ничего не случилось. Мы предоставим пользователям более хорошие средства работы по созданию мульти-AZ приложений, и падение всей Зоны целиком не отразится на доступности приложений. Мы знаем, что должны помочь пользователям разрабатывать их приложения используя обычные паттерны проектирования. В данном случае, некоторые пользователи серьезно пострадали, в том время как у других какие-то ресурсы пострадали, но при этом на их приложениях это практически никак не отразилось.&lt;br /&gt;&lt;br /&gt;С тем, чтобы продолжить более тесно работать с нашими пользователями и партнерами над лучшими практиками архитектуры в облаке, мы организуем ряд вебинаров стартуя со второго мая. Первая тема, которую мы затронем, будет "дизайн приложений, устойчивых к ошибкам", "архитектура в облаке", и "лучшие практики веб-хостинга". Мы собираемся добавить больше тем в течение ближайших недель и мы продолжим делать это часто и постоянно. В течение ближайших двух недель вебинары будут проводиться по нескольку раз за день для наших пользователей, работающих в различных часовых поясах. Отдельно мы проведем значительное количество вебинаров, посвященных ответам на ваши вопросы. Также будут организованы дискуссии для наших пользователей и партнеров. Это вебинары, а также серия статей по лучшим практикам дизайна архитектуры для AWS облака, доступны &lt;a href="http://aws.amazon.com/architecture/"&gt;на нашем AWS сайте в разделе Архитектура&lt;/a&gt;. Мы также продолжим предоставлять дополнительные сервисы такие как S3, SimleDB и мульти-AZ RDS, которые предоставляют автоматическую балансировку для мульти-AZ таким образом, что пользователи могут получать пользу от нескольких Зон не делая ничего особенного сложного в их приложениях. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Сделать восстановление быстрее&lt;/span&gt;&lt;br /&gt;Мы займемся над улучшением визуализации, контроля и автоматизации восставновления дисков в кластере EBS. У нас есть набор утилит для управления кластером EBS, но те утилиты, что наша команда использовала для восстановления кластера, будут встроенны напрямую в узлы EBS. Мы также автоматизируем модели восстановления, которые мы использовали для восстановления различных дисков. Это бы сэкономило нам много времени во время восстановления. Мы также посмотрим что можно сделать, чтобы диск продолжал функционировать в периоды деградации кластера, включения возможность снимать полную копию с зависшего диска. Если бы у пользователей была такая возможность, они могли бы гораздо проще восстановить их приложения в других Зонах Региона.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Улучшить коммуникации и утилиты по мониторингу состояния сервисов во время различных происшествий&lt;/span&gt;&lt;br /&gt;В дополнение к различным техническим улучшениям по результатам произошедшего, мы также решили кое-что улучшить с общении с пользователями. Мы хотим сделать наше общение с пользователями более частым и содержащим большем информации. Мы понимаем, что во время сбоя пользователи хотят знать о происходящем настолько подробно, насколько это возможно: как долго будет занимать починка и что мы делаем, чтобы предотвратить повторение подобного. Большая часть команды AWS, включая всех старших специалистов, была вовлечена в процесс исследования и починки. Изначально мы были сфокусированы на том, чтобы продумать как решить текущие проблемы пользователей, а не над тем, чтобы определить основные причины того, что случилось. Мы думали, что сфокусировать наши усилия на решении, а не на проблеме, правильнее по отношению к нашим пользователям, и это помогло нам быстрее вернуть сервисы в нормальное состояние. Мы оповещали пользователей, когда у нас была новая информация и когда мы были уверены, что это информаци верна, что это не догадки, мы знали, что как только мы вернем все наши сервисы обратно в нормальное состояние, мы немедленно приступим к фазе сбора информации и анализу, чтобы сделать вот этот постмортем.&lt;br /&gt;&lt;br /&gt;Короче говоря, мы думаем, что можем достигнуть улучшения в этих областях. Мы переключились на более регулярное оповещение в течение произошедшего и планируем и дальше оповещать с той же частотой. Кроме того, мы работаем над тем, чтобы укомплектовать наш штат технической поддержки более разнообразно, чтобы в случае повторение подобного можно было предоставить важную информацию раньше и при этом не пускаться в догадки.&lt;br /&gt;&lt;br /&gt;Мы также могли бы лучше рассказывать пользователzм о том, пострадали ли их ресурсы, мы также разрабатываем утилиты для разработчиков, чтобы они могли посмотреть с помощью вызовов API, все ли в порядке с их экземплярами.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Компенсация пострадавшим пользователям&lt;/span&gt;&lt;br /&gt;Пользователям, у которых в пострадавшей Зоне были диски EBS или базы данных RDS, вне зависимости от того, пострадали ли их ресурсы и приложения или нет, мы предоставляем десятидневный кредит равный 100% использования их дисков EBS, образов EC2 и баз данных RDS, которые были запущены в затронутой Зjне. Эти пользователи не должны ничего делать, чтобы получить этот кредит, он будет автоматически включен в их следующий счет AWS. Пользователи могут узнать, будет ли им предоставлен этот кредит или нет, залогинившись в их аккаунт AWS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;В заключение&lt;/span&gt;&lt;br /&gt;В заключение мы хотим принести свои извинения. Мы знаем, что наши сервисы важны для бизнеса наших пользователей и мы сделаем выводы из это происшествия и это направит наши усилия по улучшению наших сервисов. Как и в случае любого серьезного сбоя, мы потратим много часов в ближайшие дни и недели, чтобы лучше понять детали произошедшего, чтобы понять какие именно изменения надо внести, чтобы улучшить наши сервисы и процессы.&lt;br /&gt;&lt;br /&gt;Искренне ваша,&lt;br /&gt;команда AWS&lt;br /&gt;&lt;HR&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud"&gt;Amazon Elastic Compute Cloud&lt;/a&gt;&lt;br /&gt;&lt;a href="http://highscalability.com/blog/2011/6/9/retrospect-on-recent-aws-outage-and-resilient-cloud-based-ar.html"&gt;Retrospect on recent AWS outage and Resilient Cloud-Based Architecture&lt;/a&gt; &lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2011/01/skype.html"&gt;Почему в конце декабря не работал Skype &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/notes/facebook-engineering/more-details-on-todays-outage/431441338919"&gt;Facebook - More Details on Today's Outage&lt;/a&gt; - про отключение Фейсбука в сентябре 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7387581513271204697?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7387581513271204697/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7387581513271204697' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7387581513271204697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7387581513271204697'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/06/summary-of-amazon-ec2-and-amazon-rds.html' title='Перевод статьи Summary of the Amazon EC2 and Amazon RDS Service Disruption in the US East Region'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8620119558885315636</id><published>2011-05-09T22:44:00.002+04:00</published><updated>2011-05-09T22:48:25.206+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Радио-Т 238</title><content type='html'>Внезапно поучаствовала в подкасте Радио-Т. &lt;a href="http://new.radio-t.com/2011/05/238_08.html"&gt;Выпуск 238&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- Алён, приходи к нам!&lt;br /&gt;- Эмм, ну хорошо, давай...&lt;br /&gt;- Отлично, ты в эфире через полчаса!&lt;br /&gt;&lt;br /&gt;На мой взгляд, самое интересное там - это рассказ &lt;a href="http://twitter.com/#!/umputun"&gt;Umputun&lt;/a&gt;'а про использование &lt;a href="http://en.wikipedia.org/wiki/Protocol_Buffers"&gt;Protocol Buffers&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8620119558885315636?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8620119558885315636/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8620119558885315636' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8620119558885315636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8620119558885315636'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/05/238.html' title='Радио-Т 238'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7293571255780299211</id><published>2011-04-18T10:16:00.002+04:00</published><updated>2011-04-18T10:21:36.482+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Inception in C</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-ZoEiw10rAMw/TavYUnUtMDI/AAAAAAAAAnk/DMsqhB3-w-8/s1600/foo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 241px; height: 400px;" src="http://1.bp.blogspot.com/-ZoEiw10rAMw/TavYUnUtMDI/AAAAAAAAAnk/DMsqhB3-w-8/s400/foo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5596804810602786866" /&gt;&lt;/a&gt;&lt;br /&gt;via &lt;a href="http://m0riarty.ya.ru/"&gt;Moriarty&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7293571255780299211?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7293571255780299211/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7293571255780299211' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7293571255780299211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7293571255780299211'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/04/inception-in-c.html' title='Inception in C'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ZoEiw10rAMw/TavYUnUtMDI/AAAAAAAAAnk/DMsqhB3-w-8/s72-c/foo.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-6288949190364322582</id><published>2011-03-16T22:11:00.002+03:00</published><updated>2011-03-16T22:14:34.292+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Доклад Handling ridiculous amounts of data with probabilistic data structures</title><content type='html'>Полное название доклада &lt;a href="http://pycon.blip.tv/file/4881076/"&gt;PyCon 2011: Handling ridiculous amounts of data with probabilistic data structures&lt;/a&gt;. Но вообще это об использовании &lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post_27.html"&gt;фильтра Блума&lt;/a&gt; в биоинформатике. Всего 20 минут.&lt;br /&gt;&lt;embed src="http://blip.tv/play/g4VigquCSwI" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-6288949190364322582?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/6288949190364322582/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=6288949190364322582' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6288949190364322582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6288949190364322582'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/03/handling-ridiculous-amounts-of-data.html' title='Доклад Handling ridiculous amounts of data with probabilistic data structures'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-6852708639623581210</id><published>2011-03-12T11:21:00.003+03:00</published><updated>2011-03-12T11:27:35.144+03:00</updated><title type='text'>Начались продажи iPad2</title><content type='html'>Пока в Москве была ночь... у нас тут был день! И начались продажи iPad2.&lt;br /&gt;&lt;br /&gt;Мой коллега Артём не поленился сходить в соседний магазин и заснять толпы людей, алчущих iPad2. &lt;br /&gt;&lt;br /&gt;Очередь.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-1meEXKpqmso/TXst8uAaYXI/AAAAAAAAAnc/o5UmN_YuPdE/s1600/PICT0007.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-1meEXKpqmso/TXst8uAaYXI/AAAAAAAAAnc/o5UmN_YuPdE/s400/PICT0007.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5583106684221022578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Видео с куском очереди.&lt;br /&gt;&lt;object width="450" height="338"&gt;&lt;param name="video" value="http://static.video.yandex.ru/lite/alenacpp/4a3jz4ngka.3121/"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="scale" value="noscale"/&gt;&lt;embed src="http://static.video.yandex.ru/lite/alenacpp/4a3jz4ngka.3121/" type="application/x-shockwave-flash" width="450" height="338" allowFullScreen="true" scale="noscale"&gt; &lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Все апплодируют&lt;br /&gt;&lt;object width="450" height="338"&gt;&lt;param name="video" value="http://static.video.yandex.ru/lite/alenacpp/8y8wtars61.713/"/&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="scale" value="noscale"/&gt;&lt;embed src="http://static.video.yandex.ru/lite/alenacpp/8y8wtars61.713/" type="application/x-shockwave-flash" width="450" height="338" allowFullScreen="true" scale="noscale"&gt; &lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Артёму спасибо :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-6852708639623581210?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/6852708639623581210/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=6852708639623581210' title='Комментарии: 16'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6852708639623581210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6852708639623581210'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/03/ipad2.html' title='Начались продажи iPad2'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1meEXKpqmso/TXst8uAaYXI/AAAAAAAAAnc/o5UmN_YuPdE/s72-c/PICT0007.JPG' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5524207944386091686</id><published>2011-02-25T23:43:00.002+03:00</published><updated>2011-02-25T23:46:36.504+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Критика boost::serialize</title><content type='html'>&lt;a href="http://mdf-i.blogspot.com/2011/02/boostserialization-hell.html"&gt;boost::serialization hell&lt;/a&gt; - эмоциональный пост про проблемы, возникающие при использовании boost::serialize.&lt;br /&gt;Будет полезно тем, кому в проекте нужна сериализация и кто рассматривает boost::serialize как один из вариантов.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5524207944386091686?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5524207944386091686/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5524207944386091686' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5524207944386091686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5524207944386091686'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/02/boostserialize.html' title='Критика boost::serialize'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5260485190221657473</id><published>2011-02-21T09:43:00.000+03:00</published><updated>2011-02-21T10:14:24.288+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Baidu maps</title><content type='html'>Китайский Baidu - один из национальных поисковиков, который обходит Google по популярности. Точно также Яндекс популярнее Google в России. &lt;br /&gt;И &lt;a href="http://map.baidu.com/?newmap=1&amp;l=17&amp;tn=B_DIMENSIONAL_MAP&amp;c=1061809,8944396&amp;cc=sh&amp;s=s%26wd%3D%C3%A4%C2%BA%C2%BA%C3%A6%C2%B0%E2%80%98%C3%A5%C2%B9%C2%BF%C3%A5%C5%93%C2%BA%26c%3D289%26src%3D0%26wd2%3D%26sug%3D0%26l%3D20&amp;sc=1"&gt;у Baidu есть свои карты&lt;/a&gt;. И они стоят того, чтобы на них взглянуть.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-gPIHU4z8dTY/TWIPcUrS0GI/AAAAAAAAAnA/ifLLis0FYTs/s1600/baidu1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/-gPIHU4z8dTY/TWIPcUrS0GI/AAAAAAAAAnA/ifLLis0FYTs/s400/baidu1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5576036267899146338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-IXsYwyq8lJk/TWIPdY8I8vI/AAAAAAAAAnI/u8Gb1BGDe-0/s1600/baidu2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://2.bp.blogspot.com/-IXsYwyq8lJk/TWIPdY8I8vI/AAAAAAAAAnI/u8Gb1BGDe-0/s400/baidu2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5576036286223414002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-nOS3RPiZbco/TWIPeQKWtlI/AAAAAAAAAnQ/lhe9akTcboU/s1600/baidu3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/-nOS3RPiZbco/TWIPeQKWtlI/AAAAAAAAAnQ/lhe9akTcboU/s400/baidu3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5576036301046986322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(via &lt;a href="http://twitter.com/igrigorik/status/39037924775440384"&gt;@igrigorik&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5260485190221657473?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5260485190221657473/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5260485190221657473' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5260485190221657473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5260485190221657473'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/02/baidu-maps.html' title='Baidu maps'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-gPIHU4z8dTY/TWIPcUrS0GI/AAAAAAAAAnA/ifLLis0FYTs/s72-c/baidu1.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5979232836035496603</id><published>2011-02-20T10:55:00.002+03:00</published><updated>2011-02-20T11:01:40.405+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Статья про управление памятью</title><content type='html'>&lt;a href="http://altdevblogaday.org/2011/02/12/alternatives-to-malloc-and-new/"&gt;Alternatives to malloc and new&lt;/a&gt; - статья про то, как происходит аллокация памяти, как и почему это ведет к фрагментации. И про то, как можно с этим бороться - управлять памятью самостоятельно. Всё с красивыми и понятными картинками.&lt;br /&gt;&lt;br /&gt;Это актуально в разработке игр, например.&lt;br /&gt;&lt;br /&gt;Статьи по теме:&lt;br /&gt;&lt;a href="http://solid-angle.blogspot.com/2011/02/virtual-addressing-101.html"&gt;Virtual Addressing 101&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gamesfromwithin.com/start-pre-allocating-and-stop-worrying"&gt;Start Pre-allocating And Stop Worrying&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Region-based_memory_management"&gt;Region-based memory management&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5979232836035496603?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5979232836035496603/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5979232836035496603' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5979232836035496603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5979232836035496603'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/02/blog-post.html' title='Статья про управление памятью'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-6510748909535253495</id><published>2011-02-15T09:22:00.003+03:00</published><updated>2011-02-17T09:33:36.705+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='future'/><title type='text'>Компьютер IBM играет в "Свою игру"</title><content type='html'>И неплохо играет, кстати. В комментариях на YouTube часто вспоминают SkyNet :-)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/watch?v=4PSPvHcLnN0"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/4PSPvHcLnN0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/watch?v=CtHlxzOXgYs"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/CtHlxzOXgYs" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Вся игра целиком &lt;a href="http://www.youtube.com/user/Rashad8821"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://dirty.ru/comments/305180"&gt;dirty.ru&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-6510748909535253495?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/6510748909535253495/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=6510748909535253495' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6510748909535253495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6510748909535253495'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/02/ibm.html' title='Компьютер IBM играет в &quot;Свою игру&quot;'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5224614790204021331</id><published>2011-02-14T08:05:00.002+03:00</published><updated>2011-02-14T08:07:23.993+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Статья с сравнением ++it и it++</title><content type='html'>В статье &lt;a href="http://habrahabr.ru/blogs/cpp/113661/"&gt;Есть ли практический смысл использовать для итераторов префиксный оператор инкремента ++it, вместо постфиксного it++&lt;/a&gt; Андрей Карпов ставит эксперименты с префиксными и постфисными операторами.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5224614790204021331?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5224614790204021331/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5224614790204021331' title='Комментарии: 18'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5224614790204021331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5224614790204021331'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/02/it-it.html' title='Статья с сравнением ++it и it++'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5293775777566159691</id><published>2011-01-25T08:24:00.002+03:00</published><updated>2011-06-17T04:49:59.174+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><title type='text'>Про работу в Майкрософт</title><content type='html'>Вопросы по поводу моего устройства в Майкрософт поступают со страшной силой, давайте я расскажу об этом что ли. &lt;br /&gt;Самый часто задаваемый вопрос "Как ты попала в Майкрософт?". Майкрософт летом проводил собеседования в Москве. Я прошла сначала телефонное интервью, потом очное. Также меня спрашивают "было ли сложно?". Прямо даже и не знаю как ответить на этот вопрос. Я пришла, мне задали какие-то вопросы, я на них как-то ответила, потом мне прислали job offer. Вроде несложно :-).&lt;br /&gt;&lt;br /&gt;Примеры вопросов можно найти поиском по "Microsoft interview questions". Их там будет много.&lt;br /&gt;&lt;br /&gt;Оформление визы, перевозка специалиста (это называется relocation), адаптация специалиста на месте - процесс давно обкатанный. Всё тут хорошо, короче говоря. &lt;br /&gt;&lt;br /&gt;Работаю я в городе Бельвью, он находится рядом с Сиэттлом. Сижу в здоровом высотном здании. Работаю в команде Bing Advertising, это контекстная реклама. Программирую на С++. :-)&lt;br /&gt;Меня спрашивали отдельные ли у нас офисы. В основном да, отдельные. Но есть те, кто сидит по двое, я сижу вдвоем с китайцем. Веселый такой парень. Еще видела одну комнату где сидят человек шесть.&lt;br /&gt;&lt;br /&gt;Но что-то мне подсказывает, что вас скорее интересует не то как я попала в Майкрософт, а то, как вам попасть в Майкрософт. Найм продолжается, есть разные вакансии:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Для специалистов с опытом&lt;/span&gt; вакансии можно найти на &lt;a href="http://careers.microsoft.com/"&gt;careers.microsoft.com&lt;/a&gt;. Его читают, на резюме реагируют. &lt;s&gt;Вот вакансии моей группы: &lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;pg=0&amp;so=&amp;rw=3&amp;jid=24711&amp;jlang=EN"&gt;раз&lt;/a&gt;, &lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;pg=0&amp;so=&amp;rw=16&amp;jid=28665&amp;jlang=EN"&gt;два&lt;/a&gt; и &lt;a href="https://careers.microsoft.com/JobDetails.aspx?ss=&amp;pg=0&amp;so=&amp;rw=20&amp;jid=16287&amp;jlang=EN"&gt;три&lt;/a&gt;.&lt;/s&gt; (Updated 16.6.2011 - все эти вакансии закрыты, но есть другие)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.not-a-kernel-guy.com/2011/01/20/970"&gt;Алексей Пахунов периодически публикует у себя на блоге вакансии&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Для выпускников&lt;/span&gt;&lt;br /&gt;&lt;a href="http://blog.not-a-kernel-guy.com/2011/01/19/964"&gt;Microsoft проведёт очередной набор студентов и выпускников из России, Беларуси и Украины.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Для студентов&lt;/span&gt; &lt;a href="http://careers.microsoft.com/careers/en/us/collegeinternships.aspx"&gt;есть программа стажировки&lt;/a&gt; (internship). Поговорила с теми, кто проходил по этой программе, народ доволен. Им оплачивали переезд и платили нормальные деньги во время работы (часто стажерам либо вообще не платят, либо платят смешные деньги). Вполне себе реально приехать по этой программе иностранному студенту, российскому студенту в том числе. Вроде еще не поздно подаваться на этот год (лето 2011). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Есть еще &lt;a href="http://microsoftjobsblog.com/"&gt;Microsoft JobsBlog&lt;/a&gt;, там бывает полезная информация про прохождение собеседований.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;По поводу прохождения собеседований вообще, не только в Майкрософт. Очень многие мои знакомые хотели, но не прошли. Знаете почему? Они не пришли на собеседование. Всегда находятся отговорки "мне надо еще тут подучить", "мне надо еще это доделать". Всегда есть чего подучить и чего доделать. Оформление визы занимает много времени, вы сто раз успеете все доделать. И всегда боязно, что не возьмут, это бьет по самооценке, да и друганы не поймут. Ну тут я могу сказать, что отказ на собеседовании дело обычное, а друганам можно об этом не рассказывать :-).&lt;br /&gt;&lt;br /&gt;P.S. Я не буду плодить кучу постов, а по результатам вопросов буду дописывать сюда. И еще фоток кину.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5293775777566159691?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5293775777566159691/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5293775777566159691' title='Комментарии: 47'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5293775777566159691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5293775777566159691'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/01/blog-post_25.html' title='Про работу в Майкрософт'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>47</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3996255411185101835</id><published>2011-01-23T19:41:00.001+03:00</published><updated>2011-01-24T06:44:22.192+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Bufferbloat</title><content type='html'>Новый термин &lt;a href="http://en.wikipedia.org/wiki/Bufferbloat"&gt;bufferbloat&lt;/a&gt; появился с легкой руки Джима Гетти (Jim Getty) после серии постов на его блоге в декабре 2010 - январе 2011.&lt;br /&gt;&lt;a href="https://gettys.wordpress.com/2010/12/03/introducing-the-criminal-mastermind-bufferbloat/"&gt;The criminal mastermind: bufferbloat!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gettys.wordpress.com/2010/12/06/whose-house-is-of-glasse-must-not-throw-stones-at-another/"&gt;Whose house is of glasse, must not throw stones at another.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gettys.wordpress.com/2011/01/03/aggregate-bufferbloat-802-11-and-3g-networks/"&gt;Bufferbloat in 802.11 and 3G Networks&lt;/a&gt;&lt;br /&gt;Там рассказывается о том, что буферизация данных в Интернете приводит к латентности, которой быть не должно. И наши интернеты не так быстры как могли бы быть. И ситуация медленно меняется к худшему. &lt;br /&gt;Плохо это, например, тем, что такие сервисы как Skype не могут качественно работать при такой латентности.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apenwarr.ca/log/?m=201101#10"&gt;bufferbloat (and a Net Neutrality rant in the footnotes)&lt;/a&gt; - пост другого автора на эту же тему, рассказывает о том как эту проблему можно частично решить. Интересен еще и тем, что там упоминается программа написанная русским гениальным программистом. Это приятно.&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://softwaremaniacs.org/blog/"&gt;Maniac&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Все ссылки, что я нашла, ведут на материалы на английском. Если вы знаете хорошие материалы на русском, киньте ссылочку в комментарии, пожалуйста.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3996255411185101835?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3996255411185101835/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3996255411185101835' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3996255411185101835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3996255411185101835'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/01/bufferbloat.html' title='Bufferbloat'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8821761317250153026</id><published>2011-01-16T07:00:00.003+03:00</published><updated>2011-01-16T07:06:23.310+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Приняла участие в подкасте Радио Т</title><content type='html'>На подкасте &lt;a href="http://radio-t.com/podcasts/radio-t-222/"&gt;Радио Т номер 222&lt;/a&gt; поговорили о языках программирования вообще и о C++ в частности. &lt;br /&gt;Размышления на тему судьбы языка С++ стали особенно актуальны после недели ненависти к С++ на Хабрахабре.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8821761317250153026?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8821761317250153026/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8821761317250153026' title='Комментарии: 65'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8821761317250153026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8821761317250153026'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/01/blog-post.html' title='Приняла участие в подкасте Радио Т'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>65</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7434470734686598314</id><published>2011-01-04T07:12:00.002+03:00</published><updated>2011-01-04T07:18:13.846+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Почему в конце декабря не работал Skype</title><content type='html'>Объяснение от разработчиков &lt;a href="http://blogs.skype.com/en/2010/12/cio_update.html?cm_mmc=PXBL|0700_B6-_-downtime-20101229"&gt;CIO update: Post-mortem on the Skype outage&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Объяснение объяснения от разработчиков &lt;a href="http://www.disruptivetelephony.com/2010/12/understanding-todays-skype-outage-explaining-supernodes.html"&gt;Understanding Today's Skype Outage: Explaining Supernodes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://highscalability.com/blog/2011/1/3/stuff-the-internet-says-on-scalability-for-january-3-2010.html"&gt;highscalability.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2008/05/skype.html"&gt;Архитектура Skype&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7434470734686598314?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7434470734686598314/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7434470734686598314' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7434470734686598314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7434470734686598314'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2011/01/skype.html' title='Почему в конце декабря не работал Skype'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-1057853143161157279</id><published>2010-12-31T23:35:00.002+03:00</published><updated>2011-01-01T03:47:55.299+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Лучшее за 2010 год</title><content type='html'>Традиционное подведение итогов прошедшего года. Статьи, которые больше всего читали и на которые больше всего ссылались.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TR5FCcco38I/AAAAAAAAAmw/yJM0sKgwVX4/s1600/Pixar1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 108px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TR5FCcco38I/AAAAAAAAAmw/yJM0sKgwVX4/s200/Pixar1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5556954898520137666" /&gt;&lt;/a&gt;Итак, наш победитель.... барабанная дробь... &lt;a href="http://alenacpp.blogspot.com/2010/02/blog-post_16.html"&gt;Выступление Эда Катмулла, президента Пиксара&lt;/a&gt;! Оно собрало огромное количество ссылок и уверенно держалось в топах в течение всего года.&lt;br /&gt;&lt;br /&gt;Философский пост &lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post_21.html"&gt;Хорошо там, где нас нет&lt;/a&gt; впечатлил многих. Каждый нашел в нем что-то о себе, люди цитируют разные куски. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/11/openqualityru.html"&gt;Интервью проекту Open Quality&lt;/a&gt; и &lt;a href="http://alenacpp.blogspot.com/2010/11/blog-post_15.html"&gt;Временные оценки в программировании&lt;/a&gt; во многом перекликаются. Они также были популярны.&lt;br /&gt;&lt;a href="http://openquality.ru/"&gt;&lt;img src="http://openquality.ru/images/basic/oq.gif" title="OpenQuality.ru" alt="OpenQuality.ru" width="88" height="65" style="border:1px solid"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Интерес вызвали &lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post.html"&gt;Неделя борьбы с велосипедизмом&lt;/a&gt; и &lt;a href="http://alenacpp.blogspot.com/2010/12/add-2010.html"&gt;запись доклада по ИИ в играх&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Из старенького стабильно популярны &lt;a href="http://alenacpp.blogspot.com/2006/09/blog-post_19.html"&gt;Хорошие книги по С++ для начинающих&lt;/a&gt; и &lt;a href="http://alenacpp.blogspot.com/2009/12/blog-post_17.html"&gt;Своя Компания&lt;/a&gt;. Еще народ продолжает &lt;a href="http://alenacpp.blogspot.com/2006/02/blog-post_10.html"&gt;рисовать графы&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;У меня год выдался неспокойный. У меня появился &lt;a href="http://twitter.com/alenacpp"&gt;твиттер&lt;/a&gt;, я выступила на ADD-2010. И под самый конец года переехала в Редмонд и с нового года приступаю к работе в компании Майкрософт, буду программировать на С++ в Bing Advertising Team.&lt;br /&gt;&lt;br /&gt;Всех с Новым Годом, дорогие друзья! &lt;br /&gt;Пусть ваши выступления на конференциях будут также популярны как выступление Эда Катмулла. &lt;br /&gt;Пусть Ваша Компания будет создана и начнет процветать, а Своя Игра будет дописана. &lt;br /&gt;Пускай временные оценки будут соответствовать действительности, а менеджеры будут спокойными и довольными. &lt;br /&gt;Пусть вам будет хорошо где бы вы ни были.&lt;br /&gt;&lt;br /&gt;Оставайтесь с нами :-)&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2009/12/2009.html"&gt;Лучшее за 2009 год&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2008/12/2008.html"&gt;Лучшее за 2008 год&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-1057853143161157279?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/1057853143161157279/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=1057853143161157279' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1057853143161157279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1057853143161157279'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/12/2010.html' title='Лучшее за 2010 год'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VUQ3DQEhjsM/TR5FCcco38I/AAAAAAAAAmw/yJM0sKgwVX4/s72-c/Pixar1.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2350294490562225613</id><published>2010-12-21T21:20:00.000+03:00</published><updated>2010-12-21T21:28:38.144+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Книга Exploiting Online Games</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.amazon.com/Exploiting-Online-Games-Massively-Distributed/dp/0132271915/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TRDsNT5lGgI/AAAAAAAAAmg/P2bzuBltebE/s200/exploitingonlinegames.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5553198053972056578" /&gt;&lt;/a&gt;Книга &lt;a href="http://www.amazon.com/Exploiting-Online-Games-Massively-Distributed/dp/0132271915/"&gt;Exploiting Online Games&lt;/a&gt; попала ко мне в руки случайно. Я ее прочитала, она мне не понравилась, давайте расскажу почему.&lt;br /&gt;&lt;br /&gt;Первые четыре(!) главы книги посвящены пространным размышлениям о том, что хачить нехорошо, а также рассказам о софтверных лицензиях. Читателям, дожившим до пятой главы, дается скупая и щедро разбавленная водой информация, которая как-то относится к теме книги. Также присутствует много отсылок к другим книгам тех же авторов.&lt;br /&gt;Анализа и систематизации информации нет. Причем в большинстве случаев они говорят о WoW, книгу надо было назвать "Как наверное можно похачить WoW". &lt;br /&gt;Эта одна из тех редких книг, из которых мне не удалось узнать вообще ничего нового. Что там есть вообще: у нас есть клиент, он обменивается данными с сервером. Теоретически, можно влезть в клиента, там есть интересная информация о состоянии мира. Можно слать на сервер свои данные. Можно написать бота. По большому счету это все содержимое книги.&lt;br /&gt;Видимо, чтобы книга была толще, туда добавлена базовая информация по языку ассемблера и про DLL injection.&lt;br /&gt;&lt;br /&gt;Совершенно непонятно для кого это все написано. Для читера она бесполезна, потому что там нет примеров типа "мы сделали то-то и то-то, получили такой-то результат". Читателю просто бросается какая-то мысль или кусок кода и... всё. Это порождает кучу вопросов. Чего дальше-то было? Оно заработало вообще? Что сказал &lt;a href="http://en.wikipedia.org/wiki/Warden_%28software%29"&gt;Warden&lt;/a&gt;? Как быстро был закрыт аккаунт? &lt;br /&gt;&lt;br /&gt;Для разработчика она бесполезна, потому что разработчик и так знает, что на клиенте много информации и что ее можно вытащить. И что читеры существуют и что ловить их по-одному - дурацкое занятие. Разработчику нужно вообще другое. Мне бы было интересно почитать о паттернах, по которым читеров можно распознать по статистике. Ведь если у одного игрока морковка начинает всходить вдвое быстрее, чем у всех остальных, это же видно хорошо... О реальных нетривиальных случаях читерства, о том, как с ними боролись. О статистике по читам. Что пытаются делать чаще, от чего потери больше.&lt;br /&gt;О том, что вообще с этим делать. Как бороться с читерами, избегая таких сомнительных решений как Warden? Ведь Warden, будем откровенны, это же явное spyware. Как бороться так, чтобы ни в коем случае не обидеть честных игроков? Как держать читеров под контролем? &lt;br /&gt;Как распознать бота? Если у нас игрок уже 24 часа бьет куриц, 1exp за курицу, как понять кто это - бот или усердный корейский студент? Может вывести ему сообщение "Курицы дарят вам 1000exp и просят оставить их в покое" с кнопками "Принять" и "Не принимать" и посмотреть за реакцией?&lt;br /&gt;Большинство проблем происходит из-за того, что приходится доверять клиенту, ведь часть информации хранится на клиенте. Как снизить доверие к клиенту? Можно ли убрать оттуда часть информации? А всю можно? Проводились ли исследования в этой области? Возможны ли решения типа OnLive, когда игроку выдается только видеопоток?&lt;br /&gt;&lt;br /&gt;Наверное, все это можно узнать где-нибудь на закрытых секциях GDC, в этой книге ничего такого нет.&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://www.cigital.com/presentations/EOG08_McGraw.pdf"&gt;Слайды, в которых есть много информации из этой книги&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2350294490562225613?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2350294490562225613/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2350294490562225613' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2350294490562225613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2350294490562225613'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/12/exploiting-online-games.html' title='Книга Exploiting Online Games'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/TRDsNT5lGgI/AAAAAAAAAmg/P2bzuBltebE/s72-c/exploitingonlinegames.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-970527531061869915</id><published>2010-12-13T18:20:00.003+03:00</published><updated>2010-12-21T21:30:11.180+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Я хочу программировать игры! Что мне делать?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLqJchAI/AAAAAAAAAfQ/9_JyXx5h7wM/s1600/Robocalypse_BD_screenshot_08.jpg"&gt;&lt;img style="float:right; margin:10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLqJchAI/AAAAAAAAAfQ/9_JyXx5h7wM/s320/Robocalypse_BD_screenshot_08.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523038291133442" /&gt;&lt;/a&gt;Вопросы от людей, которые хотят программировать игры, приходят все чаще, а это значит, что пора писать пост. Не то, чтобы у меня был грандиозный опыт разработки игр, но вполне себе неплохой опыт есть. Ну и толпы желающих помочь новичкам не наблюдается.&lt;br /&gt;&lt;br /&gt;Итак, для начала нам надо понять, как именно происходит разработка игр. И познакомиться с общей ситуацией в индустрии...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;-Алёна, давай ближе к делу! Лесом ситуацию в индустрии, программить уже давай!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Но мои собеседники, как правило, хотят уже прямо сейчас приступить к написанию кода и слушать всякие занудствования не готовы. Поэтому начнем с конца. &lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;-Я поставил себе Visual C++ 2010? Я все правильно сделал?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Если вы работаетет с Windows, то да, лучше Visual C++ и лучше версию поновее. Про разработку игр под Линукс я не в курсе...&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;-DirectX или OpenGL?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Это зависит... На Windows в основном используется DirectX. Но это вовсе не значит, что OpenGL никому не нужен. На консолях встречаются графические API, сильно похожие на OpenGL, ну и под Линуксом никакого DirectX нет.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;-Так все-таки, DirectX или OpenGL?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ставьте DirectX. :-)&lt;br /&gt;Только DirectDraw смотреть не нужно, им никто не пользуется.&lt;br /&gt;В DirectX есть очень хорошие хелпы и примеры, не игнорируйте их.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;-У меня ничего не работает, ничего не компиляется!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Вы не одиноки. Поищите ваши ошибки Гуглом, наверняка найдете таких же несчастных.&lt;br /&gt;&lt;br /&gt;Но будьте готовы к тому, что вы не найдете материалы, где бы вас провели за руку от начала и до конца.&lt;br /&gt; &lt;br /&gt;&lt;span style="font-style:italic;"&gt;-Да ну, там все по-английски...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Надо учить английский. На русский переведено мало и для работы этого недостаточно.&lt;br /&gt;Как обычно, Google is your friend. Вот что выдает нам поиск по запросу game programming lectures.&lt;br /&gt;&lt;a href="http://graphics.im.ntu.edu.tw/~robin/game07/?page_id=5"&gt;Game Programming 2007&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pisa.ucsd.edu/cse191/www/"&gt;CSE 191: Video Game Programming Seminar&lt;/a&gt;&lt;br /&gt;Обзор книг по программированию игр я делала &lt;a href="http://alenacpp.blogspot.com/2008/01/blog-post.html"&gt;здесь&lt;/a&gt;. И вот еще открытые &lt;a href="http://alenacpp.blogspot.com/2006/05/blog-post_15.html"&gt;исходники игр&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;-Правда, что все игры разрабоатываются на С++?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Игры разрабатываются не только на С++. Активно используются также:&lt;br /&gt;Python, Lua - Для скриптования игровых движков. Также для скриптования могут использоваться языки, специфичные для данного движка. Например, UnrealScript.&lt;br /&gt;C# - утилиты. Очень любим, потому что С++ программистам с ним легко разобраться.&lt;br /&gt;C#, Java - серверная часть MMO. &lt;br /&gt;Java - используется на мобильных платформах&lt;br /&gt;HLSL - используется для программирования шейдеров&lt;br /&gt;&lt;br /&gt;Знание С++ не то чтобы обязательно, но он в разработке игр используется очень активно и с ним жизнь упрощается.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;-Что такое игровой движок? У меня уже есть DirectX. Это что, не движок?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DirectX работает на уровне "нарисовать треугольник". Игровой движок поднимает вас на уровень выше, здесь будут "объект с трехмерной моделью и поведением", "вода" и т.п.&lt;br /&gt;&lt;br /&gt;Игровые движки бывают разные. Например, может быть только графический движок, но без физики. Вы тогда можете писать физику сами или подключить какой-нибудь движок физики. Также отдельно может идти AI движок.&lt;br /&gt;&lt;br /&gt;Вам не обязательно нужен движок. Для небольшой игры разделение на движок-скриптование зачастую не имеет смысла. Если хочется поменьше разбираться как оно внутри устроено, а хочется чтобы уже была игра, имеет смысл поработать с готовыми бесплатными движками. Также имеет смысл посмотреть их код. Ну и исходники игр.&lt;br /&gt;&lt;br /&gt;Примеры бесплатных движков:&lt;br /&gt;&lt;a href="http://www.ogre3d.org/"&gt;OGRE&lt;/a&gt; (&lt;span style="font-weight:bold;"&gt;Altren&lt;/span&gt; в комментариях настаивает, что в OGRE только графика и ничего другого там искать не надо), &lt;a href="http://irrlicht.sourceforge.net/"&gt;Irrlicht&lt;/a&gt; - игровые движки, графика там в основном, насколько я помню&lt;br /&gt;&lt;a href="http://www.ode.org/"&gt;ODE&lt;/a&gt; - движок физики&lt;br /&gt;&lt;br /&gt;Игра - это не только DirectX, не только графика. Если вас интересует устройство на работу в качестве разработчика игр, то посмотрите вакансии игровых контор, посмотрите чего они хотят и вам станет понятнее чего учить (&lt;a href="http://www.epicgames.com/careers/"&gt;Epic games&lt;/a&gt;, &lt;a href="http://jobs.zenimax.com/index.php?a=info&amp;d=idsoftware"&gt;id Software&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Вот примеры специализаций игровых программистов, с описанием чего надо знать по каждой специализации. Это роли могут различаться, всё-таки всё сильно зависит от конкретной платформы и компании.&lt;br /&gt;&lt;br /&gt;Graphics programmer - программист графики. Здесь нужно знание математики (векторы, матрицы, кватернионы). Понимание того, как работают видеокарты, шейдеры.&lt;br /&gt;Physics programmer - программист физики. Нужны довольно специфичные знания физики, ну и математика тоже.&lt;br /&gt;AI programmer - программист искусственного интеллекта. Алгоритмы на графах (A*, Дийкстра), конечные автоматы...&lt;br /&gt;Gameplay programmer, game mechanics programmers - программист игровой механики. Эта роль вызывает больше всего непонимания. Это те программисты, которые пишут в игре всё остальное. Изменение параметров при попадании одного юнита в другого, отображение этого всего в интерфейсе, подгрузка следующего уровня. Куча вот таких мелочей.&lt;br /&gt;Interface programmer - разработчик интерфейсов.&lt;br /&gt;Network programmer - сетевой программист. Нужны стандартные знания по разработке сетевого кода.&lt;br /&gt;Tools Programmer - разработчик утилит. При разработке игры используют дополнительные программы, которые иногда пишутся самостоятельно, иногда покупаются вместе с движком. Пример игровой утилиты - редактор уровней.&lt;br /&gt;&lt;br /&gt;Также бывают нужны инженеры для поддержка автосборки, программисты аудио, специалисты для работы с базами данных.&lt;br /&gt;&lt;br /&gt;Для начала не пытайтесь написать игру с нуля. Модифицируйте чужой код, пишите моды.&lt;br /&gt;&lt;br /&gt;Потом напишите небольшую игру от начала и до конца. Графику либо нарисуйте тестовую, либо найдете в интернете, есть сайты где модели раздаются бесплатно под некоммерческие проекты.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;-Да, у меня есть отличная идея MMORPG!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Возьмите любую MMORPG, откройте кредитсы и посмотрите на список людей, которые работали над этим проектом. Далеко не все они страдали там фигней, уверяю вас. Разработка MMORPG - многомиллионный проект с количеством людей, несколько больше одного.Для начала напишите паззл небольшой, напишите арканоид.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;-Алён, ты что, шутишь?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ОК, пусть это будет RPG, без MMO. Один, маленький уровень, как можно меньше деталей. Попробуйте получить минимальную играбельную версию.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;-Алёна, у меня еще куча вопросов!&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Постараюсь ответить. Но не могу обещать, что отвечу на все :-).&lt;br /&gt;Ахинею про то, о чем не знаю, писать не буду. Спрашивайте в комментариях.&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://aigamedev.com/"&gt;AIGameDev&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post.html"&gt;Вопросы по программированию ИИ в играх&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-970527531061869915?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/970527531061869915/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=970527531061869915' title='Комментарии: 69'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/970527531061869915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/970527531061869915'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/12/blog-post_13.html' title='Я хочу программировать игры! Что мне делать?'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLqJchAI/AAAAAAAAAfQ/9_JyXx5h7wM/s72-c/Robocalypse_BD_screenshot_08.jpg' height='72' width='72'/><thr:total>69</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3129931613975309971</id><published>2010-12-08T19:14:00.014+03:00</published><updated>2010-12-22T19:20:46.704+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Выложили записи моих докладов с ADD-2010</title><content type='html'>Организаторы потихоньку выкладывают &lt;a href="http://addconf.ru/index.sdf"&gt;записи докладов с ADD-2010&lt;/a&gt;, мои уже выложили.&lt;br /&gt;&lt;br /&gt;Первый доклад, &lt;span style="font-weight:bold;"&gt;Искусственный интеллект в играх&lt;/span&gt;&lt;br /&gt;Про нечестные приемы, про поиск пути и навигацию.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/12955832" width="500" height="281" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/12955832"&gt;218-Games-AI-add-2010.avi&lt;/a&gt; from &lt;a href="http://vimeo.com/belonesox"&gt;Stas Fomin&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;Материалы, которые я использовала для подготовки к докладу:&lt;br /&gt;&lt;a href="http://www.reddit.com/r/gaming/comments/coqg7/its_not_fun_if_you_fake_it_rigged_gameplay/"&gt;It's not fun if you fake it. Rigged gameplay mechanics are starting to piss me off.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gamasutra.com/view/feature/3920/the_pure_advantage_advanced_.php"&gt;The Pure Advantage: Advanced Racing Game AI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aigamedev.com/open/articles/bugs-caught-on-tape/"&gt;18 Embarrassing Game AI Bugs Caught On Tape... and Fixed!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=fM5kY5t8Bz0"&gt;OpenSteerDemo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/shawnhar/archive/2009/12/17/the-psychology-of-randomness.aspx"&gt;The psychology of randomness&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cbloomrants.blogspot.com/2010/09/09-06-10-weighteddecayrand.html"&gt;WeightedDecayRand&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gamespot.com/pc/strategy/civilizationv/video/6253529/gdc-2010-keynote-address-sid-meier"&gt;GDC 2010 Keynote Address: Sid Meier&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aigamedev.com/open/tutorials/theta-star-any-angle-paths/"&gt;Theta*: Any-Angle Path Planning for Smoother Trajectories in Continuous Environments&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aigamedev.com/open/reviews/near-optimal-hierarchical-pathfinding/"&gt;Near-Optimal Hierarchical Pathfinding (HPA*)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://habrahabr.ru/blogs/games/100698/"&gt;Сравнение алгоритмов поиска маршрутов в StarCraft и StarCraft 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aigamedev.com/open/articles/hole-navmesh-dear-zombie/"&gt;There's a Hole in Your NavMesh, Dear Zombie&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Второй доклад, &lt;span style="font-weight:bold;"&gt;C++0x&lt;/span&gt;&lt;br /&gt;Я не рассчитала время, доклад получился коротким. Первратим это в плюс. &lt;br /&gt;Короткий, но насыщенный доклад про C++0x! Всего на 25 минут, а если вопросы не слушать, то и того меньше!&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/14457262" width="500" height="281" frameborder="0"&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://vimeo.com/14457262"&gt;225-C0xx-add-2010.avi&lt;/a&gt; from &lt;a href="http://vimeo.com/belonesox"&gt;Stas Fomin&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated 09.12.2010:&lt;/span&gt;&lt;br /&gt;Во время доклада был задан вопрос, почему для атрибутов нельзя использовать слово final вместо [[final]]. Там были высказаны предположения, но ответ так и не был дан.&lt;br /&gt; &lt;a href="http://herbsutter.com/2010/12/08/trip-report-november-2010-c-standards-meeting"&gt;Отвечает Герб Саттер&lt;/a&gt;.&lt;br /&gt;Для это пришлось бы использовать контекстный парсинг, а делать это не хотелось, потому что нигде до этого в языке это не использовалось. Но все-таки они решили сделать именно так. И final будет просто final, без каких-либо скобочек.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/Updated&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Материалы, которые я использовала для подготовки к докладу:&lt;br /&gt;&lt;a href="http://wiki.apache.org/stdcxx/C++0xCompilerSupport"&gt;C++0x features and their support in popular compilers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm"&gt;Initializer List proposed wording&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/3492742/compile-time-string-manipulation-with-variadic-templates"&gt;Compile-time 'String' Manipulation with Variadic Templates&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www-sop.inria.fr/geometrica/events/WG21_meeting_june_2008/public_talks.html"&gt;C++0x: An overview, by Bjarne Stroustrup&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www2.research.att.com/~bs/C++0xFAQ.html"&gt;C++0x FAQ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-language-features-in-vc10-the-table.aspx"&gt;C++0x Core Language Features In VC10: The Table&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.aristeia.com/C++0x/C++0xFeatureAvailability.htm"&gt;Summary of C++0x Feature Availability in gcc and MSVC&lt;/a&gt;&lt;br /&gt;&lt;a href="http://habrahabr.ru/blogs/cpp/66021/"&gt;C++0x. Лямбда-выражения&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.rsdn.ru/forum/cpp/3778357.flat.aspx"&gt;C++0x lambda&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S. Лучше все это смотреть в HD и на полный экран&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3129931613975309971?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3129931613975309971/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3129931613975309971' title='Комментарии: 18'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3129931613975309971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3129931613975309971'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/12/add-2010.html' title='Выложили записи моих докладов с ADD-2010'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2333681065507769301</id><published>2010-12-01T17:05:00.006+03:00</published><updated>2010-12-02T13:00:02.516+03:00</updated><title type='text'>Неделя неслыханной щедрости</title><content type='html'>На днях я решила куда-нибудь потратить завалявшиеся у меня на WebMoney деньги и мне в голову пришла светлая мысль. Я много пользуюсь бесплатными программами и ресурсами, но довольно редко делаю им пожертвования. Вечно то лень, то карточка просрочена, то еще чего. Поэтому я решила отвести под это дело отдельный период времени - пускай это будет первая неделя декабря, раз в год можно себя на это сподвигнуть. Предлагаю вам ко мне присоединиться. Приблизить, так сказать, наступление светлого завтра, где правят Разум и Справедливость.&lt;br /&gt;&lt;br /&gt;В сегодняшнюю раздачу слонов попали.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Wikipedia&lt;/span&gt;&lt;br /&gt;О, неисчерпаемый источник полезной информации. Именно оттуда я узнала, что средняя скорость ленивца два метра в минуту, а когда опасность, то и все четыре. Что энергетический бюджет нашей планеты - 174 петаватта. Что Поль Брэгг умер от сердеченого приступа, а вовсе не утонул. &lt;br /&gt;К тому же там в последнее время появился громадный баннер, Джимми Уэйлс смотрит с него большими печальными глазами и просит денег.&lt;br /&gt;650 рублей Википедии. Баннер после этого никуда не исчез, правда :-)&lt;br /&gt;&lt;a href="http://wikimediafoundation.org/wiki/Global_Support/ru"&gt;Donate to Wikipedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Firefox и Thunderbird&lt;/span&gt; - давно пользуюсь этими двумя софтинами. Firefox здоровый, у него течет память (или уже починили?) и я с него все пытаюсь на что-нибудь перелезть, но он служил мне долгие годы.&lt;br /&gt;Отдельно на софтину пожертвовать нельзя, можно перевести пожертвования Mozilla Foundation. Суммы фиксированы. Я выбрала 25 долларов. И они обещают прислать плюшевого дракончика! &lt;br /&gt;&lt;a href="https://donate.mozilla.org/page/contribute/openwebfund"&gt;Donate to Mozilla Foundation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;WinRAR&lt;/span&gt;&lt;br /&gt;Отличный архиватор, и он не бесплатный. Лицензия стоит 29 у.е.&lt;br /&gt;&lt;a href="http://win-rar.ru/shop/index.php?prod=winrar"&gt;Купить WinRAR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Tortoise SVN&lt;/span&gt;&lt;br /&gt;Лучший  клиент к Subversion под Windows. Пользуюсь много лет, довольна. &lt;br /&gt;Там можно сделать подарок каждому разработчику индивидуально через Амазон, я сначала так и хотела сделать. Но у меня не получилось, вы не поверите. То "мы это не можем доставить", то "не факт, что в регионе получателя этот диск будет играть". Ну нафиг. &lt;br /&gt;Так что просто 10 долларов им перевела.&lt;br /&gt;&lt;a href="http://tortoisesvn.tigris.org/donate.html"&gt;Donate to Tortoise SVN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Inno setup&lt;/span&gt;&lt;br /&gt;Самая лучшая программа создания дистрибутивов под Windows. А я много какие пробовала. Простая, понятная, без дурацких разноцветных кнопочек и может все.&lt;br /&gt;5 долларов&lt;br /&gt;&lt;a href="http://www.jrsoftware.org/isdonate.php"&gt;Donate to Inno setup&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Были некоторые проекты, которым я хотела дать денег, но не нашла как. Это &lt;a href="http://www.wireshark.org/"&gt;WireShark&lt;/a&gt;, причем у них в рассылке был по этому поводу вопрос, на него никто не ответил. Это &lt;a href="http://www.farmanager.com/"&gt;Far Manager&lt;/a&gt;, и это &lt;a href="http://gcc.gnu.org/"&gt;GCC&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;И помните - никогда не поздно поддержать неделю неслыханной щедрости. :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated:&lt;/span&gt;&lt;br /&gt;Меня тут спросили а как поддерживать-то?&lt;br /&gt;Напишите в каком-нибудь твиттере, что это хорошая идея и дайте ссылку.&lt;br /&gt;Напишите, что это глупая и бесполезная затея и дайте ссылку.&lt;br /&gt;Сделайте donation и напишите об этом у себя в блоге и... дайте ссылку&lt;br /&gt;Сами придумайте еще чего-нибудь.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2333681065507769301?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2333681065507769301/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2333681065507769301' title='Комментарии: 30'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2333681065507769301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2333681065507769301'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/12/blog-post.html' title='Неделя неслыханной щедрости'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5211642767206967775</id><published>2010-11-15T22:02:00.004+03:00</published><updated>2010-12-15T00:07:59.745+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Временные оценки в программировании</title><content type='html'>С оценкой времени выполнения задачи в программировании все сложно. Менеджерам очень важно знать точный срок, за который работа будет выполнена. Программисты этот срок оценить не могут. Обычно это выливается в бесконечные конфликты. Менеджеры считают программистов ленивыми уродами, программисты считают, что менеджеры не понимают их тонкую программерскую душу. Все счастливы.&lt;br /&gt;&lt;br /&gt;Но мы не такие! Мы решаем проблемы, а не ищем виноватых. Мы ищем способ, а не причину. Мы не жалуемся на Злую Судьбу, Законы Вселенной и не вздыхаем обреченно "оно всегда так".&lt;br /&gt;&lt;br /&gt;Эта статья ориентирована прежде всего на программистов. Со стороны менеджеров тоже требуются определенные усилия - например, если менять постановку задачи каждый день, то оценить время станет сильно сложнее. Но на этом я останавливаться не буду.&lt;br /&gt;&lt;br /&gt;Итак, как обычно происходит оценка сроков? Вот очень распространенный сценарий. Программиста спрашивают "сколько времени этой займет?" Ответ ожидается прямо сейчас, у программиста есть несколько секунд на раздумья. У него в голове возникает некий срок. Пускай будет "три недели". При этом программист отбрасывает время, нужное для отладки, учитывается только время кодирования. Потом внутренний голос говорит ему "Ты же крут! Какие три недели! За две справишься!". "Две недели" - отвечает программист. После этого начинается торг. Менеджер пытается уменьшить уже сильно заниженный срок. В итоге они сторгуются на неделе. Это просто какой-то срок, взятый с потолка, который выполнен не будет.&lt;br /&gt;&lt;br /&gt;Через некоторое время становится очевидным, что данные оценки по срокам не выполнялись никогда. Программист приходит к выводу, что оценить время выполнения работы невозможно. Мысль "я не умею, значит это невозможно" гораздо приятнее мысли "я не так крут, как мне казалось, эта задача занимает гораздо больше времени".&lt;br /&gt;&lt;br /&gt;Увы, я не знаю волшебных заклинаний и HOWTO как всегда со стопроцентным попаданием рассчитывать сроки. Но есть несколько известных мне приемов, которые ситуацию с оценкой сроков улучшают значительно. Я их все использовала, опробовала на себе. Все они требуют активного сотрудничества между менеджером и программистами. Если такого сотрудничества нет, попробуйте делать временные оценки для себя. Это полезный навык, может потом пригодиться.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Оценка времени программирования задач в часах&lt;/span&gt;&lt;br /&gt;Этот способ рекламировал Джоэл Спольски у себя в блоге. Там вы найдете его подробную статью об этом: &lt;a href="http://www.joelonsoftware.com/items/2007/10/26.html"&gt;Evidence Based Scheduling&lt;/a&gt;. Разбиваем задачу на подзадачи, оцениваем время каждого этапа в часах. &lt;br /&gt;Если вы привыкли брать сроки с потолка, то оценки по этому методу будут получаться пугающе большими. Это нормально.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Временные отсечения&lt;/span&gt;&lt;br /&gt;У нас есть задача, требующая определенных исследований. Наши программисты ни разу такое не делали. И вообще не представляют как это делать. Мы начинаем исследование и бросаем его в определенный срок. Например, 20 мая. Если до этого времени не успели - все. Даже если "почти все готово", даже если "вот сейчас заработает". Откатываемся к предыдущей версии. Беремся за следующую задачу.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Разработка по спирали&lt;/span&gt;&lt;br /&gt;Наверное, у этого способа есть какое-то умное название. Задача как можно быстрее получить работающую версию продукта. В случае игры - играбельная версия, один уровень, почти без графики, без спецэффектов, без меню или с убогим меню. А потом уже на нее навешиваем фичи. Добавляем спецэффекты. Делаем оптимизацию. Разработка получается гибкой. Мы на ранних этапах можем отказаться от каких-то фичей, от спецэффектов.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Предоставить другую информацию&lt;/span&gt;&lt;br /&gt;Если программист не знает когда задача будет выполнена, то зачастую он может назвать срок, в который она точно выполнена не будет. Этого может оказаться достаточно менеджеру, чтобы принять какое-то решение. Например, перенести собрание или вовсе отказаться от выполнения этой задачи. Можно побеседовать и выяснить, что программист может предложить некое решение, которое можно сделать очень быстро, но оно будет обладать существенными недостатками. Например, не будет работать в некоторых случаях или будет работать очень медленно. Его можно будет использовать в качестве заглушки. Зачастую бывает лучше продемонстрировать медленно работающую программу, чем вообще ничего не продемонстрировать.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Постмортемы&lt;/span&gt;&lt;br /&gt;После окончания проекта полезно сверить реальные оценки с теми, что были напланированы и попытаться уяснить где были допущены ошибки и почему. Что нужно сделать, чтобы их не повторить. Очень важно тут не скатиться к поиску виноватых. &lt;br /&gt;Это нужная вещь, потому что научиться делать хорошие оценки с первого раза вряд ли получится. Это итеративный процесс. Постепенно будет получаться все лучше и лучше. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Пример из жизни&lt;/span&gt;&lt;br /&gt;В одном очень критичном по времени проекте я оценивала время в часах, по Спольски. И там действительно счет шел на часы. Проект вышел вовремя, при этом сразу же были порезаны минорные фичи, когда по оценкам стало ясно, что они занимают неприлично много времени.&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Для того, чтобы лучше понимать нужды менеджера полезно бывает что-нибудь отменеджить. Если вам предоставится такая возможность, то вы увидите, что важен не столько срок, сколько общий контроль над процессом. Пускай что-то пойдет медленнее, чем ожидалось, главное, что мы можем этим управлять, знаем причины, знаем как на это влиять. Главная цель - удержать контроль над ситуацией.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5211642767206967775?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5211642767206967775/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5211642767206967775' title='Комментарии: 33'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5211642767206967775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5211642767206967775'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/11/blog-post_15.html' title='Временные оценки в программировании'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-6994382014640695111</id><published>2010-11-13T12:01:00.006+03:00</published><updated>2010-11-13T13:06:11.265+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><title type='text'>Интервью на OpenQuality.Ru</title><content type='html'>На &lt;a href="http://openquality.ru/"&gt;OpenQuality.Ru&lt;/a&gt; сейчас публикуются интервью с программистами о разработке софта. Много спрашивают про обеспечение качества.&lt;br /&gt;&lt;br /&gt;Пока там всего два интервью. &lt;a href="http://experience.openquality.ru/elena-sagalaeva-interview/"&gt;Моё&lt;/a&gt; и &lt;a href="http://experience.openquality.ru/alexander-demin-interview/"&gt;Александра Дёмина&lt;/a&gt;, автора блога &lt;a href="http://easy-coding.blogspot.com/"&gt;Программирование - это просто&lt;/a&gt;. У него там есть интересное про организацию работы в Блумберге.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openquality.ru/"&gt;&lt;img src="http://openquality.ru/images/basic/oq.gif" title="OpenQuality.ru" alt="OpenQuality.ru" width="88" height="65" style="border:1px solid"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-6994382014640695111?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/6994382014640695111/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=6994382014640695111' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6994382014640695111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6994382014640695111'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/11/openqualityru.html' title='Интервью на OpenQuality.Ru'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5037630568491309378</id><published>2010-11-12T11:40:00.003+03:00</published><updated>2010-11-12T11:46:19.046+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Статьи про рендеринг в Старкрафт 2</title><content type='html'>"...вашему вниманию предлагается реверс инжиниринг рендера всем известной игры Старкрафт 2, от не менее известной компании Близзард."&lt;br /&gt;&lt;a href="http://users.livejournal.com/__vortex__/3391.html"&gt;Старкрафт 2: Секреты технологий&lt;/a&gt;&lt;br /&gt;&lt;a href="http://users.livejournal.com/__vortex__/3640.html"&gt;Старкрафт 2. Рендер роликов&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNz-o5J1cgI/AAAAAAAAAmY/2y3HAWha-cE/s1600/starcarft2-800x600.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNz-o5J1cgI/AAAAAAAAAmY/2y3HAWha-cE/s400/starcarft2-800x600.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5538581620249162242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;via &lt;a href="http://twitter.com/lightypp"&gt;lightypp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5037630568491309378?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5037630568491309378/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5037630568491309378' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5037630568491309378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5037630568491309378'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/11/2.html' title='Статьи про рендеринг в Старкрафт 2'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNz-o5J1cgI/AAAAAAAAAmY/2y3HAWha-cE/s72-c/starcarft2-800x600.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8297503542026392683</id><published>2010-11-09T18:38:00.005+03:00</published><updated>2010-12-01T22:14:26.552+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Впечатления от работы с игровыми консолями</title><content type='html'>Меня тут в комментариях как-то просили рассказать о моих впечатлениях от работы с консолями, вот оно.&lt;br /&gt;&lt;br /&gt;Пара слов о том, какие бывают игровые консоли. Есть те, которые надо подключать к телевизору, по-русски они обычно называются "приставки". Сейчас наиболее популярны три из них: Microsoft XBOX 360, Sony PS3, Nintendo Wii. Причем Wii всех рвет по продажам.&lt;br /&gt;&lt;br /&gt;Есть консоли со своим собственным экраном, самые известные - Nintendo DS и Sony PSP.&lt;br /&gt;&lt;br /&gt;Я работала, конечно, не со всеми. С чем-то работала, про что-то слышала. Все они закрытые, т.е. разработчики не имеют права рассказывать о деталях. Поэтому вот все, что я могу вам рассказать - несколько скупых строк без упоминания подробностей.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Архитектура&lt;/span&gt;&lt;br /&gt;Пришлось работать с довольно странной архитектурой, это непривычно. На консолях любят &lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2"&gt;big endian&lt;/a&gt;. Что создает, хм, некоторые проблемы, если вам хочется двоичные данные с PC перенести на консоль. А вам этого захочется, потому что у вас все дизайнеры уровней сидят на PC. &lt;br /&gt;&lt;br /&gt;Также на консолях бывают такие интересные штуки как несколько процессоров или несколько оперативных памятей, что приводят в некоторое смятение человека, только что пришедшего с PC. Но народ в работу включается быстро, и я не вижу каких-то особых проблем с переходом с PC на консоли.&lt;br /&gt;&lt;br /&gt;В целом приходится сидеть сильно ближе к железу и вот здесь хорошо себя проявляет С++. Здесь вы можете и данные разложить как вам надо, и с полиморфным наследованием поработать.&lt;br /&gt;&lt;br /&gt;Огромный плюс - консоли везде одинаковые. Например, у вас нет зоопарка видеокарт, как на PC, которые это поддерживают, это не поддерживают, а вот тут у нас драйвер устаревший... И это прекрасно.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Контроль качества&lt;/span&gt;&lt;br /&gt;В играх под PC сложилась такая нехорошая практика - сразу после выхода игры выходит пачка патчей. Здесь с патчами все сложно. Либо их нет совсем, либо их довольно сложно и неудобно выпускать. При этом, если вы играли в игры на консолях, то, возможно, обращали внимание, крэш игры - это что из ряда вон выходящее. Да и вообще багов не видно.&lt;br /&gt;Потому что тут существует Контроль Качества. Вам не удастся себя уговорить, что "и так сойдет" и "никто не заметит". По ту сторону вас ждет не пользователь, которому, в принципе, можно навешать лапши на уши, а платформодержатель. И стоит он насмерть.&lt;br /&gt;&lt;br /&gt;Высокое качество достигается отнюдь не за счет безупречности работы программистов, как почему-то думают менеджеры, которым я про это рассказываю. Программисты тут обычные, в меру раздолбайские. Тщательно выстроен процесс тестирования, на тестировании не экономят.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Закрытость&lt;/span&gt;&lt;br /&gt;Вы не можете задать вопрос в коммьюнити размером с целый мир. У вас есть закрытый форум или список рассылки, это вам не &lt;a href="http://stackoverflow.com/"&gt;stackoverflo&lt;/a&gt;w. Особого выбора библиотек тоже нет. Радуйтесь тому, что есть. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2008/10/blog-post_10.html"&gt;Про консоли&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated 01.12.2010&lt;/span&gt;&lt;br /&gt;&lt;a href="http://ralphbarbagallo.com/2010/11/30/kill-the-gatekeepers/"&gt;Kill the Gatekeepers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8297503542026392683?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8297503542026392683/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8297503542026392683' title='Комментарии: 15'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8297503542026392683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8297503542026392683'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/11/blog-post.html' title='Впечатления от работы с игровыми консолями'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5359103609762778349</id><published>2010-10-22T18:36:00.000+04:00</published><updated>2010-10-22T18:37:00.966+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Electronic Arts приоткрыла EASTL</title><content type='html'>&lt;a href="http://gpl.ea.com/"&gt;EA открыла немножечко исходников&lt;/a&gt;, в том числе EASTL. Насколько я понимаю, далеко не весь. &lt;br /&gt;Чтобы не мучаться и не искать EASTL в этих исходниках самим, можно его посмотреть вот здесь: &lt;a href="http://github.com/paulhodge/EASTL"&gt;EASTL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Там есть аппетитно выглядящие ссылки типа Sims 3, но исходников симов там нет, увы.&lt;br /&gt;&lt;br /&gt;В 2007 году у меня был &lt;a href="http://alenacpp.blogspot.com/2007/06/eastl.html"&gt;пост про EASTL&lt;/a&gt;, где я сказала следующее&lt;br /&gt;&lt;blockquote&gt;Если будут какие-нибудь свободно доступные реализации EASTL, интересно было бы их опробовать.&lt;/blockquote&gt;&lt;br /&gt;Прошло три года и счастье наступило. Хотя, когда именно произошло это событие, я не знаю. Никаких официальных пресс-релизов я не вижу. Судя по всему, EA сделала свою версию &lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;, который под LGPL, и ей пришлось выложить исходники, куда попала часть EASTL.&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;a href="http://msinilo.pl/blog/?p=668"&gt;EA STL released, updated benchmarks&lt;/a&gt; - здесь я узнала об этой новости. Как видно из заголовка, там в статье есть бенчмарки&lt;br /&gt;&lt;br /&gt;Есть чем заняться на выходных :-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5359103609762778349?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5359103609762778349/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5359103609762778349' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5359103609762778349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5359103609762778349'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/10/electronic-arts-eastl.html' title='Electronic Arts приоткрыла EASTL'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8276628308277851932</id><published>2010-10-17T00:06:00.004+04:00</published><updated>2010-10-17T00:59:05.033+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='future'/><title type='text'>Доклад Сюзанны Гилдерт о квантовых компьютерах</title><content type='html'>&lt;a href="http://telexlr8.blip.tv/file/4083093/"&gt;Сюзанна рассказывает какие квантовые компьютеры бывают и какие проблемы требуется решить, чтобы их построить&lt;/a&gt;. Это простой обзорный доклад.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TLoQ1__OkjI/AAAAAAAAAlw/__Vvrh-SLiU/s1600/gildert.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TLoQ1__OkjI/AAAAAAAAAlw/__Vvrh-SLiU/s400/gildert.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5528750012446446130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Доклад лучше смотреть где-то с 3:46, там вначале они проверяли связь и прочее, не понимаю почему не отрезали. Сам доклад около часа, потом вопросы еще на час.&lt;br /&gt;Сюзанна - физик-экспериментатор, специализируется на квантовых устройствах. Работает в компании &lt;a href="http://www.dwavesys.com/"&gt;D-Wave&lt;/a&gt;. Которая, помнится, &lt;a href="http://alenacpp.blogspot.com/2007/04/blog-post_16.html"&gt;много чего обещала&lt;/a&gt;. По слухам, &lt;a href="http://googleresearch.blogspot.com/2009/12/machine-learning-with-quantum.html"&gt;они чего-то с Гуглом мутят&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://physicsandcake.wordpress.com/"&gt;Блог Сюзанны&lt;/a&gt;&lt;br /&gt;&lt;a href="http://videolectures.net/opt08_neven_tabcwt/"&gt;Training a Binary Classifier with the Quantum Adiabatic Algorithm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8276628308277851932?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8276628308277851932/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8276628308277851932' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8276628308277851932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8276628308277851932'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/10/blog-post.html' title='Доклад Сюзанны Гилдерт о квантовых компьютерах'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VUQ3DQEhjsM/TLoQ1__OkjI/AAAAAAAAAlw/__Vvrh-SLiU/s72-c/gildert.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5555408146799689898</id><published>2010-09-28T18:51:00.004+04:00</published><updated>2010-09-29T12:30:41.849+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Отчет об ADD-2010</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKHNKiO54ZI/AAAAAAAAAkw/Z6oVxtshiJY/s1600/add2010-1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKHNKiO54ZI/AAAAAAAAAkw/Z6oVxtshiJY/s200/add2010-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521920199004643730" /&gt;&lt;/a&gt;Итак, 23-24 сентября прошла конференция ADD-2010, на которой я выступала с двумя докладами. Давайте я расскажу как все прошло, начну с себя, любимой.&lt;br /&gt;&lt;br /&gt;Первым в расписании стоял доклад "Искусственный интеллект в играх". Доклад прошел бодро, отзывы в целом хорошие. Плохо было видно мой видеоролик, его можно посмотреть &lt;a href="http://www.youtube.com/watch?v=fM5kY5t8Bz0"&gt;здесь&lt;/a&gt;. Это видео из библиотеки &lt;a href="http://www.red3d.com/cwr/steer/"&gt;OpenSteer&lt;/a&gt;, поэтому лучше прямо на их сайте смотреть Java-демки.&lt;br /&gt;Была любительская прямая видеотрансляция. А я и не знала, что есть такие сервисы... Ее делал &lt;a href="http://twitter.com/force_net"&gt;Максим Высоких&lt;/a&gt;, она &lt;a href="http://www.ustream.tv/recorded/9767140"&gt;доступна в записи&lt;/a&gt;. Там плохо видно и плохо слышно. :-)&lt;br /&gt;Слайды можно посмотреть &lt;a href="http://www.slideshare.net/alenacpp/ss-5305295"&gt;тут&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TKHwgk6DLiI/AAAAAAAAAlI/jgmQ3VEPXd4/s1600/add2010-4.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TKHwgk6DLiI/AAAAAAAAAlI/jgmQ3VEPXd4/s200/add2010-4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521959060586573346" /&gt;&lt;/a&gt;Второй доклад - "С++0х" был менее популярен. Отзывы о нем тоже хорошие. &lt;br /&gt;Слайды &lt;a href="http://www.slideshare.net/alenacpp/c0x"&gt;тут&lt;/a&gt;, любительской записи не было.&lt;br /&gt;&lt;br /&gt;На всех докладах была профессиональная видеозапись и, честно говоря, я не вижу особого смысла смотреть слайды без видео. Лучше всего подождите видео, я напишу отдельный пост когда оно будет готово. &lt;a href="http://stas-fomin.blogspot.com/"&gt;Стас Фомин&lt;/a&gt;, это один из организаторов, честно сказал, что не знает когда именно это будет.&lt;br /&gt;&lt;br /&gt;Дальше про доклады, на которых я побывала. Поскольку я выступала сама, докладов этих немного.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Доклады&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKIDR7oHKLI/AAAAAAAAAlo/gw9lZNas_Yg/s1600/add2010-10.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKIDR7oHKLI/AAAAAAAAAlo/gw9lZNas_Yg/s200/add2010-10.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521979699708242098" /&gt;&lt;/a&gt;Все началось с того, что я опоздала на доклад Евгения Бурмако, где он на глазах у изумленной публики писал код на C# для CUDA. Интересно с технологической точки зрения, сомнительно с практической. Опять же есть &lt;a href="http://www.ustream.tv/recorded/9764700"&gt;любительская запись&lt;/a&gt;. Подробнее можно почитать тут: &lt;a href="http://xeno-by.livejournal.com/35664.html"&gt;Conflux: GPGPU для .NET&lt;/a&gt;&lt;br /&gt;В зале, где читался этот доклад, было несколько мониторов, никогда такого не видела. Удобно код показывать. &lt;br /&gt;&lt;br /&gt;Андрей Карпов читал доклад на тему "Устаревание стандартов кодирования и статический анализ кода". Он представляет разработчиков &lt;a href="http://www.viva64.com/pvs-studio/"&gt;PVS-Studio&lt;/a&gt;, реклама которой висит у меня тут сверху. Начало доклада было несколько затянуто. Рассказывал о типичных ошибках программистов, которые они могут своим анализатором обнаружить. Гордятся свой работой с С++0х. Собираются выпускать бесплатную версию. Приятно было узнать, что в Туле ведутся разработки подобного уровня.&lt;br /&gt; &lt;br /&gt;Яков Сироткин, доклад "Как стать героем". Рассказал несколько бородатых шуток, получится веселый доклад ни о чем.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKHwhojN-gI/AAAAAAAAAlg/lxS41-t3pTI/s1600/add2010-7.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKHwhojN-gI/AAAAAAAAAlg/lxS41-t3pTI/s200/add2010-7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521959078744422914" /&gt;&lt;/a&gt;Николай Мациевский, "Лицензии для Open-Source". Интересный доклад, основанный на собственном опыте. Тут было про лицензии вообще, а также про специфику, связанную с российским законодательством. Также была затронута скользкая тема про обходы проблем с лицензированием. Добротный подготовленный рассказ, вызвал бурную дискуссию в зале. Статья по этому докладу: &lt;a href="http://webo.in/articles/add2010/open-source/"&gt;Насколько открыт Open Source&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Пара слов про доклады, на которых мне побывать не удалось. Очень все хвалили доклад Никиты Фролова про iPhone. Ну а я собираюсь смотреть в записи доклады про дополненную реальность.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Организация конференции&lt;/span&gt;&lt;br /&gt;Все было сделано по уму. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TKHwgt_wLtI/AAAAAAAAAlA/guBlsOkNa54/s1600/add2010-3.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TKHwgt_wLtI/AAAAAAAAAlA/guBlsOkNa54/s200/add2010-3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521959063026413266" /&gt;&lt;/a&gt;Конференция проходила в Ярославле, в ДК Железнодорожный, он находится прямо рядом с вокзалом, искать что-то, плутать в незнакомом городе, не нужно. ДК Железнодорожный - это такой типичный ДК, паркет, рояль, высокие потолки с безумными люстрами, по коридорам бегали маленькие девочки в бантиках, у них тут проходили занятия танцами. Был гардероб. Для конференции этот ДК оказался приспособлен хорошо.&lt;br /&gt;&lt;br /&gt;На конференциях любят рассказывать как круто общаться в кулуарах, но редко кто думает о размере этих самых кулуаров. Вы представляете, вот вся эта толпа народу, которую вы старательно расскаживали в залах, ломанется в перерыв в какой-нибудь маленький коридорчик. Тут же места было навалом, хоть хороводы води. Опять же из-за этих просторов можно было громко вслух разговаривать и во время выступлений - до дверей в залы было далеко, никто никому не мешал.&lt;br /&gt;&lt;br /&gt;WiFi был, ловился везде, работал бесперебойно. Розетки были не только в коридоре, но и даже в залах.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKHwhBSLl0I/AAAAAAAAAlY/jbJdQRnyDyw/s1600/add2010-6.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKHwhBSLl0I/AAAAAAAAAlY/jbJdQRnyDyw/s200/add2010-6.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521959068203980610" /&gt;&lt;/a&gt;Были &lt;a href="http://ru.wikipedia.org/wiki/%D0%A4%D0%BB%D0%B8%D0%BF%D1%87%D0%B0%D1%80%D1%82"&gt;флипчарты&lt;/a&gt;. Там были флипчарт доклады, фотография как раз с одного такого доклада. Но там постоянно кто-то зависал, не только на докладах.  &lt;br /&gt;&lt;br /&gt;Был организован обед в соседнем ресторанчике и это очень правильно. Потому что забегаловок где можно поесть в окрестностях ДК было мало. С едой в этом ресторанчике пожадничали. Но столы были накрыты заранее и можно было нормально посидеть и поесть, давки не было.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TKHwg8xLRdI/AAAAAAAAAlQ/zj7DIi6_yrA/s1600/add2010-5.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TKHwg8xLRdI/AAAAAAAAAlQ/zj7DIi6_yrA/s200/add2010-5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521959066991805906" /&gt;&lt;/a&gt;Во время кофе-брейков были пирожки. Их было много и они были очень стратегично расставлены на столах - через большие промежутки. В итоге обычной кофебрейковской давки не было. На фотографии пирожки уже несколько подъели, но в целом идея понятна.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Замечания&lt;/span&gt;&lt;br /&gt;Ну давайте придеремся к чему-нибудь.&lt;br /&gt;&lt;br /&gt;Быстро стало понятно, что круглый стол без жесткого модерирования превращается в вечеринку троллей.&lt;br /&gt;&lt;br /&gt;Туалеты было непросто найти, на это многие жаловались. Я не смогла это сделать без посторонней помощи, мне подсказали.&lt;br /&gt;&lt;br /&gt;В конце было затянутое закрытие с вручением призов. Многие уехали к тому моменту, народу было мало.&lt;br /&gt;&lt;br /&gt;Размещение. Это общероссийская беда, никто ее не решил. Мне, как докладчику, гостиница была оплачена, это обычная практика. Качество не то чтобы кошмар-кошмар, но цене не соответсвует. Для студентов цены недостижимые просто. Европейцы любят кооперироваться, снимать один номер на двоих. Где-то, по-моему это был QuakeCon, народ спал в спальных мешках прямо в здании конференции. Но, я думаю, такой поворот событий несколько расстроит ДК Железнодорожный :-).&lt;br /&gt;&lt;br /&gt;Блокнот в раздаточных материалах был, но был неудобный, с рекламой внутри. Он был мягкий, формат A4, нельзя на коленке в него что-то записывать. Я человек подготовленный, у меня был свой правильный блокнот с собой, я пользовалась им. Программа конференции была напечатана внутри блокнота, это неудобно. На обложку ее лучше вынести. Или отдельно положить.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TKHQuVrVWcI/AAAAAAAAAk4/rRScwmvCHwk/s1600/add2010-2.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TKHQuVrVWcI/AAAAAAAAAk4/rRScwmvCHwk/s200/add2010-2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5521924112644397506" /&gt;&lt;/a&gt;ADD позиционировалась как конференция на которой специалисты разных специализаций могут узнать чем занимаются другие. Мы с мужем поймали себя на том, что ходим слушать доклады по нашим специализациям. У меня сложилось впечатление, что ADD хорошо подходит для тех, кто хочет сменить специализацию, кто временно сидит без работы. Ну и ADD - идеальное место для студентов. Вы сможете поговорить с самыми разными специалистами и выбрать что-то для себя. &lt;br /&gt;&lt;br /&gt;На конференции слышала фразу "У нас тут конечно не Москва...". Это прекрасно, что не Москва. В Москве любая конференция вырождается в конференцию понтов.&lt;br /&gt;&lt;br /&gt;В целом - респекты организаторам. Надеюсь, что конференция будет продолжена.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5555408146799689898?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5555408146799689898/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5555408146799689898' title='Комментарии: 20'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5555408146799689898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5555408146799689898'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/09/add-2010.html' title='Отчет об ADD-2010'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TKHNKiO54ZI/AAAAAAAAAkw/Z6oVxtshiJY/s72-c/add2010-1.jpg' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5405413908378758505</id><published>2010-09-16T23:39:00.012+04:00</published><updated>2010-09-17T11:58:25.435+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Игра Alien Swarm, с исходниками</title><content type='html'>Этим летом Valve сделала жест невиданной щедрости. Они совершенно нахяляву выложили на Steam игру Alien Swarm. И &lt;strike&gt;полные&lt;/strike&gt; исходники к ней. Я знаю, народ постоянно ищет исходники, чтобы по ним поучиться, вот оно.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TJJ-qvM_8PI/AAAAAAAAAkY/d_0rJFGLoqs/s1600/alienswarm.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TJJ-qvM_8PI/AAAAAAAAAkY/d_0rJFGLoqs/s400/alienswarm.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517611766172872946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated 17.09.2010:&lt;/span&gt;&lt;br /&gt;Дополнения по результатам разбирательства с исходниками, поисков в интернетах и комментариев:&lt;br /&gt;Игра сделана на движке &lt;a href="http://ru.wikipedia.org/wiki/Source"&gt;Source&lt;/a&gt; и исходников самого движка нет. Причем, по слухам, движок этот в AlienSwarm модифицирован. Итого - нету кода рендера, физики. Зато AI, похоже, весь есть, по крайней мере все, что мне было нужно, я нашла.&lt;br /&gt;Разбирательства с тем, чего есть, а чего нет, затруднены из-за отсутствия какой-либо документации. Есть &lt;a href="http://developer.valvesoftware.com/wiki/Alien_Swarm_SDK"&gt;wiki по AlienSwarm&lt;/a&gt;, информации там мало.&lt;br /&gt;Написан AlienSwarm на С++, а не на своем скриптовом языке, это приятно.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/Updated 17.09.2010:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Давайте я расскажу как это все скачать и куда смотреть, это не очень тривиальный процесс.&lt;br /&gt;&lt;br /&gt;Сначала надо зайти на &lt;a href="http://store.steampowered.com/app/630/"&gt;Steam и инсталлировать Alien Swarm&lt;/a&gt;. Если вы там не зарегистрированы, вам предложат зарегистрироваться. И заставят скачать и установить их клиента. Игра здоровая! Что-то типа гигабайта.&lt;br /&gt;&lt;br /&gt;Исходники Alien Swarm устанавливаются из Steam клиента из меню Tools.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TJJ0Zyan21I/AAAAAAAAAj4/okrVza6AmU4/s1600/steam-tools.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 264px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TJJ0Zyan21I/AAAAAAAAAj4/okrVza6AmU4/s400/steam-tools.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517600479861267282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Исходники приедут вот сюда, это путь по умолчанию&lt;br /&gt;C:\Program Files\Steam\steamapps\common\alien swarm\sdk_src&lt;br /&gt;&lt;br /&gt;Наверняка вам понадобится дебагная консоль, она включается в Опциях.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TJJ6hnXvOcI/AAAAAAAAAkA/kNayGEjcUaA/s1600/steam-enable-console.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TJJ6hnXvOcI/AAAAAAAAAkA/kNayGEjcUaA/s400/steam-enable-console.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517607211405097410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Вызывается по тильде, ~&lt;br /&gt;&lt;br /&gt;Консоль выглядит вот так:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TJJ9cti0pAI/AAAAAAAAAkQ/dBfmDTO-a10/s1600/alienswarm-console.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TJJ9cti0pAI/AAAAAAAAAkQ/dBfmDTO-a10/s400/alienswarm-console.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5517610425697739778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Команды дебагной консоли, которыми я пользовалась&lt;br /&gt;ai_nodes - показывает все waypoint графа&lt;br /&gt;ai_show_connect - показывает связи между точками waypoint графа&lt;br /&gt;&lt;br /&gt;Сейчас еще пороюсь, может еще чего хорошее найду.&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://aigamedev.com/open/reviews/alienswarm-node-graph/"&gt;Are Waypoint Graphs Outnumbered? Not in AlienSwarm!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.steampowered.com/forums/showthread.php?p=16195532"&gt;Alien Swarm SDK tutorials &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5405413908378758505?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5405413908378758505/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5405413908378758505' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5405413908378758505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5405413908378758505'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/09/alien-swarm.html' title='Игра Alien Swarm, с исходниками'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VUQ3DQEhjsM/TJJ-qvM_8PI/AAAAAAAAAkY/d_0rJFGLoqs/s72-c/alienswarm.PNG' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2882719835739309115</id><published>2010-08-26T15:47:00.000+04:00</published><updated>2010-08-26T15:47:56.704+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='future'/><title type='text'>Доказательство Деолаликара скорее всего неправильное</title><content type='html'>По &lt;a href="http://alenacpp.blogspot.com/2010/08/p-np.html"&gt;предыдущему посту по поводу доказательства P ?= NP проблемы&lt;/a&gt; возникли вопросы, поэтому я решила написать еще один пост.&lt;br /&gt;&lt;br /&gt;Первый вопрос, о чем вообще речь, что такое P ?= NP ?&lt;br /&gt;Давайте я приведу пару ссылок на упрощенные описания проблемы. &lt;br /&gt;&lt;a href="http://lenta.ru/articles/2010/08/12/np/"&gt;Статья на lenta.ru&lt;/a&gt;&lt;br /&gt;&lt;a href="http://scottaaronson.com/blog/?p=459"&gt;P vs. NP for Dummies&lt;/a&gt;&lt;br /&gt;К сожалению, эти упрощенные описания настолько упрощены, что на практике они бесполезны. Вы - программисты, ребята умные, поэтому почитайте что-нибудь посерьезнее, например.&lt;br /&gt;&lt;a href="http://www.scottaaronson.com/democritus/lec6.html"&gt;Lecture 6: P, NP, and Friends&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Computational_complexity_theory"&gt;Complexity theory&lt;/a&gt; статья в Википедии, далее следуйте по ссылкам.&lt;br /&gt;Книга Пападимитриу, Стайглица "Комбинаторная оптимизация". Классическая книга, рекомендуется студентам, которые изучают теорию сложности.&lt;br /&gt;&lt;br /&gt;Курс лекций по теории сложности обычно читается в вузах студентам, изучающим computer science. Все мои познания по этой теме как раз из курса, который я слушала на ВМиК МГУ. Я не могу сказать, что без этих знаний жить никак нельзя, но как минимум они дадут вам дополнительные очки при прохождении собеседований в компании с уютными офисами из стали и стекла, с названиями, выложенными разноцветными буковками.&lt;br /&gt;&lt;br /&gt;Вопрос номер два: а как там дела с проверкой доказательства?&lt;br /&gt;Несмотря на то, что окончательные выводы не сделаны, все говорит о том, что доказательство не верно. Деолаликар, правда, обещает исправить все замечания, но то, что он сможет это сделать, вызвает большие сомнения.&lt;br /&gt;&lt;br /&gt;Страничка в формате wiki, посвященная доказательству &lt;a href="http://michaelnielsen.org/polymath1/index.php?title=Deolalikar%27s_P!%3DNP_paper"&gt;Deolalikar P vs NP paper&lt;/a&gt;. Страница постоянно обновляется, так что самую свежую информацию следует искать здесь.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cacm.acm.org/blogs/blog-cacm/97587-a-tale-of-a-serious-attempt-at-p%E2%89%A0np/fulltext"&gt;A Tale of A Serious Attempt At P≠NP&lt;/a&gt; Ричард Липтон подробно рассказывает о том, а что вообще это было.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://scottaaronson.com/blog/?p=458"&gt;Eight Signs A Claimed P≠NP Proof Is Wrong&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2882719835739309115?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2882719835739309115/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2882719835739309115' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2882719835739309115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2882719835739309115'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/08/blog-post_26.html' title='Доказательство Деолаликара скорее всего неправильное'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7084406081748572553</id><published>2010-08-19T19:39:00.003+04:00</published><updated>2010-09-21T19:43:37.678+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Подкаст с участием Алекса Отта</title><content type='html'>&lt;a href="http://taop.rpod.ru/168440.html"&gt;Алекс Отт рассказывает о функциональном программировании&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Updated 21.09.2010: И продолжение рассказа Алекса: &lt;a href="http://taop.rpod.ru/172639.html"&gt;о языке Clojure и жизни программистов в Германии&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7084406081748572553?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7084406081748572553/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7084406081748572553' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7084406081748572553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7084406081748572553'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/08/blog-post.html' title='Подкаст с участием Алекса Отта'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5705231357178781710</id><published>2010-08-15T23:26:00.003+04:00</published><updated>2010-08-16T10:59:00.665+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Буду выступать на ADD-2010</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TGg9wf_XMVI/AAAAAAAAAjo/dCk20-3lYzY/s1600/bf-logo_small.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 148px; height: 156px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TGg9wf_XMVI/AAAAAAAAAjo/dCk20-3lYzY/s400/bf-logo_small.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5505718447890706770" /&gt;&lt;/a&gt;Конференция &lt;a href="http://add.it-conf.ru"&gt;ADD-2010&lt;/a&gt; - это конференция разработчиков ПО за вменяемые деньги. Проходит 23-24 сентября, в Ярославле, сейчас стоит 6000 рублей (вместе с обедом, но без проживания).&lt;br /&gt;&lt;br /&gt;Меня туда позвал &lt;a href="http://lib.custis.ru/Add-stas-interview"&gt;Стас Фомин&lt;/a&gt;, надо было только определиться с темой. В процессе раздумий и общения в Твиттере родилось две темы: "C++0x" и "Искусственный интеллект в играх". Надо было выбрать одну из них и тут Стас предложил гениальную идею - а зачем выбирать? Итого: я буду читать два доклада. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;C++0x&lt;/span&gt;&lt;br /&gt;Доклад о разработке нового стандарта языка С++. Чего хотели добиться, чего получилось, от чего пришлось отказаться.&lt;br /&gt;Разработчики компиляторов не стали дожидаться выхода стандарта и уже много чего реализовали. Поэтому есть уже такие возможности С++0х, которые можно использовать прямо сейчас. О некоторых наиболее интересных возможностях будет рассказано. В основном речь будет вестись о GCC и MSVC++.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Искусственный интеллект в играх&lt;/span&gt;&lt;br /&gt;Доклад ориентирован на тех, кто вообще никогда не занимался ИИ в играх и хочет получить об этой области общее представление. Будет рассказано о задачах, которые стоят перед программистом ИИ в играх. О вечном споре с теоретиками по поводу нейронных сетей, об алгоритмах поиска пути, о некоторых не очень честных приемах и о вполне честных, часто используемых подходах.&lt;br /&gt;&lt;br /&gt;Все конференции разработчиков, про которые мне известно, в итоге вырождались в какой-то унылый междусобойчик, где одни и те же люди, рассказывают всё одно и то же по энному разу, при этом навязчиво рекламируя свои продукты и себя любимых. Очень хочется, чтобы ADD-2010 была не такой. Я со своей стороны сделаю все возможное, чтобы она была интересна разработчикам, а там посмотрим что получится. В любом случае, попытка достойна уважения.&lt;br /&gt;&lt;br /&gt;Цена билетов, которая действует на настоящий момент - 6000 рублей. Это сильно дешевле, чем аналогичные московские конференции. Я слышала цену в 15000 на какую-то конференцию, совершенно негуманные цифры. Но все равно дороговато, на мой взгляд.&lt;br /&gt;Проходит ADD-2010 в Ярославле. Оно и понятно, в Москве, насколько я слышала от организаторов других конференций, львиную долю от стоимости билета составляет аренда помещения. Я с удивлением обнаружила, что &lt;a href="http://ru.wikipedia.org/wiki/%D0%AF%D1%80%D0%BE%D1%81%D0%BB%D0%B0%D0%B2%D0%BB%D1%8C"&gt;Ярославль&lt;/a&gt; находится недалеко от Москвы. На электричке до него ехать часа четыре, на машине можно и быстрее добраться. В Ярославле в этом году юбилей города, настроение праздничное. Короче, отличный повод выбраться из Москвы и увидеть памятник &lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BC%D1%8F%D1%82%D0%BD%D0%B8%D0%BA_%D0%AF%D1%80%D0%BE%D1%81%D0%BB%D0%B0%D0%B2%D1%83_%D0%9C%D1%83%D0%B4%D1%80%D0%BE%D0%BC%D1%83_%28%D0%AF%D1%80%D0%BE%D1%81%D0%BB%D0%B0%D0%B2%D0%BB%D1%8C%29"&gt;Ярославу Мудрому&lt;/a&gt; не только на тысячерублевке :-).&lt;br /&gt;&lt;br /&gt;Мы, как говорится, работаем для вас, поэтому если уже сейчас есть какие-то вопросы или пожелания по моим докладам - пишите комментарии!&lt;br /&gt;&lt;br /&gt;P.S. Стас пишет, что если зарегистрироваться со ссылкой на меня, то можно получить 5% скидку. Для этого надо указать промо код alenacpp.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5705231357178781710?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5705231357178781710/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5705231357178781710' title='Комментарии: 18'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5705231357178781710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5705231357178781710'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/08/add-2010.html' title='Буду выступать на ADD-2010'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TGg9wf_XMVI/AAAAAAAAAjo/dCk20-3lYzY/s72-c/bf-logo_small.gif' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3974212429292260764</id><published>2010-08-10T16:28:00.006+04:00</published><updated>2010-08-26T15:49:28.478+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='future'/><title type='text'>P != NP, доказательство Виная Деолаликара</title><content type='html'>Updated 26.08.2010: &lt;a href="http://alenacpp.blogspot.com/2010/08/blog-post_26.html"&gt;Доказательство Деолаликара скорее всего неправильное&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6 августа Винай Деолаликар (&lt;a href="http://en.wikipedia.org/wiki/Vinay_Deolalikar"&gt;Vinay Deolalikar&lt;/a&gt;) разослал доказательство одной из проблем тысячелетия, которая близка программистам. Это доказательство того, что &lt;a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B2%D0%B5%D0%BD%D1%81%D1%82%D0%B2%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_P_%D0%B8_NP"&gt;P != NP&lt;/a&gt;. Осталось убедиться в том, что это доказательство верно. &lt;br /&gt;&lt;br /&gt;Вот само доказательство: &lt;a href="http://www.hpl.hp.com/personal/Vinay_Deolalikar/Papers/pnp12pt.pdf"&gt;P != NP&lt;/a&gt; (Ахтунг! 100 страниц математических формул)&lt;br /&gt;&lt;br /&gt;Я поискала в Интернете отзывы математиков и не математиков, вот чего нашла.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gregbaker.ca/blog/2010/08/07/p-n-np/"&gt;Первое упоминание этого доказательства в открытых источниках&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://science.slashdot.org/story/10/08/08/226227/Claimed-Proof-That-P--NP"&gt;Веселое обсуждение на слэшдоте&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;За доказательство проблемы тысячелетия дают миллион долларов. &lt;a href="http://scottaaronson.com/blog/?p=456"&gt;Скотт Ааронсон накинул еще 200 тысяч.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Математик &lt;a href="http://en.wikipedia.org/wiki/Richard_J._Lipton"&gt;Ричард Липтон&lt;/a&gt; опубликовал у себя в блоге две статьи&lt;br /&gt;&lt;a href="http://rjlipton.wordpress.com/2010/08/08/a-proof-that-p-is-not-equal-to-np/"&gt;A Proof That P Is Not Equal To NP?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rjlipton.wordpress.com/2010/08/09/issues-in-the-proof-that-p%E2%89%A0np/"&gt;Issues In The Proof That P≠NP&lt;/a&gt; - результаты первой проверки. Есть несколько замечаний по доказательству, но это именно замечания, они не означают, что доказательство неправильное. &lt;br /&gt;&lt;br /&gt;Откровенно неправильные доказательства этой проблемы предлагаются довольно часто. Но это доказательство сильно отличается от многочисленных жалких попыток. Как говорят математики, оно "выглядит серьезно". Даже если оно неправильное, то там высказано несколько интересных идей, которые могут привести к правильному доказательству. Например, народ отмечает использование &lt;a href="http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B8%D0%B7%D0%B8%D0%BA%D0%B0"&gt;статистической физики&lt;/a&gt;. То есть это как минимум достойная попытка.&lt;br /&gt;&lt;br /&gt;Проверка правильности продолжается и будет продолжаться еще долго, я думаю. Будет интересно почитать мнение русскоязычных математиков, специалистов по теории сложности, киньте ссылку, если у кого есть.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3974212429292260764?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3974212429292260764/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3974212429292260764' title='Комментарии: 17'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3974212429292260764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3974212429292260764'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/08/p-np.html' title='P != NP, доказательство Виная Деолаликара'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2775565160501733648</id><published>2010-07-30T15:10:00.002+04:00</published><updated>2010-07-30T18:51:15.653+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Списки с одновременным доступом Тима Брея</title><content type='html'>В посте &lt;a href="http://www.tbray.org/ongoing/When/201x/2010/07/13/Lock-Free-Array-Update"&gt;Concurrent List Update With Shuffling&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Tim_Bray"&gt;Тим&lt;/a&gt; описывает задачу, которую решил когда-то давно.&lt;br /&gt;&lt;br /&gt;У него был огромный упорядоченный список, разбитый на страницы. Получается, что каждая страница - это тоже список, но не большой. В качестве элементов списка он в примерах использует целые числа. Я расскажу только как была организована работа с одной страницей, полное описание смотрите по ссылке.&lt;br /&gt;&lt;br /&gt;Тиму надо было работать со списком в многопоточном приложении, количество локов должно быть минимально. Для поиска он использовал бинарный поиск, который умеет работать с дубликатами, в данном случае это важно.&lt;br /&gt;&lt;br /&gt;Как была организована работа со страницей. Записывает он все это так: сначала указано количество элементов, их четыре. Дальше перечислены сами элементы:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;4: 10, 20, 30, 40&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Теперь мы добавляем туда число 15, которое должно разместиться между 10 и 20. Допустим, что у нас есть еще свободное место на странице, а число 4 означает только число элементов, которые используются в данный момент.&lt;br /&gt;&lt;br /&gt;Начинаем процесс вмешивания (shuffling-in) нового злемента&lt;br /&gt;&lt;pre&gt;&lt;code&gt;4: 10, 20, 30, 40, &lt;span style="font-weight:bold; color:#FF0000; "&gt;40&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Теперь увеличиваем счетчик&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="font-weight:bold; color:#FF0000; "&gt;5&lt;/span&gt;: 10, 20, 30, 40, 40&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Перемещаем элемент...&lt;br /&gt;&lt;pre&gt;&lt;code&gt;5: 10, 20, 30, &lt;span style="font-weight:bold; color:#FF0000; "&gt;30&lt;/span&gt;, 40&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;5: 10, 20, &lt;span style="font-weight:bold; color:#FF0000; "&gt;20&lt;/span&gt;, 30, 40&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;И в конце ставим элемент на его законное место.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;5: 10, &lt;span style="font-weight:bold; color:#FF0000; "&gt;15&lt;/span&gt;, 20, 30, 40&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Удаление происходит аналогично.&lt;br /&gt;&lt;br /&gt;Итого: можно искать по списку в то время, когда в него кто-то пишет. Но если пишут несколько потоков, то приходится список лочить.&lt;br /&gt;&lt;br /&gt;Основной минус всего этого - если мы начали искать число 15 из приведенного примера, в то время как оно ползет до своего места, то мы его не найдем.&lt;br /&gt;&lt;br /&gt;Тим Брей спрашивает, не придумал ли он чего странное, но в комментариях пока ничего эдакого не нашли.&lt;br /&gt;&lt;br /&gt;Спасибо &lt;a href="http://softwaremaniacs.org/blog/"&gt;Maniac&lt;/a&gt;'у за ссылку.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(Пост опубликован в рамках &lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post.html"&gt;недели борьбы с велосипедизмом&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2775565160501733648?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2775565160501733648/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2775565160501733648' title='Комментарии: 14'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2775565160501733648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2775565160501733648'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/blog-post_30.html' title='Списки с одновременным доступом Тима Брея'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5780230948288013885</id><published>2010-07-29T12:30:00.003+04:00</published><updated>2010-08-24T15:46:15.398+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Развернутые списки</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Unrolled_linked_list"&gt;Развернутый список&lt;/a&gt;, отличается от обычного тем, что в его узле содержится несколько элементов, а не один, как в обычном.&lt;br /&gt;И такое простое решение обеспечивает очень интересные преимущества перед обычным списком. Во-первых, экономится память. Приятно, но это не главное. Главное, что в кэш теперь попадает не один элемент, а сразу пачка, и это сказывается на производительности самым положительным образом. Количество элементов в узле развернутого списка удобно выбирать таким, чтобы они как раз укладывались в кэш-линию.&lt;br /&gt;&lt;br /&gt;Развернутые списки - это простой пример структуры данных, которая знает о существовании кэша и умеет это использовать. &lt;br /&gt;&lt;br /&gt;Есть примеры и посложнее, например деревья Ван Эмде Боаса (они же vEB деревья).&lt;br /&gt;Вообще с этими деревьями интересно получилось. По привычке &lt;a href="http://en.wikipedia.org/wiki/Van_Emde_Boas_tree"&gt;я пошла в Википедию&lt;/a&gt; и долго тупила в картинку, пытаясь понять что же там изображено. Я всегда думала, что они выглядят вот так (картинка из слайдов &lt;a href="http://www.cs.bris.ac.uk/Research/Seminars/departmental/2008-03-13_DeptSeminar_BenSach.pdf"&gt;Descent into Cache-Oblivion [.pdf]&lt;/a&gt;):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TFAPLNm06fI/AAAAAAAAAi4/16pRy-5lFeU/s1600/vanemdeboas.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 273px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TFAPLNm06fI/AAAAAAAAAi4/16pRy-5lFeU/s400/vanemdeboas.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5498911830324865522" /&gt;&lt;/a&gt;&lt;br /&gt;После чего нашла упоминания того, что это ненастоящие деревья Ван Эмде Боаса. Поскольку картинка из Википедии мне ничем не помогла, я попыталась найти труд самого Ван Эмде Боаса. Он называется Design and Implementation of an Efficient Priority Queue и его предлагают покупать за деньги. Короче, если вы знаете ссылку на хорошее описание, киньте ее, пожалуйста.&lt;br /&gt;&lt;br /&gt;(Пост опубликован в рамках &lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post.html"&gt;недели борьбы с велосипедизмом&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/devdev/archive/2007/06/12/cache-oblivious-data-structures.aspx"&gt;Cache-oblivious data structures&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/04/blog-post.html"&gt;Несколько ссылок на материалы про кэш&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/devdev/archive/2005/08/22/454887.aspx"&gt;Unrolled linked lists&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5780230948288013885?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5780230948288013885/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5780230948288013885' title='Комментарии: 13'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5780230948288013885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5780230948288013885'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/blog-post_29.html' title='Развернутые списки'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TFAPLNm06fI/AAAAAAAAAi4/16pRy-5lFeU/s72-c/vanemdeboas.PNG' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3544514046478261147</id><published>2010-07-28T12:30:00.000+04:00</published><updated>2010-07-28T12:33:48.393+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Красно-черные деревья</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_VUQ3DQEhjsM/RkmCEPRefNI/AAAAAAAAAFo/WgcdBLWvuNQ/s1600-h/darthmaul.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_VUQ3DQEhjsM/RkmCEPRefNI/AAAAAAAAAFo/WgcdBLWvuNQ/s400/darthmaul.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5064722265285754066" /&gt;&lt;/a&gt;Прежде чем начинать говорить о красно-черных деревьях, немного о бинарных деревьях вообще. Важно, чтобы дерево было сбалансированным, чтобы длины поддеревьев отличались не больше чем на единицу. Если это не так, работа с таким деревом становится более затратной по времени и смысла в таком дереве уже нет. Однако, при операциях вставки и добавления дерево идет вразнос. Одни ветки становятся сильно длинее других. Его можно сбалансировать и привести ветки в порядок. Для этого придуманы самобалансирующиеся деревья - при вставке элементов им ветки выравнивают. Но балансирование - дорогая операция. Лучше всего - золотая середина. &lt;a href="http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE-%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE"&gt;Красно-черное дерево&lt;/a&gt;, где узлы помечены черным и красным цветами, называют "достаточно сбалансированным". Длины поддеревьев у него могут отличаться больше, чем на единицу. Но никогда больше чем в два раза.&lt;br /&gt;&lt;br /&gt;Пример использования из реальной жизни: std::map'ы обычно реализуют через красно-черные деревья.&lt;br /&gt;&lt;br /&gt;Картинка из Википедии, которую обычно приводят в качестве примера красно-черного дерева, мне не нравится.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TE6uQ3SG58I/AAAAAAAAAio/Du_XJJpm-g8/s1600/800px-Red-black_tree_example.svg.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 192px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TE6uQ3SG58I/AAAAAAAAAio/Du_XJJpm-g8/s400/800px-Red-black_tree_example.svg.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5498523799806994370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Эта картинка дает неверное впечатление. Дерево, изображенное на ней, сбалансировано. И разноцветные вершины расположены рядами. И создается ощущение, что оно всегда так. Вот картинка получше (из статьи &lt;a href="http://scienceblogs.com/goodmath/2009/11/advanced_haskell_data_structur.php"&gt;Advanced Haskell Data Structures: Red-Black Trees&lt;/a&gt;):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TE_o0htAoRI/AAAAAAAAAiw/pYnn2kS8pAY/s1600/result-tree.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 298px; height: 189px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TE_o0htAoRI/AAAAAAAAAiw/pYnn2kS8pAY/s400/result-tree.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5498869659140661522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B0%D1%81%D0%BD%D0%BE-%D1%87%D1%91%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE"&gt;Формальное описание красно-черного дерева и его свойств&lt;/a&gt; вы найдете в Википедии, а я вам предлагаю посмотреть вставку элеметов в красно-черное дерево под бодрящую музыку.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/watch?v=vDHFF4wjWYU"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/vDHFF4wjWYU" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Если хочется расширить и углубить свое знание красно-черных деревьяв - вот вам &lt;a href="http://videolectures.net/mit6046jf05_demaine_lec10/"&gt;хорошая лекция по красно-черным деревьям&lt;/a&gt;. На английском.&lt;br /&gt;&lt;br /&gt;(Пост опубликован в рамках &lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post.html"&gt;недели борьбы с велосипедизмом&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3544514046478261147?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3544514046478261147/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3544514046478261147' title='Комментарии: 17'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3544514046478261147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3544514046478261147'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/blog-post_28.html' title='Красно-черные деревья'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_VUQ3DQEhjsM/RkmCEPRefNI/AAAAAAAAAFo/WgcdBLWvuNQ/s72-c/darthmaul.jpg' height='72' width='72'/><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3341157563941978078</id><published>2010-07-27T13:00:00.002+04:00</published><updated>2010-07-27T13:40:08.327+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Фильтр Блума</title><content type='html'>&lt;a href="http://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%91%D0%BB%D1%83%D0%BC%D0%B0"&gt;Фильтр Блума&lt;/a&gt; - это структура данных, придуманная Бёртоном Блумом в 1970 году, которая позволяет быстро проверять принадлежность элемента множеству, при этом не затратная по памяти.&lt;br /&gt;&lt;br /&gt;Фильтр Блума представляет собой битовый массив, в которой с помощью нескольких хэш-функций отображается каждый элемент. Картинка из Википедии.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TE15kVGIyaI/AAAAAAAAAig/-NfyvM9pvdY/s1600/649px-Bloom_filter.svg.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 144px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TE15kVGIyaI/AAAAAAAAAig/-NfyvM9pvdY/s400/649px-Bloom_filter.svg.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5498184385134381474" /&gt;&lt;/a&gt;&lt;br /&gt;Фильтр Блума может сработать ложно. То есть элемента во множестве нет, а он говорит, что есть. И чем больше элементов в множестве, тем выше вероятность ложного срабатывания. Однако, если вы знаете, что основной массы элементов в вашем множестве нет, то этот фильтр очень удобен. Вы сначала прогоняете их все через фильтр. А потом проверяете еще раз каким-нибудь иным более точным образом.&lt;br /&gt;Ложные срабатывания - не единственная проблема фильтра Блума. Еще из него нельзя удалять элементы. Есть различные расширения фильтра Блума, которые все-таки позволяют это делать, но, понятное дело, не бесплатно.&lt;br /&gt;&lt;br /&gt;Пример использования из Википедии:&lt;br /&gt;Google BigTable  использует фильтры Блума для уменьшения числа обращений к жесткому диску при проверке на существование заданной строки или столбца в таблице базы данных.&lt;br /&gt;&lt;br /&gt;(Пост опубликован в рамках &lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post.html"&gt;недели борьбы с велосипедизмом&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3341157563941978078?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3341157563941978078/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3341157563941978078' title='Комментарии: 20'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3341157563941978078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3341157563941978078'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/blog-post_27.html' title='Фильтр Блума'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/TE15kVGIyaI/AAAAAAAAAig/-NfyvM9pvdY/s72-c/649px-Bloom_filter.svg.png' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-9153686644382976118</id><published>2010-07-26T22:59:00.004+04:00</published><updated>2010-07-26T23:14:00.467+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Пост Will it optimize?</title><content type='html'>&lt;a href="http://ridiculousfish.com/blog/archives/2010/07/23/will-it-optimize/"&gt;Will it optimize?&lt;/a&gt; - опросник, в котором вам предлагается угадать будет ли GCC проводить оптимизацию кода. Сложно и познавательно.&lt;br /&gt;&lt;br /&gt;Там очень здоровая шапка, чуть вниз отмотайте.&lt;br /&gt;&lt;br /&gt;Спасибо &lt;a href="http://softwaremaniacs.org/blog/"&gt;Maniac&lt;/a&gt;'у за ссылку.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-9153686644382976118?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/9153686644382976118/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=9153686644382976118' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/9153686644382976118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/9153686644382976118'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/will-it-optimize.html' title='Пост Will it optimize?'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-1556790285521982757</id><published>2010-07-26T15:19:00.005+04:00</published><updated>2010-07-26T17:07:23.371+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Расстояние Левенштейна</title><content type='html'>В институтах всех нас учат сравнивать две строки  по принципу равны/не равны и искать строку в подстроке. На практике же, когда строки не равны, интересен вопрос, а насколько отличаются две строки? &lt;br /&gt;&lt;br /&gt;Расстояние Левенштейна определяет, сколько раз надо добавить/удалить/заменить символ, чтобы одну строку превратить в другую. Например, расстояние между словами kitten и sitting равно трем. Этот, и похожие алгоритмы используется в спеллчекерах, при распознавании текста, да и много еще где.&lt;br /&gt;&lt;br /&gt;Алгоритм подсчета расстояния Левенштейна &lt;a href="http://en.wikipedia.org/wiki/Levenshtein_distance"&gt;описан в Википедии&lt;/a&gt;, с псевдокодом. &lt;a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%9B%D0%B5%D0%B2%D0%B5%D0%BD%D1%88%D1%82%D0%B5%D0%B9%D0%BD%D0%B0"&gt;Есть на русском&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.merriampark.com/ld.htm"&gt;Еще одно описание алгоритма&lt;/a&gt;, с ява-апплетом, который умеет считать расстояние Левенштейна.&lt;br /&gt;&lt;br /&gt;Вообще этих расстояний много разных, по вышеприведенным ссылкам найдете. Например есть &lt;a href="http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance"&gt;расстояние Дамерау — Левенштейна&lt;/a&gt;, чуть посложнее, в него добавляется перестановка.&lt;br /&gt;&lt;br /&gt;(Пост опубликован в рамках &lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post.html"&gt;недели борьбы с велосипедизмом&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-1556790285521982757?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/1556790285521982757/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=1556790285521982757' title='Комментарии: 16'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1556790285521982757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1556790285521982757'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/blog-post_26.html' title='Расстояние Левенштейна'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7553485331917291265</id><published>2010-07-26T14:01:00.005+04:00</published><updated>2010-08-24T15:35:32.216+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Неделя борьбы с велосипедизмом</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TE1dsNixWLI/AAAAAAAAAiY/WeEFJzO8X9Q/s1600/bicycle.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 90px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TE1dsNixWLI/AAAAAAAAAiY/WeEFJzO8X9Q/s400/bicycle.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5498153734220372146" /&gt;&lt;/a&gt;Все любят смеяться над новичками, которые норовят придумать свой уникальный алгоритм или &lt;a href="http://en.wikipedia.org/wiki/Hash_table"&gt;хэш&lt;/a&gt; со сложностью доступа O(n) в лучшем случае (true story!). Однако бывает, что мозг далеко уже не младших программистов порождает нежизнеспособных колченогих уродцев, которые значительно хуже существующих аналогов. А остановить их некому. Поэтому на этой неделе я сделаю несколько постов про алгоритмы и структуры данных, которые не входят в стандартный курс по программированию. Это не какие-то передовые достижения науки, да и информацию по ним по всем можно легко найти в Интернете. Но если не знаешь, что именно искать, то можно так никогда и не найти.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Updated 24.08.2010&lt;/span&gt;&lt;br /&gt;В рамках недели были рассмотрены следующие темы&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post_26.html"&gt;Расстояние Левенштейна&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post_27.html"&gt;Фильтр Блума&lt;/a&gt; &lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post_28.html"&gt;Красно-черные деревья&lt;/a&gt; &lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post_29.html"&gt;Развернутые списки&lt;/a&gt; &lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/07/blog-post_30.html"&gt;Списки с одновременным доступом Тима Брея&lt;/a&gt; &lt;br /&gt;И бонус с дружественного блога &lt;a href="http://easy-coding.blogspot.com/2010/08/blog-post.html"&gt;Поиск подстроки в строке: алгоритм Кнута-Морриса-Пратта&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://www.tomkleinpeter.com/2008/02/23/what-should-be-in-your-programming-toolbox/"&gt;What should be in your programming toolbox? &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tomkleinpeter.com/2008/02/25/5-more-essentials-for-your-programming-toolbox/"&gt;5 more essentials for your programming toolbox&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tomkleinpeter.com/2008/03/17/programmers-toolbox-part-3-consistent-hashing/"&gt;Programmer’s Toolbox Part 3: Consistent Hashing&lt;/a&gt;. Об этом же на русском &lt;a href="http://www.jprogers.info/2009/11/consistent-hashing.html"&gt;Консистентные хэши (Consistent hashing)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7553485331917291265?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7553485331917291265/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7553485331917291265' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7553485331917291265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7553485331917291265'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/blog-post.html' title='Неделя борьбы с велосипедизмом'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/TE1dsNixWLI/AAAAAAAAAiY/WeEFJzO8X9Q/s72-c/bicycle.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-6264371029383091073</id><published>2010-07-14T19:05:00.003+04:00</published><updated>2010-07-14T23:29:10.545+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><title type='text'>Paris Game AI Conference 2010. Общие впечатления</title><content type='html'>Вы думали, про конференцию уже всё? Нифига.&lt;br /&gt;&lt;br /&gt;Я причесала старые два поста. Все общие замечания про конференцию я вынесла сюда. Дописала недостающие куски, добавила фотографии, добавила ссылки на слайды, которые выложил Шампандар. &lt;br /&gt;&lt;br /&gt;Кроме меня отчеты уже написали: &lt;a href="http://aigamedev.com/open/coverage/paris10-report/"&gt;Шампандар&lt;/a&gt;, &lt;a href="http://digestingduck.blogspot.com/2010/06/greetings-from-paris-game-ai-conference.html"&gt;Микко Мононен&lt;/a&gt; и &lt;a href="http://blog.bjoernknafla.com/notes-from-paris-game-ai-conference-2010"&gt;Бьярн Кнафла&lt;/a&gt;. У Шампандара много фотографий хорошего качества, его жена фотографировала. Микко в отдельном посте &lt;a href="http://digestingduck.blogspot.com/2010/07/my-paris-game-ai-conference.html"&gt;выложил слайды и сурсы&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Когда я упоминаю Шампандара, вопрос, который мне чаще всего задают "а кто это?". Это программист, специализирующийся на игровом ИИ, ведет &lt;a href="http://aigamedev.com/"&gt;aigamedev.com&lt;/a&gt;, работает по контрактам на разные девелоперские конторы. Работал в компании Rockstar, работал над Killzone 2. Организовал конференцию, о которой я так много рассказываю, за что ему большое спасибо.&lt;br /&gt;&lt;br /&gt;Я до этого была только на русскоязычных конференциях, тут же была жуткая смесь европейских языков. Очень много франкоговорящих товарищей. И еще разные акценты английского. Неожиданно сложно было понимать финский и итальянский акценты. Русских не встречала, вообще русскоговорящих не было.&lt;br /&gt;&lt;br /&gt;Но программеры, они все прям как у нас. Во время кофе-брейков многие мялись и мучались. Я тоже мялась и мучилась. Тяжело это - общаться.&lt;br /&gt;&lt;br /&gt;Веселый студент из Дублина, который сидел рядом со мной, выдвинул интересную теорию. Докладчики отличались по поведению в зависимости от специализации: там были бизнесмены, программисты и преподаватели из вузов. Бизнесмены держались уверенно, напористо и складно говорили, преподаватели также были уверены, но без напора, программисты же с видимым усилием боролись с желанием спрятаться под стол.&lt;br /&gt;&lt;br /&gt;Шампандар круто управлял временем, расхождения с расписанием у него были максимум минут десять. Для тех, кто раньше бывал на конференциях, это много о чем должно сказать. Как он это делал: во время вопросов и ответов он в какой-то момент объявлял "следующий вопрос - последний". И все. &lt;br /&gt;&lt;br /&gt;Главный недостаток конференции - отсутствие WiFi. Я и еще два чувака нылись по этому поводу в твиттере всю конференцию. Меня это сильно расстроило, потому что я планировала создать эдакий эффект присутствия. Твитить, даже запостить видео. Вот вам видео, чего добру пропадать.&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/watch?v=Us0cSWIk0S0"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/Us0cSWIk0S0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;CNAM&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TD3DnNoZz_I/AAAAAAAAAhQ/Lirtj423fN4/s1600/P1050280.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TD3DnNoZz_I/AAAAAAAAAhQ/Lirtj423fN4/s400/P1050280.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762198903312370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Указатель&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TD3Dm4ZF2uI/AAAAAAAAAhI/3LoALclzUBo/s1600/P1050277.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TD3Dm4ZF2uI/AAAAAAAAAhI/3LoALclzUBo/s400/P1050277.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762193201945314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Нам туда, вниз&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TD3DnjPfPfI/AAAAAAAAAhY/Tv5WBTTH0Ug/s1600/P1050320.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TD3DnjPfPfI/AAAAAAAAAhY/Tv5WBTTH0Ug/s400/P1050320.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762204704390642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я получила бэджик!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TD3DmakYjJI/AAAAAAAAAhA/LETz_g0QoSU/s1600/P1050268.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TD3DmakYjJI/AAAAAAAAAhA/LETz_g0QoSU/s400/P1050268.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762185196244114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Зачем-то были закрыты последние ряды. Не знаю зачем.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TD3DoBKeQMI/AAAAAAAAAhg/CRBb4DMowOc/s1600/P1050289.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TD3DoBKeQMI/AAAAAAAAAhg/CRBb4DMowOc/s400/P1050289.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493762212736417986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Конференция была несколько омрачена традиционной французской забавой - забастовкой. Трудящиеся массово бастовали в связи с реформой пенсионной системы. Как несложно догадаться, условия выхода на пенсию меняют в худшую сторону. В связи с чем не работал некоторый транспорт, были отменены авиарейсы. Тут очень хорошо выступил спонсор - рекрутинговая компания Game Talents. Они обновляли информацию о ситуации в аэропортах на доске объявлений в реальном времени (WiFi, как мы помним, отсутствовал). Также они обещали отвезти людей в аэропорты. Отвезли или нет - не знаю, а вот доску объявлений видела своими глазами.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TD3RolUkP4I/AAAAAAAAAhw/5hxDvWTIigI/s1600/DSC00050.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TD3RolUkP4I/AAAAAAAAAhw/5hxDvWTIigI/s400/DSC00050.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493777615605219202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Программка и бэджик&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_McYRk2I/AAAAAAAAAfw/ZNRglTdFRxc/s1600/P1050302.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_McYRk2I/AAAAAAAAAfw/ZNRglTdFRxc/s400/P1050302.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087147843851106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_M6McvGI/AAAAAAAAAf4/13Q_vKNsXo8/s1600/P1050303.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_M6McvGI/AAAAAAAAAf4/13Q_vKNsXo8/s400/P1050303.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087155847314530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_NUs5lTI/AAAAAAAAAgA/sVfVoSxK21M/s1600/P1050304.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_NUs5lTI/AAAAAAAAAgA/sVfVoSxK21M/s400/P1050304.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087162962744626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_NlEdoLI/AAAAAAAAAgI/PHokS7KzdyA/s1600/P1050305.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_NlEdoLI/AAAAAAAAAgI/PHokS7KzdyA/s400/P1050305.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087167356543154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_OBG7u7I/AAAAAAAAAgQ/BaRkpY7MDe4/s1600/P1050306.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_OBG7u7I/AAAAAAAAAgQ/BaRkpY7MDe4/s400/P1050306.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087174883097522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_tKlLi3I/AAAAAAAAAgg/MZ4VzvSs1fg/s1600/P1050308.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_tKlLi3I/AAAAAAAAAgg/MZ4VzvSs1fg/s400/P1050308.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087710001826674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_s1KongI/AAAAAAAAAgY/iVuNurYtl0w/s1600/P1050307.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 480px; height: 320px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCJ_s1KongI/AAAAAAAAAgY/iVuNurYtl0w/s400/P1050307.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486087704253341186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Еще один минус, правда организаторы конференции тут ни при чем... В Париже, да и вообще во Франции, очень странные отели. Там тебя подстерегают неожиданности. Например, ты входишь в номер и входишь прямо в кровать. Или вот: кондиционер есть, но в шкафу. В одном номере у нас раковина была прямо в комнате. В каких-то ситуациях это даже удобно, на утро после верчеринки можно одним броском с кровати засунуть голову под кран с холодной водой. &lt;br /&gt;Будьте готовы, короче, если соберетесь поехать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-6264371029383091073?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/6264371029383091073/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=6264371029383091073' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6264371029383091073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/6264371029383091073'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/07/paris-game-ai-conference-2010.html' title='Paris Game AI Conference 2010. Общие впечатления'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/TD3DnNoZz_I/AAAAAAAAAhQ/Lirtj423fN4/s72-c/P1050280.JPG' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3158758583628714369</id><published>2010-06-24T22:52:00.008+04:00</published><updated>2010-07-14T19:07:50.686+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Paris Game AI Conference 2010. День второй</title><content type='html'>Конференция уже закончилась, рассказываю о том, что было сегодня.&lt;br /&gt;&lt;br /&gt;Все началось с рассказа Паоло Манинетти про гоночный симулятор. Машины и мотоциклы у них едут по идеальной траектории. На это линии есть целевая точка на определенном расстоянии и машина стремится к ней приблизиться. Траектория содержит в себе информацию об идельной скорости. Когда машин много двигают целевую точку, чтобы избежать столкновения. Они пытаются анализировать информацию о том, что происходит на дороге, пытаются определить опасные ситуации. Это отражается на производительности.&lt;br /&gt;Показывали демки с отладочной информацией. Дебагная информация у них богатая.&lt;br /&gt;Искали золотую середину между честной игрой и читерством. Говорят, что чем честнее, тем правдоподобнее. Но тем дороже по производительности. &lt;br /&gt;Каждая трасса тюнится руками, можно в нее записать что-то дополнительно.&lt;br /&gt;&lt;a href="http://files.aigamedev.com/coverage/GAIC10_PaoloManinetti.pptx"&gt;Physics-based Racing AI[.pptx]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Battlefield: Bad Company 2&lt;br /&gt;В соседней аудитории одновременно с нами проходило еще какое-то сборище, они там громко пели хором. Это придало докладу неповторимую атмосферу.&lt;br /&gt;Первую часть этой игры много критиковали за AI, поэтому над AI серьезно поработали.&lt;br /&gt;В игре (они сокращали ее название до BF) есть дружественные агенты. Их сложнее делать, чем вражьих, потому что враги быстро дохнут и если в них и есть какие глюки, то это незаметно. &lt;br /&gt;Также там есть разные виды юнитов - пехота, машины, танки, вертолеты. И мир разрушаемый.&lt;br /&gt;Показали демку, спросили, не заметил ли народ чего подозрительное. Я не заметила, однако были люди, которые просекли, что там танк телепортируется. Причем дважды. &lt;br /&gt;Улучшили анимации смерти - их, правда, всего пять секунд на экране видно.&lt;br /&gt;Сделали автоматическое определение укрытий. Т.е. укрытие должно быть достаточно высоким, защищать от врага. Определяли, нужно ли вставать, чтобы выстрелить в врага или надо уйти в сторону.&lt;br /&gt;Читят они, да. Про танки вы уже поняли. Еще солдаты у них не бегут слишком близко к игроку. И если резко развернуться, то это заметно, выглядит глупо. Солдат тоже телепортируют.&lt;br /&gt;Итого:&lt;br /&gt;-80% bulk AI&lt;br /&gt;-20% memorable moments&lt;br /&gt;Слайды у них красивые были. Модные такие, с вертолетом.&lt;br /&gt;&lt;a href="http://files.aigamedev.com/coverage/GAIC10_MikaelHedberg.ppt"&gt;Building the BATTLEFIELD AI Experience[.ppt]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Дальше была panel discussion. Там были Брюс Блумберг, Фредерик де Кастер (Creative Assembly), Ульф Йохансен (IO Interactive). Говорили про контроль качества.&lt;br /&gt;Тестеры отрывают разработчиков от работы, когда находят багу, потому что AI баги сложно повторить. Брюс Блумберг рассказывал, что у них был тестер, которого они прозвали Ангелом Смерти. Если он входил в комнату, значит придется задержаться.&lt;br /&gt;Делают плейтесты. По времени прозвучала оценка полдня в неделю. &lt;br /&gt;Фредерик из Creative Assembly рассказывал, что у каждой команды есть доска, они туда пишут над чем работают сейчас, над чем будут работать.&lt;br /&gt;Ульф рассказывал про их smoke тест. Если игра после запуска работает 40 секунд, то тест пройден. У них есть автоматические тесты. Для повышения воспроизвоимости есть AI fight recorder.&lt;br /&gt;Брюс рассказывал, что у них можно законнектить игру с их тулзой, где отображается граф поведения и можно открутиться назад и посмотреть что происходило. &lt;br /&gt;&lt;br /&gt;Дальше Щампандар рассказывал про Multi-threading AI, в основном про то, как оно много и интересно глючило, а он его отлаживал.&lt;br /&gt;Использовал Intel TBB.&lt;br /&gt;Высказал следующую мысль: When dealing with multithreading, denial is a very useful tool to use.&lt;br /&gt;&lt;a href="http://files.aigamedev.com/coverage/GAIC10_AlexChampandard.pptx"&gt;Multithreading in Practice: Uncensored and Uncot[.pptx]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Дальше был доклад про EVE online characters&lt;br /&gt;Рассказывали, что когда игрок подходит к ботам и они на него не реагируют, это выглядит странно. Показали несколько роликов. Действительно странно. &lt;br /&gt;Они сделали некий AI social engine и будут вставлять его в EVE online. Здесь было много информации из области социологии, формирование кластеров общающихся людей, очереди, F-formations.  &lt;br /&gt;&lt;a href="http://files.aigamedev.com/coverage/GAIC10_ClaudioPedica.ppt"&gt;Human Territoriality for EVE Online's Socially Smart Characters[.ppt]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Дальше был гвоздь программы, Кен Перлин, который Perlin noise, рассказывал про процедурную анимацию. Много говорил о том, что надо делать персонажей более убедительными, живыми. И в процедурную анимацию легче вносить изменения. Чем-то мне это все напомнило Spore. По каким-то базовым принципам генерится анимация персонажей. В зависимости от того, как он анимирован, он может казаться, испуганным, веселым, смущенным, агрессивным. Даже если это не антропорморфная фигурка, а треугольное не пойми что. Здесь опять же было много демок, без них говорить сложно.&lt;br /&gt;&lt;br /&gt;Здесь могла бы быть красивая фотография Кена Перлина на фоне его слайда с бущующим морем и надписью Why procedural methods are cool. Не получилось.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TD3QvroodpI/AAAAAAAAAho/ykDTa06znig/s1600/DSC00052.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TD3QvroodpI/AAAAAAAAAho/ykDTa06znig/s400/DSC00052.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5493776638047450770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Дальше были заключительные слова, организаторы конференции порешили, что Cheating is win, что Pathfinding jokes when struggling to return to the hotel - это плохая идея. Что next big thing - это взаимодействие людей и социальный аспект, то есть то, о чем были последние два доклада. &lt;br /&gt;Шампандар обещал конференцию в следующем году в это же время, наказал ничего другого на эти дни не планировать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3158758583628714369?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3158758583628714369/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3158758583628714369' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3158758583628714369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3158758583628714369'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/06/paris-game-ai-conference-2010.html' title='Paris Game AI Conference 2010. День второй'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VUQ3DQEhjsM/TD3QvroodpI/AAAAAAAAAho/ykDTa06znig/s72-c/DSC00052.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2749879960742019924</id><published>2010-06-24T00:40:00.010+04:00</published><updated>2010-07-14T19:07:57.594+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Paris Game AI Conference 2010. День первый.</title><content type='html'>Обещала отчитываться о конференции, выполняю обещание. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCkOQOFv2iI/AAAAAAAAAgw/FUMU6pR6gLo/s1600/P1050271.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCkOQOFv2iI/AAAAAAAAAgw/FUMU6pR6gLo/s400/P1050271.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5487933292750559778" /&gt;&lt;/a&gt;&lt;center&gt;На фотографии Фил Карлайл всех ждет&lt;/center&gt;&lt;br /&gt;Сегодня все началось с введения, где выступали Шампандар и Карлайл. Про тренды меня спрашивали в комментариях. Про тренды тут как раз и было, записывайте: социальные игры, ИИ толпы, генерация контента.&lt;br /&gt;&lt;br /&gt;Дальше выступали три дизайнера, очень просили программистов думать не о том, чтобы применить наиболее крутую технологию, а о том, что увидит игрок.&lt;br /&gt;&lt;br /&gt;Дальше выступил Брюс Блумберг. Он рассказывал об игре World of Zoo, об ИИ животных в зоопарке. Здесь было много красивых роликов. Для анимации они использовали &lt;a href="http://aigamedev.com/open/articles/hfsm-gist/"&gt;HFSM&lt;/a&gt;, для поведения животных "что-то вроде behavior trees".&lt;br /&gt;Его слайды: &lt;a href="http://"&gt;Intimate Conversations with Interactive Animated Characters[.pdf]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Выступили ребята с коротенькими презентациями различных миддлварей. Здесь я узнала, что Autodesk Kynapse используют Intel TBB и довольны. &lt;br /&gt;MASA специализируются на безопасности, но также делает ИИ миддлварь, показывали ролики с драками, использующими &lt;a href="http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D1%85%D0%B2%D0%B0%D1%82_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F"&gt;мокап&lt;/a&gt;. Ролики красивые. &lt;br /&gt;Ребята из PathEngine не используют флоаты и деление тоже не любят, потому что медленно.&lt;br /&gt;Ребята из Havok'а показали совершенно потрясающую демку с крутящимися вентиляторам, между которыми ходят боты. Это они хвастались своей работой с мобильными препятствиями. Спросила их про эту демку во время кофе-брейка. Сказали, что в Интернет они ее, может, и выложат, а вот детали реализации разглашать не могут. Также рассказывали о том, что умеют генерить &lt;a href="http://en.wikipedia.org/wiki/Navigation_mesh"&gt;NavMesh&lt;/a&gt; динамически.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Navigation Loop, Микко Мононен &lt;br /&gt;&lt;a href="http://digestingduck.blogspot.com/2010/07/my-paris-game-ai-conference.html"&gt;Navigation Loop, слайды и исходники&lt;/a&gt;&lt;br /&gt;Рассказывал про агентов, которые вместо того, чтобы сталкиваться, кооперируются друг с другом с тем, чтобы выработать траектории, которые не столкнутся. Здесь было много красивых демок.&lt;br /&gt;К нему было много вопросов. Спросили про нейронные сети. Ну какая ИИ конференция без нейронных сетей. Так вот, Микко Мононен нейронные сети не любит и их не использует. &lt;br /&gt;Также его спрашивали, чего это у него все демки работают с окружностями, что делать с более сложными формами. Ответ Микки: с более сложными формами работать, хм, сложнее, поэтому работаем с окружностями.&lt;br /&gt;&lt;br /&gt;Дальше опять panel discussion. Это когда несколько человек сажают в ряд и задают им вопросы, а они отвечают.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCkNtFS4x2I/AAAAAAAAAgo/HEVdeKc5i4s/s1600/P1050288.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/TCkNtFS4x2I/AAAAAAAAAgo/HEVdeKc5i4s/s400/P1050288.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5487932689094330210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Здесь были (справа налево): Алекс Шампандар, Микко Мононен, Кен Перлин, тот самый, который &lt;a href="http://ru.wikipedia.org/wiki/%D0%A8%D1%83%D0%BC_%D0%9F%D0%B5%D1%80%D0%BB%D0%B8%D0%BD%D0%B0"&gt;Perlin noise&lt;/a&gt; и два разработчика &lt;a href="http://ru.wikipedia.org/wiki/Heavy_Rain"&gt;Heavy Rain&lt;/a&gt;. Оба французы, оба произносили Heavy Rain с французским акцентом, "эви рейн" у них получался.&lt;br /&gt;Обсуждали генерацию толпы. Здесь я узнала, что в Heavy Rain'е используется для толпыт fluid simulation (эмуляция жидкостей), они пробовали flocking (один из видов &lt;a href="http://www.red3d.com/cwr/steer/"&gt;steering behaviors&lt;/a&gt;), но оно плохо работало для 1000+ человек, большая нагрузка на CPU была. Также они там читят, людей телепортируют иногда. &lt;br /&gt;Спросили их, есть ли какая-то специальная обработка ситуации, когда игрок следует за одним агентом в толпе. Один из них сказал, что следовать за кем-то одним невозможно, потому что народу слишком много. "И потому что у нас телепорт" - добавил второй.&lt;br /&gt;Еще сказали, что motion capture толпы людей непонятно как делать, потому что люди друг друга будут скрывать. &lt;br /&gt;&lt;br /&gt;Байлор Ветцел рассказывал о бесчеловечных экспериментах над студентами. В простой игре с боями в стиле Heroes of Might and Magic реализовал несколько стратегий боя. Некоторые умные - они пытались атаковать самых сильных противников. Некоторые - откровенно дурацкие, типа первым атаковать противника с самым длинным названием или атаковать противников по очереди сверху вниз. Просил угадать какая именно стратегия где используется. Угадывали плохо. Просил оценить каждую из стратегий по трем критериям: Fun, Difficulty и Realism. Выяснил, что Random - один из топовых по Fun'у. Также выяснил, что Difficulty и Realism связаны друг с другом, а вот с Fun'ом никак не связаны.&lt;br /&gt;&lt;a href="http://files.aigamedev.com/coverage/GAIC10_BaylorWetzel.ppt"&gt;Inside Your Players' Mind With Playtesting[.ppt]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Гваредд Маунтайн рассказывал про психологические опыты в SILENT HILL: SHATTERED MEMORIES.&lt;br /&gt;В процессе игры игроку предлагается беседовать с психологом. По этим беседам состовляется психологический портрет играющего, и в зависимости от него меняется контент. От этого зависело будете ли вы беседовать с секси копом или просто с копом. Меняются одежда людей, мебель, внешний вид монстров. &lt;br /&gt;Контента у них было много. Минимум 3 варианта каждой сцены.&lt;br /&gt;Производит сильное впечатление. Но при этом игра больная на всю голову. Да простят меня поклонники Silent Hill. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCkOjDVTo5I/AAAAAAAAAg4/SPOH9uvVqLw/s1600/P1050293.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCkOjDVTo5I/AAAAAAAAAg4/SPOH9uvVqLw/s400/P1050293.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5487933616280544146" /&gt;&lt;/a&gt;&lt;br /&gt;Один из задававших вопросы отметил, что идея отличная, но ее бы лучше использовать для чего-нибудь более полезного.&lt;br /&gt;&lt;a href="http://files.aigamedev.com/coverage/GAIC10_GwareddMountain.ppt"&gt;Personality Profiling in SILENT HILL: SHATTERED MEMORIES&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2749879960742019924?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2749879960742019924/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2749879960742019924' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2749879960742019924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2749879960742019924'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/06/pris-game-ai-conference-2010.html' title='Paris Game AI Conference 2010. День первый.'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCkOQOFv2iI/AAAAAAAAAgw/FUMU6pR6gLo/s72-c/P1050271.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-4682655263139519690</id><published>2010-06-23T17:02:00.006+04:00</published><updated>2010-06-23T18:00:52.453+04:00</updated><title type='text'>Paris Game AI началась</title><content type='html'>Привет всем! Конференция Paris Game AI уже началась, но там нет WiFi, поэтому прямая трансляция в Твиттер у меня не получится.&lt;br /&gt;&lt;br /&gt;Шампандар выступил в начале, было выступление по World of Zoo, сейчас обед. Самое интересное впереди.&lt;br /&gt;&lt;br /&gt;Народ общается в основном на английском и французском. Слышала и другие европейские языки. Русских пока не вижу. Если кто есть - откликнитесь!&lt;br /&gt;&lt;br /&gt;Первые фотки:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TCIQ_syaUsI/AAAAAAAAAfY/bcSjIwRdVkw/s1600/DSC00047.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TCIQ_syaUsI/AAAAAAAAAfY/bcSjIwRdVkw/s400/DSC00047.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5485965982631088834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCIR3cj5XII/AAAAAAAAAfg/3uAhDU5AhCs/s1600/DSC00048.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/TCIR3cj5XII/AAAAAAAAAfg/3uAhDU5AhCs/s400/DSC00048.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5485966940347915394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TCITC2gxtHI/AAAAAAAAAfo/VcMxj22Jqlg/s1600/DSC00049.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TCITC2gxtHI/AAAAAAAAAfo/VcMxj22Jqlg/s400/DSC00049.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5485968235804341362" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-4682655263139519690?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/4682655263139519690/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=4682655263139519690' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4682655263139519690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4682655263139519690'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/06/paris-game-ai.html' title='Paris Game AI началась'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/TCIQ_syaUsI/AAAAAAAAAfY/bcSjIwRdVkw/s72-c/DSC00047.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-611279662080895105</id><published>2010-06-13T22:50:00.003+04:00</published><updated>2010-06-13T22:53:07.180+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Статья Mea Culpa</title><content type='html'>&lt;a href="http://alarmingdevelopment.org/?p=422"&gt;Mea Culpa&lt;/a&gt; - отличная статья программиста, который любил наворачивать сложность и сделал супергибкую систему.&lt;br /&gt;&lt;blockquote&gt;I spent those decades debugging the Frankenstein. In the OS crash debugger. In hex. Because wasn’t it oh so clever and efficient to build a radically new kind of database with extreme reliability requirements as a highly multithreaded kernel extension to the OS?&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Ну и вывод&lt;br /&gt;&lt;blockquote&gt;That experience taught me a lot about what really matters in programming. It is not about solving puzzles and being the brightest kid in the class. It is about realizing that the complexity of software dwarfs even the most brilliant human; that cleverness cannot win. The only weapons we have are simplicity and convention. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;И всегда лучше учиться на чужих ошибках, да.&lt;br /&gt;&lt;br /&gt;Спасибо &lt;a href="http://softwaremaniacs.org/blog/"&gt;maniac&lt;/a&gt;'у за ссылку.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-611279662080895105?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/611279662080895105/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=611279662080895105' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/611279662080895105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/611279662080895105'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/06/mea-culpa.html' title='Статья Mea Culpa'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2913459548661966342</id><published>2010-06-10T16:26:00.002+04:00</published><updated>2010-06-11T12:12:26.787+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Пост "Проблемы с delete[]"</title><content type='html'>В посте &lt;a href="http://easy-coding.blogspot.com/2010/06/delete.html"&gt;Проблемы с delete[]&lt;/a&gt; Александр рассказывает про undefined behavior вот такого кода:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;A* a = new B[T];&lt;br /&gt;delete[] a;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Рекомендую.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated 11.07.2010&lt;/span&gt;: &lt;a href="http://www.blogger.com/profile/07861391108370568285"&gt;Eugene K.&lt;/a&gt; &lt;a href="http://easy-coding.blogspot.com/2010/06/delete.html?showComment=1276182441327#c1419027836280113277"&gt;справедливо уточняет&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;Вообще-то для получения проблем необязательно удалять. Достаточно выполнить какой-нибудь доступ к элементу "массива" a с индексом больше нуля.&lt;br /&gt;&lt;br /&gt;A* a = new B[T];&lt;br /&gt;a[1].p = 42; // запишет не туда&lt;br /&gt;&lt;br /&gt;То есть проблема собственно в строке выделения "A* a = new B[T];". Если над ней помедитировать, то можно догадаться, что она лишена смысла.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2913459548661966342?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2913459548661966342/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2913459548661966342' title='Комментарии: 13'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2913459548661966342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2913459548661966342'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/06/delete.html' title='Пост &quot;Проблемы с delete[]&quot;'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7362871536100992926</id><published>2010-05-31T23:50:00.010+04:00</published><updated>2010-06-09T18:03:50.846+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><title type='text'>Вышел Robocalypse - Beaver Defense</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Updated 07.06.2010&lt;/span&gt;&lt;br /&gt;Nintendo Life 8/10&lt;br /&gt;&lt;a href="http://wiiware.nintendolife.com/reviews/2010/06/robocalypse_beaver_defense"&gt;This is a fun tower defence game with enough unique features and strategic elements to keep it interesting and a sense of humour to set it apart from its competitors. While it suffers presentation-wise, don't let that throw you off as for those who enjoy the genre, this one's a must-have.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;IGN 7/10&lt;br /&gt;&lt;a href="http://wii.ign.com/articles/109/1094874p1.html"&gt;The silly style's still the same, but this is a whole different kind of Robocalypse.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gamespot.com/wii/strategy/robocalypsebeaverdefense/player_review.html?id=723713&amp;tag=all-about;review1"&gt;Какой-то пользователь gamespot'а поставил 9/10. Это не официальный рейтинг, но все равно приятно.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Отзывы тех, кто играл, в основном положительные.&lt;br /&gt;Выдыхаем...&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated 04.06.2010&lt;/span&gt; Сегодня, 4 июня, Бобер вышел и в Европе (31 мая был релиз на Северную Америку). Подозреваю, что это должно означать, что его видно в российском Wii Store. У кого есть Wii посмотрите, плз...&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;Сегодня вышел &lt;a href="http://www.robocalypse.com/WiiWare/"&gt;Robocalypse - Beaver Defense&lt;/a&gt;, на котором я была ведущим программистом, а также временами менеджером. Жанр игры - Tower Defense. Платформа - Nintendo Wii, вернее WiiWare - это игры под Wii, которые можно скачивать через online-магазин. Сюжет игры строится вокруг злобного бобра, который решил всех поработить. Он насылает на вас орды роботов, вам надо строить башни и от него обороняться.&lt;br /&gt;&lt;br /&gt;Со мной вместе работало много других хороших людей (не стала ставить ссылки на блоги, вдруг кто шифруется, напишите мне мылом или в комменты, я поставлю ссылки). Мы использовали прекрасный codebase предыдущего &lt;a href="http://www.robocalypse.com/NintendoDS/"&gt;Robocalypse&lt;/a&gt;'а, за что его авторам большое спасибо.&lt;br /&gt;&lt;br /&gt;Было интересно поработать с консолью, много отличий от работы с PC. И да, телевизор в качестве устройства вывода - это ужасно.&lt;br /&gt;&lt;br /&gt;Теперь ждем реакции игроков, нервничаем.&lt;br /&gt;&lt;br /&gt;Скриншоты&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLqJchAI/AAAAAAAAAfQ/9_JyXx5h7wM/s1600/Robocalypse_BD_screenshot_08.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLqJchAI/AAAAAAAAAfQ/9_JyXx5h7wM/s320/Robocalypse_BD_screenshot_08.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523038291133442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLaS6hrI/AAAAAAAAAfI/M5iP-LYQLuk/s1600/Robocalypse_BD_screenshot_06.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLaS6hrI/AAAAAAAAAfI/M5iP-LYQLuk/s320/Robocalypse_BD_screenshot_06.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523034035881650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSK3E3AII/AAAAAAAAAfA/m877jMBos0s/s1600/Robocalypse_BD_screenshot_05.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSK3E3AII/AAAAAAAAAfA/m877jMBos0s/s320/Robocalypse_BD_screenshot_05.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523024581689474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Интервью с нашим продюсером, Аланом Мартином&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/watch?v=O1Q14bAxhRA"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/O1Q14bAxhRA" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cubed3.com/news/12949"&gt;Еще одно интервью с Аланом, много букв&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.robocalypse.com/WiiWare/"&gt;Официальный сайт&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://press.nintendo.com/articles.jsp?id=23905"&gt;Офицальный пресс-релиз Нинтендо&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;P.S. Увы, осенью Вогстер закрыл свое московское отделение. С тех пор я успела поработать в IT-Territory, которую внезапно купил Mail.Ru. В итоге сейчас я работаю в Mail.Ru, программирую под Windows. На C++, разумеется :-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7362871536100992926?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7362871536100992926/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7362871536100992926' title='Комментарии: 20'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7362871536100992926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7362871536100992926'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/05/robocalypse-beaver-defense.html' title='Вышел Robocalypse - Beaver Defense'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/TAQSLqJchAI/AAAAAAAAAfQ/9_JyXx5h7wM/s72-c/Robocalypse_BD_screenshot_08.jpg' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3614739415883184220</id><published>2010-05-28T15:45:00.006+04:00</published><updated>2010-05-28T16:36:30.596+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Неинициализированный указатель и вызов функции</title><content type='html'>С неинициализированными указателями на экземпляр класса связан один неприятный момент. Допустим, у нас есть класс CBase, в котором есть функция, которая не обращается к переменным класса. То есть указатель this не использует.&lt;pre&gt;&lt;code&gt;class CBase&lt;br /&gt;{&lt;br /&gt;    int i;&lt;br /&gt;public:&lt;br /&gt;    void f() { std::cout&amp;lt;&amp;lt;"CBase::f"&amp;lt;&amp;lt;std::endl;}&lt;br /&gt;};&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;И если где-то дальше вы написали код вроде такого:&lt;pre&gt;&lt;code&gt;&lt;br /&gt;CBase* p = NULL;&lt;br /&gt;p-&gt;f();&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;То по стандарту это undefined behavior. Однако очень часто функция отрабатывает нормально. Visual Studio 2008, например, генерит вполне себе работающий код. А чего, вызов этой функции был разрешен на этапе компиляции, указатель this не нужен. И довольно долго может создаваться ощущение, что все нормально работает. Можно даже привести более страшно выглядящий пример&lt;br /&gt;&lt;pre&gt;&lt;code&gt;((CBase*)0)-&gt;f();&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Но на самом деле далеко не все нормально. Как только появляется обращение к this, то программа начинает "падать". Примеры:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;class CBase&lt;br /&gt;{&lt;br /&gt;    int i;&lt;br /&gt;public:&lt;br /&gt;    virtual void f() { std::cout&amp;lt;&amp;lt;"CBase::f"&amp;lt;&amp;lt;std::endl;}&lt;br /&gt;};&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;class CBase&lt;br /&gt;{&lt;br /&gt;    int i;&lt;br /&gt;public:&lt;br /&gt;    void f() { std::cout&amp;lt;&amp;lt;"CBase::f"&amp;lt;&amp;lt;std::endl; i=0;}&lt;br /&gt;};&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Все это приводит к очень интересным трудно отлавливаемым багам.&lt;br /&gt;&lt;br /&gt;Ссылка по теме:&lt;br /&gt;&lt;a href="http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/973d123899a47183/28dc98028831e914"&gt;comp.lang.c++.moderated - Functions that don't use this, called with uninitialized pointers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3614739415883184220?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3614739415883184220/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3614739415883184220' title='Комментарии: 30'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3614739415883184220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3614739415883184220'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/05/blog-post_28.html' title='Неинициализированный указатель и вызов функции'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8068745464916821741</id><published>2010-05-11T21:19:00.003+04:00</published><updated>2010-07-26T14:42:11.662+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Вебинар с Гербом Саттером</title><content type='html'>Герб Саттер у себя на блоге рекламирует вебинар с собой: &lt;a href="http://herbsutter.com/2010/05/06/may-12-webinar-on-multicore-parallelism/"&gt;May 12 Webinar on Multicore Parallelism&lt;/a&gt;. Я зарегистрировалась, постараюсь быть.&lt;br /&gt;Точная дата - May 12, 2010 at 8 a.m. PT/11 a.m. ET. Это семь вечера по Москве.&lt;br /&gt;&lt;br /&gt;P.S. Ролик выложили. Как дать туда прямую ссылку я так и не поняла.&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/S-rHuOx02FI/AAAAAAAAAe4/_9dUq-TSsn0/s400/webinar.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5470404294449879122" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8068745464916821741?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8068745464916821741/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8068745464916821741' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8068745464916821741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8068745464916821741'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/05/blog-post.html' title='Вебинар с Гербом Саттером'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/S-rHuOx02FI/AAAAAAAAAe4/_9dUq-TSsn0/s72-c/webinar.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2152794628836320087</id><published>2010-05-06T00:33:00.002+04:00</published><updated>2010-05-06T00:37:15.803+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Paris Game AI conference 2010</title><content type='html'>&lt;a href="http://gameaiconf.com/"&gt;В конце июня в Париже пройдет конференция по искусственному интеллекту в играх&lt;/a&gt;. Я там буду, если &lt;a href="http://igorivanov.blogspot.com/2010/04/katla-and-eyjafjallajokull.html"&gt;какая-нибудь Катла не решит извергнуться именно в эти дни&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;По сравнению с другими геймдевелоперскими сборищами это очень маленькая конференция. Зал, в котором читают доклады, всего один. И недорогая, опять же, по сравнению с остальными геймдевелоперскими мероприятиями. Она дешевле КРИ, например.&lt;br /&gt;&lt;br /&gt;Коференция эта довольно популярна, поэтому уже в конце апреля все билеты были распроданы. После чего ее организатор, Алекс Шампандар, выкупил аудиторию вдвое больше первой. И теперь у него новая проблема - её надо заполнить. Он просил пропиарить это мероприятие, что я и делаю.&lt;br /&gt;&lt;br /&gt;Итак, Париж 23-24 июня, схема проезда есть на официальном сайте и, cлава Гуглу, мы можем посмотреть где именно это будет. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/S-HVnvGTogI/AAAAAAAAAew/4e91b_L2ShA/s1600/gameaiconf2010.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/S-HVnvGTogI/AAAAAAAAAew/4e91b_L2ShA/s320/gameaiconf2010.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5467886301239026178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Язык конференции - английский. Здесь список докладов: &lt;a href="http://gameaiconf.com/program.php"&gt;Program Highlights&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Если вы решите туда поехать, то имейте в виду, что, поскольку вы летите из-за пределов Европы, то вам положена скидка 50 процентов. Там все не очень очевидно в разделе регистрации написано.&lt;br /&gt;&lt;br /&gt;После конференции я напишу отчет, а в процессе буду &lt;a href="http://twitter.com/alenacpp"&gt;твитить&lt;/a&gt;, если там будет WiFi. Хэштэг &lt;a href="http://twitter.com/#search?q=%23AIGD10"&gt;#AIGD10&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2152794628836320087?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2152794628836320087/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2152794628836320087' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2152794628836320087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2152794628836320087'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/05/paris-game-ai-conference-2010.html' title='Paris Game AI conference 2010'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/S-HVnvGTogI/AAAAAAAAAew/4e91b_L2ShA/s72-c/gameaiconf2010.PNG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-4468218716381254707</id><published>2010-05-02T14:17:00.001+04:00</published><updated>2010-05-02T14:17:37.002+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Книга Debugging</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/S91P7CogadI/AAAAAAAAAeY/Vjko66GUQ0U/s1600/cover.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/S91P7CogadI/AAAAAAAAAeY/Vjko66GUQ0U/s200/cover.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466613398435293650" /&gt;&lt;/a&gt;Полное название этой книги &lt;a href="http://www.amazon.com/Debugging-Indispensable-Software-Hardware-Problems/dp/0814471684"&gt;Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems&lt;/a&gt;. Поэтому обычно не нее ссылаются по более короткому названию - Debugging. Автор - David J. Agans.&lt;br /&gt;Редкая книга в своем роде. Потому что книг по отладке мало, очень мало. &lt;br /&gt;Написана весело, с юмором, простым языком. На Amazon'е высокий рейтинг и прекрасные отзывы, что неудивительно. В книге приведено очень много реальных примеров отладки. Примеры в основном по отладке харда, немного по софту и примеры из жизни, из серии "что-то водопровод у нас странно глючит". Описанные в этой книге принципы универсальные, они везде работают. Поэтому будет полезна не только программистам, но и всем занятым в разработке софта. &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VUQ3DQEhjsM/S91P-3TZufI/AAAAAAAAAeg/izXDOST0EcI/s1600/poster.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 312px; height: 400px;" src="http://4.bp.blogspot.com/_VUQ3DQEhjsM/S91P-3TZufI/AAAAAAAAAeg/izXDOST0EcI/s400/poster.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5466613464113461746" /&gt;&lt;/a&gt;&lt;br /&gt;Правда, я для себя не нашла ничего нового в этой книге. Все это я где-то уже видела или читала, до чего-то сама дошла. Но почитать все равно было полезно, что-то вспомнила, ну и примеры изучила, примеры там классные.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-4468218716381254707?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/4468218716381254707/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=4468218716381254707' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4468218716381254707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/4468218716381254707'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/05/debugging.html' title='Книга Debugging'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VUQ3DQEhjsM/S91P7CogadI/AAAAAAAAAeY/Vjko66GUQ0U/s72-c/cover.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-8648157108057853783</id><published>2010-04-29T20:49:00.001+04:00</published><updated>2010-05-05T16:04:06.247+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Несколько ссылок на материалы про кэш</title><content type='html'>Производительность программы можно улучшить, если знать как именно происходит работа с кэшем, тогда можно минимизировать промахи кэша (cache miss). Несколько ссылок про это.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msinilo.pl/blog/?p=614"&gt;Be nice to your cache&lt;/a&gt; - небольшая вводная статья&lt;br /&gt;&lt;a href="http://igoro.com/archive/gallery-of-processor-cache-effects/"&gt;Gallery of Processor Cache Effects&lt;/a&gt; - большая подробная статья&lt;br /&gt;&lt;a href="http://research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf"&gt;Pitfalls of OOP&lt;/a&gt; - очень известные слайды с картинками&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated 05.05.2010:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1643D55A-D252-4717-BC3E-237C2C5295F4&amp;displaylang=en"&gt;At Least We Aren’t Doing That: Real Life Performance Pitfalls&lt;/a&gt; - слайды+аудио про производительность, в том числе про кэш&lt;br /&gt;&lt;br /&gt;Если вам интересно еще почитать про кэш, поищите по ключевым словам cache-aware и cache-oblivious.&lt;br /&gt;По cache-aware вы найдете про затачивание алгоритмов и структур данных под какой-то конкретный процессор, а по cache-oblivious - про затачивание под кэш в принципе.&lt;br /&gt;&lt;br /&gt;Но не забывайте, что преждевременная оптимизацая есть зло. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-8648157108057853783?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/8648157108057853783/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=8648157108057853783' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8648157108057853783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/8648157108057853783'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/04/blog-post.html' title='Несколько ссылок на материалы про кэш'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-1716444644500828269</id><published>2010-03-29T00:24:00.002+04:00</published><updated>2010-04-28T22:38:18.430+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Материалы с GDC2010</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/S6-E9T84BpI/AAAAAAAAAdk/jLfQ-lE4_gc/s1600/gdc2010.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 108px; height: 81px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/S6-E9T84BpI/AAAAAAAAAdk/jLfQ-lE4_gc/s200/gdc2010.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5453723862631450258" /&gt;&lt;/a&gt;Game Developer Conference проходит ежегодно в марте. GDC этого года уже прошла и в Интернете начали появляться материалы оттуда. &lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;На русском&lt;/span&gt;&lt;br /&gt;orvind рассказывает о GDC2010: &lt;a href="http://orvind.livejournal.com/94000.html"&gt;раз&lt;/a&gt;, &lt;a href="http://orvind.livejournal.com/94566.html"&gt;два&lt;/a&gt; и &lt;a href="http://orvind.livejournal.com/94965.html"&gt;три&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://users.livejournal.com/_winnie/231086.html"&gt;_winnie перессказывает orvind'а&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated 28.04.2010&lt;/span&gt;: &lt;a href="http://binstream.livejournal.com/84486.html"&gt;gdc san francisco 2010&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;На английском&lt;/span&gt;&lt;br /&gt;Пит Исенси, Микрософт, &lt;a href="http://pkisensee.spaces.live.com/Blog/cns!3C84486A9D832EB7!799.entry"&gt;Effective Management: Getting the Best from Your Team [.ppt]&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VUQ3DQEhjsM/S6-HuHdh9bI/AAAAAAAAAds/fJ3sW3fu3t8/s1600/recipe.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 259px;" src="http://3.bp.blogspot.com/_VUQ3DQEhjsM/S6-HuHdh9bI/AAAAAAAAAds/fJ3sW3fu3t8/s400/recipe.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5453726900115600818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://doublebuffered.com/2010/03/21/gdc-2010-reading-the-players-mind-through-his-thumbs-inferring-player-intent-through-controller-input/"&gt;GDC 2010: Reading the Player’s Mind Through His Thumbs: Inferring Player Intent Through Controller Input&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gafferongames.com/2010/03/11/gdc-2010-networked-physics-slides-demo/"&gt;GDC 2010 Networked Physics Slides + Demo&lt;/a&gt; (Glenn Fiedler, Sony Santa Monica) - много интересных бенчмарков пропускной способности интернетов. Подробно с примерами рассказывает о синхронизации игроков в мультиплеерных играх.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.onethree.org/gdc/"&gt;The AI of BioShock 2&lt;/a&gt;, Kent Hudson, 2K. Все материалы в каком-то кривом формате.&lt;br /&gt;&lt;br /&gt;Пол-Кристиан Энгстад, Naughty Dog. Слайды про PS3 SPU. &lt;a href="http://www.naughtydog.com/docs/gdc2010/intro-spu-optimizations-part-1.pdf"&gt;Часть1&lt;/a&gt; и &lt;a href="http://www.naughtydog.com/docs/gdc2010/intro-spu-optimizations-part-2.pdf"&gt;часть2&lt;/a&gt;. Они по ним раньше вновь прибывших учили, а теперь решили поделиться знаниями с миром.&lt;br /&gt;&lt;br /&gt;Сид Мейер (он Цивилизацию придумал) рассказывает о психологии игроков.&lt;br /&gt;&lt;OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"  WIDTH=480 HEIGHT=310 id="videoPlayer"&gt;&lt;PARAM NAME=movie VALUE="http://image.com.com/gamespot/images/cne_flash/production/eidothea/release/eidothea.swf"&gt;&lt;PARAM NAME=scale VALUE="noScale"&gt;&lt;PARAM NAME=salign VALUE="lt"&gt;&lt;PARAM NAME=quality VALUE=high&gt;&lt;PARAM NAME=allowscriptaccess VALUE="always"&gt;&lt;PARAM NAME=flashvars VALUE="bwr=0&amp;playerMode=embedded&amp;movieAspect=16.9&amp;mapp=embedded_480&amp;gen=1&amp;viewMode=sd&amp;autoPlay=false&amp;paramsXML=http%3A%2F%2Fwww.gamespot.com%2Fpages%2Fvideo_player%2Fxml.php%3Fid%3D6253529%26mode%3Dembedded%26width%3D480%26height%3D310%26newplayer%3D1%26skin%3DeidotheaEmbedded480_169.xml"&gt;&lt;embed  id="mymovie"  width="480"  height="310" flashvars="bwr=0&amp;playerMode=embedded&amp;movieAspect=16.9&amp;mapp=embedded_480&amp;gen=1&amp;viewMode=sd&amp;autoPlay=false&amp;paramsXML=http%3A%2F%2Fwww.gamespot.com%2Fpages%2Fvideo_player%2Fxml.php%3Fid%3D6253529%26mode%3Dembedded%26width%3D480%26height%3D310%26newplayer%3D1%26skin%3DeidotheaEmbedded480_169.xml" wmode="opaque" allowscriptaccess="always" scale="noScale" salign="lt" allowFullScreen="true" quality="high" name="mymovie" style="" src="http://image.com.com/gamespot/images/cne_flash/production/eidothea/release/eidothea.swf" type="application/x-shockwave-flash"/&gt;&lt;/embed&gt;&lt;/OBJECT&gt;&lt;br /&gt;Рассказывает, что есть некоторые игроки, которые перед каждым боем сохраняются. И, если бой прогрывают, то загружают сейв и переигрывают битву заново. (это обо мне, ага :-) ). Так вот, они стали запоминать с сейвом некий ключ. И исход битвы будет таким же, сколько ни перегружайся. "Ха-ха-ха" - добавляет в конце Сид.&lt;br /&gt;&lt;br /&gt;Небольшая презентация от Havok'а. У них теперь есть Havok AI.&lt;br /&gt;&lt;object id="flashObj" width="486" height="412" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"&gt;&lt;param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/22881388001?isVid=1&amp;publisherID=22717159001" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="videoId=71250785001&amp;linkBaseURL=http%3A%2F%2Fgamevideos.1up.com%2Fvideo%2Fid%2F28308&amp;playerID=22881388001&amp;domain=embed&amp;" /&gt;&lt;param name="base" value="http://admin.brightcove.com" /&gt;&lt;param name="seamlesstabbing" value="false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="swLiveConnect" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://c.brightcove.com/services/viewer/federated_f9/22881388001?isVid=1&amp;publisherID=22717159001" bgcolor="#FFFFFF" flashVars="videoId=71250785001&amp;linkBaseURL=http%3A%2F%2Fgamevideos.1up.com%2Fvideo%2Fid%2F28308&amp;playerID=22881388001&amp;domain=embed&amp;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Еще много ссылок тут: &lt;a href="http://msinilo.pl/blog/?p=575"&gt;GDC 2010 proceedings&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-1716444644500828269?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/1716444644500828269/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=1716444644500828269' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1716444644500828269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/1716444644500828269'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/gdc2010.html' title='Материалы с GDC2010'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VUQ3DQEhjsM/S6-E9T84BpI/AAAAAAAAAdk/jLfQ-lE4_gc/s72-c/gdc2010.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3638803632102558487</id><published>2010-03-23T00:34:00.003+03:00</published><updated>2010-03-23T00:46:29.419+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Приставочные игры через видеопоток</title><content type='html'>Знаю о двух проектах, которые собираются давать играть через видеопоток.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.spawnlabs.com/"&gt;Spawn Labs&lt;/a&gt; - нужен специальный девайс, который уже продается. И можно удаленно играть на собственной приставке. Отзывов покупателей не нашла.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.onlive.com/"&gt;onlive.com&lt;/a&gt; - тоже нужен специальный девайс. Это сервис, то есть своя приставка не нужна. Работать собираются по подписке. Открываются летом.&lt;br /&gt;&lt;br /&gt;Совсем непонятно как они будут решать проблемы с пропускной способностью, особенно во втором случае. Нагрузка колоссальная, при этом собрать p2p сеть и распределить нагрузку по пользователям не получится.&lt;br /&gt;&lt;br /&gt;Народ настроен скептически. Тем более, что технической информации о проектах мало, в основном красивые ролики и презентации.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3638803632102558487?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3638803632102558487/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3638803632102558487' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3638803632102558487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3638803632102558487'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post_23.html' title='Приставочные игры через видеопоток'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-9204787674821219578</id><published>2010-03-21T14:50:00.001+03:00</published><updated>2010-03-21T14:52:47.307+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Хорошо там, где нас нет</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VUQ3DQEhjsM/S6YIFMV9JkI/AAAAAAAAAdc/--Y198Ua8Go/s1600-h/workplace.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 147px;" src="http://2.bp.blogspot.com/_VUQ3DQEhjsM/S6YIFMV9JkI/AAAAAAAAAdc/--Y198Ua8Go/s200/workplace.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5451053284284245570" /&gt;&lt;/a&gt;Общаюсь с программистами различных специализаций, интересно было сравнить их мнение друг о друге.&lt;br /&gt;&lt;br /&gt;Веб-программисты иногда думают о том, чтобы попрограммировать "по-настоящему". Не на PHP, а на C++. Лучше на С. Чтобы близко к железу. Это и есть настоящее программирование и там живут суровые системные программисты. И платят там больше. &lt;br /&gt;&lt;br /&gt;Системные программисты суровы и бородаты. Они носят очки в толстой пластмассовой оправе, с дужками, перехваченными сзади резиночкой. Они работают с ассемблерами и пишут на С. Они устали от глюков непонятных железок и, хм, интересных архитектурных решений. И низкой зарплаты. И они точно знают, что хотели бы заниматься веб-разработкой. Потому что веб - вот где хорошо платят. И там молодежь! Там кипит жизнь. &lt;br /&gt;&lt;br /&gt;Программистам из разных финансовых организаций много платят. Но здесь скучно. И ты - человек второго сорта. На первом месте тут финансисты, извините. И это совсем не то, о чем мечталось. Хотелось заниматься разработкой игр, вот там весело. А тут на работу надо ходить к 9 и в костюме. Иногда эти программисты выбираются из уютных кьюбиклов и приходят на собеседования в геймдев, пугая геймдевелоперов неадекватными зарплатными ожиданиями.&lt;br /&gt;&lt;br /&gt;В геймдеве весело. Так весело, что аж жутко. Веселье начинается с первого дня выхода на работу и напоминает легкое безумие. Здесь низкие зарплаты и постояннные переработки. Проекты открываются и тут же закрываются. Вот в банках совсем не так. Там все стабильно и хорошо платят. К нам тут приходил чувак собеседоваться из банка, так он рассказывал... Геймдевелоперов любят нанимать в другие индустрии, потому что они усердно работают, хотят мало денег и рассказывают веселые байки за обедом.&lt;br /&gt;&lt;br /&gt;Так что где бы вы ни работали, что бы вы ни программили, помните, что где-то в далеком офисе сидит человек, который страшно завидует именно вам. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-9204787674821219578?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/9204787674821219578/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=9204787674821219578' title='Комментарии: 55'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/9204787674821219578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/9204787674821219578'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post_21.html' title='Хорошо там, где нас нет'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VUQ3DQEhjsM/S6YIFMV9JkI/AAAAAAAAAdc/--Y198Ua8Go/s72-c/workplace.jpg' height='72' width='72'/><thr:total>55</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5110942562095162841</id><published>2010-03-17T15:18:00.004+03:00</published><updated>2010-03-17T15:33:41.788+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>Lock-free контейнеры</title><content type='html'>&lt;a href="http://users.livejournal.com/_foreseer/47590.html"&gt;Пост Андрея Гулина(Яндекс, Поиск) с реализацией TLockFreeQueue&lt;/a&gt; и &lt;a href="http://rsdn.ru/forum/cpp/3730905.all.aspx"&gt;обсуждение на rsdn&lt;/a&gt;. По ссылкам - много полезной информации по &lt;a href="http://en.wikipedia.org/wiki/Lock-free_and_wait-free_algorithms"&gt;lock-free&lt;/a&gt; контейнерам и готовый код.&lt;br /&gt;&lt;br /&gt;Спасибо &lt;a href="http://orvind.livejournal.com/"&gt;orvind&lt;/a&gt;'у за ссылку.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5110942562095162841?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5110942562095162841/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5110942562095162841' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5110942562095162841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5110942562095162841'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/lock-free.html' title='Lock-free контейнеры'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3948752928263629385</id><published>2010-03-05T22:55:00.002+03:00</published><updated>2010-03-05T23:02:30.143+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Питер Норвиг отвечает на вопросы reddit-коммьюнити</title><content type='html'>Питер Норвиг ответил на вопросы, которые ему задавали пользователи reddit'а. Работает ли Гугл над strong AI, почему Лисп не используется широко в Гугле, кьюбиклы или отдельные офисы. В целом забавно, но никаких откровений. И да, рубашка у него зачетная :-).&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/watch?v=hE7k0_9k0VA"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/hE7k0_9k0VA" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Нашла по ссылке &lt;a href="http://www.acceleratingfuture.com/michael/blog/2010/03/is-google-working-on-strong-ai/"&gt;отсюда&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3948752928263629385?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3948752928263629385/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3948752928263629385' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3948752928263629385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3948752928263629385'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/reddit.html' title='Питер Норвиг отвечает на вопросы reddit-коммьюнити'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-266605319267847977</id><published>2010-03-05T10:44:00.003+03:00</published><updated>2010-03-05T12:16:51.071+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Вопросы с собеседования: общие вопросы</title><content type='html'>Это пятая часть вопросов. Все вопросы можно найти &lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(5a) Как ИИ должен взаимодействовать с системой анимации? Какие проблемы возникают при взаимооднозначном отображении между поведениями и анимациями? Дайте примеры ситуаций, когда ИИ требуется взять контроль над частями тела юнита, а не просто играть анимацию всего тела, опишите реализацию каждого такого примера.&lt;br /&gt;&lt;br /&gt;(5b) Как должна ИИ-система выбирать анимации для проигрывания? Другими словами, какими должны быть интерфейсы для кода и для данных, каким образом данные должны быть абстрагированы, чтобы ИИ-система могла как можно проще доступаться до анимаций? Опишите достоинства и недостатки различных путей описания анимаций и доступа к ним.&lt;br /&gt;&lt;br /&gt;(5c) Расскажите о самой крутой ИИ-системе, которую вы видели в игре. Что именно вас впечатлило? Как вы думаете, как именно она была реализована. Каковы возможны проблемы по производительности у такой системы?&lt;br /&gt;&lt;br /&gt;(5d) Как можно использовать машинное обучение(ML) в играх. Какие проблемы ML помогло вам решить? Каковы достоинства и недостатки различных подходов? Каковы характеристики по производительности различных ML-подходов? Какие ML-подходы могут быть использованы в реалном времени, а какие лучше считать заранее? Дайте различные примеры использования ML, неважно, успешные или нет.&lt;br /&gt;&lt;br /&gt;(5e) У вас есть игра, в которой 1000 ботов ищут путь через сложный уровень игры, у каждого из них разные цели и система поведения. Сделаем допущение для данного вопроса, что это вражеские солдаты и офицеры, патрулирующие и защищающие базу в шутере от первого лица. Каким образом вы будете оптимизировать производительность ИИ для ваших ботов?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-266605319267847977?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/266605319267847977/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=266605319267847977' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/266605319267847977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/266605319267847977'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post_05.html' title='Вопросы с собеседования: общие вопросы'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-7918396219786998663</id><published>2010-03-04T10:17:00.007+03:00</published><updated>2010-09-22T15:40:44.754+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Вопросы с собеседования: поиск пути и навигация</title><content type='html'>Это четвертая часть вопросов. Все вопросы можно найти &lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(4a) Расскажите об алгоритме A*. Сравните его с другими алгоритмами, почему его обычно используют в играх с расчетами в реальном времени? В каких случаях у A* низкая производительность?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A* - алгоритм поиска на графе с эвристикой.&lt;br /&gt;&lt;a href="http://www.policyalmanac.org/games/aStarTutorial_rus.htm"&gt;Алгоритм A* для новичков&lt;/a&gt; - простое и наглядное описание.&lt;br /&gt;У него хорошая производительность, эвристику можно потюнить если чего.&lt;br /&gt;Хуже всего отрабатывает тогда, когда пути для цели нет. Перебирает все возможные узлы графа и может сожрать много памяти.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(4b) Назовите как минимум 3 способа представить пространство поиска так, чтобы на нем можно было делать поиск пути. Каковы достоинства и недостатки каждого из этих подходов, когда какой из них вы будете использовать?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Можно разделить на клеточки: квадратные, шестиугольные. Плохо подходят для трехмерных миров. Занимают много памяти. Требуют дополнительной интерполяции пути юнитов, иначе юниты, которые ходят по клеточкам, будут выглядеть глупо. Но зато есть random access look-up.&lt;br /&gt;Waypoints. Найденный путь не всегда оптимальный. Хорошо работает в трехмерных играх.&lt;br /&gt;Navigation mesh. Нужно хранить большое количество полигонов, если мир сложный. Хорошо работают как на открытых пространствах, так и в закрытых. Можно генерировать автоматически. Но сложно.&lt;br /&gt;Использование сильно зависит от задачи.&lt;br /&gt;Все это подробно и с картинками изложено здесь: &lt;a href="http://www.cse.lehigh.edu/~munoz/CSE497/classes/BaderPathfinding_2_1.ppt"&gt;Pathfinding: Search Space Representations&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(4c) Назовите все способы, какие знаете, для оптимизации поиска пути без потери качества найденного пути. Перечислите все дополнительные расходы (например, увеличившийся расход памяти) для каждой из этих оптимизаций.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Речь будет идти про А*, поскольку он самый популярный.&lt;br /&gt;Оптимизировать можно двумя путями: пространство поиска и сам алгоритм. Сначала про пространство поиска:&lt;br /&gt;Можно разделить пространство поиска на клеточки покрупнее, алгорим будет работать быстрее.&lt;br /&gt;Есть HPA* (hierarchical pathfinding A*) - Иерархию двух пространств поиска. Грубо говорят - клеточки покрупнее, которые делятся на клеточки поменьше. Сначала ищем по крупным клеточкам, потом, когда путь найден, уточняем по мелким. Больше двух никто не делает - получается сложно, выигрыш маленький, не нужно это.&lt;br /&gt;Оптимизация самого алгоритма: &lt;br /&gt;Играем с эвристикой.&lt;br /&gt;Если идет несколько поисков одновременно, можно запоминать промежуточные данные одного поиска и использовать их в другом.&lt;br /&gt;Можно аллоцировать необходимую для алгоритма память заранее.&lt;br /&gt;&lt;br /&gt;Также см. Game Parogramming Gems, глава A* Speed Optimizations&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(4d) Ваша система поиска пути была написана с расчетом на солдата, и она хорошо работает для солдат. Посередине разработки дизайнеры решают добавить 3 новых типа юнитов: инопланетянина ростом 15 футов, который не пролезает через большУю часть дверей в игре, очень широкую машину на воздушной подушке, которая не пролезает в узкие коридоры и через маленькие двери, и солдата на мотоцикле, который довольно медленно поворачивает( например, 15 градусов в секунду на любой скорости). Какие изменения вы внесете в свой AI, чтобы они все заработали нормально?&lt;br /&gt;&lt;br /&gt;(4e) У вас есть система поиска пути, которая отлично работает, но она не умеет работать с динамическими объектами (ящиками, бочками, машинами, другими юнитами). Игрок играет супергероем, который может использовать суперспособность "бросить автомат с газировкой на пути юнита".  ИИ-юнит не может подвинуть или уничтожить этот автомат. Когда юнит видит, что автомат заблокировал его путь, какими способами он может найти способ обойти его, при этом придерживаясь своего начального направления движения и дойдя до цели? Что будет, если автомат сбросили на точку назначения? Что если автомат заблокировал дверь, через которую юнит должен пройти согласно своему предрассчитанному пути?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Ставим автомату вектор отталкивания, соответственно модифицируем вектор движения нашего юнита.&lt;br /&gt;Если закрыло точку назначения - встаем до нее, чего делать.&lt;br /&gt;Если заблокировало дверь - пересчитываем путь, когда в эту дверь упремся.&lt;br /&gt;Подробнее здесь: &lt;a href="http://www.cse.lehigh.edu/~munoz/CSE497/classes/DeLorenzoObstacles2.7.ppt"&gt;Avoiding Dynamic Obstacles and Hazards&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(4f) Вы работаете над игрой от первого лица, мир трехмерный. Поиск пути в игре использует навигационную сетку. Внезапно дизайнеры решают, что они хотят, чтобы юниты в игре могли использовать лестницы, чтобы взбираться на стены, спрыгивать с небольшой высоты, перепрыгивать через небольшие трещины и все это должно стать частью поиска пути. Расскажите, как вы реализуете такую системы, и как она будет связана с существующей навигационной сеткой. Также расскажите, какие утилиты вы предоставите дизайнерам (если предоставите).&lt;br /&gt;&lt;br /&gt;(4h) Вы делаете шутер по мотивам Второй Мировой со сражениями на улицах Берлина. Дизайнер хочет, чтобы в определенные моменты игры нацисты, котролируемые компьютером, обходили игрока с флангов, т.е. чтобы небольшие отряды нацистов подходили с разных сторон, с боковых улиц и дворов. Допустим, жульничать нельзя (т.е. нельзя просто телепортировать юнитов туда, где они должны оказаться) и мы предполагаем, что дизайнеры не могут сделать это с помощью скрипта. Опишите как минимум 2 пути реализовать такую систему. &lt;br /&gt;&lt;br /&gt;(4i) Ваш дизайнер поиграл в игру, где он видел отряд юнитов двигающихся по коридору таким образом, что только один их них двигался в каждый момент времени, а остальные его прикрывали (т.е. юнит из тыла всегда двигается вперед). Он впечатлен и он хочет такое же. Опишите пути реализации такой системы. Каким образом ИИ будет понимать, когда ему двигаться, когда остановиться, когда открывать заградительный огонь?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-7918396219786998663?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/7918396219786998663/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=7918396219786998663' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7918396219786998663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/7918396219786998663'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post_04.html' title='Вопросы с собеседования: поиск пути и навигация'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3920180343171597334</id><published>2010-03-03T10:16:00.009+03:00</published><updated>2010-06-09T16:00:26.293+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Вопросы с собеседования: стиринги</title><content type='html'>Это третья часть вопросов. Все вопросы можно найти &lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Это вопросы по steering behaviors, в просторечье "стиринги". Я видела перевод "стайное поведение", но он мне не очень нравится.&lt;br /&gt;&lt;br /&gt;(3a)Как работают системы, эмулирующие стаю? Каковы компоненты такой системы и как они объединены? Когда поведение стаи не работает или дает нежелательный результат? Есть ли в стандартной стайной модели Крэйга Рейнольдса (Craig Reynolds) проблемы с производительностью? Если да, то как с ними справиться?&lt;br /&gt;&lt;blockquote&gt;Модель Крейга Рейнольдса &lt;a href="http://www.red3d.com/cwr/steer/"&gt;тут&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(3b)Что такое аттракторы и репульсоры? (&lt;span style="font-style:italic;"&gt;в оригинале "attractors and repulsors", хороший перевод не придумала&lt;/span&gt;) Какое отношение они имеют к стиринг-системе. Когда они полезны, каковы их ограничения? Когда они могут быть использованы для огибания препятствий, а когда их недостаточно?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Можно задать притяжение (это attractors) или отталкивание (repulsor) между объектами. Их можно использовать в дополнении к существующему поиску пути, в дополнении к стирингам. Притяжение и отталкивание не обязательно должны быть линейными. Можно нарисовать всякие интересные кривые. Можно кривые менять во времени. Например, зайцы убегают от волка. Но если у волка мало здоровья, то они убегают вяленько.&lt;br /&gt;Страдают от проблемы локального минимума.&lt;br /&gt;Не нашла ничего в открытом доступе, поэтому отсылаю вас к Game Programming Gems 4, Глава 4.6, Attractors and repulsors.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(3c)Вы начинаете работать над игрой, и один из ваших коллег предлагает полностью отказаться от поиска пути и использовать потенциальные поля для поиска пути и навигации. Он предлагает покрыть весь мир двумерной сеткой, в каждой ячейке которой записано расстояние для ближайшего препятствия. Хорошая ли это идея? Почему "да" или почему "нет"? Когда с этим решением возможны проблемы? Вне зависимости от ответа на этот вопрос, где еще может быть использована такая система?&lt;br /&gt;&lt;blockquote&gt;Идея не хорошая, потому что у потенциальных полей много проблем, они любят застревать в локальных минимумах. Можно их использовать на тайловых малодетализированных уровнях. Подробнее: &lt;a href="http://www.gamedev.net/reference/articles/article1125.asp"&gt;Motion Planning Using Potential Fields&lt;/a&gt; и &lt;a href="http://aigamedev.com/open/tutorials/potential-fields/"&gt;Using Potential Fields in a Real-time Strategy Game Scenario (Tutorial)&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(3d)Вы разрабатываете средневековую стратегию, в которой пехотинцы с пиками всегда должны идти перед лучниками, а катапульты всегда должны быть за лучниками. Расскажите как вы будете реализовывать систему передвижения, в которой пехотинцы будут спереди, а катапульты в тылу, насколько это возможно. Объясните как будет зависеть ваш ответ от того, надо ли просто войску выстроиться на месте назначения в таком порядке, или надо при передвижении сохранять такой порядок. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Краткий ответ. Если надо просто выстроиться в месте назначения - заранее определяем кто где будет стоять и направляем юнитов туда, это просто. Если надо сохранять порядок при передвижении - разделяем юниты по скорости. Обсуждение это вопроса есть &lt;a href="http://forums.aigamedev.com/showthread.php?t=1151"&gt;тут&lt;/a&gt;.&lt;br /&gt;Подробнее смотрите статьи: &lt;a href="http://web.archive.org/web/20080326212337/www.gamasutra.com/features/19990122/movement_02.htm"&gt;Movement Issues Facing Game Developers&lt;/a&gt; и &lt;a href="http://web.archive.org/web/20080326201724/http://www.gamasutra.com/features/19990129/implementing_01.htm"&gt;Implementing Coordinated Movement&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(3e)Вам поручено реализовать толпу людей, прогуливающихся по улицам города. Расскажите о нескольких способах, которыми можно это реализовать быстро и эффективно. Как вы сделаете так, чтобы люди в толпе не дотрагивались друг до друга во время движения? Как они будут уступать друг другу дорогу и не застревать при этом, пытаясь обойти друг друга?&lt;br /&gt;&lt;br /&gt;(3f)Дополнение к предыдущему вопросу. Толпа должна разбегаться, когда начинается драка. Как вы реализуете такое разбегание? Как вы сделаете так, чтобы толпа не возвращалась тут же обратно? Как вы сделаете так, чтобы толпа с течением времени "забывала" об этом инциденте и возвращалась обратно?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Repulsor, который с течением времени затухает.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(3g)У вас в игре есть машина на воздушной подушке и дизайнеры хотят, чтобы она двигалась линейно по определенным точкам. Она должна доходить до точки, останавливаться, стрелять в игрока несколько секунд, а затем случайно двигаться к следующей или к предыдущей точке из последовательности. Путь до новой точки должен занимать 4-5 секунд. Как вы реализуете движение такой машины, чтобы оно выглядело как можно более убедительно? Нужно ли здесь использовать физику, если да, то почему?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Я бы сгладила путь сплайнами, ну и всё. Без физики. Если бы это было не воздушная подушка, а грузовик на колесах, пришлось бы делать реалистичный разворот, учитывать радиус разворота.&lt;br /&gt;Подробнее об этом рассказывается в AI game programming wisdom, глава &lt;a href="http://books.google.com/books?id=4f5Gszjyb8EC&amp;pg=PA186&amp;lpg=PA186&amp;dq=Realistic+Turning+between+Waypoints++%09%09Marco+Pinter&amp;source=bl&amp;ots=9AWMuvJxml&amp;sig=roIai2-6ENwb6yDAwSC8C-K4qCo&amp;hl=en&amp;ei=dYD-S5-oCZ6InQPU7smpDA&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=1&amp;ved=0CBIQ6AEwAA#v=onepage&amp;q=Realistic%20Turning%20between%20Waypoints%20%20%09%09Marco%20Pinter&amp;f=false"&gt;Realistic Turning between Waypoints&lt;/a&gt;. &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3920180343171597334?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3920180343171597334/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3920180343171597334' title='Комментарии: 11'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3920180343171597334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3920180343171597334'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post_03.html' title='Вопросы с собеседования: стиринги'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3464025428833554801</id><published>2010-03-02T11:45:00.006+03:00</published><updated>2010-03-12T11:46:32.833+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Вопросы с собеседования: работа с пространством и скриптование</title><content type='html'>Это вторая часть вопросов. Все вопросы можно найти &lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Работа с пространством&lt;/span&gt;&lt;br /&gt;(2a)На примере системы ИИ из игры Thief из &lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post_01.html"&gt;прошлой серии вопросов&lt;/a&gt; (1f) расскажите, каким образом вы реализуете поведение стражников "поиск игрока" и пустите их разведывать территорию так, чтобы это выглядело праводоподобно? Как вы убедитесь, что это поведение не слишком сложное для игрока, что игрока нельзя найти, если он играет хорошо?&lt;br /&gt;&lt;blockquote&gt;Можно составить карту влияния (influence map) по результатам работы сенсоров. Также можно ввести уровень пароноидальности ботов. А дальше все это надо долго и нудно настраивать в зависимости от того, чего хотят геймдизайнеры. Не встречала никаких статей по тулзам Thief'а, предполагаю, что они это все программили в обнимку с геймдизайнерами.&lt;br /&gt;Подробнее обсуждается &lt;a href="http://forums.aigamedev.com/showthread.php?t=1257"&gt;тут&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(2b)Ваша задача реализовать компьютерного игрока в стратегии реального времени (RTS). Допустим, туман войны не нужен. Как ваш компьютерный игрок будет определять какие части карты контролируются вражескими игроками, а какие можно исследовать? Как вы определите &lt;a href="http://ru.wikipedia.org/wiki/Геостратегический_регион"&gt;геостратегические регионы&lt;/a&gt; карты? Как вы найдете границу между частями карты под вашим контролем и частями под контролем врагов? Как вы определите готовящуюся атаку врага, изменение в уровне агрессии врага?&lt;br /&gt;&lt;blockquote&gt;Опять influence map. Каждое здание "излучает" влияние. Сила влияния зависит от здания. Те места, где влияния нет, никому не принадлежат и их можно исследовать. Вражеские атаки тоже можно определить через влияния. Тут его будут "излучать" юниты врага.&lt;br /&gt;Геостратегические регионы (английский термин лучше и короче - choke points ) - мосты, ущелья и т.п. Можно напрячь дизайнеров уровней их помечать на карте. Если дизайнеры уровней сопротивляются или если эти точки можно создавать динамически, то можно пытаться карту анализировать как-то так: если между двумя смежными регионами A и B можно пройти только через R, то R - choke point.&lt;br /&gt;Подробное обсуждение &lt;a href="http://forums.aigamedev.com/showthread.php?t=1191"&gt;тут&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(2c)В вашей RTS игре компьютер время от времени посылает разведчиков разведывать территорию. Дизайнеры хотят, чтобы каждый разведчик двигался полуслучайно и обходил различные части карты, предпочитая те, которые были открыты недавно. Допустим, что игра использует сетку и что есть туман войны. Также допустим, что разведчики стоят дешево и их не жалко, их можно пускать на вражеские базы и в другие опасные места. Как вы реализуете систему, которая будет решать куда идти разведчику? Какие структуры данных вам понадобятся? Как вы поймете, что разведчики достаточно хорошо исследуют карту? Дайте оценку по производительности вашего решения. Есть ли риск того, что разведчик будет пытаться добраться до недоступного места и застрянет?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Скриптование&lt;/span&gt; &lt;br /&gt;&lt;blockquote&gt;Ответы на большинство вопросов по скриптованию можно найти тут: &lt;a href="http://plakhov.livejournal.com/101443.html"&gt;Дзэн-3, скрипт&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;(2d)Как связаны скриптование и ИИ? Когда следует контролировать ИИ с помощью скриптов? Когда дизайнеры используют ИИ для контроля над ИИ-агентами, на каком уровне скрипт должен взаимодействовать с ИИ?&lt;br /&gt;&lt;br /&gt;(2e)Расскажите о нескольких системах скриптования, которые вы использовали в работе, или которые видели в других играх. Расскажите о достоинствах и недостатках тех или иных подходов к скриптованию.&lt;br /&gt;&lt;br /&gt;(2f)Каковы достоинства и недостатки скриптования в целом? Когда скриптование использовать не надо?&lt;br /&gt;&lt;br /&gt;(2g)Возьмите для примера любую игру и опишите лучший путь построения системы скриптования, которая даст дизайнерам возможность на каком-то уровне контролировать ИИ в игре. Также опишите идеальные инструменты для отладки описанной вами системы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-3464025428833554801?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/3464025428833554801/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=3464025428833554801' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3464025428833554801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/3464025428833554801'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post_02.html' title='Вопросы с собеседования: работа с пространством и скриптование'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-5011136912312185112</id><published>2010-03-01T11:30:00.012+03:00</published><updated>2010-09-22T00:18:58.353+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Вопросы с собеседования: поведенческий ИИ</title><content type='html'>Это первая часть вопросов. Все вопросы можно найти &lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(1a)Какая разница между конечным автоматом(FSM) и иерархическим конечным автоматом(HFSM)? Дайте пример иерархического конечного автомата, который нельзя будет легко заменить конечным.&lt;br /&gt;&lt;blockquote&gt;Конечные автоматы: http://en.wikipedia.org/wiki/Finite-state_machine&lt;br /&gt;Иерархический конечный автомат, как многие догадались - это автомат, в качестве состояния у которого тоже автомат. http://www.eventhelix.com/RealtimeMantra/HierarchicalStateMachine.htm&lt;br /&gt;Иерархический автомат всегда можно представить в виде неирархического. Но при определенном размере обычный конечный автомат получится такой здоровый, что с ним будет очень тяжело работать.&lt;br /&gt;Также см. ответ &lt;a href="http://aiandu.blogspot.com/2008/06/response-to-ai-developer-interview.html"&gt;тут&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(1b)Какие есть недостатки у конечных автоматов? Когда разумно использовать конечные автоматы, а когда их недостаточно, чтобы реализовать нужное поведение в игре?&lt;br /&gt;Не умеют работать с параллельными и асинхронными задачами.&lt;br /&gt;&lt;blockquote&gt;Их нельзя использовать для поведений с целью, не умеют работать с параллельными и асинхронными задачами, плохо масштабируются. &lt;br /&gt;Также см. &lt;a href="http://aigamedev.com/open/articles/fsm-age-is-over/"&gt;тут&lt;/a&gt;, &lt;a href="http://aiandu.blogspot.com/2008/06/response-to-ai-developer-interview.html"&gt;тут&lt;/a&gt; и иллюстрацию:&lt;/blockquote&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VUQ3DQEhjsM/S5TGgYeVVbI/AAAAAAAAAdQ/0A5HS1YrTY8/s1600-h/fsm.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 304px;" src="http://1.bp.blogspot.com/_VUQ3DQEhjsM/S5TGgYeVVbI/AAAAAAAAAdQ/0A5HS1YrTY8/s400/fsm.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5446196109025564082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(1c)Что такое дерево принятия решений (decision tree)? Когда вы будете использовать такое дерево? Дайте оценки по производительности. Как сгенерировать дерево принятия решений автоматически из набора данных? Реально ли это сделать в рантайме, делалось ли это раньше в коммерческой игре? В каких ситуациях так следует делать и каким образом должны быть организованы данные, чтобы это было возможно?&lt;br /&gt;&lt;blockquote&gt;http://en.wikipedia.org/wiki/Decision_tree&lt;br /&gt;Минусы - каждый раз надо гнать заново сначала, не умеют хранить уже принятые решения, error propagation. &lt;br /&gt;Автоматически генерятся с помощью алгоритмов типа &lt;a href="http://en.wikipedia.org/wiki/C4.5_algorithm"&gt;C4.5&lt;/a&gt; и &lt;a href="http://en.wikipedia.org/wiki/ID3_algorithm"&gt;ID3&lt;/a&gt;. &lt;br /&gt;Игра Black&amp;White использовала ID3. См. &lt;a href="http://web.archive.org/web/20010821114932/http://www.gameai.com/blackandwhite.html"&gt;тут&lt;/a&gt; и &lt;a href="http://www.cse.lehigh.edu/~munoz/CSE497/classes/Storey_DecisionTrees.ppt"&gt;тут[.ppt]&lt;/a&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(1d)Вы реализуете схватку с боссом в 3D игре. У босса есть 15 вариантов атаки. Геймдизайнеры попросили вас сделать так, чтобы игрок в течение схватки видел как можно больше из этих 15 вариантов атак и чтобы он редко (а лучше никогда) видел одну и ту же атаку два раза подряд. Каким образом тут следует реализовать алгоритм атаки? Имейте в виду, что не все атаки досупны в каждый момент времени. Например, у босса есть атака, которая возможна только в ближнем бою, атака бомбами, которая возможна только если игрок далеко.&lt;br /&gt;&lt;blockquote&gt;Рандом с весами (такой вариант был в комментариях). Флажками помечаем атаки, которые недоступны, по остальным гоним рандом. Нельзя убирать атаку, которая только что была, потому что если она всего одна, то нехорошо получится. Нужно уменьшать ее вес.&lt;br /&gt;Также см. обсуждение и другие варианты ответов &lt;a href="http://forums.aigamedev.com/showthread.php?t=1077"&gt;тут&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(1e)В одной комнате в вашей игре есть лифт, который боты должны использовать, чтобы убежать от игрока. Чтобы использовать лифт, они должны подойти к специальной кнопке на стене, нажать ее, чтобы вызывать лифт, затем зайти в лифт и нажать другую кнопку, чтобы лифт начал подниматься. Каким образом вы задизайните систему, в которой все эти действия будут выполняться в нужном порядке? Допустим, у вас три бота в комнате, как вы задизайните систему при условии что они все могут убежать одновременно? Что случится, если один их них умрет во время убегания, как вы убедитесь, что остальные не застряли и его не ждут?&lt;br /&gt;&lt;blockquote&gt;Узнаем у геймдизайнеров один ли лифт в игре. Скорее всего он один, поэтому скриптуем его. &lt;br /&gt;Здесь можно реализовать групповое поведение, например на &lt;a href="http://en.wikipedia.org/wiki/Blackboard_system"&gt;blackboard&lt;/a&gt;'ах. Основной проблемой тут будут проверки, много проверок. Что убежавший до кнопки добежал и кнопку нажал, убедиться, что лифт приехал и не пихать их всех в шахту, что все влезают в лифт и т.п.&lt;br /&gt;Обсуждение и более подробно описанные варианты решения &lt;a href="http://forums.aigamedev.com/showthread.php?t=996"&gt;тут&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(1f)Вам дана задача разработать игру похожую на Thief: The Dark Project и вам нужно сделать стражников с неидеальными слухом и зрением и посадить их в тускло освещенные замки. Они могут искать игрока, если они думают, что к ним кто-то вторгся. Как вы смоделируете систему сенсоров для этих стражников, как вы будете собирать аудио, визуальные и другие стимулы системы? Как вы реализуете различные уровни тревоги стражников и почему? &lt;br /&gt;&lt;blockquote&gt;Система сенсоров Thief'а описана &lt;a href="http://www.gamasutra.com/view/feature/2888/building_an_ai_sensory_system_.php"&gt;здесь&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(1g)Что такое планирование? Как оно используется и в чем его преимущества? Реально ли использовать планирование в реалтайм игре? Если да, то назовите игры, в которых планирование было реализовано как часть ИИ. Опишите архитектуру систему ИИ с планированием для любого жанра игры.&lt;br /&gt;&lt;blockquote&gt;В целом про планирование: &lt;a href="http://www.bit-tech.net/gaming/2009/03/05/how-ai-in-games-works/3"&gt;The Planning System&lt;/a&gt;.&lt;br /&gt;Правильные ключевые слова: &lt;a href="http://web.media.mit.edu/~jorkin/goap.html"&gt;GOAP&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/STRIPS"&gt;STRIPS&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Hierarchical_task_network"&gt;HTN&lt;/a&gt;.&lt;br /&gt;Также см. &lt;a href="http://aiandu.blogspot.com/2008/06/response-to-ai-developer-interview.html"&gt;тут&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(1h)Вы работаете над игрой, в которой есть дуэль волшебников. У каждого волшебника есть как минимум дюжина заклинаний, некоторые их них наносят урон, некоторые на какое-то время оглушают или останавливают игрока, замедляют его, не дают ему использовать его заклинания недолгое время, телепортируют кастовавшего на короткое расстояние или дают ему временную броню. Волшебник может накладывать только одно заклинание за раз, у каждого заклинания есть фиксированный кулдаун (время, через которое заклинание может быть использовано снова) и стоимость в мане (регенеранции маны нет). Опишите реализацию ИИ для такого волшебника.&lt;br /&gt;&lt;blockquote&gt;Делим все заклинания на "атакующие", "защитные" и еще какие-нибудь по вкусу. В зависимости от того, сколько маны и хитпоинтов у нас, сколько у противника используем заклинание из нужной группы, выбираем его рандомно.&lt;br /&gt;Более подробное описание см. &lt;a href="http://aiandu.blogspot.com/2008/06/response-to-ai-developer-interview.html"&gt;тут&lt;/a&gt;.&lt;br /&gt;Этого должно хватить. Если геймдизайнерам это не понравится, можно использовать более умные методы.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Бонусная задачка от &lt;a href="http://www.blogger.com/profile/08766696929263430140"&gt;senigami&lt;/a&gt;:&lt;br /&gt;Вот такая задачка: представьте себе Красную площадь в довольно людное время суток. И много людей которые пытаются перейти площадь с одной стороны на другую( Из одной рандомной точки одной стороны в другую рандомную точку другой) Как сделать так, чтобы люди не сталкивались при движении (т.е. обходили друг друга)?&lt;br /&gt;&lt;blockquote&gt;Что-то не густо с ответами на мою задачу. Как и обещал хозяйке поста - мои варианты решения задачи. Их несколько, ну как и у любой интересно задачи. Первая реализация, которую я сразу придумал занимаясь когда-то этой задачей называется Steering behaviour. Реализация в моем случае была достаточно простая: к НПЦ, идущим по просчитанному заранее пути прикладываются силы. Первая возникает только тогда, когда НПЦ отклоняется от просчитанной траектории и старается "вернуть" НПЦ на траекторию. Вторая возникает когда поблизости возникает другой НПЦ. НПЦ отталкиваются друг от друга как одинаковые заряды. Этот способ конечно не нов и использовался уже в играх (я на КРИ пару раз слышал такие идеи от АИ программистов). Что-то подобное реализовано, как я понимаю, тут http://opensteer.sourceforge.net/&lt;br /&gt;Второй подход - реализовать все с помощью коллижена. НПЦ ходят в виде больших вертикальных цилиндров. Когда на некотором апдейте они заколлизятся то их их скорости просто вычитается проекция вектора скорости на линию центров (нужно конечно немножко читить чтобы при этом скорость не оказалась равна 0). Визуально выглядит этот вариант не очень красиво :(&lt;br /&gt;Третий подход, о котором я сам недавно узнал - на основании данных о размерах и желаемых скоростях объектов составлять и решать некоторую оптимизационную задачу. В результате решения задачи получим скорость, применяя которую на данном апдейте мы гарантированно не заколлизимся. Статья с подробным описанием для интересующихся тут http://gamma.cs.unc.edu/CA/&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Я добавила нумерацию, чтобы на вопросы было проще ссылаться из комментариев. Комментируйте, не стесняйтесь. Если стесняетесь, комментируйте анонимно :-).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated:&lt;/span&gt; вопросы вызвали неожиданную реакцию и народ предался самоуничижению, что отнюдь не было моей целью. Думайте, ошибайтесь. Эти вопросы, они для того, чтобы научиться, чтобы посмотреть на реальные примеры задач из работы ai-программера.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-5011136912312185112?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/5011136912312185112/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=5011136912312185112' title='Комментарии: 66'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5011136912312185112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/5011136912312185112'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post_01.html' title='Вопросы с собеседования: поведенческий ИИ'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VUQ3DQEhjsM/S5TGgYeVVbI/AAAAAAAAAdQ/0A5HS1YrTY8/s72-c/fsm.jpg' height='72' width='72'/><thr:total>66</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-2701068027976401091</id><published>2010-03-01T00:46:00.007+03:00</published><updated>2010-03-06T20:15:19.688+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gamedev'/><title type='text'>Вопросы из собеседования по ИИ в играх</title><content type='html'>Однажды некий разрабочик запостил в свой блог список вопросов, которые он задает на собеседованиях. Все вопросы узкоспециальные, по разработке искусственного интеллекта в играх. Список этот приобрел определенную известность, ссылки на него можно встретить во всяких разных геймдев форумах.&lt;br /&gt;&lt;br /&gt;Там не только чисто теоретические вопросы, но и много задач, которые реально возникали у него в работе.&lt;br /&gt;&lt;br /&gt;Я думаю, многим будет интересно на них посмотреть и попробовать самим поотвечать. Поэтому в течение недели я буду их переводить и постить пачками каждый день с понедельника по пятницу. А в выходные &lt;strike&gt;будут танцы!&lt;/strike&gt; допишу к ним ответы. &lt;br /&gt;Оглавление:&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post_01.html"&gt;Поведенческий ИИ&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post_02.html"&gt;Работа с пространством и скриптование&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post_03.html"&gt;Стиринги&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post_04.html"&gt;Поиск пути и навигация&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2010/03/blog-post_05.html"&gt;Общие вопросы&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я пока не даю ссылку на источник и не указываю имя разработчка, потому что там, конечно же, есть ответы. И если дать ссылку сразу, то не все смогут противостоять соблазну глянуть ответы там.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Updated&lt;/span&gt;:&lt;br /&gt;Вопросы задавал Пол Тозур(Paul Tozour): &lt;a href="http://www.ai-blog.net/archives/000145.html"&gt;Interviewing AI Developers&lt;/a&gt;&lt;br /&gt;Часть ответов можно найти на &lt;a href="http://forums.aigamedev.com/forumdisplay.php?f=21"&gt;форумах aigamedev.com&lt;/a&gt; и тут: &lt;a href="http://aiandu.blogspot.com/2008/06/response-to-ai-developer-interview.html"&gt;Response to AI Developer Interview Questions - Part 1&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10303035-2701068027976401091?l=alenacpp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alenacpp.blogspot.com/feeds/2701068027976401091/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10303035&amp;postID=2701068027976401091' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2701068027976401091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10303035/posts/default/2701068027976401091'/><link rel='alternate' type='text/html' href='http://alenacpp.blogspot.com/2010/03/blog-post.html' title='Вопросы из собеседования по ИИ в играх'/><author><name>Alena</name><uri>http://www.blogger.com/profile/09389124127364799922</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_VUQ3DQEhjsM/TNmioYOChJI/AAAAAAAAAl4/q1p-XhbFXuw/S220/alena.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10303035.post-3558145054162852021</id><published>2010-02-26T16:31:00.001+03:00</published><updated>2010-02-26T16:35:33.467+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><title type='text'>C++0x: Делегирующие конструкторы (Delegating Constructors)</title><content type='html'>Еще одна приятная фича C++0x, которой лично мне очень не хватало - делегирующие конструкторы. Дальше я кратко изложу вот этот документ: &lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986"&gt;Delegating Constructors (revision 3)[pdf]&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Бывает так, что классу нужно несколько конструкторов, и тогда бывает удобно из одного конструктора вызвать другой. А сделать этого нельзя. Сейчас это решается функциями инициализации. Это несколько неинтуитивный способ и у него есть недостатки.&lt;br /&gt;Пример кода с функцией инициализации.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;class X {&lt;br /&gt;  void CommonInit();&lt;br /&gt;  Y y_;&lt;br /&gt;  Z z_;&lt;br /&gt;public:&lt;br /&gt;  X();&lt;br /&gt;  X( int );&lt;br /&gt;  X( W );&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;X::X() : y_(42), z_(3.14) { CommonInit(); }&lt;br /&gt;X::X( int i ) : y_(i), z_(3.14) { CommonInit(); }&lt;br /&gt;X::X( W e ) : y_(53), z_( e ) { CommonInit(); }&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Недостатки этого метода:&lt;br /&gt;1. Несмотря на то, что тела у этих конструкторов совпадают, слить их в один не получится. &lt;br /&gt;2. Невозможно делегировать инициализацию пере
