<?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-933369614249771220</id><updated>2012-06-22T05:04:12.193+03:00</updated><category term='EPAM'/><category term='Спорт'/><category term='TDD'/><category term='Отпуск'/><category term='ETL'/><category term='Agile'/><category term='Outlook'/><category term='Maintainable Code'/><category term='Music'/><category term='Паттерны'/><category term='ENG'/><category term='IT'/><category term='ru_lh'/><category term='Жизненно'/><category term='CI'/><category term='Parallel Computing'/><category term='London'/><category term='Fun'/><category term='Android'/><category term='Lifehack'/><category term='RUS'/><category term='.NET'/><title type='text'>(ш!)кодер.by</title><subtitle type='html'>Software development, management and self-management
&lt;br&gt;&lt;br&gt;
&lt;a href="http://shcoder.by"&gt;ALL&lt;/a&gt; &lt;a href="http://www.shcoder.by/feeds/posts/default"&gt; &lt;img src="http://bit.ly/3paMdr"&gt;&lt;/a&gt; | &lt;a href="http://shcoder.by/search/label/RUS"&gt;RUS&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/shcoder/RUS"&gt;&lt;img src="http://bit.ly/3paMdr"&gt;&lt;/a&gt; | &lt;a href="http://shcoder.by/search/label/ENG"&gt;ENG&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/shcoder/ENG"&gt;&lt;img src="http://bit.ly/3paMdr"&gt;&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.shcoder.by/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/-/RUS'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/search/label/RUS'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/-/RUS/-/RUS?start-index=26&amp;max-results=25'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-3908606901456695477</id><published>2011-05-05T11:39:00.001+03:00</published><updated>2011-05-05T13:58:37.146+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Ксеноглоссофобия или боязнь незнакомых языков</title><content type='html'>&lt;p&gt;Некоторые разработчики или менеджеры побаиваются новых или просто других незнакомых языков или платформ. &lt;/p&gt; &lt;p&gt;Здесь есть много мифов и заблуждений, в том числе и вредных, препятствующих адекватным технологическим решениям, росту, в том числе и карьерному. &lt;/p&gt; &lt;p&gt;Для начала я попробую сосредоточиться на этих мифах, чтобы наглядно показать, что бояться новых языков не надо (бояться нужно других вещей, например, плохого кода). &lt;/p&gt; &lt;p&gt;В следующем же посте я попробую рассказать, зачем же нам нужны другие языки и почему постоянно нужно изучать другие горизонты. &lt;/p&gt; &lt;p&gt;Итак, поехали! Если у вас в процессе чтения возникают вопросы или замечания, то прошу в комментарии &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/_hTFMi0z5W-c/TcJiWiSN8gI/AAAAAAAABO4/BaAnnF3Bl-w/wlEmoticon-smile2.png?imgmax=800"&gt;&lt;/p&gt; &lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Миф 1&lt;/strong&gt; Для успешной карьеры достаточно знать всего лишь один мейнстрим язык&lt;/p&gt; &lt;p&gt;Подозреваю, что многие дельфисты тоже так думали про обджект паскаль. На деле же языки приходят и уходят. Некоторые языки живут дольше других, но со временем становятся нишевыми языками, ограничивая разработчика в выборе типов проектов, на которых он может работать с этим языком. &lt;/p&gt; &lt;p&gt;Даже в рамках одного языка часто не получается почивать на лаврах, тот же C# за время своего существования претерпевал серьезные изменения, С# 5.0 значительно отличается от C# 1.0 в том числе и концептуально.&lt;/p&gt; &lt;p&gt;Рано или поздно придется осваивать новые языки, так что лучше быть к этому готовым хотя бы морально.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Миф 2 &lt;/strong&gt;Джависты пишут на джаве, а дотнетчики на сишарпе&lt;/p&gt; &lt;p&gt;Многие думают, что в рамках одной платформы достаточно знать всего лишь один язык.&lt;/p&gt; &lt;p&gt;На деле же в реальных проектах приходится иметь с целым рядом языков, существенно отличающихся друг от друга – SQL, джаваскрипты с экшинскриптами, HTMLи разных версий, XML/XSD/XSLT, скриптовые языки и т.п. На иных проектах до десятков доходит. Причем языки существенно друг от друга отличаются.&lt;/p&gt; &lt;p&gt;Получается, что изучение других языков – это норма жизни, а не исключение из правил. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Миф 3&lt;/strong&gt; Требуются годы, чтобы хорошо освоить язык&lt;/p&gt; &lt;p&gt;Многие скажут, чтобы стать хорошим джавистом, надо поработать лет эдак пару минимум. Вроде как, долго?&lt;/p&gt; &lt;p&gt;На самом деле за это время человек чего только не осваивает, например, смежные языки, упомянутые выше. Куча времени занимает изучение платформы, надо знать как GC работает, как устроены хэш-коллекции. Нужно научиться проектировать и изучить паттерны. Нужно научиться говорить по-английски. В конце концов нужно просто научиться работать. Большая часть этих знаний пригодится при разработке на любом другом языке.&lt;/p&gt; &lt;p&gt;Практика показывает, что комфортный переход C# на Java занимает недели, а через несколько месяцев дотентчика уже и не отличишь от обычного джависта. Причем скорее речь идет не о разнице в языках, а о разнице в фреймворках и инструментарии, то есть переход между языками одной и той же платформы значительно более быстрый.&lt;/p&gt; &lt;p&gt;То есть сам язык – это всего лишь малая доля знаний разработчика. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Миф 4&lt;/strong&gt; Для любого .NET проекта годятся любые .NET разработчики &lt;/p&gt; &lt;p&gt;За годы .NET разработки я успел себя попробовать в разных типах проектов – десктоп приложения, веб-сервисы, веб-приложения, высокоскоростная обработка данных. Я в том числе разрабатывал и на Java.&lt;/p&gt; &lt;p&gt;Так вот исходя из своего опыта смею утверждать, что переход от одного типа приложения к другому требует не меньше усилий, чем смена платформы/языка в рамках одного и того же типа проектов. &lt;/p&gt; &lt;p&gt;Наверное, достаточно легко понять, почему backend-разработчик не особенно подойдет для веб-проекта. Тем не менее, это далеко не значит, что веб-разработчик хорошо себя покажет в backend проекте – там свои паттерны, свои сакральные знания. &lt;/p&gt; &lt;p&gt;Получается, что практический опыт построения приложений определённого типа зачастую важнее, чем знание конкретного языка или платформы.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Миф 5 &lt;/strong&gt;Чтобы писать на каком-то языке, нужно его хорошо знать&lt;/p&gt; &lt;p&gt;Вообще говоря, даже когда приходишь на интервью с матерым C# или Java разработчиком, то хорошо копнув можно найти какие-то пробелы. Ну, не требовалось человеку что-то, смысла заострять внимание нет. Бывает и так, что пробелы существенные, хотя уже и пара лет практического опыта за плечами. &lt;/p&gt; &lt;p&gt;Понятно, что идеального знания не требуется. Но все же, должно же быть какое-то фундаментальное понимание основ языка?&lt;/p&gt; &lt;p&gt;Вот вам пример – подавляющее большинство людей, которые писали что-то на JavaScript, не знают как в JavaScript устроено наследование, как, в принципе, и других его фундаментальных особенностей. Я ради интереса задавал этот вопрос на входных интервью – мало кто отвечал. &lt;/p&gt; &lt;p&gt;Да, для многих практических задач этого просто не нужно знать, поэтому и не знают. Выходит, что иногда и поверхностного знания языка вполне хватает для решения насущных вопросов.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Миф 6 &lt;/strong&gt;Ок, понятно, годы на язык не потребуются, но все же проходит немало времени для перехода от теории языка к написанию кода, нужен серьезный knowledge transfer&lt;/p&gt; &lt;p&gt;Если входное интервью не дает однозначного ответа, – мы иногда даем XSLT задачку в качестве входного теста. Суть задачки в общем-то в том, что подавляющее большинство XSLT либо не знает совсем, либо знает плохо. &lt;/p&gt; &lt;p&gt;Для справки, XSLT – это такой angle brackets язык, это совсем не ООП. Некоторым он просто взрывает мозг, там, например, нет переменных. В смысле var есть, но менять значение варов нельзя.&lt;/p&gt; &lt;p&gt;Так вот типичное время решения задачи -- &lt;strong&gt;от дня до недели &lt;/strong&gt;вне зависимости от первоначального знакомства с XSLT. Причем, практика показывает, что большая часть времени выполнения обычно уходит на переписку, уточнения, оценку и исправление ошибок.&lt;/p&gt; &lt;p&gt;То есть как правило код пишут уже в первый день знакомства с языком и это при том, что обычно язык не похож ни на один из тех, с которыми приходилось работать ранее.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Итого&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;В качестве вывода хотел бы сказать, что личный опыт подсказывает – зрелому разработчику по-большому счету все равно на чем писать, лишь бы проект был интересный и команда хорошая. Он уверенно чувствует себя, если требуется освоиться с новым языком или платформой. Ведь те навыки, которые делают его хорошим разработчиком, не зависят от используемого в данный момент языка. &lt;/p&gt; &lt;p&gt;Нужно отметить, что плохой разработчик будет писать одинаково плохо на любых языках, хороший разработчик отчетливо осознает, что код должен быть поддерживаем, и на любом языке будет стараться писать понятный и ясный код, сопровождая его, например, юнит-тестами.&lt;/p&gt; &lt;p&gt;Итого, не стоит боятся незнакомых языков, стоит боятся плохого кода. А неподдерживаемое спагетти можно сделать&amp;nbsp; и на Java, и на C#, и на любом другом языке.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-3908606901456695477?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/3908606901456695477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/05/blog-post_05.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3908606901456695477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3908606901456695477'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/05/blog-post_05.html' title='Ксеноглоссофобия или боязнь незнакомых языков'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_hTFMi0z5W-c/TcJiWiSN8gI/AAAAAAAABO4/BaAnnF3Bl-w/s72-c/wlEmoticon-smile2.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-2857015025484656880</id><published>2011-05-02T00:35:00.001+03:00</published><updated>2011-05-02T01:50:07.522+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Языки, разработчики и менеджеры</title><content type='html'>&lt;p&gt;У нас в твиттере (опять) разгорелась дискуссия. Ну как, дискуссия-то особо не клеится, мыслей много, а сообщения слишком короткие – все-таки твиттер &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/_hTFMi0z5W-c/Tb3SMRnrPxI/AAAAAAAABO0/0AaqASO8N88/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;Может, в комментариях будет попроще.&lt;/p&gt; &lt;p&gt;В общем, &lt;a href="http://www.it4business.ru/pankratov"&gt;Слава Панкратов&lt;/a&gt; был на &lt;a href="http://www.addconf.ru/"&gt;конференции&lt;/a&gt;, и там рассказывали как кто-то использовал &lt;a href="http://ru.wikipedia.org/wiki/Nemerle"&gt;Nemerle&lt;/a&gt; для автоматизации тестов на отдельно взятом проекте. Отношение Славы к этому строго негативное. Оно и понятно, язык экзотический, кто будет потом это поддерживать? &lt;/p&gt; &lt;p&gt;К дискуссии присоединился &lt;a href="http://vkochetkov.blogspot.com/"&gt;Владимир Кочетков&lt;/a&gt; (магия твиттера, собираются три абсолютно незнакомых человека и обсуждают вопрос). Владимир считает, что проблема преувеличена, все-таки .NET, к C# достаточно близок, а особенности Nemerle освоить не так-то и сложно. Да и речь идет о небольшой туле, риск не так и велик.&lt;/p&gt; &lt;p&gt;Что же, многие менеджеры сталкивались с такой проблемой. Приходит разработчик светлая голова к менеджеру и предлагает написать вот эту полезность да и еще на чем-то непонятном. Что делать? Дать добро, а потом расхлебывать?&amp;nbsp; Объяснить, что все это игрушки, а нам нужно проект делать (с риском, что больше человек и не будет приходить с идеями, раз его здесь не ценят)?&lt;/p&gt; &lt;p&gt;Лично я вижу массу положительных моментов в том, чтобы дать ребятам возможность оттопыриться на каком-то некритичном куске проекта. Вот мои соображения, и скажите, где я не прав! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/_hTFMi0z5W-c/Tb3SMRnrPxI/AAAAAAAABO0/0AaqASO8N88/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt;&lt;/p&gt; &lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;Во-первых, ребята, которые увлекаются неординарными языками, функциональным программированием, – это обычно талантливые, высококлассные специалисты. У меня в группе есть такие парни – &lt;a href="http://dnnx.livejournal.com/"&gt;Витя&lt;/a&gt;, &lt;a href="http://pdrobushevich.blogspot.com/"&gt;Паша&lt;/a&gt;, например. И если ребята чего-то хотят, то я отношусь к этому серьезно, где мне еще найти таких?&lt;/p&gt; &lt;p&gt;Во-вторых, мне кажется неслучайным, что они и на Java/C# здорово пишут. Я уже писал &lt;a href="http://www.shcoder.by/2010/09/javascript.html"&gt;про это&lt;/a&gt;, хорошему разработчику нельзя останавливаться на месте, а освоение новых языков здорово прокачивает мозги.&amp;nbsp; Мне кажется, что интерес к другим платформам в том числе помогает повышать квалификацию программиста и в обычных мейнстрим языках.&lt;/p&gt; &lt;p&gt;В-третьих, если эти умные ребята предлагают какую-то технологию, то у них часто есть вполне осознанные технологические доводы. Например, Nemerle очень неплох для DSL, поэтому этот язык, вероятно, неплохо подходит для формирования удобного DSL для фреймворка по тестированию. Может, люди дело предлагают?&lt;/p&gt; &lt;p&gt;В-четвертых, когда эти классные ребята с горящими глазами рассказывают другим классным ребятам (работающим в другой компании) о своем опыте в Nemerle… Я нахожу это полезным &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/_hTFMi0z5W-c/Tb3SMRnrPxI/AAAAAAAABO0/0AaqASO8N88/wlEmoticon-smile%5B2%5D.png?imgmax=800"&gt; Это именно та адресная реклама, которая нам нужна на рынке программистов.&lt;/p&gt; &lt;p&gt;Ну и по поводу поддержки… Если вдруг тот, кто это все написал, уйдет куда-то (хотя с чего бы это?), а программисты в целом получают удовольствие от работы со всякими там маргинальными технологиями, то, может, другие разработчики наоборот будут рваться поддерживать этот кусочек, просто чтобы получить немного фана? Может, когда на собеседовании я вдруг скажу “а тут у нас еще на nemerle есть штукенция”, то у человека загорятся глаза и он все-таки пойдет к нам, а не к конкурентам?&lt;/p&gt; &lt;p&gt;В общем, мне кажется, что люди важнее. Программисты без менеджера вполне могут сделать проект, а вот менеджер без программистов – это вряд ли. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-2857015025484656880?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/2857015025484656880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/05/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/2857015025484656880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/2857015025484656880'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/05/blog-post.html' title='Языки, разработчики и менеджеры'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_hTFMi0z5W-c/Tb3SMRnrPxI/AAAAAAAABO0/0AaqASO8N88/s72-c/wlEmoticon-smile%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-3407477747651451864</id><published>2011-04-14T12:50:00.000+03:00</published><updated>2011-04-20T18:33:51.012+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Would you read me in English?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Я читаю много блогов на английском и иногда чешутся руки оставить какой-то комментарий. Использовать свой OpenID для shсoder.by как-то глупо, ведь тут все на русском. &lt;br /&gt;&lt;br /&gt;Подумываю, может мне стоит начать писать на английском? Лень заводить какую-то отдельную площадку.&lt;br /&gt;&lt;br /&gt;Я думаю, что меня все равно читают гики/айтишники и проблем быть не должно, но все-таки интересно узнать ваше мнение, внизу опрос. Если отвечаете вряд ли или читать будете, но думаете, что это просто плохая идея, то не поленитесь в комментарии написать почему. Или даже так: если думаете, что идея хорошая, то отметьтесь в комментариях тоже :)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 class='title'&gt;Будете ли вы читать меня на английском&lt;/h2&gt;&lt;br /&gt;&lt;iframe allowtransparency='true' frameborder='0' height='160' name='poll-widget3424694708574238868' src='http://www.google.com/reviews/polls/display/3424694708574238868/blogger_template/run_app?txtclr=%23666666&amp;lnkclr=%232288bb&amp;chrtclr=%232288bb&amp;font=normal+normal+12px+%27Trebuchet+MS%27%2C+Trebuchet%2C+Verdana%2C+sans-serif&amp;hideq=true&amp;purl=http%3A%2F%2Fwww.shcoder.by%2F' style='border:none; width:100%;'&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-3407477747651451864?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/3407477747651451864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/04/would-you-read-me-in-english.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3407477747651451864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3407477747651451864'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/04/would-you-read-me-in-english.html' title='Would you read me in English?'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-8475303916391818346</id><published>2011-04-05T01:02:00.000+03:00</published><updated>2011-04-20T18:33:51.014+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Теперь беленький</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Многих угнетал темный цвет фона - жалобы учтены, теперь он опять беленький.&lt;br /&gt;&lt;br /&gt;Плюс к этому бложик можно посмотреть в неожиданных ракурсах, например, &lt;a href="http://www.shcoder.by/view/sidebar#!/"&gt;http://www.shcoder.by/view/sidebar#!/&lt;/a&gt;&amp;nbsp;или вот &lt;a href="http://www.shcoder.by/view/flipcard#!/"&gt;http://www.shcoder.by/view/flipcard#!/&lt;/a&gt;. Последний забавен тем, что все мои посты влазят на одну страницу (ну, почти все). Как-то мало я написал.&lt;br /&gt;&lt;br /&gt;Вьюшками сильно не злоупотребляйте - там счетчики не работают. И рекламка не показывается (черт, палюсь-палюсь).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-8475303916391818346?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/8475303916391818346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/04/blog-post.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8475303916391818346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8475303916391818346'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/04/blog-post.html' title='Теперь беленький'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-9057208532249554561</id><published>2011-03-31T01:34:00.000+03:00</published><updated>2011-04-20T18:33:51.015+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>GTD для иррационалов</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Недавно&amp;nbsp;в твиттере обсуждали с Катей и Катей&amp;nbsp;годится ли тайм менеджмент для иррационалов. Вот &lt;a href="http://www.ivanpirog.com/posts/spontannoe-planirovanie-dlya-tex-kto-nenavidit-tajm-menedzhment/"&gt;здесь&lt;/a&gt; GTD обвиняют во всех грехах, хотя я бы&amp;nbsp;все-таки посоветовал не верить человеку на слово, а почитать Аллена в оригинале и составить мнение лично.&lt;br /&gt;&lt;br /&gt;От себя хочу добавить, что как иррационал-тире-холерик я четко осознаю, что иногда мне явно не хватает GTD, а с мотивацией возникают проблемы. Можно переключаться между задачами в соответствии со своим настроением, как предлагает автор статьи выше, но бывает так, что на тебя нападает настроение "овощ",&amp;nbsp;а в этой категории задач почему-то нет (кстати, Аллен это называет контекстами). &lt;br /&gt;&lt;br /&gt;В этих случаях очень хорошо помогает техника волшебного пенделя под зад, и&amp;nbsp;именно по этой причине я предпочитаю заниматься спортом под чутким руководством тренера.&lt;br /&gt;&lt;br /&gt;Учитывая сий факт, мне кажется, что подходящей интерпретацией GTD для иррационалов является уже&amp;nbsp;изрядно потрепанная&amp;nbsp;&lt;a href="http://www.time-mngmnt.narod.ru/time.doc"&gt;техника Васи Кислого &lt;/a&gt;(narod.ru! дизайн сайта еще хуже, чем у меня), которую мне буквально недавно подкинули. Лексика иногда далека от культурной (в самый раз для ленивых иррационалов), тем не менее&amp;nbsp;тут&amp;nbsp;все взрослые люди, и, надеюсь, воспримут это с юмором. В общем, хватит оправдываться своим иррациональным нутром - марш работать!&lt;br /&gt;&lt;br /&gt;Да, кстати, наконец-то&amp;nbsp;в комментариях можно развернуто поругать меня и высказать свою альтернативную точку зрения, долой ограничения в 140 символов, капча отключена, иногда проскакивают анонимусы. &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-9057208532249554561?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/9057208532249554561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/03/gtd.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/9057208532249554561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/9057208532249554561'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/03/gtd.html' title='GTD для иррационалов'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-8211219974549097095</id><published>2011-03-26T23:57:00.000+02:00</published><updated>2011-04-20T18:33:51.016+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Посоветуйте книжку по маркетингу</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Хотел бы почитать что-нибудь интересное на тему маркетинга, не посоветуете? &lt;br /&gt;&lt;br /&gt;Почувствовали в команде необходимость PR-а наших усилий,&amp;nbsp;а навыка не хватает. Хотим посмотреть как это делают рекламщики и попробовать найти подходящие для нас приемы.&lt;br /&gt;&lt;br /&gt;Чуть-чуть подробней о том, зачем нам это. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Рано или поздно программисты понимают, что мало писать хороший код, надо чтобы об этом знали нужные люди.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Например, еженедельный отчет - это&amp;nbsp;по сути краткий рекламный буклетик, повествующий, как классно команда поработала за неделю. Это способ заявить о себе, тем не менее есть и другие средства: точечно сообщить нужным людям о каком-то достижении, сделать демонстрацию. А дальше засада, фантазия буксует. &lt;strong&gt;Какие еще средства бывают?&lt;/strong&gt; Что бы еще такое применить? &lt;br /&gt;&lt;br /&gt;Хотя надо разобраться, зачем нам понадобились какие-то еще средства донести информацию, может быть нам больше ничего не надо. Дело в том, что средства, которые мы используем сейчас, не очень-то эффективны. Похоже, наши еженедельные отчеты мало кто читает. С этим надо что-то делать, а точнее надо определится, &lt;strong&gt;как&amp;nbsp;привлечь внимание &lt;/strong&gt;к нашим отчетам. &lt;br /&gt;&lt;br /&gt;Хорошо, можно попробовать вставить в отчет картинку для привлечения внимания (кстати, в этом посте такой картинки нет - вас это не смущает?). Но если мы вставим картинку, заметит ли наш отчет большее количество людей? Вероятно, кто-то обратит внимание на картинку, но обратит ли он внимание на сам отчет? Поэтому следующий вопрос, на который мы хотим получить, ответ - это &lt;strong&gt;как оценить эффективность применяемых средств&lt;/strong&gt;?&lt;br /&gt;&lt;br /&gt;Что-то слишком много вопросов :) Вероятно, опытные маркотологи и рекламщики смогли бы помочь бедным программистам. Понятно, что маркетинг часто нацелен на широкую аудиторию, а мы работаем с конкретными людьми, хотя их там десятки, если не сотни. Но маркетинг поднимает и такие вопросы, поэтому если есть книжки про b2b маркетинг, про что-то ближе к нам - пишите.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-8211219974549097095?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/8211219974549097095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/03/blog-post_26.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8211219974549097095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8211219974549097095'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/03/blog-post_26.html' title='Посоветуйте книжку по маркетингу'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-3911816324989752606</id><published>2011-03-20T10:55:00.000+02:00</published><updated>2011-04-20T18:33:51.016+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Про Google Adsense</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Я начал активно писать в блог прошлым летом. До этого было несколько попыток (например, в Лондоне я писал про &lt;a href="http://www.shcoder.by/search/label/London"&gt;Лондон&lt;/a&gt;, а в отпуске про &lt;a href="http://www.shcoder.by/search/label/%D0%9E%D1%82%D0%BF%D1%83%D1%81%D0%BA"&gt;отпуск&lt;/a&gt; - потому что было скучно), но я быстро сдавался. &lt;br /&gt;&lt;br /&gt;С тех пор я более или менее регулярно пишу, и, надо отдать должное, на&amp;nbsp;первых этапах мою&amp;nbsp;мотивацию здорово поддержал &lt;a href="http://google.com/adsense"&gt;Google Adsense&lt;/a&gt;. Для тех, кто не в курсе, Google Adsense - это контекстная реклама (то бишь формируется в зависимости от контекста - сайта и конкретного посетителя), например, внизу этого поста&amp;nbsp;скорее всего вам что-то пытаются продать.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Дело в том, что это был первый источник о статистике посещений моего блога. Уже после этого я узнал, что есть Google Analytics, Яндекс.Метрика или хотя бы Akavita, но это позже, когда я вошел во вкус. &lt;br /&gt;&lt;br /&gt;Так в чем же собственно соль? Чем мне помогла статистика? Статистика посещений - это циферки сродни тем, на которые геймеры смотрят при прокачивании эльфа до 51го уровня. Более того, в Google Adsense эти циферки&amp;nbsp;привязаны к самому азартному мерилу успеха - деньгам. Короче, графики придали динамику процессу, а циферки дали возможность меряться, прямо как в старые-добрые времена, когда я бродил по подземельям в Diablo.&lt;br /&gt;&lt;br /&gt;Соответственно, первая мораль этого поста - если хотите&amp;nbsp;завести блог, но не знаете с чего начать, начните с прикручивания статистики. Драйв, по началу даже некоторая одержимость, будет обеспечен.&lt;br /&gt;&lt;br /&gt;Раз уж я начал подсчитывать количество моралей&amp;nbsp;в посте, то очевидно, что их будет больше, чем одна. Две :) &lt;br /&gt;&lt;br /&gt;Так вот вторая мораль в том, что скорее всего на блоге с тематикой вроде моего&amp;nbsp;вы мало что заработаете. Конечно, могут быть варианты, но мой путь явно не приносит доход, и я не готов делать те изменения, которые существенно увеличат монетизацию. &lt;br /&gt;&lt;br /&gt;Начнем с простой цифры - на сегодняшний день совокупный доход за все время использования Google Adsense составляет 1.12 евро. &lt;br /&gt;&lt;br /&gt;У меня, конечно, очень популярный блог, но все же надо представлять о каких порядках идет речь. При таком раскладе, чтобы что-то реально получать, посещаемость нужно увеличивать раз в 1000. Тематика у меня простая - программизм в Беларуси. &lt;a href="http://dev.by/"&gt;Dev.by&lt;/a&gt;,&amp;nbsp;наверное, самый популярный сайт по этой тематике, а посетителей у него не больше 3 тысяч в день (можно посмотреть на &lt;a href="http://akavita.by/be/"&gt;Акавите&lt;/a&gt;). То есть на такой тематике далеко не уедешь :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-4vOm_5B4zJo/TYVHqLuSMfI/AAAAAAAABOE/rFkeiMUe5gg/s1600/stats.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" r6="true" src="https://lh4.googleusercontent.com/-4vOm_5B4zJo/TYVHqLuSMfI/AAAAAAAABOE/rFkeiMUe5gg/s400/stats.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Чтобы зарабатывать, лучше писать на другие темы, например, про деньги - это стабильно высокий интерес аудитории к теме и высокие расценки по рекламе. &lt;br /&gt;&lt;br /&gt;Русскоязычная реклама дешевле стоит, поэтому лучше на английском - и аудитория будет шире.&lt;br /&gt;&lt;br /&gt;Нужно ли писать интересно? Необязательно.&amp;nbsp;Я узнавал опыт более успешных людей в этом деле, они говорят, что доход больше с тех страниц, на которые приходят много людей, но контент им не интересен, поэтому они либо уходят совсем, либо уходят по ссылкам/рекламе. Объем трафика опять-таки не напрямую зависит от того, насколько интересно вы пишете. Например, популярность тематики может иметь даже больший вес.&lt;br /&gt;&lt;br /&gt;Больше рекламы, подключение других сетей, неудобное её расположение (например, чтобы было сложно отделить рекламу от текста) тоже привели бы к увеличению дохода.&lt;br /&gt;&lt;br /&gt;Тем не менее, все это не про меня, смысла в этой активности в своем блоге&amp;nbsp;я не вижу. Так что не судьба, похоже. Но я все же рекламку не снес -&amp;nbsp;а вдруг попрет? ;) Вот и про деньги статейку написал... Жажда халявы - она такая, тяжело лечится. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-3911816324989752606?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/3911816324989752606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/03/google-adsense.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3911816324989752606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3911816324989752606'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/03/google-adsense.html' title='Про Google Adsense'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-4vOm_5B4zJo/TYVHqLuSMfI/AAAAAAAABOE/rFkeiMUe5gg/s72-c/stats.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-1994895345045869693</id><published>2011-03-16T13:17:00.000+02:00</published><updated>2011-09-20T10:40:38.061+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>Быстрая (пере) индексация писем в Outlook</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Если вы переустановили OS (например, Windows 7) и никак не можете дождаться пока Outlook (2010, к примеру)&amp;nbsp;проиндексирует весь ваш почтовый архив (ну, большой он, например), то вам сюда. Например :)&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;С этой проблемой я сталкивался уже больше 2х раз. Настроил&amp;nbsp;Outlook, подключил Local Personal Folders, пытаюсь найти письмо -&amp;nbsp;а Outlook&amp;nbsp;вам сообщает, что еще не проиндексировал письма. Индексатор вяло&amp;nbsp;работает в фоне, и если вы что-то активно делаете, то он приостанавливается (это называется search indexer backoff).&amp;nbsp;Кнопки Index Now, которая бы заиндексировала все прямо сейчас тоже нет. В итоге, индексация архива запросто может занять ДНИ.&lt;br /&gt;&lt;br /&gt;Так вот, Search Indexer Backoff можно отключить. В окошке &lt;b&gt;Win+R&lt;/b&gt; запускаете &lt;b&gt;gpedit.msc&lt;/b&gt;,&amp;nbsp;в &lt;b&gt;Computer Configuration&amp;gt;Administrative Templates&amp;gt;Windows Components&amp;gt;Search &lt;/b&gt;находите пункт &lt;b&gt;Disable Indexer Backoff &lt;/b&gt;и устанавливаете значение в &lt;b&gt;Enabled &lt;/b&gt;(внимание! нетривиальная логика Disable Enabled). Теперь индексатор&amp;nbsp;не будет снижать скорость индексации, если вы активно работаете с компом. &lt;br /&gt;&lt;br /&gt;Назвать это "максимальной" скоростью индексации все равно язык не поворачивается, он там что-то около 5-10 процентов цпу пережевывает, но&amp;nbsp;мой архив в течение часа или&amp;nbsp;около того проиндексировался до конца, тогда как&amp;nbsp;в прошлый раз&amp;nbsp;я страдал целых два дня. После окончания индексации можно вернуть установки обратно.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-1994895345045869693?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/1994895345045869693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/03/outlook.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/1994895345045869693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/1994895345045869693'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/03/outlook.html' title='Быстрая (пере) индексация писем в Outlook'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-8240586349511001952</id><published>2011-03-13T00:09:00.001+02:00</published><updated>2011-04-20T18:33:51.018+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Про аналогии и метафоры</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Аналогии очень здорово помогают объяснить сложные понятия другим людям, поэтому важно запоминать удачные &lt;span lang="RU" style="font-family: 'Times New Roman','serif'; font-size: 12pt; line-height: 115%; mso-ansi-language: RU; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US;"&gt;– &lt;/span&gt;вполне вероятно это&amp;nbsp;потом здорово поможет.&lt;br /&gt;&lt;br /&gt;Я раньше недооценивал силу аналогий и, наверное, многие тоже недооценивают, поэтому приведу пару примеров из личного опыта.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Например, &lt;a href="http://martinfowler.com/bliki/TechnicalDebt.html"&gt;technical debt&lt;/a&gt; мне казался всего лишь красивым словосочетанием,&amp;nbsp;однако выяснилось, что эта аналогия очень близка западному миру.&amp;nbsp;Однажды мы сделали хорошее дело и успели сделать&amp;nbsp;фичу X к демо на 2 дня раньше срока. Правда, после демо заказчик все никак не мог понять, почему мы сразу же не можем приступить к фиче Y.&amp;nbsp;В итоге&amp;nbsp;кто-то случайно сказал, что эти два дня &lt;span lang="RU" style="font-family: 'Times New Roman','serif'; font-size: 12pt; line-height: 115%; mso-ansi-language: RU; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US;"&gt;– &lt;/span&gt;это technical debt, который мы получили, сделав X раньше срока. Заказчик просиял, и все стало на свои места.&lt;br /&gt;&lt;br /&gt;Броское &lt;a href="http://en.wikipedia.org/wiki/Analysis_paralysis"&gt;analysis&lt;/a&gt;-&lt;a href="http://www.c2.com/cgi/wiki?AnalysisParalysis"&gt;paralysis&lt;/a&gt;&amp;nbsp;(пусть и не совсем аналогия, но у многих эта фраза мгновенно вызывает в голове вполне четкую картинку) когда-то мне здорово помогло достичь понимания с коллегой, а спустя год или около того, та же фраза помогла уже этому коллеге объяснить беспокойство по поводу затягивающейся подготовительной фазы заказчику. &lt;br /&gt;&lt;br /&gt;На тренинге по коучингу я пытался объяснить тренеру (не айтишнику) проблему рефакторинга &lt;span lang="RU" style="font-family: 'Times New Roman','serif'; font-size: 12pt; line-height: 115%; mso-ansi-language: RU; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US;"&gt;– &lt;/span&gt;почему программисты все время&amp;nbsp;недовольны своим кодом. Я рассказывал про "качество кода", и было видно, что&amp;nbsp;основная идея куда-то постоянно ускользала. Я понял, что низкое "качество кода"&amp;nbsp;понималось как наличие ошибок в коде. Тогда я&amp;nbsp;сравнил код с книгой &lt;span lang="RU" style="font-family: 'Times New Roman','serif'; font-size: 12pt; line-height: 115%; mso-ansi-language: RU; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US;"&gt;– &lt;/span&gt;книга может быть написана без ошибок, тем не менее, текст может быть&amp;nbsp;низкого качества, то есть трудночитаемым, плохо структурированным или попросту не интересным. Понимание было достигнуто мгновенно.&lt;br /&gt;&lt;br /&gt;Последней аналогией я горжусь, потому что я к ней пришел спонтанно и сам, хотя, вероятно, и не первый. Что мне нравится в этой аналогии, так это её глубина. Из неё постоянно можно вытягивать что-то новенькое, как, впрочем, и из других аналогий. К примеру, при помощи такой аналогии легко объяснить, зачем важно давать понятные имена классам и методам, достаточно сравнить их с названиями глав в книге (названия глав используются в содержании, поэтому удачные названия позволяют лучше ориентироваться в материале).&lt;br /&gt;&lt;br /&gt;Надеюсь, теперь стало понятнее, чем так полезны метафоры:&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Вместо того, чтобы долго чесать языком, всего лишь парой-другой слов можно вскрыть целый пласт проблемы&lt;/li&gt;&lt;li&gt;Аналогии с понятиями из бытового мира помогают объяснить сложные вещи даже не специалистам&lt;/li&gt;&lt;li&gt;Аналогии помогают взглянуть по-другому на избитую проблему и прийти к новым оригинальным идеям&lt;/li&gt;&lt;/ol&gt;Напоследок, хотелось бы, чтобы вы поделились&amp;nbsp;своими любимыми метафорами. Если же с этим тяжело, то попробуйте все же сравнить код и книгу, что еще интересненького можно выудить из этой аналогии?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-8240586349511001952?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/8240586349511001952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/03/blog-post.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8240586349511001952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8240586349511001952'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/03/blog-post.html' title='Про аналогии и метафоры'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-370052759428766056</id><published>2011-03-11T18:19:00.000+02:00</published><updated>2011-04-20T18:33:51.110+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Grumpy Old Editor</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Коллеги из ThomsonReuters посоветовали блог - &lt;a href="http://grumpyoldeditor.wordpress.com/"&gt;http://grumpyoldeditor.wordpress.com/&lt;/a&gt;. Бывший журналист Reuters со стажем работы&amp;nbsp;в три десятка лет пишет о том, как правильно писать. Приятный английский и интересные заметки, есть чему поучиться. &lt;br /&gt;&lt;br /&gt;P.S. Rolf Soderlind - не совсем английское имя, правда? Потому что он швед :) Так что происхождение не является оправданием плохому английскому, дерзайте.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-370052759428766056?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/370052759428766056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/03/grumpy-old-editor.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/370052759428766056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/370052759428766056'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/03/grumpy-old-editor.html' title='Grumpy Old Editor'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-4851173681127781865</id><published>2011-02-23T16:39:00.000+02:00</published><updated>2011-04-20T18:33:51.111+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>Два монитора</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Мартин Фаулер уже давно &lt;a href="http://martinfowler.com/bliki/BigScreen.html"&gt;говорил&lt;/a&gt;, что самый дешевый способ увеличить продуктивность разработчика, - это купить ему монитор побольше. А лучше два.&lt;br /&gt;&lt;br /&gt;Звучит хорошо, но на практике привыкнуть к нескольким мониторам может оказаться непростым делом. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Вообще говоря, проще работать с одним монитором, так что подумайте. Интересный форм-фактор - широкоформатники. На 22-дюймовом мониторе с хорошим разрешением в режиме side by side уже вполне комфортно помещаются два окна без&amp;nbsp;ощущения сжатости.&amp;nbsp;Или, например, на домашнем ноутбуке проблема решается 15-дюймовой матрицей с разрешением в 1650x1080 (на стационарных мониторах обычно таким не заморачиваются, проще больше диагональ сделать, а не лепить пиксели)&amp;nbsp;- кому-то кажется мелковатыми шрифты, но это скорее дело привычки.&lt;br /&gt;&lt;br /&gt;Но все же еще лучше два&amp;nbsp;больших монитора. Или три&amp;nbsp;:) Поэтому вернемся к теме.&lt;br /&gt;&lt;br /&gt;В&amp;nbsp;Windows 7&amp;nbsp;несколько мониторов настраиваются быстро - через правый клик по рабочему столу и меню Screen Resolution или нажатием Win + P. В общем, выбираем опцию Extend Desktop и поехали.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9deTiMFqHHc/TWUWTdWn-ZI/AAAAAAAABM4/jeYkigeRGCU/s1600/Win%252BP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="83" src="http://2.bp.blogspot.com/-9deTiMFqHHc/TWUWTdWn-ZI/AAAAAAAABM4/jeYkigeRGCU/s400/Win%252BP.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Классно когда мониторы одинаковые - и по размеру, и вообще. Разное разрешение неудобно в частоности тем, что перемещая курсор с одного монитора на другой можно споткнуться о невидимый край второго монитора с меньшим разрешением. Если же&amp;nbsp;мониторы просто разные, то возникает дискомфорт в связи с разной яркостью, четкостью, цветопередачей. &lt;br /&gt;&lt;br /&gt;Тем не менее в некоторых случаях различное разрешение - неизбежное зло. Например, в случае если вы подключаете второй монитор к ноутбуку. Эту проблему можно частично решить. Оказывается, в меню Screen Resolution в 7ке можно менять расположение мониторов относительно друг друга, просто перетягивая их мышкой. Поэтому если различается разрешение по вертикали, но совпадает по ширине (широкоформатная матрица ноутбука и стандартный монитор), то можно сделать ориентацию по вертикали. То есть у меня ноутбук стоит на столе и "рабочий стол"&amp;nbsp;расширен вверх (а не вбок)&amp;nbsp;на монитор на подставке над ноутбуком.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JG2a05EZi9E/TWUWi6HQw4I/AAAAAAAABM8/uesc7Pm5Oi8/s1600/Orientation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-JG2a05EZi9E/TWUWi6HQw4I/AAAAAAAABM8/uesc7Pm5Oi8/s1600/Orientation.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Еще один вариант ориентации, который я видел, - повернуть один из мониторов вертикально (то есть физически&amp;nbsp;"положить" его набок, а&amp;nbsp;потом поменять ориентацию монитора&amp;nbsp;на&amp;nbsp;альбомную&amp;nbsp;в меню Screen Resolution). Так как вертикаль у нас становится длиннее, то это удобно для списков - почтового клиента, списков задач. Правда, не все подставки для мониторов такое позволяют :)&lt;br /&gt;&lt;br /&gt;После того, как определились, как расставить мониторы, нужно научится быстро работать с окнами.&lt;br /&gt;&lt;br /&gt;Здорово помогают управлятся с окнами на нескольких или больших мониторах новые горячие клавиши 7ки, что кажется удобным:&lt;br /&gt;&lt;strong&gt;Win + Up/Down Arrow Key&lt;/strong&gt; = Распахнуть/свернуть окно&lt;br /&gt;&lt;strong&gt;Win + Right/Left Arrow Key&lt;/strong&gt; = Распахнуть окно на левую или правую половину текущего экрана (удобно для больших широкоформатников)&lt;br /&gt;&lt;strong&gt;Shift + Win + Right/Left Arrow Key&lt;/strong&gt; = Переместить окно на другой монитор (супер!)&lt;br /&gt;&lt;strong&gt;Win+number (1-9)&lt;/strong&gt; = Запускает (или переключается на активное окно) приложение, закрепленное в этой позиции в панели задач&lt;br /&gt;&lt;br /&gt;Вообще, в 7ке с горячими клавишами все хорошо и можно не только перемещать окна. Смотрите &lt;a href="http://lifehacker.com/#!5390086/the-master-list-of-new-windows-7-shortcuts"&gt;сюда&lt;/a&gt; - я для себя почерпнул много нового.&lt;br /&gt;&lt;br /&gt;В случае большого количества мониторов легко потерять курсор. В настройках мыши можно включить опцию "подсветки" курсора по нажатию Ctrl. Себе включил, но курсор пока еще не терялся. Видимо, нужно еще пару мониторов добавить.&lt;br /&gt;&lt;br /&gt;Ну, пока все. Если какие-нибудь еще хитрости знаете, то пишите в комментарии.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-4851173681127781865?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/4851173681127781865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2011/02/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4851173681127781865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4851173681127781865'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2011/02/blog-post.html' title='Два монитора'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-9deTiMFqHHc/TWUWTdWn-ZI/AAAAAAAABM4/jeYkigeRGCU/s72-c/Win%252BP.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-8901343506587080566</id><published>2010-12-08T23:44:00.000+02:00</published><updated>2011-04-20T18:33:51.114+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='ru_lh'/><title type='text'>8 привычка высокоэффективных людей</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Господа, можете меня поздравить, я теперь официально высокоэффективен: прочитал аудиокнигу (ага, в машине) Стивена Коуви «7 привычек высокоэффективных людей». &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;В целом, слушать книги понравилось. Рулежка доведена до автоматизма и с покупкой автомата стала активней проявляться другая проблема – тянет в сон за рулем. Аудиокниги бодрят. Раньше спасался семечками (только не надо смеятся, лучше семки кушать и ходить в кепке, чем лежать в кювете). С пониманием проблем почти не возникало, но иногда приходится отвлекаться и возвраты давались тяжело. Вторая проблема – хочется делать заметки. Ну, пока без заметок. Видимо, без аудиозаметок не обойтись, но технически опять-таки сложно – нужно следить за дорогой и совершать нетривиальные действия.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Теперь о самой книге (и о восьмой привычке местного разлива). &lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Что реально понравилось, так это её объем в аудиоформате. В общем, похоже, там только выжимки, и, наверное, это правильно. Подобные книги обычно страдают переливанием из пустого в порожнее. С другой стороны, некоторые переходы были не совсем очевидны. Видимо, сказывается местами неудачная компрессия.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;По поводу содержания. Многим покажется набором банальностей. Например, первая привычка – проактивность. Ну, в общем, кто бы мог подумать. С другой стороны, кто из нас действительно проактивен и умеет нормально слушать собеседника (очередная привычка – сначала активно слушать собеседника и только потом уже пытаться донести свою информацию). Так что бесполезным это чтение не назовешь даже для тех, кто уже знает или догадывался, ну и всегда кто-то да и найдет что-то новенькое.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Но вот что еще хотелось бы добавить. Мне кажется, что есть очень важная восьмая привычка. &lt;strong&gt;Задавать вопросы.&lt;/strong&gt; И это не то же самое, что активное слушание (хотя последнее подразумевает вопросы). &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://3.bp.blogspot.com/_hTFMi0z5W-c/TP_6Y61B0vI/AAAAAAAABMI/U7wT13P3Fps/s1600/questions.gif" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" n4="true" src="http://3.bp.blogspot.com/_hTFMi0z5W-c/TP_6Y61B0vI/AAAAAAAABMI/U7wT13P3Fps/s320/questions.gif" width="152" /&gt;&lt;/a&gt;Поясню на примерах:&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;- идет встреча, важная шишка говорит – «вопросы есть?»; вопросы есть, но не хочется их задавать, дабы не показать свою некомпетентность&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;- вопросы есть в принципе, но нужно пойти и кому-то их задать, например, вашему боссу, который очень-очень занят (когда планируется повысить зарплату?) и ой как не хочется-то&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;- появляется задача и побежали; работаем, работаем, а через полгода выясняется, что в соседней комнате уже решили проблему – обидно, потратили много времени зря&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;- делают вам ремонт строители, проводят электрику, а на выходных вы заехали поглядеть как идут дела; все уже на своих местах, только один выключатель что-то не работает – ну, видимо, еще в планах, вроде солидные люди, спросишь и как бы скажешь, что не доверяю я вам; заламинировали это дело, все заклеили – а и не работает, оказывается провод-то и бракованный был&lt;/div&gt;&lt;br /&gt;Для кого-то это и не проблема, но мы, айтишники, обычно не очень умеем задавать вопросы – стесняемся как-то, стараемся сами как-то догадаться, ну и так далее. Особенно явно это проявляется при работе с требованиями. &lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Вот у нас идет разбор хотелки заказчика, мы уже задали 40 вопросов и 41 как-то уже неудобно задавать (ну, мы дураки что ли? сами не можем разобраться?). Ну и ладно, наверное, должно быть так – вроде бы логично. Потом, правда, выясняется, что надо было совсем по-другому.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Очень верный признак, что у вас с этим проблемы – это следущий паттерн поведения при поиске нужного прилавка с товарами: вместо того, чтобы спросить персонал, вы предпочитаете не идти на контакт, а самому найти или разобраться по вывескам. Даже если найти товар не удается, вы часто так и уходите из магазина, не купив то, что вам нужно (и не убедившись, что товара действительно нет и искать не стоило). С другой стороны, обратившись за помощью к скучающему и жаждущему общения консультанту в салоне паркета, уходите домой с кучей полезной информации, бесплатным каталогом, прайсом и даже неожиданными скидками. &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Вот еще пример из жизни. Схватка, берем очередной уровень. Приезжаем на место (центр города). Открываются двери, все побежали врассыпную на поиски. Ну, почти все. По рации объявляется, что уровень взят. Выяснилось, что выбившийся из общей массы спокойно вышел из машины, подошел к милиционеру, расспросил, не спеша снял код и вернулся в машину. &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&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/933369614249771220-8901343506587080566?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/8901343506587080566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/12/8.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8901343506587080566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8901343506587080566'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/12/8.html' title='8 привычка высокоэффективных людей'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hTFMi0z5W-c/TP_6Y61B0vI/AAAAAAAABMI/U7wT13P3Fps/s72-c/questions.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-5367531432252061633</id><published>2010-10-18T23:19:00.001+03:00</published><updated>2011-04-20T18:33:51.115+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>5 мифов о документации</title><content type='html'>Наверное, самая частая жалоба IT-шников – это отсутствие документации на проекте. Желание обрести “peace of mind” и иметь четкую инструкцию, что и за чем надо делать, вполне понятно, однако мифов по поводу документации столь много, что всех сезонов myth busters не хватит на внесение ясности в данный вопрос. &lt;br /&gt;&lt;br /&gt;И все же давайте попробуем! Итак, 5 мифов о документации.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Миф1: Чем подробней, тем лучше&lt;/strong&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;strong&gt;Миф2: Навалились, еще чуть-чуть, и вот оно счастье!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Многие думают (точнее не задумывались, просто многим так кажется), что документация это некое разовое усилие. Вот мы сейчас напишем дизайн, согласуем требования, и все будет хорошо на веки вечные. В реальности же, чем подробней вы пишите документацию, тем больше требуется усилий на поддержание её в приемлемом состоянии. &lt;br /&gt;&lt;br /&gt;Представьте себе ситуацию, когда документация обновляется, но все время с небольшим опозданием. В итоге, чтобы объяснить какой-то документ другому человеку, все равно документа недостаточно, и нужен кто-то, кто объяснит как оно на самом деле. Доверие к документации падает, после прочтения некого тезиса участники все равно его перепроверяют устно с носителями знаний. На передачу информации тратится столько же времени, как и в случае отсутствия документации. Плюс тратится время на саму документацию. По-моему, мы сами себя обманули?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Миф3: Документации нет. Очевидно, что в этом виноват кто-то другой&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Многие думают, что документация должна свалиться на них как манна небесная. На самом деле, по любой методологии разработчики должны принимать участие в документировании всех артефактов, начиная с требований, заканчивая дизайном.&lt;br /&gt;&lt;br /&gt;Многим, конечно, невдомек, что это не внешняя, а внутренняя проблема и начинать нужно с себя – например, приучить себя вовремя заполнять журнал (btw, это тоже документация, просто в другом формате). Серьезно, ведь на это нужно всего-то N минут в неделю, если вам так сложно это сделать, то почему вы думаете, что кому-то проще тратить значительно больше времени на другое? &lt;br /&gt;&lt;br /&gt;Окей, вы заполняете журнал вовремя. Как на счет комментариев в коде? Каждый ли коммит в репозиторий содержит комментарий? Когда вы закрываете баг, всегда ли вы сопровождаете это комментарием и корректно переводите статусы?&lt;br /&gt;&lt;br /&gt;По сути, это тоже документация, просто в другом формате, на чем я бы хотел остановиться поподробней в следующем мифе:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Миф4: Документация – это файлы в формате .doc. Окей, .xls тоже годится&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Традиционно результатом code review является .doc файл с табличкой, а может быть и .xls файлик. Удобно ли пользоваться таким документом? В случае если code review проводится группой людей, неплохо бы положить файл в репозиторий. Да, к сожалению, с merge изменений могут быть проблемы – файл лучше блокировать на время редактирования. &lt;br /&gt;&lt;br /&gt;Что если список вести как issues в &lt;a href="http://www.jetbrains.com/youtrack/"&gt;YouTrack&lt;/a&gt;, например? Просто пометить их определенным тэгом. Команда может голосовать по каждому пункту, оставлять комментарии и сразу принимать в работу, как любую другую задачу. Лучше, чем .doc, правда?&lt;br /&gt;&lt;br /&gt;А что если дизайн вести в &lt;a href="http://c2.com/cgi/wiki?WikiHistory"&gt;wiki&lt;/a&gt;? Разработчики могут самостоятельно вносить изменения сразу после того, как поменялась структура кода. Писать, пользуясь разметкой wiki – это по-хакерски, ребятам понравится. Незнакомый термин? Дайте кросс-ссылку, таким образом вы получите не просто текст, но нечто более интерактивное.&lt;br /&gt;&lt;br /&gt;Product manager просит вас составить список шагов, который выполняется во время работы CruiseControl. Сделаем ему .xls? А что если аккуратно именовать Ant targets и написать html-страничку, которая красиво показывает, что и за чем следует в Ant скрипте. И поддерживать документ не надо, добавили target – он уже в отчете.&lt;br /&gt;&lt;br /&gt;Про банальную генерацию .chm из комментариев в коде даже не буду упоминать. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Миф5: Заказчик постоянно меняет требования. Мы сделаем спецификацию и будем использовать её как щит&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Да, пора снять розовые очки – это не работает. Какая основная задача разработчиков? Ну, помимо написания &lt;a href="http://www.shcoder.by/search/label/TDD"&gt;unit-test-ов&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;strong&gt;Итак, самый главный вопрос - «Что делать?»&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Документация имеет ряд очевидных минусов, поэтому любой документ должен иметь хорошее обоснование. Некоторые программисты сталкиваются с проблемами при устном общении, надо признать, что писатели из нас тоже посредственные (почитайте мой блог, ну не уныло?), поэтому и писать её никто не хочет.&lt;br /&gt;&lt;br /&gt;Тем не менее документация все же пишется и пишется, чтобы решать конкретные проблемы. Если просто удалить все .doc файлы в вашей проектной папке, не придумав взамен другое решение, то вряд ли получится что-то хорошее.&lt;br /&gt;&lt;br /&gt;Однако, подумайте об этом с другой стороны. Если продукт хороший и интерфейс интуитивно понятный, часто ли приходиться заглядывать в User Guide? Если у вас огромный Installation Guide, не значит ли это что нужно заняться автоматизацией? В случае подробной спецификации, не работаете ли вы по Waterfall модели – без тесного общения с заказчиком в процессе разработки? Во многих случаях документация – это своеобразный workaround для проблем, которые эффективнее решаются другими способами.&lt;br /&gt;&lt;br /&gt;Мартин Фаулер писал в «Рефакторинге», что комментарии внутри метода – это плохой запах часто намекающий на то, что нужен рефакторинг. Если у вас в методе появляется //этот код вычисляет эту штуку вот таким офигенским спосбом, то скорее всего вам нужно выделить кусок кода в метод getШтукаОфигенски(); и комментарий больше будет не нужен.&lt;br /&gt;&lt;br /&gt;На данный момент многие методики и инструменты продвинулись вперед и многие проблемы, решаемые документацией, решаются нынче другими способами. &lt;br /&gt;&lt;br /&gt;Нужен knowledge sharing? Парное программирование с разработчиками, меняющими пары, поможет распределить опыт и знания внутри команды. &lt;br /&gt;&lt;br /&gt;Вместо сложного дизайна и объемных архитектурных документов используется принцип Simple Design (&lt;a href="http://www.martinfowler.com/articles/designDead.html"&gt;http://www.martinfowler.com/articles/designDead.html&lt;/a&gt;), подкреплённый юнит-тестами, непрерывным рефакторингом и code review в результате работы в паре. &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/933369614249771220-5367531432252061633?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/5367531432252061633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/10/5.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/5367531432252061633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/5367531432252061633'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/10/5.html' title='5 мифов о документации'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-4489430401971781741</id><published>2010-10-14T23:20:00.000+03:00</published><updated>2011-04-20T18:33:51.115+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><title type='text'>#devcamp #di_by 1й день - впечатления</title><content type='html'>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://2.bp.blogspot.com/_hTFMi0z5W-c/TLdjETeSNKI/AAAAAAAABLU/Nqreu6VQ-8E/s1600/177189084.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" ex="true" height="191" src="http://2.bp.blogspot.com/_hTFMi0z5W-c/TLdjETeSNKI/AAAAAAAABLU/Nqreu6VQ-8E/s320/177189084.jpg" width="320" /&gt;&lt;/a&gt;На 14е я специально резервировал день отпуска, чтобы посетить &lt;a href="http://devcamp.by/"&gt;http://devcamp.by/&lt;/a&gt;, - программа выглядела очень заманчиво. День прошел (и еще три дня впереди! особенно надеюсь на воскресенье), и так как далеко не все, кто хотел, смогли посетить конференцию сегодня,&amp;nbsp;то попытаюсь вкратце описать мои впечатления.&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Первый день #devcamp был посвящен Project Management. Большая часть информации не была для меня чем-то новым, тем не менее даже знакомый материал - хорошо поданный и структурированный - подталкивает на интересные мысли. &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Обычно выступающие рассказывают про свой уникальный опыт, а не про теорию, что придает живость материалу и некий эмоциональный толчек (а у других-то работает), поэтому многие удачные попытки применить на практике уже знакомые методики начинались&amp;nbsp;именно с подобных конференций.&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Что запомнилось? &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;Качественным исполнением и глубиной проработки материала порадовали коллеги из EPAM Systems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ваня Кравченко с Customer Focus (удачный шанс наконец-то послушать доклад, который я пропустил на &lt;a href="http://www.shcoder.by/2010/09/560.html"&gt;EPAM TR&amp;nbsp;Conference&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Юра Шиляев с&amp;nbsp;Командоварением&lt;/li&gt;&lt;li&gt;Денис Петелин с Немотивирующими деньгами&lt;/li&gt;&lt;/ul&gt;Выгодно отличались живостью выступлений и презентаций коллеги из Exigen Services:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Света Колупаева про Парное программировани&lt;/li&gt;&lt;li&gt;Дима Зданович про Ретроспективу&lt;/li&gt;&lt;/ul&gt;Ребята, большое спасибо, вы молодцы.&lt;br /&gt;&lt;br /&gt;Очень рад, что знакомые уже&amp;nbsp;многим епамовцам тренера/презенторы, высоко оцениваются не только коллегами внутри компании, но и более широкой аудиторией. Да, у нас действительно неплохо, и EPAM - это далеко не МакДональдс, как кто-то думал до конференции&amp;nbsp;;)&lt;br /&gt;&lt;br /&gt;Не на всех докладах пришлось побывать,&amp;nbsp;поэтому если кого не упомянул - не обижайтесь, может быть, еще получу удовольствие от просмотра записи на &lt;a href="http://di.by/"&gt;http://di.by/&lt;/a&gt;&amp;nbsp;и обязательно напишу :)&lt;br /&gt;&lt;br /&gt;Конечно, грех жаловаться, но как нас учит Дима Зданович, важно проводить ретроспективы и учиться на ошибках, а также в напутствие тем, кто еще только планирует заехать на #di_by, - были и некоторые неудобства:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Все-таки в шатре холодно, наверное, этот формат не для октября месяца&amp;nbsp;:) Тем не менее, спасибо за пледы, они здорово помогли!&lt;/li&gt;&lt;li&gt;Указки, пульты ДУ, возможность подключить звук - надеюсь, на последующих днях все подготовят заранее, некоторым выступающим было действительно сложно&lt;/li&gt;&lt;li&gt;Думаю, что в Загорье не так уж много посторонних людей, жаждущих воспользоваться халявным вай-фаем, - можно было бы просто дать публичный доступ, особенно учитывая то, что, как выяснилось,&amp;nbsp;одной циферки в выданном пароле просто не хватало :)&lt;/li&gt;&lt;li&gt;И все же возможность норамльно пообедать, пусть и за деньги, не выезжая в Минск (мы в итоге припоздали на fluent English)&amp;nbsp;- это важно :) Я понимаю, что можно было заранее зарегестрироваться, но стоило дополнительно указать, что если этого не сделать, то будут только слойки&lt;/li&gt;&lt;li&gt;Чуть больше указателей на Загорье не помешало бы :)&lt;/li&gt;&lt;/ul&gt;Тем не менее, конференция здоровская, за что организаторам огромное спасибо! Увидимся в ближайшие дни на&amp;nbsp;#devcamp,&amp;nbsp;и помните, что конференция это не только шанс послушать умных людей, но и отличный способ пообщаться со своими коллегами по цеху.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-4489430401971781741?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/4489430401971781741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/10/devcamp-diby-1.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4489430401971781741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4489430401971781741'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/10/devcamp-diby-1.html' title='#devcamp #di_by 1й день - впечатления'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hTFMi0z5W-c/TLdjETeSNKI/AAAAAAAABLU/Nqreu6VQ-8E/s72-c/177189084.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-8603451575285957162</id><published>2010-10-01T22:32:00.000+03:00</published><updated>2011-04-20T18:33:51.116+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lifehack'/><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>Uber Inbox и альтернатива Recall Message</title><content type='html'>По горячим следам &lt;a href="http://www.shcoder.by/2010/09/hacking-outlook-public-folders.html"&gt;предыдущего поста&lt;/a&gt; еще пару Oulook советов. &lt;br /&gt;&lt;br /&gt;Очень часто возникает ситуация, когда Inbox усердно сортируется по папкам, а Sent Items лежат большой дымящейся кучей. &lt;a href="http://blogs.msdn.com/b/outlook/archive/2007/10/05/ultimate-inbox-merging-inbox-and-sent-items-folders.aspx"&gt;Статья&lt;/a&gt;&amp;nbsp;(осторожно, английский) описывает, как сделать так, чтобы Sent Items появлялись в вашем Inbox. В итоге посланные письма будут попадать под тот же самый механизм сортировки, что и принятые письма. &lt;br /&gt;&lt;br /&gt;Вкратце, в Options Outlook-а отключается сохранение писем в Sent Items и добавляется правило на сохранение письма в Inbox после отправки. Очень просто, по-моему, все должно быть понятно по скриншотам в статье. &lt;br /&gt;&lt;br /&gt;В статье также указывается, что это хороший способ увидеть ваши&amp;nbsp;ответы в &lt;a href="http://blogs.msdn.com/b/outlook/archive/2009/07/20/what-s-up-with-my-inbox-in-outlook-2010.aspx"&gt;Conversations&lt;/a&gt;. На самом деле, в Outlook 2010 это не требуется. Просто поставьте галочку:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hTFMi0z5W-c/TKY3GzY4D5I/AAAAAAAABLQ/odvTSj7-jjs/s1600/Show+From+Other+Folders.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://2.bp.blogspot.com/_hTFMi0z5W-c/TKY3GzY4D5I/AAAAAAAABLQ/odvTSj7-jjs/s1600/Show+From+Other+Folders.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Более того, таким способом Outlook включит письма в Conversations не только из Sent Items, но и из других папок, включая локальные папки.&lt;br /&gt;&lt;br /&gt;Вдобавок,&amp;nbsp;на лайфхакер.ру рассказали про &lt;a href="http://lifehacker.ru/2010/09/29/nazhat-send-i-pozhalet-kak-perehvatit-uzhe-%c2%abotpravlennoe%c2%bb-pismo-v-outlook/"&gt;альтернативу&lt;/a&gt; отзыва посланного письма. &lt;br /&gt;&lt;br /&gt;Отзыв письма встроен в Outlook, но работает как-то странно. Обычно люди узнают об этой возможности, когда к ним приходит 2 письма - оригинал и отзыв.&amp;nbsp;Все&amp;nbsp;сразу бросаются&amp;nbsp;посмотреть, что же такого ляпнули в оригинале, что его отзывают. В теории, правда, оригинал должен удалиться из почтового ящика адресата. &lt;br /&gt;&lt;br /&gt;Решение, предлагаемое лайфхакером, простое. Опять-таки, на событие "отправка письма" вешается действие по задержке отправки на 3 минуты. После нажатия кнопки Send письмо 3 минуты лежит у вас в Outbox, его можно удалить, поправить и т.п. Сразу скажу, мне показалось, что достаточно 1-1.5 минуты.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-8603451575285957162?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/8603451575285957162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/10/uber-inbox-recall-message.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8603451575285957162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8603451575285957162'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/10/uber-inbox-recall-message.html' title='Uber Inbox и альтернатива Recall Message'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hTFMi0z5W-c/TKY3GzY4D5I/AAAAAAAABLQ/odvTSj7-jjs/s72-c/Show+From+Other+Folders.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-878181604796040796</id><published>2010-09-27T23:52:00.000+03:00</published><updated>2011-04-20T18:33:51.117+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lifehack'/><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>Hacking Outlook Public Folders</title><content type='html'>Если вы работаете в крупной компании, то скорее всего пользуетесь Exchange Server и Outlook.&amp;nbsp;Вероятно,&amp;nbsp;у вас большой поток писем и&amp;nbsp;часто возникает надобность делиться письмами с вашей командой.&lt;br /&gt;&lt;br /&gt;Для этой цели хорошо подходят &lt;a href="http://office.microsoft.com/ru-ru/outlook-help/HA010148788.aspx"&gt;Public Folders&lt;/a&gt; - вы создаете для вашей команды такую папку со своей структурой,&amp;nbsp;и вся проектная переписка попадает туда. Вместо того, чтобы делать коллеге Forward письма или ставить в CC всю команду просто на всякий случай (рискуя попасть под spam фильтр), вы перетягиваете письма в ваш Public Folder. &lt;br /&gt;&lt;br /&gt;Письма не занимают дополнительного места на вашей рабочей машине,&amp;nbsp;в случае проблемы с ней - все письма можно найти на сервере, за исправностью которого следят IT службы.&lt;br /&gt;&lt;br /&gt;Резюмируя, я хотел бы поделиться с вами несколькими приемами работы с Public Folders, которые я в последнее время часто использую.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Чтение Inbox&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Во-первых, я держу свой Inbox пустым (похоже на то, что описывает Макс Дорофеев в &lt;a href="http://www.shcoder.by/2010/08/blog-post_22.html"&gt;своем слайдкасте&lt;/a&gt;), поэтому новых писем немного и они отправляются либо в Public Folders (архив), либо в Local Folders (личное), либо в задачи. Письма в Inbox отсортированы по дате по возрастанию (то есть новые письма - внизу). Это честнее по отношению к коллегам&amp;nbsp;и так удобнее читать.&lt;br /&gt;&lt;br /&gt;Читая письма, я пользуюсь пробелом. Включить эту опцию можно в File&amp;gt;Options&amp;gt;Mail&amp;gt;Outlook Panes&amp;gt;Reading Pane:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hTFMi0z5W-c/TKC4sTXxXGI/AAAAAAAABK0/u8T7IcIPaeQ/s1600/Reading+Pane+Options.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" px="true" src="http://1.bp.blogspot.com/_hTFMi0z5W-c/TKC4sTXxXGI/AAAAAAAABK0/u8T7IcIPaeQ/s320/Reading+Pane+Options.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;div&gt;При нажатии пробела Outlook скроллит письмо, а после того, как оно закончилось, переходит на следующее письмо в списке. Таким образом, вы можете прочитать все письма пользуясь лишь одной клавишей - ни одного скролла мышкой.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Public Folders видны только в Folder List View (Ctrl+6), поэтому если вы используете Mail View (Ctrl+1), который значительно компактнее и включает секцию Favorites, то перетягивание писем вручную в Public Folders&amp;nbsp;может быть утомительным. В любом случае, стандартная процедура перетягивания письма обычно требует активной мышиной возни, а это вредно для ваших суставов. &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Quick Steps&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;В Outlook 2010 можно создать &lt;a href="http://office.microsoft.com/ru-ru/outlook-help/HA010370689.aspx"&gt;Quick Steps&lt;/a&gt; для часто повторяемых действий, например, вот так:&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hTFMi0z5W-c/TKC3WvVtzwI/AAAAAAAABKw/r7Rj1kd02p8/s1600/Quick+Steps.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://4.bp.blogspot.com/_hTFMi0z5W-c/TKC3WvVtzwI/AAAAAAAABKw/r7Rj1kd02p8/s1600/Quick+Steps.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;div&gt;Как видите,&amp;nbsp;у меня есть два основных типа Quick Steps:&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Переместить письмо в одну из проектных&amp;nbsp;Public Folders&amp;nbsp;и пометить его&amp;nbsp;как прочтенное&lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Создать задачу и прикрепить к ней письмо&lt;/li&gt;&lt;/ol&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;У каждого Quick Step есть горячее сочетание клавиш. Outlook 2010 здесь не гибок и дает возможность использовать только Ctrl+Shift+число от 1-9. Каждый Quick Step у меня начинается с цифры, которая подсказывает, какой hot key использовать для Quick Step. Панель сверху используется просто как памятка, я не нажимаю на Quick Steps мышкой.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Если письмо не требует от меня действий, я нажимаю одно из&amp;nbsp;сочетаний&amp;nbsp;Ctrl+Shift+номер папки, и письмо попадает в нужный Public Folder. &lt;br /&gt;&lt;br /&gt;Создать такой Quick Step непросто. В диалоге создания Quick Step при выборе стандартного действия "Move To" Outlook предлагает указать целевую папку - набор недавно использованных папок либо опция Other Folder, показывающая структуру ваших папок в диалоговом окне. Удивительно, но в этом диалоге нет Public Folders.&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://1.bp.blogspot.com/_hTFMi0z5W-c/TKC5pq_ZqII/AAAAAAAABK4/I5NUpPkXFBc/s1600/Move.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://1.bp.blogspot.com/_hTFMi0z5W-c/TKC5pq_ZqII/AAAAAAAABK4/I5NUpPkXFBc/s1600/Move.PNG" /&gt;&lt;/a&gt;Зато если вы&amp;nbsp;выберете или откроете&amp;nbsp;письмо, затем нажмете&amp;nbsp;кнопку Move в Ribbon меню над письмом и выберете опцию&amp;nbsp;Other Folder, то там сможете выбрать нужный вам Public Folder.&amp;nbsp;После этого эта папка будет доступна в списке недавних папок и теперь можно будет создать соответствующий Quick Step.&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;Помимо перетягивания писем в Public Folders, можно также включать в CC почтовый адрес целевого Public Folder, однако, убедить заказчиков так поступать обычно сложно.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Письма-задачи&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Quick Step для создания&amp;nbsp;задачи из письма звучит как перебор, ведь все знают, что письмо можно отметить флажком, и оно попадет в ваш список задач. Но с этим способом есть проблема - ваша задача будет названа Subject-ом письма и не будет говорить вам, что требуется сделать (что уже не очень правильно).&amp;nbsp;Если же вам нужно&amp;nbsp;выполнить разные действия на письма с похожим Subject-ом или если Subject письма нерелевантен, то читать подобные списки задач непросто. Таким образом, этот Quick Step мотивирует вас на создание корректных задач и поддержание вашего to do list в хорошем состоянии.&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;Быстрый доступ к Public Folders&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Так как Public Folders расположены удаленно, то могут возникнуть 3 проблемы:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Недоступность папок в Offline режиме&lt;/li&gt;&lt;li&gt;Медленный поиск&lt;/li&gt;&lt;li&gt;Также может быть неудобно то, что папки не доступны&amp;nbsp;в Mail View (только в Folder List)&lt;/li&gt;&lt;/ol&gt;По поводу 3го пункта - если нажать Ctrl и щелкнуть мышью по Quick Step, то вы перейдете в папку, в которую Quick Step должен перемещать письма.&lt;br /&gt;&lt;br /&gt;Также можно использовать Favorites. Работает это не совсем тривиально, поэтому немного деталей.&lt;br /&gt;&lt;br /&gt;В Folder List находите ваш любимый Public Folder и в меню&amp;nbsp;по правому щелчку мыши выбираете опцию Add To Favorites; ваш Public Folder попадет в секцию Public Folders &amp;gt; Favorites&amp;nbsp;- он все еще не в основном Favorites в Mail View. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hTFMi0z5W-c/TKD0KqdEc9I/AAAAAAAABLA/kzmfHILdyXc/s1600/Public+Folders.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://1.bp.blogspot.com/_hTFMi0z5W-c/TKD0KqdEc9I/AAAAAAAABLA/kzmfHILdyXc/s1600/Public+Folders.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Далее, выбрав вашу папку в&amp;nbsp;Favorite Public Folders, нажимаете по ней&amp;nbsp;правым щелчком, и выбираете пункт&amp;nbsp;Show in Favorites - эта опция&amp;nbsp;наконец-то добавит&amp;nbsp;выбранный Public Folder в Favorites в Mail View. &lt;/div&gt;&lt;br /&gt;Кстати,&amp;nbsp;в Favorites можно также добавить ссылки на &lt;a href="http://office.microsoft.com/ru-ru/outlook-help/HP007328474.aspx"&gt;Search Folders&lt;/a&gt;, разбив свой входящий поток писем&amp;nbsp;по разным критериям (например, важные письма, письма, где только вы в TO или где вы всего лишь в CС). Это может помочь после возращения из отпуска или после болезни, когда писем действительно много.&lt;br /&gt;&lt;br /&gt;То, что Outlook делает в&amp;nbsp;случае добавления папки в Public Folder Favorites&amp;nbsp;зависит от настроек File&amp;gt;Account Settings&amp;gt;E-mail&amp;gt;Ваш Аккаунт&amp;gt;Change&amp;gt;More Settings:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hTFMi0z5W-c/TKC8KSPsI-I/AAAAAAAABK8/U_CVj3Fyvv0/s1600/Cached+Mode.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://4.bp.blogspot.com/_hTFMi0z5W-c/TKC8KSPsI-I/AAAAAAAABK8/U_CVj3Fyvv0/s1600/Cached+Mode.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Eсли пункт Download Public Folder Favorites помечен галкой, то Outlook создает локальную версию&amp;nbsp;удаленной папки&amp;nbsp;и периодически синхронизирует вашу локальную версию с версией на сервере.&amp;nbsp;Теперь папка становится доступной и в Offline режиме, также поиск по папке может быть быстрее. &lt;br /&gt;&lt;br /&gt;Возникает непреодолимое желание выбрать эту опцию, но попробовав её, я был вынужден её отключить: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Почему-то письма скачиваются, если вы их открываете напрямую из Public Folders, если просматривать письма из Favorites, то Outlook переливается всеми цветами своей палитры, но письмо не показывает. &lt;/li&gt;&lt;li&gt;Синхронизация папок происходит не сразу - вы письмо уже скопировали, а в Favorites его еще не видно. &lt;/li&gt;&lt;li&gt;Если вы перетащите письмо в Favorites - оно попадет лишь в вашу локальную копию общей папки и не появится на сервере. То есть эти папки по сути read only (хотя сначала таковыми не выглядят).&lt;/li&gt;&lt;/ul&gt;Если же эта опция не включена, то в Favorites у вас будет просто ссылка на Public Folder - никаких сюрпризов, вы работаете с удаленной папкой. Если вы туда перетащите письмо, то оно попадет на сервер. &lt;br /&gt;&lt;br /&gt;В связи с этим, с первыми двумя проблемами я смирился (проблема доступа к папкам в offline и не такой шустрый поиск), зато если вы потеряете свой notebook, то меньше будет проблем с offline контентом на нем, плюс поиск может быть и медленный, но потребляет меньше ресурсов на вашей машине (наверное).&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/933369614249771220-878181604796040796?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/878181604796040796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/09/hacking-outlook-public-folders.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/878181604796040796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/878181604796040796'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/09/hacking-outlook-public-folders.html' title='Hacking Outlook Public Folders'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hTFMi0z5W-c/TKC4sTXxXGI/AAAAAAAABK0/u8T7IcIPaeQ/s72-c/Reading+Pane+Options.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-2245387312052651147</id><published>2010-09-22T23:48:00.001+03:00</published><updated>2011-04-20T18:33:51.118+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android Infected</title><content type='html'>&lt;br&gt;&amp;#1061;&amp;#1086;&amp;#1090;&amp;#1080;&amp;#1090;&amp;#1077; &amp;#1074;&amp;#1077;&amp;#1088;&amp;#1100;&amp;#1090;&amp;#1077;, &amp;#1093;&amp;#1086;&amp;#1090;&amp;#1080;&amp;#1090;&amp;#1077; &amp;#1085;&amp;#1077;&amp;#1090;, &amp;#1085;&amp;#1086; &amp;#1101;&amp;#1090;&amp;#1086;&amp;#1090; &amp;#1087;&amp;#1086;&amp;#1089;&amp;#1090; &amp;#1103; &amp;#1087;&amp;#1080;&amp;#1096;&amp;#1091; &amp;#1089; &amp;#1085;&amp;#1086;&amp;#1074;&amp;#1086;&amp;#1075;&amp;#1086; &amp;#1090;&amp;#1077;&amp;#1083;&amp;#1077;&amp;#1092;&amp;#1086;&amp;#1085;&amp;#1072;. &amp;#1053;&amp;#1072; &amp;#1082;&amp;#1086;&amp;#1085;&amp;#1092;&amp;#1077;&amp;#1088;&amp;#1077;&amp;#1085;&amp;#1094;&amp;#1080;&amp;#1080; &amp;#1103; &amp;#1087;&amp;#1086;&amp;#1097;&amp;#1091;&amp;#1087;&amp;#1072;&amp;#1083; Nexus One &amp;#1091; &amp;#1070;&amp;#1088;&amp;#1099; &amp;#1064;&amp;#1080;&amp;#1083;&amp;#1103;&amp;#1077;&amp;#1074;&amp;#1072; &amp;#1080; HTC Desire &amp;#1091; &amp;#1046;&amp;#1077;&amp;#1085;&amp;#1080; &amp;#1050;&amp;#1080;&amp;#1089;&amp;#1077;&amp;#1083;&amp;#1077;&amp;#1074;&amp;#1080;&amp;#1095;&amp;#1072;. &amp;#1046;&amp;#1076;&amp;#1072;&amp;#1090;&amp;#1100; &amp;#1095;&amp;#1091;&amp;#1076;&amp;#1077;&amp;#1089; &amp;#1085;&amp;#1072;&amp;#1076;&amp;#1086;&amp;#1077;&amp;#1083;&amp;#1086; &amp;#1080; &amp;#1103; &amp;#1090;&amp;#1072;&amp;#1082;&amp;#1080; &amp;#1074;&amp;#1079;&amp;#1103;&amp;#1083; &amp;#1087;&amp;#1086;&amp;#1089;&amp;#1083;&amp;#1077;&amp;#1076;&amp;#1085;&amp;#1080;&amp;#1081;. &lt;br /&gt;&lt;br&gt;&amp;#1041;&amp;#1088;&amp;#1072;&amp;#1091;&amp;#1079;&amp;#1077;&amp;#1088; &amp;#1079;&amp;#1076;&amp;#1077;&amp;#1089;&amp;#1100; &amp;#1093;&amp;#1086;&amp;#1088;&amp;#1086;&amp;#1096; &amp;#1080; &amp;#1087;&amp;#1086;&amp;#1095;&amp;#1090;&amp;#1080; &amp;#1089;&amp;#1087;&amp;#1088;&amp;#1072;&amp;#1074;&amp;#1083;&amp;#1103;&amp;#1077;&amp;#1090;&amp;#1089;&amp;#1103; &amp;#1089; &amp;#1072;&amp;#1076;&amp;#1084;&amp;#1080;&amp;#1085;&amp;#1082;&amp;#1086;&amp;#1081; &amp;#1073;&amp;#1083;&amp;#1086;&amp;#1075;&amp;#1075;&amp;#1077;&amp;#1088;&amp;#1072;, &amp;#1086;&amp;#1076;&amp;#1085;&amp;#1072;&amp;#1082;&amp;#1086; &amp;#1087;&amp;#1086;&amp;#1083;&amp;#1077; &amp;#1076;&amp;#1083;&amp;#1103; &amp;#1074;&amp;#1074;&amp;#1086;&amp;#1076;&amp;#1072; &amp;#1090;&amp;#1077;&amp;#1082;&amp;#1089;&amp;#1090;&amp;#1072; &amp;#1091;&amp;#1087;&amp;#1086;&amp;#1088;&amp;#1085;&amp;#1086; &amp;#1085;&amp;#1077; &amp;#1074;&amp;#1086;&amp;#1089;&amp;#1087;&amp;#1088;&amp;#1080;&amp;#1085;&amp;#1080;&amp;#1084;&amp;#1072;&amp;#1077;&amp;#1090; &amp;#1082;&amp;#1072;&amp;#1082; &amp;#1090;&amp;#1077;&amp;#1082;&amp;#1089;&amp;#1090;&amp;#1086;&amp;#1074;&amp;#1086;&amp;#1077; &amp;#1087;&amp;#1086;&amp;#1083;&amp;#1077; &amp;#1080; &amp;#1082;&amp;#1083;&amp;#1072;&amp;#1074;&amp;#1080;&amp;#1072;&amp;#1090;&amp;#1091;&amp;#1088;&amp;#1091; &amp;#1085;&amp;#1077; &amp;#1087;&amp;#1086;&amp;#1082;&amp;#1072;&amp;#1079;&amp;#1099;&amp;#1074;&amp;#1072;&amp;#1077;&amp;#1090;.&lt;br /&gt;&lt;br&gt;&amp;#1050; &amp;#1089;&amp;#1095;&amp;#1072;&amp;#1089;&amp;#1090;&amp;#1100;&amp;#1102; &amp;#1077;&amp;#1089;&amp;#1090;&amp;#1100; &amp;#1082;&amp;#1083;&amp;#1080;&amp;#1077;&amp;#1085;&amp;#1090;&amp;#1099; &amp;#1076;&amp;#1083;&amp;#1103; &amp;#1073;&amp;#1083;&amp;#1086;&amp;#1075;&amp;#1075;&amp;#1077;&amp;#1088;&amp;#1072;, &amp;#1085;&amp;#1072;&amp;#1087;&amp;#1088;&amp;#1080;&amp;#1084;&amp;#1077;&amp;#1088; Blogaway. &amp;#1041;&amp;#1077;&amp;#1079; &amp;#1087;&amp;#1086;&amp;#1085;&amp;#1103;&amp;#1090;&amp;#1080;&amp;#1103; &amp;#1082;&amp;#1072;&amp;#1082; &amp;#1090;&amp;#1091;&amp;#1090; &amp;#1074;&amp;#1089;&amp;#1090;&amp;#1072;&amp;#1074;&amp;#1080;&amp;#1090;&amp;#1100; &amp;#1089;&amp;#1089;&amp;#1099;&amp;#1083;&amp;#1082;&amp;#1091; (&amp;#1079;&amp;#1072;&amp;#1090;&amp;#1086; &amp;#1077;&amp;#1089;&amp;#1090;&amp;#1100; &amp;#1075;&amp;#1077;&amp;#1086;&amp;#1090;&amp;#1072;&amp;#1075;&amp;#1075;&amp;#1080;&amp;#1085;&amp;#1075;). &amp;#1053;&amp;#1072;&amp;#1084; &amp;#1087;&amp;#1086;&amp;#1074;&amp;#1077;&amp;#1079;&amp;#1083;&amp;#1086; - &amp;#1089;&amp;#1089;&amp;#1099;&amp;#1083;&amp;#1082;&amp;#1080; &amp;#1090;&amp;#1091;&amp;#1090; &amp;#1077;&amp;#1089;&amp;#1090;&amp;#1100;, &amp;#1085;&amp;#1086; &amp;#1076;&amp;#1086;&amp;#1073;&amp;#1072;&amp;#1074;&amp;#1083;&amp;#1103;&amp;#1102;&amp;#1090;&amp;#1089;&amp;#1103; &amp;#1090;&amp;#1086;&amp;#1083;&amp;#1100;&amp;#1082;&amp;#1086; &amp;#1074; &amp;#1082;&amp;#1086;&amp;#1085;&amp;#1077;&amp;#1094;.&lt;br /&gt;&lt;br&gt;&amp;#1054;&amp;#1073;&amp;#1097;&amp;#1080;&amp;#1077; &amp;#1074;&amp;#1087;&amp;#1077;&amp;#1095;&amp;#1072;&amp;#1090;&amp;#1083;&amp;#1077;&amp;#1085;&amp;#1080;&amp;#1103; &amp;#1086;&amp;#1095;&amp;#1077;&amp;#1085;&amp;#1100; &amp;#1093;&amp;#1086;&amp;#1088;&amp;#1086;&amp;#1096;&amp;#1080;&amp;#1077;, &amp;#1085;&amp;#1086; &amp;#1080; &amp;#1085;&amp;#1077; &amp;#1073;&amp;#1077;&amp;#1079; &amp;#1085;&amp;#1077;&amp;#1076;&amp;#1086;&amp;#1089;&amp;#1090;&amp;#1072;&amp;#1090;&amp;#1082;&amp;#1086;&amp;#1074;:&lt;br&gt;&lt;br /&gt;- &amp;#1085;&amp;#1077;&amp;#1090; &amp;#1089;&amp;#1080;&amp;#1085;&amp;#1093;&amp;#1088;&amp;#1086;&amp;#1085;&amp;#1080;&amp;#1079;&amp;#1072;&amp;#1094;&amp;#1080;&amp;#1080; &amp;#1089; exchange &amp;#1087;&amp;#1086; &amp;#1079;&amp;#1072;&amp;#1076;&amp;#1072;&amp;#1095;&amp;#1072;&amp;#1084;; &amp;#1076;&amp;#1083;&amp;#1103; &amp;#1089;&amp;#1077;&amp;#1073;&amp;#1103; &amp;#1103; &amp;#1088;&amp;#1077;&amp;#1096;&amp;#1080;&amp;#1083;, &amp;#1095;&amp;#1090;&amp;#1086; &amp;#1074; &amp;#1090;&amp;#1077;&amp;#1083;&amp;#1077;&amp;#1092;&amp;#1086;&amp;#1085;&amp;#1077; &amp;#1073;&amp;#1091;&amp;#1076;&amp;#1091; &amp;#1074;&amp;#1077;&amp;#1089;&amp;#1090;&amp;#1080; &amp;#1090;&amp;#1086;&amp;#1083;&amp;#1100;&amp;#1082;&amp;#1086; &amp;#1083;&amp;#1080;&amp;#1095;&amp;#1085;&amp;#1099;&amp;#1077; &amp;#1079;&amp;#1072;&amp;#1076;&amp;#1072;&amp;#1095;&amp;#1080; - &amp;#1086;&amp;#1085;&amp;#1086; &amp;#1080; &amp;#1091;&amp;#1076;&amp;#1086;&amp;#1073;&amp;#1085;&amp;#1077;&amp;#1077;, &amp;#1085;&amp;#1077; &amp;#1073;&amp;#1091;&amp;#1076;&amp;#1091;&amp;#1090; &amp;#1087;&amp;#1091;&amp;#1090;&amp;#1072;&amp;#1090;&amp;#1100;&amp;#1089;&amp;#1103; &amp;#1088;&amp;#1072;&amp;#1073;&amp;#1086;&amp;#1095;&amp;#1080;&amp;#1077; &amp;#1076;&amp;#1077;&amp;#1083;&amp;#1072; &amp;#1089; &amp;#1076;&amp;#1086;&amp;#1084;&amp;#1072;&amp;#1096;&amp;#1085;&amp;#1080;&amp;#1084;&amp;#1080;;&lt;br&gt;&lt;br /&gt;- &amp;#1085;&amp;#1077;&amp;#1090; &amp;#1089;&amp;#1082;&amp;#1072;&amp;#1081;&amp;#1087;&amp;#1072;. &amp;#1090;&amp;#1086; &amp;#1077;&amp;#1089;&amp;#1090;&amp;#1100; &amp;#1086;&amp;#1085; &amp;#1073;&amp;#1099;&amp;#1083;, &amp;#1085;&amp;#1086; &amp;#1090;&amp;#1077;&amp;#1087;&amp;#1077;&amp;#1088;&amp;#1100; &amp;#1077;&amp;#1075;&amp;#1086; &amp;#1085;&amp;#1077; &amp;#1089;&amp;#1090;&amp;#1072;&amp;#1083;&amp;#1086; - &amp;#1082;&amp;#1083;&amp;#1080;&amp;#1077;&amp;#1085;&amp;#1090; fring &amp;#1079;&amp;#1072;&amp;#1073;&amp;#1083;&amp;#1086;&amp;#1082;&amp;#1080;&amp;#1088;&amp;#1086;&amp;#1074;&amp;#1072;&amp;#1085; &amp;#1089;&amp;#1082;&amp;#1072;&amp;#1081;&amp;#1087;&amp;#1086;&amp;#1084;, &amp;#1072; &amp;#1082;&amp;#1083;&amp;#1080;&amp;#1077;&amp;#1085;&amp;#1090; &amp;#1086;&amp;#1090; &amp;#1089;&amp;#1082;&amp;#1072;&amp;#1081;&amp;#1087;&amp;#1072; &amp;#1090;&amp;#1077;&amp;#1087;&amp;#1077;&amp;#1088;&amp;#1100; &amp;#1076;&amp;#1086;&amp;#1089;&amp;#1090;&amp;#1091;&amp;#1087;&amp;#1077;&amp;#1085; &amp;#1090;&amp;#1086;&amp;#1083;&amp;#1100;&amp;#1082;&amp;#1086; &amp;#1072;&amp;#1073;&amp;#1086;&amp;#1085;&amp;#1077;&amp;#1085;&amp;#1090;&amp;#1072;&amp;#1084; verizon (&amp;#1087;&amp;#1088;&amp;#1080;&amp;#1095;&amp;#1077;&amp;#1084; &amp;#1086;&amp;#1085; &amp;#1085;&amp;#1077; &amp;#1088;&amp;#1072;&amp;#1073;&amp;#1086;&amp;#1090;&amp;#1072;&amp;#1077;&amp;#1090; &amp;#1087;&amp;#1086; WiFi, &amp;#1073;&amp;#1086;&amp;#1083;&amp;#1077;&amp;#1077; &amp;#1090;&amp;#1086;&amp;#1075;&amp;#1086; &amp;#1088;&amp;#1072;&amp;#1085;&amp;#1100;&amp;#1096;&amp;#1077; &amp;#1086;&amp;#1085; WiFi &amp;#1089;&amp;#1086;&amp;#1077;&amp;#1076;&amp;#1080;&amp;#1085;&amp;#1077;&amp;#1085;&amp;#1080;&amp;#1077; &amp;#1085;&amp;#1072;&amp;#1084;&amp;#1077;&amp;#1088;&amp;#1077;&amp;#1085;&amp;#1085;&amp;#1086; &amp;#1088;&amp;#1074;&amp;#1072;&amp;#1083;); &amp;#1101;&amp;#1090;&amp;#1086; &amp;#1075;&amp;#1088;&amp;#1091;&amp;#1089;&amp;#1090;&amp;#1085;&amp;#1086;, &amp;#1082;&amp;#1086;&amp;#1075;&amp;#1076;&amp;#1072; &amp;#1078;&amp;#1072;&amp;#1076;&amp;#1085;&amp;#1086;&amp;#1089;&amp;#1090;&amp;#1100; &amp;#1076;&amp;#1086;&amp;#1074;&amp;#1086;&amp;#1076;&amp;#1080;&amp;#1090; &amp;#1083;&amp;#1102;&amp;#1076;&amp;#1077;&amp;#1081; &amp;#1076;&amp;#1086; &amp;#1085;&amp;#1077;&amp;#1072;&amp;#1076;&amp;#1077;&amp;#1082;&amp;#1074;&amp;#1072;&amp;#1090;&amp;#1072;.&lt;br /&gt;&lt;br&gt;&amp;#1053;&amp;#1086; &amp;#1074; &amp;#1083;&amp;#1102;&amp;#1073;&amp;#1086;&amp;#1084; &amp;#1089;&amp;#1083;&amp;#1091;&amp;#1095;&amp;#1072;&amp;#1077; - &amp;#1076;&amp;#1091;&amp;#1084;&amp;#1072;&amp;#1102; &amp;#1078;&amp;#1076;&amp;#1072;&amp;#1090;&amp;#1100; Windows phone 7 &amp;#1077;&amp;#1097;&amp;#1077; &amp;#1076;&amp;#1086;&amp;#1083;&amp;#1075;&amp;#1086; (&amp;#1103; &amp;#1085;&amp;#1077; &amp;#1087;&amp;#1088;&amp;#1086; &amp;#1088;&amp;#1077;&amp;#1083;&amp;#1080;&amp;#1079;, &amp;#1103; &amp;#1087;&amp;#1088;&amp;#1086; &amp;#1090;&amp;#1086;&amp;#1090; &amp;#1084;&amp;#1086;&amp;#1084;&amp;#1077;&amp;#1085;&amp;#1090;, &amp;#1082;&amp;#1086;&amp;#1075;&amp;#1076;&amp;#1072; &amp;#1087;&amp;#1086;&amp;#1092;&amp;#1080;&amp;#1082;&amp;#1089;&amp;#1103;&amp;#1090; &amp;#1074;&amp;#1089;&amp;#1077; &amp;#1073;&amp;#1072;&amp;#1075;&amp;#1080;), &amp;#1087;&amp;#1086;&amp;#1101;&amp;#1090;&amp;#1086;&amp;#1084;&amp;#1091; &amp;#1087;&amp;#1086;&amp;#1082;&amp;#1072; &amp;#1089;&amp;#1086;&amp;#1074;&amp;#1077;&amp;#1090;&amp;#1091;&amp;#1102; &amp;#1040;&amp;#1085;&amp;#1076;&amp;#1088;&amp;#1086;&amp;#1080;&amp;#1076;.&lt;br /&gt;&lt;br&gt;&lt;a href="http://www.google.com.by/m/url?ei=SmeaTOCbFoS7jQfrx4LBAw&amp;q=http://www.fring.com/blog/?p%3D2322&amp;ved=0CAYQFjAA&amp;usg=AFQjCNEUG0TQqq2yiey-aGVlaLVNWQLlyQ"&gt;Skype cowardly blocks fring&lt;/a&gt;&amp;#160;&lt;br&gt;&lt;br /&gt;&lt;a href="http://yuri.shilyaev.com/"&gt;&amp;#1070;&amp;#1088;&amp;#1072; &amp;#1064;&amp;#1080;&amp;#1083;&amp;#1103;&amp;#1077;&amp;#1074;&lt;/a&gt;&amp;#160;&lt;br /&gt;&lt;br/&gt;&lt;font size="1"&gt;&lt;b&gt;Location : &lt;/b&gt;&lt;a href="http://maps.google.com/maps?q=53.9527731,27.6892558"&gt;ул. Острошицкая, Минск, &lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-2245387312052651147?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/2245387312052651147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/09/android-infected.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/2245387312052651147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/2245387312052651147'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/09/android-infected.html' title='Android Infected'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-8965111858289921226</id><published>2010-09-19T02:43:00.000+03:00</published><updated>2011-04-20T18:33:51.120+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='EPAM'/><title type='text'>560 новых читателей в Национальной Библиотеке</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hTFMi0z5W-c/TJVLBoyoTYI/AAAAAAAABKc/dgsCymbzYFk/s1600/41057_466461194362_588819362_6528122_4321671_n.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" qx="true" src="http://2.bp.blogspot.com/_hTFMi0z5W-c/TJVLBoyoTYI/AAAAAAAABKc/dgsCymbzYFk/s320/41057_466461194362_588819362_6528122_4321671_n.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;В &lt;a href="http://www.facebook.com/EPAM.Systems"&gt;EPAM&lt;/a&gt;&amp;nbsp;работают много книголюбов, и, наверное, именно поэтому очередная конференция EPAM Thomson Reuters состоялась в &lt;a href="http://www.nlb.by/"&gt;Национальной Библиотеке&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Это уже пятая конференция.&amp;nbsp;За пять лет&amp;nbsp;к названию конференции&amp;nbsp;добавилось слово Thomson (&lt;a href="http://dealbook.blogs.nytimes.com/2007/05/15/thomson-and-reuters-agree-to-17-billion-merger/"&gt;наш заказчик стал крупнее&lt;/a&gt;) и из него выпало слово Developers,&amp;nbsp;ведь продукты делаются совместными усилиями бизнес-аналитиков, специалистов по качеству, производительности, интеграции, а также разработчиков и их менеджеров. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Говорят, что&amp;nbsp;в этот раз в конференции участвовало на ~200 человек больше, чем в прошлой, поэтому вновь возникла проблема масштабов и пришлось двигаться в здание покрупнее. Скажем так, хоть библиотека и справилась с наплывом айтишников, но мне казалось, что будет посвободнее.&lt;br /&gt;&lt;br /&gt;В этот раз я участвовал в конференции с активной позиции -&amp;nbsp;два доклада по CI, круглый стол по Agile, плюс пару слов о proof of concept, который мы недавно делали на .NET 4.0. Про последнее рассказывал в основном зале перед аудиторией ~500-600 человек и очень рад тому, что&amp;nbsp;масштабы уже совсем не пугают (ну, может быть, только чуть-чуть).&lt;br /&gt;&lt;br /&gt;Из-за такого активного участия удалось побывать только&amp;nbsp;на одной секции в качестве слушателя,&amp;nbsp;поэтому приходится полагаться на мнение других участников. А по рассказам было много&amp;nbsp;всего хорошего&amp;nbsp;-&amp;nbsp;коммуникации с заказчиком, вопросы производительности, мобильные приложения - есть что поизучать в оффлайне. &lt;br /&gt;&lt;br /&gt;Из неожиданного:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Подходили незнакомые ребята и говорили спасибо за выступление; что тут сказать, доброе слово и собаке приятно :)&lt;/li&gt;&lt;li&gt;Подарили&amp;nbsp;&lt;a href="http://boingboing.net/2007/10/25/blogging-heroes-new.html"&gt;Blogging Heroes : Interviews with 30 of the World's Top Bloggers&lt;/a&gt;&amp;nbsp;с пожеланиями увидеть меня в следующем&amp;nbsp;издании. Уже прочитал первое интервью&amp;nbsp;с &lt;a href="http://askdavetaylor.com/"&gt;askdavetaylor.com&lt;/a&gt; -&amp;nbsp;похоже, придется поднажать, у него миллион посетителей в месяц :)&lt;/li&gt;&lt;/ul&gt;Afterparty прошел в клубе Broadway/Bronx, где &lt;a href="http://www.linkedin.com/in/martinasencio"&gt;Мартин&lt;/a&gt; давал уже традиционные уроки меренги, а с &lt;a href="http://www.linkedin.com/pub/arkadiy-dobkin/0/22/907"&gt;Аркадием&lt;/a&gt; можно было запросто пообщаться. Целый вечер драйв поддерживали ребята из &lt;a href="http://www.graffiti.by/tag/artefact/"&gt;Artefact&lt;/a&gt;, за что им респект и уважуха.&amp;nbsp;В общем, отлично провели время, только пиво закончилось слишком рано :)&lt;br /&gt;&lt;br /&gt;P.S. А &lt;a href="http://www.nlb.by/portal/page/portal/index/content?lang=ru&amp;amp;classId=9F5C9D6B574145129B58992AC85F7635"&gt;записаться&lt;/a&gt;&amp;nbsp;в библиотеку можно любому :) Правда, без ученой степени читать придется в читальном зале.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-8965111858289921226?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/8965111858289921226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/09/560.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8965111858289921226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8965111858289921226'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/09/560.html' title='560 новых читателей в Национальной Библиотеке'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hTFMi0z5W-c/TJVLBoyoTYI/AAAAAAAABKc/dgsCymbzYFk/s72-c/41057_466461194362_588819362_6528122_4321671_n.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-2732915111658014914</id><published>2010-09-10T00:54:00.000+03:00</published><updated>2011-04-20T18:33:51.122+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='IT'/><category scheme='http://www.blogger.com/atom/ns#' term='Паттерны'/><title type='text'>JavaScript - есть и хорошие стороны</title><content type='html'>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://4.bp.blogspot.com/_hTFMi0z5W-c/TIlSJNOYpZI/AAAAAAAABKI/rKX0mXGJVHE/s1600/javascript2.jpg" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="120" ox="true" src="http://4.bp.blogspot.com/_hTFMi0z5W-c/TIlSJNOYpZI/AAAAAAAABKI/rKX0mXGJVHE/s200/javascript2.jpg" width="200" /&gt;&lt;/a&gt;JS такой загадочный язык, который никто не учит, однако все на нем программируют. Я не исключение, но я чувствую себя некомфортно, когда не понимаю, по каким правилам мне приходиться играть. &lt;/div&gt;&lt;br /&gt;Скопипастив очередной кусок JS, я вспомнил слова Мартина Фаулера (&lt;a href="http://www.infoq.com/interviews/fowler-caroli-continuous-deployment"&gt;интересное интервью&lt;/a&gt; - хоть посмотрите, как он выглядит), что для расширения кругозора надобно учить хотя бы по одному новому языку в год. Полиглоты, называет он таких программистов :) Я же подумал - надоело мне мучаться с JS, хочу научиться писать на нем нормально.&lt;br /&gt;&lt;br /&gt;В общем, я чуть-чуть попытался разобраться (ниже со ссылками), по-моему, очень даже интересно.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Сначала я решил посмотреть, что у нас есть из почитать. Две наиболее советуемые книги по JavaScript это:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.ru/url?sa=t&amp;amp;source=web&amp;amp;cd=3&amp;amp;ved=0CCUQFjAC&amp;amp;url=http%3A%2F%2Fwww.amazon.com%2FJavaScript-Definitive-Guide-David-Flanagan%2Fdp%2F0596000480&amp;amp;ei=0lOJTKmtIIqKONm-6MMO&amp;amp;usg=AFQjCNGs-ojUWdy5Z3PkMIwF0I_S84nbVQ"&gt;JavaScript: The Definitive Guide by David Flanagan&lt;/a&gt;&lt;br /&gt;и&lt;br /&gt;&lt;a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742"&gt;JavaScript: The Good Parts by Douglas Crockford&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я, конечно, серьезно думал их прочитать, но для начала решил найти что-нибудь попроще. Я люблю лекции и вуаля:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://video.yahoo.com/watch/111593"&gt;Douglas Crockford: "The JavaScript Programming Language"/1 of 4&lt;/a&gt;&lt;br /&gt;&lt;a href="http://video.yahoo.com/watch/111594/1710553"&gt;Douglas Crockford: "The JavaScript Programming Language"/2 of 4&lt;/a&gt;&lt;br /&gt;&lt;a href="http://video.yahoo.com/watch/111595/1710607"&gt;Douglas Crockford: "The JavaScript Programming Language"/3 of 4&lt;/a&gt;&lt;br /&gt;&lt;a href="http://video.yahoo.com/watch/111596/1710658"&gt;Douglas Crockford: "The JavaScript Programming Language"/4 of 4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ребята, книжки, скорее всего очень даже хорошие, но видео я вам советую, потому что сам посмотрел и остался доволен - всего 2 часа, но основные моменты разложены очень хорошо, а JS стал как-то роднее, понятнее, и главное, мне он теперь в чем-то нравится.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hTFMi0z5W-c/TIlR2alzTfI/AAAAAAAABKA/iU1b6C_y1uY/s1600/crockford-json-20090811-103121.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://4.bp.blogspot.com/_hTFMi0z5W-c/TIlR2alzTfI/AAAAAAAABKA/iU1b6C_y1uY/s320/crockford-json-20090811-103121.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;К слову, &lt;a href="http://en.wikipedia.org/wiki/Douglas_Crockford"&gt;Дуглас Крокфорд&lt;/a&gt;, как выясняется, интересный товарищ.&amp;nbsp;В частности, он придумал&amp;nbsp;&lt;a href="http://www.json.org/fatfree.html"&gt;JSON&lt;/a&gt;&amp;nbsp;- ныне очень популярный формат (AJAX, например, это часто не Async JS and XML, а Asynch JS and JSON, просто потому что последний обычно компактнее, а значит быстрее).&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Так вот, после просмотра лекций Дугласа выяснилось, что&amp;nbsp;в JS есть не мало интересных моментов (те самые The Good Parts), я упомяну лишь то, что, к примеру:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Там не нужны классы, однако ООП вполне там работает&lt;/li&gt;&lt;li&gt;Паттерн &lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)"&gt;Prototype&lt;/a&gt; - это основа наследования JS и часть языка&lt;/li&gt;&lt;li&gt;В JS Reflection - это приятно; объект - это коллекция свойств и функций, по которым можно итерироваться&lt;/li&gt;&lt;li&gt;Лямбда-функции, которые в C# появились не так давно, в JS существуют с самого начала (про Java давайте не будем вспоминать, closures вроде там до сих пор только обсуждают - поправьте меня, если я не прав)&lt;/li&gt;&lt;li&gt;Паттерн &lt;a href="http://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%BA%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8"&gt;Decorator&lt;/a&gt; нужен в C# и Java всего лишь из-за ограничений этих языков&lt;/li&gt;&lt;/ul&gt;После этих лекций, например, становится понятно, почему в JS в функцию можно добавить свойство и зачем это нужно. Скажу я вам - до просмотра этого видео такие ходы в JS кажутся какой-то дикой несуразицей. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Однако, понятно и то, что даже не смотря на очень интересные особенности языка, он никогда не станет почитаемым языком по той же причине, почему &lt;a href="http://bolknote.ru/2010/09/04/~2693"&gt;п&lt;span id="goog_569418671"&gt;&lt;/span&gt;рограммисты стесняются знания PHP&lt;span id="goog_569418672"&gt;&lt;/span&gt;&lt;/a&gt;. Слишком много людей пишет на JS, не удосужившись его изучить, как следствие, производя на свет божий что-то, что никак не соответствует духу JS. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Но это еще полбеды.&amp;nbsp;Девушка из&amp;nbsp;комментов ко второй части&amp;nbsp;лекции сразила меня наповал:&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;blockquote&gt;This is really indepth. I am not sure half the time what is he talking about. Maybe more simplified examples would help..&lt;/blockquote&gt;Так что, видимо, JavaScript обречен так и остаться непонятым&amp;nbsp;:)&amp;nbsp;Похоже, тут даже наличие попытки изучить ситуации не исправит.&lt;br /&gt;&lt;br /&gt;P.S. Там же на Yahoo Video есть лекции Крокфорда по DOM, найдете по ссылкам в Related сами - тоже интересно, особенно его комментарии, как так получилось, что во всех браузерах все по разному. Кстати, видео 2006, а очередной виток войны браузеров он предсказал четко, правда, про Chrome тогда еще не знал.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-2732915111658014914?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/2732915111658014914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/09/javascript.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/2732915111658014914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/2732915111658014914'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/09/javascript.html' title='JavaScript - есть и хорошие стороны'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hTFMi0z5W-c/TIlSJNOYpZI/AAAAAAAABKI/rKX0mXGJVHE/s72-c/javascript2.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-4252915623954003935</id><published>2010-09-01T21:42:00.002+03:00</published><updated>2011-04-20T18:33:51.123+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Паттерны'/><title type='text'>Singleton in .NET 4 - вопрос снят?</title><content type='html'>Так как у нас на проекте есть открытые вакансии, то приходится активно участвовать в собеседованиях джаверов. В связи с этим хочется поделиться мыслями по одному из часто задаваемых вопросов - &lt;a href="http://habrahabr.ru/blogs/complete_code/27108/"&gt;многопоточная реализация Singleton&lt;/a&gt;. Не смотря на то, что уже много копий сломано и много написано, редко когда удается услышать четкий и правильный ответ.&lt;br /&gt;&lt;br /&gt;С моей точки зрения этот вопрос не&amp;nbsp;так уж много показывает&amp;nbsp;(скажем так, он кажется обманчиво интересным), но&amp;nbsp;ответы на сопутствующие вопросы (более интересные)&amp;nbsp;сами его провоцируют. Например, на вопрос "Какие вы знаете шаблоны проектирования", ответ обычно начинается с "Singleton, Factory..." &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;К сожалению, несмотря на то, что &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns_(book)"&gt;GoF&lt;/a&gt; имеет успех уже на протяжении более 15 лет, достаточно часто ответ на этом заканчивается. Кстати, на второй часто задаваемый вопрос "Чем отличается &lt;a href="http://en.wikipedia.org/wiki/Factory_pattern"&gt;Factory&lt;/a&gt; от &lt;a href="http://en.wikipedia.org/wiki/Abstract_factory_pattern"&gt;Abstract Factory&lt;/a&gt;" ответ дается еще реже.&lt;br /&gt;&lt;br /&gt;Но&amp;nbsp;давайте разберемся, стоит ли начинать ответ с Singleton? Наверное, не стоит. Вообще, многие считают, что &lt;a href="http://www.google.com.by/#hl=ru&amp;amp;source=hp&amp;amp;q=singleton+antipattern&amp;amp;aq=0&amp;amp;aqi=g1&amp;amp;aql=&amp;amp;oq=singleton+ant&amp;amp;gs_rfai=&amp;amp;fp=3cafcec4337526f8"&gt;Singleton - это anti-pattern&lt;/a&gt;. И в любом случае, Singleton - это далеко не самый интересный шаблон проектирования.&lt;br /&gt;&lt;br /&gt;Что также хочется отметить, обычно просят реализовать просто Singleton, не упоминая&amp;nbsp;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F"&gt;ленивую инициализацию&lt;/a&gt;, однако почему-то на доске очень часто появляется &lt;a href="http://ru.wikipedia.org/wiki/Double_checked_locking"&gt;double checked locking&lt;/a&gt;. Это плохой стереотип - все так делают, значит, так нужно.&amp;nbsp;В реальной жизни&amp;nbsp;ленивая инициализация чаще всего не требуется, а еще чаще стоимость многопоточной реализации Singleton (потому что у дополнительной синхронизации есть стоимость) превышает экономию на отложенной инициализации.&lt;br /&gt;&lt;br /&gt;Так вот, к чему это я все? :) Проблема настолько избита, что в .NET 4.0 ввели специальный класс, который наконец-то дает нам out-of-the-box реализацию, -&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/dd642331.aspx"&gt;Lazy&lt;t&gt;&lt;t&gt;&lt;/a&gt;,&amp;nbsp;и реализация значительно упрощается:&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; LazySingleton&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: green;"&gt;// static holder for instance, need to use lambda to construct since constructor private&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;readonly&lt;/span&gt; Lazy&amp;lt;LazySingleton&amp;gt; _instance&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         = &lt;span style="color: blue;"&gt;new&lt;/span&gt; Lazy&amp;lt;LazySingleton&amp;gt;(() =&amp;gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; LazySingleton());&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;  &lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: green;"&gt;// private to prevent direct instantiation.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: blue;"&gt;private&lt;/span&gt; LazySingleton()&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;  &lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: green;"&gt;// accessor for instance&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; LazySingleton Instance&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         get&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;             &lt;span style="color: blue;"&gt;return&lt;/span&gt; _instance.Value;&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Всё, готово. Код честно взят &lt;a href="http://geekswithblogs.net/BlackRabbitCoder/archive/2010/05/19/c-system.lazylttgt-and-the-singleton-design-pattern.aspx"&gt;отсюда&lt;/a&gt;. Кстати, заметьте, что код на самом-то деле глупость - у нас пустой конструктор, откладывать его исполнение за счет дополнительных синхронизаций бессмысленно.&lt;br /&gt;&lt;br /&gt;Чуть побольше про ленивую инициализацию и Lazy&lt;t&gt;&amp;nbsp;можно почитать на MSDN &lt;a href="http://msdn.microsoft.com/en-us/library/dd997286.aspx"&gt;здесь&lt;/a&gt;. Есть и на &lt;a href="http://msdn.microsoft.com/ru-ru/library/dd997286.aspx"&gt;русском&lt;/a&gt;, но поверьте, оно вам на таком русском не нужно.&lt;br /&gt;&lt;br /&gt;И вот казалось бы, одним вопросом для дотнетчиков меньше. Но что-то у меня есть подозрения, что вопрос еще какое-то время побудет актуальным&amp;nbsp;:) Как считаете?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-4252915623954003935?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/4252915623954003935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/09/singleton-in-net-4.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4252915623954003935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4252915623954003935'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/09/singleton-in-net-4.html' title='Singleton in .NET 4 - вопрос снят?'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-8332995012515799589</id><published>2010-08-28T12:10:00.000+03:00</published><updated>2011-04-20T18:33:51.124+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>GTD и TDD</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hTFMi0z5W-c/THa5kbchJTI/AAAAAAAABJo/aB3v8HgcWOA/s1600/tdd.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://3.bp.blogspot.com/_hTFMi0z5W-c/THa5kbchJTI/AAAAAAAABJo/aB3v8HgcWOA/s320/tdd.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Вот вы думаете зря что ли в&amp;nbsp;&lt;a href="http://www.shcoder.by/search/label/TDD"&gt;TDD&lt;/a&gt; и &lt;a href="http://lifeidea.org/2006/11/getting-things-done/"&gt;GTD&lt;/a&gt; две буквы из трех одинаковые? Вы еще, наверное, думаете, что TDD - это когда тесты пишут перед реализацией.&lt;br /&gt;&lt;br /&gt;Дело в том, что нужно быстро взять и прочитать &lt;a href="http://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530"&gt;TDD by Example&lt;/a&gt; Кента Бека и все сразу станет на место - не может ведь быть, что 240 страниц текста посвящено только test first принципу.&lt;br /&gt;&lt;br /&gt;Не может быть&amp;nbsp;и не есть. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Кент, например, рассказывает нам, что основной принцип TDD - это движение маленькими шажками. При решении какой-то задачи, он предлагает записать её на листик (ну, в VS есть настоящий to do list, такой же как и в Outlook) и прикинуть, понятно ли как решить задачу&amp;nbsp;прямо сейчас. Если нет, то&amp;nbsp;подумать, какой шаг может нас приблизить к решению основной проблемы. Таким образом он предлагает идти рекурсивно до первой простейшей атомарной задачи, которую мы и возьмем для реализации. &lt;br /&gt;&lt;br /&gt;Далее предлагается написать тест для этой задачи и прогнать его, чтобы убедиться, что он падает. Помимо чисто психологического аспекта, как показывает практика (вы будете смеяться), есть и практическая польза&amp;nbsp;- иногда тест&amp;nbsp;не падает. &lt;br /&gt;&lt;br /&gt;Справившись наконец с такой простейшей задачей как падающий тест, следующим шагом нам&amp;nbsp;требуется написать реализацию максимально простым способом. То есть сделать тест зеленым как можно быстрее - это раз, и делая только то, что необходимо для теста - это два. &lt;br /&gt;&lt;br /&gt;Более того, если во время реализации пришла какая-то супер-идея как сделать что-то лучше, то&amp;nbsp;мы не отвлекаемся, а просто вносим её в наш to do list.&amp;nbsp;Это важно, мы выгружаем её из мозга, чтобы она&amp;nbsp;не мешалась у нас под ногами и не мешала нам сконцентрироваться над текущей задачей.&lt;br /&gt;&lt;br /&gt;После реализации теста, мы можем поставить зеленую галочку в нашем to do list, что, &lt;a href="http://www.shcoder.by/2010/08/blog-post_22.html"&gt;как мы уже знаем&lt;/a&gt;, несет в себе позитивный мотивирующий заряд и дает нам ощущение здорового прогресса.&lt;br /&gt;&lt;br /&gt;Причем, стоит особо отметить, - не будь у нас зеленого теста (или теста вообще), мы бы не были на 100% уверены в завершенности задачи.&amp;nbsp;А точнее мы бы на 99% процентов были уверены, что первый запуск выдаст нам парочку-другую -&amp;nbsp;а может и больше - непростых ошибок. &lt;br /&gt;&lt;br /&gt;И ведь часто мы знаем, где может крыться проблема, потому что не уверены, как работает какой-то метод фреймворка, который мы впервые используем. Эта неуверенность нас бы постоянно отвлекала, снижая концентрацию и производительность, не напиши мы сразу тест. &lt;br /&gt;&lt;br /&gt;Более того, следующим шагом является небольшая порция рефакторинга, то есть мы причесываем наш код и делаем его чистым и красивым, - несомненный мотивирующий фактор для здорового программиста. &lt;br /&gt;&lt;br /&gt;Мы не боимся что-то поломать, потому что если возникает проблема, то тесты, которые мы написали ранее, сразу дадут нам знать&amp;nbsp;об этом. &amp;nbsp;Мы не забываем, что 80% времени программист читает код, а не пишет, поэтому постоянный рефакторинг - это эффективный способ увеличить производительность нашу и наших коллег.&lt;br /&gt;&lt;br /&gt;Итак,&amp;nbsp;после&amp;nbsp;разумной порции рефакторинга, мы можем браться за следующую задачу&amp;nbsp;- мы пересматриваем наш to do list, а вдруг какие-то из ранее записанных задач уже понятно как решать буквально с первого взгляда. Если да, то беремся и решаем. Если нет, то мы продолжаем разбивать проблему на маленькие кусочки, выходя на элементарные задачи, которые мы можем решить сходу. И так&amp;nbsp;до тех пор, пока ранее записанная проблема сама не станет одной из таких элементарных задач.&lt;br /&gt;&lt;br /&gt;В результате, мы все время движемся маленькими шагами и при каждом очередном зеленом тесте получаем тот необходимый нам импульс "Фуух, сделал!", мотивирующий нас на движение вперед, и, в то же время, не забываем удовлетворять наше чувство прекрасного, уделяя время на правильную структуризацию кода (рефакторинг). Мы делаем только то, что необходимо для прогресса, максимально простым и быстрым способом. Мы уверены в будущем и не боимся, что слишком простая реализация может не удовлетворять всем нашим потребностям в будущем - код легко читать и менять, а тесты застрахуют нас от ошибок.&lt;br /&gt;&lt;br /&gt;Господа, это и есть принципы Getting Things Done, адаптированные к программированию, то есть TDD - это и есть, не побоюсь громких слов, эффективная&amp;nbsp;система time management для разработчиков. &lt;br /&gt;&lt;br /&gt;И помните, &lt;a href="http://www.slideshare.net/wakaleo/real-developers-dont-need-unit-tests"&gt;только настоящим пацанам не нужны тесты&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-8332995012515799589?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/8332995012515799589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/08/gtd-tdd.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8332995012515799589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/8332995012515799589'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/08/gtd-tdd.html' title='GTD и TDD'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hTFMi0z5W-c/THa5kbchJTI/AAAAAAAABJo/aB3v8HgcWOA/s72-c/tdd.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-4021673748376750712</id><published>2010-08-22T21:43:00.008+03:00</published><updated>2011-04-20T18:33:51.125+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>Мозг и ночные бдения</title><content type='html'>Макс Дорофеев опубликовал интересный slide cast (&lt;a href="http://cartmendum.livejournal.com/tag/gtd"&gt;полная версия&lt;/a&gt;), в частности мне понравились размышления про мозг и то, как он (мозг) воспринимает задачи, рекомендую:&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_4902647" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0px 4px;"&gt;&lt;a href="http://www.slideshare.net/Cartmendum/gtd-dev-labs2010-part-i" title="Gtd Dev Labs2010 Part I"&gt;Gtd Dev Labs2010 Part I&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse4902647" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gtddevlabs2010parti-100804140213-phpapp02&amp;stripped_title=gtd-dev-labs2010-part-i" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse4902647" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=gtddevlabs2010parti-100804140213-phpapp02&amp;stripped_title=gtd-dev-labs2010-part-i" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;webinars&lt;/a&gt; from &lt;a href="http://www.slideshare.net/Cartmendum"&gt;Maxim Dorofeev&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;Идея проста и не нова (просто изложение забавное) – если мы ставим задачи в очередь, пытаясь их запомнить, то они довлеют над нами и постоянно всплывают, отвлекают от текущей работы и нервируют. Самый простой способ – это не держать эти задачи в голове, а записать их куда-нибудь, выгрузить куда-нибудь из своего мозга. &lt;br /&gt;&lt;br /&gt;Когда под рукой есть Outlook, то все просто, но у меня вот иногда такое ночью бывает. Приходит в голову идея, и пытаешься её «не забыть». Она тебя теребит, мешает заснуть, и тут приходит вторая идея. Мозг все больше не спит, накапливается критичиская масса идей, которые нужно не забыть, ведь неплохие идеи :) Все, сон потерян, и нужно что-то делать, чтобы не проснуться завтра с больной головой. &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/933369614249771220-4021673748376750712?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/4021673748376750712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/08/blog-post_22.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4021673748376750712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4021673748376750712'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/08/blog-post_22.html' title='Мозг и ночные бдения'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-4660972600668876053</id><published>2010-08-19T17:21:00.004+03:00</published><updated>2011-04-20T18:33:51.125+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Отпуск'/><title type='text'>Дикарем в Черногорию?</title><content type='html'>Немного технических деталей про организацию поездки в Черногорию. &lt;br /&gt;&lt;br /&gt;Мы воспользовались услугами&amp;nbsp;&lt;a href="http://airtravel.by/"&gt;Аэротрэвел&lt;/a&gt; и отдыхали на вилле &lt;a href="http://www.monteroyale.com/ru/"&gt;Monte Royale&lt;/a&gt;&amp;nbsp;в Будве. У EPAM Systems есть 5-процентная скидка на услуги &lt;a href="http://airtravel.by/"&gt;Аэротрэвел&lt;/a&gt; и мы ей успешно воспользовались. &lt;br /&gt;&lt;br /&gt;На этом, к сожалению, список плюсов Аэротрэвел для нас закончился. Как и многих других туристических агентств - видимо, лучше ехать "дикарем".&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Где-то правильно слышал, что задача туристических агентств – это в первую очередь предоставление информации. О странах, отелях, билетах и т.п. Консультации, которые мы получили, были невнятными и давались как бы не хотя, более того, нас просто-напросто по некоторым пунктам дезинформировали. Всемирная паутина дает гораздо больше возможностей.&lt;br /&gt;&lt;br /&gt;Про отель рассказали очень скудно – открыли уже знакомый сайт &lt;a href="http://www.monteroyale.com/ru/"&gt;monteroyale.com&lt;/a&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;span id="goog_1653410068"&gt;&lt;/span&gt;&lt;span id="goog_1653410069"&gt;&lt;/span&gt;, показали фотографии и на этом почти все. Нас это слегка разочаровало, так как мы рассчитывали, что расскажут что-то более интересное, чем скудная информация, доступная на сайте, который мы, кстати, уже посетили и без их помощи.&lt;br /&gt;&lt;br /&gt;На вопрос, есть ли в номере интернет, долго думали, потом сказали – да, есть. Потом совещались, интернет кабельный или беспроводной. Вроде сошлись, что беспроводной и уже уверенно говорили, что да, точно есть и даже wi-fi. Обсудили балкон и то, что он, конечно же, есть, и что виды будут чуть получше, чем в другой вилле. С коляской обещали, что до пляжа добираться будет минут 5 и все будет хорошо.&lt;br /&gt;&lt;br /&gt;Ну, интернет был, но не в нашем номере – до нашего номера он не добивал. Балкона не было, причем в контракте был явно указан конкретный номер (studio 2), который и был без балкона. Хозяин виллы так и сказал, что они там в агентстве были в курсе. До пляжа – ну, 10 минут, если повезет, причем с коляской было далеко не просто. &lt;br /&gt;&lt;br /&gt;N.B. Вилла, однако, нам в целом понравилась. После общения с хозяином, он предложил другой номер с балконом, но надо было два раза переезжать (был свободен не на весь период), поэтому решили не дергаться, тем более, что&amp;nbsp;нам организовали общий балкон, коим мы и пользовались время от времени.&lt;br /&gt;&lt;br /&gt;Пользуясь случаем, написал&amp;nbsp;в Aэротрэвел&amp;nbsp;письмо по адресу, указанному на сайте. Как и следовало ожидать, ответа не последовало. Не знаю, поеду ли к ним писать жалобу, в принципе, просто не хочется еще раз портить настроение. В конце концов, деньги они мне возвращать не будут.&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;br /&gt;В &lt;a href="http://momstipsandtricks.blogspot.com/2010/06/4.html"&gt;Литву мы ездили на своей&lt;/a&gt;, и ни разу не пожалели. Номер нам достался офигительный, с балконом, на котором можно было играть в футбол. Причем, сначала нам предлагали за те же деньги номер значительно хуже (и если бы мы приехали по путевке, то почти уверен – там бы мы и жили). &lt;br /&gt;&lt;br /&gt;В общем, в следующий раз (если он будет), я поступлю таким образом*:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Куплю только билеты (все-таки, придется идти в турфирму, ибо &lt;a href="http://www.google.ru/search?hl=ru&amp;amp;newwindow=1&amp;amp;q=define%3A+%D1%87%D0%B0%D1%80%D1%82%D0%B5%D1%80&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=&amp;amp;gs_rfai="&gt;чартер&lt;/a&gt; - обычных прямых рейсов из Минска скорее всего нет)&lt;/li&gt;&lt;li&gt;Намечу предположительные места/виллы, которые мы хотим посмотреть&lt;/li&gt;&lt;li&gt;В аэропорту возьму напрокат машину&lt;/li&gt;&lt;li&gt;Довезу Славку и Лену до пляжа и оставлю их отдыхать&lt;/li&gt;&lt;li&gt;Поеду выбирать отель/виллу (tip: ищите надпись sobe apartmani)&lt;/li&gt;&lt;li&gt;Профит!&lt;/li&gt;&lt;/ol&gt;&lt;span style="color: #cccccc; font-size: x-small;"&gt;*Please, use with care! Использовать только на свой страх и риск&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В предыдущий раз, на вилле &lt;a href="http://www.tophotels.ru/main/hotel/al26338/?_mode=137"&gt;Levantin&lt;/a&gt; мы познакомились с парой, которые приехали именно дикарями и были жутко довольны (кстати, туда на данный момент ехать не советую - там как раз напротив идет стройка). &lt;br /&gt;&lt;br /&gt;А когда уезжали в этот раз, разговорились с хозяином виллы, и с хитрым лицом он подтвердил, что надо ехать напрямую. И цены, мол, поинтереснее, и место выбрать несложно – даже не смотря на сезон и наплыв москвичей.&lt;br /&gt;&lt;br /&gt;Еще про Черногорию:&lt;br /&gt;Мое - &lt;a href="http://www.shcoder.by/2010/08/blog-post.html"&gt;Черногория - сейчас и раньше&lt;/a&gt;&lt;br /&gt;Жена - &lt;a href="http://momstipsandtricks.blogspot.com/2010/08/1.html"&gt;Отдых с годовалым карапузом в Черногории. Пляжи Будвы&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-4660972600668876053?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/4660972600668876053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/08/blog-post_19.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4660972600668876053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/4660972600668876053'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/08/blog-post_19.html' title='Дикарем в Черногорию?'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-255838626567018175</id><published>2010-08-17T23:20:00.011+03:00</published><updated>2011-04-20T18:33:51.126+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='Отпуск'/><title type='text'>Черногория - сейчас и раньше</title><content type='html'>&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;a href="http://lh3.ggpht.com/_hTFMi0z5W-c/TGqLf0aB6TI/AAAAAAAABHo/wGCxlWCngNs/s1600/DSCF7818.JPG" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" ox="true" src="http://lh3.ggpht.com/_hTFMi0z5W-c/TGqLf0aB6TI/AAAAAAAABHo/wGCxlWCngNs/s320/DSCF7818.JPG" /&gt;&lt;/a&gt;От минской жары мы решили сбежать в не менее жаркую Черногорию. По крайней мере, тут кондиционер в номере, море на пляжах и холодное пиво в ресторанах, а в Минске даже с этим сейчас проблемы. &lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Мы в Черногории уже второй раз. В первый раз были 4 года назад в Св. Стефан, сейчас остановились в Будве – в принципе, недалеко уехали. Не то, чтобы мы сильно планировали вторую поездку сюда, но в первый раз нам понравилось + стечение других обстоятельств.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Чем понравилась Черногория? Все просто:&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Славянская страна с относительно близким к нам языком, не чуждой кухней и хорошим отношением к русскоговорящим&lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Самая красивая природа – горы и много зелени&lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Самое чистое море, которое мы только видели; видишь не просто свои ноги – отплывая к буйкам можно в деталях любоваться морским дном&lt;/li&gt;&lt;li style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Самая вкусная рыба&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;«Самая» – это в сравнении с другими морскими курортами, которые мы посетили в этот промежуток: Турция, &lt;a href="http://www.shcoder.by/2008/09/blog-post.html"&gt;Болгария&lt;/a&gt;, &lt;a href="http://momstipsandtricks.blogspot.com/2010/06/4.html"&gt;Литва&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Сейчас Черногория is a little bit busier. Больше людей, больше машин, больше отелей, меньше свободного места, на пляжах просто яблоку негде упасть.&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Магазин, в который мы ходили 4 года назад, мы не узнали. Вместо площади с парковкой теперь перед магазином здоровущий отель.&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_hTFMi0z5W-c/TGqM2d4Ca0I/AAAAAAAABI8/J1ZzVznMG1M/s1600/DSCF8041.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://lh6.ggpht.com/_hTFMi0z5W-c/TGqM2d4Ca0I/AAAAAAAABI8/J1ZzVznMG1M/s320/DSCF8041.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Рестораны кажутся дороже. Похоже, конкуренция возросла, обслуживание становится лучше и иногда принимает интересные формы в виде рюмки на посошок (не довелось пока) или бесплатной закуски (было дело). В прошлый раз, основной фишкой местных официантов (в основном мужчины и это хорошо) был вопрос: «Было укусно?». Вежливо, забавно, но располагающе. &lt;br /&gt;&lt;br /&gt;Будва показалась грязнее, чем Св. Стефан раньше. Мы заодно и на Св. Стефан заехали - прямо перед виллой (Levantin), в которой мы жили, уже возвышается какой-то недострой. А такой вид с балкона был.. Кафешка, в которой мы завтракали, так и совсем оказалась закрыта.&amp;nbsp;И с коляской там вообще сложно - одни лестницы :)&lt;/div&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh5.ggpht.com/_hTFMi0z5W-c/TGqKbQixY8I/AAAAAAAABHM/T4twpTX2KK4/s1600/DSCF7787.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://lh5.ggpht.com/_hTFMi0z5W-c/TGqKbQixY8I/AAAAAAAABHM/T4twpTX2KK4/s320/DSCF7787.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Ситуация с размещением не сильно изменилось – популярны так называемые виллы, где запросто можно познакомиться с хозяином, чтобы он вас угостил ракией с арбузами (в этот раз) или инжиром (в прошлый раз), однако про ежедневную уборку номера приходиться напоминать.&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://lh6.ggpht.com/_hTFMi0z5W-c/TGqL6eCGSbI/AAAAAAAABIc/rf5V57mutTQ/s1600/DSCF7959.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://lh6.ggpht.com/_hTFMi0z5W-c/TGqL6eCGSbI/AAAAAAAABIc/rf5V57mutTQ/s320/DSCF7959.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;Ну и на последок, &lt;a href="http://picasaweb.google.com/Andrei.Charnou/CrnaGora"&gt;фотки&lt;/a&gt;. Глядя на наши лица, должно быть ясно, что нам все еще нравится :) Хотя все же и&amp;nbsp;кажется, что в первый раз было лучше. &lt;br /&gt;&lt;br /&gt;Еще про Черногорию:&lt;br /&gt;Мое - &lt;a href="http://www.shcoder.by/2010/08/blog-post_19.html"&gt;Дикарем в Черногорию?&lt;/a&gt;&lt;br /&gt;Жена - &lt;a href="http://momstipsandtricks.blogspot.com/2010/08/1.html"&gt;Отдых с годовалым карапузом в Черногории. Пляжи Будвы&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-255838626567018175?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/255838626567018175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/08/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/255838626567018175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/255838626567018175'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/08/blog-post.html' title='Черногория - сейчас и раньше'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_hTFMi0z5W-c/TGqLf0aB6TI/AAAAAAAABHo/wGCxlWCngNs/s72-c/DSCF7818.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-933369614249771220.post-3485247620981433977</id><published>2010-07-21T23:15:00.000+03:00</published><updated>2011-04-20T18:33:51.128+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUS'/><category scheme='http://www.blogger.com/atom/ns#' term='IT'/><title type='text'>Интернет в РБ становится дешевле</title><content type='html'>На Космос&amp;nbsp;ТВ появились новые тарифы - &lt;a href="http://cosmostv.by/about/news/bc1e0488f2d607ae.html"&gt;метеор и комета&lt;/a&gt;.&amp;nbsp;Вкратце, предлагают в 4 раза больше трафика за те же деньги - 16 GB за 50 тысяч вместо 4GB за 55. Шуму особенно не поднимают, если бы я случайно не наткнулся, то так бы и сидел на оптимальном.&lt;br /&gt;&lt;br /&gt;Скорее всего, следствие &lt;a href="http://news.open.by/it/30236"&gt;снижения цен Белтелекомом для провайдеров&lt;/a&gt;, монополия во всей её красе. Похоже, такой же реакции стоит вскоре ожидать и от других провайдеров, поэтому советую следить за новостями. И да, пишут, что в ноябре планируют еще одно снижение.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/933369614249771220-3485247620981433977?l=www.shcoder.by' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.shcoder.by/feeds/3485247620981433977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.shcoder.by/2010/07/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3485247620981433977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/933369614249771220/posts/default/3485247620981433977'/><link rel='alternate' type='text/html' href='http://www.shcoder.by/2010/07/blog-post.html' title='Интернет в РБ становится дешевле'/><author><name>Andrei Chernov</name><uri>https://profiles.google.com/113340083686224939248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-1PxaTQCWjUQ/AAAAAAAAAAI/AAAAAAAABSQ/oBdpMeE59Ys/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>