tag:blogger.com,1999:blog-103030352024-03-07T12:02:34.300+03:00Алёна C++программирование для прагматиковAlenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.comBlogger502125tag:blogger.com,1999:blog-10303035.post-42499036825405864182023-10-30T18:30:00.000+03:002023-10-30T18:30:16.317+03:00Лотерея ГринКарт в самом разгаре <p>Американская Green Card - это вид на жительство, который позволяет жить и работать в США. </p><p><a href="https://dvprogram.state.gov/ ">https://dvprogram.state.gov/ </a></p><p>Если вы застряли в чужой стране в непонятном статусе это может быть неплохим вариантом.
</p>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com5tag:blogger.com,1999:blog-10303035.post-88699958249314061042019-09-21T20:26:00.001+03:002019-09-21T20:27:33.358+03:00Тем временем на CppCon 2019Открыты исходники <a href="https://devblogs.microsoft.com/cppblog/open-sourcing-msvcs-stl/?fbclid=IwAR2MRl-UJwsWJp_VuPZlFHwbOeNJozTKvdXOs4u7yejbSnjU-9ZsEqAYT-M">MSVC STL</a>.<br />
<br />
<a href="https://twitter.com/robwirving/status/1173743621301948416">В Visual Studio будет Address Sanitizer</a>.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com12tag:blogger.com,1999:blog-10303035.post-53539812943232309602019-07-31T19:57:00.001+03:002019-07-31T19:58:51.480+03:00Видео Макса Галкина про современный С++Thread safety, custom allocators, всё как мы любим.<br />
<br />
<a href="https://www.youtube.com/watch?v=f5qtfSc-YvA">CupOfT #1: C++, const and thread-safety</a>
<br />
<a href="https://www.youtube.com/watch?v=IXThvxZysMY">CupOfT #2: C++ and safe raw pointers</a><br />
<a href="https://www.youtube.com/watch?v=4URfka1mBuU">CupOfT #3: threads + stateful allocators = ♥</a>
Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com5tag:blogger.com,1999:blog-10303035.post-63525557120412724362019-06-07T22:32:00.000+03:002019-06-07T22:32:02.350+03:00Амазон приедет нанимать в Тбилиси в конце июляПодробности тут: <a href="https://www.amazon.jobs/en/jobs/865844/software-development-engineer">Amazon´s International Technology (INTech) will be hosting a hiring event in Tbilisi, Georgia on week commencing July 29th 2019</a>.
Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com0tag:blogger.com,1999:blog-10303035.post-19735154107350814412018-11-10T02:25:00.000+03:002018-11-10T02:32:04.703+03:00Презентация Майкрософта про квантовые компьютерыЯ вчера была на оптимистичной презентации Майкрософта, Дэвид Уэкер рассказывал о разработке квантового компьютера. Самого компьютера у них нет, у них даже кубита ещё нет. Но, говорит, вот-вот будет. У них уже инфраструктура для Ажура расписана, куда они будут этот квантовый компьютер подключать.<br />
<br />
Сейчас они отстают, потому что у IBM и Rigetti кубиты уже есть. Но кубит, который разрабатывает Майкрософт, всем кубитам кубит. Они разрабатывают топологический кубит по работам Алексея Китаева. И для того, чтобы сделать полноценный квантовый компьютер на 200 логических кубитов, им нужно будет ~2000-4000 физических. В то время как их конкурентам нужны будут миллионы кубитов.<br />
И если у них всё получится, Майкрософт будет править миром.<br />
<br />
Про квантовый компьютер DWave осторожно сказал, что он представляет теоретический интерес. Но всё, что может DWave, можно эмулировать.<br />
<br />
Про отладку был вопрос. Как отлаживать программы на реальном квантовом компьютере пока еще не совсем не понятно, понятно одно, что это будет боль.<br />
<br />
Про Microsoft Quantum можно почитать тут: <a href="http://microsoft.com/quantum">microsoft.com/quantum</a><br />
<br />Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com3tag:blogger.com,1999:blog-10303035.post-69678220157006798442018-10-18T04:56:00.001+03:002018-10-18T04:56:06.719+03:00Амазон расширяет свою рекламную платформуВ наших краях распространены встречи с представителями той или иной компании, которые рассказывают о компании, о работе в ней, об используемых технологиях. Заодно заманивают на работу.<br />
Я побывала на одной из таких встреч, организованных Амазоном. Они расширяют свой рекламный отдел и активно нанимают. Поговорила с одним из начальников. Пишут они на Java, что ожидаемо. Чтобы латентность была низкой переиспользуют объекты. В качестве хранилища данных используют что-то самописное, что именно он мне не сказал. <br />
<br />
Ссылки по теме:<br />
<a href="https://www.nytimes.com/2018/09/03/business/media/amazon-digital-ads.html">Amazon Sets Its Sights on the $88 Billion Online Ad Market</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com0tag:blogger.com,1999:blog-10303035.post-5556104874777264592018-10-02T03:28:00.000+03:002018-10-02T19:28:09.786+03:00Отчет о CppCon 2018<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwErWkaGbGi0WeS1SXLkG8st0SnHYsCSTxUlXlBX4CcolyI7YcnESrBX9Yw-j1QW8KBgjqpQkwpmLEo4QoA6onS21scYoqL5phCJi5DUItIRvyoKCF01bUhDwt448GjE7bjyPamg/s1600/cppcon2018.jpg" imageanchor="1" style="clear: left; float: left; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwErWkaGbGi0WeS1SXLkG8st0SnHYsCSTxUlXlBX4CcolyI7YcnESrBX9Yw-j1QW8KBgjqpQkwpmLEo4QoA6onS21scYoqL5phCJi5DUItIRvyoKCF01bUhDwt448GjE7bjyPamg/s200/cppcon2018.jpg" width="200" /></a></div>
<a href="https://cppcon.org/">CppCon </a>- ежегодная конференция, посвящённая языку C++, в этом году проходила в Бельвью, штат Вашингтон.<br />
<br />
Было весело, то и дело была слышна русская речь, из Яндекса народ был, из JetBrains, был стенд PVS-Studio. Я пообщалась с кучей народу, подписала книгу у Скотта Мейерса.<br />
<br />
<br />
Конференция началась с докладов, посвященных Concepts and Contracts. Как это переводят обычно? Концепции и контракты? Должны быть в C++20.<br />
<br />
<div class="separator" style="clear: right; float: right;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpn4Z_6mnIWI7gio51naTlPAnMGGLASpm7-hXALKxwwMIewtvK36fB-POfWd4oQXsBt9zsZkyfDiM-tbGiSIKKKOvMQM-4w0IoVldKNGH0iCoDUIvJcNCZWwRMnvvHfqjrrCh6Tw/s1600/cppmap_cppcon.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpn4Z_6mnIWI7gio51naTlPAnMGGLASpm7-hXALKxwwMIewtvK36fB-POfWd4oQXsBt9zsZkyfDiM-tbGiSIKKKOvMQM-4w0IoVldKNGH0iCoDUIvJcNCZWwRMnvvHfqjrrCh6Tw/s200/cppmap_cppcon.jpg" width="200" /></a></div>
Про модули говорили. Чендлер Каррус из Google рассказывал, что он попробовали использовать модули в 10% их самых медленных заголовочных файлах. Время компиляции резко упало, в 2-4 раза он сказал.<br />
<br />
Я узнала о священной войне west const vs east const. Это война между теми, кто const слева и теми, кто пишет const справа.<br />
<br />
Я представляла карту The C++17 Lands в разделе "постеры" и выиграла ценный приз. Ещё участвовала в собрании Women in C++, организованном <a href="https://twitter.com/include_cpp">include_cpp</a>. Кстати, include_cpp спонсировали билеты и проживание нескольким женщинам в этом году, возможно, они это будут это делать и дальше.<br />
<br />
<div class="separator" style="clear: left; float: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixzfa7kLxqRiDF5ZdSwz8aN8K1_0lNgNISQQq9mwLhS7dO3kvdmg6VlYMnz7_fjmesPJAS-2hS3HKqY1OtI_foKVnkhMexe0lOoS9tcxHJRDa_Wp_Qf5TQj5EVtcHTX-WF9oo4WA/s1600/mythic-ai.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixzfa7kLxqRiDF5ZdSwz8aN8K1_0lNgNISQQq9mwLhS7dO3kvdmg6VlYMnz7_fjmesPJAS-2hS3HKqY1OtI_foKVnkhMexe0lOoS9tcxHJRDa_Wp_Qf5TQj5EVtcHTX-WF9oo4WA/s200/mythic-ai.jpg" width="200" /></a></div>
Поговорила с девушками из очень интересного стартапа <a href="https://www.mythic-ai.com/">Mythic</a>. Они делают ИИ чип. Утверждают, что он лучше, чем GPU и Google TPU, потому что он меньше, дешевле и так сильно не греется. Поддерживает и TensorFlow, и PyTorch. <br />
Осталось узнать, в чём подвох.<br />
<br />
Был очень подробный доклад про <a href="https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)">Spectre</a>, который делал Чендлер Каррус. Я не очень интересуюсь темой безопасности и попала на этот доклад случайно, но тема ужаса и безысходности была раскрыта вполне. Советую посмотреть в записи, если вам это интересно.<br />
<br />
Некоторые материалы с конференции уже выложили, дальше будет больше:<br />
Герб Саттер, видео: <a href="https://www.youtube.com/watch?v=80BZxujhY38">CppCon 2018: Herb Sutter “Thoughts on a more powerful and simpler C++ (5 of N)”</a><br />
Костя Серебряный, слайды: <a href="https://schd.ws/hosted_files/cppcon2018/1a/Memory%20Tagging%20%20and%20how%20it%20improves%20C%252FC%2B%2B%20memory%20safety.pdf">Memory Tagging and how it improves C/C++ memory safety</a>. Я на нём была, очень рекомендую.<br />
Хана Дусикова - популярный доклад о регулярных выражениях. Слайды: <a href="https://www.hanicka.net/ctre/#/">Regular Expressions</a><br />
<br />
<b>Updated 2.10.2018</b>: <a href="https://www.youtube.com/watch?v=_f7O3IfIR2k">CppCon 2018: Chandler Carruth “Spectre: Secrets, Side-Channels, Sandboxes, and Security”</a><br />
<br />
<br />
Следующая конференция состоится через год в городе Аврора, Колорадо.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtOeGjflTvAZ5Iq4-UBjfBT36vw_tjMKo7yOTHREEm7SeAwAEwGNaIcm-PQQTlRMJcNToplriTeQK1PU7V7Zief9jskRBADaZo3tgIXKzJ7eWj8QAt7sAuUprV0pt8p8JySuQNLA/s1600/pvs-studio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtOeGjflTvAZ5Iq4-UBjfBT36vw_tjMKo7yOTHREEm7SeAwAEwGNaIcm-PQQTlRMJcNToplriTeQK1PU7V7Zief9jskRBADaZo3tgIXKzJ7eWj8QAt7sAuUprV0pt8p8JySuQNLA/s320/pvs-studio.jpg" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgirtGq0qzv5qisv7imo-FdWKxO8l-KES3VG_OZHpLaFEDhvIt7rKnSb7awez1KYlHsN3Bn0AGq3JMNZ64gGGObOfXA1LXDTUzaeRFhgnBGKT2E_1q0GIzLDfN7hToZ8GINIbDXBg/s1600/cppcon.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgirtGq0qzv5qisv7imo-FdWKxO8l-KES3VG_OZHpLaFEDhvIt7rKnSb7awez1KYlHsN3Bn0AGq3JMNZ64gGGObOfXA1LXDTUzaeRFhgnBGKT2E_1q0GIzLDfN7hToZ8GINIbDXBg/s320/cppcon.jpg" width="320" /></a></div>
Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com8tag:blogger.com,1999:blog-10303035.post-64994614887223348882017-02-22T21:35:00.001+03:002021-09-23T21:17:16.379+03:00Карта С++17<div>
<b>Updated 15.3.2019: </b>По многочисленным просьбам продаём версию в высоком разрешении, чтобы можно было напечатать постер самостоятельно. https://alenacpp.onfastspring.com/<b> </b><br />
<br />
<b>Updated 23.3.2017</b>: Мы <a href="http://cppmap.jimblog.me/poster.htm">продаем постеры через ebay</a>. Мы доставляем из Техаса, поэтому чем дальше от Техаса вы находитесь, тем дороже доставка, увы.<br />
<br />
Вы умоляли, писали письма и подходили лично. Так вот, новая С++ карта, которую все очень просили, уже готова!</div>
<div>
<br /></div>
<div>
Предыдущая карта сильно устарела за прошедшие годы. Новая отражает изменения в С++ стандарте на начало 2017 года.</div>
<div>
Были перерисованы все "заимствованные" элементы и теперь у нас нет никаких проблем с копирайтами.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://drive.google.com/file/d/0B3DUpmL8tTt8N2JIRklJeTIxYW8/view?usp=sharing&resourcekey=0-0zniuYTfigINYmPoI0I4pg"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhotCcsaB8gTDX35osIREdifTeJPcZDyJ2aCcsTCHQYyEJpj9BWfLcWEjezZVOI24WNuD0__1Sif-MeChAk_bKHlGLZ7gKWa1wECJ3V1Oydyf3NvLVwan72H9MUewzonQvUYcho3Q/s320/cppmap3.0+%2528screen+8bit+96dpi%2529.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<b></b><i></i><u></u><sub></sub><sup></sup><strike><br /></strike></div>
<div>
<strike>Также, будет возможность купить постер с картой с доставкой по всему миру, о чем все тоже очень просили. Следите за обновлениями!</strike><br />
<a href="http://cppmap.jimblog.me/poster.htm">Постер можно купить тут.</a></div>
<div>
<br /></div>
<div>
Как вы, возможно, помните, кроме банального "распечатать и повесить на стену" народ нашел карте множество применений. В одном немецком вузе ее используют для обучения студентов. Несколько раз она была использована во время выступления на конференциях. Магазин из какого-то российского города (уже не вспомнить, откуда именно), торгующий холодным оружием, зачем-то использовал элементы карты в своей рекламе.</div>
<div>
<div>
<br /></div>
<div>
Самые частые вопросы:</div>
<div>
В: Можно я использую её в своей презентации, полностью или частично?</div>
<div>
О: Да, можно.</div>
<div>
<br /></div>
<div>
В: Я преподаватель, можно по ней учить студентов?</div>
<div>
О: Да, можно.</div>
<div>
<br /></div>
<div>
В: Могу я её распечатать и повесить на стену?</div>
<div>
О: Да, можете.</div>
<div>
<br /></div>
<div>
Но не допускается продажа и любой другой способ получения денег и нарушение прав авторства этой работы. Согласитесь, это логично.</div>
</div>
<br />Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com28tag:blogger.com,1999:blog-10303035.post-67323257536002122572016-09-10T02:43:00.001+03:002016-10-04T00:35:41.217+03:00Bing UX нанимает<b>Updated 03.10.2016:</b> Я закончила принимать резюме, всем спасибо!<b> </b><br />
<br />
<b>Updated 26.9.2016</b>: Собеседования будут проходит в Москве в конце октября. Предполагается, что вы будете работать в Москве какое-то время, если вам нужно разрешение на работу в России, упомяните это в сопроводительном письме, пожалуйста.<br />
<br />
Группа Bing UX нанимает специалистов, готовых переехать в США, Бельвью. Виза оформляется минимум год, это время вы будете работать в московском офисе Майкрософт.<br />
<br />
Вот письмо от рекрутера: <br />
At Microsoft we're always hiring top talent to help us build the products of the future. Bing is one of the flagship products. With 100s of millions of users already we have bold ambitions to make Bing the #1 search engine in the world and the most desired homepage in people’s browsers. We wouldn’t be able to achieve this without amazing engineers that we hire from all over the world. We have big plans and this means we need to hire passionate and productive engineers like yourselves. <br />
<br />
We’re hiring for Bing UX group (about 500 engineers) based in Bellevue. This group is responsible for many projects including multimedia search, growth & engagement, maps and local search, whole page relevance, APIs and many others. Depending on the specifics of the team you would be working for we are searching for a number of skillsets. Detailed job description can be viewed <a href="https://careers.microsoft.com/jobdetails.aspx?ss=&pg=0&so=&rw=1&jid=260537&jlang=en&pp=ss">here</a> but we’re looking for 4 kinds of profiles:<br />
<ol>
<li>With a UX focus (javascript, front end development) </li>
<li>With full stack experience </li>
<li>With machine learning experience </li>
<li>With data pipeline experience </li>
</ol>
<br />
Regardless of what is your area of expertise for each Software Engineer role we always look for a set of skills / knowledge which include: <br />
<ol>
<li>Algorithms and data structures </li>
<li>Coding </li>
<li>Systems design </li>
<li>Problem solving </li>
</ol>
<br />
<br />
Если интересно, присылайте свое резюме мне, адрес есть в профиле. Если есть вопросы - задавайте, я передам.<br />
<br />
Актуально до конца сентября.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com18tag:blogger.com,1999:blog-10303035.post-90603573333982011972016-02-25T23:28:00.001+03:002016-02-26T03:43:31.378+03:00Несколько интересных свойств умных указателей в C++Об этом полезно знать при использовании умных указателей в С++<b>:</b><br />
<br />
<b>У shared_ptr есть конструктор, который позволяет создавать зависимости между shared_ptr'ами. </b>(<b></b><a href="https://www.justsoftwaresolutions.co.uk/cplusplus/shared-ptr-secret-constructor.html">std::shared_ptr's secret constructor </a>by Anthony Williams) <br />
Допустим, я хочу создать указатель на объект типа Y, py, который является членом экземпляра класса X, px. Мне нужно, чтобы px не удалялся, пока я не закончу работать с py.<br />
<br />
<pre><code>
void bar(){
std::shared_ptr<X> px(std::make_shared<X>());
std::shared_ptr<Y> py(px,&px->y);
store_for_later(py);
} // our X object is kept alive
</code></pre>
<br />
<br />
<b>unique_ptr не такой уж и уникальный. </b>(<a href="http://bartoszmilewski.com/2009/05/21/unique_ptr-how-unique-is-it/">unique_ptr–How Unique is it?</a> by Bartosz Milewski)<br />
<pre><code>
void f(Foo * pf) {
globalFoo = pf; // creates a global alias
}
unique_ptr<Foo> pFoo(new Foo());
f(pFoo.get()); // leaks an alias
</code></pre>
<br />
<br />
<b>Передача shared_ptr по значению - дорогое удовольствие. </b>(<a href="https://vimeo.com/131189627#t=39m">The Real Price of Shared Pointers in C++</a> by Nico Josuttis)<br />
При передаче по значению происходит его копирование и к его внутреннему счетчику прибавляется единица, это нужно сделать атомарно, что влияет на производительность. Передавайте его по ссылке, где возможно.<br />
<br />
<br />
<b>Зачем нужен scoped_ptr, если есть shared_ptr. </b>(<a href="http://stackoverflow.com/questions/1770636/shared-ptr-vs-scoped-ptr">shared_ptr vs scoped_ptr)</a><br />
shared_ptr "тяжелее" чем scoped_ptr, потому что он гарантирует корректную работу в многопоточных программах. Поэтому, если вы работаете с одним указателем, и вам просто нужно автоматически освободить память из-под него, лучше использовать scoped_ptr.<br />
<br />
<br />
<b>Чтобы корректно возвращать shared_ptr на this надо использовать enable_shared_from_this. </b>(<a href="http://en.cppreference.com/w/cpp/memory/enable_shared_from_this">std::enable_shared_from_this на cppreference.com)</a><br />
Пример с cppreference.com демонстрирует что случится, если вы не используете enable_shared_from_this.<br />
<br />
<pre><code>
#include <memory>
#include <iostream>
struct Good: std::enable_shared_from_this<Good>
{
std::shared_ptr<Good> getptr() {
return shared_from_this();
}
};
struct Bad
{
std::shared_ptr<Bad> getptr() {
return std::shared_ptr<Bad>(this);
}
~Bad() { std::cout << "Bad::~Bad() called\n"; }
};
int main()
{
// Good: the two shared_ptr's share the same object
std::shared_ptr<Good> gp1(new Good);
std::shared_ptr<Good> gp2 = gp1->getptr();
std::cout << "gp2.use_count() = " << gp2.use_count() << '\n';
// Bad, each shared_ptr thinks it's the only owner of the object
std::shared_ptr<Bad> bp1(new Bad);
std::shared_ptr<Bad> bp2 = bp1->getptr();
std::cout << "bp2.use_count() = " << bp2.use_count() << '\n';
} // UB: double-delete of Bad
</code></pre>
<br />
<br />
Бонусная ссылка:<br />
<a href="http://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/">Smart Pointer Parameters</a> by Herb Sutter<b><br /></b>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com25tag:blogger.com,1999:blog-10303035.post-68949590902002832612015-12-05T04:02:00.000+03:002015-12-05T04:02:41.201+03:00Effective Modern C++ на русском<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizVhUNWkIWxjSqS1adQDr-BZGwkJEQsjhLHQhvStMn2QhTr3i_R11asmhP0d0k2Y1aTTobc4NK7QuG8opdcQ396ythF-rNOpm3gRXN4Jeq7ivLIK3dFXizHEQXu23vtpD0ur-7WA/s1600/effectivecpp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizVhUNWkIWxjSqS1adQDr-BZGwkJEQsjhLHQhvStMn2QhTr3i_R11asmhP0d0k2Y1aTTobc4NK7QuG8opdcQ396ythF-rNOpm3gRXN4Jeq7ivLIK3dFXizHEQXu23vtpD0ur-7WA/s1600/effectivecpp.jpg" /></a></div>
<br />
<br />
<br />
<br />
Самая лучшая книга по C++11 и C++14 вышла на русском языке: <a href="http://www.ozon.ru/context/detail/id/34747131/?partner=alenacpp">Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14</a>.<br />
<br />
Ссылка по теме:<br />
<a href="http://alenacpp.blogspot.com/2015/05/11.html">Хорошие книги по C++11</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com12tag:blogger.com,1999:blog-10303035.post-67127503757553083202015-10-20T00:54:00.000+03:002015-10-30T20:06:59.815+03:00We're hiring: Bing Ads, modern C++<blockquote class="tr_bq">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><b>Update 30.10.2015</b>: Я закончила принимать резюме. Всем спасибо!</blockquote>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="371">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman",serif;}
</style>
<![endif]--><span lang="RU" style="mso-ansi-language: RU;">В моей команде
открылось несколько позиций: Software Engineer, Software Engineer II, Senior Software Engineer.</span> <br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="RU" style="mso-ansi-language: RU;">Пишем
распределенные высоконагруженные системы на С++, приветствуем знание </span>C<span lang="RU" style="mso-ansi-language: RU;">++11/14. Находимся в Бельвью, штат Вашингтон, США. Работаем в отдельных
офисах.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="RU" style="mso-ansi-language: RU;">Визы делаем, но,
возможно, придется поработать в Ванкувере (Канада) какое-то время.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="RU" style="mso-ansi-language: RU;">Если интересно,
присылайте свое резюме мне, адрес есть в профиле.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="RU" style="mso-ansi-language: RU;">Официальное
описание позиции </span>Software Engineer II:<span lang="RU" style="mso-ansi-language: RU;"></span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">Online Advertising is one of the
fastest growing businesses on the Internet today, with $40 billion of a $600
billion advertising market already online. Microsoft is innovating rapidly to
grow its share of this market by providing the advertising industry with a
world-class online advertising platform and service. The Microsoft Ads Research
& Development team is one of the most strategic and growing teams at
Microsoft. </span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #1f497d;">As part of a software company
with powerful innovations and part media company with global properties, at
Microsoft Ads we bring both our technical and creative side to the table.
Through incisive analytics, we know who cares - both when and where. We
understand how to get in front of the right people at the strongest point of
influence. Above all, we love data and excel at interpreting it for our
partners. Collecting valuable information from every campaign and mining it for
insights.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #1f497d;">Selection and Ranking team in
Ads platform is responsible for selecting all possible ads and run the machine
learned models to find the most relevant Ads for the user queries. This
requires processing enormous amount of data in real time, within a few milliseconds.
We are looking to grow our system to n times the current scale. This team
provides a good opportunity to learn advertising business. If you like to work
in a fast paced and highly innovative environment, SnR platform team is the
right place for you. Come join us if you feel passionate about building
distributed, highly scalable and performance intensive system.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Excellent OO design and
implementation skills.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Excellent knowledge of
algorithms and data structures.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Passion for building high-quality
and scalable online backend services.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Great communication and
cross-team collaboration skills.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Highly self-motivated with a
demonstrated ability to work in a fast-paced environment</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Good Understanding of
distributed system is a strong plus.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ BS or MS degree in Computer
Science or related technical discipline.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ 3+ years of professional
software development experience.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Expert development skills in
multithreaded C++.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Solid design skills, with a
strong eye toward maintainability and flexibility of code.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Excellent analytical and
problem solving skills and foundation in OO principles.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Knowledge of Search/Ads
serving platform is a plus to have but not required.</span></div>
<div class="MsoNormal">
<span style="color: #1f497d;">∙ Experience in building
scalable and performant distributed systems desirable but not required.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: #1f497d;">Microsoft is an equal
opportunity employer. All qualified applicants will receive consideration
for employment without regard to race, color, gender, sexual orientation,
gender identity or expression, religion, national origin, marital status, age,
disability, veteran status, genetic information, or any other protected status.</span></div>
Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com47tag:blogger.com,1999:blog-10303035.post-89173816314441843162015-09-01T23:22:00.002+03:002015-09-01T23:22:22.417+03:00Практический английский. Цифры и буквы.<br />После приезда в США я обнаружила неожиданные пробелы в своем английском. И это оказался отнюдь не герундий. Если вы собираетесь ехать в США или работать с американцами, проверьте себя.<br />
<br /><b>Вы не знаете цифры</b><br />Не верите мне, да? <br />Возмущены? И прямо сейчас готовы это опровергнуть. "Алена, ты чего, смотри: one, two ..."<br />А теперь быстро и без запинки попробуйте произнести на английском свой номер телефона. На память, не подглядывая. Попросите друга быстро произнести 10 случайных цифр и запишите их на бумагу. Вам придется это делать часто.<br />Некоторое время спустя я осознала, что цифры в английском тексте я читала по-русски. И никогда об этом не задумывалась.<br />Здесь многие вопросы решаются по телефону. Вам придется много и часто проговаривать свой номер телефона (а он будет новый). Номер своей кредитной карты. Иногда на той стороне будет робот.<br />Напоминаю, что тут очень любят считать сотнями 1200 - twelve hundred.<br /><br /><b>Вы не знаете буквы</b><br />Тоже возмущаетесь, но уже осторожнее?<br />Проверьте, что вы можете проговорить по буквам свое имя, опять же, никуда не подглядывая. Поповы могут это упражнение пропустить. Мой пламенный привет Щёголевым и Щербаковым.<br />
В местных школах этому специально учат, кстати.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com19tag:blogger.com,1999:blog-10303035.post-82163858025129814372015-06-29T21:39:00.000+03:002015-06-29T21:39:43.617+03:00Фрагментация памяти в C++ приложенияхПоскольку памятью в С++ приложении программист управляет самостоятельно, то и за фрагментацией памяти приходится следить самим. Память фрагментируется, если приложение работает достаточно долго и при этом активно работает с памятью. Не такая редкая проблема. Я это видела в играх, игрок бегает, юнитов убивает, локации меняет, надо под это память выделять и потом освобождать. И в высоконагруженных системах, запросы приходят, надо под них память выделять, потом освобождать. <br />
<br />
Чем это плохо? Во-первых, память может внезапно закончиться. Во-вторых может просесть производительность. Вот тут можно почитать историю как это выглядит на практике: <a href="http://nfrechette.github.io/2015/06/25/out_of_memory/?utm_content=buffer20210&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer">Out of memory</a><br />
<br />
Вот тут с картинками написано как оно происходит: <a href="http://bulldozer00.com/2015/06/01/holier-than-thou/?utm_content=buffer21145&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer">Holier Than Thou</a><br />
Но не написано - а что с этим делать-то? Итак, с чем я работала.<br />
<br />
<a href="https://en.wikipedia.org/wiki/Region-based_memory_management">Region-based memory management</a>. Выделяем память большим куском, например, под уровень в игре. Популярный термин для такого куска - "арена". Потом уже внутри этого куска создаем нужные нам объекты. Когда все это стало не нужно - весь кусок памяти освобождаем. Заодно с утечками памяти проблем меньше.<br />
Арену можно использовать вместе с STL, см. "STL custom allocators". <br />
<br />
<br />
<a href="http://theboostcpplibraries.com/boost.pool">Boost.Pool</a>. Там есть несколько разных интерфейсов, я использовала object_pool, который помогает эффективнее создавать и удалять большое количество сравнительно маленьких объектов.<br />
<br />
Также я видела разное креативное использование placement new, как правило его можно заменить Boost.Pool'ом.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com10tag:blogger.com,1999:blog-10303035.post-43297944520347492362015-05-13T20:37:00.001+03:002015-05-14T02:00:18.590+03:00"Марсианин" на русском языке<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUQK3An0Fxh_p6083ROCTn3FhiljmHnnCxd6kaFJV4IV33Q2cK-82fZd7T5BIUP3VPTq7BHA4MpuxE8CCckek1Ni0lXLjhoPgp_w9KMOyQfLASpmTAgCn_R-GUPm9qM62LW1v-yQ/s1600/martian.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUQK3An0Fxh_p6083ROCTn3FhiljmHnnCxd6kaFJV4IV33Q2cK-82fZd7T5BIUP3VPTq7BHA4MpuxE8CCckek1Ni0lXLjhoPgp_w9KMOyQfLASpmTAgCn_R-GUPm9qM62LW1v-yQ/s1600/martian.jpg" /></a></div>
Пока писала <a href="http://alenacpp.blogspot.com/2015/05/11.html">пост про книги по С++11</a> обнаружила, что <a href="http://www.ozon.ru/context/detail/id/28788268/?partner=alenacpp">"Марсианин" Энди Вейера</a> переведен на русский. Это отличная бодрая научная фантастика, пока не встречала человека, которому он бы не понравился.<br />
<br />
В оригинале - "<a href="http://www.amazon.com/gp/product/0553418025/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0553418025&linkCode=as2&tag=alec-20&linkId=G6XV5EBHIT2CUTTL">The Martian</a>".Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com12tag:blogger.com,1999:blog-10303035.post-76418350044781697852015-05-09T01:58:00.000+03:002015-05-09T02:10:41.442+03:00Хорошие книги по С++11Я сейчас в работе активно использую фичи C++11 и C++14, чего и вам рекомендую. Вот вам отличные книги по новыму стандарту.<br />
<br />
<div class="separator" style="clear: both;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGj_T0lJs-hOS_g0Za26JK9wYhfjknve032Iqz1JVZ7fXzOVOwmoWTGXmPIZIgsEkUeDPSGvCrJE6qgH7E9hPgRUNlwsbSRMp4gib8MXIEOUE4560RUC4maxlkZHv5pCMzbcAYmQ/s1600/effectivemoderncpp.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGj_T0lJs-hOS_g0Za26JK9wYhfjknve032Iqz1JVZ7fXzOVOwmoWTGXmPIZIgsEkUeDPSGvCrJE6qgH7E9hPgRUNlwsbSRMp4gib8MXIEOUE4560RUC4maxlkZHv5pCMzbcAYmQ/s200/effectivemoderncpp.png" width="151" /></a><a href="http://www.amazon.com/gp/product/1491903996/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1491903996&linkCode=as2&tag=alec-20&linkId=A25GB3T56BHXYT3M">Effective Modern C++ : 42 Specific Ways to Improve Your Use of C++11 and C++14</a> by Scott Meyers</div>
Самая лучшая книга по C++11 и C++14. Просто, понятно с примерами. Для тех, кто знает С++ и хочет использовать фичи нового стандарта. На русский, похоже, не переведена<br />
<div class="separator" style="clear: both;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyucUBrtHyIboKvds7h_3WrcZRhFgxrB-7-aLYfGHXXXkLTZPNPjVooVVF8fMC8xXWs8DojCMToEB1LWVAH3OGXW-nZXiT4T-BjxCPYgEFlgc-g5RcMijwnf28779pMGkqJgRCwA/s1600/williams.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyucUBrtHyIboKvds7h_3WrcZRhFgxrB-7-aLYfGHXXXkLTZPNPjVooVVF8fMC8xXWs8DojCMToEB1LWVAH3OGXW-nZXiT4T-BjxCPYgEFlgc-g5RcMijwnf28779pMGkqJgRCwA/s200/williams.jpg" width="137" /></a><a href="http://www.amazon.com/gp/product/1933988770/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1933988770&linkCode=as2&tag=alec-20&linkId=2JLP2ZQKUVV6Q2QU">С++ Concurrency in Action: Practical Multithreading</a> by Anthony Williams</div>
В переводе <a href="http://www.ozon.ru/context/detail/id/26893657/?partner=alenacpp">"Параллельное программирование на С++ в действии. Практика разработки многопоточных программ"</a><br />
С фокусом на многопоточность, которой раньше в стандарте не было. Если душит жаба эту книгу покупать, то написана она на основе вот этих статьей Уильямса: <a href="https://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.html#series">Multithreading in C++0x Series</a><br />
<div class="separator" style="clear: both;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP6n6SNPyLUCd3Zs4No3wKahv_Qpw4KCGYvuBd0DALXr74_mLBnSvVFU5W4d5VXR80kVnZrbkPqFZOpVlxzI5cPtG6ES8oaMQXMVn5KIY3Px-mWHJOuD65-SnaDwK9Ig0kAbUFfQ/s1600/josuttis.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP6n6SNPyLUCd3Zs4No3wKahv_Qpw4KCGYvuBd0DALXr74_mLBnSvVFU5W4d5VXR80kVnZrbkPqFZOpVlxzI5cPtG6ES8oaMQXMVn5KIY3Px-mWHJOuD65-SnaDwK9Ig0kAbUFfQ/s200/josuttis.jpg" width="136" /></a>
<a href="http://www.amazon.com/gp/product/0321623215/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0321623215&linkCode=as2&tag=alec-20&linkId=6SNQA2BV3TVXZ54C">The C++ Standard Library: A Tutorial and Reference (2nd Edition)</a> by Nicolai M. Josuttis</div>
В переводе <a href="http://www.ozon.ru/context/detail/id/27978215/?partner=alenacpp">"Стандартная библиотека C++. Справочное руководство"</a><br />
Джоссатис обновил свою книгу про STL. Много букв. Очень много букв. Выискивать там куски, относящиеся именно к C++11, смысла не имеет. Многопоточность, правда, вынесена в отдельную главу, но по многопоточности лучше Уильямса почитать.<br />
Поэтому рекомендую эту книгу тем, кто решил начинать изучать STL. Обратите внимание на издание, вам нужно <b>второе</b> издание, там на обложке крупно написано С++11.<br />
Вообще это относится ко всем книгам по С++. То, что издано до 2012 года можно считать устаревшим.<br />
<br />
Про качество переводов ничего сказать не могу.<br />
<br />
Ссылки по теме:<br />
<a href="http://alenacpp.blogspot.com/2006/09/c.html">Хорошие книги по С++</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com6tag:blogger.com,1999:blog-10303035.post-11117287202070024082015-01-24T03:06:00.001+03:002015-01-24T03:08:07.202+03:00Юбилей подкрался незаметноДесять лет назад я написала первый пост в этот блог. Не ожидала, что он продержится так долго.<br />
После рождения дочки я стала писать сюда несколько реже. Ну вы, наверное, заметили. Моя активность сместилась в Твиттер. <a href="https://twitter.com/alenacpp">https://twitter.com/alenacpp</a><br />
<br />
Другие социальные сети где я есть<br />
<a href="http://instagram.com/alenacpp/">http://instagram.com/alenacpp/</a> - я ни разу не фотограф, но поддалась всеобщей моде<br />
<a href="http://facebook.com/alenacpp">http://facebook.com/alenacpp</a> - использую для чтения Facebook'а, также туда идет трансляция из твиттера. В друзья добавляю тех, кого читаю.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com8tag:blogger.com,1999:blog-10303035.post-86107460139035867702014-11-19T02:10:00.001+03:002014-11-19T02:10:52.752+03:00Обзор книги A Tour of C++<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU0Z9M8JLSVAxGysJoDxJuZIdk653yQFcCRSPs6aEBiilpchAe1gIJmy0wOhZ0yXP7N7coC2Fuxal0DEt99boLOElf6JcpXQr6JaBQoRiS2OoAMVGpEp4Rx6X5W-F6jzXLmNviUw/s1600/41tSaOQUNRL.jpg" imageanchor="1" style="float: left; margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU0Z9M8JLSVAxGysJoDxJuZIdk653yQFcCRSPs6aEBiilpchAe1gIJmy0wOhZ0yXP7N7coC2Fuxal0DEt99boLOElf6JcpXQr6JaBQoRiS2OoAMVGpEp4Rx6X5W-F6jzXLmNviUw/s1600/41tSaOQUNRL.jpg" height="320" width="238" /></a>
Прочитала новую книгу Страуструпа "<a href="http://www.amazon.com/Tour-C--Depth/dp/0321958314">A Tour of C++</a>". Это очень краткое введение в С++11. Рекомендуется новичкам, которые уже умеют программировать на каком-то языке. Но мне такая рекомендация не нравится, потому что книга уж очень лаконичная. Она подойдет скорее человеку, который когда-то писал на С++, подзабыл, а сейчас надо срочно вспомнить и заодно понять чего нового появилось за прошедшее время.<br />
<br />
Если вы на C++ пишете все время и в курсе изменений в C++11, то ничего нового вы там не найдете.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com2tag:blogger.com,1999:blog-10303035.post-32746588073315789922014-05-06T01:45:00.001+04:002014-05-06T01:45:42.613+04:00Что будет, если смешать C++ и C# Если очень хочется, то можно звать C++ методы из C# кода и наборот. Например, если какие-то приятные функции есть в C++ API, но их нет в C#, их можно подключить следующим образом: <a href="http://www.codeproject.com/Articles/35041/Mixing-NET-and-native-code">Mixing .NET and native code</a><br />
<br />
Все это выглядит легко и просто на таких маленьких примерах. Однако, если приложение у вас несколько больше размером, то начинают всплывать неприятные проблемы. Итак, проблемы, которые встретились мне.<br />
<br />
<strong>Порча C# кучи</strong> <br />
Если у вас намешан C++ и C# код, то из C++ можно залезть в C# кучу. Поробнее проблема разобрана в блоге Тесс Феррандес: <a href="http://blogs.msdn.com/b/tess/archive/2006/02/09/net-crash-managed-heap-corruption-calling-unmanaged-code.aspx">.NET Crash: Managed Heap Corruption calling unmanaged code</a><br />Кстати, очень рекомендую ее блог. В постах до 2011 года она пишет про отладку, про WinDbg.<br />
<br />
<strong>Потеря AppDomain</strong><br />При переключении между C++ и C# кусками можно потерять текущий C#-контекст. Текущую директорию, например, что неприятно. Есть <a href="http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve(v=vs.110).aspx">способы борьбы</a>, которые работают не всегда.<br />
Вот тут человек разбирает конкретный пример: <a href="http://lambert.geek.nz/2007/05/29/unmanaged-appdomain-callback/">Unmanaged callbacks across AppDomains</a>.<br />Также есть разные <a href="http://devdale.blogspot.com/2007/10/getting-list-of-loaded-appdomains.html">кривые методы получения списка всех AppDomain'ов</a>.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com7tag:blogger.com,1999:blog-10303035.post-40088925140941085352014-03-08T08:45:00.002+04:002014-03-08T08:45:40.140+04:00Впечатления от курса по машинному обучениюОтличный <a href="http://alenacpp.blogspot.com/2013/10/blog-post.html">курс</a>. Достаточный, для того чтобы получить общее представление о машинном обучении и понять, хочется ли заниматься этим дальше. Народ жалуется, что курс слишком упрощен. Не соглашусь, для вводного курса вполне нормальная сложность. Нейронные сети есть, SVM есть. К лекциям даются упражнения для закрепления материала, они из серии "подставить правильные цифры в формулу". Реальных задач по машинному обучению там нет, но это и правильно - такие задачи занимают недели и месяцы, их в такой курс не впихнешь.<br />
<br />
Кстати, Эндрю Нг читает свои лекции опять прямо сейчас. Еще не поздно присоединиться! <a href="https://www.coursera.org/course/ml">Stanford Machine Learning</a>Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com3tag:blogger.com,1999:blog-10303035.post-81596960593599987932013-11-02T01:26:00.000+04:002013-11-02T07:40:29.994+04:00Что сказал РихтерДавно обещала рассказать о лекции Рихтера про потоки. Такие лекции - это не что-то редкое и удивительное, Рихтер - совладелец компании Wintellect и они за деньги прочтут эту лекцию всем желающим. Если у вас есть возможность на его занятия прийти - очень рекомендую. <br />
Ценны они в первую очередь возможностью задать Рихтеру вопросы и интересными примерами кода, однако были высказаны несколько полезных мыслей. Итак, Рихтер рекомендует. (Никаких откровений, впрочем)<br />
Не надо плодить потоки, потому что переключение контекстов - вещь дорогая. Разумно делать столько потоков, сколько в машине есть ядер.<br />
Если уж поток создали, постарайтесь его не блокировать без крайней необходимости. Речь идет не только о мьютексах, но и о Join, Sleep.<br />
<br />
Не надо играть с thread pool. "Leave the thread pool alone".<br />
<br />
Ну а также volatile в C# и в C++ разные. В C# volatile "cannot cache and fence", а в C++ только "cannot cache".Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com22tag:blogger.com,1999:blog-10303035.post-62563388681432928502013-10-16T04:33:00.000+04:002013-10-16T04:33:15.509+04:00Начался новый курс по машинному обучению<a href="https://www.coursera.org/course/ml">Эндрю Нг снова читает курс по машинному обучению</a>. Теперь с русскими субтитрами. Машинное обучение (machine learning) очень востребовано среди работодателей, оно используется в современных поисковых движках, например. В 2007 году было первым в списке <a href="http://www.computerworld.com/s/article/9026623/12_IT_skills_that_employers_can_t_say_no_to_?pageNumber=1">12 IT skills that employers can't say no to</a> и с тех пор мало что изменилось.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com7tag:blogger.com,1999:blog-10303035.post-83017858432630159182012-12-18T11:42:00.000+04:002012-12-18T12:23:38.155+04:00Программисты ненавидят open spaceТревожные новости приходят со всех фронтов. Программистов активно сажают в open space даже в тех компаниях, где это раньше не практиковалось. Может кто-то книжку написал и она стала новой религией? А <a href="http://www.joelonsoftware.com/items/2006/07/30.html">заветы Спольски</a> забыты?<br />
<br />
Краткая справка для тех, кто случайно не знает, что такое open space - это огромная комната без каких-либо перегородок.<br />
<br />
<b>Update</b>: поскольку у людей возникли вопросы по поводу open space - вот вам картинка <a href="http://etiquette-tips.com/office-etiquette/cubicle-etiquette-practical-guide-to-better-office-life">отсюда</a>. Одна команда (человек 10) в одной комнате, где все друг друга знают - это не open space.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBxHAUBsgnCePPc0dNipBV_w8nVgdkRKU9-ClqC5vrBNcSe6_aUGQyvyvi3sHBpH4C9nAHnS5YwUEzFFyEBLkggLZAD2mcEWLwotS0b-h-sqWLnAnEZSTtqqlVR3PAxFCHfx5wbw/s1600/Office-Open-Space.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBxHAUBsgnCePPc0dNipBV_w8nVgdkRKU9-ClqC5vrBNcSe6_aUGQyvyvi3sHBpH4C9nAHnS5YwUEzFFyEBLkggLZAD2mcEWLwotS0b-h-sqWLnAnEZSTtqqlVR3PAxFCHfx5wbw/s400/Office-Open-Space.jpg" width="400" /></a></div>
<br />
<br />
Объяснение этому безобразию всегда одно и то же. "Мы делаем это чтобы программисты лучше коммуницировали".
Я всегда думала, что программисты должны программировать. Если мне
нужно с кем-то поговорить - ну загляну я к коллеге в соседний офис,
пройду пару метров.<br />
<br />
Отношение программистов к этому однозначное - open space все люто ненавидят. Кьюбиклы вспоминают с нежностью. Работать в open space невозможно, слишком шумно, сложно сосредоточиться. В open space вы узнаете о своих коллегах сильно больше чем хотели. Вы полностью в курсе, что у Васи напряженные отношения с тещей, что Оля любит бормотать когда работает, и что Максим коммуницирует ну просто без остановки и совершенно невозможно заткнуть этот фонтан красноречия. А вон в том углу ребята поют - день рождения у кого-то. Поэтому люди работают либо рано-рано утром, либо сидят на работе ночами. Либо увольняются (как вариант - не идут работать в open space).<br />
<br />
Пока единственное разумное объясение рассаживания программистов в open space, которое я смогла придумать - так дешевле на первый взгляд. Но интересно подсчитать насколько при этом падает производительность. <br />
<br />
Дорогие друзья! Если вы работаете (работали) в open space, опишите свои ощущения. Особенно интересно послушать людей, которым это нравится. Я пока ни одного не встречала.Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com97tag:blogger.com,1999:blog-10303035.post-63392419447200411672012-11-26T23:20:00.000+04:002012-11-26T23:20:21.083+04:00Что такое TCP IncastTCP Incast - неприятная проблема, возникающая в датацетрах, связанная с работой протокола TCP.
<br><br>
Возникает при следующем сценарии: некий сервер шлет запрос кластеру машин. Все эти машины ему одновременно отвечают. Ответ может быть довольно большой, несколько десятков килобайт. Эти килобайты доходят до свитча, за которым находится наш кластер. Свтич, как это сейчас модно, самый обычный. И буфер у него небольшой. Та часть данных, что в буфер не влезла, будет сброшена. Протокол TCP гарантирует доставку, так что все потерянные пакеты будут посланы еще раз. Вопрос когда. Стандартный RTO (retransmission timeout) - 200 ms. Для какого-нибудь облачного сервиса это много. В результате получаем латентность, наша распределенная система работает слишком медленно.
<br><br>
Здесь описание TCP Incast с правильной картинкой: <a href="http://bradhedlund.com/2011/05/01/tcp-incast-and-cloud-application-performance/">TCP Incast and Cloud application performance</a><br>
Еще одно хорошее описание: <a href="http://everythingisdata.wordpress.com/2009/09/25/fine-grained-tcp-retransmissions/">Fine-grained TCP Retransmissions</a>
<br><br>
Как с этим можно бороться. Простой и действенный способ - уменьшить RTO до 1 ms.
Еще можно изменить протокол TCP: <a href="http://research.microsoft.com/apps/pubs/default.aspx?id=121386">Data Center TCP (DCTCP)</a>
<br><br>
Еще пара работ с анализом проблемы с красивыми картинками:<br>
<a href="http://www.eecs.berkeley.edu/~ychen2/professional/TCPIncastWREN2009.pdf">Understanding TCP Incast Throughput Collapse in Datacenter Networks[.pdf]</a><br>
<a href="http://www.cs.cmu.edu/~dga/papers/incast-sigcomm2009.pdf">Safe and Effective Fine-grained TCP Retransmissions for Datacenter Communication[.pdf]</a>
Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com9tag:blogger.com,1999:blog-10303035.post-74756420491810250242012-11-25T05:31:00.001+04:002012-11-25T05:31:17.092+04:00Несколько крупных IT компаний договорились не переманивать программистовОбсуждаемая новость последних дней - <a href="http://hh.cnews.ru/top/2012/11/21/pakt_o_nenapadenii_parallels_dogovorilas_s_yandeksom_kasperskim_i_drugimi_ne_hantit_programmistov_510502">Пакт о ненападении: Parallels договорилась с «Яндексом», «Касперским» и другими не хантить программистов</a>.
<br><br>
Очень странное решение. Во-первых, оно дает преимущество компаниям, которые в данной инициативе не участвуют.<br>
Во-вторых, интересно, насколько это вообще легально и что по этому поводу думает ФАС.
<br><br>
Программисты недовольны, что ожидаемо. (На недовольных программистов можно посмотреть, например, <a href="http://habrahabr.ru/post/159749/">тут</a>)Alenahttp://www.blogger.com/profile/09389124127364799922noreply@blogger.com11