<?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-3704723600302758629</id><updated>2012-01-10T22:44:58.942+02:00</updated><category term='linux'/><category term='shallow philosophy'/><category term='poem'/><category term='java'/><category term='swing'/><category term='3d'/><category term='apple'/><category term='development'/><category term='crow'/><category term='skype'/><category term='music'/><category term='slick'/><category term='game'/><category term='hamburg'/><category term='firebird'/><category term='swift publisher'/><category term='rockbox'/><category term='interview'/><category term='travel'/><category term='job'/><category term='people'/><category term='study'/><category term='belight'/><category term='luxoft'/><category term='internet'/><category term='matrix calculator'/><category term='sweet home'/><category term='windows'/><category term='spotlight'/><category term='SLD'/><category term='fun'/><category term='ubuntu'/><category term='c++'/><category term='pnuts'/><category term='berlin'/><title type='text'>Блог Сергея Бородавкина</title><subtitle type='html'>...на хромой блохе с того берега моря, которое зайцу не перелететь, орлу не перебежать... Хоть море - не море, а так - лужа посреди города, где тень от блохи на зайца упала и насмерть убила. А из шкуры зайца тулуп вышел и пошел куда глаза глядят, тут заяц ка-ак прыгнет...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default?start-index=101&amp;max-results=100'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>106</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-6243777035307027005</id><published>2011-12-25T21:51:00.000+02:00</published><updated>2012-01-03T14:29:53.152+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='slick'/><category scheme='http://www.blogger.com/atom/ns#' term='luxoft'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>The Navigame</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Just a week remains until the New Year 2012 comes. The last year was the first one we at Luxoft have been able to make the maximum contribution to the development of the next-generation car navigation system which we are working on since 2008. The most prominent thing is the complete responsibility for the production chain, of course. At the same time the software products we are developing have matured a lot - thanks to all my colleagues, past and present.&lt;br /&gt;&lt;br /&gt;As I really appreciate what our guys have done and are doing and at the same time I want to remember and cherish the good time we had in 2011, I decided to write a simple computer game on how we work. So, meet The Navigame:&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/-YRqtv7xwM88/Tvd568dmNYI/AAAAAAAABJ4/-Yicymq1xBw/s1600/Screenshot02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-YRqtv7xwM88/Tvd568dmNYI/AAAAAAAABJ4/-Yicymq1xBw/s320/Screenshot02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After some trials and errors I decided to make it looking like a paper sketch (most likely soon I'll assemble a new version with enhanced graphics which I've asked my friend for). The good thing is that here I've finally found an application for the &lt;a href="http://sergey-borodavkin.blogspot.com/2009/09/blog-post.html" target="_blank"&gt;TTF-font I created two years ago&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The goal of the game is to develop the navigation system and to compile digital maps - as much as possible. For this you have a pool of skilled developers and map production engineers which can be assigned different tasks. There are developers who create the navigation software and production engineers who build the maps using the map compiler which is a part of navigation. The more the navigation system is feature-complete, the bigger maps can be handled with it. There are also some athmospheric features like customer PM or developers' curses. You basically should (a) finish the navigation development, (b) fulfil the map production plan and (c) earn as much money as possible.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;To all people we worked with during the last 2-3 years: there are good chances that you find yourself inside the game - so give it a try :)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The source code,  readme and binary download are available on Github at &lt;a href="https://github.com/sborodavkin/navigame" target="_blank"&gt;https://github.com/sborodavkin/navigame&lt;/a&gt;. It is required to have JRE installed as the game is developed in Java using &lt;a href="http://slick.cokeandcode.com/" target="_blank"&gt;Slick&lt;/a&gt; and &lt;a href="http://lwjgl.org/" target="_blank"&gt;LWJGL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All contributions and feedback are warmly welcome.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-6243777035307027005?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/6243777035307027005/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/12/navigame.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6243777035307027005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6243777035307027005'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/12/navigame.html' title='The Navigame'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-YRqtv7xwM88/Tvd568dmNYI/AAAAAAAABJ4/-Yicymq1xBw/s72-c/Screenshot02.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-333934746988236793</id><published>2011-12-02T13:09:00.001+02:00</published><updated>2012-01-03T14:24:38.576+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Экспертиза</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Это только меня передергивает, когда я слышу/вижу это слово? Нет, правда.&lt;br /&gt;&lt;br /&gt;Кто решил, что экспертиза в русском языке обозначает то же самое, что expertise - в английском?&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;"Наша экспертиза позволяет нашей компании выполнять проекты самого высокого уровня сложности"&lt;/li&gt;&lt;li&gt;"Экспертиза отдела разработки ПО на базе Java составляет 3 года"&lt;/li&gt;&lt;li&gt; "Это позволяет EPAM накапливать экспертизу и успешно применять ее в проектах."&lt;/li&gt;&lt;li&gt;"&lt;span class="st"&gt;&lt;i&gt;&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;Расскажите о вашей экспертизе с Informatica"&lt;/li&gt;&lt;/ul&gt;Предлагаю определиться. Экспертиза - хоть Ушакова откройте, хоть Брокгауза и Ефрона, хоть словарь иностранных слов - означает примерно следующее:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;Экспертиза [лат.; см эксперт] - исследование какого-л, вопроса, требующего спец. знаний, с представлением мотивированного заключения, напр, врачебная э., бухгалтерская э.&lt;/blockquote&gt;&amp;nbsp;А то, что сертифицированные менеджеры и пубертатные девелоперы пытаются выдать за экспертизу - это калька с английского. По-русски это будет "опыт", возможно "знания" - по контексту, но никак не "экспертиза". Экспертиза - это исследование, изучение чего-либо.&lt;br /&gt;&lt;br /&gt;&lt;table width=100% cellspacing=0 cellpadding=0 border=0&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-nJQahcgVEPc/Tti4yHijDuI/AAAAAAAABJU/ODV_k6T2Ee8/s1600/ekspertiza.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://3.bp.blogspot.com/-nJQahcgVEPc/Tti4yHijDuI/AAAAAAAABJU/ODV_k6T2Ee8/s320/ekspertiza.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nfaBBDboa0E/Tti41fUEztI/AAAAAAAABJc/p42I130gpHw/s1600/ekspertiza-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-nfaBBDboa0E/Tti41fUEztI/AAAAAAAABJc/p42I130gpHw/s320/ekspertiza-2.png" width="256" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;span id="goog_317285501"&gt;&lt;/span&gt;&lt;span id="goog_317285502"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-333934746988236793?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/333934746988236793/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/12/blog-post.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/333934746988236793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/333934746988236793'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/12/blog-post.html' title='Экспертиза'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-nJQahcgVEPc/Tti4yHijDuI/AAAAAAAABJU/ODV_k6T2Ee8/s72-c/ekspertiza.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1502152812319055014</id><published>2011-11-24T13:08:00.001+02:00</published><updated>2012-01-03T13:54:15.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crow'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Crow 1.1.0 released</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Несмотря на то, что все фичи к релизу были подготовлены уже давно, акт выпуска новой версии произошел только сегодня.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/projects/opencrow/files/opencrow/1.1.0/" target="_blank"&gt;Скачать можно отсюда&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;В релиз 1.1.0 были включены 5 новых фич:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/tracker/?func=detail&amp;amp;aid=3364079&amp;amp;group_id=267201&amp;amp;atid=1137221" target="_blank"&gt;3364079 Export Traceability Matrix to Excel&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;любой Traceability Report теперь можно сохранить в Excel-файл. Используется библиотека Apache POI.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/tracker/?func=detail&amp;amp;aid=3313584&amp;amp;group_id=267201&amp;amp;atid=1137221" target="_blank"&gt;3313584 Add filtering capabilities to Traceabilty tab&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;в окно "добавить трассировку" были добавлены текстовые поля для динамического поиска нужных элементов. Выглядит это так:&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jkzX84244jA/Ts4pS-kMuUI/AAAAAAAABI8/mgvXlshi9AY/s1600/trace-search.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="274" src="http://4.bp.blogspot.com/-jkzX84244jA/Ts4pS-kMuUI/AAAAAAAABI8/mgvXlshi9AY/s320/trace-search.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/tracker/?func=detail&amp;amp;aid=3300468&amp;amp;group_id=267201&amp;amp;atid=1137221" target="_blank"&gt;3300468 Filter Perforce changelists by description&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;аналогично предыдущей фиче, в окне добавления Perforce changelists теперь можно делать дополнительную фильтрацию по описанию:&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-uwgywSvfsGg/Ts4p9uMdylI/AAAAAAAABJE/8uDP4vC9fno/s1600/p4-search.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://1.bp.blogspot.com/-uwgywSvfsGg/Ts4p9uMdylI/AAAAAAAABJE/8uDP4vC9fno/s320/p4-search.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/tracker/?func=detail&amp;amp;aid=3294913&amp;amp;group_id=267201&amp;amp;atid=1137221" target="_blank"&gt;3294913 Support new trace type DD2TRS&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;несмотря на то, что ASPICE запрещает прямую трассировку TRS на детальный дизайн, бывают ситуации, когда описание архитектуры недоступно, и в этом случае установить необходимые трассы нельзя. Поэтому был добавлен новый тип связи, позволяющий трейсить TRS непосредственно на детальный дизайн и обратно.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt; &lt;a href="https://sourceforge.net/tracker/?func=detail&amp;amp;aid=2946382&amp;amp;group_id=267201&amp;amp;atid=1137221" target="_blank"&gt;2946382 Mark some CRS as "should not be traced"&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;иногда в базе CRS есть отклоненные (rejected) или устаревшие требования, которые намеренно не покрыты TRSами, дизайном, кодом и т.д. Чтобы в отчете о трассировке эти CRS не светились красным цветом, появилась возможность обозначать их как "не трассируемые". В отчете это выглядит, например, вот так:&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-RpanPUw3T54/Ts4raoR5cQI/AAAAAAAABJM/12smMmvoNCQ/s1600/inactive-crs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://3.bp.blogspot.com/-RpanPUw3T54/Ts4raoR5cQI/AAAAAAAABJM/12smMmvoNCQ/s320/inactive-crs.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;За реализацию фильтров и нового типа трассировки отдельное спасибо &lt;a href="https://sourceforge.net/users/alik2011/" target="_blank"&gt;Саше Кондратюку&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Приятной работы!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Кстати, в этом релизе мы попробовали CodeStriker - бесплатный инструмент для проведения peer code review. По сравнению с Crucible - ужасно: неудобный интерфейс, корявое отображение исходников, для просмотра комментариев необходимо кликать на закладки (нет режима отображения кода вместе с комментариями).&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1502152812319055014?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1502152812319055014/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/11/crow-110-released.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1502152812319055014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1502152812319055014'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/11/crow-110-released.html' title='Crow 1.1.0 released'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-jkzX84244jA/Ts4pS-kMuUI/AAAAAAAABI8/mgvXlshi9AY/s72-c/trace-search.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-7941806399211375352</id><published>2011-10-14T15:45:00.002+03:00</published><updated>2012-01-03T14:40:56.311+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Is Data a Software?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Сегодня инициировал, а затем полтора часа участвовал в дискуссии, смысл которой можно свести к вопросу "можно ли входные данные, обрабатываемые программой, также называть Software"?&lt;br /&gt;&lt;br /&gt;По завершении дискуссии, нашел интересную статью &lt;a href="http://www.earlham.edu/%7Epeters/writing/software.htm"&gt;Peter Suber, "What is Software?"&lt;/a&gt; Несколько цитат из глав 9 и 11:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;To compile a program written in a high level language, it must be treated as data by another program, the compiler.  It must passively be worked upon, so that later it may actively do work.  Without this step, the programmer might as well have spoken in English.  Programs written originally in the binary code readable by the machine do not require this translation, and hence need not be treated as data.  But virtually all programs written today are written in higher level languages.&lt;br /&gt;Apart from this critical step in the very functioning of software, programs are treated as data for the purpose of copying (publishing) and transmitting them.  Even if a program were originally written in machine language, chances are good that if &lt;em&gt;we&lt;/em&gt; are using it, its code has once been treated as data by another program.  &lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;Software may essentially be pattern, but how is it to be distinguished from patterns that are used as data rather than software?  How does it take the position of &lt;em&gt;natura naturata&lt;/em&gt; and then &lt;em&gt;natura naturans&lt;/em&gt;?  This seems to be the central mystery.  &lt;em&gt;How&lt;/em&gt; can pattern be read as instructions?  How can mere pattern rise from passivity to activity?  Why isn't sheer syntactical pattern always inert, perpetually data and never software?  &lt;/blockquote&gt;&amp;nbsp;...&lt;br /&gt;&lt;blockquote&gt; We can approach answers to these questions by saying that software is pattern in a controlling position, while the same pattern in a different position will be data (and the same pattern under different language conventions will be noise).  But what is this "position"?  The first thing to observe about it is that &lt;em&gt;it is not part of the pattern&lt;/em&gt;.  It is the use to which the pattern is put, or the relation between the software-pattern and other patterns that are currently functioning as data.  In this, to assume the "controlling position" is similar to meeting the physical requirement of readability; it leaves the pattern unchanged and occurs independently of the syntactic and semantic content of the pattern.&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt; It is this "position" or use of the software pattern that enables its binary code to be taken as code for &lt;em&gt;instructions&lt;/em&gt; that are to be executed.  The matter is simpler than it may appear.  If we write down on one piece of paper directions for copying a page of text, and on another piece of paper directions for erasing or shredding a page of text, then we may give them to a stranger and ask that the top sheet be read and applied to the bottom sheet.  It does not matter how they are shuffled; each can apply to the other as it can apply to itself.  One is put in a controlling position if the "hardware" (here the stranger) reads one first and one second.  Odysseus may command his men to tie him to the mast as his ship passes the island of sirens, and to ignore any commands to be released that he might issue.  If his men obey this command, then it "poisons the well" for future commands and causes them to be interpreted as data.  But the commands to be released are like the directions written to the stranger:  fully satisfactory and "authoritative" as commands.  Whether they function as commands or data is a matter of whether they are taken up earlier or later than other contenders.&lt;/blockquote&gt;&lt;br /&gt;Вкратце: data также является software. IEEE также считает данные подмножеством software.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-7941806399211375352?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/7941806399211375352/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/10/is-data-software.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7941806399211375352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7941806399211375352'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/10/is-data-software.html' title='Is Data a Software?'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3526294595418895942</id><published>2011-10-07T19:19:00.000+03:00</published><updated>2012-01-03T14:40:56.220+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Комментарии к методам</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Очень понравилась фраза из &lt;a href="http://www.sqlite.org/debug1/doc/trunk/www/style.wiki"&gt;SQLite coding style&lt;/a&gt;; не могу удержаться, чтобы не скопировать сюда:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;ol&gt;&lt;li value="31"&gt;Function header comment defines the behavior of the function in       sufficient detail to allow the function to be reimplemented from       scratch without reference to the original code.&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-3526294595418895942?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3526294595418895942/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3526294595418895942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3526294595418895942'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/10/blog-post.html' title='Комментарии к методам'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1541867858049576206</id><published>2011-09-27T17:56:00.002+03:00</published><updated>2012-01-03T14:29:52.937+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Проблемы документирования software design</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Сегодня на постмортеме решали, как менять существующий процесс документирования дизайна. Проблемы очевидны:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;дизайн-документы хранятся в морально устаревшем формате Word, низкая прозрачность&lt;/li&gt;&lt;li&gt;сложный шаблон документа как результат стремления покрыть все требования к дизайну из ASPICE L3 HIS scope&lt;/li&gt;&lt;li&gt;непонятно, актуально ли описание дизайна, или уже устарело - к коду доверия больше.&lt;/li&gt;&lt;/ul&gt;Как перестать писать дизайн "из-под палки" и что вообще делать - мне пока непонятно. Нашел вот цитату из David Parnas and Paul Clements. "A Rational Design Process: How and Why to Fake It" in Software State-of-the-Art: Selected Papers. Dorset House, 1990, pg. 353-355:&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;blockquote&gt;It should be clear that documentation plays a major role in the design process that weare describing. Most programmers regard documentation as necessary evil, written as anafterthought only because some bureaucrat requires it. They do not expect it to beuseful.&lt;br /&gt;This is a self-fulfilling prophesy; documentation that has not been used before it ispublished, documentation that is not important to its author, will always be poordocumentation.&lt;br /&gt;Most of that documentation is incomplete and inaccurate, but those are not the mainproblems. If those were the main problems, the documents could be easily corrected byadding or correcting information. In fact, there are underlying organizational problemsthat lead to incompleteness and incorrectness and those problems, which are listed below,are not easily repaired.&lt;br /&gt;1) Poor Organization: Most documentation today can be characterized as "stream ofconsciousness" and "stream of execution." "Stream of consciousness" writing putsinformation at the point in the text that the author was writing when the thoughtoccurred to him. "Stream of execution" writing describes the system in the order thingswill happen when it runs. The problem with both of these documentation styles is thatsubsequent readers cannot find the information they seek. It will therefore not be easyto determine that facts are missing, or to correct them when they are wrong. It will notbe easy to find all the parts of the document that should be changed when the software ischanged. The documentation will be expensive to maintain and, in most cases, will not bemaintained.&lt;br /&gt;2) Boring Prose: Lots of words are used to say what could be said by a singleprogramming language statement, a formula, or a diagram. Certain facts are repeated inmany different sections. This increases the cost of the documentation and itsmaintenance. More importantly it leads to inattentive reading and undiscovered errors.&lt;br /&gt;3) Confusing and Inconsistent Terminology: Any complex system requires the inventionand definition of new terminology. Without it the documentation would be far too long.However, the writers of software documentation often fail to provide precise definitionsfor the terms they use. As a result, there are many terms used for the same concept andmany similar but distinct concepts described with the same term.&lt;br /&gt;4) Myopia: Documentation that is written when the project is nearing completion iswritten by people ho have lived with the system for so long that they take majordecisions for granted. They document the small details that they think they will forget.Unfortunately, the result is a document useful to people who know the system well, butimpenetrable for newcomers.&lt;br /&gt;Documentation in the ideal design process meets the needs of the initial developersas well as the needs of the programmers who come later. Each of the documents mentionedabove records requirements or design decisions and is used as a reference document forthe rest of the design. However, they also provide the information that the maintainerswill need. Because the documents are used as reference manuals throughout the building ofthe software, they will be mature and ready to use in later work. The documentation inthis design process is not an afterthought; it is viewed as one of the primary productsof the project. Some systematic checks can be applied to increase completeness andconsistency. [...]&lt;br /&gt;"Stream of consciousness" and "stream of execution" documentation is avoided bydesigning the structure of each document. Each document is designed by stating thequestions that it must answer and refining the questions until each defines the contentof an individual section. There must be one, and only one, place for every fact that willbe in the document. The questions are answered, i.e., the document is written, only afterthe structure of the document has been defined. When there are several documents of a certain kind, a standard organization is written for those documents. Every document isdesigned in accordance with the same principle that guides our software design:separation of concerns. Each aspect of the system is described in exactly one section andnothing else is described in that section. When documents are reviewed, they are reviewedfor adherence to the documentation rules as well as for accuracy.&lt;br /&gt;The resulting documentation is not easy or relaxing reading, but it is not boring. Itmakes use of tables, formulas, and other formal notation to increase the density ofinformation. The organizational rules prevent the duplication of information. The resultis documentation that must be read very attentively, but rewards its reader with detailedand precise information. [...]&lt;br /&gt;No matter how often we stumble on our way, the final documentation will be rationaland accurate. Even mathematics, the discipline that many of us regard as the mostrational of all follows this procedure. [...] Analogous reasoning applies to software.Those who read the software documentation want to understand the programs, not relivetheir discovery. By presenting rationalized documentation we provide what they need.&lt;br /&gt;Our documentation differs from the ideal documentation in one important way. We make apolicy of recording all of the design alternatives that we considered and rejected. Foreach, we explain why it was considered and why it was finally rejected. Months, weeks, oreven hours later, when we wonder why we did what we did, we can find out. Years from now,the maintainer will have many of the same questions and will find his answers in ourdocuments.&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1541867858049576206?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1541867858049576206/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/09/software-design.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1541867858049576206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1541867858049576206'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/09/software-design.html' title='Проблемы документирования software design'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2663612001891836913</id><published>2011-09-13T11:57:00.000+03:00</published><updated>2012-01-03T15:17:42.289+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><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;b&gt;1. ПРИЧИНА&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Главная причина того, что люди задаются таким вопросом - стремление к власти. Ничего плохого в этом нет - как известно, главных испытаний в жизни всего 4: деньги, слава, власть и любовь. Для точки внутри пространства такого ортогонального базиса, например, жажда любви ничем не лучше жажды власти. К тому же, сравните:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"я зарабатываю пять тысяч в месяц" (деньги),&lt;/li&gt;&lt;li&gt;"меня знают и уважают в Одессе" (слава),&lt;/li&gt;&lt;li&gt;"я руковожу тремя проектами и сорока людьми" (власть).&lt;/li&gt;&lt;/ul&gt;Что звучит убедительней? Власть, только она наиболее полно позволяет человеку ощутить степень своего карьерного роста и практически количественно (в подчиненных) измерить его.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. СРЕДСТВА&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Теперь о средствах достижения вожделенного ПМства. В дополнение к очевидному - желанию стать ПМом - более-менее внятно озвучить я могу пять:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.1. Опыт.&lt;/b&gt; Я придерживаюсь мнения, что стать хорошим ПМом, не отработав N лет в инжиниринге, нельзя. Плохим - можно, но мы не рассматриваем этот вариант по причине того, что все риски, связанные с плохим ПМом, разделяет его руководитель, а значит вряд ли назначит его на эту должность. Только через годы работы разработчиком, старшим разработчиком, техлидом и тимлидом можно приблизиться к креслу ПМа, поскольку:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;позиция разработчика даст вам прочувствовать то, как управлять собой и своим временем&lt;/li&gt;&lt;li&gt;позиция старшего разработчика поможет вам глубже разобраться в областях, непосредственно не относящихся к кодингу: анализ и управление требованиями, оценка трудозатрат, ревью архитектуры и дизайна и т.д. Кроме того, обычной практикой является курирование старшим разработчиком одного или нескольких программистов.&lt;/li&gt;&lt;li&gt;на позиции тим/тех-лида в первую очередь приходит понимание того, что такое ответственность за команду. Это очень важный пункт, который нельзя пропускать, поскольку через него мы приходим к умению нести ответственность за технические решения (свои и команды), организационные решения (свои и компании), ну и в целом за проект. Кроме этого, здесь вам придется научиться управлению рисками и проблемами, грамотному общению с заказчиком, а также основам того, как быть интерфейсом между командой, компанией (рекрутерами, HR, руководством, администрацией) и заказчиком.&lt;/li&gt;&lt;/ul&gt;К сожалению или к счастью, опыт здесь нельзя заменить знаниями. Разработчик, прослушавший курсы по управлению проектами, - это еще не ПМ. В системном анализе программные проекты относятся к классу сложных систем (СС) с неформализуемыми компонентами (в первую очередь - людьми). Управление ожиданиями подчиненных, понимание культурных и личностных особенностей разных заказчиков, понимание и принятие правил, по которым функционирует ваша организация (а также их выполнение) - все это нельзя получить из книг. Более того, даже формализуемые компоненты СС (собственно ПО) также требуют опыта. Например: никому не нужен в качестве архитектора вчерашний студент, пусть и очень знающий, но не спроектировавший N реальных систем с учетом требований производительности, масштабируемости, устойчивости к изменениям требований и т.д. - а ПМ должен выполнять ревью требований, архитектуры, тест-плана, поэтому и спрос с него соответствующий.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.2. Процессная дисциплина.&lt;/b&gt; Только понимая процессные активности той или иной процессной модели, принимая их для себя и выполняя их, можно внедрять и контролировать их выполнение в проекте. Сюда я отношу создание технических требований, оценку трудозатрат, управление рисками, своевременную эскалацию проблем, управление изменениями, аккуратную и регулярную, как чистка зубов, отчетность. Из относящихся к кодированию: код-ревью и создание юнит-тестов. На всем этом нужно набить шишки, находясь на позиции старшего разработчика, поскольку те же шишки на позиции ПМа будут стоить гораздо дороже - как вам, так и компании. См. также пункт 2.1.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.3. Инициатива (или "делайте больше").&lt;/b&gt; Покажите своему руководителю (от которого зависит ваше повышение), что вы можете больше. Вам дали задачу? Найдите способ сделать ее лучше, чем указано в требованиях! Заложите больше масштабируемости, проведите рефакторинг, напишите больше тестов, оптимизируйте алгоритм. Однако, не бросайтесь с места в карьер: отсутствие опыта приведет только к тому, что вы будете предлагать нереализуемые, ненужные или ранее отвергнутые сценарии и тем самым злить начальство. См. также пункт 2.1.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.4. Язык.&lt;/b&gt; Как правило - английский. ПМ, пишущий письма заказчику на плохом английском, с ошибками в словах и грамматике, отвратителен. С другой стороны, вполне можно писать простыми предложениями, употреблять в основном часто используемые слова - но ради Бога, грамотно! Оценить свою степень владения языком можно на курсах, у преподавателя, у более знающего коллеги, а также, частично, с высоты своего языкового опыта. См. также пункт 2.1.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.5. Способности к руководству.&lt;/b&gt; Это что-то из области "можно вам доверить людей" или нет. Оценивать вас по этому пункту будет ваш руководитель, скорее всего, чисто субъективно, в связи с чем ограничусь примерами:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;"человек-фюрер", как правило, отлично справляется со всеми задачами, возложенными на него, и при этом (простите мой французский) аж ссытся, так хочет кем-нибудь поруководить. Обычно не упускает возможности дать коллегам понять, что главный здесь - он, а также зарисоваться перед начальством. Такому человеку доверять руководство людьми опасно - у него нет к этому природных способностей, и частично помочь здесь сможет специализированное обучение, опыт и внутренняя дисциплина.&lt;/li&gt;&lt;li&gt;"человек-рыба" также хорошо выполняет все поставленные задачи, но другими людьми склонен не интересоваться, не заинтересовывать, не развивать. Обычно стремится большой объем работы выполнить сам, мотивируя тем, что у команды мало опыта. Такому человеку доверить руководство также можно только после предварительных упражнений.&lt;/li&gt;&lt;/ul&gt;Я бы мог перечислить еще много смешных типажей, но это - тема отдельного поста. Хорошее упражнение - попробовать посмотреть на свое поведение в офисном ареале со стороны, непредубежденным взглядом. Очень важно понимать свои недостатки в этой области, иногда они - причина того, почему вас не повышают. Как правило, с ними вам придется бороться на протяжении всей карьеры, поскольку они (в отличие от предыдущих четырех пунктов) - часть вашей личности. Вы хотите руководить людьми до судорог в коленках? Скрывайте силу вашего желания, не дайте никому догадаться! Вы уверены, что знаете все лучше всех? Превозмогите себя, дайте вашим коллегам шанс - пусть они сделают не так идеально, но зато приобретут опыт, и т.д.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;3. ОТКЛОНЕНИЯ&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Иногда на ПМских позициях оказываются люди, не соответствующие написанному выше. Причин у этого может быть несколько:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;повышение произвел некомпетентный руководитель. Либо он (руководитель) пострадает из-за этого и отменит такое повышение, либо ПМ "натыркается" и будет сносно выполнять свои ежедневные обязанности, тем не менее лажаясь каждый раз, когда от него потребуется что-то, что выходит за круг его привычных задач (написать proposal для нового заказчика, выступить с презентацией на ежегодном собрании и т.д.)&lt;/li&gt;&lt;li&gt;повышение произвел компетентный руководитель. В этом случае он (руководитель) принимает все риски, связанные с таким назначением, и возможно выполняет часть работ за своего ПМа. Такая ситуация возможна, когда:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;руководитель держит бразды правления в своих руках, отдавая ПМу рутинные технические задачи (распределение тасков между людьми, сбор индивидуальных отчетов и подготовка проектного отчета, написание / ревью технических требований и т.д.) О реальной власти ПМа в такой ситуации речь не идет - однако это может быть ловко замаскировано более опытным руководителем и подано молодому ПМу под правильным для него соусом из манипулятивных утверждений и обещаний.&lt;/li&gt;&lt;li&gt;Другой вариант развития событий: руководителю нужен реальный ПМ, нанимать "готового" с рынка для компании экономически нецелесообразно, поэтому новый ПМ целенаправленно взращивается в реальных условиях. Это возможно при соблюдении требований 2.2, 2.3, [2.4], 2.5 из списка выше. При этому руководитель ПМа все так же несет ответственность за проект, готов придти ему на помощь в случае необходимости и в целом верит в него.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;компания понимает под ПМом что-то принципиально другое, чем то, что понимаю я. Мне встречались случаи, когда ПМами называли себя фактические продакт-менеджеры, сейлзы или аналитики. Скорее всего, ПМ в таком случае будет бесконечно далек от PMBOK. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;4. ВЫВОДЫ&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Чтобы стать ПМом, обязательно нужен инженерный опыт. Софт-скиллы (управление людьми, конфликтами, изменениями, ведение переговоров, навыки проведения презентаций и т.д.), как правило, приобретаются уже на новой должности (либо на должности тим/тех-лида при более дальновидной политике компании). В дополнение к опыту обязательна инициатива в смысле желания делать больше. Очень важны процессы (и да, agile - это процесс). Кроме того, важно знать свои недостатки, которые могут помешать вам в управлении людьми, и вести с ними постоянную борьбу.&lt;br /&gt;&lt;br /&gt;Иногда можно увидеть в кресле ПМа дятла. Несмотря на то, что этому, как правило, можно найти объяснение, ответьте себе на вопрос: а вы - дятел? При желании можно придумать, как нацепить на себя лейбу ПМа, что будет служить формальным подтверждением вашей власти. Однако власть - это всего лишь одна из мер карьерного роста, и лейба ПМа не заменит содержания ПМа. Быть хорошим ПМом в средне- и долгосрочной перспективе гораздо выгодней, чем плохим:&lt;br /&gt;&lt;ul&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;&lt;li&gt;у плохого ПМа нет перспективы роста (количества подчиненных, получения новых проектов и т.д.).&lt;/li&gt;&lt;/ul&gt;В общем-то, можно быть и дятлом в кресле ПМа. Главное - не обманывать себя. Удачи!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2663612001891836913?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2663612001891836913/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/09/blog-post.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2663612001891836913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2663612001891836913'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/09/blog-post.html' title='Как стать ПМом'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4946181359341774663</id><published>2011-01-16T12:49:00.003+02:00</published><updated>2012-01-03T14:29:53.094+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='luxoft'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Project Management Plan Hell</title><content type='html'>В нашем центре разработки существует обязательная практика написания Project Management Plan'а (PMP) для каждого проекта. Под РМР у нас понимают документ объемом около 20-30 страниц следующего содержания:&lt;br /&gt;- Scope проекта (milestones, deliverables, assumptions, constraints и т.д.)&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;От каждого (условно) project manager'а в обязательном порядке требуется:&lt;br /&gt;- составить такой документ (с учетом проектных задач, которые никто не снимает - 2-3 недели)&lt;br /&gt;- провести ревью внутри команды с привлечением инженера по качеству, учесть замечания (если в команде человек 10-15 - 1 неделя)&lt;br /&gt;- провести еще одно ревью с участием руководителя группы качества и сайт-менеджера и утвердить РМР на нашей стороне (с учетом занятости таковых - 2 недели)&lt;br /&gt;- утвердить документ с ПМ'ом на стороне заказчика (с учетом занятости такового - 2 недели)&lt;br /&gt;&lt;br /&gt;В общем итоге, составление и утверждение РМР занимает около 2 месяцев. За это время, разумеется:&lt;br /&gt;- изменяется scope проекта, появляются новые задания и активности&lt;br /&gt;- изменяется состав команды (кто-то приходит, кто-то, возможно, уходит)&lt;br /&gt;- сдвигается план-график&lt;br /&gt;- уточняются цели качества, изменяется набор метрик&lt;br /&gt;- люди обучаются, план обучения также эволюционирует.&lt;br /&gt;&lt;br /&gt;Все эти изменения требуют обязательного переутверждения РМР с проведением внутрикомандного ревью, что занимает около 6 недель. Таким образом, имеем:&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4946181359341774663?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4946181359341774663/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/01/project-management-plan-hell.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4946181359341774663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4946181359341774663'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2011/01/project-management-plan-hell.html' title='Project Management Plan Hell'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3065650513602768992</id><published>2010-10-03T00:11:00.002+03:00</published><updated>2012-01-03T13:30:38.925+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skype'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Настройка микрофона в Skype 2.1 под Ubuntu 10.04</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;У меня ноут Acer Aspire 3935, и я только что победил PulseAudio-микрофон в Skype!&lt;br /&gt;&lt;br /&gt;Решение, которое мне помогло:&lt;br /&gt;&lt;br /&gt;1. Устанавливаем pavucontrol:&lt;br /&gt;&lt;pre&gt;sudo apt-get install pavucontrol&lt;/pre&gt;&lt;br /&gt;2. Запускаем pavucontrol, переключаемся на вкладку "Input Devices". Убеждаемся, что ползунки "Front Left" и "Front Right" движутся синхронно. В этом и проблема: в ноуте моно-, а не стерео-микрофон. Поэтому нажимаем кнопку "Unlock" и левый устанавливаем на 90%, а правый - на 10%.&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/3704723600302758629-3065650513602768992?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3065650513602768992/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/10/skype-21-ubuntu-1004.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3065650513602768992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3065650513602768992'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/10/skype-21-ubuntu-1004.html' title='Настройка микрофона в Skype 2.1 под Ubuntu 10.04'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-572611391899197661</id><published>2010-05-28T08:47:00.005+03:00</published><updated>2012-01-03T14:29:53.133+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SLD'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>"Толстые" дороги в SLD</title><content type='html'>Для отрисовки карт в нащих плагинах к &lt;a href="http://udig.refractions.net"&gt;uDig&lt;/a&gt;, мы используем &lt;a href="http://www.opengeospatial.org/standards/sld"&gt;Styled Layer Decorator (SLD)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;На прошлой неделе я решал проблему отрисовки дорог шириной более 1 пикселя. Вот как оно выглядело изначально:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_x1LHpJFaJqo/S_9a5CQXSuI/AAAAAAAABBk/t-JxG45H3V8/s1600/001-orig.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://1.bp.blogspot.com/_x1LHpJFaJqo/S_9a5CQXSuI/AAAAAAAABBk/t-JxG45H3V8/s400/001-orig.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5476195607810362082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Очевидные проблемы:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Отрисовка перекрестков. На перекрестках дорог видно не соединенные между собой окончания сегментов.&lt;br /&gt;&lt;li&gt;Взаимное наложение дорог. При слишком близком расположении, дороги хаотически взаимно перекрываются. Особенно это заметно, опять же, на перекрестках. Кроме того, в левом верхнем углу заметно, что сегменты двух дорог (со стрелочками) также поочередно перекрываются.&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;SLD обеспечивает настройку правил для отрисовки дорог с помощью LineSymbolizer:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;sld:LineSymbolizer&amp;gt;&lt;br /&gt; &amp;lt;sld:Stroke&amp;gt;&lt;br /&gt;  &amp;lt;sld:CssParameter name="stroke"&amp;gt;#00ff00&amp;lt;/sld:CssParameter&amp;gt;&lt;br /&gt;  &amp;lt;sld:CssParameter name="stroke-opacity"&amp;gt;1&amp;lt;/sld:CssParameter&amp;gt;&lt;br /&gt;  &amp;lt;sld:CssParameter name="stroke-width"&amp;gt;1&amp;lt;/sld:CssParameter&amp;gt;&lt;br /&gt;  &amp;lt;sld:CssParameter name="stroke-linejoin"&amp;gt;round&amp;lt;/sld:CssParameter&amp;gt;&lt;br /&gt;  &amp;lt;sld:CssParameter name="stroke-linecap"&amp;gt;round&amp;lt;/sld:CssParameter&amp;gt;&lt;br /&gt; &amp;lt;/sld:Stroke&amp;gt;&lt;br /&gt;&amp;lt;/sld:LineSymbolizer&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Предполагается, что, управляя параметрами linejoin (miter, round, bevel) и linecap (butt, square, round), можно добиться желаемого эффекта. Например, в статье &lt;a href="http://www.guanxiaoyu.net/2008/08/31/geoserver-render-openstreetmap/"&gt;"GeoServer render OpenStreetMap"&lt;/a&gt; приводится реальный SLD-стиль, использующийся для отрисовки OSM. &lt;a href="http://www.guanxiaoyu.net/images/osgis/01.png"&gt;Как&lt;/a&gt; &lt;a href="http://www.guanxiaoyu.net/images/osgis/02.png"&gt;видно&lt;/a&gt; &lt;a href="http://www.guanxiaoyu.net/images/osgis/03.png"&gt;из&lt;/a&gt; &lt;a href="http://www.guanxiaoyu.net/images/osgis/04.png"&gt;примеров&lt;/a&gt;, хороших результатов удалось добиться только для мелких масштабов; при приближении становятся видны артефакты перекрестков и назойливые "сосисочные" окончания дорожных сегментов.&lt;br /&gt;&lt;br /&gt;Продолжив поиски и поэкспериментировав с параметрами LineSymbolizer, я сделал вывод, что возможностей SLD для отрисовки таких "толстых" дорог, какие у нас были изначально (8-14 пикс.) попросту недостаточно. Уменьшив ширину до 2-6 пикселей и выставив linecap = butt, linejoin = miter, я получил такой результат:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x1LHpJFaJqo/S_9e9o07LmI/AAAAAAAABBs/Cv6_KG0sVzg/s1600/002-result.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 228px;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/S_9e9o07LmI/AAAAAAAABBs/Cv6_KG0sVzg/s400/002-result.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5476200084930244194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Цвета я поменял на более близкие к Google Maps, но это не принципиально.&lt;br /&gt;&lt;br /&gt;Кроме этого, заметил следующее:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Для отрисовки направлений движения GeoServer в стиле tiger.sld использует TextSymbolizer, печатающий "стрелочку":&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;sld:Label&amp;gt;&lt;br /&gt;    &amp;lt;ogc:Literal&amp;gt;&amp;#x2190;&amp;lt;/ogc:Literal&amp;gt;&lt;br /&gt;&amp;lt;/sld:Label&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Однако, я столкнулся с тем, что стрелочка у меня непредсказуемо переворачивается (очевидно, это зависит от направления вектора, представляющего дорогу, относительно базовой точки). Поэтому направление движения я задаю с помощью LineSymbolizer, отрисовывающего стрелочку попиксельно.&lt;br /&gt;&lt;li&gt;Управлять порядком отрисовки дорог с помощью разных Rule внутри одного FeatureTypeStyle толком нельзя, поскольку GeoTools применяет эти правила в непредсказуемом порядке. Я вынес правило для отрисовки каждого из типа дорог в отдельный FeatureTypeStyle, после чего они стали отрисовываться в порядке, указанном в моем SLD.&lt;/ol&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/3704723600302758629-572611391899197661?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/572611391899197661/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/05/sld.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/572611391899197661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/572611391899197661'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/05/sld.html' title='&quot;Толстые&quot; дороги в SLD'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x1LHpJFaJqo/S_9a5CQXSuI/AAAAAAAABBk/t-JxG45H3V8/s72-c/001-orig.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-791423309204334837</id><published>2010-05-18T11:06:00.001+03:00</published><updated>2012-01-03T14:20:30.933+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poem'/><title type='text'>Поёт Михаил Анчаров</title><content type='html'>Илья СЕЛЬВИНСКИЙ&lt;br /&gt;&lt;br /&gt;            ВОР&lt;br /&gt;&lt;br /&gt;    Вышел на арапа. Канает буржуй.&lt;br /&gt;    А по пузу – золотой бамбер.&lt;br /&gt;    – «Мусью, скольки время?» –&lt;br /&gt;    Легко подхожу...&lt;br /&gt;    Дзззызь промеж роги!! – и амба.&lt;br /&gt;&lt;br /&gt;    Только хотел было снять часы –&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;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;br /&gt;1922&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-791423309204334837?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/791423309204334837/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/05/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/791423309204334837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/791423309204334837'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/05/blog-post.html' title='Поёт Михаил Анчаров'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1639158163455556863</id><published>2010-04-29T10:43:00.000+03:00</published><updated>2012-01-10T22:36:21.801+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Яндекс-цвет</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://yandex.ru/yandsearch?text=%D0%92%D0%BB%D1%8E%D0%B1%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%B6%D0%B0%D0%B1%D1%8B%20%D1%86%D0%B2%D0%B5%D1%82"&gt;&lt;img border="0" src="http://cg.f.yandex.net/cmdiPTNjYWEzYyZ0ZXh0PSVEMCU5RCVEMCVCMCVEMCVCOSVEMCVCNCVEMCVCOCUyMCVEMSU4MSVEMCVCMiVEMCVCRSVEMCVCOSUyMCVEMSU4NiVEMCVCMiVEMCVCNSVE/MSU4MiUyMCVEMCVCMiUyMCVEMCVBRiVEMCVCRCVEMCVCNCVEMCVCNSVEMCVCQSVEMSU4MSVEMCVCNSZsYW5nPXJ1" /&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/3704723600302758629-1639158163455556863?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1639158163455556863/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1639158163455556863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1639158163455556863'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/04/blog-post.html' title='&lt;font color=#FF0000&gt;Я&lt;/font&gt;ндекс-цвет'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-830993867370219952</id><published>2010-03-23T15:36:00.002+02:00</published><updated>2012-01-10T22:36:56.960+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poem'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Пусть здесь полежит</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;Dallas Clayton, "Very Awesome Book"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There are places in the world&lt;br /&gt;Where people do not dream…&lt;br /&gt;Of rocket-powered unicorns&lt;br /&gt;And candy cane machines&lt;br /&gt;Of magic watermelon boats&lt;br /&gt;And musical baboons&lt;br /&gt;Or teeny tiny trumpet players&lt;br /&gt;Training pet raccoons&lt;br /&gt;Yes there are places in the world&lt;br /&gt;Where people dream up dreams&lt;br /&gt;So simply un-fantastical&lt;br /&gt;And practical they seem…&lt;br /&gt;To lose all possibility&lt;br /&gt;Of thinking super things&lt;br /&gt;Of dancing wild animals&lt;br /&gt;With diamond-coated wings&lt;br /&gt;Instead they dream of furniture&lt;br /&gt;Of buying a new hat&lt;br /&gt;Of owning matching silverware&lt;br /&gt;Could you imagine that?&lt;br /&gt;Instead they lay awake at night&lt;br /&gt;Wishing for a car&lt;br /&gt;Not one that runs on jellybeans…&lt;br /&gt;But one that’s reg-u-lar&lt;br /&gt;They dream of breakfast sandwiches&lt;br /&gt;They dream of telephones&lt;br /&gt;Sometimes they even dream of dreams&lt;br /&gt;That aren’t even their own&lt;br /&gt;Yes there are places in the world&lt;br /&gt;Where dreams are almost dead&lt;br /&gt;So please my child do keep in mind&lt;br /&gt;Before you go to bed&lt;br /&gt;To dream a dream as big&lt;br /&gt;As big could ever dream to be&lt;br /&gt;Then dream a dream ten times as big&lt;br /&gt;As that one dream you see&lt;br /&gt;Then once you’ve got that dream in mind&lt;br /&gt;Please dream a million more&lt;br /&gt;And not a million quiet dreams&lt;br /&gt;A million dreams that roar!&lt;br /&gt;A million dreams so loud they scream&lt;br /&gt;So loud they sing and shout&lt;br /&gt;So super huge they say&lt;br /&gt;“Hey world! Guess what I’m dreamin’ bout”&lt;br /&gt;“I’m dreaming about everything&lt;br /&gt;that no one thought to wonder&lt;br /&gt;Dreams so big that they’ve got dreams&lt;br /&gt;And they’ve got dreams up under!”&lt;br /&gt;Please dream for those who’ve given up&lt;br /&gt;For those who’ve never tried&lt;br /&gt;Please use your dreams&lt;br /&gt;To make new dreams&lt;br /&gt;For all the dreams that died&lt;br /&gt;Cause you’re the one whose dreams can be&lt;br /&gt;Whatever dreams you want&lt;br /&gt;Whose dreams can change the way things are&lt;br /&gt;And the way that things are not&lt;br /&gt;And if they say that all your dreams&lt;br /&gt;Are too big to come true&lt;br /&gt;You tell them that I told you…&lt;br /&gt;“That’s what dreams are meant to do!”&lt;br /&gt;They’re meant to make you seem as if&lt;br /&gt;You don’t know up from down&lt;br /&gt;Because dreams are dreams and that’s why&lt;br /&gt;Dreams are worth having around!&lt;br /&gt;So when you think your dreaming’s done&lt;br /&gt;Just remember what I said&lt;br /&gt;“close your eyes my child&lt;br /&gt;and dream&lt;br /&gt;that perfect dream&lt;br /&gt;inside your head”&lt;br /&gt;&lt;br /&gt;Отсюда: &lt;a href="http://www.veryawesomeworld.com/awesomebook/inside.html"&gt;http://www.veryawesomeworld.com/awesomebook/inside.html&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/3704723600302758629-830993867370219952?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/830993867370219952/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/03/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/830993867370219952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/830993867370219952'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/03/blog-post.html' title='Пусть здесь полежит'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-9027556130345970165</id><published>2010-01-15T11:01:00.003+02:00</published><updated>2012-01-03T14:29:53.220+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Мультатор</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Нарисовал "альтернативную" заставку для одного из наших проектов.&lt;br /&gt;84 кадра, 300 КБ:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://pit.dirty.ru/lepro/2/2010/01/14/24699-164533-1980951048500ecc71b24184c0b9f1c1.gif" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-9027556130345970165?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/9027556130345970165/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/01/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/9027556130345970165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/9027556130345970165'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2010/01/blog-post.html' title='Мультатор'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2653280825146897327</id><published>2009-10-07T13:15:00.000+03:00</published><updated>2012-01-10T22:37:26.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>"Как будто ветры с гор..."</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://rian.ru/infografika/20091005/187631360-ig.html"&gt;&lt;img alt="пройти медкомиссию" border="0" src="http://vid-1.rian.ru/ig/2009/voenkomat/kdb/zheleznodorojnye.gif" /&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/3704723600302758629-2653280825146897327?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2653280825146897327/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2653280825146897327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2653280825146897327'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/10/blog-post.html' title='&quot;Как будто ветры с гор...&quot;'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3924707168519978303</id><published>2009-09-25T11:55:00.008+03:00</published><updated>2009-09-25T12:04:14.495+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crow'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Каллиграфии пост</title><content type='html'>&lt;!--&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x1LHpJFaJqo/SryGCTkeJwI/AAAAAAAAA_E/eqPYwagC48c/s1600-h/crow_hw.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 127px;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/SryGCTkeJwI/AAAAAAAAA_E/eqPYwagC48c/s400/crow_hw.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5385326628599375618" /&gt;&lt;/a&gt;--&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://sf.net/projects/opencrow"&gt;&lt;img src="http://2.bp.blogspot.com/_x1LHpJFaJqo/SryGCTkeJwI/AAAAAAAAA_E/eqPYwagC48c/s1600/crow_hw.png" border="0"&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Создать свой рукописный TTF-шрифт можно на &lt;a href="http://fontcapture.com"&gt;http://fontcapture.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S. Релиз 0.6.0, кстати, вышел))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-3924707168519978303?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3924707168519978303/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3924707168519978303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3924707168519978303'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/09/blog-post.html' title='Каллиграфии пост'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1LHpJFaJqo/SryGCTkeJwI/AAAAAAAAA_E/eqPYwagC48c/s72-c/crow_hw.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3149020152852010339</id><published>2009-07-14T17:18:00.005+03:00</published><updated>2012-01-03T14:29:53.021+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Смешной код</title><content type='html'>Несколько смешных участков кода из нескольких проектов:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Магический скрипт&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;private final String magicScript = "\nif(8==8)return;";&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Глубокая иерархия&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;public void dragEnter(DropTargetDragEvent arg0) {                                                            &lt;br /&gt;   ((DropTargetListener)getParent().getParent().getParent()&lt;br /&gt;      .getParent().getParent()).dragEnter(arg0);        &lt;br /&gt;}                                                                                                            &lt;br /&gt;                                                                                                             &lt;br /&gt;public void dragExit(DropTargetEvent arg0) {                                                                 &lt;br /&gt;   ((DropTargetListener)getParent().getParent().getParent()&lt;br /&gt;      .getParent().getParent()).dragExit(arg0);         &lt;br /&gt;                                                                                                             &lt;br /&gt;}                                                                                                            &lt;br /&gt;                                                                                                             &lt;br /&gt;public void dragOver(DropTargetDragEvent arg0) {                                                             &lt;br /&gt;   ((DropTargetListener)getParent().getParent().getParent()&lt;br /&gt;      .getParent().getParent()).dragOver(arg0);         &lt;br /&gt;                                                                                                             &lt;br /&gt;}                                                                                                            &lt;br /&gt;                                                                                                             &lt;br /&gt;public void drop(DropTargetDropEvent arg0) {                                                                 &lt;br /&gt;   ((DropTargetListener)getParent().getParent().getParent()&lt;br /&gt;      .getParent().getParent()).drop(arg0);             &lt;br /&gt;}                                                                                                            &lt;br /&gt;                                                                                                             &lt;br /&gt;public void dropActionChanged(DropTargetDragEvent arg0) {                                                    &lt;br /&gt;   ((DropTargetListener)getParent().getParent().getParent()&lt;br /&gt;      .getParent().getParent()).dropActionChanged(arg0);&lt;br /&gt;}                                                                                    &lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Магические вычисления&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;int ww0 = getWidth() ;//- 40;                          &lt;br /&gt;int hh0 = getHeight();// - 40;                         &lt;br /&gt;int sz = Math.min(ww0, hh0);                           &lt;br /&gt;                                                       &lt;br /&gt;sz = sz/4*3;                                           &lt;br /&gt;                                                       &lt;br /&gt;                                                       &lt;br /&gt;int y0 = (hh0 - sz) / 2;                               &lt;br /&gt;                                                       &lt;br /&gt;                                                       &lt;br /&gt;                                                       &lt;br /&gt;int x0 = 0;                                            &lt;br /&gt;int h = sz / 2;                                        &lt;br /&gt;int dh = sz / 4;                                       &lt;br /&gt;                                                       &lt;br /&gt;int y = y0 + h;                                        &lt;br /&gt;                                                       &lt;br /&gt;int hh = (int)Math.sqrt(h*h - h*h/4);                  &lt;br /&gt;y0 = y - hh;                                           &lt;br /&gt;                                                       &lt;br /&gt;                                                       &lt;br /&gt;Rectangle rect = new Rectangle(x0, y0 , sz,  hh + hh );&lt;br /&gt;                                                       &lt;br /&gt;int arrX[] = {x0 + dh, x0 + 3*dh, x0 + sz,             &lt;br /&gt;              x0 + 3*dh   , x0 + dh, x0};              &lt;br /&gt;int arrY[] = {y0 , y0 , y ,                            &lt;br /&gt;               y0 + hh + hh, y0 + hh + hh, y};         &lt;br /&gt;                                                       &lt;br /&gt;Polygon poly = new Polygon(arrX, arrY, 6);             &lt;br /&gt;                                                       &lt;br /&gt;return poly;                                           &lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-3149020152852010339?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3149020152852010339/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/07/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3149020152852010339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3149020152852010339'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/07/blog-post.html' title='Смешной код'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5489252661921591685</id><published>2009-07-07T17:19:00.003+03:00</published><updated>2012-01-03T13:54:15.749+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crow'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>CROW: Control the Development Workflow</title><content type='html'>&lt;p&gt;Начало истории - см. &lt;a href="http://sergey-borodavkin.blogspot.com/2009/01/reqheap-osrmt.html"&gt;здесь&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Сегодня выложил на &lt;b&gt;SourceForge.net&lt;/b&gt; исходники и snapshot-релиз своего нового Java-проекта CROW (&lt;span style="font-weight: bold;"&gt;C&lt;/span&gt;ont&lt;span style="font-weight: bold;"&gt;r&lt;/span&gt;ol the devel&lt;span style="font-weight: bold;"&gt;o&lt;/span&gt;pment &lt;span style="font-weight: bold;"&gt;w&lt;/span&gt;orkflow).&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x1LHpJFaJqo/SlNeQE-mYVI/AAAAAAAAA7U/NsndowWW1Ac/s1600-h/screenshot00.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/SlNeQE-mYVI/AAAAAAAAA7U/NsndowWW1Ac/s320/screenshot00.png" alt="" id="BLOGGER_PHOTO_ID_5355728012180873554" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; CROW - это ASPICE-совместимая система, предназначенная для управления и мониторинга:&lt;br /&gt;&lt;ul&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;&lt;li&gt;ревизий кода в системе версионного контроля&lt;/li&gt;&lt;li&gt;тестов&lt;/li&gt;&lt;/ul&gt;В настоящее время программа позволяет:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;добавлять/удалять/редактировать все артефакты, перечисленные выше&lt;/li&gt;&lt;li&gt;устанавливать зависимости между ними (например, &lt;span style="font-style: italic;"&gt;"changelist &lt;span style="font-weight: bold;"&gt;#800&lt;/span&gt; реализует техническое требование &lt;span style="font-weight: bold;"&gt;REQ-007-DAT-DragAndDrop&lt;/span&gt;, которое описывает требование заказчика &lt;span style="font-weight: bold;"&gt;Support drag&amp;amp;drop of DAT-files&lt;/span&gt;"&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;строить &lt;span style="font-weight: bold;"&gt;матрицу трассировки &lt;/span&gt;(RTM, Requirements Traceability Matrix), показывающую описанные выше отношения, в т.ч. транзитивные, т.е. связь между CRS и тестом через код, детальный дизайн, архитектуру и TRS программа вам покажет)&lt;/li&gt;&lt;li&gt;создавать &lt;span style="font-weight: bold;"&gt;метки &lt;/span&gt;и присваивать их различным артефактам, что позволяет определять и фиксировать т.н. &lt;span style="font-weight: bold;"&gt;baseline&lt;/span&gt; для требований, ревизий, тестов и пр.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Немного о реализации:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JRE 1.6, в более старых не тестировал и не хочу.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GUI в виде Swing-клиента. Пишу для Windows, но в Linux тоже проверял - явных косяков нет.&lt;/li&gt;&lt;li&gt;База - через Hibernate. В текущей реализации используется PostgreSQL.&lt;/li&gt;&lt;li&gt;Использую docking framework VLDocking, чтобы все окошки можно было перетаскивать как нравится.&lt;/li&gt;&lt;li&gt;Пишу все сам, тестировщиков также нет. Добровольцы призываются!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Адрес проекта на SourceForge - &lt;a href="http://sourceforge.net/projects/opencrow/"&gt;http://sourceforge.net/projects/opencrow/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-5489252661921591685?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5489252661921591685/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/07/crow-control-development-workflow.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5489252661921591685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5489252661921591685'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/07/crow-control-development-workflow.html' title='CROW: Control the Development Workflow'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_x1LHpJFaJqo/SlNeQE-mYVI/AAAAAAAAA7U/NsndowWW1Ac/s72-c/screenshot00.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-6935348310608670675</id><published>2009-07-03T13:22:00.002+03:00</published><updated>2012-01-03T14:29:53.175+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Баг в JTable: теряется множественный selection при начале DnD</title><content type='html'>Пишу класс, перегружающий JTable, и снова вижу баг, который видел еще под JRE 1.4.2 году в 2006-м. &lt;br /&gt;&lt;br /&gt;Ссылка на баг: &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6195469"&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6195469&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ошибка заключается в том, что, если в JTable выделить несколько ячеек и попытаться их перетащить (drag &amp; drop), то, сразу же после нажатия кнопки мыши, selection сбрасывается со всех ячеек, кроме той, на которую непосредстенно нажали.&lt;br /&gt;&lt;br /&gt;Воркараунд, приведенный по ссылке выше, по крайней мере в 1.6 не работает. Поэтому выкладываю свой класс FixedTableUI, которым можно подменить тот класс, который предлагается в воркараунде. Работает с 1.4 по 1.6 включительно:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   /**&lt;br /&gt;    * This internal helper class helps to solve two bugs:&lt;br /&gt;    * The first is disable row selection with mouse drag&lt;br /&gt;    * The second is allow handling of multiple selected rows without need to&lt;br /&gt;    * hold a Shift key.&lt;br /&gt;    */   &lt;br /&gt;   private class FixedTableUI extends BasicTableUI {&lt;br /&gt;      private MouseInputHandler handler = new MouseInputHandler() {&lt;br /&gt;         &lt;br /&gt;         private boolean isShiftDownInMousePressed = false;&lt;br /&gt;&lt;br /&gt;         &lt;br /&gt;         public void mouseDragged(MouseEvent e) {&lt;br /&gt;            // Do nothing here!&lt;br /&gt;         }&lt;br /&gt;         &lt;br /&gt;         public void mousePressed(MouseEvent e) {&lt;br /&gt;            isShiftDownInMousePressed = e.isShiftDown();             &lt;br /&gt;            int row = rowAtPoint(e.getPoint());&lt;br /&gt;            if (!getSelectionModel().isSelectedIndex(row)) {&lt;br /&gt;               super.mousePressed(e);&lt;br /&gt;            } else {                &lt;br /&gt;               if (e.isControlDown()) {&lt;br /&gt;                  if (getSelectionModel().isSelectedIndex(row)) {&lt;br /&gt;                     getSelectionModel().removeSelectionInterval(row, row);&lt;br /&gt;                  }&lt;br /&gt;               }&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;         &lt;br /&gt;         public void mouseReleased(MouseEvent e) {&lt;br /&gt;            super.mouseReleased(e);&lt;br /&gt;            int row = rowAtPoint(e.getPoint());&lt;br /&gt;            int col = columnAtPoint(e.getPoint());&lt;br /&gt;            int[] selRows = getSelectedRows();&lt;br /&gt;            if (selRows.length &gt; 0) {&lt;br /&gt;               if (!e.isControlDown() &amp;&amp; !e.isShiftDown() &amp;&amp;&lt;br /&gt;                     !isShiftDownInMousePressed) {             &lt;br /&gt;                  getSelectionModel().setSelectionInterval(row, row);&lt;br /&gt;               }&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;      };&lt;br /&gt;      &lt;br /&gt;      protected MouseInputListener createMouseInputListener() {&lt;br /&gt;         return handler;&lt;br /&gt;      }     &lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-6935348310608670675?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/6935348310608670675/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/07/jtable-selection-dnd.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6935348310608670675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6935348310608670675'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/07/jtable-selection-dnd.html' title='Баг в JTable: теряется множественный selection при начале DnD'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-7472118544239340095</id><published>2009-06-10T09:49:00.005+03:00</published><updated>2012-01-03T14:29:14.195+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>"Начало крупномасштабной кибервойны", или "Во всем виноват Гурвиц"</title><content type='html'>&lt;p&gt;Тут вдруг оказалось, что небезызвестный многим &lt;a href="http://today.od.ua/"&gt;http://today.od.ua&lt;/a&gt; лёг. Причина этому - взлом английского хостинга, на котором он был расположен. В результате хакерской атаки было положено порядка 100,000 сайтов и подробнее об этом можно почитать &lt;a href="http://www.theregister.co.uk/2009/06/09/lxlabs_funder_death/"&gt;здесь&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Еще одна подробность: хозяин компании, разработавшей софт для этого хостинга, повесился. По результатам анализа, софт содержал 24 уязвимости и индусский директор, похоже, этого перенести не смог.&lt;/p&gt;&lt;p&gt;Самое смешное - &lt;a href="http://atv.odessa.ua/news/2009/06/09/ataka_hakerov_1061.html"&gt;вот что говорят по этому поводу местные медиа-ресурсы&lt;/a&gt;:&lt;blockquote&gt;Александр Филиппов, и.о. генерального директора ТК «АТВ»: ресурсы, которые были взломаны, они очень неудобны городским властям, они очень неудобны руководству страны. На сегодняшний день нам не хотелось бы говорить о том, что это — просто совпадение. По простой причине: слишком эти совпадения выстраиваются в стройную взаимосвязь. Почему-то сайты, провластные мэрии, ни один не пострадал, не потерпел какого-то ущерба.&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Вот так простой хакерский налет превращается в "&lt;em&gt;начало крупномасштабной кибервойны&lt;/em&gt;".&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-7472118544239340095?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/7472118544239340095/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7472118544239340095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7472118544239340095'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/06/blog-post.html' title='&quot;Начало крупномасштабной кибервойны&quot;, или &quot;Во всем виноват Гурвиц&quot;'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1289060606263003607</id><published>2009-05-29T07:05:00.003+03:00</published><updated>2012-01-03T13:54:15.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>java.io.tmpdir в Windows и Linux</title><content type='html'>Только что попробовал запустить в Убунту программу, разработанную под Windows. Ну что сказать - был удивлен.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;System.getProperty("java.io.tmpdir")&lt;/code&gt; в Windows возвращает что-то наподобие:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;C:\Windows\Temp\&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;А в Linux мне приходит вот что:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/tmp&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Обратите внимание - в первом случае завершающий слеш есть, а во втором - нет, что требует дополнительной проверки в коде.&lt;br /&gt;&lt;br /&gt;"Java: написано однажды - тестируем везде" (c)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1289060606263003607?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1289060606263003607/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/05/javaiotmpdir-windows-linux.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1289060606263003607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1289060606263003607'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/05/javaiotmpdir-windows-linux.html' title='java.io.tmpdir в Windows и Linux'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1890056353231559371</id><published>2009-05-21T22:07:00.002+03:00</published><updated>2009-05-21T22:14:26.305+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Пропали ярлычки на рабочем столе!!!</title><content type='html'>Сегодня вдруг осознал, что уже несколько дней мой рабочий стол в Ubuntu 9.04 девственно чист - т.е. с него исчезли все ярлычки! Кроме того, правый клик тоже не работает и не приводит к появлению контекстного меню. Что самое обидное - я ну ничегошеньки не делал такого, что могло бы к этому привести :(&lt;br /&gt;&lt;br /&gt;Однако, в папке Desktop все осталось как прежде. Permissions также не изменились.&lt;br /&gt;&lt;br /&gt;Погуглив немного, нашел решение:&lt;br /&gt;&lt;br /&gt;1. Запустить gconf-editor&lt;br /&gt;2. Выбрать apps - nautilus - preferences&lt;br /&gt;3. Найти чекбокс show_desktop. Он будет отмечен, что странно.&lt;br /&gt;4. Нажать по нему два раза мышкой, в возникшем окне нажать ОК.&lt;br /&gt;5. Ура, ярлычки снова на месте!&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/3704723600302758629-1890056353231559371?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1890056353231559371/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/05/blog-post.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1890056353231559371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1890056353231559371'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/05/blog-post.html' title='Пропали ярлычки на рабочем столе!!!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2179114368119792061</id><published>2009-05-20T13:44:00.003+03:00</published><updated>2012-01-03T14:29:52.973+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>JTabbedPane и фокус в ней</title><content type='html'>&lt;p&gt;Сегодня нашел новый (для меня, разумеется) баг в Swing. Проблема заключается в том, что если на панели есть JTabbedPane, а в ней лежит компонент, который должен получить фокус после того, как происходит переключение на соответствующий таб, то фокус этот он не получит. &lt;/p&gt;&lt;p&gt;Вот неработающий код:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;tabPane.addChangeListener(new ChangeListener() {&lt;br /&gt;  public void stateChanged(ChangeEvent e) {&lt;br /&gt;    txtName.requestFocusInWindow();&lt;br /&gt;  }    &lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Баг &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5089436"&gt;#5089436&lt;/a&gt; (а ему уже около 5 лет) предлагает воркэраунд, связанный с обрамлением вызова &lt;code&gt;requestFocusInWindow()&lt;/code&gt; в  &lt;code&gt;invokeLater()&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;tabPane.addChangeListener(new ChangeListener() {&lt;br /&gt;  public void stateChanged(ChangeEvent e) {&lt;br /&gt;    EventQueue.invokeLater(new Runnable() {    &lt;br /&gt;      public void run() {&lt;br /&gt;        txtName.requestFocusInWindow();&lt;br /&gt;      });&lt;br /&gt;  }    &lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;А в остальном Свинг по-прежнему хорош.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2179114368119792061?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2179114368119792061/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/05/jtabbedpane.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2179114368119792061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2179114368119792061'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/05/jtabbedpane.html' title='JTabbedPane и фокус в ней'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2240773467767979454</id><published>2009-04-28T16:51:00.003+03:00</published><updated>2012-01-03T14:29:52.978+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>На пути к оптимизации</title><content type='html'>Только что наткнулся на такой вот участок кода в нашем приложении:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color=#444444&gt;&lt;br /&gt;// This method produces a HUGE overhead&lt;br /&gt;//TreeNodesUpdater.updateComponentTreeUI(this);&lt;br /&gt;  &lt;br /&gt;// This works, but cuts end part of lines in bold (produces "...")&lt;br /&gt;/*this.invalidate();&lt;br /&gt;this.validate();&lt;br /&gt;this.repaint();*/&lt;br /&gt;  &lt;br /&gt;// So, we just switch the renderer to null and back to the original one,&lt;br /&gt;// which revalidates the sizes&lt;/font&gt;&lt;font color=blue&gt;&lt;br /&gt;setCellRenderer(null);&lt;br /&gt;TreeCellRenderer renderer = createCellRenderer();&lt;br /&gt;&lt;br /&gt;setCellRenderer(renderer); &lt;/font&gt;&lt;br /&gt;&lt;/pre&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/3704723600302758629-2240773467767979454?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2240773467767979454/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/blog-post_28.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2240773467767979454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2240773467767979454'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/blog-post_28.html' title='На пути к оптимизации'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2760528259473122952</id><published>2009-04-24T15:22:00.000+03:00</published><updated>2012-01-03T14:29:14.105+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Какой вы ученый?</title><content type='html'>&lt;table border="0" style="width: 400px; border: 1px solid #EEEEEE;"&gt;&lt;tr&gt;&lt;td style="text-align: center; margin: 0px; padding: 8px; background-color: #006680; color: #FFFFFF; font: 16px Arial"&gt;О, да вы - математик.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: left; padding: 8px; background-color: #FFFFFF; color: #000000; font: 12px Arial"&gt;&lt;img src="http://img-fotki.yandex.ru/get/53/orgchem413.0/0_f861_4ad0642a_M.jpg" align="left" alt="image" /&gt; Вы из тех, кто проверяет алгеброй гармонию и при проверке находит в гармонии ошибки. Ваша логика настолько безупречна, что порой смахивает на безумие. К людям вы относитесь осторожно, зато с компьютером вы даже не на "ты", а на "ты, сволочь". Вас порой упрекают в отрыве от реальности и в витании в облаках. Но, может быть, весь этот мир - всего лишь игра вашего блестящего ума.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; margin: 0px; padding: 8px; background-color: #006680; font: 12px Arial"&gt;&lt;a href="http://aeterna.ru/test.php?link=tests:42622" style="color: #FFFFFF"&gt;Пройти тест&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2760528259473122952?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2760528259473122952/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2760528259473122952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2760528259473122952'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/blog-post.html' title='Какой вы ученый?'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-7683342434187079714</id><published>2009-04-23T14:08:00.002+03:00</published><updated>2012-01-10T22:38:20.639+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Пропустили дату: отмена общей поддержки Windows XP</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Выпущенные продукты&lt;/td&gt;&lt;td&gt;Дата начала реализации&lt;/td&gt;&lt;td&gt;Отмена общей поддержки&lt;/td&gt;&lt;td&gt;Отмена расширенной поддержки&lt;/td&gt;&lt;td&gt;Истечение срока действия пакета обновления&lt;/td&gt;&lt;td&gt;Примечания&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Windows XP Professional&lt;/td&gt;&lt;td&gt;31.12.2001&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;14.04.2009&lt;/span&gt;&lt;/td&gt;&lt;td&gt;08.04.2014&lt;/td&gt;&lt;td&gt;30.08.2005&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Источник: &lt;a href="http://support.microsoft.com/lifecycle/?p1=3223"&gt;microsoft.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;А мы тут все вместе дату пропустили: 14 апреля 2009 г., когда прекратилась &lt;span style="font-style: italic;"&gt;общая поддержка&lt;/span&gt; Windows XP Pro!&lt;br /&gt;&lt;br /&gt;Что это значит: для поддержки исправлений, не связанных с безопасностью, теперь требуется дополнительное соглашение на поддержку, заключенное в течение 90 дней после окончания основной фазы поддержки.&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/3704723600302758629-7683342434187079714?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/7683342434187079714/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/windows-xp.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7683342434187079714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7683342434187079714'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/windows-xp.html' title='Пропустили дату: отмена общей поддержки Windows XP'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2730245323769005579</id><published>2009-04-22T13:20:00.007+03:00</published><updated>2012-01-03T14:29:14.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>The Domain Chronicles</title><content type='html'>Итак, в 2002 году я создаю веб-сайт на &lt;a href="http://brinkster.com"&gt;Brinkster.com&lt;/a&gt;, чтобы впервые приобщиться к волшебному миру ASP и прочего server-side программирования. Сажусь на бесплатный хостинг.&lt;br /&gt;&lt;br /&gt;Проходит год, и на выставке HiTech 2003, проходящей в Одессе, я показываю &lt;a href="http://lonewolf.od.ua/uf"&gt;Украинский Феномен&lt;/a&gt;. Программа эта настолько нравится некоему Константину, компания которого в то время предоставляла услуги веб-хостинга и регистрации доменов, что он берется сделать мне домен, причем бесплатно. Таким образом мой сайт получает имя &lt;a href="http://lonewolf.od.ua"&gt;lonewolf.od.ua&lt;/a&gt;. Однако, прав для управления им у меня нет, а Константин теряется спустя полгода бесследно. Домен с того времени живет и работает сам по себе.&lt;br /&gt;&lt;br /&gt;История продолжается в январе 2009, когда домен работать перестает. На сайте &lt;a href="http://ns.od.ua"&gt;http://ns.od.ua&lt;/a&gt; я узнаю о том, что, в соответствии с правилами доменной зоны OD.UA, все желающие регистраторы должны перезаключить с ними договор до января 2009 г. Домены, зарегистрированные до января 2009 г. прочими регистраторами, в феврале переводятся в состояние ON HOLD и удаляются спустя месяц.&lt;br /&gt;&lt;br /&gt;Не желая терять привычное имя сайта, я жду месяц, потом туплю еще один, и в апреле 2009 г., наконец, убедившись, что домен lonewolf.od.ua снова свободен, покупаю его через &lt;a href="http://www.te.net.ua"&gt;TeNeT&lt;/a&gt;, но уже самостоятельно.&lt;br /&gt;&lt;br /&gt;Ура, домен снова мой! Осталось связать его с моим хостингом на Brinkster. Для начала - сменить нейм-серверы от ТеНеТ на нейм-серверы от Brinkster. В ТеНеТовской админке эту операцию выполнить нельзя, поэтому пишу админам напрямую. Делают. После этого зайти в админку, чтобы прописать IP сайта, я уже не могу. Пишу письмо - отвечают, что после внесения новых нейм-серверов они запретили мне доступ в админку, поскольку новые серверы - не их. Ок, теперь я имею нерабочий домен, который нельзя поправить.&lt;br /&gt;&lt;br /&gt;Обращаюсь в Brinkster. После недолгих раздумий, раз пошел такой праздник, покупаю себе хостинг-план "Rookie" за $4/месяц. Спустя полчаса, индус на другом конце Live Help добавляет домен lonewolf.od.ua к моему аккаунту, а еще спустя четыре часа мой сайт становится доступен по адресу &lt;a href="http://lonewolf.od.ua"&gt;lonewolf.od.ua&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;А вот теперь вопрос - нужен ли мне сайт, если есть &lt;a href="http://sergey-borodavkin.blogspot.com"&gt;блог&lt;/a&gt;, &lt;a href="http://twitter.com/sborodavkin"&gt;твиттер&lt;/a&gt;, &lt;a href="http://www.linkedin.com/in/sergeyborodavkin"&gt;линкедин&lt;/a&gt;, &lt;a href="http://picasaweb.google.com/sborodavkin"&gt;пикаса&lt;/a&gt;, &lt;a href="http://vkontakte.ru/id4885804"&gt;вконтакте&lt;/a&gt;, &lt;a href="http://zhivtonechocho.mybrute.com/dojo"&gt;армия воинов на mybrute.com&lt;/a&gt;?..&lt;br /&gt;&lt;br /&gt;А пусть будет. На сайте можно &lt;a href="http://lonewolf.od.ua/new/programs.asp?id=3"&gt;Матричный Вычислитель&lt;/a&gt; зарегистрировать, если кто захочет. Или &lt;a href="http://lonewolf.od.ua/new/cv.asp?view=web"&gt;резюме&lt;/a&gt; посмотреть. Или еще что ого-го какое мощное забабахать!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Мой домен опять со мной,&lt;br /&gt;Мой домен стал снова мой!&lt;br /&gt;Ля-ля-ля, ля-ля-ля,&lt;br /&gt;Мой домен опять живой!&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2730245323769005579?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2730245323769005579/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/domain-chronicles.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2730245323769005579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2730245323769005579'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/domain-chronicles.html' title='The Domain Chronicles'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3541315502858329614</id><published>2009-04-09T14:23:00.003+03:00</published><updated>2012-01-10T22:38:50.429+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>MyBrute.com</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Нашу комнату посетила эпидемия &lt;b&gt;MyBrute.com&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Я, например, создал персонажа ZhivtoneChoCho. По адресу &lt;a href="http://zhivtonechocho.mybrute.com/"&gt;http://zhivtonechocho.mybrute.com&lt;/a&gt; с ним можно подраться.&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/3704723600302758629-3541315502858329614?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3541315502858329614/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/mybrutecom.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3541315502858329614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3541315502858329614'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/04/mybrutecom.html' title='MyBrute.com'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-8418762761174887082</id><published>2009-03-31T09:07:00.001+03:00</published><updated>2012-01-10T22:39:18.540+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poem'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Австралия</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BXqwrQd-_Ss&amp;hl=ru&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BXqwrQd-_Ss&amp;hl=ru&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&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;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;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;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;1994&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-8418762761174887082?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/8418762761174887082/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8418762761174887082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8418762761174887082'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/blog-post.html' title='Австралия'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4082655166467068667</id><published>2009-03-03T20:13:00.000+02:00</published><updated>2012-01-10T22:39:37.270+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>speedtest.net</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://www.speedtest.net/"&gt;&lt;img src="http://www.speedtest.net/result/422191231.png" /&gt;&lt;/a&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/3704723600302758629-4082655166467068667?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4082655166467068667/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/speedtestnet.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4082655166467068667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4082655166467068667'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/speedtestnet.html' title='speedtest.net'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5082463274753824211</id><published>2009-03-03T14:14:00.000+02:00</published><updated>2012-01-10T22:40:05.632+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Я - хороший PHP-программист!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://www.corp.mamba.ru/test/promo.phtml"&gt;&lt;img border="0" src="http://www.corp.mamba.ru/test/widget.phtml?id=36302" /&gt;&lt;/a&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/3704723600302758629-5082463274753824211?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5082463274753824211/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/php.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5082463274753824211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5082463274753824211'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/php.html' title='Я - хороший PHP-программист!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2803419737431343620</id><published>2009-03-03T11:36:00.003+02:00</published><updated>2012-01-10T22:40:23.566+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Лекции по этнографии - для меня счастье, меня зовут Сева, bonsoir, здрасте!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Что-то за-лытдыбрился я в последнее время... Встречайте - рэпер Сева!&lt;br /&gt;&lt;object height="353" width="470"&gt;&lt;param name="movie" value="http://video.rutube.ru/9fe92f6dc88ea577a087a22015149825"&gt;&lt;/param&gt;&lt;param name="wmode" value="window"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="flashVars" value="uid=594132"&gt;&lt;/param&gt;&lt;embed src="http://video.rutube.ru/9fe92f6dc88ea577a087a22015149825" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowfullscreen="true" flashvars="uid=594132"&gt;&lt;/embed&gt;&lt;/object&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/3704723600302758629-2803419737431343620?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2803419737431343620/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/bonsoir.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2803419737431343620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2803419737431343620'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/03/bonsoir.html' title='Лекции по этнографии - для меня счастье, меня зовут Сева, bonsoir, здрасте!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-435369348881307151</id><published>2009-02-26T16:19:00.001+02:00</published><updated>2012-01-10T22:40:40.965+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='poem'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Коты-коты-коты</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;object height="353" width="470"&gt;&lt;param name="movie" value="http://video.rutube.ru/80813ae629baf3173fab2b131ca21ab3"&gt;&lt;/PARAM&gt;&lt;param name="wmode" value="window"&gt;&lt;/PARAM&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/PARAM&gt;&lt;embed src="http://video.rutube.ru/80813ae629baf3173fab2b131ca21ab3" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" &gt;&lt;/EMBED&gt;&lt;/OBJECT&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;br /&gt;&lt;br /&gt;коты-коты-коты &lt;br /&gt;затекаете вы в крови &lt;br /&gt;коты-коты-коты &lt;br /&gt;вы антонимы доброты &lt;br /&gt;коты-коты-коты &lt;br /&gt;лишь кошки вам нужны! (2 раза) &lt;br /&gt;&lt;br /&gt;и чтоб не мочились &lt;br /&gt;на вас и не злились &lt;br /&gt;его оперируй &lt;br /&gt;на всю жизнь кастрируй &lt;br /&gt;тогда будет смирненький &lt;br /&gt;котенька миленький &lt;br /&gt;не будет рвать уши &lt;br /&gt;(далее неразборчиво) &lt;br /&gt;&lt;br /&gt;коты-коты-коты &lt;br /&gt;затекаете вы в крови &lt;br /&gt;коты-коты-коты &lt;br /&gt;вы антонимы доброты &lt;br /&gt;коты-коты-коты &lt;br /&gt;лишь кошки вам нужны! (3 раза)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-435369348881307151?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/435369348881307151/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/blog-post_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/435369348881307151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/435369348881307151'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/blog-post_26.html' title='Коты-коты-коты'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4901462910256267593</id><published>2009-02-26T14:20:00.003+02:00</published><updated>2009-02-26T14:24:59.358+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Приват-Надра: А всё...</title><content type='html'>&lt;div&gt;А я все-таки успел сделать скриншот со страницы браузера с сайтом &lt;a href="https://privat24.pbank.com.ua/p24/login?oper=rds"&gt;Приват24&lt;/a&gt;. Сейчас там этой веселой картинки уже нет, но сегодня утром их главная страничка выглядела вот так:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x1LHpJFaJqo/SaaJVhefn_I/AAAAAAAAAzQ/Mwd0wZTiBQU/s1600-h/privat-nadra.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 364px;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/SaaJVhefn_I/AAAAAAAAAzQ/Mwd0wZTiBQU/s400/privat-nadra.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5307080213759238130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Короче, банк Надра, всё бля))&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4901462910256267593?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4901462910256267593/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4901462910256267593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4901462910256267593'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/blog-post.html' title='Приват-Надра: А всё...'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1LHpJFaJqo/SaaJVhefn_I/AAAAAAAAAzQ/Mwd0wZTiBQU/s72-c/privat-nadra.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2395557900425812375</id><published>2009-02-16T15:34:00.003+02:00</published><updated>2012-01-10T22:41:02.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Какого хера, или что такое crazy admin ru?!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-size: 130%;"&gt;А вот какого, спрашивается, на &lt;a href="http://crazyadmin.ru/category/programming"&gt;http://crazyadmin.ru/category/programming&lt;/a&gt; висят все посты с моего бложика?&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Что это за сайт такой, вообще? Кто знает? Дерут посты через RSS? Я вот смотрю - ни рекламы там особой нет, ничего такого... Какой им смысл?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPD 17.02.09: &lt;/span&gt;дальнейшие исследования вывели на определение термина &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Сплог &lt;/span&gt;&lt;/span&gt;в &lt;a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%BB%D0%BE%D0%B3"&gt;русской википедии&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: black; font-style: italic;"&gt;Сплог по своему виду похож на &lt;a href="http://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%B3" title="Блог"&gt;блог&lt;/a&gt;, основное отличие — в &lt;a href="http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82" title="Контент"&gt;контенте&lt;/a&gt;. Контент сплогов не является качественным или уникальным, часто он генерируется автоматически с использованием других ресурсов — популярных &lt;a class="mw-redirect" href="http://ru.wikipedia.org/wiki/Rss" title="Rss"&gt;rss&lt;/a&gt;-лент и блогов.&lt;br /&gt;Часто сплоги создаются в большом количестве — они не ориентированы на постоянную аудиторию пользователей, но за счёт большого количества сплогов и получения небольшого объёма &lt;a href="http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D1%84%D0%B8%D0%BA" title="Трафик"&gt;трафика&lt;/a&gt; с &lt;a class="mw-redirect" href="http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%B8%D0%BA" title="Поисковик"&gt;поисковиков&lt;/a&gt;, достигается необходимый эффект привлечения определённого количества читателей. По сути пользователи ищут нужную им &lt;a href="http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F" title="Информация"&gt;информацию&lt;/a&gt;, а поисковые машины частично выводят их на сплоги, в результате же пользователи не находят нужную им информацию, но видят определённую &lt;a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0" title="Реклама"&gt;рекламу&lt;/a&gt; и &lt;a class="mw-redirect" href="http://ru.wikipedia.org/wiki/%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8" title="Ссылки"&gt;ссылки&lt;/a&gt; на другие &lt;a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%81%D1%83%D1%80%D1%81" title="Ресурс"&gt;ресурсы&lt;/a&gt;.&lt;/blockquote&gt;Короче, таки в рекламе дело. Ну ладно, заодно и я попиарюсь))&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2395557900425812375?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2395557900425812375/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/crazy-admin-ru.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2395557900425812375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2395557900425812375'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/crazy-admin-ru.html' title='Какого хера, или что такое crazy admin ru?!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5563134197525944723</id><published>2009-02-13T08:43:00.003+02:00</published><updated>2012-01-03T14:40:56.258+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Война подчеркивания и дефиса: разные стандарты именования в Maven и Eclipse PDE</title><content type='html'>В одном из наших Eclipse-проектов сборка происходит следующим образом:&lt;br /&gt;&lt;br /&gt;1. Сначала мы собираем target-платформу для системы &lt;a href="http://udig.refractions.net"&gt;uDig (user-friendly Internet GIS)&lt;/a&gt; - набор OSGi-bundles. Состоит она из:&lt;ul&gt;&lt;li&gt;&lt;a href="http://geoapi.sourceforge.net"&gt;GeoAPI &lt;/a&gt;и ее зависимостей&lt;/li&gt;&lt;li&gt;&lt;a href="http://geotools.codehaus.org"&gt;GeoTools &lt;/a&gt;и ее зависимостей&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Сборка GeoAPI и GeoTools выпоняется с помощью &lt;a href="http://maven.apache.org"&gt;Apache Maven&lt;/a&gt;, который автоматически скачивает нужные зависимости с прописанных репозиториев, запускает компилятор, генерирует MANIFEST.MF для OSGi-бандлов - короче, делает все. В результате мы имеем папку с набором JAR-файлов примерно следующего содержания:&lt;br /&gt;...&lt;br /&gt;java3d.osgi.vecmath&lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;1.3.1.jar&lt;br /&gt;javax.media.jai.osgi.jai_imageio&lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;1.1.0.jar&lt;br /&gt;net.opengis.ows-2.6.0&lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;SNAPSHOT.jar&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Эта папка - не что иное, как target platform для компиляции uDig, которая делается через PDE.&lt;br /&gt;&lt;br /&gt;2. Мы запускаем Eclispe PDE batch build и компилируем uDig. В результате мы получаем продукт uDig, в папке plugins которого, среди прочих, оказываются уже такие файлы:&lt;br /&gt;...&lt;br /&gt;java3d.osgi.vecmath&lt;span style="font-weight: bold;"&gt;_&lt;/span&gt;1.3.1.jar&lt;br /&gt;javax.media.jai.osgi.jai_imageio&lt;span style="font-weight: bold;"&gt;_&lt;/span&gt;1.1.0.jar&lt;br /&gt;net.opengis.ows_2.6.0_SNAPSHOT.jar&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Первый вывод уже очевиден:&lt;br /&gt;&lt;blockquote&gt;Maven использует "-" (дефис) для отделения номера версии от имени бандла, в то время как PDE использует для этого "_" (подчеркивание)&lt;br /&gt;&lt;/blockquote&gt;3. Для того, чтобы собрать наш проект, нам нужна платформа в составе:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OSGi-бандлы из папки plugins системы uDig&lt;/li&gt;&lt;li&gt;наши проприетарные модули и их зависимости&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Причем сборка второго пункта также выполняется с помощью Maven. Соответственно, нам очень удобно использовать модули, уже находящиеся в локальном m2-репозитории - такие, как, например, java3d.osgi.vecmath&lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;1.3.1.jar. Однако, когда мы пытаемся добавить к нашим плагинам плагины из uDig, начинаются проблемы, поскольку в uDig, как мы помним, соответствующая библиотека называется уже java3d.osgi.vecmath&lt;span style="font-weight: bold;"&gt;_&lt;/span&gt;1.3.1.jar (подчеркивание вместо дефиса). Поэтому в результате простого копирования файлов получаем следующую картину:&lt;br /&gt;...&lt;br /&gt; java3d.osgi.vecmath&lt;span style="font-weight: bold;"&gt;_&lt;/span&gt;1.3.1.jar&lt;br /&gt;java3d.osgi.vecmath&lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;1.3.1.jar&lt;br /&gt; javax.media.jai.osgi.jai_imageio&lt;span style="font-weight: bold;"&gt;_&lt;/span&gt;1.1.0.jar&lt;br /&gt; javax.media.jai.osgi.jai_imageio&lt;span style="font-weight: bold;"&gt;-&lt;/span&gt;1.1.0.jar&lt;br /&gt; net.opengis.ows_2.6.0_SNAPSHOT.jar&lt;br /&gt; net.opengis.ows_2.6.0-SNAPSHOT.jar&lt;br /&gt; ...&lt;br /&gt;Т.е. набор идентичных по смылу OSGi-бандлов, но продублированных в файлах с разными именами.&lt;br /&gt;&lt;br /&gt;Пока что, чтобы решить эту проблему, я стал используюVBS-скрипт, который переименовывает файлы по заданному регулярному выражению с тем, чтобы заменить подчеркивание на дефис. Хотя, наверное, нужно делать это прямо в PDE-сборке и заменять наоборот - дефис на подчеркивание...&lt;br /&gt;&lt;br /&gt;А &lt;span style="font-style: italic; font-weight: bold;"&gt;война дефиса и подчеркивания&lt;/span&gt;, между прочим, разгорелась нешуточная. В мейл-листах Maven утверждают, что единственно верный разделитель - это дефис. Эклипс пока что понимает только подчеркивание, хотя в 3.5 &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=174362"&gt;обещают&lt;/a&gt; это исправить (в 3.5 М4, вроде, уже вставили соответствующий патч).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-5563134197525944723?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5563134197525944723/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/maven-eclipse-pde.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5563134197525944723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5563134197525944723'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/02/maven-eclipse-pde.html' title='Война подчеркивания и дефиса: разные стандарты именования в Maven и Eclipse PDE'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3268639809234282703</id><published>2009-01-30T11:49:00.003+02:00</published><updated>2012-01-03T14:40:56.207+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Системы управления требованиями: ReqHeap и OSRMT</title><content type='html'>Вчера попользовал две системы управления требованиями: Reqheap (&lt;a href="http://reqheap.sourceforge.net/"&gt;http://reqheap.sourceforge.net/&lt;/a&gt;) и OSRMT (Open Source Requirement Management Tool, &lt;a href="http://osrmt.com/"&gt;http://osrmt.com&lt;/a&gt;). Сказать имею следующее:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ReqHeap&lt;/span&gt; сделан на связке PHP+MySQL, поднимается легко, мыслит в терминах проектов, подпроектов, требований и тест-кейсов. Поддерживает много пользователей и разграничение прав. Однако, проследить traceability, скажем, от требований к тестам, построить матрицу и пр. не представляется возможным - нет средств. Короче, просто удобная хранилка всего вышеперечисленного.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OSRMT&lt;/span&gt; - могучая вещь, имеющая как Swing-интерфейс, так и веб-клиента. Сделана на Java. Ее словарь, вкратце, таков:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Requirement&lt;/li&gt;&lt;li&gt;Feature&lt;/li&gt;&lt;li&gt;Design&lt;/li&gt;&lt;li&gt;Implementation&lt;/li&gt;&lt;li&gt;Test&lt;/li&gt;&lt;/ul&gt;Система позволяет строить traceability matrix от всего ко всему, рисовать диаграммы зависимостей и пр. Из недостатков можно отметить убогость веб-клиента (например, вводишь текст требования в Swing-приложение, форматируешь его там, а потом смотришь в веб - а оно все сплошняком порет. Уж хотя бы &amp;lt;pre&amp;gt;-теги ставило... Кроме того, странным кажется то, что веб-клиент и Swing-клиент по умолчанию использую разные БД, находящиеся в разных папках.&lt;br /&gt;&lt;br /&gt;И зачем было так делать?&lt;br /&gt;&lt;br /&gt;Короче, вопрос поиска (бесплатной) подходящей системы управления требованиями, позволяющей отслеживать их до дизайна, имплементации, тестов и обратно, пока остается открытым.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-3268639809234282703?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3268639809234282703/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/01/reqheap-osrmt.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3268639809234282703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3268639809234282703'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/01/reqheap-osrmt.html' title='Системы управления требованиями: ReqHeap и OSRMT'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-6584979936785312237</id><published>2009-01-27T15:45:00.004+02:00</published><updated>2012-01-10T22:42:24.707+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 8.10 + WiFi + WPA security</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Потратил пол-субботы на то, чтобы настроить беспроводной доступ в Интернет с ноута с новым Linux Ubuntu 8.10 Intrepid Ibex. Прошерстив найденные линки, я понял, что именно мой встроенный беспроводной адаптер BroadCom BCM4318 конфигурируется в линуксе &lt;span style="font-style: italic;"&gt;особо сложным образом&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Итак, задача. Дано: в квартиру заведён Интернет по сетевому кабелю и воткнут в точку доступа. Она раздает его, зашифрованного посредством WPA-PSK. Требуется: настроить Ubuntu 8.10 таким образом, чтобы он этот самый беспроводной Интернет ловил посредством встроенной сетевой карты BroadCom BCM4318.&lt;br /&gt;&lt;br /&gt;Решение:&lt;br /&gt;&lt;br /&gt;Смотреть  здесь: &lt;a href="http://www.sampbar.com/2008/11/broadcom-bcm4318-ubuntu-intrepid.html"&gt;http://www.sampbar.com/2008/11/broadcom-bcm4318-ubuntu-intrepid.html&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/3704723600302758629-6584979936785312237?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/6584979936785312237/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/01/ubuntu-810-wifi-wpa-security.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6584979936785312237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6584979936785312237'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2009/01/ubuntu-810-wifi-wpa-security.html' title='Ubuntu 8.10 + WiFi + WPA security'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4319694093381301116</id><published>2008-11-21T17:34:00.001+02:00</published><updated>2012-01-10T22:42:46.069+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><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;blockquote&gt;А ежели отрок котиный суетен и егозлив еси, то брать его десницей за ворот. Да в зекалы нахальные глядючи шипи, слюнями в харю плюй, да перстами шуйцы по усам лупи. Егда пользы не возымеет - повтори. Покель пощады не запросит тонко и голосно. Смиловавшись отпусти!&lt;br /&gt;&lt;br /&gt;Узрев лужу кошачью на ковре персидском, аще ко сему и говны его смердящия, смирись. Скверны на животину не рцы, не лайся, рукам воли попусту не давай. Сердцем во гневе же укрепясь котяхи твердыя на лопату сбери и снеси в лоток кошачий, где им быть след. После взять лист бумаги белой, в луже зловонной обмочиши в лоток же помести. Кота же бить негоже. Не рвать ух егонных, лап и усов. Харей в говны совать такоже мало для дела пользительно&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4319694093381301116?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4319694093381301116/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/blog-post_21.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4319694093381301116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4319694093381301116'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/blog-post_21.html' title='Про котов'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3448398834351127255</id><published>2008-11-18T11:35:00.003+02:00</published><updated>2012-01-03T13:31:05.505+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='berlin'/><title type='text'>Мадрид и Толедо</title><content type='html'>Ну что сказать – побывал я в Мадриде. Жили мы в хостеле возле метро Anton Martin недалеко от центра – хорошая комната, тихо, все нормально. Однако, по прибытии туда из аэропорта, мы оставили в комнате свои вещи и вышли на улицу, в результате чего сразу попали в самое сердце какой-то демонстрации в поддержку народа Западной Сахары. Было шумно, весело, много людей и флагов. Вся эта процессия, как оказалось позже, двигалась к Plaza Mayor (главной площади Мадрида), чтобы там покричать и разойтись.&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/UcA9M3AzRzjY63x73NExEg"&gt;&lt;img src="http://lh6.ggpht.com/_x1LHpJFaJqo/SSKhrGijaDI/AAAAAAAAAvQ/1T9H71CafiA/s288/P1030581.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Мы же боковыми улочками вышли к центру города и стали там бродить. Признаться, Мадрид разочаровал. Смысл его, как я понял, в том, что это просто большой современный город, но без претензии на эксклюзивность. Однако, очень понравился (и даже поразил) Королевский дворец (мы даже зашли внутрь и осмотрели многочисленные залы, богато и красиво оформленные – у Карлоса 3-го явно был хороший вкус). Смутило, правда, отношение современных испанцев к этому великолепию – например, облупленные деревянные двери на входе и все в таком духе. К сожалению, фотографировать внутри не разрешают, в связи с чем я внутри не фотографировал :)&lt;br /&gt;&lt;br /&gt;&lt;table border=0&gt;&lt;tr&gt;&lt;td&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/VtVVVjU1lOX_WwFA2uzUJw"&gt;&lt;img src="http://lh6.ggpht.com/_x1LHpJFaJqo/SSKhtMr7TsI/AAAAAAAAAwQ/QB5zwMuROc8/s288/P1030653.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Zw9hqERVYXWraqZtWZsVDw"&gt;&lt;img src="http://lh6.ggpht.com/_x1LHpJFaJqo/SSKhuRgieGI/AAAAAAAAAwU/atvY1frDNzo/s288/P1030659.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Сады Кампо-дель-моро, что сзади дворца, тоже красивые. Вообще говоря, парки у них в Мадриде удались. В воскресенье утром мы попали в Parque del Retiro – часть резиденции Габсбургов, и тоже были впечатлены – обилием памятников, фонтанов, и особенно – монументом Альфонса XII на берегу небольшого озера. Еще я слышал, что там есть Хрустальный дворец, но к нему мы не попали, поскольку накануне запланировали поездку в Толедо. Сделали мы так, по большей части, вынужденно, поскольку было очевидно, что Мадрида на весь следующий день нам не хватит.&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/wlBDJDBsiXDjwxo-rXwbZw"&gt;&lt;img src="http://lh6.ggpht.com/_x1LHpJFaJqo/SSKhv7cUq8I/AAAAAAAAAvo/AL7g3xVyStY/s288/P1030807.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Поезд туда идет от вокзала Аточа. Снаружи – вокзал как вокзал, однако все здание вокзала занимает ботанический сад с тропическими деревьями и прочими растениями. Есть даже пруд с черепашками и золотыми рыбками. Вся эта красота создается путем того, что, во-первых, внутри очень тепло, а, во-вторых, специальные распылители наверху все время разбрызгивают водяной пар, поддерживая необходимую для банановых пальм и прочих кокосов влажность.&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/4fgyEdU9j7IkURxpLjKLcg"&gt;&lt;img src="http://lh6.ggpht.com/_x1LHpJFaJqo/SSKhxInvQAI/AAAAAAAAAvw/8iADek0t5MI/s288/P1030837.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;Толедо выглядит как типичный средневековый испанский или итальянский городок – узкие улочки, обилие камня, и куча достопримечательностей. Есть сохранившиеся стены древней крепости, Альказар (смотровая башня, чтобы следить за неприятелем, подплывающим с моря), кафедральный собор и несколько монастырей. Мы провели в Толедо 5 часов, после чего сели на поезд и вернулись на Аточу.&lt;br /&gt;&lt;br /&gt;&lt;table border=0&gt;&lt;tr&gt;&lt;td&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/yIxR9xA5tNPitqN--gNO9A"&gt;&lt;img src="http://lh5.ggpht.com/_x1LHpJFaJqo/SSKhyZO18hI/AAAAAAAAAwY/ARpGJojEo1k/s288/P1030960.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/gmt_wU3DKK9OtBOlE3ZgyA"&gt;&lt;img src="http://lh5.ggpht.com/_x1LHpJFaJqo/SSKhzXj5WNI/AAAAAAAAAwA/xNlBtxb0yDM/s288/P1030981.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;С этого момента началась ужасная дорога обратно. У нас было времени в обрез до самолета, из-за чего пришлось бежать сломя голову через терминалы, перепрыгивая через людей и их чемоданы. Чтобы вы лучше это представили: регистрация заканчивалась в 19-05, а мы были у стойки в 19-04 :) Ну да ничего, успели.&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/iA0Gsa2Lqhg9gS_mwIBX2w"&gt;&lt;img src="http://lh4.ggpht.com/_x1LHpJFaJqo/SSKh0bZ8lnI/AAAAAAAAAwI/Fp5IIS3jdFs/s288/P1030983.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;From &lt;a href="http://picasaweb.google.com/sborodavkin/MadridToledo"&gt;Madrid-Toledo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;На вокзале в Берлине мы были в час ночи. Поезд на Гамбург отходил в 8. Мы были полны надежд завалиться в какую-нибудь комнату отдыха и там выспаться, но с удивлением обнаружили отсутствие таковых. Это подтвердила и женщина в Deutsche Bahn Info Point. Центральный вокзал в Берлине, конечно, огромный, красивый и хай-тековский с ног до головы, сделан сплошь из стекла и металла, но холодина внутри просто зверская. До двух мы поспали в Макдональдсе, но потом нас оттуда выгнали. Побродив еще, мы нашли закуток у лифтов для выхода на стоянку авто. В закутке было тепло, поэтому мы постелили на пол куртки и так спали до половины пятого утра. Надо сказать, что мы покинули Берлин не на своем, 8-часовом поезде, а на более раннем и дорогом 5-часовом, поскольку ждать еще три часа не было никаких сил. К счастью, контроллер не заметил того, что у нас билеты на другой рейс, поэтому мы без проблем прибыли в Гамбург в 7. Сначала мы поехали в гостиницу, поели, покупались, а потом пришли на работу.&lt;br /&gt;&lt;br /&gt;Вот так и прошла поездка. Все было хорошо, за исключением обратной дороги, ну и мелких штрихов, вроде того, что на линиях easyJet кормят и поят только за деньги. Хотя, с другой стороны, билеты были очень дешевые, так что даже не знаю, жаловаться или нет.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-3448398834351127255?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3448398834351127255/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/blog-post_18.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3448398834351127255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3448398834351127255'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/blog-post_18.html' title='Мадрид и Толедо'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_x1LHpJFaJqo/SSKhrGijaDI/AAAAAAAAAvQ/1T9H71CafiA/s72-c/P1030581.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4374634714358684259</id><published>2008-11-17T15:13:00.004+02:00</published><updated>2012-01-03T14:29:53.067+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Про аутсорсинг</title><content type='html'>Даешь два поста в день!&lt;br /&gt;&lt;br /&gt;Только что прочел интересную статью о пост-советском аутсорсинге &lt;a href="http://www.sitnikov.info/software_outsourcing_look_from_inside.php"&gt;вот здесь&lt;/a&gt;. Имхо, интересно. К сожалению, ничего из нее скопировать сюда не могу, т.к. автор впилякал в ее конец вот такую вот просьбу:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I am sorry, but I strictly prohibit reproducing anything from this material in any form and any type of media without my personal approval&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Чтобы обойти эту просьбу-запрет, скажу так: я прочел эту статью, и вдруг у меня в голове возникли следующие мысли, которыми я спешу поделиться:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;если вы думаете, что ваш подрядчик предоставляет вам лучшие кадры - вы ошибаетесь&lt;br /&gt;&lt;li&gt;если вы думаете, что ваш подрядчик не экономит на всем подряд с целью срубить денег - вы ошибаетесь&lt;br /&gt;&lt;li&gt;если вы думаете, что ваш подрядчик не сможет заработать на вас &lt;em&gt;еще&lt;/em&gt; больше так, что вы и не заметите - вы ошибаетесь&lt;br /&gt;&lt;li&gt;самый главный вывод из статьи вы узнаете, прочтя ее на сайте автора.&lt;/ul&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/3704723600302758629-4374634714358684259?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4374634714358684259/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4374634714358684259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4374634714358684259'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/blog-post.html' title='Про аутсорсинг'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1031497692629004357</id><published>2008-11-17T14:02:00.003+02:00</published><updated>2012-01-10T22:44:58.949+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='berlin'/><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.socketsite.com/archives/Berlin%20Central%20Station.jpg"&gt;&lt;img alt="" border="0" src="http://www.socketsite.com/archives/Berlin%20Central%20Station.jpg" style="cursor: hand; cursor: pointer; display: block; height: 510px; margin: 0px auto 10px; text-align: center; width: 510px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;А теперь вопрос:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Как вы думаете, каково находиться в такой постройке зимой, прилетев в Берлин в 12 ночи и ожидая своего поезда до 8 утра?&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Подсказка: комнаты для отдыха отсутствуют.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Правильный ответ: ОЧЕНЬ, ОЧЕНЬ ХУЁВО!!!&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1031497692629004357?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1031497692629004357/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/12-8.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1031497692629004357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1031497692629004357'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/11/12-8.html' title='О вокзале в Берлине'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2361989807792848305</id><published>2008-09-23T13:52:00.003+03:00</published><updated>2012-01-03T14:28:02.638+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Après moi le déluge</title><content type='html'>Шарясь по Киевскому серверу, открыл для себя Регину Спектор (Regina Spektor). Слушаю Après Moi. На мой взгляд - нечеловечески здорово :&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_gdBvdN0Auc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/_gdBvdN0Auc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2361989807792848305?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2361989807792848305/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/09/aprs-moi-le-dluge.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2361989807792848305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2361989807792848305'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/09/aprs-moi-le-dluge.html' title='Après moi le déluge'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-931229444025164364</id><published>2008-09-09T15:40:00.002+03:00</published><updated>2012-01-03T14:29:53.236+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Как JComboBox всех зарулил</title><content type='html'>И снова Swing, и снова баг - на этот раз в JComboBox. Состоит в следующем:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;JComboBox box = new JComboBox();&lt;br /&gt;box.addItem("x");&lt;br /&gt;box.addItem("x");&lt;br /&gt;box.setSelectedIndex(1);&lt;br /&gt;System.out.println(box.getSelectedIndex())&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Этот код напечатает в консоль не 1, как ожидалось, а 0. Баг состоит в том, что метод getSelectedIndex() возвращает индекс первого попавшегося элемента, равного селектированному, причем сравнение выполняется методом equals().&lt;br /&gt;&lt;br /&gt;В развернувшейся бурной дискуссии сотрудники Sun пытаются доказать, что данное поведение корректно, поскольку оба элемента &lt;b&gt;x&lt;/b&gt; равны. Лично я не согласен: так мог бы вести себя метод &lt;b&gt;getSelectedItem()&lt;/b&gt;, но от &lt;b&gt;getSelectedIndex()&lt;/b&gt; я бы ожидал возврат &lt;b&gt;выбранного&lt;/b&gt; индекса , а не какого-нибудь другого.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4133743"&gt;Багу #4133743&lt;/a&gt; уже более 10-ти лет. Интересно состояние данного тикета: &lt;b&gt;"11-Closed, Not a Defect, bug"&lt;/b&gt;. :))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-931229444025164364?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/931229444025164364/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/09/jcombobox.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/931229444025164364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/931229444025164364'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/09/jcombobox.html' title='Как JComboBox всех зарулил'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-8258562237570035804</id><published>2008-07-10T01:40:00.003+03:00</published><updated>2012-01-03T14:40:56.323+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Рома</title><content type='html'>В прошлые выходные мы с Женей побывали в городе Риме. Самолет наш вылетал в полседьмого утра, в связи с чем в субботу довелось проснуться в четыре. Метро и автобус «Airport-Express», однако, уже ходили, поэтому в аэропорту мы были вовремя. На борту аэробуса-320 компании Airberlin нам пытались продать горячий завтрак за 6 евро, но мы не поддались и гордо жевали бесплатные сендвичи: Женя – с turkey, а я – с cheese. Полет прошел гладко, и уже в девять мы были в аэропорту Fiumicino. Верите – ну никаких приключений в дороге!&lt;br /&gt;&lt;br /&gt;От аэропорта к городу Риму идет специальный поезд «Leonardo Express», который за 40 минут довез нас до станции Termini – это Римский вокзал такой. Первым делом нам предстояло найти, где жить, поскольку Интернет в этот раз не сработал.&lt;span class="fullpost"&gt; Бронирование номеров в Интернете делается только посредством кредитки. Только один хостел согласился, чтобы мы перевели им деньги через банк, но, придя в Hamburger Sparkasse (сберкассу по-ихнему), мы обнаружили, что сберкасса в Гамбурге наличных денег не принимает – все только через кредитку. А у нас ее нет.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;i&gt;Лирическое отступление: &lt;b&gt;человек без кредитной карточки в Европе – говно.&lt;/b&gt;&lt;/i&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Однако, нам почти сразу повезло. Второй же посещенный нами отель согласился поселить нас в одной комнате с раздельными кроватями и совмещенным санузлом за 60 евро, что оказалось дешевле всех Интернетовых предложений. Так что, не заходя в комнату (мол, не готова), мы отправились прямиком на осмотр достопримечательностей. &lt;br /&gt;&lt;br /&gt;Началось все с бань Диоклетиана. Диоклетиан в свое время отгрохал себе на славу огромные бани, в которых одновременно могло париться, чтобы не соврать, тысячи полторы человек (ну, или что-то вроде этого – если вру, то не сильно). Сейчас они представляют собой дворик, окруженный стенами тех самых бань. Во дворике разбит садик, есть фонтан, а также находятся древние саркофаги и надгробные камни. Эти экспонаты – часть музея, который размещается также на территории бань.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220051829785818098"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SHFZe2-C8_I/AAAAAAAAAc0/wtgeGpuzqiE/s400/P1010903.JPG" /&gt;&lt;/a&gt; &lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Погуляв по баням и пофотографировав, мы двинулись дальше. Надо сказать, что планирование нашей поездки я полностью доверил Жене – когда человек сильно увлечен, у него, обычно, получается лучше. Поэтому Женя имел длинный список мест, которые нам необходимо было посетить. Сверившись по карте, мы двинулись по заданному плану, но уже спустя несколько минут все пошло наперекор ему. Например, в одном из сохранившихся помещений тех же бань есть базилика (церковь по-нашему). Мы заглянули в нее просто так, ради интереса. И вы знаете, эта задрипанная римская базилика у вокзала была раза в два больше нашего Успенского собора! Итальянцы – очень набожный народ, поэтому базилик здесь много, и мне было с чем сравнивать. Базилика возле вокзала – таки-да задрипанная, и таки-да в два раза больше Успенского. Такие дела… &lt;br /&gt;&lt;br /&gt;Например, базилика St. Maria Maggiore еще больше. А о соборе св.Петра я вообще пока молчу, но дойду и до него.&lt;br /&gt;&lt;br /&gt;Следуя к следующему чек-поинту, мы, видимо, слегка сбились с курса, поскольку вышли к фонтану Треви, чего Женя не ожидал. Ну, раз уж так, то мы бросили в него монетки. Фонтан – очень большой, занимает всю площадь, и перед ним толпится много людей.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052018808905938"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SHFZp3IqYNI/AAAAAAAAAdI/ZcsNDKVkUbg/s400/P1010963.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;За фонтаном находится церковь S.Maria in Trivio, зданию которой без малого две тысячи лет. Очень, знаете, трепетные ощущения возникают, когда прикасаешься к столь древним и все еще прочным стенам, пережившим древний Рим, его падение, длинную череду различных эпох, правителей, зим, лет…&lt;br /&gt;&lt;br /&gt;В городе Риме есть много обелисков. Во основном, они попадали туда после того, как древние римляне привозили их из Египта в результате какой-нибудь войны. На многих еще сохранились египетские письмена. Кроме того, на всех без исключения обелисках, включая и те, что с египетскими письменами, Святой церковью водружены кресты. А-ля «здесь был папа».&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052223109604578"&gt;&lt;img src="http://lh4.ggpht.com/sborodavkin/SHFZ1wNvpOI/AAAAAAAAAdo/7aWyeyF85Xg/s400/P1010990.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Возле Villa Borghese мы осуществили подъем на холм, чтобы полюбоваться видом на город Рим и Ватикан:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052275916492162"&gt;&lt;img src="http://lh5.ggpht.com/sborodavkin/SHFZ4074zYI/AAAAAAAAAdw/vUU0108jBwQ/s400/IMG_0673.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Еще надо сказать, что было очень жарко. Я купил поллитровую бутылочку воды в аэропорту, и выпил ее уже часам к 11. Пить хотелось все время, и запасы воды приходилось постоянно пополнять. Посетив Пантеон, пару площадей, и, подойдя к Пьяцца Венеция с Капитолием, мы поняли, что дальше – все. Пообедали мы во флорентийском ресторанчике, я съел равиолли, а Женя – салат и фруктовый салат. Вместе с двумя литровыми бутылками минералки, обед нам обошелся в 42 евро с мелочью, мда. Зато потом, отдохнувшие и подкрепившиеся, мы ринулись в самое, так сказать, античное мясо.&lt;br /&gt;&lt;br /&gt;Для осмотра форумов, Палатинского холма и Коллизея можно купить 1 билет на нос за 11 евро, что мы и сделали. Осмотр Древнего Рима мы начали с форума Траяна. Императорских форумов там три, причем один плавно перетекает в другой – Траяна, Августа и Цезаря. Типичный форум включал в себя суд, храм, палату заседаний и т.д. Сейчас от них остались одни развалины – отдельные колонны, камни, и т.д. Палатинский холм – это, то место, откуда начинался древний Рим. На нем находятся дом Августа, сады, и множество развалин:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052506640114386"&gt;&lt;img src="http://lh6.ggpht.com/sborodavkin/SHFaGQcr4tI/AAAAAAAAAeQ/n9bRp_NDoj8/s400/P1020072.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;В древнем городе сохранились три триумфальных арки – Септемия, Константина, и, кажется, того же Августа. Что примечательно, Константин все надписи на них перебил под себя – с приходом христианства в Риме наступил упадок, и не было уже мастеров, могущих построить новые.&lt;br /&gt;&lt;br /&gt;В двух шагах от арки Константина находится Коллизей. Очередь за билетами в него – похлеще оной в Эйфелеву башню. К счастью, билеты мы купили раньше, и поэтому гордо прошествовали внутрь. Из того, что не показывают на фотографиях – под сценой Коллизея находились помещения, в которых гладиаторы сидели перед боем, эдакие коридоры.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052630266783746"&gt;&lt;img src="http://lh4.ggpht.com/sborodavkin/SHFaNc_lKAI/AAAAAAAAAeg/zkie0kkF17M/s400/P1020099.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Потом, поев итальянской квадратно пиццы и еще немного пройдясь, я понял, что натер большие мозоли за более чем 12 часов почти непрерывной ходьбы. Поэтому мы вернулись в гостиницу, где я лег спать, а Женя пошел еще бродить.&lt;br /&gt;&lt;br /&gt;Утром мы позавтракали в кафешке и поехали в Ватикан. Осмотрели площадь, собор (снаружи и внутри), пофоткали.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052675997619506"&gt;&lt;img src="http://lh4.ggpht.com/sborodavkin/SHFaQHWqVTI/AAAAAAAAAeo/NQLnBp92THo/s400/P1020113.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Это – я внутри собора св.Петра:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052867749520258"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SHFabRr4I4I/AAAAAAAAAfU/2MHeI9-hUyg/s400/IMG_0854.JPG" /&gt;&lt;/a&gt;&lt;/center&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;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Roma/photo#5220052764188158834"&gt;&lt;img src="http://lh5.ggpht.com/sborodavkin/SHFaVP47K3I/AAAAAAAAAe4/xvpeK-zuZJ4/s400/P1020179.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-8258562237570035804?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/8258562237570035804/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/07/blog-post_10.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8258562237570035804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8258562237570035804'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/07/blog-post_10.html' title='Рома'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/sborodavkin/SHFZe2-C8_I/AAAAAAAAAc0/wtgeGpuzqiE/s72-c/P1010903.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4546066656831509793</id><published>2008-07-03T01:15:00.004+03:00</published><updated>2012-01-03T13:31:40.632+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><title type='text'>Брюссель</title><content type='html'>Итак, мы с Женей в пятницу поужинали, я выпил безалкогольного пива по случаю моего д.р., и в 20:24 сел в поезд Цюрих – Париж, откуда мне предстояло утром выйти в Брюсселе.&lt;br /&gt;&lt;br /&gt;Признаться, покупая билеты, я выбрал купе и успокоился, наивно полагая, что купе – оно в и Германии купе. Ан нет: они бывают двух типов: со sleeper и с couchette, на что я не обратил внимания, а зря. Думаете, sleeper – это то, на чем можно спать? Ха! На самом деле, sleeper – это кресло, которое не раздвигается, и которых в этом купе шесть (!) – по три лицом друг к другу. Размер купе – чуть больше нашего. Захожу  – батюшки-светы! В купе уже 5 человек, яблоку упасть негде, короче общий вагон отдыхает. К счастью, трое вышли в Бремене, и остались двое – супружеская пара весьма почтенных лет, причем бабка сразу улеглась на трех креслах напротив. Поняв, что сидя я все равно не усну, я молча уступил оставшиеся три кресла деду, а сам бросил на пол куртку, положил под голову рюкзак и сладко уснул. Да, тверда постелька, но зато чисто – Европа ж, блин!&lt;br /&gt;&lt;br /&gt;Со мной вообще всегда случается что-то интересное. &lt;span class="fullpost"&gt;Вот, например, глубокой ночью – не то в Дортмунде, не то в Дюссельдорфе – раздался стук в дверь и зашел полицейский. Он объяснил, что в нашем вагоне едет парень из какой-то страны третьего мира, виза которого не позволяет ему ехать во Францию. Поэтому сейчас они едут в участок и будут там составлять police report, что займет около полутора часов. После этого парня привезут назад, и поезд сможет ехать дальше. Я, признаться, не понял – какой смысл возвращать его в поезд, если визы у него все равно нет, но такая забота о нелегале, бесспорно, умиляет. А я все равно тут же уснул и даже не заметил, как поезд тронулся.&lt;br /&gt;&lt;br /&gt;В Брюссель поезд пришел точно по расписанию, несмотря на полуторачасовую остановку. Позавтракав в кафе на вокзале (которых там, кстати, довольно много) большим бутербродом, круассаном и кофе, и поняв, что карты Брюсселя достать там в полседьмого утра все равно не удастся, я вышел на улицу. Положившись на русский авось, я потопал по Stalingrad Laan – как оказалось, совершенно правильно.&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537283681589666"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SGhqhAwymaI/AAAAAAAAAXs/mLwGpTzAfn8/s400/P1010697.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Сама улица совершенно ничем не примечательна, кроме памятника Розе Люксембург и вот такой вот бабушки, которая не то голубей кормит, не то мелочь из кошелька достает:&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537325448287938"&gt;&lt;img src="http://lh5.ggpht.com/sborodavkin/SGhqjcWv1sI/AAAAAAAAAX0/yriFGwanbVY/s400/P1010703.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Затем, через маленькую площадь с маленькой биржей и маленькой церковью св.Николая, сквозь пару узких улочек, я вышел на главную площадь Брюсселя – Grasmarkt (большая площадь). Надо сказать, что было только 8 утра, поэтому мне никто не мешал обозревать окрестности. На Грасмаркте есть дом пивоваров, дворец герцогов Бургундских, дворец Карла Лотарингского (который сейчас находится на реставрации) и Ратуша:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537563373981506"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SGhqxSspz0I/AAAAAAAAAYs/FTqSS62gFhI/s400/P1010720.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537612707401522"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SGhq0KeqDzI/AAAAAAAAAY0/98KCBjHNnoc/s400/P1010723.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Что характерно, несмотря на то, что дворец Карла Лотарингского реставрируется, над лесами натянуто его изображение (фото до реставрации), чтобы не нарушать общий ансамбль. Вот как это сделано:&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537728819196242"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SGhq67B3cVI/AAAAAAAAAZM/TtHBze1zQW8/s400/P1010732.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Говорят, каждые два года в августе здесь высаживают ковры из цветов размером во всю площадь. От площади я отправился бродить по центру, где уже начинали появляться отдельные люди, и из некоторых кафешек стали неторопливо выносить наружу столики полусонные официанты. Центр Брюсселя имеет форму пятиугольника и таким образом повторяет форму бывших древних крепостных стен. Дух, безусловно, здесь свой. Улочки узкие, как в Копенгагене, здания – помпезные, как в Париже, но чувства вызывают совершенно другие.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537468606685490"&gt;&lt;img src="http://lh3.ggpht.com/sborodavkin/SGhqrxqXoTI/AAAAAAAAAYU/C2AV6IY0dCk/s400/P1010715.JPG" /&gt;&lt;/a&gt; &lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537538044468754"&gt;&lt;img src="http://lh4.ggpht.com/sborodavkin/SGhqv0VoHhI/AAAAAAAAAYk/c7ASGSu6WoQ/s400/P1010719.JPG" /&gt;&lt;/a&gt; &lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Практически каждый перекресток – это маленькая площадь со своим фонтанчиком, памятниками или церковью. Старый центр, однако же, небольшой. Вокруг него находятся высокие здания и широкие автомобильные дороги.&lt;br /&gt;&lt;br /&gt;От Грасмаркт уходит улочка Этюв, которая ведет к писающему мальчику (Maneken Piss). По легенде, он когда-то спас Брюссель от пожара, за что и был увековечен. У него есть 740 костюмов, которые на него одевают в честь больших праздников, либо в честь приема гостей из других стран. Мне же, как это обычно бывает, повезло, и я застал его в чем мать родила.&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217537992080609842"&gt;&lt;img src="http://lh6.ggpht.com/sborodavkin/SGhrKPwR0jI/AAAAAAAAAaI/mfiVYBjv1vU/s400/P1010763.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Кроме манекен писс, на Этюв есть барельеф, на котором изображено лежащее туловище с рукой. По слухам, если загадать желание и погладить эту руку, то оно должно сбыться. Однако же, в связи с многочисленными стройками, проходящими в Брюсселе в настоящее время, данный барельеф оказался от меня скрыт.&lt;br /&gt;&lt;br /&gt;Еще был я на Королевской площади, видел дворец, королевскую библиотеку и музеи. Рядом с дворцом находится Малый Саблон – улица и парк со скульптурами и растениями. Говорят, где-то там есть еще Большой Саблон, но я его не нашел. Вместо этого, а также в связи с начинающимся дождем, я поехал на метро в Атомиум, о котором сейчас и расскажу.&lt;br /&gt;&lt;br /&gt;Атомиум в Брюсселе – это как Эйфелева башня в Париже. Его построили в 20 веке в честь проникновения внутрь атома. Данное сооружение представляет из себя модель атома высотой в 102 метра:&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217538161007358994"&gt;&lt;img src="http://lh4.ggpht.com/sborodavkin/SGhrUFDjdBI/AAAAAAAAAaw/pZnsOrAUUWI/s400/P1010840.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Между шарами ездят лифты. Как сказала сопровождающая нас девушка, они самые быстрые в Европе – скорость 5 м/с (это 18 км/ч). Внутри можно гулять, смотреть на Брюссель сверху, посещать выставочные залы (где я не был) и кушать в ресторане (где я был).&lt;br /&gt;&lt;br /&gt;Отведав говяжьего мяса с грибами, картошкой и салатом, я переместился к другой достопримечательности, находящейся неподалеку – парку «Мини-Европа». Открытый недавно по случаю какой-то годовщины Евросоюза, он содержит миниатюрные копии знаменитых зданий всех его стран (Нотр-Дам, Биг-Бен – ну вы поняли). Возле каждой страны есть табличка с информацией и кнопочка, нажав на которую, можно прослушать гимн этой страны. По парку можно перемещаться по специальным дорожкам – вроде как от страны к стране. Например, вот та самая центральная площадь Брюсселя:&lt;br /&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.com/sborodavkin/Bruxelles/photo#5217538214712622834"&gt;&lt;img src="http://lh5.ggpht.com/sborodavkin/SGhrXNH4vvI/AAAAAAAAAa4/3IdDsN8Fcu8/s400/P1010855.JPG" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;После осмотра парка почти что наступил вечер. Я погулял немного по Брюссельскому парку, находящемуся рядом, и вернулся в центр. Погуляв там и отужинав в итальянском ресторане, я отбыл на вокзал, откуда вскорости и уехал обратно в Гамбург.&lt;br /&gt;&lt;br /&gt;Дорога обратно была еще ужасней, чем туда. В моем купе пустовало только одно из 6 кресел, так что спал я сидя и плохо. Вернувшись домой, я продрых до обеда, после чего, поев и переделав хозяйственные дела, я встретился с Женей и мы отправились смотреть финал чемпионата Европы, на котором, как вы знаете, Германия проиграла, но это уже другая история.&lt;br /&gt;&lt;br /&gt;Поезжайте в Брюссель! Мне понравилось. Город очень красивый, очень европейский, очень спокойный и очень разнообразный.&lt;br /&gt;&lt;br /&gt;Только вот эти поезда City Night Line - просто жесть!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4546066656831509793?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4546066656831509793/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/07/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4546066656831509793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4546066656831509793'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/07/blog-post.html' title='Брюссель'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/sborodavkin/SGhqhAwymaI/AAAAAAAAAXs/mLwGpTzAfn8/s72-c/P1010697.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-8164585440792232447</id><published>2008-06-26T17:24:00.003+03:00</published><updated>2012-01-03T14:40:56.317+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Разрешить нельзя запретить</title><content type='html'>На сайте &lt;a href="http://neoutils.ru/"&gt;http://neoutils.ru&lt;/a&gt; (и какого меня туда понесло?) наткнулся на замечательную программу &lt;span style="font-weight:bold;"&gt;NeoAutorun&lt;/span&gt;. Софтина позволяет контролировать список автоматически загружаемых программ, но это неважно - я ее не видел, и не хочу. Меня впечатлил чекбокс на скриншоте:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x1LHpJFaJqo/SGOmvR4sJ3I/AAAAAAAAAWA/UPwTL-aApPc/s1600-h/neo_2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/SGOmvR4sJ3I/AAAAAAAAAWA/UPwTL-aApPc/s320/neo_2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5216196124610406258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Сейчас вот размышляю о возможности существования текстового поля "ввести/стереть", кнопки "сохранить/удалить" и выпадающего списка "раскатать/закатать"...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-8164585440792232447?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/8164585440792232447/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8164585440792232447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8164585440792232447'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post_26.html' title='Разрешить нельзя запретить'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1LHpJFaJqo/SGOmvR4sJ3I/AAAAAAAAAWA/UPwTL-aApPc/s72-c/neo_2.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4235169436457465133</id><published>2008-06-23T18:47:00.004+03:00</published><updated>2012-01-03T14:29:53.054+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='pnuts'/><title type='text'>pnuts drives me crazy</title><content type='html'>Пишу на &lt;a href="http://pnuts.org"&gt;pnuts&lt;/a&gt;. pnuts - это скриптовый язык, мы активно его используем.&lt;br /&gt;&lt;br /&gt;Короче, объявляю класс. Когда я для какого-то из его полей объявляю cеттер, а впоследствии вызываю его, то чудный пи-натсовый интерпретатор вываливается со StackOverflowError:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;java.lang.StackOverflowError&lt;br /&gt; at java.lang.String.indexOf(Unknown Source)&lt;br /&gt; at java.lang.ClassLoader.checkName(Unknown Source)&lt;br /&gt; at java.lang.ClassLoader.findLoadedClass(Unknown Source)&lt;br /&gt; at java.lang.ClassLoader.loadClass(Unknown Source)&lt;br /&gt; at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)&lt;br /&gt; at java.lang.ClassLoader.loadClass(Unknown Source)&lt;br /&gt; at java.lang.ClassLoader.loadClass(Unknown Source)&lt;br /&gt; at java.lang.ClassLoader.loadClassInternal(Unknown Source)&lt;br /&gt; at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)&lt;br /&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br /&gt; at java.lang.reflect.Method.invoke(Unknown Source)&lt;br /&gt; at pnuts.lang.Runtime.setBeanProperty(Runtime.java:3066)&lt;br /&gt; at pnuts.lang.JavaBeansConfiguration.setBeanProperty(JavaBeansConfiguration.java:154)&lt;br /&gt; at pnuts.lang.JavaBeansConfiguration.putField(JavaBeansConfiguration.java:136)&lt;br /&gt; at pnuts.lang.Java2Configuration.putField(Java2Configuration.java:101)&lt;br /&gt; at pnuts.lang.Runtime.putField(Runtime.java:547)&lt;br /&gt; at _pnuts_$2.exec(Unknown Source)&lt;br /&gt; at pnuts.lang.PnutsFunction.exec(PnutsFunction.java:294)&lt;br /&gt; at pnuts.lang.PnutsFunction.call(PnutsFunction.java:232)&lt;br /&gt; at SamePOI.setDistance(Unknown Source)&lt;br /&gt; at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)&lt;br /&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br /&gt; at java.lang.reflect.Method.invoke(Unknown Source)&lt;br /&gt; at pnuts.lang.Runtime.setBeanProperty(Runtime.java:3066)&lt;br /&gt; at pnuts.lang.JavaBeansConfiguration.setBeanProperty(JavaBeansConfiguration.java:154)&lt;br /&gt; at pnuts.lang.JavaBeansConfiguration.putField(JavaBeansConfiguration.java:136)&lt;br /&gt; at pnuts.lang.Java2Configuration.putField(Java2Configuration.java:101)&lt;br /&gt; at pnuts.lang.Runtime.putField(Runtime.java:547)&lt;br /&gt; at _pnuts_$2.exec(Unknown Source)&lt;br /&gt;        ... и т.д.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;А если присваивать полю значение непосредственно снаружи, то все работает!&lt;br /&gt;&lt;br /&gt;Сеттер имеет вполне типичный вид:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;void setDistance(int d) {&lt;br /&gt;        this.distance = d&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;В чем проблема - ума не приложу! И с геттером, кстати, та же фигня :(&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;UPD 18:12&lt;/span&gt; А вот еще что раздражает: длинные заголовки методов класса можно разбивать только так:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;font color=green&gt;void myMethod(int param1, String&lt;br /&gt;param2, bool param3)&lt;/font&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Т.е. перевод строки можно ставить ТОЛЬКО между типом и параметром. Так работать не будет:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;font color=red&gt;void myMethod(int param1,&lt;br /&gt;String param2, bool param3)&lt;/font&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Я специально взял &lt;a href="http://pnuts.org/doc/lang.html#syntax"&gt;отсюда&lt;/a&gt; и расковырял грамматику языка, чтобы убедиться, что так оно и есть:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;TypedParamList = "(" ( ")" | TypedParam ("," TypedParam  )* ")" ) ;&lt;br /&gt;TypedParam = Param | ClassName Param ;&lt;br /&gt;Param = Eol IDENTIFIER Eol ;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Т.е., если указываем ClassName, то Eol может следовать только сразу после него, либо (что еще страннее), ПЕРЕД запятой. Но не после. Т.е. так тоже будет работать:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;font color=green&gt;void myMethod(int param1&lt;br /&gt;,String param2, bool param3)&lt;/font&gt;&lt;/code&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/3704723600302758629-4235169436457465133?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4235169436457465133/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/pnuts-drives-me-crazy.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4235169436457465133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4235169436457465133'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/pnuts-drives-me-crazy.html' title='pnuts drives me crazy'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4952910405202499009</id><published>2008-06-22T20:40:00.007+03:00</published><updated>2012-01-03T14:40:56.240+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Гамбург - 01</title><content type='html'>Уже неделю работаю я в Гамбурге на благо компании Харман/Бекер. Приятно все-таки приезжать в компанию в третий раз: за это время несколько человек сами подошли ко мне с подходом «а я тебя уже видел, ты откуда, и т.д.» Так что число моих шапочных знакомых все время растет.&lt;br /&gt;&lt;br /&gt;Один из них – Мартин (это тот, который босиком ходит), не перестает удивлять меня своими странностями. В пятницу поймал меня за пуговицу в коридоре и начал рассказывать о том, какой он трудоголик, как трудно ему различать «рабочее» и «личное», и какой он молодец, что может говорить об этом открыто. На нем висит значок «I am not normal», что, безусловно, чистая правда. Третьего дня, например, слышал от него историю, как он обновил какую-то навигационную таблицу, записал ее в навигатор своего автомобиля и поехал к родственникам, и как оно все плохо работало, и длительность поездки предсказывало с ошибками, и не туда его заворачивало, и пр…&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x1LHpJFaJqo/SF6PndrVFyI/AAAAAAAAAU8/fe4UaPaIlp8/s1600-h/utochki.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/SF6PndrVFyI/AAAAAAAAAU8/fe4UaPaIlp8/s320/utochki.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5214763326685648674" /&gt;&lt;/a&gt;Другой из них – Stefan - кстати, скоро станет нашим главным контактом с немецкой стороной. Питер наконец-то созрел для того, чтобы выделить человека, для которого работа с нами будет основным занятием, а не «между прочим», как это происходит сейчас. Штефан, как сказал Питер, тысячу лет работал на проекте БМВ, и сейчас ему срочно нужно сменить род занятий, чтобы не загнуться от тоски. Жду хорошего. Поживем – увидим, как оно будет.&lt;br /&gt;Здание нашей работы находится над одним из многочисленных каналов, и, если выйти во двор, то с него есть спуск на понтонный причал, где отдыхают уточки.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x1LHpJFaJqo/SF6P1EcCOuI/AAAAAAAAAVE/vAIxyjWtZiU/s1600-h/euro2008_metro.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/SF6P1EcCOuI/AAAAAAAAAVE/vAIxyjWtZiU/s320/euro2008_metro.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5214763560428780258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В четверг играли с Питером в Го. О многом поговорили. Кроме Питера, я сыграл партию в Го с одним новичком (разумеется, обыграв его). Интересен род его деятельности: он проверяет, насколько плотно закручены болты в самолете, перед его взлетом. В его распоряжении 5 болтов – за остальные отвечают другие. И так – от рейса к рейсу – 5 болтов. Впечатляет занятие!&lt;br /&gt;В Го-клубе много разговоров было о чемпионате Европы по футболу, проходящем сейчас. В тот вечер играла Германия, и Питер  все хотел, чтобы они проиграли, и это сумасшествие на улицах закончилось. Каждый день в 20:45 начинается очередной матч – и до этого времени важно успеть поужинать, т.к. все кафе и рестораны, где есть телевизор, заполняются толпами оголтелых болельщиков. Турки, кстати, коих здесь великое множество, ох сильные болельщики – от сигналов их машин я в пятницу вечером почти оглох, пока шел под мостом возле станции Berliner-Tor. А за Россию, которая вчера играла, соотечественники болели, в основном, по кабакам – почти из каждого доносились крики на родном языке, когда я возвращался домой из бассейна. В метро на электронных табло, где пишут, сколько времени осталось до прибытия следующего поезда, вечером выводят счет текущего матча. Короче говоря, народ болеет.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x1LHpJFaJqo/SF6Q7BEdBJI/AAAAAAAAAVM/hSFPBZgDrjU/s1600-h/hd_days.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/SF6Q7BEdBJI/AAAAAAAAAVM/hSFPBZgDrjU/s320/hd_days.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5214764762115409042" /&gt;&lt;/a&gt;В эти дни в Гамбурге проходит еще одно мероприятие – т.н. Harley Davidson Days. Со всей Европы сюда съехались десятки тысяч волосатых байкеров на своих мотоциклах, чтобы как следует напиться и покрасоваться. Их парад был вчера в районе St.Pauli, но я не пошел – посмотрел фотографии с прошлогоднего события и, признаться, побоялся, что затопчут. В центре, однако, их тоже было много, народ их фотографировал, и т.д. Как по мне – мотоциклы как мотоциклы, хотя я тоже не удержался и сделал пару фотографий для истории.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x1LHpJFaJqo/SF6Rk4lwkLI/AAAAAAAAAVU/a7eHvV5UgLE/s1600-h/h_altstadt.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/SF6Rk4lwkLI/AAAAAAAAAVU/a7eHvV5UgLE/s320/h_altstadt.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5214765481393688754" /&gt;&lt;/a&gt;Вместо байков я вчера сфокусировался на местах, где еще не был в прошлые разы – Altstadt (старый город) и Hafencity (гавань). В последней я был, но в этот раз я зашел с другой стороны (с какой? Не знаю, как объяснить – со стороны Altstadt :)) Центральная старая часть города непохожа на нашу. Гамбург – город портовый, и сооружения там, преимущественно, квадратные и утилитарные, построенные для портовых контор и первых офисов. Основная особенность – красный кирпич, из которого в том районе построено без исключения все.&lt;br /&gt;&lt;br /&gt;А, вот еще новость: я купил билеты в Брюссель! В пятницу, день своего рождения, после работы я сяду на поезд и чухну в Бельгию. Посмотрю на здания Евросоюза, писающих мальчика и девочку (да, есть и такая), поем бельгийского шоколаду да вафель, и вечером поеду обратно. Поезда в этот раз без пересадок – надеюсь,  что дорога не будет такой утомительной, как была, к примеру, из Копенгагена в прошлом году. Туда-обратно – 110 евро – это вместе со скидкой, которую мне сделали как молодому, не достигшему 25 лет. Женю все равно наверняка потянет в Рим (дался ему этот Рим, блин!) – ну а я себе в Бельгию ))&lt;br /&gt;&lt;br /&gt;Кстати о Жене – он прилетает в понедельник, но Тобик (наш ПМ) отказался его встречать. Поэтому ехать в аэропорт придется Михаэлю, который вообще к организационным вопросам никаким боком не относится (отвечает только за один из наших продуктов), да и машины у него нет. Так что, поскольку он мне симпатичен, я поеду вместе с ним, чтобы его поддержать. Интересно другое – меня Тобик встретил, т.к. я его contact person. А Женю, который работает над другим продуктом, он уже встречать не хочет, т.к., мол, «не его человек», и нечего на него тратить деньги на бензин. Смотрю я на этих немцев, и нарадоваться не могу их бесконечной бережливости!&lt;br /&gt;&lt;br /&gt;Вот, вкратце, такие дела. О чем еще сказать? Ну, не знаю, меня, как всегда, много жизнеполагающих вопросов волнует. Например, вот елочка:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_x1LHpJFaJqo/SF6SjKqzyCI/AAAAAAAAAVc/eivs4fB_4GA/s1600-h/P1010616.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/SF6SjKqzyCI/AAAAAAAAAVc/eivs4fB_4GA/s320/P1010616.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5214766551398598690" /&gt;&lt;/a&gt;&lt;br /&gt;Так вот: горшочек у этой елочки просто разбился, или это такая художественная задумка?..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4952910405202499009?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4952910405202499009/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/01.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4952910405202499009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4952910405202499009'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/01.html' title='Гамбург - 01'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1LHpJFaJqo/SF6PndrVFyI/AAAAAAAAAU8/fe4UaPaIlp8/s72-c/utochki.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1074890903637450186</id><published>2008-06-20T11:59:00.003+03:00</published><updated>2012-01-03T14:29:52.923+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Еще один баг от Swing</title><content type='html'>Только что еще один Свинговый баг побороли. На одной из ~10 машин, где работает наша программа, запуск диалога выбора файлов JFileChooser занимает примерно полминуты (ну о-о-очень долго, если честно). Кроме того, переход в любую папку также отбирает несколько секунд. Windows XP SP2 стоит, последние обновления, все дела... А на других машинах - все хорошо. &lt;br /&gt;&lt;br /&gt;После непродолжительного копания, наткнулся на описание Java-Sun bug #5050516. Оказывается, на некоторых системах такое поведение вызывается поддержкой Windows Compressed Folders. После того, как отключили ее командой&lt;br /&gt;&lt;br /&gt;&lt;code&gt;regsvr32 /u %windir%\system32\zipfldr.dll&lt;/code&gt;,&lt;br /&gt;&lt;br /&gt;все заработало быстро и правильно.&lt;br /&gt;&lt;br /&gt;Багу больше 4х лет. В jdk 1.6 он еще живет. Вроде, исправили в седьмом, но я не проверял))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1074890903637450186?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1074890903637450186/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/swing.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1074890903637450186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1074890903637450186'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/swing.html' title='Еще один баг от Swing'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2494150729100934059</id><published>2008-06-18T12:45:00.003+03:00</published><updated>2012-01-03T14:40:56.194+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>О стандартах на коды стран (оч.кратко)</title><content type='html'>По работе столкнулся с проблемой кодов стран (сокращенных названий вроде RU, UA и т.д). Какая же это непростая проблема оказывается!&lt;br /&gt;&lt;br /&gt;Существуют 2 стандарта ISO на это дело - 2-х буквенный и 3-х буквенный. Кроме этого, наш заказчик, разумеется, иногда использует свой. В исходниках, само собой, переменные, хранящие код страны, комментариев по поводу используемого стандарта не содержат - догадайся, мол, сам, что там внутри...&lt;br /&gt;&lt;br /&gt;А, во! Еще у стандартов этих есть разные толкования - особенно у ISO-3. Сидим сейчас и гадаем, какой код у Румынии - ROL, ROM или ROU :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2494150729100934059?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2494150729100934059/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post_18.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2494150729100934059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2494150729100934059'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post_18.html' title='О стандартах на коды стран (оч.кратко)'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-8125286290668858879</id><published>2008-06-17T00:18:00.004+03:00</published><updated>2012-01-03T13:33:47.039+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><title type='text'>Гамбург, та-дамс!!!</title><content type='html'>Снова наслаждаюсь давно забытым ощущением: два перелета позади, вещи разобраны, и вот уютный номер гостиницы Schaper безраздельно мой - правда, на этот раз не на Klosterallee, а на Oberstrasse, но так даже лучше... Номер явно больше, кладовая имеет вид отдельной комнаты (а не отдельного шкафа), кухня-ванная, шоколадка на подушке от заботливой хаусмайстерши, безлимитный интернет, ну и так - по мелочи.&lt;br /&gt;&lt;br /&gt;На картиночке ниже - облака между Одессой и Будапештом. Ближе к Будапешту))&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x1LHpJFaJqo/SFba1W8JgQI/AAAAAAAAAUc/OGYupJCo0h0/s1600-h/IMAG0049.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/SFba1W8JgQI/AAAAAAAAAUc/OGYupJCo0h0/s320/IMAG0049.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5212594228953710850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;По традиции, рассказываю о том, что меня больше всего удивило в полете. Из Будапешта в Гамбург я летел рядом с необъятным немецким дядькой - о нем и речь. В какой-то момент я краем глаза заметил, что он ковыряется большим пальцем во рту. Все бы ничего - но когда он его вытащил, то оказалось, что палец этот имеет длинный желтый ноготь длиной около сантиметра... брррр.... А еще потом он достал vomit pack, и стал в него харкать. Пакетик этот он поставил на свободное место между им и мной, и периодически изливал в него лишнюю жидкость из своего носоглоточного пространства. А сам, между прочим, в костюме и галстуке - прям-таки интеллигент. Такая вот прелесть :))&lt;br /&gt;&lt;br /&gt;Погода холодная, но ясная. Градусов 15.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-8125286290668858879?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/8125286290668858879/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8125286290668858879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8125286290668858879'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post_17.html' title='Гамбург, та-дамс!!!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1LHpJFaJqo/SFba1W8JgQI/AAAAAAAAAUc/OGYupJCo0h0/s72-c/IMAG0049.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4062925943520103370</id><published>2008-06-12T22:43:00.002+03:00</published><updated>2012-01-03T14:29:14.138+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='study'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Анекдот</title><content type='html'>Идет экзамен по физике. Профессор вызывает первого студента и задает вопрос:&lt;br /&gt;- Что быстрее: скорость света или скорость звука?&lt;br /&gt;Студент:&lt;br /&gt;- Скорость света.&lt;br /&gt;- А почему? Обоснуйте свой ответ.&lt;br /&gt;- Ну, я когда радио включаю сначала лампочка загорается, а потом звук появляется.&lt;br /&gt;- Два. Придете на пересдачу.&lt;br /&gt;Заходит следующий.&lt;br /&gt;Ему задается тот же вопрос:&lt;br /&gt;- Что быстрее: скорость света или скорость звука?&lt;br /&gt;Студент:&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4062925943520103370?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4062925943520103370/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4062925943520103370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4062925943520103370'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/06/blog-post.html' title='Анекдот'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1802933790939224</id><published>2008-05-28T09:17:00.000+03:00</published><updated>2008-05-28T09:18:12.305+03:00</updated><title type='text'>Тест по русскому на RB.RU (оч.легкий)</title><content type='html'>&lt;table style="text-align: justify; width: 510px; background:#FFE493 none repeat scroll 0%; font-size: 11pt;"&gt;&lt;tr&gt;&lt;td&gt;Я проверил свои знания русского языка и получил пятерку.&lt;br&gt;&lt;br&gt;&lt;img align="center" width="500" height="164" src="http://www.rb.ru/poll/7/img/5.gif"&gt; &lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;a href="http://www.rb.ru/poll/7/"&gt;Сходи, проверься?&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1802933790939224?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1802933790939224/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/05/rbru.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1802933790939224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1802933790939224'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/05/rbru.html' title='Тест по русскому на RB.RU (оч.легкий)'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-7178869861153196789</id><published>2008-05-26T10:03:00.002+03:00</published><updated>2008-05-26T10:06:49.170+03:00</updated><title type='text'>Ни единого разрыва!</title><content type='html'>&lt;a href="http://www.webpark.ru/comments.php?id=36217"&gt;Ни единого разрыва!&lt;/a&gt; (слушать обязательно)&lt;br /&gt;&lt;a href="http://www.webpark.ru/comments.php?id=36241"&gt;Фотожабы&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Текст разговора:&lt;br /&gt;&lt;br /&gt;— Техническая поддержка «Стрима», инженер 656, Дмитрий, здравствуйте.&lt;br /&gt;— Договор оформлен на Уральского, телефон 766-16-69, у меня к вам следующий вопрос. А вот скажите мне пожалуйста, что, когда теперь заканчивается сессия, что, теперь, это теперь будут разрывы при моем тарифе, да?&lt;br /&gt;— Э… В смысле? Сессия заканчивается…&lt;br /&gt;— В смысле! Вот мне Максим, оператор ваш, коллега, сказал, что у вас закончилась сессия, соответственно, у вас был разрыв. Вообще бред, полный.&lt;br /&gt;— Э… Сессия рвется один раз в 24 часа.&lt;br /&gt;— Понятно. Скажите мне пожалуйста, вот когда я вот подключился, в прошлом году, в ноябре месяце, и до 26 апреля сего года не было ни единого разрыва, хотя у вас сессии должны были завершаться, и я не отключался, чем это было вызвано?&lt;br /&gt;— Это значит, что Вы просто, скорее всего, не замечали, что у вас обрыв происходит…&lt;br /&gt;— Да дело в том, что не было, действительно, в тот… на самом деле не было разрывов, когда я был в интернете.&lt;br /&gt;— Раз в 24 часа сессия гарантированно рвется…&lt;br /&gt;— Я вам говорю, что я человек нормальный, с памятью у меня абсолютно все нормально, не было э-то-го. Не-бы-ло.&lt;br /&gt;— В договоре…&lt;br /&gt;— Я поэтому… Стоп. Я поэтому вас и выбрал, что вы безукоризненно работаете, без всяких разрывов, и что же теперь, я буду страдать из-за ваших «сэссий»? Что, каждый день, что, 24 часа в сутки я должен, э… подключаться вновь, что ли, к интернету? Что-то я не слышал такие правила, вообще, когда я оформлял документы. Такого не было!&lt;br /&gt;— Такое было всегда. Раз в 24 часа сессия рвется…&lt;br /&gt;— Извините меня! Извините меня! Я когда, в ноябре прошлого года, до 26 ноября сего года, не было ни-е-ди-но-го разрыва, еще раз я вам говорю. Или я… Или вы не, или вам надо по-китайски сказать как-то? Ни единого разрыва не было!&lt;br /&gt;— Раз в сутки сессия рвется…&lt;br /&gt;— Я вам говорю еще раз, повторяю вопрос, вы не отвечаете на мой вопрос, ответьте на мой вопрос кон-крет-но! Не было ни единого разрыва, с ноября прошлого года, до 26 апреля сего года!&lt;br /&gt;— Э… в чем вопрос состоит?&lt;br /&gt;— Ответьте на мой вопрос конкретно, и я тогда успокоюсь. Не мотайте мои нервы! Ответьте на мой вопрос кон-крет-но! Понимаете русский язык??? Я вас слушаю ваш ответ!&lt;br /&gt;— Вы вопрос задайте сначала, я на него отвечу.&lt;br /&gt;— Я задавал вопрос! Сессия, то что вы говорите, это сейчас не интересует, я говорю, то что до ноября прошлого года… ДА ВЫ ЗНАЕТЕ МОЙ ВОПРОС! До апреля двадцать… э… 2008 года, 26 апреля, НЕ БЫЛО НИ ЕДИНОГО РАЗРЫВА! С чем это могло быть вызвано? Я говорю, ни единого разрыва! А сейчас есть разрывы!&lt;br /&gt;— Это могло быть вызвано тем, что у вас, возможно, был модем настроен в режиме роутера, и он сам автоматически переподключался.&lt;br /&gt;— Это как это он может возможность переподключаться?… ПОЧЕМУ ВЫ КЛИЕНТА ДОВОДИТЕ ДО ИССТУПЛЕНИЯ ТАКИХ ЭМОЦИЙ? ПОЧЕМУ ВЫ ДОВОДИТЕ КЛИЕНТА ДО ТАКИХ ИССТУПЛЕНИЙ ЭМОЦИЙ? ПОЧЕМУ ВЫ НЕ МОЖЕТЕ СДЕЛАТЬ ТАК ЧТОБЫ КЛИЕНТ НАСЛАЖДАЛСЯ ФИЛЬМОМ, НАСЛАЖДАЛСЯ ПОЛОЖИТЕЛЬНЫМИ ЭМОЦИЯМИ ВАШЕЙ СТРУКТУРЫ? ПОЧЕМУ ВЫ РЕКЛАМИРУЕТЕ ВСЕ ПОЛОЖИТЕЛЬНОЕ, А ЗДЕСЬ ВЫ ГОВОРИТЕ СОВСЕМ ПО ДРУГОМУ? Я ВНОШУ БОЛЬШУЮ СУММУ В БАЛАНС, ЧТОБЫ НЕ БЫЛО ВООБЩЕ РАЗРЫВА ДО СЛЕДУЮЩЕЙ СЕССИИ, КОГДА У МЕНЯ СЧИТЫВАЕТСЯ, А ВЫ ГОВОРИТЕ «КАЖДЫЙ ДЕНЬ», «БУДЕТ РАЗРЫВ», В ТЕЧЕНИИ 24 ЧАСОВ! ЭТО ВЫ СЧИТАЕТЕ САМЫЙ ЛУЧШИЙ ЧТО ЛИ ИНТЕРНЕТ ТОГДА? ЭТО МОЙ ВОПРОС К ВАМ!&lt;br /&gt;— Техническая реализация данной услуги предусматривает то, что раз в 24 часа, будет обрыв связи.&lt;br /&gt;— ЭТО ЧТО, КАЖДЫЙ ДЕНЬ ПОДРАЗУМЕВАЕТСЯ?&lt;br /&gt;— Если вас это не устраивает, тогда вы можете отправить жалобу…&lt;br /&gt;— Я ВАМ ГОВОРЮ, ЭТО КАЖДЫЙ ДЕНЬ ПОДРАЗУМЕВАЕТСЯ? КАЖДЫЙ ДЕНЬ РАЗРЫВ СВЯЗИ?&lt;br /&gt;— Раз в 24 часа, да, это каждый день, раз в сутки обрыв связи.&lt;br /&gt;— А ПОЧЕМУ НЕ БЫЛО ТОГДА? Тогда настройте мой модем, 531-B как раньше!&lt;br /&gt;— Обрывы связи были всегда, раз в сутки.&lt;br /&gt;— ТОГДА НЕ БЫЛО РАЗРЫВ СВЯЗИ, ТУПИЦА, НЕ БЫЛО! Я ГОВОРЮ НЕ БЫЛО! А ТЫ ГОВОРИШЬ БЫЛО!&lt;br /&gt;— Были.&lt;br /&gt;— Я ГОВОРЮ НЕ БЫЛО РАЗРЫВОВ СВЯЗИ! С НОЯБРЯ ПРОШЛОГО ГОДА! ДО АПРЕЛЯ… 26 АПРЕЛЯ 2008 ГОДА! СУББОТЫ! А НА СЛЕДУЮЩИЙ ДЕНЬ ЦЕЛЫХ ЧЕТЫРЕ!!! РАЗРЫВА БЫЛО! ПОТОМ ОПЯТЬ ПОВТОРЯЛОСЬ! И СЕЙЧАС ТОЖЕ ОПЯТЬ ПОВТОРИЛОСЬ!&lt;br /&gt;— К сожалению невозможно настроить услугу так, чтобы обрывов раз в сутки не было.&lt;br /&gt;— А ПОЧЕМУ ВЫ НЕ ОТВЕЧАЕТЕ НА МОЙ ВОП… ЗАДАН… ПОСТАВЛЕННЫЙ ВОПРОС??? ТО ЧТО!!! С НОЯБРЯ ПРОШЛОГО!!! ГОДА!!! ДО 2008 ГОДА 26 АПРЕЛЯ!!! НЕ БЫЛО!!! НИ ЕДИНОГО!!! РАЗРЫВА!!! ОТВЕТЬ ТЫ!!! НА МОЙ ВОПРОС!!! ОТВЕЧАЙ!!!&lt;br /&gt;— Обрывы связи у вас были…&lt;br /&gt;— ДА НЕ СМЕШИ ТЫ!!! ДА НЕ СМЕЙСЯ ТЫ!!! ТЫ БЫ!!! БЫЛ БЫ НА МОЕМ БЫ МЕСТЕ БЫ БЛЯДЬ!!! ТЫ БЫ ПОНЯЛ БЫ ТОГДА!!! ОТВЕЧАЙ НА МОЙ ПОСТАВЛЕННЫЙ!!!&lt;br /&gt;— Сессия…&lt;br /&gt;— КОНКРЕТНЫЙ!!! ВОПРОС!!!&lt;br /&gt;— Сессия у вас заканчивается раз в сутки, гарантированно.&lt;br /&gt;— ТОГДА!!! Я БЫ!!! ТЫ ЧТО ТУПОЙ ЧТО ЛИ БЛЯДЬ??? Я В НОЯБРЕ ПОДКЛЮЧЕН БЫЛ ПРОШЛОГО ГОДА! 26 АПРЕЛЯ ЭТОГО ГОДА Я ПОЛУЧИЛ ПЕРВЫЙ РАЗРЫВ! ПОЧЕМУ НЕ БЫЛО НИ ЕДИНОГО РАЗРЫВА??? ОТВЕЧАЙ НА МОЙ КОНКРЕТНЫЙ ВОПРОС!!!&lt;br /&gt;— Разрывы были всегда, это значит только то, что вы их просто не замечали. По какой-то причине.&lt;br /&gt;— ДА НЕ БЫЛО НИКАКИХ РАЗРЫВОВ! Я БЫЛ ПОСТОЯННО КАЖДЫЙ ДЕНЬ ВОЗЛЕ КОМПА!!! ТУПИЦА!!!&lt;br /&gt;— Вы не могли быть все 24 часа возле компьютера.&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;— Согласно пункту 1.3 Договора Оферты максимальная продолжительность каждой отдельной сессии пользователя услугой составляет 24 часа…&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;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;— А почему тогда не было разрывов? Почему тогда не было разрывов с ноября прошлого года до 26 АПРЕЛЯ 2008 ГОДА???? ЭТО НЕ БЫЛО!!!&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;br /&gt;- Техническая поддержка стрима....&lt;br /&gt;- Не надо представлений, договор оформлен на Уральского и соедините меня с инженером высшей категории.&lt;br /&gt;- Вы сейчас со старшим инженером разговариваете, слушаю вас.&lt;br /&gt;- Ээ, значит, мне уверяли нижестоящие чины, я имею в виду операторы ваши, что разрыв связи происходит каждый раз в течении 24 часов, я же опровергаю в том что я был зарегистрирован у вас в ноябре прошлого года до 26 апреля сего года не было ни единого разрыва связи, а 27 апреля в пасху было целых четыре разрыва связи, потом, эээ, сегодня 10 минут минут назад примерно был еще разрыв связи, я был в интернете, а в промежутке с 27 апреля и сегодняшней датой был еще разрыв связи на ADSL 531Б, эээ, кнопка... алло, вы меня слушаете?&lt;br /&gt;- Да.&lt;br /&gt;- ... не горела, сейчас горит.&lt;br /&gt;- подскажите номер ваш&lt;br /&gt;- 7661669, и они мне утверждают...&lt;br /&gt;- нет, просто смотрите, есть такое понятие как обрыв связи, когда обрывается DSL линия, тогда лампочка будет мигать, и да, такой момент что максимальная продолжительность сессии составляет 24 часа. Если она длится 24 часа, соответственно, её принудительно обрывают.&lt;br /&gt;- Тогда я не понимаю логики абсолютно, что с прошлого года...&lt;br /&gt;- А вопрос в чем заключается у вас?&lt;br /&gt;- Вопрос заключается в следующем, с прошлого года ноября месяца, я почему выбрал именно вас сервис...&lt;br /&gt;- Мы не разбираем проблемы которые были когда-то давным давно...&lt;br /&gt;- Нет, это все связано, извините меня, это все связано, все совокупно, я именно выбрал вас сервер, сервис, потому что меня все устраивало, что безразрывно, что все пофигенно, поэтому до 26 апреля с ноября прошлого года не было ни единого разрыва интернета что касается, это было прекрасно, я фактически ээ, может частично беспокоил по "Стрим-ТВ", но это знает только "Стрим-ТВ", а не вы, интернет, и в общем стало происходить обрыв связи с 26 апреля. Мне говорят что там оферты, еще что-то, я говорю, извините, вы что, что-то изменили в структуре что-то внутренней у вас, потому что до этого все работало, и на "Эхо Москвы" говорят, что все работает безукоризненно, я ведь слушаю "Эхо Москвы", и вашего директора тоже слушаю, что они говорят, понимаете? все, алло?&lt;br /&gt;- Да-да&lt;br /&gt;- И вобщем сдесь происходят разрывы, а мне говорят совершенно противоположное, и мне еще подтверждают, что вы знаете, абонент Уральский, каждый день у вас должен теперь быть разрыв происходить, подчеркиваю, ТЕПЕРЬ происходить, каждый день разрыв раз в 24 часа. Я говорю, извините, а почему раньше не происходил разрыв с ноября прошлого года...&lt;br /&gt;- Хорошо, а вопрос-то в чем заключается у вас?&lt;br /&gt;- Да господи ты боже, мне что, распяться вместо Христа? Вот в этом-то вопрос...&lt;br /&gt;- В чем?&lt;br /&gt;- ... и заключается, в том что с ноября прошлого года до 26 апреля НЕ БЫЛО РАЗРЫВА!!! НИ ЕДИНОГО!! И Я ВАС НЕ БЕСПОКОИЛ ПО ЭТОМУ ПОВОДУ!! я щас голос сорву и вы будете оплачивать мне медицинскую страховку... лечение... это бред абсолютно полный... почему вы кайф ломаете, почему вы сервис вот этот такой, я плачу большую сумму на баланс, у меня "Стрим-ТВ"(плача)&lt;br /&gt;- Да, максимальная продолжительность сессии 24 часа, а в чем-то вопрос ваш заключается?&lt;br /&gt;- Да ты что, тоже тупой, или не соображаешь что ли?&lt;br /&gt;- Если вы будете продолжать в таком тоне...&lt;br /&gt;- Вопрос заключается в слудующем, что с ноября прошлого года, слушаешь меня ты внимательно?, до 26 апреля не было ни единого разрыва, это действительно так, я не умею обманывать, и никогда не обманываю!&lt;br /&gt;- Обрывы связи это обрывы связи, а как бы максимальная продолжительность сессии это максимальная продолжительность сессии, это немножко разные вещи. То что у вас связь не обрывается я за вас рад, но по договору...&lt;br /&gt;- Что-то непохоже, что вы за меня рады, НЕПОХОЖЕ, неубедительно! Я этого НЕ ОЩУЩАЮ!! меня интересует связь, а связь с интернетом это как раз все и ваша внутренняя кухня!&lt;br /&gt;- Я так и не понял, вы можете сформулировать в чем вопрос заключается?&lt;br /&gt;- ЧТО С НОЯБРЯ ПРОШЛОГО ГОДА, ТУПИЦА, Я ЕЩЕ РАЗ ПОВТОРЯЮ, С 26 АПРЕЛЯ, СЛУШАЙТЕ ПОЖАЛУЙСТА ВНИМАТЕЛЬНО КЛИЕНТА, до 26 апреля 2008 года не было не единого разрыва связи, я вас не беспокоил по этому поводу, я сейчас все начинает повторятся, а вы, а ты меня сейчас перебиваешь, а ты же мне говоришь слушать меня внимательно, как понимать тогда...&lt;br /&gt;- Я вас предупреждал, что если вы будете продолжать беседу в таком тоне...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-7178869861153196789?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/7178869861153196789/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/05/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7178869861153196789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7178869861153196789'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/05/blog-post.html' title='Ни единого разрыва!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2149268178034158777</id><published>2008-04-30T10:16:00.003+03:00</published><updated>2012-01-03T14:29:52.969+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='people'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Пароле-пароле-пароле</title><content type='html'>А вы используете матерные слова в качестве паролей?&lt;br /&gt;&lt;br /&gt;Помню красное лицо моего коллеги, когда ему пришлось по телефону диктовать по слогам слово "за-е-ба-ло", дабы его собеседник мог вытащить из его компа требуемый файл.&lt;br /&gt;&lt;br /&gt;Сегодня тоже был прикол. Коллективно помогали другому коллеге вспомнить забытый пароль. У него фишка была в том, что в начале было слово, а в конце - номер месяца (март), в котором он его установил. Диалог был примерно такой:&lt;br /&gt;&lt;br /&gt;- А, может, там был не март?&lt;br /&gt;- Да нет, почему? Мат...&lt;br /&gt;&lt;br /&gt;И дикий ржач. Без палива))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2149268178034158777?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2149268178034158777/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/04/blog-post_30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2149268178034158777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2149268178034158777'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/04/blog-post_30.html' title='Пароле-пароле-пароле'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2765695542427210847</id><published>2008-04-18T09:39:00.003+03:00</published><updated>2012-01-03T14:29:53.009+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Побороли ошибку</title><content type='html'>Третьего дня одна девушка, работающая в моей команде, поборола ошибку в программе. Ошибка заключалась в следующем: при запуске swing-приложения его окно (разворачиваемое на весь экран) загадочно мерцало где-то полсекунды.&lt;br /&gt;&lt;br /&gt;Путем самоотверженных изысканий установилось, что каждый раз при запуске программы из Eclipse девушка дергала под столом ножкой. Ножка цепляла кабель, идущий от видеокарты к монитору, что и вызывало странное мерцание экрана. В результате отказа от дерганья ножкой от проблемы удалось избавиться.&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/3704723600302758629-2765695542427210847?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2765695542427210847/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2765695542427210847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2765695542427210847'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/04/blog-post.html' title='Побороли ошибку'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-842106904017899520</id><published>2008-02-29T17:21:00.002+02:00</published><updated>2012-01-03T14:40:56.333+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>YourKit</title><content type='html'>Открыл для себя замечательный профилировщик (он же профайлер) - называется &lt;a href="http://yourkit.com"&gt;YourKit&lt;/a&gt;. Умеет профилировать и CPU, и память, и потоки, и дедлоки... А, во, еще имеет плагин для Eclipse, позволяющий запускать профайлинг прямо оттуда.&lt;br /&gt;&lt;br /&gt;Не, я реально в восторге! Только что с его помощью выяснил, почему в одном из наших продуктов не высвобождалась память при закрытии старого документа и открытии нового. Наш обработчик тултипов хранил ссылку на TableColumn, который хранил ссылку на объект SwingPropertyChangeSupport, у которого в списке маус-моушн-лиснеров зачем-то хранилась DefaultTableModel. Из-за этой "лишней" ссылки на данные GC никогда их реально и не прибивал... Ну, блин, Swing!!! А YourKit все сразу показал - и самые большие объекты в памяти, и ссылки на них.&lt;br /&gt;&lt;br /&gt;Зараза, к сожалению, платная, но обладает 15-дневным пробным ключом активации. Очень рекомендую попробовать! Ведь как приятно, после дня мучений, увидеть такой замечательный график:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1LHpJFaJqo/R8gqfQVpYdI/AAAAAAAAARg/x-L066hrqI8/s1600-h/heapmemory.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1LHpJFaJqo/R8gqfQVpYdI/AAAAAAAAARg/x-L066hrqI8/s320/heapmemory.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5172430888485085650" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-842106904017899520?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/842106904017899520/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/02/yourkit.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/842106904017899520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/842106904017899520'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/02/yourkit.html' title='YourKit'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x1LHpJFaJqo/R8gqfQVpYdI/AAAAAAAAARg/x-L066hrqI8/s72-c/heapmemory.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5614928767603784940</id><published>2008-02-20T09:46:00.002+02:00</published><updated>2012-01-03T13:54:15.757+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Бинарные форматы документов Microsoft Office 97-2007 открыты!</title><content type='html'>В прошлую пятницу Microsoft открыла общественности спецификации бинарных форматов для Word, Excel, PowerPoint и Drawing 97-2007.&lt;br /&gt;&lt;br /&gt;Брать отсюда: &lt;a href="http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx"&gt;http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;А &lt;a href="http://www.joelonsoftware.com/items/2008/02/19.html"&gt;здесь&lt;/a&gt; Джоэль дает несколько комментариев и полезных советов к тому, как это все понимать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-5614928767603784940?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5614928767603784940/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/02/microsoft-office-97-2007.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5614928767603784940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5614928767603784940'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/02/microsoft-office-97-2007.html' title='Бинарные форматы документов Microsoft Office 97-2007 открыты!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1435062584775455141</id><published>2008-01-18T17:22:00.000+02:00</published><updated>2012-01-03T14:29:52.928+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Баг в Swing: редактирование ячейки JTable отменяется при ресайзе столбца</title><content type='html'>Я всегда говорил, что разработка под Swing сродни ходьбе по минному полю - никогда не знаешь, под какой ногой рванет в следующую минуту.&lt;br /&gt;&lt;br /&gt;Сегодня (в который раз!) рванула JTable. Я напоролся на баг, который заключается в следующем: если начать ресайзить столбец таблицы в процессе редактирования ее ячейки, то введенный во время редактирования текст исчезает - вместо него возникает предыдущее значение.&lt;br /&gt;&lt;br /&gt;Вот так вот. &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4330950"&gt;Багу #4330950&lt;/a&gt; уже почти восемь лет.&lt;br /&gt;&lt;br /&gt;Интересно было почитать комментарии к нему на сайте Sun:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;17 июня 2002 г.:&lt;/b&gt; можете пообещать, что это будет исправлено в 1.4.1?&lt;br /&gt;&lt;li&gt;&lt;b&gt;6 августа 2005 г.:&lt;/b&gt; это должно быт &lt;strong&gt;обязательно &lt;/strong&gt;исправлено в Java 6!&lt;br /&gt;&lt;b&gt;26 июня 2007 г.:&lt;/b&gt; проблема все еще жива в j2se 1.6.1!&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;В этот раз workaround нашелся. Там же, по ссылке, в комментах добрые люди советуют, что надо делать. Спасибо им за это!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1435062584775455141?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1435062584775455141/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/swing-jtable.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1435062584775455141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1435062584775455141'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/swing-jtable.html' title='Баг в Swing: редактирование ячейки JTable отменяется при ресайзе столбца'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-6743858370352569077</id><published>2008-01-18T13:06:00.000+02:00</published><updated>2012-01-03T14:40:56.287+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Русские зайцы настолько суровы...</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_x1LHpJFaJqo/R5CJXLBjpXI/AAAAAAAAAOk/845W3F39eMg/s1600-h/zayci.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/R5CJXLBjpXI/AAAAAAAAAOk/845W3F39eMg/s320/zayci.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156772604528534898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Японские мультяшки про русских зайцев: &lt;a href="http://hectop.livejournal.com/527938.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;В ролях:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;заяц в красном&lt;br /&gt;&lt;li&gt;заяц в зеленом&lt;br /&gt;&lt;li&gt;зайцы за дверью&lt;br /&gt;&lt;li&gt;странный цыпленок&lt;br /&gt;&lt;li&gt;жабко&lt;br /&gt;&lt;li&gt;и т.д.&lt;br /&gt;&lt;/ul&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/3704723600302758629-6743858370352569077?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/6743858370352569077/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6743858370352569077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6743858370352569077'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/blog-post.html' title='Русские зайцы настолько суровы...'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1LHpJFaJqo/R5CJXLBjpXI/AAAAAAAAAOk/845W3F39eMg/s72-c/zayci.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-7201417000049249220</id><published>2008-01-14T10:25:00.001+02:00</published><updated>2012-01-03T13:54:15.770+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Interbase/Firebird и Windows Vista: друзья навек</title><content type='html'>Вчера, несмотря на Старый Новый Год, пришлось решать проблему установки одной программы, использующей СУБД Interbase, на Windows Vista Home Basic.&lt;br /&gt;&lt;br /&gt;Само по себе, увы, не заработало. Валился локальный протокол доступа Interbase.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Лирическое отступление.&lt;/em&gt; Протоколов доступа там два: &lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;сетевой&lt;/strong&gt; - формат адреса типа &lt;code&gt;localhost:c:/db/mydb.gdb&lt;/code&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;локальный&lt;/strong&gt; - а это, например, просто &lt;code&gt;c:\db\mydb.gdb&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Так вот, при попытке доступа к БД по локальному протоколу все время вываливалось &lt;code&gt;unavailable database&lt;/code&gt;. В связи с этим излагаю выработанную последовательность шагов, которая позволяет запустить сервер Firebird под Windows Vista с работающим локальным протоколом:&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Скачиваем с &lt;a href="http://firebirdsql.org"&gt;firebirdsql.org&lt;/a&gt; &lt;strong&gt;Firebird 2.0.3&lt;/strong&gt; (подойдет любая версия старше 2.0.1), устанавливаем:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;режим сервера - SuperServer&lt;br /&gt;&lt;li&gt;запускать как службу&lt;br /&gt;&lt;li&gt;НЕ ДОБАВЛЯТЬ аплет в Панель управления - иначе она потом вообще не сможет запуститься, и FB придется сносить&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Заходим в папку с Firebird, открываем файл firebird.conf, откомментируем строку с параметром &lt;code&gt;IpcName&lt;/code&gt;, заменяем ее на:&lt;br /&gt;&lt;pre&gt;IpcName = Global\FIREBIRD&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Здесь придется перезагрузить машину.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;После этих танцев с бубном Firebird должен заработать правильно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-7201417000049249220?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/7201417000049249220/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/interbasefirebird-windows-vista.html#comment-form' title='Комментарии: 18'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7201417000049249220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/7201417000049249220'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/interbasefirebird-windows-vista.html' title='Interbase/Firebird и Windows Vista: друзья навек'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-8176054233564075540</id><published>2008-01-04T16:43:00.001+02:00</published><updated>2012-01-03T14:29:53.201+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>The Truth About Game Development</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Только что два часа рубился в мега-игрушку (название в теме). Скачать ее можно &lt;a href='http://www.kloonigames.com/blog/games/tagd/'&gt;отсюда&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R35Hr7BjpUI/AAAAAAAAANc/fELc3sDC0Ck/s1600-h/tagd_01.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R35Hr7BjpUI/AAAAAAAAANc/fELc3sDC0Ck/s320/tagd_01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5151633843662595394" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Вы находитесь в роли продюсера новой компьютерной игры. Программисты (или рабы, как они называются там), бегают по лесенкам вверх-вниз и якобы вносят свой вклад в разработку. По мере продвижения, картинка на заднем фоне растет вверх.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;У каждого раба есть почасовая зарплата. Кроме того, имеются бюджет и баланс между графикой, геймплеем и затратами на маркетинг:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_x1LHpJFaJqo/R35HsLBjpVI/AAAAAAAAANk/Si4iUtCcqS8/s1600-h/tagd_02.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/R35HsLBjpVI/AAAAAAAAANk/Si4iUtCcqS8/s320/tagd_02.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5151633847957562706" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;По мере продвижения работ мотивация рабов снижается. Увеличить ее можно либо повышая зарплату и соглашаясь на инициативы вроде «поставить кулеры с водой» или «внедрить супер-клевую фичу», либо… убивая этих ленивых козлов-программистов! Страх – лучшая мотивация!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Если убивать их слишком часто, может начаться забастовка, в которой могут принять участие несколько рабов (тогда парочку из них можно убить), либо всеобщая – с которой уже хрен чего сделаешь. По завершении работ нам показывают отзывы геймерских журналов, доход и ROI. Мой рекорд – 1795692%:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_x1LHpJFaJqo/R35HsbBjpWI/AAAAAAAAANs/l-hqGJS4kVI/s1600-h/tagd_03.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1LHpJFaJqo/R35HsbBjpWI/AAAAAAAAANs/l-hqGJS4kVI/s320/tagd_03.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5151633852252530018" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Убийственно&lt;/strong&gt; классная штука!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;У этого же автора в блоге есть много других отличных игр (рекомендую Humpster, Bloody, Crayon). Он их пишет по одной в неделю.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-8176054233564075540?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/8176054233564075540/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/truth-about-game-development.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8176054233564075540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/8176054233564075540'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2008/01/truth-about-game-development.html' title='The Truth About Game Development'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1LHpJFaJqo/R35Hr7BjpUI/AAAAAAAAANc/fELc3sDC0Ck/s72-c/tagd_01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4153921561975769110</id><published>2007-12-28T11:46:00.001+02:00</published><updated>2012-01-03T14:38:38.568+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='luxoft'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Ля-ля vs Бэ-мэ: итоги года</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Ярчайшим событием уходящего года стал уход из Ля-ля одесского сайт-менеджера и директоров ИСГ и основание ими собственной компании Бэ-мэ. Было все:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;и обещания о переводе меня и моих ребят в Бэ-мэ&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и уговоры Ля-ля остаться&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и вызов меня в московский офис Ля-ля&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и бесконечные приезды большого начальства со сборами всех сотрудников на кухне и заверениями что «все будет хорошо»&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и неконтролируемые попытки Ля-ля поднять всем зарплаты с целью закрепить людей на рабочих местах&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и уверения руководства Бэ-мэ в «светлом будущем»&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и «командировка» в Ля-ля сотрудников половині команды, уже оформленных в Бэ-мэ&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и заказчик, который сначала подтвердил наш переход в Бэ-мэ, а потом закрепил в Ля-ля&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и длинная переписка с нашим ПМ-ом с немецкой стороны&lt;br /&gt;&lt;/li&gt;&lt;li&gt;и разъединение команды&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;И много еще чего было. Я (да наверняка и все остальные) чувствуем себя пережившими ядерную войну: мы выжили, но вспоминать обо всем этом не хочется, а мыслей столько, что лучше и не начинать.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Сначала я очень хотел перейти в Бэ-мэ. Сейчас мне все равно. Я устал. Устал от непрекращающейся агитации и постоянных выпадов с обеих сторон. Устал от организационных проблем, создающих ощутимые неудобства в работе, от самоустраняющихся немцев, от полных надежды лиц новых сотрудников, от звонящих HR-ов других компаний, пронюхавших, что не все ладно в Датском королевстве... Мне неудобно ходить в Ля-ля: я чувствую, что знаю больше остальных. Мне неудобно ходить в Бэ-мэ по той же причине. Я не знаю точно, где правда, но знаю, что период полураспада продолжается и многое еще впереди.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;При всем этом я люблю свой проект и дорожу своей работой. Многое удалось сделать, и я надеюсь, что Крысячий год даст сделать еще больше. Искренне уважаю и горжусь всеми, прошедшими через эти события.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Мы все молодцы.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4153921561975769110?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4153921561975769110/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/12/vs.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4153921561975769110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4153921561975769110'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/12/vs.html' title='Ля-ля vs Бэ-мэ: итоги года'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-740913892841252997</id><published>2007-12-27T17:10:00.001+02:00</published><updated>2007-12-27T17:57:08.794+02:00</updated><title type='text'>Lonewolf's Weblog Goes Blogger.com</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Вот он, конец 2007-го! Еще немножко – и начнется новый, 2008-й. В связи с этим, а также с тем, что мне до одури надоела эта мышиная возня с моим Web Wiz Journal, мой блог переходит на Blogger.com.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Причины:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Авто-комменты от роботов. Web Wiz никак не умеет бороться с ними, в результате чего многие записи имеют уже по 150 спам-комментов.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Проблемный хостинг. Моя запись на Brinkster.com имеет ограничение по трафику, из-за чего сайт в последнее время ложится где-то около девяти вечера, и лежит до утра следующего дня.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Неудобно добавлять сообщения с картинками – сначала зайди на хостинг, залей картинку, потом зайди в админку блога, добавь запись… Неудобно, короче!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Все-таки гугловый сервис – круто, светлое будущее и все такое.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Сюда можно писать прямо из Word 2007 &lt;span style='font-family:Wingdings'&gt;J&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;p&gt;Старый блог будет грохнут. Я уже перенес в новый все записи (только комменты пропали, но я рассчитываю на новые&amp;#160;&lt;span style='font-family:Wingdings'&gt;J&lt;/span&gt;)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Новый блог будет открываться по ссылке с сайта, при этом в нем есть также ссылки на все основные разделы сайта. Таким образом, получится какая-никакая, а все-таки интеграция.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Придется, правда, обновить фиды:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;http://sergey-borodavkin.blogspot.com/rss.xml (для RSS 2.0)&lt;br /&gt;&lt;li&gt;http://sergey-borodavkin.blogspot.com/atom.xml (для Atom 1)&lt;br /&gt;&lt;/ul&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Форца Гугл &lt;span style='font-family:Wingdings'&gt;J&lt;/span&gt;&lt;br /&gt;   &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-740913892841252997?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/740913892841252997/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/12/bloggercom.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/740913892841252997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/740913892841252997'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/12/bloggercom.html' title='Lonewolf&apos;s Weblog Goes Blogger.com'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3669543104243564709</id><published>2007-12-13T17:17:00.001+02:00</published><updated>2012-01-03T14:40:56.225+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Java Multi-Level Undo Technique (Reflection API)</title><content type='html'>&lt;em&gt;&lt;strong&gt;1. Overview&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The best examples of the end-user software leave absolutely no doubt that undo capability is not an option ever more. Currently every application that can alter existing data has to support undo and redo operations, which allow to cancel the changes made by user and to repeat them again as needed. As user knows that he can eliminate carelessly changes at any time, his work becomes more comfortable and the software is considered reliable and predictable.&lt;br /&gt;&lt;br /&gt;For some reasons, still many applications support only limited undo/redo capabilities, allowing canceling and repeating only single operation. There is no need to prove that multi-level undo is much better. In this article I'm going to show that implementing multi-level undo in Java is easy, requires minimal amount of changes in your existing code and can be separated to reuse the approach in future. The top of the iceberg is already well-known to the developers who have had an experience with programming for Mac OS X using Cocoa framework which has the NSUndoManager class utilizing a similar technique.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;The article is divided into sections describing the approach. In the next section, “Introduction to Java Reflection API”, a very brief description of things is given. If you are already familiar with reflection, you can skip this and move on to the next section, “Implementing basic undo/redo handling”. The last one, “Tuning the undo engine”, is devoted to improving the solution. After it, the conclusions and some tips on how to continue are given.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;2. Introduction to Java Reflection API&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The reflection library gives you a rich instrumentation to work with your Java code dynamically. For example, if a new class is added to the application during development, it is possible to organize a set of requests to get know the features of that class. Saying more generally, reflection is a way that a program can use to know about itself. Among the possibilities opened with it, are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;analyzing the features of the classes during the runtime&lt;br /&gt;&lt;li&gt;checking the object state during the runtime by getting the information about its fields and the values contained there&lt;br /&gt;&lt;li&gt;using the &lt;span style="font-family:courier new;"&gt;Method&lt;/span&gt; instances that work similar to the pointers to functions in languages like C++, etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Consider, for example, a class with rather strange name: &lt;span style="font-family:courier new;"&gt;Class&lt;/span&gt; (&lt;span style="font-family:courier new;"&gt;java.lang.Class&lt;/span&gt;, to be more precise). The instance of the class &lt;span style="font-family:courier new;"&gt;Class&lt;/span&gt; is an object describing the particular properties of a particular class. Here is an example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public abstract class Shape { . . . }&lt;br /&gt;&lt;br /&gt;public class Circle extends Shape { . . . }&lt;br /&gt;&lt;br /&gt;public class Square extends Shape { . . . }&lt;br /&gt;&lt;br /&gt;. . .&lt;br /&gt;&lt;br /&gt;Shape s;&lt;br /&gt;&lt;br /&gt;. . .&lt;br /&gt;&lt;br /&gt;Class c = s.getClass();&lt;br /&gt;&lt;br /&gt;System.out.println(c.getName() + " " + s.toString());&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The last operator can print the line “&lt;span style="font-family:courier new;"&gt;Circle radius=10&lt;/span&gt;”, if &lt;span style="font-family:courier new;"&gt;s&lt;/span&gt; is a &lt;span style="font-family:courier new;"&gt;Circle&lt;/span&gt; instance, or “&lt;span style="font-family:courier new;"&gt;Square side=5&lt;/span&gt;”, if &lt;span style="font-family:courier new;"&gt;s&lt;/span&gt; is a &lt;span style="font-family:courier new;"&gt;Square&lt;/span&gt; instance.&lt;br /&gt;&lt;br /&gt;Now you can do whatever you want. Imagine that you don’t know the exact class of &lt;span style="font-family:courier new;"&gt;s&lt;/span&gt;, but it is necessary to create another instance of the same class. The following call is the solution:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Shape s1 = s.getClass().newInstance();&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Here the default constructor is used to initialize &lt;span style="font-family:courier new;"&gt;s1&lt;/span&gt;. If there is no default constructor for the class, an exception is thrown.&lt;br /&gt;&lt;br /&gt;You can extend your knowledge about reflection by checking out the classes &lt;span style="font-family:courier new;"&gt;Field&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;Method&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;Constructor&lt;/span&gt; in the &lt;span style="font-family:courier new;"&gt;java.lang.reflect&lt;/span&gt; package. Summing up, the key feature of reflection is the ability to instantiate and work with some entities that are the parts of the application, be it a class, its constructor, a field or its modifier, etc. Actually, the possibility to refer to a class method as to an instance of the &lt;span style="font-family:courier new;"&gt;Method&lt;/span&gt; class is the core of the proposed undo technique. Now we are ready to begin implementing undo mechanism.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;3. Implementing basic undo/redo handling&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Primarily, undo support is heavily based on using the LIFO queue (stack), as the last performed operation has to be undone first. So, it is obvious that the class being developed, let’s call it UndoManager, will have undoStack as its member. Let’s start from the following code:&lt;pre&gt;&lt;br /&gt;public class Pair {&lt;br /&gt;      public Object first;&lt;br /&gt;      public Object second;&lt;br /&gt;&lt;br /&gt;      public Pair(Object f, Object s) {&lt;br /&gt;            first = f;&lt;br /&gt;            second = s;&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class UndoManager {&lt;br /&gt;      private Stack undoStack = null;&lt;br /&gt;      private Object target = null;&lt;br /&gt;&lt;br /&gt;      public UndoManager(Object forWhom) {&lt;br /&gt;            undoStack = new Stack(); &lt;br /&gt;            target = forWhom;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void addInvocation(Method method, Object[] args) {&lt;br /&gt;            Pair p = new Pair(method, args);&lt;br /&gt;            undoStack.push(p);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public boolean canUndo() {&lt;br /&gt;            return (undoStack.size() &gt; 0);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void undo() {&lt;br /&gt;            if (!canUndo()) {&lt;br /&gt;                  return;&lt;br /&gt;            }&lt;br /&gt;            Object obj = undoStack.pop();&lt;br /&gt;            if (obj instanceof Pair) {   &lt;br /&gt;                  Pair p = (Pair)obj;&lt;br /&gt;                  invokeCommand(p);&lt;br /&gt;            }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      protected void invokeCommand(Pair p) {&lt;br /&gt;            Method method = (Method)p.first;&lt;br /&gt;            Object[] args = (Object[])p.second;&lt;br /&gt;            try {&lt;br /&gt;                  method.invoke(target, args);&lt;br /&gt;                  return;       &lt;br /&gt;            } catch (Exception ex) {&lt;br /&gt;                  System.err.println("Cannot undo " + method.getName());&lt;br /&gt;                  ex.printStackTrace();&lt;br /&gt;                  return;&lt;br /&gt;            }&lt;br /&gt;      }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Here class &lt;span style="font-family:courier new;"&gt;Pair&lt;/span&gt; is a helper which simply allows storing two objects together. The undo is actually performed by an &lt;span style="font-family:courier new;"&gt;UndoManager&lt;/span&gt; instance. As it is shown, it is necessary to pass the target object to its constructor. Target object is the instance responsible for making the actions and organizing the undo workflow.&lt;br /&gt;&lt;br /&gt;To add a method invocation to &lt;span style="font-family:courier new;"&gt;UndoManager&lt;/span&gt;, it is necessary to call method &lt;span style="font-family:courier new;"&gt;addInvocation(Method method, Object[] args)&lt;/span&gt;, where method is target object’s method that will be called during undo; args is an array of arguments that will be passed to method. &lt;span style="font-family:courier new;"&gt;addInvocation&lt;/span&gt; simply stores the given method and its arguments into a &lt;span style="font-family:courier new;"&gt;Pair&lt;/span&gt; instance in the undo stack.&lt;br /&gt;&lt;br /&gt;When the method &lt;span style="font-family:courier new;"&gt;undo()&lt;/span&gt; is called, the following happens. The last &lt;span style="font-family:courier new;"&gt;Pair&lt;/span&gt; is popped from the undo stack, and the target object’s appropriate method with its arguments is executed. Of course, an exception is thrown when something goes wrong.&lt;br /&gt;&lt;br /&gt;Actually, this is all for undo. However, additional efforts are needed to support redo. As you can see, after the method is undone, it simply disappears and thus cannot be redone:&lt;pre&gt;&lt;br /&gt;public void undo() {&lt;br /&gt;      . . .&lt;br /&gt;      Object obj = undoStack.pop();&lt;br /&gt;      . . .&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;To redo this method later, it is needed to store it somewhere. The right place to do so is another stack called &lt;span style="font-family:courier new;"&gt;redoStack&lt;/span&gt;. For example, after the sequence of methods A B C has been executed, the &lt;span style="font-family:courier new;"&gt;undoStack&lt;/span&gt; contains the C B A sequence (C will be executed first during undo). If we put each method being undone to the &lt;span style="font-family:courier new;"&gt;redoStack&lt;/span&gt;, then it will contain the sequence A B C again. Undo stack has reverse order, redo stack has direct order – this is what we need.&lt;br /&gt;&lt;br /&gt;The changes to &lt;span style="font-family:courier new;"&gt;UndoManager&lt;/span&gt; class are the following:&lt;pre&gt;&lt;br /&gt;. . .&lt;br /&gt;private Stack redoStack = null;&lt;br /&gt;. . .&lt;br /&gt;public UndoManager(Object forWhom) {&lt;br /&gt;      . . .&lt;br /&gt;      redoStack = new Stack();&lt;br /&gt;      . . .&lt;br /&gt;}&lt;br /&gt;. . .&lt;br /&gt;public boolean canRedo() {&lt;br /&gt;      return (redoStack.size() &gt; 0);&lt;br /&gt;}&lt;br /&gt;. . .&lt;br /&gt;public void redo() {&lt;br /&gt;      if (!canRedo()) {&lt;br /&gt;            return;&lt;br /&gt;      }&lt;br /&gt;      Object obj = redoStack.pop();&lt;br /&gt;      if (obj instanceof Pair) {      &lt;br /&gt;            Pair p = (Pair)obj;&lt;br /&gt;            invokeCommand(p);&lt;br /&gt;      }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Attentive reader will notice that there is no way to fill &lt;span style="font-family:courier new;"&gt;redoStack&lt;/span&gt;. Seems it remains empty all the time. So, it is time to talk about the organization of the target object. Does it have to meet some special requirements? Let’s start with example:&lt;pre&gt;&lt;br /&gt;public class MyClass {&lt;br /&gt;&lt;br /&gt;     private String value;&lt;br /&gt;&lt;br /&gt;     public MyClass() {&lt;br /&gt;          value = "";&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public String getValue() {&lt;br /&gt;          return value;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public void setValue(String s) {&lt;br /&gt;          value = s;&lt;br /&gt;     }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Let’s imagine that we need to support undo/redo for the method &lt;span style="font-family:courier new;"&gt;setValue(String s)&lt;/span&gt;. Of course, first we need to provide &lt;span style="font-family:courier new;"&gt;MyClass&lt;/span&gt; with its own &lt;span style="font-family:courier new;"&gt;UndoManager&lt;/span&gt; instance. Second, the &lt;span style="font-family:courier new;"&gt;setValue()&lt;/span&gt; method has to be changed to the following:&lt;pre&gt;&lt;br /&gt;public void setValue(String s) {&lt;br /&gt;      try {&lt;br /&gt;            // Get the method as an instance&lt;br /&gt;            Method m = this.getClass().getDeclaredMethod(&lt;br /&gt;                  "setValue",&lt;br /&gt;                  new Class[]{String.class}&lt;br /&gt;            );&lt;br /&gt;            // Get the current value&lt;br /&gt;            Object[] args = new Object[]{getValue()};&lt;br /&gt;            // Add it to the undo manager&lt;br /&gt;            undoManager.addInvocation(m, args);&lt;br /&gt;      } catch (Exception e) {&lt;br /&gt;            // . . .&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      // Modify value&lt;br /&gt;      value = s;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;In the added try-catch block we first get the reference to the method, then save the current value and add this data to the undo manager. Afterwards it is safe to modify the value: when we call &lt;span style="font-family:courier new;"&gt;undoManager.undo()&lt;/span&gt;, the method &lt;span style="font-family:courier new;"&gt;setValue()&lt;/span&gt; will be invoked with the previous value as an argument, so that it will be restored.&lt;br /&gt;&lt;br /&gt;That’s nice, isn’t it? Let’s look at the sample sequence of events:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;We call &lt;span style="font-family:courier new;"&gt;setValue("A")&lt;/span&gt;. The invocation setValue("") is added to the undo manager.&lt;br /&gt;&lt;li&gt;The new value is set.&lt;br /&gt;&lt;li&gt;We call &lt;span style="font-family:courier new;"&gt;undo()&lt;/span&gt;, during which the undo manager makes the &lt;span style="font-family:courier new;"&gt;setValue("")&lt;/span&gt; invocation that restores the old (empty) value and… adds invocation &lt;span style="font-family:courier new;"&gt;setValue("A")&lt;/span&gt; to the undo manager!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;So, there are actually two sources for the &lt;span style="font-family:courier new;"&gt;undoManager.addInvocation()&lt;/span&gt; execution: the method &lt;span style="font-family:courier new;"&gt;setValue()&lt;/span&gt; (or, saying more generally, the undo invocation method, call A) and, the &lt;span style="font-family:courier new;"&gt;undoManager.undo()&lt;/span&gt; method, call B. If call A is the place where a method invocation should be added to the undo stack, then call B is the place to add invocation to the redo stack. This approach can be implemented by providing the boolean variable &lt;span style="font-family:courier new;"&gt;isUndoing&lt;/span&gt; to the &lt;span style="font-family:courier new;"&gt;UndoManager&lt;/span&gt; class. It should be set in the &lt;span style="font-family:courier new;"&gt;undo()&lt;/span&gt; method like:&lt;pre&gt;&lt;br /&gt;public void undo() {&lt;br /&gt;      isUndoing = true;&lt;br /&gt;      . . .&lt;br /&gt;      isUndoing = false;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;As we have found out, there will be an &lt;span style="font-family:courier new;"&gt;addInvocation()&lt;/span&gt; call, caused by the organization of the method being undone, inside the &lt;span style="font-family:courier new;"&gt;undo()&lt;/span&gt; method. Now it becomes clear how the &lt;span style="font-family:courier new;"&gt;UndoManager&lt;/span&gt;’s &lt;span style="font-family:courier new;"&gt;addInvocation()&lt;/span&gt; method should look:&lt;pre&gt;&lt;br /&gt;public void addInvocation(Method method, Object[] args) {&lt;br /&gt;      Pair p = new Pair(method, args);&lt;br /&gt;      if (isUndoing) {&lt;br /&gt;            redoStack.push(p);&lt;br /&gt;      } else {&lt;br /&gt;            undoStack.push(p);&lt;br /&gt;      }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Now we have both undo and redo. Also we know how to organize the undo invocation methods in the target class. The last section of the article is devoted to improving the approach.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;4. Tuning the undo engine&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;There are still two things to be done. First: sometimes it is needed to clear the redo stack. For example, we have executed operations A, B, C and D. Afterwards we have undone D and C. Now the undo stack contains B and A, and the redo stack contains C and D. If now we execute some different operation E, then the true history of operations will be A, B, E. However, C and D are still stored in the redo stack – in this case it should be cleared. The rule is the following: redo stack should be cleared each time when a method invocation is added to the undo manager, if it is not in undoing or redoing state. Such a check must be done in the &lt;span style="font-family:courier new;"&gt;addInvocation()&lt;/span&gt; method.&lt;br /&gt;&lt;br /&gt;The second thing: it is often needed to group undo/redo operations to execute multiple of them in a single undo or redo step. For example, if you type the word “peace” in your favorite text editor, then you probably expect that the whole word will disappear when you press the undo button on its toolbar, not only the last letter of it. To do so, we may add yet another stack to the UndoManager class (let’s call it &lt;span style="font-family:courier new;"&gt;groupStack&lt;/span&gt;) that will collect undo operations to group. Also it is needed to add the boolean variable, &lt;span style="font-family:courier new;"&gt;isUndoGroupOpened&lt;/span&gt;, and to create the following methods:&lt;pre&gt;&lt;br /&gt;public void beginUndoGroup() {&lt;br /&gt;      if (isUndoGroupOpened == true) {&lt;br /&gt;            throw new IllegalStateException("beginUndoGroup() call while undo group is already opened");&lt;br /&gt;      }&lt;br /&gt;      isUndoGroupOpened = true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void endUndoGroup() {&lt;br /&gt;&lt;br /&gt;      if (isUndoGroupOpened == false) {&lt;br /&gt;&lt;br /&gt;            throw new IllegalStateException("endUndoGroup() call without matching beginUndoGroup()");&lt;br /&gt;      }&lt;br /&gt;      ArrayList actions = new ArrayList(groupStack);&lt;br /&gt;      if (isUndoing) {&lt;br /&gt;            redoStack.push(actions);&lt;br /&gt;      } else {&lt;br /&gt;            undoStack.push(actions);          &lt;br /&gt;      }&lt;br /&gt;      isUndoGroupOpened = false;&lt;br /&gt;      groupStack.clear();&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;The undo group, when closed, will be stored in the corresponding stack as an &lt;span style="font-family:courier new;"&gt;ArrayList&lt;/span&gt;. Now, inside the &lt;span style="font-family:courier new;"&gt;undo()/redo()&lt;/span&gt; methods, it is possible to track this situation and perform all operations in the &lt;span style="font-family:courier new;"&gt;ArrayList&lt;/span&gt; at a time.&lt;br /&gt;&lt;br /&gt;The complete source code of the resulting &lt;span style="font-family:courier new;"&gt;UndoManager&lt;/span&gt; class is the following:&lt;pre&gt;&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;import java.util.*;&lt;br /&gt;&lt;br /&gt;public class UndoManager {&lt;br /&gt;      private Stack undoStack = null;    &lt;br /&gt;      private Stack redoStack = null;&lt;br /&gt;      private Object target = null;&lt;br /&gt;      private boolean isUndoGroupOpened;&lt;br /&gt;      private Stack groupStack = null;&lt;br /&gt;      private boolean isUndoing;&lt;br /&gt;      private boolean isRedoing;&lt;br /&gt;      &lt;br /&gt;      public UndoManager(Object forWhom) {&lt;br /&gt;            undoStack = new Stack();&lt;br /&gt;            redoStack = new Stack();&lt;br /&gt;            groupStack = new Stack();&lt;br /&gt;            target = forWhom;&lt;br /&gt;            isUndoGroupOpened = false;&lt;br /&gt;            isUndoing = false;&lt;br /&gt;            isRedoing = false;&lt;br /&gt;      }      &lt;br /&gt;&lt;br /&gt;      public void addInvocation(Method method, Object[] args) {        &lt;br /&gt;            if (!isUndoing &amp;&amp; !isRedoing) {                &lt;br /&gt;                  redoStack.clear();&lt;br /&gt;            }           &lt;br /&gt;&lt;br /&gt;            Pair p = new Pair(method, args);&lt;br /&gt;            if (isUndoGroupOpened) {&lt;br /&gt;                  groupStack.push(p);&lt;br /&gt;            } else {&lt;br /&gt;                  if (isUndoing) {                   &lt;br /&gt;                        redoStack.push(p);&lt;br /&gt;                  } else {&lt;br /&gt;                        undoStack.push(p);&lt;br /&gt;                  }                                  &lt;br /&gt;            }           &lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void beginUndoGroup() {&lt;br /&gt;            if (isUndoGroupOpened == true) {&lt;br /&gt;                  throw new IllegalStateException("beginUndoGroup() while " +&lt;br /&gt;                        "undo group is already opened");&lt;br /&gt;            }&lt;br /&gt;            isUndoGroupOpened = true;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void endUndoGroup() {&lt;br /&gt;            if (isUndoGroupOpened == false) {&lt;br /&gt;                  throw new IllegalStateException("endUndoGroup() without " +&lt;br /&gt;                        "matching beginUndoGroup()");&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            ArrayList actions = new ArrayList(groupStack);&lt;br /&gt;            if (isUndoing) {&lt;br /&gt;                  redoStack.push(actions);&lt;br /&gt;            } else {&lt;br /&gt;                  undoStack.push(actions);           &lt;br /&gt;            }&lt;br /&gt;            isUndoGroupOpened = false;&lt;br /&gt;            groupStack.clear();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public boolean canUndo() {&lt;br /&gt;            return (undoStack.size() &gt; 0);&lt;br /&gt;      }     &lt;br /&gt;&lt;br /&gt;      public boolean canRedo() {&lt;br /&gt;            return (redoStack.size() &gt; 0);&lt;br /&gt;      }&lt;br /&gt;       &lt;br /&gt;      public void undo() {&lt;br /&gt;            if (!canUndo()) {&lt;br /&gt;                  return;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (isUndoing || isRedoing) {&lt;br /&gt;                  throw new IllegalStateException();&lt;br /&gt;            }&lt;br /&gt;            isUndoing = true;&lt;br /&gt;            Object obj = undoStack.pop();&lt;br /&gt;            if (obj instanceof Pair) {   &lt;br /&gt;                  // Plain undo&lt;br /&gt;                  Pair p = (Pair)obj;&lt;br /&gt;                  invokeCommand(p);&lt;br /&gt;            } else if (obj instanceof ArrayList) {&lt;br /&gt;                  // Undo group&lt;br /&gt;                  beginUndoGroup();&lt;br /&gt;                  ArrayList actions = (ArrayList)obj;&lt;br /&gt;                  for (int i = actions.size() - 1; i &gt;= 0; i--) {&lt;br /&gt;                        Pair p = (Pair)actions.get(i);&lt;br /&gt;                        invokeCommand(p);&lt;br /&gt;                  }&lt;br /&gt;                  endUndoGroup();&lt;br /&gt;            }&lt;br /&gt;            isUndoing = false;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      protected void invokeCommand(Pair p) {&lt;br /&gt;            Method method = (Method)p.first;&lt;br /&gt;            Object[] args = (Object[])p.second;&lt;br /&gt;            try {&lt;br /&gt;                  method.invoke(target, args);       &lt;br /&gt;                  return;                 &lt;br /&gt;            } catch (Exception ex) {&lt;br /&gt;                  System.err.println("Cannot undo method " + method.getName());&lt;br /&gt;                  ex.printStackTrace();&lt;br /&gt;                  return;&lt;br /&gt;            }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public void redo() {&lt;br /&gt;            if (!canRedo()) {&lt;br /&gt;                  return;&lt;br /&gt;            }&lt;br /&gt;            if (isUndoing || isRedoing) {&lt;br /&gt;                  throw new IllegalStateException();&lt;br /&gt;            }&lt;br /&gt;            isRedoing = true;&lt;br /&gt;            Object obj = redoStack.pop();&lt;br /&gt;            if (obj instanceof Pair) {               &lt;br /&gt;                  // Plain redo&lt;br /&gt;                  Pair p = (Pair)obj;&lt;br /&gt;                  invokeCommand(p);&lt;br /&gt;            } else if (obj instanceof ArrayList) {&lt;br /&gt;                  // Redo group&lt;br /&gt;                  beginUndoGroup();&lt;br /&gt;                  ArrayList actions = (ArrayList)obj;&lt;br /&gt;                  for (int i = actions.size() - 1; i &gt;= 0; i--) {&lt;br /&gt;                        Pair p = (Pair)actions.get(i);&lt;br /&gt;                        invokeCommand(p);&lt;br /&gt;                  }&lt;br /&gt;                  endUndoGroup();&lt;br /&gt;            }&lt;br /&gt;            isRedoing = false;&lt;br /&gt;      }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;4. Conclusions&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The described approach helps to implement undo/redo functionality in your Java application fast and easy. This solution is different from the traditional way, where the design pattern Command is often used. Using reflection for undo is better as it doesn’t require the objects to implement some special interfaces. The only requirement for the undo method is to store its invocation with the previous arguments in the undo manager. &lt;br /&gt;&lt;br /&gt;The further improvement of the proposed technique may be an effort to make it run safely in a multithreaded environment. Also, it is still possible to simplify the changes needed for undo methods and to improve the error handling. However, such a technique remains simple, can be provided without big changes to the existing code, and thus helps to get the desired results faster.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-3669543104243564709?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3669543104243564709/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/12/java-multi-level-undo-technique.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3669543104243564709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3669543104243564709'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/12/java-multi-level-undo-technique.html' title='Java Multi-Level Undo Technique (Reflection API)'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3404985696039042088</id><published>2007-11-14T20:55:00.000+02:00</published><updated>2012-01-03T14:40:56.213+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Виза</title><content type='html'>На прошлой неделе ездил получать визу в немецкое посольство. Теперь мне не отдают обратно загранпаспорт без разрешения на то Германского ведомства по делам иностранцев.&lt;br /&gt;&lt;br /&gt;То, что они стребовали с меня резюме, диплом (как доказательства того, что я имею отношение к разработке ПО), мед. страховки - это понятно. Веселое случилось в пятницу. Они захотели, на минуточку, &lt;strong&gt;скан моего загранпаспорта!&lt;/strong&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/3704723600302758629-3404985696039042088?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3404985696039042088/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3404985696039042088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3404985696039042088'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/11/blog-post.html' title='Виза'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2566759533871009313</id><published>2007-09-28T18:17:00.000+03:00</published><updated>2012-01-03T14:29:52.994+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Разработка как она есть</title><content type='html'>Картина называется "Программный комплекс. Позади - 15 лет разработки и сотни разработчиков. Фрагмент."&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.artlebedev.ru/kovodstvo/idioteka/2007/06/05/"&gt;http://www.artlebedev.ru/kovodstvo/idioteka/2007/06/05/&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2566759533871009313?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2566759533871009313/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/09/blog-post_28.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2566759533871009313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2566759533871009313'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/09/blog-post_28.html' title='Разработка как она есть'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2622765067565355751</id><published>2007-09-06T14:14:00.000+03:00</published><updated>2012-01-03T13:33:52.969+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>...только из его шкуры тулуп вышел...</title><content type='html'>Пересматриваю "Ух ты, говорящая рыба" (ака "Добрый Э-эх") - впервые за много лет.&lt;br /&gt;&lt;br /&gt;Не перестаю восхищаться этим диалогом:&lt;br /&gt;&lt;br /&gt;- Кто там?&lt;br /&gt;- Это я, добрый Ээх. Я здесь.&lt;br /&gt;- И я здесь.&lt;br /&gt;- А ты кто такой? Откуда взялся?&lt;br /&gt;- С того берега моря.&lt;br /&gt;- На чем приехал?&lt;br /&gt;- Оседлал хромую блоху, сел и приехал.&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;br /&gt;- Чего?!&lt;br /&gt;- Чего-чего... На хромой блохе с того берега моря, которое зайцу не перелететь, орлу не перебежать... Хоть море - не море, а так - лужа посреди города, где тень от блохи на зайца упала и насмерть убила. А из шкуры зайца тулуп вышел и пошел куда глаза глядят, тут заяц ка-ак прыгнет...&lt;br /&gt;- Какой заяц?!&lt;br /&gt;- Насмерь убитый. Как прыгнет куда глаза глядят, аж на тот берег моря, которое не перелететь-не перебежать, из которого тулуп вышел и в которое тень от блохи упала и зайца насмерть убила, хоть заяц - не заяц, а орел!&lt;br /&gt;- Какой заяц?!! Какой орел?!! Какая блоха?!!&lt;br /&gt;- Повторить? Ну значит та самая блоха, с того берега лужи...&lt;br /&gt;- А-а-а-а-а!!!... Да хватит уже!!!...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2622765067565355751?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2622765067565355751/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/09/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2622765067565355751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2622765067565355751'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/09/blog-post.html' title='...только из его шкуры тулуп вышел...'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2831644063266071060</id><published>2007-06-17T13:10:00.000+03:00</published><updated>2012-01-03T14:40:56.198+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='matrix calculator'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Ховайся!</title><content type='html'>Только что нашел такую классную (для меня) ветку одного форума, что просто ваще!&lt;br&gt;&lt;br&gt;Вот &lt;a href="http://forum.telix.ru/viewtopic.php?t=21842&amp;sid=930405307b108d2f917886da45382814" target="_blank"&gt;здесь&lt;/a&gt; говорят про мой Матричный Вычислитель, ищут к нему кряк, "мега калькулятор", "помогите, у меня не запускается!" и все такое прочее...&lt;br&gt;&lt;br&gt;Популярность, йопт!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-2831644063266071060?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2831644063266071060/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2831644063266071060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2831644063266071060'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_17.html' title='Ховайся!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2067792831824167916</id><published>2007-06-14T03:00:00.000+03:00</published><updated>2012-01-03T14:40:56.179+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Сказка о Программе</title><content type='html'>Наконец-то научился есть спагетти вилкой и ложкой, как в лучших домах. Секрет для меня оказался в том, что вилку нужно держать почти перпендикулярно ложке во время кручения, а не под углом.&lt;br&gt;&lt;br&gt;А теперь – сказка.&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;b&gt;* * *&lt;br&gt;&lt;br&gt;Сказка о Программе&lt;/b&gt;&lt;/center&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;strike&gt;И эта жирная сука пробует, блядь, захуярить в нее на своем блядском ноутбуке ебаный файл, бля, в семьсот пятьдесят тысяч строк! И Аутлук его сраный чтоб не тормозил, бля, при этом! А говна тебе на лопате?! Руки оторвать к ебеням! Блядь, не тянет она, нахуй, такие объемы!&lt;/strike&gt; Запустил Начальник Начальника программу и открыл в ней файл, состоящий из семиста пятидесяти тысяч строк. Глядь - ан работа его ноутбука нежданно-негаданно замедлилась ощутимо. Аутлук стал принимать письма через одно, а напоминания о Заседаниях - так те вообще стали появляться лишь на следующий день, и то нерегулярно. &lt;br&gt;&lt;br&gt;Вызвал Начальник Начальника к себе Начальника, посмотрел на него грозно и молвил: «Будет сие исправлено к завтрему, али как?» «Будет, будет, не сумлевайтесь, ужо напрягемся» - залепетал в ответ Начальник. И пулей бросился бежать к Программисту, на ходу переставляя приоритеты задач в плане работ и придумывая, каким способом можно было бы уменьшить потребляемый Программой объем памяти…&lt;br&gt;&lt;br&gt;И я там был, мед-пиво пил, стек-трейс читал, да занимаемую Программой память зело уменьшал.&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;b&gt;***&lt;/b&gt;&lt;/center&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/3704723600302758629-2067792831824167916?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2067792831824167916/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_13.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2067792831824167916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2067792831824167916'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_13.html' title='Сказка о Программе'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-2814300913256390657</id><published>2007-06-11T21:47:00.000+03:00</published><updated>2007-12-27T14:57:04.626+02:00</updated><title type='text'>Сглад фотаг!</title><content type='html'>Благодаря &lt;a href="http://ingenieurin.livejournal.com" target="_new"&gt;Маришке&lt;/a&gt; (читайте ее ЖЖ, она хорошая), я узнал про программу Google Picasa и одноименный гугловый сервис. Теперь я имею склад фотографий, находится он здесь:&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;a href="http://picasaweb.google.ru/sborodavkin" target="_new"&gt;http://picasaweb.google.ru/sborodavkin&lt;/a&gt;&lt;/center&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/3704723600302758629-2814300913256390657?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/2814300913256390657/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_11.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2814300913256390657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/2814300913256390657'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_11.html' title='Сглад фотаг!'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1706358738586244687</id><published>2007-06-11T03:19:00.000+03:00</published><updated>2012-01-03T14:40:56.168+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='berlin'/><title type='text'>Берлин</title><content type='html'>Ох и здорово же, скажу я вам, есть томатный суп на Унтер-ден-Линден, глядя, как «летят запряженные кони поверх Бранденбургских ворот…»! Ну да обо всем по порядку.&lt;br /&gt;&lt;br /&gt;В пятницу окончательно выяснилось, что Питер ехать не может – говорит, много работы, надо, мол, работать в субботу. Ну, работай, раз надо. В результате поехал я в Берлин вдвоем с его Кией. В прошлый наш приезд мне показалось, что она очень замкнутая и плохо говорит по-английски. В общем, неправда это – нормально она разговаривает, так что все полтора часа дороги туда мы провели в беседах на разные темы.&lt;br /&gt;&lt;br /&gt;В Берлине нас встретил ее друг Филипп, они помогли мне купить билет на целый день на метро, после чего мы распрощались до вечера. Что немаловажно, Киа взяла для меня карту Берлина, так что я быстро сориентировался и решил начать с Тиргартена. Ехать туда – две остановки от Хауптбанхофа (это вокзал на местном наречии).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Of2rBjpQI/AAAAAAAAAM4/MLSEYu2T8Js/s1600-h/01bkol.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5148634560625616130" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Of2rBjpQI/AAAAAAAAAM4/MLSEYu2T8Js/s200/01bkol.jpg" border="0" /&gt;&lt;/a&gt;Ну что сказать вам про Тиргартен: лес-лесом, хоть и очень старинный. Он расположен по обе стороны от улицы 17 июня и содержит много аллей, деревьев и водоемов. Иногда там встречаются памятники, хотя «старого Тиргартенского слона» из небезызвестного стихотворения я там не нашел. И немудрено – площадь у Тиргартена просто огромная, больше двух сотен гектаров! Поразила там, пожалуй, только колокольная башня – посреди парка находится высокая башня со множеством колоколов наверху, которые все время мелодично звонят. Как эта вся кухня управляется – непонятно…&lt;br /&gt;&lt;br /&gt;Все на той же улице 17 июня находится колонна свободы (Siegesseule), на вершине которой стоит золотая женщина с крыльями и с венком. Внутри этой колонны можно подняться наверх, но я не решился – уж лучше все самому ногами обтопать. Так что, вдоволь обфотографировав золотую женщину, я продолжил свое шествие по Тиргартену вдоль Strasse 17 Juni, пока слева не увидел памятник советским воинам, павшим в боях за взятие Берлина. Это очень, я бы сказал, величественное сооружение, с танками и пушками по бокам, и с могучим русским воином на высоком постаменте. Также на плитах позолоченными буквами написаны имена всех погибших солдат, а на двух больших клумбах рядом растут живые цветы. В общем, мне понравилось – память, хоть и горькую для себя, немцы чтят.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Of2rBjpRI/AAAAAAAAANA/SaGuefiHc4w/s1600-h/02breih.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5148634560625616146" style="FLOAT: right; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Of2rBjpRI/AAAAAAAAANA/SaGuefiHc4w/s200/02breih.jpg" border="0" /&gt;&lt;/a&gt;Совсем недалеко от памятника находится Рейхстаг со своим девизом «Dem Deutscher Volke» над главным входом. Вход сейчас туда бесплатный, в связи с чем очередь стоит вроде как в Мавзолей в лучшие времена. Конечно же, внутрь я не собирался, а только осмотрел его снаружи. Над ним теперь есть большой прозрачный купол – что-то вроде смотровой площадки, откуда видно весь комплект Бунестаг. Прямо перед Рейсхтагом – площадь Platz der Republik с очень необычным для площади оформлением (вся засеяна травой, как газончик), на которой до войны стояла колонна свободы, и где немцы праздновали объединение Берлина.&lt;br /&gt;&lt;br /&gt;И что-то настроение у меня такое сделалось… Ну, вы меня поймете – что должен чувствовать русский человек после осмотра памятника советским воинам и Рейхстага – «он с солдатом прошел до победного по дорогам нелегких годин» и «враги сожгли родную хату» в одном флаконе. Знаете, петь военные песни, есть гречневую кашу, идти поступью победителя и плевать фрицам в морду – как-то так…&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Of2rBjpSI/AAAAAAAAANI/ud9b-Jtbw34/s1600-h/03bbt.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5148634560625616162" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Of2rBjpSI/AAAAAAAAANI/ud9b-Jtbw34/s200/03bbt.jpg" border="0" /&gt;&lt;/a&gt;Чтобы отвлечься, я свернул от Рейхстага и вышел к Бранденбургским воротам. Они действительно выглядят очень эффектно! Пять секций, центральная – пошире, по которой было позволено проезжать только королю и его семье, и в которую нагло въехал Наполеон после взятия им города (я этого не знал – прочел на стендах). Наверху, конечно, колесница с Богиней мира и четырьмя запряженными конями – все как положено. За воротами начинается Pariser Platz и Унтер-ден-Линден, но туда я пока что не пошел.&lt;br /&gt;&lt;br /&gt;Вместо этого я свернул в сторону площади Потсдаммер, на которой находится кинотеатр IMAX. Я очень много о нем слышал и хотел его обязательно посетить. Суть в том, что он показывает НАСТОЯЩЕЕ трехмерное кино со специальными очками и всеми делами. Купив билет, я имел еще час времени в запасе, посему сел на метро и поехал на Alexander Platz – центр Восточного Берлина.&lt;br /&gt;&lt;br /&gt;И тут – разительная перемена. В западной части города – все красиво, культурно, чинно. Только поднялся из метро на Александр-платц – сразу оказался посреди огромной стройки, где песок, пыль, тут же рядом продают матрешек и шапки-ушанки – короче, весь ГДР-овский колорит. Однако, углубившись чуть дальше в восточную часть, я понял, что не все так печально. Улицы, конечно, заметно шире, ходит трамвай – но в остальном это, конечно, тоже настоящая Европа. Сфотографировав Ратхаус (мерию) и красивый фонтан с Посейдоном, в котором люди бултыхались и мыли ноги, я вынужден был вернуться, поскольку начинался мой фильм в IMAX.&lt;br /&gt;&lt;br /&gt;Экран в кинотеатре – высотой, наверное, с семиэтажный дом! Смотрел я фильм про страшноужасных динозавров (конечно, все по-немецки, но запомнилось слово «Аргентинозавр», без конца повторяемое диктором). Надев очки, я понял, что зрелище меня ждет неимоверное. Все было настолько реалистично, что площадь экрана не ощущалась – ближние объекты ощутимо выступали из экрана, а дальние – были ощутимо дальше него. Маленького, только что вылупившегося из яйца бронтозаврика, проходившего рядом, хотелось пощупать. От мощного тираннозавра, несущегося на меня прямо из экрана, невольно приходилось отклоняться. Ну, звук шестиканальный, то есть мушка улетает за экран справа, ее больше не видно, но слышно, как она бз-з-зжит вокруг, облетает вокруг головы и вылетает уже слева (а за ней какая-то динозавроидная мухоядная пиздота бежит, это уж как водится). Отличное шоу в течение часа – и всего за восемь евро! Киа себе потом локти кусала, когда я ей на обратном пути это все в красках описал.&lt;br /&gt;&lt;br /&gt;После кино я вернулся к Бранденбургским воротам, и поскольку был голоден, то решил принимать пищу на Унтер-ден-Линден, в непосредственной близости от них. Конечно, родных немецких лиц в кафе под открытым небом было не видно – сплошная английская речь. Туристы – что с них возьмешь. Что удивило – так это цена: центр Берлина, а стоит как везде: с супом и со вторым с «мсьяом говьюжьим» я поел за всего за десять евро. Это напротив Бранденбургских ворот, да!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3Of27BjpTI/AAAAAAAAANQ/0I0SmPmUQKk/s1600-h/04bmj.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5148634564920583474" style="FLOAT: right; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3Of27BjpTI/AAAAAAAAANQ/0I0SmPmUQKk/s200/04bmj.jpg" border="0" /&gt;&lt;/a&gt;Сильно потряс меня монумент убитым евреям Европы. Представьте себе – посреди города на большом поле находится лес серых бетонных блоков, высотой от метра до трех, расположенных ровными рядами – всего больше двух тысяч блоков. Между ними можно ходить. Вид у этого всего дела просто неимоверный, первое чувство – ужас! Киа мне потом рассказала, что вокруг этого памятника велись долгие споры, городские власти долго не соглашались и пр. В частности, был такой конфуз: все блоки уже установили, и надо было покрывать их специальным составом против граффити. Однако оказалось, что концерн-подрядчик в годы войны производил газ «Циклон-Б», которым в газовых камерах концлагерей убивали евреев. Все оказалось под угрозой срыва, но «хорошее поведение» этого концерна, который участвовал в фонде для выплаты компенсаций угнанным на принудительные работы в Германию, все-таки позволило довести монумент до конца.&lt;br /&gt;&lt;br /&gt;Ну да ладно. После обеда я пошагал по Унтер-ден-Линден опять, получается, в сторону Александр Плац – но уже пешим порядком. Теперь я уже смог не спеша оценить красоты Музейного острова, Кафедрального собора, а также университета Гумбольдта – тоже весьма красивое здание. Также я побывал в храме с органом. Как играет у них орган, правда, послушать не довелось, но ничего – все равно интересно.&lt;br /&gt;&lt;br /&gt;Напоследок (так как дело шло к вечеру) я прокатился в район Spandau, т.к. предварительно прочел в Интернете, что это очень старый район и там очень интересно. Ничего особо интересного я там не нашел, да и, признаться, я натер себе мозоль, поэтому, поблуждав там немного, я вернулся к метро и поехал на вокзал. Там я поужинал в Макдональдсе и, встретив вскоре Кию, сел в поезд и в 21-18 отбыл в Гамбург.&lt;br /&gt;&lt;br /&gt;Фотографии из Берлина можно посмотреть на &lt;a href="http://picasaweb.google.ru/sborodavkin" target="_new"&gt;http://picasaweb.google.ru/sborodavkin&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1706358738586244687?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1706358738586244687/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_10.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1706358738586244687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1706358738586244687'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post_10.html' title='Берлин'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Of2rBjpQI/AAAAAAAAAM4/MLSEYu2T8Js/s72-c/01bkol.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5130495947251467337</id><published>2007-06-05T04:18:00.000+03:00</published><updated>2012-01-03T14:40:56.253+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Кобенхавн</title><content type='html'>Итак, собрался я, и в субботу рванул в Копенгаген. Дорога туда у меня была в поезде без пересадок с предварительным бронированием места – за один евро я (все через тот же автомат на вокзале, который я смог-таки заставить общаться со мной по-английски) заказал себе место «в кресле у столика в вагоне для некурящих». Вагон оказался очень удобным, с откидными столиками и с четырьмя креслами вокруг каждого. Вскоре после того, как поезд тронулся, пришел проводник и проделал дырочку в моем билете, после чего я стал читать книжку про го. Почитаю пару страничек – полюбуюсь в окошко на многочисленные ветряные электростанции и пролетающие мимо деревушки-городишки. А поезд шпарит, скорость – за сотню. Красота!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpKI/AAAAAAAAAMI/hG246yP0IkU/s1600-h/01parom.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpKI/AAAAAAAAAMI/hG246yP0IkU/s200/01parom.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148632615005430946" /&gt;&lt;/a&gt;Первым моим сильным впечатлением оказалась паромная переправа. Вдруг поезд остановился и нам объявили, что сейчас нас будут погружать в паром, где мы сможем посетить кафе и магазины. Я, конечно, слышал, что такое бывает, но сам никогда не видел. А уж тем более – чтобы весь поезд взял да и заехал в паром! Переправа на нем заняла около часа; за это время я выпил кофе с ватрушкой, походил по палубам и осмотрел магазины. Магазины на пароме какие-то странные – только косметика, парфюмерия и алкоголь – ничего другого не продают. Там же (на пароме) я обменял часть евро на датские кроны, т.к. в Дании евро не в ходу. &lt;br /&gt;&lt;br /&gt;После переправы мы поехали по Дании, и в 12-05, точно по расписанию, прибыли в Копенгаген. Я начал с того, что купил карту, а уж потом вышел на улицу. Прямо через дорогу был вход в Тиволи, так что с него я и начал. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpLI/AAAAAAAAAMQ/jxdSw7ypxJA/s1600-h/02tivoli.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpLI/AAAAAAAAAMQ/jxdSw7ypxJA/s200/02tivoli.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148632615005430962" /&gt;&lt;/a&gt;Тиволи – это такой старинный парк аттракционов, а также кафе, ресторанов и концертных площадок. Все это окружено садом, в котором круглый год цветут разные цветы, и где мне было очень приятно погулять. Кроме того, я застал там два концерта – один неинтересный, детский, а другой – получше, играли джаз. Кроме того, там везде очень много фонариков. Я прочел, что это не неоновый, а всамделишный электрический свет. Конечно, было бы здорово посмотреть на эту красоту ночью, но не было времени.&lt;br /&gt;&lt;br /&gt;Из Тиволи я вышел на площадь Ратуши – центральную площадь Копенгагена. На ней, кроме самой ратуши, есть фонтан с быком и постамент с трубадурами. Возле него я пристал к экскурсии на английском и выслушал легенду с моралью. Легенда такая: эти трубадуры должны трубить, когда рядом проходит совсем невинная девушка. А мораль, соответственно, такая: до сих пор звуков труб никто не слышал.&lt;br /&gt;&lt;br /&gt;Также на площади есть камень «нулевой километр» - от него начинается отсчет Дании во все стороны, если я правильно понял. В одну из сторон отходит самая старая пешеходная зона в Европе – она называется Строгет и состоит из нескольких улиц. Вся она усеяна ресторанами и кафе, магазинами и сувенирными лавками. И, надо сказать, толпы там просто огромные! С одной стороны, конечно, туристы… А с другой – на мою голову, именно в субботу в Копенгагене проходил матч Дания – Швеция. Ох, и заколебали меня эти пьяные футбольные фанаты! Разодетые в форму своих любимых команд, жрущие пиво и орущие футбольные гимны – это, определенно, не для слабых духом! Поэтому я периодически сворачивал со Строгет в боковые улицы, где тоже было много интересного для меня.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpMI/AAAAAAAAAMY/pirXHVzbUuI/s1600-h/03ulochka.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpMI/AAAAAAAAAMY/pirXHVzbUuI/s200/03ulochka.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148632615005430978" /&gt;&lt;/a&gt;Действительно, все правда – улочки в старом центре очень-очень узкие. Кое-где одна машина проедет, а две – уже не разъедутся. Но все-таки, среди многочисленных старых церквей и маленьких площадей, самое главное – это домики! Они, как мы читали в сказках, действительно раскрашены в разные цвета – тот желтенький, этот красненький, еще дальше – голубенький… На одной улице сложно отыскать повторяющиеся цвета. А крыши, крыши… Дома стоят так близко, что по ним свободно можно гулять. Не знаю насчет Андерсена, но глядя на эти мансарды, я вспоминал Карлсона-который-живет-на-крыше. Да и в принципе, конечно, Дания, Швеция – наверняка почти одно и то же в плане архитектуры. Есть поэзия в этих домиках, определенно есть!&lt;br /&gt;&lt;br /&gt;Прошагав все улицы Строгет, я свернул по направлению к Амалиенборгу – королевской резиденции с какого-то-там древнего года. Представляет он из себя площадь с четырьмя окружающими ее одинаковыми дворцами. В субботу королевы там не было – а иначе, как я прочел в Интернете, я увидел бы там несущих караул гвардейцев в высоких шапках на медвежьем меху. По дороге я также осмотрел Мраморную церковь. Купол у нее, наверное, несколько десятков метров в диаметре – такой огромный! Внутри тоже очень красиво, хотя и не так помпезно.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpNI/AAAAAAAAAMg/Q-4ZN1lNyYQ/s1600-h/04rusalochka.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpNI/AAAAAAAAAMg/Q-4ZN1lNyYQ/s200/04rusalochka.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148632615005430994" /&gt;&lt;/a&gt;Дальше, пройдя сквозь парк с фонтанами, я вышел к набережной и к Русалочке. Я слышал, что вроде бы многие ругают ее – не знаю, мне она очень понравилась. Я даже попросил, чтобы меня с ней рядом сфотографировали. Сидит такая маленькая на камушках, смотрит в море, грустит… Туристов к ней, конечно, целыми автобусами возят. Там рядом площадка и надпись: «Стоянка только для автобусов, не более 15 минут». Как автобус подъезжает – все оттуда сразу выпрыгивают и бегут к Русалочке фотографироваться.&lt;br /&gt;&lt;br /&gt;Потом я еще погулял по набережной Langeliniekai, после чего вернулся в город, но немного с другой стороны – не через Амалиенборг, а через гавань Нихавн (Nyhavn). Она представляет собой канал длиной с километр, в котором стоят красивые парусные корабли, а по берегам – снова кафе-рестораны, и снова домики-домики. На подходе к гавани я опять пересекся с футбольными фанатами – на этот раз шведскими. Имел счастье наблюдать их старинный красивый обычай, который сейчас и опишу.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;em&gt;&lt;strong&gt;Старинный красивый шведский обычай&lt;/strong&gt;&lt;/em&gt;&lt;/center&gt;&lt;br /&gt;&lt;em&gt;Итак, пьяные шведы перекрывают большой толпой узкую Копенгагенскую улочку в районе гавани Нихавн. Один из них кладет перед собой футбольный мяч и берет разбег. Толпа в это время кричит букву «У-у-у». Взяв разбег, пьяный швед лупит изо всех сил по мячу так, чтобы он подлетел как можно выше. Толпа в это время кричит букву «А-а-а», а мяч тем временем должен попасть в как можно большее количество окон.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;При мне, правда, ни одно не разбилось, но сути обычая я, по-моему, все же не уловил.&lt;br /&gt;&lt;br /&gt;Поскольку футбольный матч еще не начался, в центре было по-прежнему много футбольных болельщиков, посему я решил прокатиться на метро до станции Norreport и осмотреть два парка – Ботанический сад и замок Розенборг с прилегающим парком Rosenborg Have. Метро там, кстати, такое: длинная колбаса одним вагоном с тремя резинками посредине, вроде как в наших троллейбусах, которая едет сама – то есть без машиниста.&lt;br /&gt;&lt;br /&gt;В Ботаническом саду было так здорово, что в Розенборг я уже опоздал – он закрылся. Пришлось фотографировать замок через забор (прутья в кадр не попали). Вот что я вам скажу, дорогие мои – парки у них просто замечательные! В том же районе я нашел еще один, небольшой, но тоже очень красивый – со склонами, старыми деревьями, травкой, цветами и скульптурами. Я бы там гулял и гулял.&lt;br /&gt;&lt;br /&gt;После парков я вернулся в гавань Нихавн. Все болельщики, видать, уже свалили на футбол, так что там стало гораздо спокойнее. Тут я решил «а гори оно огнем», и поехал кататься по каналам Копенгагена на экскурсию. Экскурсия продолжалась около часа, в течение которого нас возили по каналам и вдоль набережной, показывали красивые виды в свете закатного солнца, а гид вещала в микрофон на датском, немецком и английском. С низенького кораблика город смотрелся совсем по-другому. Например, запомнились мосты, под которыми мы проплывали – одни такие низкие, что нельзя вставать, а другие – такие узкие, что нельзя высовывать руку за борт.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3OeFrBjpOI/AAAAAAAAAMo/y68OxVFOM50/s1600-h/05kanaly.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3OeFrBjpOI/AAAAAAAAAMo/y68OxVFOM50/s200/05kanaly.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148632619300398306" /&gt;&lt;/a&gt;Во время катания я сделал много фотографий и был под впечатлением, в результате чего после окончания экскурсии сел в одном ресторане прямо на воздухе, лицом к каналу, и стал ужинать. Вернусь – буду всем рассказывать: «Вот сижу я, бывало, вечером в Копенгагене, в гавани Нихавн…». Или «А в Копенгагене, в гавани Нихавн, едал я и повкуснее антрекоты».&lt;br /&gt;&lt;br /&gt;Когда я закончил с едой, стало уже совсем темно. Прогулявшись еще по центру, в т.ч. по бульвару Ганса-Христиана Андерсена и найдя там его памятник (кстати, прямо напротив Тиволи), я прибыл на вокзал, откуда вскоре убыл… но нет, не в Гамбург.&lt;br /&gt;&lt;br /&gt;Поездка обратно – это вообще была песня. Но зато дешево :) Из Копенгагена я поехал на станцию Fredericia. Приехал я туда в четыре-двадцать. Следующий поезд – нет, все еще не в Гамбург, а на станцию Padborg – был в шесть-двадцать. И как вы думаете, что я-таки делал два часа в этом Мухосранске? Разумеется, спал. На вокзале. На скамейке. Меня удивило, что скамейки стоят посреди зала, рядами, и на них спят вполне приличные люди, совсем не бомжеватого вида. Некоторые иногда встают, уходят в сторону платформ – видно, поезд подоспел. Так что я, откинув ложный стыд, завел на телефоне будильник, положил под голову рюкзак и два часа дрых на скамейке без задних ног. Приеду – скажу Вовчику: «Кто не спал в Дании на вокзале на скамейке – тот многого в этой жизни еще не знает».&lt;br /&gt;&lt;br /&gt;Потом, сев на поезд, я продолжил там свой сон. В Падборге меня разбудила проводница, после чего я пересел на поезд в Гамбург и через час был там. Приехав в гостиницу, я снова лег спать часов до двух, потом вечером играл в го, ну тут и сказочке конец.&lt;br /&gt;&lt;br /&gt;А вообще-то про Париж, конечно, легче писать. Там сказал: «Елисейские поля» - и все сразу: «ах-ах-ах, Елисейские поля!». Сказал: «Монмартр» - и все сразу: «ох-ох, Монмартр!» - больше можно ничего и не говорить. А тут скажешь: «Тиволи» - и уже начинается: «а расскажи нам, что такое это твое Тиволи»… Или «Амалиен… как-как? Амалиен-брог? Ах, Амалиенборг? Нет, не слыхали». &lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3OePLBjpPI/AAAAAAAAAMw/y-h62kpW8wc/s1600-h/06kryshi.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3OePLBjpPI/AAAAAAAAAMw/y-h62kpW8wc/s200/06kryshi.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148632782509155570" /&gt;&lt;/a&gt;Но мне очень понравилась поездка! Писать о ней еще и писать. Церковь святого Николая, дворец Кристианборг, цитадель… (черт, про цитадель ничего не написал!!!). Копенгаген (по крайней мере, центр и окрестности) очень впечатляет. Я бы сказал – старинен и средневеков. С чем сравнивать – не знаю. Нужно еще поездить по миру, места разные посмотреть, чтобы сравнивать-то.&lt;br /&gt;&lt;br /&gt;Была бы возможность.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-5130495947251467337?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5130495947251467337/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5130495947251467337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5130495947251467337'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/06/blog-post.html' title='Кобенхавн'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1LHpJFaJqo/R3OeFbBjpKI/AAAAAAAAAMI/hG246yP0IkU/s72-c/01parom.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1041923022945179504</id><published>2007-05-30T15:03:00.000+03:00</published><updated>2012-01-03T14:40:56.158+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><title type='text'>Мальчик бежит по дороге, сшибая столбы...</title><content type='html'>А я позавчера был на концерте Земфиры. Вы спросите – нужно ли было приезжать для этого в Дойчланд? Да просто все так сложилось. Узнал я о концерте накануне в пятницу вечером, когда, ища в Интернете всякие развлечения в Гамбурге, наткнулся на какую-то гамбургскую афишу, а в ней увидел объявление о предстоящем концерте 28 мая. Позвонил я в кассу в 17:15, а закрывается она в 17:30. Это с одной стороны. А с другой – по удачному совпадению находится эта касса в пяти минутах ходьбы от моей работы. Так что отказать себе в удовольствии я не мог, купил билет за 25 евреев и был позавчера на концерте. Проходил он в концертном зале Markthalle в центре города.&lt;br /&gt;&lt;br /&gt;Сергей меня, правда, пытался отговаривать. Мол, наши артисты едут в заграничные туры только для того, чтобы рубить бабло малой кровью, исполняя старые номера в течение часа с плохим звуком под фонограмму. Не знаю, кто там как, а Земфира – как Земфира, все такая же молодец, трудяга и все такое. Два с половиной часа отпахала без перерыва, мне очень понравилось! Она осенью обещает выпустить новый альбом – так что были и новые песни оттуда. Хотя, бесспорно, хитом концерта стала песенка «Зибен-зибен ай-лю-лю» в ее исполнении.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3OdMrBjpJI/AAAAAAAAAMA/ujoEC-i0A78/s1600-h/zemfira.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3OdMrBjpJI/AAAAAAAAAMA/ujoEC-i0A78/s320/zemfira.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148631640047854738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;После концерта в раздевалке мне заявили, что мой зонтик пропал. Куртка есть, зонта нет. А на улице дождь, знаете ли… Я подождал рядышком, пока люди разойдутся, наблюдая, не проплывет ли рядом мой зонт. Но зонта не было. Когда толпа немного рассосалась, я снова подошел и вежливо, но твердо, снова спросил про зонт. Тетка сказала мне идти в администрацию и там разбираться. Я отправился к нужной двери, на ходу готовя длинную речь о том, какой я высокооплачиваемый работник, что час моей работы стоит 50 евро, что если я пойду без зонтика и, не дай Бог, простужусь, то неделя моего простоя обойдется вам, горе-организаторы, в две тысячи евро, что компания из-за моей болезни не сможет вовремя выпустить продукт и потеряет десятки тысяч евро, что инвесторы также понесут убытки и потеряют еще десятки тысяч…&lt;br /&gt;&lt;br /&gt;В общем, пока я шел к двери администрации, тетка меня догнала и вручила мне мой зонт. Испугалась, должно быть :)&lt;br /&gt;&lt;br /&gt;С поездками все еще не очень. Был я сегодня на автобусной станции, разузнал насчет Амстердама. Туда, к сожалению, везут в неудобное время: либо в четверг, либо в субботу вечером – мне ни то ни другое не подходит. Пошел я тогда на вокзал посмотреть, как обстоят дела с поездами. Конечно, у немцев там полная автоматизация и билеты продают специальные автоматы с сенсорными экранами. Туда можно нажимать и выбирать, что только душа пожелает. А какой должна быть душа? Совершенно верно – немецкой. Никакой другой язык ни в одном автомате выбираться не пожелал.&lt;br /&gt;&lt;br /&gt;В общем, набрал я на автобусной станции разных буклетиков – может, выберу что другое, окромя Амстердаму. Может, Питера удастся вытащить на вокзал после работы, чтоб он мне помог. Ну а нет – так уж нет. Зато мы с ним и с его (ну как правильно склоняется это имя?!) Кией едем в Берлин 9-го июня в 8-00 утра, а возвращаемся в 23-30. Поезд идет всего полтора часа, дорога туда и назад стоит всего 40 евро.&lt;br /&gt;&lt;br /&gt;Кстати, побывал я третьего дня в Макдональдсе и обнаружил, что моих знаний немецкого уже вполне хватает, чтобы объясниться там.&lt;br /&gt;&lt;br /&gt;Зацените: &lt;strong&gt;&lt;em&gt;«Битте цвай хамбургег, кляйне поммс мит кетчуп, кляйне кола мит кайн айс унд милкшейк кирш»&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Кроме того, когда у меня в ресторане спрашивают «Алес гешмект?», я умею ответить: «Я-я, натюрлих, филен данке, зер гут гешмект!» А уж о том, что мне почти всегда понятно, сколько нужно заплатить в магазине, когда кассирша невнятно говорит, например, «фюнф цванцих» - об этом я даже и говорить не буду, ввиду своей бесконечной природной скромности.&lt;br /&gt;&lt;br /&gt;Погода здесь стоит, доложу я вам, мерзопакостная. Ее даже и погодой-то назвать тяжело – форменная дрянь просто, а не погода! Каждый день бывает дождь, сегодня вдобавок был еще и ветер – холод собачий, я ходил в куртке и в рубашке, и то весь продрог.&lt;br /&gt;&lt;br /&gt;Вы слышали про беспорядки в Гамбурге. Они, на самом деле, были весьма локального масштаба (на двух улицах возле вокзала). Хотя до сих пор там много полиции на всякий случай. Меня они никоим образом не коснулись, засим остаюсь пока жив и здоров.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-1041923022945179504?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1041923022945179504/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/05/blog-post_30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1041923022945179504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1041923022945179504'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/05/blog-post_30.html' title='Мальчик бежит по дороге, сшибая столбы...'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1LHpJFaJqo/R3OdMrBjpJI/AAAAAAAAAMA/ujoEC-i0A78/s72-c/zemfira.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5968144369440898083</id><published>2007-05-15T03:01:00.000+03:00</published><updated>2012-01-03T14:40:56.267+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><title type='text'>Одесса-Гамбург</title><content type='html'>Ну что ж, период «чтоб враги не сглазили» прошел, посему посвящаю непосвященную часть своей молчаливой аудитории, что снова мне по делам служебным пришлось прилететь в Гамбург, где я буду находиться следующие 6 недель. К счастью, в этот раз в номере есть Интернет – а это значит, что качество жизни неуклонно растет, честь и хвала немцам (хотя все равно мало мы их, засранцев эдаких, дрючили в сорок пятом!)&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Ob0rBjpHI/AAAAAAAAALw/Yy-6wMLrUrk/s1600-h/wing.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Ob0rBjpHI/AAAAAAAAALw/Yy-6wMLrUrk/s320/wing.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148630128219366514" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Долетел я опять не без происшествий. Самолет из Одессы вылетел где-то на двадцать минут позже запланированного, что привело к тому, что в Пражский аэропорт RUZYNE (или как-то так) я вышел за 10 минут до отлета самолета на Гамбург. На табло напротив рейса Прага – Гамбург уже моргала надпись “LAST CALL” – и я побежал изо всех сил. Бежать пришлось минут десять – ну ничего, зато на чек-ине оценили, сказали “you were very quick”.&lt;br /&gt;&lt;br /&gt;Но я-то успел, а вот багаж-то мой – нет. Меня утешили, что так часто бывает. Сказали, что наверняка завтра утром его пришлют, и тогда его привезут мне на такси. А пока что я иду завтра на работу небритый и в отстойной футболке.&lt;br /&gt;&lt;br /&gt;Погода тут очень приятная, не жарко, поют птички и цветут разные цветы. Совсем не так, как было в ноябре.&lt;br /&gt;&lt;br /&gt;Вот.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-5968144369440898083?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5968144369440898083/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/05/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5968144369440898083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5968144369440898083'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/05/blog-post.html' title='Одесса-Гамбург'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x1LHpJFaJqo/R3Ob0rBjpHI/AAAAAAAAALw/Yy-6wMLrUrk/s72-c/wing.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5718324504448480976</id><published>2007-04-11T12:41:00.000+03:00</published><updated>2012-01-03T14:40:56.263+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Обезьяны и пол-ребенка</title><content type='html'>Обращаю внимание своей молчаливой аудитории, что у меня в блог-ленте появился новый ЖЖ. &lt;a href="http://bormor.livejournal.com" target="_new"&gt;Петр Бормор&lt;/a&gt; пишет туда сказки. Читайте их, они хорошие.&lt;br&gt;&lt;br&gt;У одного индуса жили три обезьяны: слепая, глухая и немая.&lt;br&gt;Однажды в дом забрался вор, увидел обезьян и собрался их убить, чтобы не оставлять свидетелей.&lt;br&gt;-Ничего не вижу!- поспешно сказала слепая обезьяна.&lt;br&gt;-Ничего не слышу!-добавила глухая.&lt;br&gt;А немая только руками развела: она, мол, и рада бы что-то сказать, да вот не может.&lt;br&gt;Вор успокоился, собрал всякое добро в мешок и убежал.&lt;br&gt;Утром хозяин обнаружил пропажу и вызвал полицию.&lt;br&gt;-Я всё видела!- сказала глухая обезьяна.&lt;br&gt;-Я всё слышала!- добавила слепая.&lt;br&gt;"А я записала номер машины",- показала знаками немая и протянула листок.&lt;br&gt;--------&lt;br&gt;Скольких преступников уже погубило слепое следование стереотипам!..&lt;br&gt;&lt;br&gt;(c) bormor&lt;br&gt;&lt;br&gt;&lt;b&gt;UPD сразу:&lt;/b&gt; ну и &lt;a href="http://bezoglyadova.livejournal.com" target="_new"&gt;безоглядова&lt;/a&gt;, как всегда, великолепна:&lt;br&gt;&lt;b&gt;&lt;br&gt;Поперек Ленинского проспекта висит рекламная перетяжка: &lt;br&gt;&lt;br&gt;&lt;center&gt;"Мы поможем определить пол Вашего будущего ребенка"&lt;br&gt;&lt;a href="http://www.polrebenka.ru" target="_new"&gt;WWW.POLREBENKA.RU&lt;/a&gt;&lt;/center&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-5718324504448480976?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5718324504448480976/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/04/blog-post_11.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5718324504448480976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5718324504448480976'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/04/blog-post_11.html' title='Обезьяны и пол-ребенка'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-3035185678996458636</id><published>2007-04-07T22:20:00.000+03:00</published><updated>2012-01-03T14:40:56.203+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>О рынках ПО</title><content type='html'>А что, все уже знают, как нынче модно пробиваться на рынок программного обеспечения? Сейчас я напишу о двух стратегиях завоевания. Первую все знают. Называется она:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;"Написать программу, которую еще никто не написал"&lt;/strong&gt;&lt;/em&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;em&gt;&lt;strong&gt;"Написать программу, которую написали все"&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;В рамках данной стратегии нам надлежит выбрать сегмент программ с невероятно большим количеством конкурентов, например: почтовый клиент, веб-браузер, текстовый процессор, редактор электронных таблиц. Высшая мудрость такого выбора заключается в том, что конкуренцию порождает спрос (и наоборот).&lt;br /&gt;&lt;br /&gt;Это значит, что ваша целевая аудитория, во-первых – большая, а во-вторых – многообещающая. Ну, например, напишите мейлер лучше чем TheBAT!, и вы гарантированно найдете своего покупателя. Опять-таки, обилие конкурентов позволяет выделить набор функциональности у конкурирующих продуктов (стырить фичи), добавить что-то свое и выпускать новый продукт. &lt;br /&gt;&lt;br /&gt;Еще одно соображение (для колеблющихся): ваш новый мейлер может быть даже хуже, чем TheBAT!. Более того, пусть он будет дико нефункционален и ужасно некрасив, пусть стирает вашу почту, вас об этом не спросив, тормозит пусть как бульдозер, падает как самолет – все равно он, несомненно, покупателя найдет. Просто, как бы по закону больших чисел, обязательно найдутся люди, которые купят вашу программу (из разных побуждений: чисто попробовать, промахнулись мышкой и нажали не на ту ссылку, перепутали название и т.д.)&lt;br /&gt;&lt;br /&gt;А больше покупателей = больше денег, новая тачка, отдых на Канарах и спокойная старость на берегу озера Онтарио в кресле-качалке с пледом.&lt;br /&gt;&lt;br /&gt;А какой рынок выбираете вы?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-3035185678996458636?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/3035185678996458636/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3035185678996458636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/3035185678996458636'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/04/blog-post.html' title='О рынках ПО'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-1738372142995354632</id><published>2007-02-28T13:31:00.000+02:00</published><updated>2012-01-03T14:40:56.174+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Правило</title><content type='html'>В результате работы над моим Java-проектом я придумал Правило. Применяйте его почаще.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Правило&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Всегда, когда вы можете использовать архитектуру Model-View-Controller, используйте ее.&lt;/em&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/3704723600302758629-1738372142995354632?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/1738372142995354632/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/02/blog-post_28.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1738372142995354632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/1738372142995354632'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/02/blog-post_28.html' title='Правило'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4937362039589841351</id><published>2007-02-11T14:15:00.000+02:00</published><updated>2012-01-03T15:17:42.304+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='luxoft'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Еще раз о собеседовании</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3OB6LBjpDI/AAAAAAAAAK4/-j92B73kWj8/s1600-h/110207_np.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3OB6LBjpDI/AAAAAAAAAK4/-j92B73kWj8/s200/110207_np.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5148601635406324786" /&gt;&lt;/a&gt;Мне довелось на этой неделе неделе на пару с коллегой - тимлидом дружественной команды собеседовать кандидата на должность Java-разработчика. Для меня это был дебют. В Академосе я, правда, проверял тесты - но это совсем другое. Сидеть на собеседовании с Другой Стороны Стола и задавать вопросы - это куда как более сильно.&lt;br /&gt;&lt;br /&gt;Собеседование мы проводили техническое - соответственно, нас избавили от необходимости рассказывать кандидату про то, что "в компании Люксофт пишут ахуенный софт", или "Люксофт: пишем разные программы классные".&lt;br /&gt;&lt;br /&gt;Мы спросили про опыт работы и готовые проекты. Узнав, что человек занимался системой учета персонала, я зацепился за слово "персонал" и стал выяснять, как бы он сохранил список персонала на диске или передавал бы его по сети. Соответственно, обсудили Serializable (знал) и Externalizable (плавал). Поговорили о паттернах - попутно выяснив, что кандидат не знает UML, хоть в резюме и обещал. Потрепались об MVC на примере компонента JTable, который рисует табличку. Говорили также о многопоточности в Java и особенностях ее в Swing (человек хвастал знаниями Swing'а, но о его вопиющей не-потоко-безопасности - опять ни сном ни духом).&lt;br /&gt;&lt;br /&gt;Дал я ему потом задачку, которую сам придумал. Идею дарю. Итак, надо спроектировать Стол. Стол имеет ножки и столешницу. На столешницу в первой версии Стола можно класть листы бумаги и стакан, куда кладут ручки и карандаши. Если б кандидат знал UML - рисовал бы у меня диаграмму классов, а так ему пришлось это все выражать в коде на бумажке. Потом мы обсуждали реализацию, вносили изменения в требования, и смотрели как он с ними справляется. Например, у него было два списка - один список для стаканов, другой - для бумаги. На запрос "поддержать в новой версии Стола возможность класть на него книги" кандидат предложил ввести еще один список - для книг... Ну, короче, такая задачка, на мой взгляд, позволяет немного судить о том, как человек думает и проектирует.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3OB6LBjpEI/AAAAAAAAALA/5kDpgQyrxMY/s1600-h/110207_boss.gif"&gt;&lt;img style="float:left; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3OB6LBjpEI/AAAAAAAAALA/5kDpgQyrxMY/s200/110207_boss.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5148601635406324802" /&gt;&lt;/a&gt;Потом еще про алгоритмы спрашивали (сам виноват - зачем писал в резюме про "знание алгоритмов сортировки, поиска, и т.д."). Про сложность алгоритмов он никогда не слышал, ни один алгоритм сортировки даже не назвал, про binary search не рассказал... &lt;br /&gt;&lt;br /&gt;Еще о многом говорили - зацепили Exception'ы, особенности Java 1.5, Eclipse, SWT... Короче, промурыжили мы его около часа, и не взяли. Хочу теперь проводить много собеседований. Как мне кажется, решение "не взять" - гораздо менее ответственное, чем "взять". Поэтому хочу теперь кого-то "взять". Джависты, ау! У нас правильный настрой!!!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPD 13.02.07:&lt;/strong&gt; вчера еще одного собеседовал! Этому давал уже две задачки - одну на простой алгоритм, и другую - на простое проектирование, но уже не про стол, а про автобус. Дела идут...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4937362039589841351?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4937362039589841351/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/02/blog-post.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4937362039589841351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4937362039589841351'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/02/blog-post.html' title='Еще раз о собеседовании'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_x1LHpJFaJqo/R3OB6LBjpDI/AAAAAAAAAK4/-j92B73kWj8/s72-c/110207_np.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-480400360254778701</id><published>2007-02-05T17:01:00.000+02:00</published><updated>2007-12-27T12:42:00.605+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Vista и распознавание голоса в ей</title><content type='html'>Вот &lt;a href="http://news.bbc.co.uk/hi/russian/sci/tech/newsid_6321000/6321705.stm"&gt;здесь&lt;/a&gt; прочел об обнаруженной уязвимости в Windows Vista. Эти спецы из Microsoft расширили механизм управления компьютером с помощью голоса - теперь, отдавая голосовые команды, можно, например, копировать и удалять файлы, запускать программы, и совершать много других потенциально деструктивных действий.&lt;br&gt;&lt;br&gt;Теперь злой пользователь Вася может написать песенку со словами, например, такими:&lt;br&gt;&lt;br&gt;&lt;center&gt;Ай-ай-ай, вот бы здорово&lt;br&gt;&lt;b&gt;Стереть каталог C:\WINDOWS&lt;/b&gt;,&lt;br&gt;И при свете полной луны&lt;br&gt;&lt;b&gt;Очистить корзину, да-да!&lt;/b&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;Если у жертвы злого пользователя Васи в момент прослушивания этой песенки будет включен микрофон, то ей типа будет плохо. Ну, так себе уязвимость на самом деле, хотя может причинить и зло. А вот кому будет классно - так это вирусописателям. Я помню те времена, когда вирусы писались на ассемблере, и было это типа сложно. С новой версией Windows все меняется! Рекламный ход Microsoft заключается в следующем:&lt;br&gt;&lt;br&gt;&lt;i&gt;Дорогие вирусописатели! Вам больше не нужно осваивать языки программирования, чтобы создать очередной шедевр! Теперь написать вирус просто как раз-два-три:&lt;/i&gt;&lt;ul&gt;&lt;br&gt;&lt;li&gt;РАЗ: напишите словами, что бы вы хотели от вашего вируса&lt;br&gt;&lt;li&gt;ДВА: &lt;b&gt;передайте полученную строку в Windows Speech API&lt;/b&gt;&lt;br&gt;&lt;li&gt;ТРИ: робот Сэм произнесет, а новая Windows Vista автоматически выполнит все ваши команды! Наша система позволит Вам стать более успешными! Откиньтесь на спинку кресла и наслаждайтесь!&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Вот такие-то пироги. Теперь им придется учить систему реагировать только на голос ее хозяина. Багов-то будет :) Ну, Forza Vista!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-480400360254778701?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/480400360254778701/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/02/vista.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/480400360254778701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/480400360254778701'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/02/vista.html' title='Vista и распознавание голоса в ей'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-5113792450824252380</id><published>2007-01-29T12:43:00.001+02:00</published><updated>2012-01-03T14:40:56.248+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='shallow philosophy'/><title type='text'>Lonewolf on CMMI</title><content type='html'>CMMI (Capability Maturity Model Integration) - это модель улучшения процесса разработки продуктов и служб. Сегодня я буду говорить о CMMI-DEV - CMMI для разработки ПО. Эта модель имеет 5 уровней (чем выше уровень - тем круче). Любая компания может за несколько десятков тыщ вызвать к себе бравую команду оценщиков и пройти сертификацию на определенный уровень.&lt;br&gt;&lt;br&gt;Зачем это нужно? Ну, например, вы возглавляете аутсорсинговую компанию "Швайнске" и как раз окучиваете нового клиента. Заклинание "Наш процесс разработки сертифицирован на CMMI Level N" - это хороший способ как минимум привлечь к себе внимание, а как максимум - вполне может повлечь за собой подписание контракта на Q сладких лет.&lt;br&gt;&lt;br&gt;Вот Люксофт на своем сайте &lt;a href="http://www.luxoft.com/ru/press/press_release_article.html?id=324"&gt;заявляет&lt;/a&gt; о том, что имеет CMMI 5 уровня. Врут. На самом деле, пятый уровень имеет только филиал в Москве, и то не весь. У нас, как я считаю, сейчас уровень 2 (но сертификации нет никакой, так что можно мне не верить). А вообще уровни зрелости бывают такими:&lt;br&gt;&lt;br&gt;&lt;b&gt;Уровень 1. Начальный.&lt;/b&gt; Его имеют все компании, которые не прошли сертификацию. Требований на него нет. Процессы в таких организациях хаотичны, а проекты часто не укладываются в сроки или вылазят за рамки бюджета.&lt;br&gt;&lt;br&gt;&lt;b&gt;Уровень 2. Управляемый.&lt;/b&gt; Процесс уже есть. Проекты выполняются и контролируются в соответствии с задокументированными планами. Также имеется управление конфигурациями, отслеживание дефектов, и еще чуть-чуть. В компаниях уровня 2 многое держится на конкретных (опытных, квалифицированных) людях, поэтому такие организации уделяют (или должны уделять) особое внимание подбору персонала.&lt;br&gt;&lt;br&gt;&lt;b&gt;Уровень 3. Определенный.&lt;/b&gt; Процессы понимаются всеми и описываются в терминах стандартов, процедур, инструментов и методов - гораздо более строго, чем на уровне 2. Документы теперь стандартизованы на уровне всей организации, и никак иначе. А главное - на уровне 3 происходит следующее: конкретные личности перестают определять процесс разработки.&lt;br&gt;&lt;br&gt;Теперь стоп. Дальше пока не рассказываю.&lt;br&gt;&lt;br&gt;Ведь посмотрите: что происходит в мире разработки ПО последние лет дцать? Мы изо всех сил стараемся снизить влияние человеческого фактора на процесс разработки и на конечный продукт. Началось с программной инженерии, сейчас вот CMMI-DEV и аналогичные модели, имя коим - легион... Уровни 3, 4 и 5 предполагают, что если, например, команду в ответственный момент покинет ключевой разработчик, то ничего страшного не произойдет. Мы попросту заменим его другим человеком близкой по уровню квалификации, и он волшебным образом втыкнет во все сразу - потому что у нас классный процесс, документирование, процедуры и метрики.&lt;br&gt;&lt;br&gt;Более того, достигнув 3 уровня, можно снижать требования к набираемому персоналу. Даже команда середнячков с правильно поставленными процессами вполне может быть успешной. А вот более низкие уровни не могут себе такого позволить - им важны конкретные личности с золотыми головами. Вот, например, &lt;a href="http://www.joelonsoftware.com"&gt;Джоэль&lt;/a&gt; пару лет назад хвастался, как он тщательно подбирает людей в свою компанию FogCreek - и теперь вы знаете почему: у FogCreek уровень CMMI ниже нижнего.&lt;br&gt;&lt;br&gt;Ставлю интересный вопрос: хорошо это или плохо? Нужно ли стремиться к получению 5 уровня? Или можно остановиться на третьем?&lt;br&gt;&lt;br&gt;По мнению многих, процессы уровней 4 и 5 являются самодостаточными. Легко можно представить себе крупную компанию, сертифицированную на CMMI ML4 или ML5, в которой дни напролет работа просто кипит: пишутся отчеты, проводятся собрания, выпускаются руководящие инструкции, выполняется расчет разнообразных метрик... Только вот разработка программ как-то не очень укладывается в эту картину. Нет времени на разработку, потому как поддерживать хороший процесс - это вам не хухры-мухры, на это время нужно!&lt;br&gt;&lt;br&gt;Но многие также думают, что стремиться нужно к CMMI ML3, что это хорошо, а я говорю - не очень хорошо. Почему?&lt;br&gt;&lt;ol&gt;&lt;li&gt;Потому что вполне можно смириться с тем, что соседняя команда не понимает процессов в моей команде - им это и так ни к чему, у них есть свои.&lt;br&gt;&lt;li&gt;Пусть каждая команда имеет свой набор документов - лишь бы им удобно работалось. &lt;br&gt;&lt;li&gt;Потому что мне хочется работать с квалифицированными коллегами, а не с безликим &lt;i&gt;персоналом&lt;/i&gt;.&lt;br&gt;&lt;li&gt;Потому что я предпочту уменьшить текучку, тем самым снизив риск ухода ключевых специалистов.&lt;br&gt;&lt;li&gt;И еще потому, что люди - это самое важное, что может быть в разработке софта, что бы там не втирали нам эксперты из Carnegie Mellon Software Engineering Institute. Им надо свой CMMI продавать, а нам надо работать и делать мир лучше. &lt;br&gt;&lt;/ol&gt;Таким образом, если мы не ставим своей целью пробиться к наивысшему уровню 5, то остановиться вполне можно на втором. Третий - это не очень круто, и преимущества от него не столь значимы.&lt;br&gt;&lt;br&gt;Итого: как по мне, так на сертификации можно и сэкономить (если вы не директор аутсорсинга "Швайнске"). Гораздо важнее то, что в действительности происходит внутри вашей организации. И если вы часто опаздываете со сроками, оказываетесь перед необходимостью внесения изменений в последние минуты, ваши расходы растут и вы не можете точно сказать, чем занимается сотрудник вон за тем столом - попробуйте пересмотреть ваши взгляды на процесс разработки. Я смею утверждать:&lt;br&gt;&lt;ol&gt;&lt;li&gt;Процесс не ограничивает свободу вашего творчества&lt;br&gt;&lt;li&gt;Процесс - не то же самое, что бюрократия&lt;br&gt;&lt;li&gt;Внедрение процесса оправдано в равной степени как для больших, так и для маленьких команд.&lt;br&gt;&lt;li&gt;Процессы хороши даже для очень маленьких команд.&lt;br&gt;&lt;li&gt;Даже если вы одиночка - вам все равно нужен процесс.&lt;br&gt;&lt;li&gt;CMMI-DEV уровня 3 не так хорош, как его малюют. Часто имеет смысл остановиться на уровне 2.&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-5113792450824252380?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/5113792450824252380/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/01/lonewolf-on-cmmi.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5113792450824252380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/5113792450824252380'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/01/lonewolf-on-cmmi.html' title='Lonewolf on CMMI'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-4934609801750164127</id><published>2007-01-29T12:37:00.000+02:00</published><updated>2012-01-03T15:17:42.297+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='study'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Диплом</title><content type='html'>Завтра защищаю диплом. Тема - "Методика и программные средства для автоматизированного составления учебного расписания".&lt;br /&gt;&lt;br /&gt;Потом, когда страсти улягутся, напишу о чем хотел давно написать. Про CMMI третьего уровня и графы зависимостей программных систем.&lt;br /&gt;&lt;br /&gt;Да, если кто вдруг ищет работу программистом в Одессе - обращайтесь, могу порекомендовать. Нужны C++, Java, QA engineer / QA team lead. Luxoft и Techinsight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-4934609801750164127?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/4934609801750164127/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4934609801750164127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/4934609801750164127'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2007/01/blog-post.html' title='Диплом'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-6747620051339418712</id><published>2006-12-11T13:52:00.000+02:00</published><updated>2012-01-03T14:40:56.292+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='hamburg'/><title type='text'>Hamburg (session 07)</title><content type='html'>Пишет вам Сережа, коему осталось пребывать в земле Гамбургской, аки казачку засланному, четыре дня, зело не праздно провести предстоит кои, а в трудах ратных, сиречь в заботах праведных.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3N_cbBjo-I/AAAAAAAAAKQ/V7dYWkYwfTA/s1600-h/mw00.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x1LHpJFaJqo/R3N_cbBjo-I/AAAAAAAAAKQ/V7dYWkYwfTA/s200/mw00.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148598925281960930" /&gt;&lt;/a&gt;Как оказалось, немецкий народ очень ценит свои выходные дни, отпуска, и пр. Многие из них тяжело работают, но зато на выходные предпочитают или уезжать из города на природу, или выходить в центр Гамбурга и там праздношататься, пожирая сосиски, бутерброды, и запивая их обильным количеством пива и глювайна, сиречь глинтвейна с ромом. Мне такое желание выходить в общую толпу и шататься непонятно – но им, похоже, нравится. Об этом я узнал благодаря Сергею и Виолетте, проведя с ними почти всю субботу. Здесь в большом количестве проводятся рождественские ярмарки, на которых ничего нельзя купить (потому что – Боже мой – какой хлам там продается!), зато можно гулять и смотреть на толпу, чем мы и занимались. Я познакомился с их соседями из восточной Германии, которые приехали на выходные, мы жарили сосиски на балконе и ели их с салатом. Приятные люди – жаль, по-английски не говорят.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3N_crBjo_I/AAAAAAAAAKY/UGO1CroC4lI/s1600-h/mw01.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x1LHpJFaJqo/R3N_crBjo_I/AAAAAAAAAKY/UGO1CroC4lI/s200/mw01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148598929576928242" /&gt;&lt;/a&gt;Еще на днях Питер посоветовал мне сходить в бассейн (Хуссенсбад, или как-то так). Я сходил – и не жалею, очень хороший релакс получается после работы. За 4-90 евро там можно везде плавать целый час. Например, я был в бассейне, где каждые 15 минут создаются высокие волны. Или вот еще: бассейн с теплой водой, который выходит наружу, т.е. в нем плаваешь под открытым небом – очень необычные ощущения. Еще термы есть – бассейны с очень-очень теплой водой, где приятно брать резинку и лежать на ней, а вода тебя плюхает вдоль бортика. Всего две остановки метро от нашей гостиницы. Кстати, там очень красивое и старинное здание. Питер рассказал, что еще его мать училась там плавать – вот как! А Миша туда не ходил – и не надо, он и так много пропустил.&lt;br /&gt;&lt;br /&gt;В одной из предыдущих серий я упомянул о том, что мы договорились пойти с Питером в кино на «Wasser Sonne пустыни». В пятницу это осуществилось. Озвучка была русская, перевод – немецкими субтитрами. Мы приобщили Питера к глубинам русской души, объясняя ему моменты, сложные иностранцу для понимания. Особенно впечатлила его реплика Саида: «Стреляли» (до него она дошла как «There was a shooting»). После фильма он взял с меня слово, что я подаю ему диск с песнями Окуджавы, когда он приедет в Одессу в следующий раз. Не знаю, что он там поймет... Хотя, с другой стороны, Окуджава еще никому не повредил – так что подарю, конечно, пускай слушает.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N_c7BjpAI/AAAAAAAAAKg/-C9fDJUgs1c/s1600-h/mw02.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N_c7BjpAI/AAAAAAAAAKg/-C9fDJUgs1c/s200/mw02.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148598933871895554" /&gt;&lt;/a&gt;В воскресенье мы гуляли в гавани, где много красивых яхт и больших судов. Кроме того, я побывал в музее, где давно хотел побывать. Это самый большой в мире макет железной дороги, он занимает целый этаж бывшего корабельного склада общей площадью 1600 кв.м. Собственно, это даже больше, чем макет железной дороги – там есть горы, леса, города, театры, люди, шахты, день сменяется ночью, за дождем появляется солнце... В городах по дорогам ездят машины, соблюдая правила движения – сам видел! Они показывают сигналы поворота, пропускают помеху справа, и никого не давят. На стадионе футбольная команда играет в мяч, в Лас-Вегасе горят огни казино, в Скандинавии в горах подъемники везут лыжников кверху. Иногда происходят неожиданные события: например, я застал пожар, на который тут же приехали две пожарные машины, скорая и полиция. Также кое-где есть кнопочки, нажимая которые, можно наблюдать интересные эффекты. Я случайно тыкнул одну – и маленькие человечки внизу в шахте стали отгружать уголь на подъемник... Я провел в этом месте (называется Miniatur Wunderland) два часа, сделал много фотографий и записал видео. Возле выхода я нашел комнатку, в которой сидят люди, управляющие этой миниатюрной жизнью – у них где-то с тридцать мониторов, и множество пультов. Очень большое впечатление на меня произвело это место – не каждый день увидишь такое!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N_c7BjpCI/AAAAAAAAAKw/uYLIFA_1sP4/s1600-h/after_mw.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N_c7BjpCI/AAAAAAAAAKw/uYLIFA_1sP4/s200/after_mw.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148598933871895586" /&gt;&lt;/a&gt;В среду мы с Мишей пойдем к Питеру домой, потому что он нас пригласил. Познакомимся с его женой, наладим контакты потеснее с ним самим. Мы будем готовить, а потом есть т.н. «чиз фондю» - это такой горшочек с горячим сыром, куда нужно окунать, например, хлеб, и есть это. Питер говорит, что будет вкусно, а я не возражаю :) Вообще говоря, подход немцев к общению с нами очень странен. Похоже, что они не знают о текучке кадров среди украинских программистов и готовятся к сотрудничеству с нами (именно с нами, как с людьми – со мной, с Мишей, и пр.) на долгие годы. Мне, меняющему работы в среднем раз в полтора года, в этом смысле жаль немцев – скоро они в нас разочаруются. И кстати, следующий мой визит в Гамбург Питер планирует на май-июнь ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N_c7BjpBI/AAAAAAAAAKo/-IRQ1yMb9rk/s1600-h/mw03.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N_c7BjpBI/AAAAAAAAAKo/-IRQ1yMb9rk/s200/mw03.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148598933871895570" /&gt;&lt;/a&gt;Был я также на Репербане и на Гербертштрассе – все правда, что говорят – действительно, много красных фонарей, разврата, и интересно. У нас такого нет. Собственно, у нас многого нет, но домой все равно уже хочется. Я закрыл еще не все позиции по подаркам близким, но собираюсь это сделать в ближайшие дни.&lt;br /&gt;&lt;br /&gt;Ну все, осталось продержаться совсем чуть-чуть. В четверг будет презентация, а в пятницу – на крыло, и домой.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3704723600302758629-6747620051339418712?l=sergey-borodavkin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sergey-borodavkin.blogspot.com/feeds/6747620051339418712/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://sergey-borodavkin.blogspot.com/2006/12/hamburg-session-07.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6747620051339418712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3704723600302758629/posts/default/6747620051339418712'/><link rel='alternate' type='text/html' href='http://sergey-borodavkin.blogspot.com/2006/12/hamburg-session-07.html' title='Hamburg (session 07)'/><author><name>Sergey Borodavkin</name><uri>http://www.blogger.com/profile/06154243184694262346</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-Q4JX9AAMihw/Tm8ew4nXwaI/AAAAAAAABHI/yMphsAz8UuQ/s220/ava_goog.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x1LHpJFaJqo/R3N_cbBjo-I/AAAAAAAAAKQ/V7dYWkYwfTA/s72-c/mw00.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3704723600302758629.post-613145123572000869</id><published>2006-12-04T13:51:00.000+02:00</published><updated>2012-01-03T14:40:56.273+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Hamburg (session 06) // Paris</title><content type='html'>Закончив свой рабочий день в пятницу на полчаса раньше, мы с Мишей сначала поехали в гостиницу, чтобы приготовиться к поездке и собрать вещи, а затем отправились на автобусную станцию.&lt;br /&gt;&lt;br /&gt;Полупустой автобус компании Gullivers отправился без опоздания, как это и принято здесь. Первая большая остановка была в Ганновере, где к нам присоединилась целая толпа людей, в основном негров. Затем была остановка в Брюсселе, где большинство пересело на другой автобус, идущий по направлению к Амстердаму – как оказалось, почти все они ехали в Амстердам или в Лондон. Спешу доложить вам, что вся дорога в Париж оказалась вымощена муками и болями в коленках – мои чересчур длинные ноги оказались совершенно не готовы к тому, что пассажир впереди опустил спинку сиденья для поспать. Кстати, этот пассажир впоследствии оказался девушкой Таней из Гомеля, а за нами ехало еще трое пассажиров – студентов из Питера. Как оказалось, русских в Гамбурге много, но попросту район, в котором мы живем и работаем, слишком крут для них – они обитают на окраинах. Так что засыпал я под русскую речь.&lt;br /&gt;&lt;br /&gt;Утром автобус привез нас в Париж, к станции метро Gare de L'Est. Выйдя из автобуса, я осознал: Париж – город негров. Неграми вокруг были буквально все – от маленьких детей до дворников. Впрочем, пройдя чуть дальше, мы выяснили, что все не так плачевно – просто нас привезли в самый что ни на есть негритянский квартал Парижа. Так что, дабы долго там не задерживаться, я, следуя наперед составленному плану, потащил Мишу к метро, чтобы ехать в центр – на станцию Сите.&lt;br /&gt;&lt;br /&gt;Однако нас ожидало еще одно испытание: чтобы поехать в метро, нам надо было купить билеты у кассира, который ни слова не понимал по-английски, и поэтому не мог объяснить, какие билеты нужны. К счастью, неподалеку я услышал русскую речь и, после краткой беседы с двумя нашими женщинами, уже покупал 10 билетов на 10 поездок в метро за 10.90 евро. Ах, парижское метро! Таких узких, кривых, темных коридорчиков, грязных переходов и крутых железных лестниц нет, наверное, больше ни в одном метрополитене. Однако, мы справились и с этим. Поблуждав немного в подземельях станции Сен-Дени Страсбург, мы вышли на нужную нам ветку М4, и поехали на остров Сите – остановок 5 или 6.&lt;br /&gt;&lt;br /&gt;Выйдя из метро, мы внимательно осмотрелись. На часах было 10, Эйфелевой башней пока не пахло, так что мы отправились блуждать наугад. Видели много русских туристов. У двух девочек Миша спросил: «Девушки, вы не собираетесь в Дисней-Ленд?» – но сей вопрос был встречен отказом. Тем не менее, через несколько минут прогулки вдоль Сены перед нами предстал во всей красе Нотр-Дам де Пари – собор Парижской Богоматери. Благодаря Гюго, закрывшему эту тему, от обязанности описывать собор я избавлен раз и навсегда (привезу фотки – на них все есть). Мы с Мишей просто сперва обошли его и присели на скамейке в саду. Я сказал, что хочу смотреть собор внутри, и химер – наверху. Миша сказал, что хочет в Дисней-Ленд. Мне пришлось еще раз озвучить мысль о целесообразности того, чтобы разбежаться – ну, на том мы и порешили: Миша укатил веселиться на качельках и обещал в три часа ждать меня под Эйфелевой башней.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N9o7Bjo5I/AAAAAAAAAJo/1DcjArxhDUE/s1600-h/01_notre_dam.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_x1LHpJFaJqo/R3N9o7Bjo5I/AAAAAAAAAJo/1DcjArxhDUE/s200/01_notre_dam.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148596941007070098" /&gt;&lt;/a&gt;Я завершил круг вокруг собора и, вместе с другими туристами, зашел внутрь. Хочу вам сказать, что все правда – и высокие мрачные своды, и кельи, и фрески, и невероятнейшие витражи... Впрочем, только что понял: моего убогого слога с лихвой хватает на то, чтобы описывать еду, которую мы жрем в Гамбурге, но писать про Нотр-Дам я не готов – простите меня. Кое-что есть на фотографиях и видео, которые я привезу с собой – но впечатления, которое собор на меня произвел, – мне, увы, не передать.&lt;br /&gt;&lt;br /&gt;Проведя внутри около часа, я отправился было к башням с химерами, но испугался пятидесятиметровой очереди, и решил просто продолжить осмотр достопримечательностей, для чего мне пригодилась бы карта. «Вот только посмотрю, что за красивый мост там виднеется, и вернусь за картой вот в этот магазинчик» - решил я, и...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3N95LBjo6I/AAAAAAAAAJw/N8pun0h8Sqw/s1600-h/02_sena.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_x1LHpJFaJqo/R3N95LBjo6I/AAAAAAAAAJw/N8pun0h8Sqw/s200/02_sena.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5148597220179944354" /&gt;&lt;/a&gt;&lt;br /&gt;И тут я попал. Париж поймал меня в свои сети, как мелкую рыбешку – как ловил и будет ловить еще сотни и тысячи таких же, как я. Скажу честно – ни за какой картой я уже не вернулся, потому что, стоило сделать мне несколько шагов к набережной, как я окунулся в тот, до малейших подробностей тот парижский мир, который все мы видели в кино, о котором читали книги, пели песни и учили стихи. Вдоль Сены раскинули свои лотки с книгами и старыми афишами букинисты, музыканты настраивали свои инструменты, у берега стояли пришвартованные маленькие яхточки, и с мостовой взмывали вверх и кружились над водой белые... э-э... чайки? Вроде чайки – потому что белые, и не голуби.&lt;br /&gt;&lt;br /&gt;Я посидел в кафешке над Сеной, выпил кофе, что было весьма не лишним после полу-бессонной ночи, и съел круассан. Затем, стоило мне сделать еще несколько шагов, как предо мной предстал Понт де Неф (Новый Мост), построенный в один пролет над всей рекой. У меня от радости в зобу дыханье сперло – так, что я даже забыл его сфотографировать. Не страшно, конечно – все мы его и так видели – но потом я старался быть внимательней, и держал фотоаппарат наготове.&lt;br /&gt;&lt;br /&gt;Да какая к черту карта! Сделай еще два шага – и ты перед церковью Сен-Шапель и дворцом правосудия. Внутрь, из-за большой очереди, я снова не попал – но это не важно, потому что еще шаг – и твой каблук уже попирает брусчатку бульвара Сен-Жермен. Что ни шаг – то легенда, что ни взгляд – то новый шедевр – архитектурный, культурный, или исторический – здравствуй, Париж, весь я твой! Понт д
