<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0MERn4_eSp7ImA9WhdbEU0.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910</id><updated>2011-10-08T14:30:07.041-07:00</updated><title>Програмысли</title><subtitle type="html">Блог о программировании и не только ...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://programind.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://programind.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ярослав</name><uri>http://www.blogger.com/profile/14955031931952537587</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>874</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/gZBEN" /><feedburner:info uri="blogspot/gzben" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0MERn4zeip7ImA9WhdbEU0.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-3920968170906384547</id><published>2011-10-08T14:30:00.001-07:00</published><updated>2011-10-08T14:30:07.082-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-08T14:30:07.082-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="картографирование" /><category scheme="http://www.blogger.com/atom/ns#" term="сервисы" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>В Google Maps добавлен объемный «вертолетный режим»</title><content type="html">&lt;br /&gt;  	&lt;img src="http://habrastorage.org/storage1/42a98f22/eeda9aad/3cef9b2f/f6ad7476.jpg"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Если проще, то разработчики Google Maps добавили возможность просмотра определенной местности в объемном виде с высоты птичьего полета. Сделано это, в основном, для дорог — чтобы водители, планируя поездку, могли видеть, по какой местности проложена дорога, и насколько сложным может быть путь. По словам представителей команды проекта, сервис может быть полезен и для велосипедистов, туристов-пешеходов и прочих категорий граждан, путешествующих по дорогам.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Функция “helicopter view” доступна в качестве отдельного режима. Для того, чтобы ею воспользоваться, нужно ввести начальную и конечную точки пути (желательно и промежуточные точки), после чего возможное направление будет подсвечено. Нажав на соответствующую кнопку, можно будет просмотреть весь путь с высоты птичьего полета, отмечая сложные и потенциально опасные места на трассе. После нажатия сервис также автоматически переводит пользователя в «режим полета». &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://habrastorage.org/storage1/09af8c21/e9384a0b/8c46c666/1afff3e2.jpg"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В процессе просмотра можно будет переключаться между отдельными участками пути. Если режим объемного просмотра по какой-то причине не устраивает, можно перейти в обычный двумерный режим. Разработчики сервиса считают, что новая функция будет действительно полезна и востребована — ведь объемный режим просмотра позволяет увидеть то, что обычный 2D режим просто не показывает.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://habrastorage.org/storage1/d7b15c54/14b91a86/4b99164d/486ec940.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Насколько можно судить, новая функция доступна не для всех регионов, так что оценить все это можно будет не сразу. Тем не менее, этот «мешап» Google Earth и Google Maps представляется довольно интересным сервисом для многих категорий пользователей.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Via &lt;a href="http://google-latlong.blogspot.com/2011/09/helicopter-view-of-your-driving.html"&gt;google-latlong&lt;/a&gt; &lt;br /&gt;  	&lt;div class="clear"&gt;&lt;/div&gt; 	&lt;br /&gt;  	&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href=""&gt;Хабрахабр - Google &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/129563/"&gt; В Google Maps добавлен объемный «вертолетный режим»&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-3920968170906384547?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5xmwP5IoxmizmKIAyZSC5C_AzBA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5xmwP5IoxmizmKIAyZSC5C_AzBA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5xmwP5IoxmizmKIAyZSC5C_AzBA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5xmwP5IoxmizmKIAyZSC5C_AzBA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/iPCYECOqQIw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/3920968170906384547/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/10/google-maps.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3920968170906384547?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3920968170906384547?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/iPCYECOqQIw/google-maps.html" title="В Google Maps добавлен объемный «вертолетный режим»" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/10/google-maps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEEQHw5fCp7ImA9WhdbEU0.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-7914828916020156809</id><published>2011-10-08T14:00:00.001-07:00</published><updated>2011-10-08T14:00:01.224-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-08T14:00:01.224-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="typography" /><category scheme="http://www.blogger.com/atom/ns#" term="js" /><category scheme="http://www.blogger.com/atom/ns#" term="kerning" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Kerning.js</title><content type="html">&lt;br /&gt;  	Свершилось, теперь чудеса типографики стали доступны и нам &lt;s&gt;простым смертным&lt;/s&gt;.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Как использовать&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Да легко, просто подключаем и используем.&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="js"&gt;&amp;lt;script src=&amp;quot;kerning.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;Больше ничего не нужно, остальное она сделает сама.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Что умеет&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Умеет она поистине восхитительные вещи.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h5&gt;Kerning&lt;/h5&gt;&lt;br/&gt;&lt;br /&gt;Кернинг для каждой буквы.&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="css"&gt;#pixel-perfect {&lt;br /&gt;    -letter-kern: 1px 1px 0 0 0&lt;br /&gt;                  1px 0 2px 0 0&lt;br /&gt;                  0 0 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/xRGaG.png" alt="Kerning"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h5&gt;Size adjustment&lt;/h5&gt;&lt;br/&gt;&lt;br /&gt;Просто указываем какой букве какой кегль.&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="css"&gt;#hello-goodbye {&lt;br /&gt;    -letter-size: _ _ _ _ _ 0.5em;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;Альтернативный вариант&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="css"&gt;#hello-goodbye {&lt;br /&gt;    -letter-size: _^5 0.5em;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/pAePQ.png" alt="Size adjustment"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h5&gt;Color&lt;/h5&gt;&lt;br/&gt;&lt;br /&gt;Красим слова&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="css"&gt;#pantone-please {&lt;br /&gt;    -word-color: #f5474b #000000;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/o6cnC.png" alt="Color"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h5&gt;Transformations&lt;/h5&gt;&lt;br/&gt;&lt;br /&gt;Поворачиваем буковки :)&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="js"&gt;#little-lean {&lt;br /&gt;    -letter-transform: skew(-5deg) none&lt;br /&gt;                       none none&lt;br /&gt;                       none none&lt;br /&gt;                       skew(-5deg);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/cckd7.png" alt="Transformations"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h5&gt;Repeats&lt;/h5&gt;&lt;br/&gt;&lt;br /&gt;Море волнуется раз.&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="css"&gt;#double-bubble {&lt;br /&gt;    -letter-transform: -letter-repeats(&lt;br /&gt;        2n+1: translate3d(0,-5px,0),&lt;br /&gt;        even: translate3d(0,5px,0)&lt;br /&gt;    );&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://i.imgur.com/W3HhR.png" alt="Repeats"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://endtwist.github.com/kerning.js/"&gt;Сайт проекта на GitHub&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Ну а теперь самое грустное.&lt;br/&gt;&lt;br /&gt;Поистине всю мощь эта библиотека показывает только в браузерах на основе WebKit, в Firefox работает частично, в Opera вообще не работает. &lt;br /&gt;  	&lt;div class="clear"&gt;&lt;/div&gt; 	&lt;br /&gt;  	&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href=""&gt;Хабрахабр - JavaScript &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/javascript/128848/"&gt; Kerning.js&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-7914828916020156809?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MzFLnZ6snZS0VEhu4_rO_3aC2wU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MzFLnZ6snZS0VEhu4_rO_3aC2wU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MzFLnZ6snZS0VEhu4_rO_3aC2wU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MzFLnZ6snZS0VEhu4_rO_3aC2wU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/fdFoOJl25rQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/7914828916020156809/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/10/kerningjs.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/7914828916020156809?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/7914828916020156809?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/fdFoOJl25rQ/kerningjs.html" title="Kerning.js" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/10/kerningjs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08ER3o9eSp7ImA9WhdbEU0.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-8014970597379311127</id><published>2011-10-08T13:30:00.003-07:00</published><updated>2011-10-08T13:30:06.461-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-08T13:30:06.461-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google+" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>[Перевод] Google+: 92, 93, 94, 95, 96, 97, 98, 99… 100</title><content type="html">&lt;br /&gt;      &lt;img align="right" src="http://habrastorage.org/storage1/836a35be/3e3f89c5/34757699/0deb9e12.jpg"/&gt;В течении последних 90 дней мы проводим онлайн-тестирование Google+. Мы успели реализовать 91 обновление нашей социальной сети. Про все из них вы можете прочитать &lt;a href="http://www.google.com/support/profiles/bin/static.py?hl=en&amp;amp;page=release_notes.cs&amp;amp;rd=1"&gt;здесь&lt;/a&gt;. Мы хотим сказать, что это только начало новой удивительной эры, эры в которой люди смогут общаться в Интернете точно так же легко, как и оффлайне. С каждым днем мы приближаем эту мечту. И вот сегодня еще один шаг — сотый. Мы хотим представить вашему вниманию 9 новых функций Google+.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;h4&gt;+ВидеоВстречи: мобильнее, неожиданнее, интереснее&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;ВидеоВстречи – это удобный многопользовательский видеочат. С самого начала сервис улучшался и рос благодаря вам, наши пользователи. Вы уже проводили уроки кулинарного искусства, конкурсы, концерты и многое-многое другое с помощью нашей технологии. Мы же, в свою очередь, продолжим делать все возможное, чтобы вы и дальше могли экспериментировать с видеовстречами, общаться и воплощать любые свои идеи, не сдерживая свой креатив. Мы уверены, что новые функции, появившиеся на этой неделе, вас не разочаруют.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;92. ВидеоВстречи на экране телефона&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;В реальной жизни мы постоянно встречаемся с разными людьми — очень часто случайные знакомые становятся нашими друзьями, теперь же встречаться и знакомиться «как в жизни» можно и в видеовстречах. Прямо с мобильного телефона! Просто найдите активную встречу в ленте и нажмите «Присоединиться». Это также просто, как отправить СМС.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;img align="center" src="http://habrastorage.org/storage1/ea40de46/dd4d8c41/af63014d/8697a4b8.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;i&gt;Новое приложение Google+ уже можно скачать с Android Маркета, а совсем скоро оно появится на iOS App Store.&lt;/i&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;93. ВидеоВстречи в прямом эфире&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Вы уже наверняка общались в ВидеоВстречах с друзьями и родственниками. Теперь у вас появилась возможность значительно расширить свою аудиторию. Станьте ведущим своего собственного шоу в прямом эфире!&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Работает все очень просто. Начните обычную видеовстречу и нажмите «В эфире». Шоу началось! Как всегда, к в вам сможет присоединиться до 9 человек. При желании вы также сможете побыть зрителем на «передачах» других пользователей и записать свой эфир.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://habrastorage.org/storage1/bb0676e8/3462da4c/78f20a1b/5fc7dadc.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;i&gt;Любой сможет присоединиться к прямому эфиру в качестве зрителя.&lt;/i&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;94, 95, 96, 97. ВидеоВстречи Экстра&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Общение не ограничивается только разговором. Встретив друзей и поболтав минут десять, мы можем сходить в кино, посмотреть фотографии или просто набросать план викэнда. И если раньше в ВидеоВстречах можно было только смотреть ролики на YouTube и переписываться в чате, то теперь вы сможете:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Открыть друзьям доступ к экрану своего компьютера, чтобы показать им презентацию, фотографии или свой рекорд в игре.&lt;ul&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;/ul&gt;&lt;br/&gt;&lt;br /&gt;&lt;img align="center" src="http://habrastorage.org/storage1/1b179a54/074b339f/61cfd81e/03c29a57.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;i&gt;Экстрафункции пока еще не стали полноценной частью ВидеоВстреч, но мы хотим, чтобы вы уже сейчас их попробовали и поделились с нами своими впечатлениями.&lt;/i&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;98. API-интерфейсы для ВидеоВстреч&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Первое, в чем мы убедились за время онлайн-тестирования ВидеоВстреч, так это в том, что среди вас крайне много разработчиков (&lt;i&gt;прим. пер. Приятно — заметили&lt;/i&gt;). Поэтому в дополнение к API для Google+, который появился на прошлой неделе, мы запустили базовый набор ΑPI-интерфейсов для ВидеоВстреч.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;+Поиск: находите людей и записи, которые вас интересуют&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;99.&lt;/b&gt; Многие спрашивали нас, почему в Google+ нет поиска. Сегодня долгожданная функция наконец-то появится в Google+. Так что теперь вы можете искать в этом сервисе все, что вам интересно: людей, статьи, фотографии, видеоролики, все что только есть в Интернете.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;img align="center" src="http://habrastorage.org/storage1/b838b0ea/f52a57cd/5fec759f/4d16fe9e.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;i&gt;Ежедневно в Google+ публикуют более миллиарда записей, и нам не терпится узнать, как поиск поможет людям нить друг друга.&lt;/i&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;+Все&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;100.&lt;/b&gt;Ну и напоследок самая долгожданная новость: теперь для регистрации в Google+ инвайтов больше не нужно! В течении последних 12 недель мы работали в тестовом режиме. Конечно, нам все еще есть куда расти и развиваться, но благодаря проделанной за это время работе, мы смогли сделать главное – плюшку № 100: открытую регистрацию. Это значит, что теперь любой может зайти на &lt;a href="http://plus.google.com/?hl=ru"&gt;google.com/+&lt;/a&gt; и стать участником Google+.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Все только начинается… Жизнь прекрасна и удивительна!&lt;br /&gt;  	&lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href=""&gt;Хабрахабр - Google &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/128821/"&gt; [Перевод] Google+: 92, 93, 94, 95, 96, 97, 98, 99… 100&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-8014970597379311127?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jAz1fSwws_ZrhrqZQzs77Gqt3H8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jAz1fSwws_ZrhrqZQzs77Gqt3H8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jAz1fSwws_ZrhrqZQzs77Gqt3H8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jAz1fSwws_ZrhrqZQzs77Gqt3H8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/Zcu56fZT1NQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/8014970597379311127/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/10/google-92-93-94-95-96-97-98-99-100.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/8014970597379311127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/8014970597379311127?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/Zcu56fZT1NQ/google-92-93-94-95-96-97-98-99-100.html" title="[Перевод] Google+: 92, 93, 94, 95, 96, 97, 98, 99… 100" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/10/google-92-93-94-95-96-97-98-99-100.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08EQ3oyeip7ImA9WhdbEU0.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-3898334144612005226</id><published>2011-10-08T13:30:00.001-07:00</published><updated>2011-10-08T13:30:02.492-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-08T13:30:02.492-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google plus api" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Plus" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>[Перевод] Приступаем к работе с Google+ API</title><content type="html">&lt;br /&gt;      &lt;img src="http://habrastorage.org/storage1/6093464e/056158f0/8e3d8893/dc86d4bd.png"/&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;h4&gt;Приветствуем разработчиков,&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Благодарим Вас за проявленный интерес к платформе Google+. Мы обещали, сообщать о всем интересном, что происходит. Ну, что же — пришло время…&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Сегодня мы запускаем первую часть Google + API. Это первый выпуск API ориентирован только на работу с публичными данными — API позволяет получать доступ к информации, которою пользователи раcшаривают с помощью Google+. Подробную информацию Вы можете получить в нашем &lt;a href="http://googleplusplatform.blogspot.com/"&gt;блоге&lt;/a&gt;.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Кроме того&lt;habracut/&gt;, мы рады представить &lt;a href="https://developers.google.com/+/"&gt;новый сайт для разработчиков Google+&lt;/a&gt;. Это будет место для ознакомления с &lt;a href="http://developers.google.com/+/policies"&gt;условиями нашей политики&lt;/a&gt;, &lt;a href="http://developers.google.com/+/terms"&gt;условий использования&lt;/a&gt;, &lt;a href="http://developers.google.com/+/discussions"&gt;обсуждений с другими разработчиками&lt;/a&gt;, &lt;a href="http://developers.google.com/+/api/"&gt;доступа к документации&lt;/a&gt;, а также инструменты, которые делают развитие на платформе Google+ проще и веселее, и, конечно, место, где будут появляться анонсы всех новых релизов.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Мы с нетерпением ждем, чтобы увидеть то, что вы разработаете с помощью API. Сегодня это лишь начало, и ваша работа будет влиять на то, что будет дальше, так что приступайте к работе.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Happy coding!&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt; — Команда платформы Google+&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;C почином товарищи, надеюсь все будет не так заморочно как с фэйсбуком.&lt;br /&gt;  	&lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&lt;br /&gt;&lt;br /&gt;&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"&gt;&lt;br /&gt;	&lt;head&gt;&lt;br /&gt;		&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;&lt;br /&gt;		&lt;title&gt;Приступаем к работе с Google+ API / Google / Хабрахабр&lt;/title&gt;&lt;br /&gt;		&lt;br /&gt;		&lt;br /&gt;		&lt;br /&gt;			&lt;link href="/styles/1317993707/all.css" rel="stylesheet" media="all" /&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;br /&gt;		&lt;br /&gt;  &lt;link href="/styles/1317993707/_parts/posts.css" rel="stylesheet" media="all" /&gt;&lt;br /&gt;  &lt;link href="/styles/1317993707/_parts/comments.css" rel="stylesheet" media="all" /&gt;&lt;br /&gt;  &lt;link href="/styles/1317993707/posts/all.css" rel="stylesheet" media="all" /&gt;&lt;br /&gt;  &lt;link href="/styles/1317993707/forms.css" rel="stylesheet" media="all" /&gt;&lt;br /&gt;  &lt;link href="/styles/1317993707/highlight.css" rel="stylesheet" media="all" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;		&lt;br /&gt;		&lt;br /&gt;			&lt;script type="text/javascript" src="/javascripts/1317993707/all.js"&gt;&lt;/script&gt;&lt;br /&gt;		&lt;br /&gt;			&lt;br /&gt;		&lt;br /&gt;  &lt;script type="text/javascript" src="/javascripts/1317993707/jquery.form.js"&gt;&lt;/script&gt;&lt;br /&gt;  &lt;script type="text/javascript" src="/javascripts/1317993707/jquery.cookie.js"&gt;&lt;/script&gt;&lt;br /&gt;  &lt;script type="text/javascript" src="/js/1317993707/swfobject.js"&gt;&lt;/script&gt;&lt;br /&gt;  &lt;script type="text/javascript" src="/javascripts/1317993707/wysiwyg.js"&gt;&lt;/script&gt;&lt;br /&gt;  &lt;script type="text/javascript" src="/javascripts/1317993707/highlight.js"&gt;&lt;/script&gt;&lt;br /&gt;  &lt;script type="text/javascript" src="/javascripts/1317993707/_parts/posts.js"&gt;&lt;/script&gt;&lt;br /&gt;  &lt;script type="text/javascript" src="/javascripts/1317993707/_parts/comments.js"&gt;&lt;/script&gt;&lt;br /&gt;  &lt;script type="text/javascript" src="/javascripts/1317993707/posts/all.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;		&lt;br /&gt;	&lt;/head&gt;&lt;br /&gt;&lt;br /&gt;	&lt;body&gt;&lt;br /&gt;	  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;script&gt;&lt;br /&gt;// &lt;!--&lt;br /&gt;var mb_login = "HABRAHABR_INNER_100x90.HABRAHABR_INNER_100x90";&lt;br /&gt;var mb_options = "options=T";&lt;br /&gt;var mb_random = Math.round(Math.random() * 100000);&lt;br /&gt;document.write('&lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/'+mb_login+'?'+mb_random+'&amp;'+mb_options+'" width="100%" height="90" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/'+mb_login+'?'+mb_random +'" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/'+mb_login+'?'+mb_random +'&amp;'+mb_options+'" alt="" width="100%" height="90" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;');&lt;br /&gt;// --&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;br /&gt;&lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/HABRAHABR_INNER_100x90.HABRAHABR_INNER_100x90?options=T" width="100%" height="90" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/HABRAHABR_INNER_100x90.HABRAHABR_INNER_100x90" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/HABRAHABR_INNER_100x90.HABRAHABR_INNER_100x90?options=T" alt="" width="100%" height="90" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="height:0;overflow: hidden;"&gt;&lt;br /&gt;	&lt;script&gt;&lt;br /&gt;		// &lt;!--&lt;br /&gt;		var mb_login = "STATISTIC_INNER.STATISTIC_INNER";&lt;br /&gt;		var mb_options = "options=T";&lt;br /&gt;		var mb_random = Math.round(Math.random() * 100000);&lt;br /&gt;		document.write('&lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/'+mb_login+'?'+mb_random+'&amp;'+mb_options+'" width="1" height="1" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/'+mb_login+'?'+mb_random +'" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/'+mb_login+'?'+mb_random +'&amp;'+mb_options+'" alt="" width="1" height="1" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;');&lt;br /&gt;		// --&gt;&lt;br /&gt;	&lt;/script&gt;&lt;br /&gt;	&lt;noscript&gt;&lt;br /&gt;		&lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/STATISTIC_INNER.STATISTIC_INNER?options=T" width="1" height="1" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/STATISTIC_INNER.STATISTIC_INNER" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/STATISTIC_INNER.STATISTIC_INNER?options=T" alt="" width="1" height="1" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;&lt;br /&gt;	&lt;/noscript&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;		&lt;div id="layout"&gt;	    &lt;br /&gt;		  &lt;div id="header"&gt;&lt;br /&gt;  &lt;div class="userpanel silver"&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="http://habrahabr.ru/login/" class="login"&gt;войти&lt;/a&gt; &lt;a href="http://habrahabr.ru/register/"&gt;зарегистрироваться&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;a class="logo" href="http://habrahabr.ru/" title="На главную страницу"&gt;&lt;/a&gt;&lt;br /&gt;  &lt;div class="search"&gt;&lt;br /&gt;    &lt;form id="search_form" name="search" method="get" action="/search/" &gt;&lt;br /&gt;      &lt;input type="text" name="q" value="поиск по сайту" onfocus="this.value = (this.value == 'поиск по сайту') ? '' : this.value" onblur="this.value = (this.value == '') ? 'поиск по сайту' : this.value"&gt;&lt;br /&gt;      &lt;input type="submit" value="" /&gt;&lt;br /&gt;    &lt;/form&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;	&lt;div class="main_menu"&gt;&lt;br /&gt;		&lt;a href="http://habrahabr.ru/" class="active"&gt;посты&lt;/a&gt;&lt;a href="http://habrahabr.ru/qa/"&gt;q&amp;amp;a&lt;/a&gt;&lt;a href="http://habrahabr.ru/bloglist/"&gt;блоги&lt;/a&gt;&lt;a href="http://habrahabr.ru/events/coming/"&gt;события&lt;/a&gt;&lt;a href="http://habrahabr.ru/companies/"&gt;компании&lt;/a&gt;&lt;br /&gt;		&lt;div class="banner_special"&gt;&lt;br /&gt;  &lt;script&gt;&lt;br /&gt;  // &lt;!--&lt;br /&gt;  var mb_login = "habr_special_135_35";&lt;br /&gt;  var mb_options = "options=T";&lt;br /&gt;  var mb_random = Math.round(Math.random() * 100000);&lt;br /&gt;  document.write('&lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/'+mb_login+'?'+mb_random+'&amp;'+mb_options+'" width="135" height="35" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/'+mb_login+'?'+mb_random +'" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/'+mb_login+'?'+mb_random +'&amp;'+mb_options+'" alt="" width="135" height="35" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;');&lt;br /&gt;  // --&gt;&lt;br /&gt;  &lt;/script&gt;&lt;br /&gt;  &lt;noscript&gt;&lt;br /&gt;  &lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/habr_special_135_35?options=T" width="135" height="35" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/habr_special_135_35" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/habr_special_135_35?options=T" alt="" width="135" height="35" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;&lt;br /&gt;  &lt;/noscript&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&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="blog_header"&gt;&lt;br /&gt;  &lt;h2&gt;&lt;br /&gt;    &lt;a href="/blogs/google/" class="blog_title"&gt;Google&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;  				&lt;br /&gt;	&lt;/h2&gt;&lt;br /&gt;	&lt;div class="blog-index"&gt;&lt;br /&gt;	 &lt;div class="label"&gt;индекс&lt;/div&gt;&lt;br /&gt;	 &lt;div class="value"&gt;200,58&lt;/div&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;  &lt;div class="content_left"&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="add_post"&gt;&lt;a href="/add/topic/" title="Добавить пост"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;&lt;table class="menu"&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;    &lt;br /&gt;      &lt;td class="item "&gt;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/google/" &gt;Захабренные &lt;/a&gt;      &lt;br /&gt;      &lt;/td&gt;&lt;br /&gt;    &lt;br /&gt;      &lt;td class="item "&gt;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/google/new/" &gt;Новые &lt;/a&gt;      &lt;br /&gt;      &lt;/td&gt;&lt;br /&gt;    &lt;br /&gt;      &lt;td class="item "&gt;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/google/unhabred/" &gt;Отхабренные &lt;/a&gt;      &lt;br /&gt;      &lt;/td&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/tr&gt;  &lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="submenu "&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;	&lt;div class="company_post"&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;  &lt;div class="post translation" id="post_128533"&gt;&lt;br /&gt;    &lt;h2 class="title"&gt;&lt;br /&gt;    	&lt;br /&gt;	      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;        &lt;span class="post_title"&gt;Приступаем к работе с Google+ API&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;  		&lt;br /&gt;  	&lt;/h2&gt;&lt;br /&gt;    &lt;div class="content"&gt;&lt;br /&gt;      &lt;img src="http://habrastorage.org/storage1/6093464e/056158f0/8e3d8893/dc86d4bd.png"/&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;h4&gt;Приветствуем разработчиков,&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Благодарим Вас за проявленный интерес к платформе Google+. Мы обещали, сообщать о всем интересном, что происходит. Ну, что же — пришло время…&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Сегодня мы запускаем первую часть Google + API. Это первый выпуск API ориентирован только на работу с публичными данными — API позволяет получать доступ к информации, которою пользователи раcшаривают с помощью Google+. Подробную информацию Вы можете получить в нашем &lt;a href="http://googleplusplatform.blogspot.com/"&gt;блоге&lt;/a&gt;.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name="habracut"&gt;&lt;/a&gt;Кроме того&lt;habracut/&gt;, мы рады представить &lt;a href="https://developers.google.com/+/"&gt;новый сайт для разработчиков Google+&lt;/a&gt;. Это будет место для ознакомления с &lt;a href="http://developers.google.com/+/policies"&gt;условиями нашей политики&lt;/a&gt;, &lt;a href="http://developers.google.com/+/terms"&gt;условий использования&lt;/a&gt;, &lt;a href="http://developers.google.com/+/discussions"&gt;обсуждений с другими разработчиками&lt;/a&gt;, &lt;a href="http://developers.google.com/+/api/"&gt;доступа к документации&lt;/a&gt;, а также инструменты, которые делают развитие на платформе Google+ проще и веселее, и, конечно, место, где будут появляться анонсы всех новых релизов.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Мы с нетерпением ждем, чтобы увидеть то, что вы разработаете с помощью API. Сегодня это лишь начало, и ваша работа будет влиять на то, что будет дальше, так что приступайте к работе.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Happy coding!&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt; — Команда платформы Google+&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;C почином товарищи, надеюсь все будет не так заморочно как с фэйсбуком.&lt;br /&gt;  	&lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;ul class="tags"&gt;&lt;br /&gt;	&lt;li &gt;&lt;a href="http://habrahabr.ru/tag/google/" rel="tag"&gt;google&lt;/a&gt;&lt;/li&gt;&lt;li &gt;, &lt;a href="http://habrahabr.ru/tag/google plus/" rel="tag"&gt;google plus&lt;/a&gt;&lt;/li&gt;&lt;li &gt;, &lt;a href="http://habrahabr.ru/tag/google plus api/" rel="tag"&gt;google plus api&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="infopanel" id="infopanel_post_128533"&gt;&lt;br /&gt;      &lt;br /&gt;        &lt;br /&gt;  			&lt;br /&gt;  				&lt;div class="voting   "&gt;&lt;br /&gt;  				&lt;br /&gt;  				    				  &lt;br /&gt;            &lt;br /&gt;  				    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;  				    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;  				  &lt;br /&gt;  				&lt;br /&gt;  				  &lt;div class="mark positive "&gt;&lt;br /&gt;  				    &lt;br /&gt;  					   &lt;span class="score" title="Всего 76: &amp;uarr;71 и &amp;darr;5"&gt;+66&lt;/span&gt;&lt;br /&gt;  					  &lt;br /&gt;  					    					  &lt;br /&gt;  					&lt;/div&gt;  &lt;br /&gt;  				&lt;br /&gt;  				&lt;/div&gt;&lt;br /&gt;  			&lt;br /&gt;			&lt;br /&gt;			&lt;div class="published"&gt;15 сентября 2011, 23:23&lt;/div&gt;&lt;br /&gt;						&lt;br /&gt;			&lt;div class="favorite"&gt;&lt;br /&gt;			  &lt;br /&gt;				&lt;br /&gt;				  &lt;a class="guest"  href="#" onclick="return false;" title="Только зарегистрированные пользователи могут добавлять посты в избранное"&gt;&lt;/a&gt;&lt;br /&gt;				&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="favs_count" title="Количество пользователей, добавивших пост в избранное"&gt;90&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;br /&gt;			&lt;div class="twitter"&gt;&lt;br /&gt;				&lt;a href="http://twitter.com/intent/tweet?text=http://habr.ru/p/128533/+%D0%9F%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%BF%D0%B0%D0%B5%D0%BC+%D0%BA+%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B5+%D1%81+Google%2B+API+%23habr" title="Опубликовать ссылку в Twitter" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;div class="vkontakte"&gt;&lt;br /&gt;				&lt;a href="http://vkontakte.ru/share.php?url=http://habrahabr.ru/blogs/google/128533" title="Опубликовать ссылку на во ВКонтакте" onclick="window.open(this.href, 'Опубликовать ссылку во Вконтакте', 'width=800,height=300'); return false"&gt;&lt;/a&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;div class="facebook"&gt;&lt;br /&gt;				&lt;a href="http://www.facebook.com/sharer.php?u=http://habrahabr.ru/blogs/google/128533" title="Опубликовать ссылку в Facebook" onclick="window.open(this.href, 'Опубликовать ссылку в Facebook', 'width=800,height=300'); return false"&gt;&lt;/a&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;br /&gt;			&lt;br /&gt;			&lt;div class="original-author"&gt;&lt;br /&gt;				&lt;a title="Автор оригинала: Google+ developers team" href="http://googleplusplatform.blogspot.com/"&gt;Google+ developers t&amp;hellip;&lt;/a&gt;&lt;br /&gt;			&lt;/div&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="author"&gt;&lt;br /&gt;					&lt;a title="Автор текста" href="http://habrahabr.ru/users/zoommy/" &gt;zoommy&lt;/a&gt;&lt;br /&gt;				&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;br /&gt;			&lt;br /&gt;			&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;    &lt;br /&gt;    &lt;br /&gt;		&lt;br /&gt;		&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;div class="comments_list " id="comments"&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2 class="title "&gt;комментарии (&lt;span id="comments_count"&gt;27&lt;/span&gt;)&lt;br /&gt;    &lt;br /&gt;  &lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250355" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250355"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250355" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 1: &amp;uarr;1 и &amp;darr;0"&gt;+1&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Sergiy/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/07/7d/db/23710/23710_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Sergiy/" class="username"&gt;Sergiy&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-15T23:35:52+04:00"&gt;15 сентября 2011, 23:35&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250355" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Вот обидно жеж! В N-ый раз подписываюсь на открытие новых сервисов, api или ещё чего, от Гугла и ни разу не пришло приглашение на открытие :( За что же ты меня так игнорируешь. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250355"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250360" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250360"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250360" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Sergiy/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/07/7d/db/23710/23710_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Sergiy/" class="username"&gt;Sergiy&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-15T23:36:39+04:00"&gt;15 сентября 2011, 23:36&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250360" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250355" data-id="4250360" data-parent_id="4250355" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    &lt;i&gt;OAuth 2.0 error: redirect_uri_mismatch&lt;br/&gt;&lt;br /&gt;The redirect URI in the request: &lt;a href="https://developers.google.com/setup"&gt;developers.google.com/setup&lt;/a&gt; did not match a registered redirect URI&lt;/i&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Ну вот тебе и авторизация :( &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250360"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250397" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250397"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250397" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/m1kola/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/30/0a/a1/16501/16501_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/m1kola/" class="username"&gt;m1kola&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:01:08+04:00"&gt;16 сентября 2011, 00:01&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250397" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250355" data-id="4250397" data-parent_id="4250355" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Они, похоже, не всем сразу присылают уведомления. Мне вот 5 минут назад только пришло. Возможно вам ещё придет. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250397"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250398" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250398"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250398" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Sergiy/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/07/7d/db/23710/23710_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Sergiy/" class="username"&gt;Sergiy&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:02:38+04:00"&gt;16 сентября 2011, 00:02&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250398" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250397" data-id="4250398" data-parent_id="4250397" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Да, вы правы, только что пришло! &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250398"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250469" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250469"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250469" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  negative"&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 2: &amp;uarr;0 и &amp;darr;2"&gt;–2&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Klu4nik/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/13/38/85/44178/44178_24x24.png" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Klu4nik/" class="username"&gt;Klu4nik&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:41:30+04:00"&gt;16 сентября 2011, 00:41&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250469" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250355" data-id="4250469" data-parent_id="4250355" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message bad bad2"&gt;&lt;br /&gt;    Как там… меня забанил Гугл?&lt;br/&gt;&lt;br /&gt;А вообще он многих игнорирует( &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250469"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250376" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250376"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250376" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 6: &amp;uarr;6 и &amp;darr;0"&gt;+6&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/nill/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/ec/cf/f3/33337/33337_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/nill/" class="username"&gt;nill&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-15T23:44:29+04:00"&gt;15 сентября 2011, 23:44&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250376" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Как то не богат их API (( &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250376"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250389" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250389"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250389" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 2: &amp;uarr;2 и &amp;darr;0"&gt;+2&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/zoommy/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/db/bd/da/47035/47035_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/zoommy/" class="username"&gt;zoommy&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-15T23:53:14+04:00"&gt;15 сентября 2011, 23:53&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250389" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250376" data-id="4250389" data-parent_id="4250376" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Они честно написали, что это только начало. Самое главное — теперь понятно, куда задавать вопросы и где ждать обновления из первоисточника. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250389"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250405" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250405"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250405" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  negative"&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 38: &amp;uarr;3 и &amp;darr;35"&gt;–32&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/un_tone/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/b3/31/13/47724/47724_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/un_tone/" class="username"&gt;un_tone&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:04:32+04:00"&gt;16 сентября 2011, 00:04&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250405" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message bad bad5"&gt;&lt;br /&gt;    Не нравится мне ваш Google+, и не мне одному, общий интерес к этой сети только падает. Нет никаких преимуществ в отличии от других, поэтому нет никакого смысла им пользоваться. «Круги» на деле оказалось бесполезной «фичей». Facebook и Twitter гораздо удобнее и полезнее сейчас. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250405"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250418" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250418"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250418" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 13: &amp;uarr;13 и &amp;darr;0"&gt;+13&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Mairon/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/ce/e2/21/36734/36734_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Mairon/" class="username"&gt;Mairon&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:12:44+04:00"&gt;16 сентября 2011, 00:12&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250418" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250405" data-id="4250418" data-parent_id="4250405" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Ну ради Бога, пожалуйста. Но не проецируйте ваши требования на всех. Мне, например, Google+ более важен, чем Facebook и ВКонтакте. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250418"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250422" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250422"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250422" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 7: &amp;uarr;7 и &amp;darr;0"&gt;+7&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/zoommy/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/db/bd/da/47035/47035_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/zoommy/" class="username"&gt;zoommy&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:13:29+04:00"&gt;16 сентября 2011, 00:13&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250422" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250405" data-id="4250422" data-parent_id="4250405" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Вспомните Твиттер с самого начала, а теперь Фэйсбук. Они тогда были также удобны и полезны? Я думаю нет. Для любого прогреса необходимо начало. Гугл активно интегрирует все свои сервисы — и с каждым днем становится функциональней и полезней. Вот например вчерашняя &lt;a href="http://googleblog.blogspot.com/2011/09/snippets-on-google-maps-if-you-can-see.html"&gt;интеграция с картами&lt;/a&gt; — лишнее тому доказательство.  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250422"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250494" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250494"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250494" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 7: &amp;uarr;5 и &amp;darr;2"&gt;+3&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Zigmar/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/a6/6a/a6/44826/44826_24x24.png" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Zigmar/" class="username"&gt;Zigmar&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:56:05+04:00"&gt;16 сентября 2011, 00:56&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250494" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250405" data-id="4250494" data-parent_id="4250405" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Троллим по-маленьку? &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250494"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4251244" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4251244"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4251244" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/DeMx/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/57/71/1d/1475/1475_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/DeMx/" class="username"&gt;DeMx&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T11:29:09+04:00"&gt;16 сентября 2011, 11:29&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4251244" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250405" data-id="4251244" data-parent_id="4250405" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Преимущество в комментариях. Заметки очень бурно комментируются. Порой завязывается интересная беседа, за которой можно наблюдать. Лично я так и пользуюсь, роюсь по чужим заметкам. :) &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4251244"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4251367" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4251367"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4251367" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/un_tone/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/b3/31/13/47724/47724_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/un_tone/" class="username"&gt;un_tone&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T12:02:33+04:00"&gt;16 сентября 2011, 12:02&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4251367" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4251244" data-id="4251367" data-parent_id="4251244" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Тоже так там время проводил, но потом что то все меньше стало нормальных постов и комменты реже стали писать. К тому же, все это и на других сайтах могу найти.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;@zoommy Интеграция всех сервисов — это наверное самый главный плюс G+. Когда все допилят, может и потянутся туда люди. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4251367"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250447" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250447"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250447" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 2: &amp;uarr;2 и &amp;darr;0"&gt;+2&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/pirelly/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/51/1e/ec/44312/44312_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/pirelly/" class="username"&gt;pirelly&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:25:09+04:00"&gt;16 сентября 2011, 00:25&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250447" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Думал что сегодня по раньше спать лягу, вот те на… &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250447"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250460" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250460"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250460" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 3: &amp;uarr;3 и &amp;darr;0"&gt;+3&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/coolurik/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/a2/2a/a8/46613/46613_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/coolurik/" class="username"&gt;coolurik&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:33:38+04:00"&gt;16 сентября 2011, 00:33&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250460" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Happy coding! :) &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250460"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250465" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250465"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250465" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 4: &amp;uarr;4 и &amp;darr;0"&gt;+4&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/SmartBye/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/i/avatars/stub-user-small.gif" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/SmartBye/" class="username"&gt;SmartBye&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:39:18+04:00"&gt;16 сентября 2011, 00:39&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250465" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Спасибо за качественный перевод документации по API &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250465"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250476" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250476"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250476" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 7: &amp;uarr;5 и &amp;darr;2"&gt;+3&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/ComodoHacker/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/i/avatars/stub-user-small.gif" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/ComodoHacker/" class="username"&gt;ComodoHacker&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T00:44:19+04:00"&gt;16 сентября 2011, 00:44&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250476" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Логотип напоминает атаку стаи бешеных сперматозоидов на яйцеклетку. :) &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250476"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250499" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250499"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250499" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 4: &amp;uarr;2 и &amp;darr;2"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/QtRoS/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/21/1b/b8/44917/44917_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/QtRoS/" class="username"&gt;QtRoS&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T01:00:15+04:00"&gt;16 сентября 2011, 01:00&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250499" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250476" data-id="4250499" data-parent_id="4250476" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Тссс, тут нельзя так шутить &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250499"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250984" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250984"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250984" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/nicolausYes/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/i/avatars/stub-user-small.gif" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/nicolausYes/" class="username"&gt;nicolausYes&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T10:08:10+04:00"&gt;16 сентября 2011, 10:08&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250984" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250476" data-id="4250984" data-parent_id="4250476" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Хм, а мне как раз наоборот — &lt;a href="http://www.youtube.com/watch?v=I9tWZB7OUSU"&gt;ссылка&lt;/a&gt; :) &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250984"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250675" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250675"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250675" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 11: &amp;uarr;9 и &amp;darr;2"&gt;+7&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/krestjaninoff/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/d5/5d/d2/42361/42361_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/krestjaninoff/" class="username"&gt;krestjaninoff&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T04:59:04+04:00"&gt;16 сентября 2011, 04:59&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250675" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Меня одного напрягает толпа неизвестных мне людей, постоянно добавляющих меня в свои круги? &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250675"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250786" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250786"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250786" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 2: &amp;uarr;2 и &amp;darr;0"&gt;+2&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/ZhuchoG/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/d8/83/3a/21696/21696_24x24.gif" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/ZhuchoG/" class="username"&gt;ZhuchoG&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T08:04:21+04:00"&gt;16 сентября 2011, 08:04&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250786" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250675" data-id="4250786" data-parent_id="4250675" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    И в твитере фоловеры напрягают? &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250786"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250820" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250820"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250820" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/krestjaninoff/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/d5/5d/d2/42361/42361_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/krestjaninoff/" class="username"&gt;krestjaninoff&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T08:38:37+04:00"&gt;16 сентября 2011, 08:38&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250820" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250786" data-id="4250820" data-parent_id="4250786" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Да, у меня закрытая учётка — читают только друзья ) &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250820"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250902" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250902"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250902" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark positive "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 1: &amp;uarr;1 и &amp;darr;0"&gt;+1&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/ivanych/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/ff/ff/fb/12673/12673_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/ivanych/" class="username"&gt;ivanych&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T09:31:35+04:00"&gt;16 сентября 2011, 09:31&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250902" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250675" data-id="4250902" data-parent_id="4250675" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    А какая Вам, собственно, разница? &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250902"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4250917" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4250917"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4250917" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/krestjaninoff/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/d5/5d/d2/42361/42361_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/krestjaninoff/" class="username"&gt;krestjaninoff&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T09:36:26+04:00"&gt;16 сентября 2011, 09:36&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4250917" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250902" data-id="4250917" data-parent_id="4250902" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    В общем то, никакой… просто напрягают ) &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4250917"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4251487" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4251487"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4251487" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/svarda/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/i/avatars/stub-user-small.gif" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/svarda/" class="username"&gt;svarda&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-16T12:34:37+04:00"&gt;16 сентября 2011, 12:34&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4251487" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4250917" data-id="4251487" data-parent_id="4250917" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Значит Вы — ЗНАМЕНИТОСТЬ! &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4251487"&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4254327" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4254327"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4254327" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Zigmar/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/a6/6a/a6/44826/44826_24x24.png" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/Zigmar/" class="username"&gt;Zigmar&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-17T17:52:55+04:00"&gt;17 сентября 2011, 17:52&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4254327" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      &lt;a href="#comment_4251487" data-id="4254327" data-parent_id="4251487" class="to_parent"&gt;&amp;uarr;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Угу, среди спамеров :-)  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4254327"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;br /&gt;&lt;div class="comment" id="comment_4257533" &gt;&lt;br /&gt;  &lt;div class="info    " rel="4257533"&gt;&lt;br /&gt;  	&lt;div class="folding-dot-holder"&gt;&lt;div class="folding-dot"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div id="voting_4257533" class="voting   "&gt;&lt;br /&gt;		    				  &lt;br /&gt;      &lt;br /&gt;		    &lt;span class="plus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		    &lt;span class="minus" title="Голосовать могут только зарегистрированные пользователи."&gt;&lt;/span&gt;&lt;br /&gt;		  &lt;br /&gt;		  &lt;div class="mark  "&gt;&lt;br /&gt;			   &lt;span class="score" title="Всего 0: &amp;uarr;0 и &amp;darr;0"&gt;0&lt;/span&gt; &lt;br /&gt;			&lt;/div&gt;  &lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/aalebedev/" class="avatar"&gt;&lt;img src="http://habrahabr.ru/media/thumb/d1/13/33/46712/46712_24x24.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://habrahabr.ru/users/aalebedev/" class="username"&gt;aalebedev&lt;/a&gt;&lt;br /&gt;    &lt;time datetime="2011-09-19T11:19:45+04:00"&gt;19 сентября 2011, 11:19&lt;/time&gt;&lt;br /&gt;    &lt;a href="#comment_4257533" class="link_to_comment"&gt;#&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;span class="to_chidren"&gt;&lt;/span&gt;&lt;br /&gt;    &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="message "&gt;&lt;br /&gt;    Я думаю, что API Google+ будет достойным конкурентом других соц сетей. Это вопрос времени. &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply"&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="reply_comments" id="reply_comments_4257533"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;br /&gt;&lt;br /&gt;  &lt;p class="for_users_only_msg"&gt;Только зарегистрированные пользователи могут оставлять комментарии. &lt;a href="http://habrahabr.ru/login/"&gt;Войдите&lt;/a&gt;, пожалуйста.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;      &lt;div id="edit_tags_form" class="hidden"&gt;&lt;br /&gt;        &lt;form action="#" method="post"&gt;&lt;br /&gt;          &lt;input type="hidden" name="action" value="add" /&gt;&lt;br /&gt;          &lt;input type="hidden" name="ti" value="0" /&gt;&lt;br /&gt;          &lt;input type="hidden" name="tt" value="0" /&gt;&lt;br /&gt;          &lt;label&gt;Пометьте топик понятными вам метками, если хотите&lt;/label&gt;&lt;br /&gt;          &lt;input type="text" name="tags_string" class="tags_string" /&gt;&lt;br /&gt;          &lt;div class="description"&gt;Метки лучше разделять запятой. Например: &lt;i&gt;общение, социальные сети, myspace.com, подростки, мердок&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;          &lt;input type="submit" value="Сохранить" class="submit" /&gt; или &lt;a href="#" class="close" onclick="return close_edit_tags()"&gt;закрыть&lt;/a&gt;&lt;br /&gt;        &lt;/form&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="sidebar_right"&gt;&lt;br /&gt;    &lt;br /&gt;	&lt;br /&gt;&lt;div class="block blog_info"&gt;&lt;br /&gt;  &lt;h1&gt;Информация о блоге&lt;/h1&gt;&lt;br /&gt;  &lt;div class="info"&gt;&lt;br /&gt;  &lt;br /&gt;    &lt;div class="stats"&gt;&lt;br /&gt;      &lt;div class="members_count" id="members_count"&gt;14675 читателей&lt;/div&gt;&lt;br /&gt;      &lt;div class="posts_count"&gt;1902 поста&lt;/div&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;		&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;div class="banner_240x400"&gt;&lt;br /&gt;		&lt;br /&gt;&lt;script&gt;&lt;br /&gt;// &lt;!--&lt;br /&gt;var mb_login = "HABRAHABR_INNER_240x400.HABRAHABR_INNER_240x400";&lt;br /&gt;var mb_options = "options=T";&lt;br /&gt;var mb_random = Math.round(Math.random() * 100000);&lt;br /&gt;document.write('&lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/'+mb_login+'?'+mb_random+'&amp;'+mb_options+'" width="240" height="400" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/'+mb_login+'?'+mb_random +'" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/'+mb_login+'?'+mb_random +'&amp;'+mb_options+'" alt="" width="240" height="400" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;');&lt;br /&gt;// --&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;noscript&gt;&lt;br /&gt;&lt;iframe src="http://pink.habralab.ru/cgi-bin/iframe/HABRAHABR_INNER_240x400.HABRAHABR_INNER_240x400?options=T" width="240" height="400" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"&gt;&lt;a href="http://pink.habralab.ru/cgi-bin/href/HABRAHABR_INNER_240x400.HABRAHABR_INNER_240x400" target="_top"&gt;&lt;img src="http://pink.habralab.ru/cgi-bin/banner/HABRAHABR_INNER_240x400.HABRAHABR_INNER_240x400?options=T" alt="" width="240" height="400" border="0" ismap="ismap"&gt;&lt;/a&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;&lt;div class="block daily_best_posts"&gt;&lt;br /&gt;  &lt;h1&gt;Лучшее &lt;sup&gt;за 24 часа&lt;/sup&gt; &amp;darr; &lt;/h1&gt;&lt;br /&gt;  &lt;div class="posts_list"&gt;&lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/company/bookmate/blog/120315/#gift"&gt;&lt;img src="/i/special/bookmate/big.png" alt="Bookmate" style="vertical-align:top;float:left;display:block;margin-right:10px;margin-top:4px;"  title="Каждый день автор лучшего поста получает подарок. Кликните на иконку, чтобы узнать больше." class="help-tip"/&gt;&lt;/a&gt;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/telecom/" class="blog_name"&gt;Телекомы&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/telecom/129943" class="post_name"&gt;В МТС решили запретить skype&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/hr/" class="blog_name"&gt;Human Resources&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/hr/129988" class="post_name"&gt;Плохой хороший работодатель&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/3d_graphics/" class="blog_name"&gt;Анимация и 3D графика&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/3d_graphics/129972" class="post_name"&gt;Первые главы «Основы Blender 2.6» готовы&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/freelance/" class="blog_name"&gt;Фриланс&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/freelance/129974" class="post_name"&gt;Работодатель кинул — ваши действия (прошу совета)?&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/php/" class="blog_name"&gt;PHP&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/php/129982" class="post_name"&gt;PHP под С-шным дебаггером: копаемся внутри Zend Engine&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/gdev/" class="blog_name"&gt;Game Development&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/gdev/129979" class="post_name"&gt;Еще один способ автоматизировать/тестировать игру&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/announcements/" class="blog_name"&gt;Хабрахабр — Анонсы&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/announcements/129986" class="post_name"&gt;Хабра-информер v.0.1&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/android_development/" class="blog_name"&gt;Разработка под Android&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/android_development/129994" class="post_name"&gt;Фрагментация?&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/hardware/" class="blog_name"&gt;Железо&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/hardware/129991" class="post_name"&gt;ZBOX nano VD01 — двухъядерный микро-ПК с поддержкой FullHD&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;      &lt;div class="post_item"&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/wordpress/" class="blog_name"&gt;Wordpress&lt;/a&gt; &amp;rarr;&lt;br /&gt;        &lt;a href="http://habrahabr.ru/blogs/wordpress/129998" class="post_name"&gt;10 практичных WordPress шорткодов&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;      &lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="all"&gt;&amp;laquo; &lt;a href="/top/"&gt;все лучшие&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="block similar_posts"&gt;&lt;br /&gt;&lt;br /&gt;	&lt;h1&gt;Похожие посты &amp;darr; &lt;/h1&gt;&lt;br /&gt;  &lt;div class="posts_list"&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;12.05.2011&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/google/"&gt;Google&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/google/119118/"&gt;Google Tasks API&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;11.05.2011&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/data_mining/"&gt;Data Mining&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/data_mining/119091/"&gt;Экономия бензина с помощью Google Prediction API&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;27.01.2011&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/context/"&gt;Контекстная реклама&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/context/112603/"&gt;Пример использования Google AdWords API&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;21.12.2010&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/webdev/"&gt;Веб-разработка&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/webdev/110460/"&gt;Google Maps API&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;20.05.2010&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/webdev/"&gt;Веб-разработка&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/webdev/94028/"&gt;Google представил API для кроссбраузерного подключения шрифтов&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;18.01.2010&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/personal/"&gt;Персональные блоги&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/personal/80777/"&gt;Google maps api. Построение маршрутов. Часть II&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;14.01.2010&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/open_source/"&gt;Open source&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/open_source/80787/"&gt;Google Visualization API for ASP.NET&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;26.05.2009&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/webdev/"&gt;Веб-разработка&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/webdev/60450/"&gt;Исправление ошибки в Google Maps API&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;22.10.2008&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/personal/"&gt;Персональные блоги&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/personal/42961/"&gt;Исследуем Google Reader API&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;    	&lt;div class="post_item"&gt;&lt;br /&gt;    				&lt;span class="when"&gt;10.09.2008&lt;/span&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="blog_name" href="http://habrahabr.ru/blogs/google/"&gt;Google&lt;/a&gt; &amp;rarr; &lt;br /&gt;    				&lt;a class="post_name" href="http://habrahabr.ru/blogs/google/39435/"&gt;Примеры Google Maps API №3: Делаем инфо-окно функциональным&lt;/a&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;  	&lt;br /&gt;  &lt;/div&gt;			&lt;br /&gt;&lt;/div&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="block live_broadcast_activity"&gt;&lt;br /&gt;  &lt;h1&gt;Прямой эфир &amp;darr; &lt;/h1&gt;&lt;br /&gt;  &lt;div class="posts_list"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/ShoUA/" class="user_name"&gt;ShoUA&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/pm/129676/#comment_4306698" class="post_name"&gt;Культ Карго в IT — троллим адептов scrum-а&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;56&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/BOOMik/" class="user_name"&gt;BOOMik&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/android_development/129994/#comment_4306697" class="post_name"&gt;Фрагментация?&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;81&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/eugenesv/" class="user_name"&gt;eugenesv&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/hosting/129899/#comment_4306695" class="post_name"&gt;Hetzner — возможная утечка данных&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;26&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/slakey/" class="user_name"&gt;slakey&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/hardware/129991/#comment_4306691" class="post_name"&gt;ZBOX nano VD01 — двухъядерный микро-ПК с поддержкой FullHD&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;37&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/deex/" class="user_name"&gt;deex&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/announcements/129986/#comment_4306690" class="post_name"&gt;Хабра-информер v.0.1&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;35&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Hest/" class="user_name"&gt;Hest&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/apple/129978/#comment_4306688" class="post_name"&gt;Ждем новый фильм о Стиве Джобсе?&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;20&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/brainunit/" class="user_name"&gt;brainunit&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/ui/128671/#comment_4306684" class="post_name"&gt;Обзор свежих материалов, август 2011&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;6&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/d_mon/" class="user_name"&gt;d_mon&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/wordpress/129998/#comment_4306676" class="post_name"&gt;10 практичных WordPress шорткодов&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;3&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/konkere/" class="user_name"&gt;konkere&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/social_networks/129985/#comment_4306670" class="post_name"&gt;Марк Цукерберг подписался на страницу Павла Дурова в Facebook&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;26&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Priest/" class="user_name"&gt;Priest&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/freelance/129974/#comment_4306669" class="post_name"&gt;Работодатель кинул — ваши действия (прошу совета)?&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;165&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/splka/" class="user_name"&gt;splka&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/apple/129839/#comment_4306667" class="post_name"&gt;Стив Джобс умер&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;641&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/egorinsk/" class="user_name"&gt;egorinsk&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/hr/129988/#comment_4306665" class="post_name"&gt;Плохой хороший работодатель&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;88&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Zaoza/" class="user_name"&gt;Zaoza&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/hardware/120108/#comment_4306659" class="post_name"&gt;PocketBook 602 Pro&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;4&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Juggernaut/" class="user_name"&gt;Juggernaut&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/branding/129963/#comment_4306656" class="post_name"&gt;PowerBook, Pentium и BlackBerry получили свои названия из одного источника&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;55&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/TimID/" class="user_name"&gt;TimID&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/blogs/copyright/129792/#comment_4306644" class="post_name"&gt;Метод ненаучного тыка: Samsung будет добиваться глобального запрета iPhone 4S&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;93&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;!--div class="all"&gt;&amp;laquo; &lt;a href="/live/"&gt;весь прямой эфир&lt;/a&gt;&lt;/div--&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&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="block best_company"&gt;&lt;br /&gt; &lt;br /&gt;		&lt;h1&gt;Компания дня &lt;img src="/i/bg_cicle_help.png" title="&lt;br /&gt;Компания, чей пост набрал максимальное количество баллов&lt;br&gt; &lt;br /&gt;среди всехопубликованных в корпоративных блогах постах за &lt;br&gt;&lt;br /&gt;прошедшие сутки. Учитываются посты, для которых истек срок голосования &lt;br&gt;(3 дня с момента публикации)." class="help-tip"&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;		&lt;div class="company_info"&gt;&lt;br /&gt;			&lt;div class="name"&gt;&lt;br /&gt;			 &lt;img class="favicon" src="/media/company/favicon/15/favicon_1527.ico" alt="Runa Capital" height="16" width="16" /&gt;&lt;br /&gt;			 &lt;a href="http://habrahabr.ru/company/runacap/" class="title"&gt;Runa Capital&lt;/a&gt;&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;			&lt;p&gt;Последний пост:&lt;br /&gt;				&lt;a href="http://habrahabr.ru/company/runacap/blog/129686/"&gt;$70M для Хабра&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="like"&gt;&lt;br /&gt;  			&lt;div id="fans_count"&gt;30 поклонников&lt;/div&gt;&lt;br /&gt;  			&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;&lt;div class="block qa_activity"&gt;&lt;br /&gt;  &lt;h1&gt;Q&amp;A &amp;darr; &lt;/h1&gt;&lt;br /&gt;  &lt;div class="posts_list"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/alexxxst/" class="user_name"&gt;alexxxst&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12210/#answer_52577" class="post_name"&gt;Покупка батареи для нетбука&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;4&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/bo2l/" class="user_name"&gt;bo2l&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12202/#comment_62703" class="post_name"&gt;Удобный рюкзак&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;13&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/wipe/" class="user_name"&gt;wipe&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/11251/#comment_62702" class="post_name"&gt;Инвайты&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;92&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/AndyRoss/" class="user_name"&gt;AndyRoss&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12212/#comment_62699" class="post_name"&gt;Необходим совет по поводу репозитария кода&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;2&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Jakeroid/" class="user_name"&gt;Jakeroid&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12211/#comment_62697" class="post_name"&gt;Как структруировать БД?&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;2&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/antivir/" class="user_name"&gt;antivir&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12187/#answer_52574" class="post_name"&gt;Зарубежный регистратор домена (.com)&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;7&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/afi/" class="user_name"&gt;afi&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12172/#comment_62696" class="post_name"&gt;Что делать с человеком, который не комментирует код?&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;10&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/z3apa3a/" class="user_name"&gt;z3apa3a&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12209/#comment_62695" class="post_name"&gt;VirtualBox и Shared Folders&lt;/a&gt;&lt;br /&gt;      &lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/NeoNs/" class="user_name"&gt;NeoNs&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12184/#answer_52572" class="post_name"&gt;Multiboot: Windows7 + Hackintosh&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;5&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Shedar/" class="user_name"&gt;Shedar&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12208/#comment_62692" class="post_name"&gt;Sphinx левые результаты в поиске&lt;/a&gt;&lt;br /&gt;      &lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/BusteR27/" class="user_name"&gt;BusteR27&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12201/#answer_52567" class="post_name"&gt;Хостинг MySQL&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;5&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/ForeverYoung/" class="user_name"&gt;ForeverYoung&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12193/#answer_52565" class="post_name"&gt;Дайте советов по поводу переноса блога&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;7&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/skorney/" class="user_name"&gt;skorney&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12197/#answer_52559" class="post_name"&gt;Средства и системы ведения online-документации&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;2&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/rPman/" class="user_name"&gt;rPman&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12198/#comment_62685" class="post_name"&gt;заказ дебитовой карточки в банке другой страны&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;4&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/maxBogovick/" class="user_name"&gt;maxBogovick&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12199/#comment_62681" class="post_name"&gt;JavaScript library в J2EE&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;3&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Anserchik/" class="user_name"&gt;Anserchik&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12113/#comment_62678" class="post_name"&gt;Требуется восстановить &amp;quot;геометрию&amp;quot; флешки&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;9&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Ocelot/" class="user_name"&gt;Ocelot&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12205/#answer_52551" class="post_name"&gt;Tor есть ли открытые gat'ы?&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;1&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/m00t/" class="user_name"&gt;m00t&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12132/#comment_62676" class="post_name"&gt;Как узнать какой именно PHP скрипт самый &amp;quot;тяжелый&amp;quot; для CPU?&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;4&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/Gular/" class="user_name"&gt;Gular&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12190/#comment_62668" class="post_name"&gt;SIP клиент под windows&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;3&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;div class="post_item"&gt;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/users/bondbig/" class="user_name"&gt;bondbig&lt;/a&gt; &amp;rarr;&lt;br /&gt;      &lt;a href="http://habrahabr.ru/qa/12195/#answer_52543" class="post_name"&gt;Кэширующий DNS прокси для Linux с возможностью менять TTL&lt;/a&gt;&lt;br /&gt;      &lt;span class="count"&gt;4&lt;/span&gt;&lt;br /&gt;    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="all"&gt;&amp;laquo; &lt;a href="/qa/"&gt;все вопросы&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;  &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;br /&gt;	&lt;br /&gt;	&lt;div class="block category_blogs"&gt;&lt;br /&gt;		&lt;h1&gt;Стартапы и компании ↓&lt;/h1&gt;&lt;br /&gt;		&lt;br /&gt;		&lt;div class="blogs_list"&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/pixar/" &gt;Pixar&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/qt_software/" &gt;Qt Software&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/yandex/" &gt;Яндекс&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/apple/" &gt;Apple&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/nokia/" &gt;Nokia&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/adobe/" &gt;Adobe&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/cisconetworks/" &gt;Cisco&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/Sun/" &gt;Sun Microsystems&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/artlebedev/" &gt;Студия Артемия Лебедева&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;        &lt;div class="blog_item"&gt;				&lt;br /&gt;				  &lt;div class="title"&gt;&lt;br /&gt;				  	&lt;a href="/blogs/facebook/" &gt;Facebook&lt;/a&gt;&lt;br /&gt;				  &lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;div class="all"&gt;&amp;laquo; &lt;a href="/bloglist/startups-and-companies/"&gt;все  блоги&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;  &lt;/div&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="block similar_events"&gt;&lt;br /&gt;  &lt;h1&gt;Ближайшие события&lt;/h1&gt;&lt;br /&gt;  &lt;div class="events"&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;div class="event"&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="date"&gt;&lt;br /&gt;				&lt;div class="dayname"&gt;пн&lt;/div&gt;&lt;br /&gt;				&lt;div class="day"&gt;10&lt;/div&gt;&lt;br /&gt;				&lt;div class="month"&gt;октября&lt;/div&gt;				&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="title"&gt;&lt;br /&gt;			 &lt;a href="/events/4/"&gt;Google Developer Day 2011&lt;/a&gt;			 &lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;div class="event"&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="date"&gt;&lt;br /&gt;				&lt;div class="dayname"&gt;вт&lt;/div&gt;&lt;br /&gt;				&lt;div class="day"&gt;11&lt;/div&gt;&lt;br /&gt;				&lt;div class="month"&gt;октября&lt;/div&gt;				&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="title"&gt;&lt;br /&gt;			 &lt;a href="/events/135/"&gt;Конференция CloudConf Ural 2011&lt;/a&gt;			 &lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;div class="event"&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="date"&gt;&lt;br /&gt;				&lt;div class="dayname"&gt;вт&lt;/div&gt;&lt;br /&gt;				&lt;div class="day"&gt;11&lt;/div&gt;&lt;br /&gt;				&lt;div class="month"&gt;октября&lt;/div&gt;				&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="title"&gt;&lt;br /&gt;			 &lt;a href="/events/184/"&gt;Семинар. Практика построения систем видеоконференцсвязи&lt;/a&gt;			 &lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;div class="event"&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="date"&gt;&lt;br /&gt;				&lt;div class="dayname"&gt;ср&lt;/div&gt;&lt;br /&gt;				&lt;div class="day"&gt;12&lt;/div&gt;&lt;br /&gt;				&lt;div class="month"&gt;октября&lt;/div&gt;				&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="title"&gt;&lt;br /&gt;			 &lt;a href="/events/93/"&gt;Формула сайта: Как начать свой бизнес в Интернете&lt;/a&gt;			 &lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;    &lt;div class="event"&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="date"&gt;&lt;br /&gt;				&lt;div class="dayname"&gt;ср&lt;/div&gt;&lt;br /&gt;				&lt;div class="day"&gt;12&lt;/div&gt;&lt;br /&gt;				&lt;div class="month"&gt;октября&lt;/div&gt;				&lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;div class="title"&gt;&lt;br /&gt;			 &lt;a href="/events/175/"&gt;Конференция для разработчиков мобильных приложений на платформе bada&lt;/a&gt;			 &lt;br /&gt;			&lt;/div&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;		&lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="all"&gt;&amp;laquo; &lt;a href="/events/"&gt;все события&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;&lt;div class="block last_links"&gt;&lt;br /&gt;  &lt;h1&gt;Ссылки &amp;darr; &lt;/h1&gt;&lt;br /&gt;  &lt;div class="links"&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126944"&gt;Как убрать автооткрытие всех незавершенных программ при перезагрузке в Mac OS Lion&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126944/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;gerasimchuk.blogspot.com/2011/...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126943"&gt;Что нужно знать новичку в Linux: управление процессами&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126943/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;freaksidea.com/linux/show-36-c...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126942"&gt;Разработка экрана «Пуск»&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126942/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;blogs.msdn.com/b/b8_ru/archive...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126941"&gt;Отключение swap на Mac OS Lion&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126941/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;gerasimchuk.blogspot.com/2011/...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126940"&gt;Вышел Rails 3.1.1&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126940/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;weblog.rubyonrails.org/2011/10...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126938"&gt;Что нужно знать новичку в Linux: права доступа&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126938/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;freaksidea.com/linux/show-35-c...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126937"&gt;Реализация электронной игры «Тайны океана» для планшета&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126937/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;forum.kpda.ru/index.php?topic=645&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126936"&gt;Реклама столетней давности&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126936/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;www.vintageadbrowser.com/&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126935"&gt;Современные чипы – взгляд изнутри&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126935/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;nanometer.ru/2011/09/22/nanote...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;		&lt;div class="link"&gt;&lt;br /&gt;		  &lt;a href="/links/go/126934"&gt;Образование в сфере ИТ в столице Канады&lt;/a&gt;&lt;br /&gt;		  &lt;a href="/links/126934/#comments" class="count"&gt;0&lt;/a&gt;&lt;br /&gt;		  &lt;br&gt;&lt;small&gt;yvi.kz/community/%D0%9E%D0%B1%...&lt;/small&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;/div&gt;&lt;br /&gt;	&lt;div class="all"&gt;&amp;laquo; &lt;a href="/links/"&gt;все ссылки&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;  &lt;/div&gt;&lt;br /&gt;  &lt;div class="clear"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;		  &lt;div id="footer"&gt;&lt;br /&gt;      &lt;br /&gt;			&lt;br /&gt;			&lt;dl&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/login/"&gt;Войти&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/register/"&gt;Регистрация&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;			&lt;/dl&gt;&lt;br /&gt;			&lt;br /&gt;			&lt;dl&gt;&lt;br /&gt;				&lt;dt&gt;Разделы&lt;/dt&gt;&lt;br /&gt;			  &lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/qa/"&gt;Q&amp;A&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/events/"&gt;События&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/links/"&gt;Ссылки&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/job/"&gt;Работа&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/bloglist/"&gt;Блоги&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/companies/"&gt;Компании&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/people/"&gt;Люди&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/top/"&gt;Лучшие&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;			&lt;/dl&gt;&lt;br /&gt;			&lt;dl&gt;&lt;br /&gt;				&lt;dt&gt;Блоги&lt;/dt&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/"&gt;Все&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/blogs/"&gt;Тематические&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/corporative/"&gt;Корпоративные&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;!--dd&gt;&lt;a href="http://habrahabr.ru/personal/"&gt;Личные&lt;/a&gt;&lt;/dd--&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/sandbox/"&gt;Песочница&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;			&lt;/dl&gt;&lt;br /&gt;			&lt;dl&gt;&lt;br /&gt;				&lt;dt&gt;Инфо&lt;/dt&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/about/"&gt;О сайте&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/help/rules/"&gt;Правила&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/help/"&gt;Помощь&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/agreement/"&gt;Соглашение&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/stats/"&gt;Статистика&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;			&lt;/dl&gt;&lt;br /&gt;			&lt;dl&gt;&lt;br /&gt;				&lt;dt&gt;Услуги&lt;/dt&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/advertising/"&gt;Реклама&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/advertising/corporate/"&gt;Корпоративные пакеты&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;				&lt;dd&gt;&lt;a href="http://habrahabr.ru/info/advertising/workshops/"&gt;Семинары&lt;/a&gt;&lt;/dd&gt;&lt;br /&gt;			&lt;/dl&gt;&lt;br /&gt;      &lt;div class="copyright"&gt;&lt;br /&gt;    		&lt;a class="footer_logo" href="http://thematicmedia.ru/"&gt;Тематические Медиа&lt;/a&gt;&lt;br /&gt;    		&lt;div class="about"&gt;&lt;br /&gt;    			© 2006&amp;#8211;2011&lt;br&gt;&lt;br /&gt;    			«&lt;a href="http://www.thematicmedia.ru/"&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="mailto:support@habrahabr.ru" title="адрес службы поддержки пользователей"&gt;support@habrahabr.ru&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;  				&lt;a href="http://m.habrahabr.ru"&gt;Мобильная версия&lt;/a&gt;&lt;br /&gt;  			&lt;br /&gt;			  &lt;/div&gt;&lt;br /&gt;      &lt;/div&gt;&lt;br /&gt;	&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;		&lt;/div&gt;&lt;br /&gt;	 	&lt;br /&gt;		&lt;br /&gt;    &lt;br /&gt;		&lt;br /&gt;    &lt;script type="text/javascript"&gt;&lt;br /&gt;      $(document).ready(function(){&lt;br /&gt;        &lt;br /&gt;        // настройки всплывающих уведомлений&lt;br /&gt;        $.jGrowl.defaults.closerTemplate = '&lt;div&gt;Закрыть все уведомления&lt;/div&gt;';         &lt;br /&gt;        &lt;br /&gt;        // настройки тултипов&lt;br /&gt;        $(".help-tip").tipTip({maxWidth: "auto", edgeOffset: 10});  &lt;br /&gt;        &lt;br /&gt;      });&lt;br /&gt;      // global vars&lt;br /&gt;      var g_base_url = 'habrahabr.ru';&lt;br /&gt;      var g_show_xpanel = false;&lt;br /&gt;      var g_base_fullurl = 'http://habrahabr.ru/';&lt;br /&gt;      var g_is_guest = false;&lt;br /&gt;       &lt;br /&gt;    &lt;/script&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;	/*&lt;![CDATA[*/&lt;br /&gt;	var ga = document.createElement('script');&lt;br /&gt;		ga.setAttribute('async', 'true');&lt;br /&gt;		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';&lt;br /&gt;	/* ]]&gt;*/&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;	var _gaq = _gaq || [];&lt;br /&gt;	_gaq.push(&lt;br /&gt;	    ['_setAccount', 'UA-726094-1'],&lt;br /&gt;	    ['_setDomainName', '.habrahabr.ru'],&lt;br /&gt;	    ["_addOrganic", "mail.ru", "q"],&lt;br /&gt;	    ["_addOrganic","rambler.ru", "words"],&lt;br /&gt;	    ["_addOrganic","nigma.ru", "s"],&lt;br /&gt;	    ["_addOrganic","blogs.yandex.ru", "text"],&lt;br /&gt;	    ["_addOrganic","webalta.ru", "q"],&lt;br /&gt;	    ["_addOrganic","aport.ru", "r"],&lt;br /&gt;	    ["_addOrganic","akavita.by", "z"],&lt;br /&gt;	    ["_addOrganic","meta.ua", "q"],&lt;br /&gt;	    ["_addOrganic","bigmir.net", "q"],&lt;br /&gt;	    ["_addOrganic","tut.by", "query"],&lt;br /&gt;	    ["_addOrganic","all.by", "query"],&lt;br /&gt;	    ["_addOrganic","i.ua", "q"],&lt;br /&gt;	    ["_addOrganic","online.ua", "q"],&lt;br /&gt;	    ["_addOrganic","a.ua", "s"],&lt;br /&gt;	    ["_addOrganic","ukr.net", "search_query"],&lt;br /&gt;	    ["_addOrganic","search.com.ua", "q"],&lt;br /&gt;	    ["_addOrganic","search.ua", "query"],&lt;br /&gt;	    ["_addOrganic","poisk.ru", "text"],&lt;br /&gt;	    ["_addOrganic","km.ru", "sq"],&lt;br /&gt;	    ["_addOrganic","liveinternet.ru", "ask"],&lt;br /&gt;	    ["_addOrganic","gogo.ru", "q"],&lt;br /&gt;	    ["_addOrganic","gde.ru", "keywords"],&lt;br /&gt;	    ["_addOrganic","quintura.ru", "request"],&lt;br /&gt;	    ['_trackPageview']&lt;br /&gt;	);&lt;br /&gt;	document.documentElement.firstChild.appendChild(ga);&lt;br /&gt;&lt;/script&gt;	&lt;br /&gt;		&lt;br /&gt;		&lt;br /&gt;	&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;"&gt;Хабрахабр - Google &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/128533/"&gt; [Перевод] Приступаем к работе с Google+ API&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-3898334144612005226?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6euoBETg9489U5Blx3RL6zWBa58/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6euoBETg9489U5Blx3RL6zWBa58/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6euoBETg9489U5Blx3RL6zWBa58/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6euoBETg9489U5Blx3RL6zWBa58/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/5mLANWxvmKY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/3898334144612005226/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/10/google-api.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3898334144612005226?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3898334144612005226?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/5mLANWxvmKY/google-api.html" title="[Перевод] Приступаем к работе с Google+ API" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/10/google-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8EQn8yeCp7ImA9WhdUE0Q.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-6877763654127647665</id><published>2011-09-30T08:00:00.001-07:00</published><updated>2011-09-30T08:00:03.190-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-30T08:00:03.190-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="энергосбережение" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>Google показал, сколько энергии потребляют облачные сервисы компании</title><content type="html">&lt;br /&gt;	&lt;img src="http://habrastorage.org/storage1/97de6dc9/1a45f757/89311f18/0f50c25b.jpg"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Корпорация Google решила показать, насколько «зелеными» являются облачные сервисы компании. Для этого были представлены наглядные примеры энергопотребления из расчета на одного пользователя. Понятное дело, что такой популистский подход может быть не совсем объективным, но все равно, информация может оказаться интересной для многих представителей хабрасообщества.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Так вот, представители компании показали, сколько энергии потребляет поисковый сервис Google, YouTube, Gmail и другие сервисы. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Общее количество энергии, которое тратит компания на все свои сервисы из расчета на одного пользователя, меньше, чем количество энергии, потребляемое лампой накаливания в течение трех часов (собственно, в оригинале говорилось о «включенном свете, оставленном на три часа» — вероятно, речь все же идет об одной лампочке). Кроме того, представители корпорации напоминают, что Google была признана carbon-neutral компанией, нейтрализующей выброс углерода в атмосферу различными путями (как технологическими, так и компенсационными).&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Что касается поискового сервиса корпорации, то на обработку 100 поисковых запросов, сделанных пользователем, требуется столько же энергии, сколько необходимо для работы 60-ваттной лампы накаливания в течение 28 минут.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Три дня непрерывной работы потокового видео, одного ролика, требует энергии столько же, сколько тратится на создание одного DVD диска.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Год работы Gmail из расчета на одного пользователя требует меньше энергии, чем необходимо на то, чтобы выпить бутылку вина, написать сообщение, запаковать его в бутылку и выбросить в океан.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Для того, чтобы добиться значительных успехов в вопросе энергосбережения, компания работала в этом направлении более 10 лет. Как выразился один из руководителей компании, энергосбережение было навязчивой идеей для компании все эти 10 лет. В результате были созданы сервера и дата-центры с низким уровнем потребления энергии. Один дата-центр корпорации Google потребляет в два раза меньше энергии, чем обычный дата-центр.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Корпорация инвестирует средства в «зеленые» технологии и новые типы энергостанций. Инвестиции компании уже помогли получить 1,7 гигаватт «зеленой» энергии. Столько энергии требуется на снабжение 350 тысяч домохозяйств. Кроме того, это больше, чем требуется на обеспечение работы всех дата-центров компании.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Via &lt;a href="http://news.yahoo.com/google-gives-glimpse-cloud-energy-223715732.html;_ylt=AtfvrXp2m3m3q30bfP7OXL_6VbIF;_ylu=X3oDMTQ2ZjYxMjZkBG1pdANUb3BTdG9yeSBUZWNoU0YgSW50ZXJuZXRTU0YEcGtnAzUwZDZmM2E0LWJlYjUtM2Q3MC05NGFhLWEyYjY4NWZhZjQwZQRwb3MDMTEEc2VjA3RvcF9zdG9yeQR2ZXIDM2I0MDk5NDAtZGE2Yi0xMWUwLWJlZjItZmIyYjYzMTRkN2Ix;_ylg=X3oDMTIxZGQzZGoyBGludGwDdXMEbGFuZwNlbi11cwRwc3RhaWQDBHBzdGNhdAN0ZWNofGludGVybmV0BHB0A3NlY3Rpb25zBHRlc3QD;_ylv=3"&gt;Yahoo&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/"&gt;Хабрахабр - Google &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/128068/"&gt; Google показал, сколько энергии потребляют облачные сервисы компании&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-6877763654127647665?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qzrdz3GCfUuqMrQaYSuSQXTECJ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzrdz3GCfUuqMrQaYSuSQXTECJ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qzrdz3GCfUuqMrQaYSuSQXTECJ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qzrdz3GCfUuqMrQaYSuSQXTECJ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/xhGdes4UE5w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/6877763654127647665/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/google.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/6877763654127647665?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/6877763654127647665?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/xhGdes4UE5w/google.html" title="Google показал, сколько энергии потребляют облачные сервисы компании" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EEQXw_fip7ImA9WhdWFkQ.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-4542817020456124252</id><published>2011-09-10T16:00:00.001-07:00</published><updated>2011-09-10T16:00:00.246-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-10T16:00:00.246-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Ненормальное программирование" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle sql" /><category scheme="http://www.blogger.com/atom/ns#" term="ненормальное программирование" /><category scheme="http://www.blogger.com/atom/ns#" term="it-планета" /><category scheme="http://www.blogger.com/atom/ns#" term="it-planet" /><category scheme="http://www.blogger.com/atom/ns#" term="задача о восьми ферзях" /><title>Задача о восьми Ферзях на Oracle SQL</title><content type="html">&lt;br /&gt;	Привет, Хабролюди!&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В мае месяце в Москве прошла олимпиада IT-Планета, одной из номинаций которой было «Программирование СУБД Oracle». Задания были интересными и сложными, и хотелось бы поделиться решением некоторых из них. &lt;br/&gt;&lt;br /&gt;Первая задача, о которой я расскажу — задача о восьми ферзях, решить ее было необходимо используя для этого только SQL и ничего более, сначала я эту задачу просто вычеркнул из списка тех, которые собираюсь решать, но в последний час все-таки ее решил, что принесло мне первое место и диплом из рук министра связи и массовых коммуникаций РФ.&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Итак, задача озвучена, ответ необходимо представить в виде:&lt;br/&gt;&lt;br /&gt;&amp;nbsp;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;H&lt;br/&gt;&lt;br /&gt;---&amp;nbsp;&amp;nbsp;---&amp;nbsp;&amp;nbsp;---&amp;nbsp;&amp;nbsp;---&amp;nbsp;&amp;nbsp;---&amp;nbsp;&amp;nbsp;---&amp;nbsp;&amp;nbsp;---&amp;nbsp;&amp;nbsp;---&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;a7&amp;nbsp;&amp;nbsp;&amp;nbsp;b4&amp;nbsp;&amp;nbsp;&amp;nbsp;c2&amp;nbsp;&amp;nbsp;&amp;nbsp;d8&amp;nbsp;&amp;nbsp;&amp;nbsp;e6&amp;nbsp;&amp;nbsp;&amp;nbsp;f1&amp;nbsp;&amp;nbsp;&amp;nbsp;g3&amp;nbsp;&amp;nbsp;&amp;nbsp;h5&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Как же такое решается:&lt;br/&gt;&lt;br /&gt;Первое, что необходимо сделать – создать запрос, который воспроизведет шахматную доску с расставленными ферзями, после чего можно исключать неверные решения.&lt;br/&gt;&lt;br /&gt;Средствами иерархических запросов Oracle (а конкретно connect by level), создаем запрос, который выдает числа от 1 до 8:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; a &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Это возможные позиции Ферзя на A (A1, A2, …)&lt;br/&gt;&lt;br /&gt;Делаем cross join восьми таких запросов, в каждом следующем меняя букву для наглядности:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; a &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; b &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; c &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; d &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; e &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; f &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; g &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; h &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Построенный таким образом запрос выдает 16777216 вариантов, т.е. варианты, когда на одной вертикали расположено 2 ферзя уже нет. Теперь нужно исключить 2 ферзя на одной горизонтали и на диагоналях.&lt;br/&gt;&lt;br /&gt;Решая задачу, вначале я убрал все с вертикалей:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#A31515"&gt;'a'&lt;/font&gt; || a A, &lt;font color="#A31515"&gt;'b'&lt;/font&gt; || b B, &lt;font color="#A31515"&gt;'c'&lt;/font&gt; || c C, &lt;font color="#A31515"&gt;'d'&lt;/font&gt; || d D, &lt;font color="#A31515"&gt;'e'&lt;/font&gt; || e E, &lt;font color="#A31515"&gt;'f'&lt;/font&gt; || f F, &lt;font color="#A31515"&gt;'g'&lt;/font&gt; || g G, &lt;font color="#A31515"&gt;'h'&lt;/font&gt; || h H&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; a, b, c, d, e, f, g, h ,&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; a = b &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = c &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = d &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = h &lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;then&lt;/font&gt; 0 &lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; b = c &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = d &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = h &lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; c = d &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = h&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; d = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = h &lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; e = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = h&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; f = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; f = h &lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; g = h &lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; 1&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt; chk&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; a &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; b &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; c &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; d &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; e &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; f &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; g &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; h &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt; chk = 1&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Теперь остался последний этап, на котором я убрал все с диагоналей:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#A31515"&gt;'a'&lt;/font&gt; || a A, &lt;font color="#A31515"&gt;'b'&lt;/font&gt; || b B, &lt;font color="#A31515"&gt;'c'&lt;/font&gt; || c C, &lt;font color="#A31515"&gt;'d'&lt;/font&gt; || d D, &lt;font color="#A31515"&gt;'e'&lt;/font&gt; || e E, &lt;font color="#A31515"&gt;'f'&lt;/font&gt; || f F, &lt;font color="#A31515"&gt;'g'&lt;/font&gt; || g G, &lt;font color="#A31515"&gt;'h'&lt;/font&gt; || h H&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt; a, b, c, d, e, f, g, h ,&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; a = b &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = b - 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = b + 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = c &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = c - 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = c + 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = d &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = d - 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = d + 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = e - 4 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = e + 4 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = f - 5 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = f + 5 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = g - 6 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = g&amp;nbsp;+ 6 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = h &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = h - 7 &lt;font color="#0000ff"&gt;or&lt;/font&gt; a = h + 7&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;then&lt;/font&gt; 0 &lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; b = c &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = c - 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = c + 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = d &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = d - 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = d + 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = e - 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = e + 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = f - 4 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = f + 4 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = g - 5 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = g&amp;nbsp;+ 5 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = h &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = h - 6 &lt;font color="#0000ff"&gt;or&lt;/font&gt; b = h + 6&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; c = d &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = d - 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = d&amp;nbsp;+ 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = e - 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = e + 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = f - 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = f + 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = g - 4 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = g + 4 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = h &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = h - 5 &lt;font color="#0000ff"&gt;or&lt;/font&gt; c = h + 5&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; d = e &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = e - 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = e + 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = f - 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = f + 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = g - 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = g + 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = h &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = h - 4 &lt;font color="#0000ff"&gt;or&lt;/font&gt; d = h + 4&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; e = f &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = f - 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = f + 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = g - 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = g + 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = h &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = h - 3 &lt;font color="#0000ff"&gt;or&lt;/font&gt; e = h + 3&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; f = g &lt;font color="#0000ff"&gt;or&lt;/font&gt; f = g - 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; f = g + 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; f = h &lt;font color="#0000ff"&gt;or&lt;/font&gt; f = h - 2 &lt;font color="#0000ff"&gt;or&lt;/font&gt; f = h + 2&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; &lt;font color="#0000ff"&gt;case&lt;/font&gt; &lt;font color="#0000ff"&gt;when&lt;/font&gt; g = h &lt;font color="#0000ff"&gt;or&lt;/font&gt; g = h - 1 &lt;font color="#0000ff"&gt;or&lt;/font&gt; g = h + 1&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;then&lt;/font&gt; 0&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;else&lt;/font&gt; 1&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="#0000ff"&gt;end&lt;/font&gt; chk&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; a &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; b &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; c &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; d &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; e &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; f &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; g &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;cross&lt;/font&gt; &lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;(&lt;font color="#0000ff"&gt;select&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; h &lt;font color="#0000ff"&gt;from&lt;/font&gt; dual &lt;font color="#0000ff"&gt;connect&lt;/font&gt; &lt;font color="#0000ff"&gt;by&lt;/font&gt; &lt;font color="#0000ff"&gt;level&lt;/font&gt; &amp;lt;= 8)&lt;br/&gt;&lt;br /&gt;)&lt;br/&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt; chk = 1&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Убирание лишнего с диагоналей не слишком изящно, можно было использовать abs, но в спешке олимпиады это не пришло мне в голову, тем более что ответ я отправлял за 2 минуты до конца времени. &lt;br/&gt;&lt;br /&gt;Данное решение абсолютно законно и дает все 92 решения данной задачи.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;UPD: Перенесено в «Ненормальное программирование»&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/crazydev/"&gt;Хабрахабр - Ненормальное программирование &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/crazydev/128137/"&gt; Задача о восьми Ферзях на Oracle SQL&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-4542817020456124252?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/btvFbpdVIcZXiNRQfg4sNW8Dtac/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/btvFbpdVIcZXiNRQfg4sNW8Dtac/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/btvFbpdVIcZXiNRQfg4sNW8Dtac/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/btvFbpdVIcZXiNRQfg4sNW8Dtac/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/DnBNGcp-oHU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/4542817020456124252/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/oracle-sql.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/4542817020456124252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/4542817020456124252?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/DnBNGcp-oHU/oracle-sql.html" title="Задача о восьми Ферзях на Oracle SQL" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/oracle-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8EQXs_cCp7ImA9WhdWFkQ.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-607011736452610594</id><published>2011-09-10T15:30:00.001-07:00</published><updated>2011-09-10T15:30:00.548-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-10T15:30:00.548-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="фальшивый почтовый сервер" /><category scheme="http://www.blogger.com/atom/ns#" term="промышленный шпионаж" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Информационная безопасность" /><category scheme="http://www.blogger.com/atom/ns#" term="Man in the MailBox" /><category scheme="http://www.blogger.com/atom/ns#" term="тайпосквоттинг" /><category scheme="http://www.blogger.com/atom/ns#" term="почтовый трафик" /><category scheme="http://www.blogger.com/atom/ns#" term="поддомен" /><title>«Тайпосквоттеры» собрали 20 ГБ чужой переписки</title><content type="html">&lt;br /&gt;	Два исследователя из &lt;a href="http://godaigroup.net/"&gt;Godai Group&lt;/a&gt; решили поставить эксперимент и проверить, сколько приватной информации можно собрать, если регистрировать домены с опечатками и поднимать на них почтовые серверы. Оказалось, что этот приём на редкость эффективен. На 30 «фальшивых» доменах за шесть месяцев скопилось &lt;a href="http://godaigroup.net/publications/doppelganger-domains/"&gt;20 ГБ писем&lt;/a&gt; (около 120&amp;nbsp;000), отправленных компаниям из списка Fortune 500. Примерно 1% из этих писем содержат конфиденциальную информацию — логины и пароли сотрудников, информацию по сделкам, внутренним расследованиям и т.д.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;120 тысяч писем — неплохой результат, учитывая пассивность метода сбора и абсолютную секретность. За полгода никто ничего не заметил.&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Исследователи выяснили, что возможность зарегистрировать домен-двойник без точки существует для 30% крупных компаний, учитывая их поддомены, по которым адресуется почта. У некоторых корпораций есть по 60 поддоменов, то есть они особенно уязвимы. Если в компании идёт большой поток писем по внутренней почте, то некоторые наверняка попадут по неправильному адресу. Например, на @seibm.com вместо @se.ibm.com (шведское подразделение IBM) или @ausintel.com вместо @aus.intel.com.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;За шесть месяцев на 30 доменах было получено около 120&amp;nbsp;000 писем. Поиск по характерным ключевым словам дал такой результат:&lt;br/&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;b&gt;Ключевое слово&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;b&gt;Количество писем&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Investigation&lt;/td&gt;&lt;br /&gt;&lt;td&gt;350&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Secret&lt;/td&gt;&lt;br /&gt;&lt;td&gt;425&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Unclassified&lt;/td&gt;&lt;br /&gt;&lt;td&gt;106&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Credit Card&lt;/td&gt;&lt;br /&gt;&lt;td&gt;402&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Private&lt;/td&gt;&lt;br /&gt;&lt;td&gt;394&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;UserID&lt;/td&gt;&lt;br /&gt;&lt;td&gt;225&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Password&lt;/td&gt;&lt;br /&gt;&lt;td&gt;405&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Login&lt;/td&gt;&lt;br /&gt;&lt;td&gt;495&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Confidentiality&lt;/td&gt;&lt;br /&gt;&lt;td&gt;374&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;VPN&lt;/td&gt;&lt;br /&gt;&lt;td&gt;75&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Router&lt;/td&gt;&lt;br /&gt;&lt;td&gt;163&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Contract&lt;/td&gt;&lt;br /&gt;&lt;td&gt;417&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Affidavits&lt;/td&gt;&lt;br /&gt;&lt;td&gt;34&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Invoice&lt;/td&gt;&lt;br /&gt;&lt;td&gt;323&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Resume&lt;/td&gt;&lt;br /&gt;&lt;td&gt;275&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;Вполне возможно, что сбор чужой корпоративной почты таким образом уже осуществляется. Исследователи обнаружили, что ряд тайпосквоттерских доменов для некоторых крупнейших компаний уже зарегистрировано китайцами или на подозрительные email'ы. Это вполне может быть частью системы промышленного шпионажа.&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;b&gt;Цель&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;b&gt;Домен-двойник&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;b&gt;Почтовый адрес владельца&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;adp.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;cnadp.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;adp@vip.163.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;cisco.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;kscisco.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;domainadm@hichina.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;dell.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;chndell.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;gdguy@163.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;dupont.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;sydupont.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;syxxhw@163.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;gm.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;ucgm.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;zydoor@126.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;hp.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;chehp.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;59031894@qq.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;ibm.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;caibm.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;604732486@qq.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;ibm.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;seibm.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;fjjclaw@263.net&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;intel.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;ausintel.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;nheras@gmail.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;itt.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;cnitt.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;dulingqun@sina.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;kohls.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;emailkohls.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;bridgeportltd@gmail.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;manpower.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;demanpower.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;tzstudent@163.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;mcd.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;cnmcd.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;617388068@qq.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;yahoo.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;nayahoo.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;xxxxxx_vip@yahoo.com.cn&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;unisys.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;caunisys.com&lt;/td&gt;&lt;br /&gt;&lt;td&gt;domainadm@hichina.com&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;a href="http://files.godaigroup.net/doppelganger/Doppelganger.Domains.pdf"&gt;Результаты эксперимента&lt;/a&gt; (PDF)&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/infosecurity/"&gt;Хабрахабр - Информационная безопасность &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/infosecurity/128167/"&gt; «Тайпосквоттеры» собрали 20 ГБ чужой переписки&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-607011736452610594?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0X9Wn1Q9nP1n0WJNSqZ8K1qT-tY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0X9Wn1Q9nP1n0WJNSqZ8K1qT-tY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0X9Wn1Q9nP1n0WJNSqZ8K1qT-tY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0X9Wn1Q9nP1n0WJNSqZ8K1qT-tY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/8-CfpnYy9Lg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/607011736452610594/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/20.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/607011736452610594?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/607011736452610594?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/8-CfpnYy9Lg/20.html" title="«Тайпосквоттеры» собрали 20 ГБ чужой переписки" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUERX87fCp7ImA9WhdWFUo.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-3022342666198857241</id><published>2011-09-09T06:00:00.001-07:00</published><updated>2011-09-09T06:00:04.104-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-09T06:00:04.104-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="перенос системы" /><category scheme="http://www.blogger.com/atom/ns#" term="tar" /><category scheme="http://www.blogger.com/atom/ns#" term="клонирование диска" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Linux для всех" /><title>[Из песочницы] Перенос системы LINUX на другой винчестер с переразбивкой разделов</title><content type="html">&lt;br /&gt;	Когда-то давным давно в &lt;s&gt;далекой-далекой галактике&lt;/s&gt; мне понадобилось перенести мою систему linux с одного винчестера на другой, а пользоваться проприетарщиной ужас, как не хотелось. Погуглив и поискав с помощью других поисковиков я нашел для себя решение, которое линукс-админу может показаться смешным, а меня оно тогда здорово выручило.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В общем — вот оно. Бейте ногами, режьте на части. Встречайте!&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&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;b&gt;HDD=80Gb&lt;/b&gt; на &lt;b&gt;HDD=20Gb&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Мой диск, объемом 80Gb размечен следующим образом:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;/dev/hda1 — /boot (250 Mb)&lt;br/&gt;&lt;br /&gt;/dev/hda2 — swap (1Gb)&lt;br/&gt;&lt;br /&gt;/dev/hda3 — extended (20Gb) (включает в себя /dev/hda5, /dev/hda6, /dev/hda7, /dev/hda8)&lt;br/&gt;&lt;br /&gt;/dev/hda5 — / (5Gb)&lt;br/&gt;&lt;br /&gt;/dev/hda6 — /tmp (512Mb)&lt;br/&gt;&lt;br /&gt;/dev/hda7 — /usr (10Gb)&lt;br/&gt;&lt;br /&gt;/dev/hda8 — /var (5Gb)&lt;br/&gt;&lt;br /&gt;/dev/hda4 — /home (54Gb)&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;/home&lt;/b&gt; очень сильно забит информацией, потому его в клонирование я не включаю. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Выставив перемычки как положено, я подключаю новый HDD в систему. Он принял метку &lt;b&gt;hdb&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Можно разметить его с помощью ЛЮБОЙ удобной для вас утилиты. Мне было проще воспользоваться &lt;b&gt;GPARTED&lt;/b&gt; — так визуально понятнее, да и видно там сразу, сколько реально места занято данными на той или иной партиции, что поможет определить стоит ли выделять столько много (или мало) места.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Я разметил новый диск (/dev/hdb) следующим образом:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;/dev/hdb1 — /boot (250 Mb)&lt;br/&gt;&lt;br /&gt;/dev/hdb2 — swap (1Gb)&lt;br/&gt;&lt;br /&gt;/dev/hdb3 — extended (14Gb) (включает в себя /dev/hdb5, /dev/hdb6, /dev/hdb7, /dev/hdb8)&lt;br/&gt;&lt;br /&gt;/dev/hdb5 — / (1Gb)&lt;br/&gt;&lt;br /&gt;/dev/hdb6 — /tmp (512Mb)&lt;br/&gt;&lt;br /&gt;/dev/hdb7 — /var (5Gb)&lt;br/&gt;&lt;br /&gt;/dev/hdb8 — /usr (7Gb)&lt;br/&gt;&lt;br /&gt;/dev/hdb4 — /home (4Gb)&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Следующим шагом надо подмонтировать все созданные разделы на новом HDD к существующей системе.&lt;br/&gt;&lt;br /&gt;Для этого на существующей системе я создал директорию &lt;b&gt;/backup&lt;/b&gt;, в которой создал поддиректории &lt;b&gt;/boot, /root, /var, /usr&lt;/b&gt; (&lt;b&gt;/tmp&lt;/b&gt; — не надо), в соответствии с разделами на которые я разделил новый HDD.&lt;br/&gt;&lt;br /&gt;Далее осуществляем само монтирование:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;sudo mount /dev/hdb1 /backup/boot&lt;br/&gt;&lt;br /&gt;sudo mount /dev/hdb5 /backup/root&lt;br/&gt;&lt;br /&gt;sudo mount /dev/hdb7 /backup/var&lt;br/&gt;&lt;br /&gt;sudo mount /dev/hdb8 /backup/usr&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Вот и подобрались к самому интересному, но отнюдь не самому простому месту, к копированию данных. &lt;br/&gt;&lt;br /&gt;В отличии от Windows Linux позволяет скопировать себя ПОЛНОСТЬЮ. Но надо помнить один важный момент — в системе есть аттрибуты на директории и файлы, а так же симлинки и хардлинки. Так вот необходимо так скопировать систему, чтоб все эти связи не растерялись. Для такой процедуры, по мнению больших специалистов, лучше всего подходит команда tar. &lt;br/&gt;&lt;br /&gt;Смысл в том, что мы &lt;u&gt;НЕ БУДЕМ архивировать&lt;/u&gt; файлы на диск, а &lt;u&gt;будем их переносить&lt;/u&gt; через так называемую «трубу» или «поток» на приемный HDD. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Для упрощения процедуры переноса я написал скрипт &lt;b&gt;backup.sh&lt;/b&gt;:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;#!/bin/sh&lt;br/&gt;&lt;br /&gt;cd /&lt;br/&gt;&lt;br /&gt;tar -cf - dev initrd.img opt srv bin cdrom etc initrd lib sbin sys vmlinuz | (cd /backup/root; tar -xvpf -)&lt;br/&gt;&lt;br /&gt;cd /boot&lt;br/&gt;&lt;br /&gt;tar -cf - * | (cd /backup/boot; tar -xvpf -)&lt;br/&gt;&lt;br /&gt;cd /var&lt;br/&gt;&lt;br /&gt;tar -cf - * | (cd /backup/var; tar -xvpf -)&lt;br/&gt;&lt;br /&gt;cd /usr&lt;br/&gt;&lt;br /&gt;tar -cf - * (cd /backup/usr; tar -xvpf -)&lt;/code&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;«cd /»&lt;br/&gt;&lt;br /&gt; — переход в root&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;«tar -cf — dev initrd.img opt srv bin cdrom etc initrd lib sbin sys | (cd /backup/root; tar -xvpf -)&lt;br/&gt;&lt;br /&gt;» — за&lt;b&gt;tar&lt;/b&gt;ивание перечисленных директорий и файлов с передачей их на рас&lt;b&gt;tar&lt;/b&gt;ивание на приемный HDD. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Узнать какие директории и файлы надо переносить несложно. Просто выполните команду «&lt;b&gt;ls /&lt;/b&gt;» тем самым получив листинг вашей системы начиная с &lt;b&gt;/&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;В моем случае это:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;ls /&lt;br/&gt;&lt;br /&gt;backup boot dev home initrd.img media opt root srv tmp var&lt;br/&gt;&lt;br /&gt;bin cdrom etc initrd lib mnt proc sbin sys usr vmlinuz&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Из всего этого «добра» нам нужно выделить то что будет находиться в &lt;b&gt;/&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;Так, как я выделил отдельные партиции на диске под &lt;b&gt;/boot, /var, /tmp, /usr и /home&lt;/b&gt;, получается что их на данном шаге нужно пропустить. Следовательно берем только &lt;b&gt;dev initrd.img opt srv var&lt;br/&gt;&lt;br /&gt;bin cdrom etc initrd lib sbin sys vmlinuz&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;А с остальными проще:&lt;br/&gt;&lt;br /&gt;&lt;code&gt;cd /boot&lt;/code&gt;&lt;br/&gt;&lt;br /&gt; — заходим в существующий /boot&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;tar -cf - * | (cd /backup/boot; tar -xvpf -)&lt;/code&gt; &lt;br/&gt;&lt;br /&gt;переносим все содержимое /boot в /backup/boot&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;b&gt;backup.sh&lt;/b&gt; и идем отдыхать на некоторое время. У меня все заняло около 10 минут. &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;i&gt;просто скопировать&lt;/i&gt; данные на партиции&lt;b&gt; /var, /tmp, /usr&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;После всех процедур переноса нам необходимо СОЗДАТЬ эти директории на приемном диске, как точки монтирования тех самых партиций (и все те точки монтирования, которые мы исключили при переносе — &lt;b&gt;/home, /media, /tmp, /var, /mnt, /proc, /usr&lt;/b&gt;) ОБЯЗАТЕЛЬНО С ТЕМИ ЖЕ аттрибутами! То есть:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;sudo mkdir /backup/root/home&lt;br/&gt;&lt;br /&gt;sudo mkdir /backup/root/media&lt;br/&gt;&lt;br /&gt;sudo mkdir /backup/root/tmp&lt;br/&gt;&lt;br /&gt;sudo mkdir /backup/root/var&lt;br/&gt;&lt;br /&gt;sudo mkdir /backup/root/mnt&lt;br/&gt;&lt;br /&gt;sudo mkdir /backup/root/proc&lt;br/&gt;&lt;br /&gt;sudo mkdir /backup/root/usr&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;какие выставить аттрибуты на директории можно узнать набрав команду &lt;b&gt;ls -la /&lt;/b&gt; на исходной системе. Но кроме &lt;b&gt;/tmp&lt;/b&gt; везде должен быть владелец &lt;b&gt;root&lt;/b&gt; группа &lt;b&gt;root&lt;/b&gt; и права &lt;b&gt;766&lt;/b&gt;. На /tmp надо поставить права &lt;b&gt;777&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Теперь надо на приемном HDD поправить &lt;b&gt;fstab&lt;/b&gt;, если необходимо (если вдруг вы СОВСЕМ ПО ДРУГОМУ разметили диск). А так же поправить &lt;b&gt;menu.lst&lt;/b&gt; загрузчика GRUB.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В UBUNTU что в fstab, что в menu.lst все диски прописаны через &lt;b&gt;UUID&lt;/b&gt; а не просто &lt;b&gt;/dev/hda&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;узнать какой у вашего диска &lt;b&gt;UUID&lt;/b&gt; можно с помощью команды:&lt;b&gt; ls -l /dev/disk/by-uuid&lt;/b&gt;, на выводе должно получиться что то вроде:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;lrwxrwxrwx 1 root root 10 2008-02-17 17:45 11815c66-5ae7-4497-9039-51de9adef664 -&amp;gt; ../../hda2&lt;br/&gt;&lt;br /&gt;lrwxrwxrwx 1 root root 10 2008-02-17 17:45 78711a48-6776-4474-8fa8-87016aad83a2 -&amp;gt; ../../hda6&lt;br/&gt;&lt;br /&gt;lrwxrwxrwx 1 root root 10 2008-02-17 17:45 83fded3d-37c4-4d85-a965-a7bbe326178a -&amp;gt; ../../hda7&lt;br/&gt;&lt;br /&gt;lrwxrwxrwx 1 root root 10 2008-02-17 17:45 a60e482c-8260-48fb-a19e-f5f906d4d444 -&amp;gt; ../../hda8&lt;br/&gt;&lt;br /&gt;lrwxrwxrwx 1 root root 10 2008-02-17 17:45 bc7607fe-3bf2-4bc1-adce-8ab749a271c9 -&amp;gt; ../../hda1&lt;br/&gt;&lt;br /&gt;lrwxrwxrwx 1 root root 10 2008-02-17 17:45 cacd40ea-ac88-4143-b5d9-5cb477eeb85d -&amp;gt; ../../hda4&lt;br/&gt;&lt;br /&gt;lrwxrwxrwx 1 root root 10 2008-02-17 17:45 d4404ea9-0a8e-4a4c-b72d-10a5edd697be -&amp;gt; ../../hda5&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;вот нам нужны как раз цифры «&lt;b&gt;11815c66-5ae7-4497-9039-51de9adef664&lt;/b&gt;», к примеру. Это &lt;b&gt;UUID&lt;/b&gt; партиции &lt;b&gt;swap&lt;/b&gt; (в моем случае).&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;в &lt;b&gt;menu.lst&lt;/b&gt; правим следующие строки:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;# kopt=root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro&lt;/code&gt;&lt;br/&gt;&lt;br /&gt;(не смотрите что строка закомментирована, при обновлении ядра именно отсюда берется информация)&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro quiet splash locale&lt;/code&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;code&gt;kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro single&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;br /&gt;Делается это просто:&lt;br/&gt;&lt;br /&gt;Берем установочный диск UBUNTU и грузимся.&lt;br/&gt;&lt;br /&gt;переходим в консоль &lt;b&gt;ctrl+f1&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;code&gt;sudo su&lt;br/&gt;&lt;br /&gt;grub&lt;br/&gt;&lt;br /&gt;find /grub/stage1&lt;br/&gt;&lt;br /&gt;root (hd0,0) сюда пишем то что выдала предыдущая команда&lt;br/&gt;&lt;br /&gt;setup (hd0) сюда пишем то же самое но до первой запятой.&lt;br/&gt;&lt;br /&gt;quit&lt;/code&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;b&gt;/home&lt;/b&gt; — то система ругнулась на то что я как пользователь есть а вот домашней папки у меня нет. Я поступил варварским способом — &lt;code&gt;userdel %username%&lt;/code&gt;, а затем &lt;code&gt;adduser %username%&lt;/code&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;P.S. Не ругайте сильно за, возможно, устаревший способ, но на тот момент он работал и работал хорошо! (&lt;b&gt;Тот момент&lt;/b&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/linux/"&gt;Хабрахабр - Linux для всех &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/linux/128095/"&gt; [Из песочницы] Перенос системы LINUX на другой винчестер с переразбивкой разделов&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-3022342666198857241?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ILVSHJk32exhs1x8VH0LtSzgkE8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ILVSHJk32exhs1x8VH0LtSzgkE8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ILVSHJk32exhs1x8VH0LtSzgkE8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ILVSHJk32exhs1x8VH0LtSzgkE8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/_llj925LRuk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/3022342666198857241/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/linux.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3022342666198857241?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3022342666198857241?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/_llj925LRuk/linux.html" title="[Из песочницы] Перенос системы LINUX на другой винчестер с переразбивкой разделов" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMNRXwzeyp7ImA9WhdWFEU.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-6685120744149492183</id><published>2011-09-08T06:28:00.001-07:00</published><updated>2011-09-08T06:28:14.283-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T06:28:14.283-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="игры" /><category scheme="http://www.blogger.com/atom/ns#" term="гаджеты" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Дизайн в IT" /><category scheme="http://www.blogger.com/atom/ns#" term="fallout" /><title>Поклонник Fallout воссоздал PIP-Boy 3000</title><content type="html">&lt;br /&gt;	&lt;img src="http://habrastorage.org/storage1/a81f45be/5643ceef/54607aad/1c302b0b.jpg"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Помните, что такое PIP-Boy 3000? Эдакий универсальный микрокомпьютер, который используется персонажем игры Fallout для многих целей. Это и управление вещами, и получение информации об окружающем мире и состоянии собственного здоровья, и многое другое. Fallout — вообще культовая игра, и в разное время поклонники игрушки создавали и создают вещи из игрового мира, включая винтовку Гаусса и оружие другого типа. На этот раз в нашей реальности был воссоздан PIP-Boy 3000.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;При этом управление производится так же, как и в игре, при помощи различных рычажков и колесиков. Ранее PIP-Boy 3000 уже пробовали создавать, но то, что получалось, было слабо похоже на оригинал. А если и похоже, то все эти колесики и рычажки оставлялись только для красоты, управление все равно производилось при помощи сенсорного дисплея. Здесь у нас все по-настоящему.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Интересно, что для своего пост-апокалиптичного мини-компьютера автор использовал дисплей, процессор и некоторые другие детали от HTC Desire HD + Arduino Uno. В результате получилось то, что получилось. На видео, размещенном ниже, можно посмотреть, как именно работает устройство.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/5tCEXEuICWs" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Via &lt;a href="http://www.joystiq.com/2011/09/03/homemade-pip-boy-3000-does-almost-everything/"&gt;joystiq&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/design/"&gt;Хабрахабр - Дизайн в IT &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/design/127824/"&gt; Поклонник Fallout воссоздал PIP-Boy 3000&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-6685120744149492183?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lwXoRuN01H7kLyy__Yod4iliW-c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lwXoRuN01H7kLyy__Yod4iliW-c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lwXoRuN01H7kLyy__Yod4iliW-c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lwXoRuN01H7kLyy__Yod4iliW-c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/jcugeImD9hY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/6685120744149492183/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/fallout-pip-boy-3000.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/6685120744149492183?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/6685120744149492183?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/jcugeImD9hY/fallout-pip-boy-3000.html" title="Поклонник Fallout воссоздал PIP-Boy 3000" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/5tCEXEuICWs/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/fallout-pip-boy-3000.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NRn44cSp7ImA9WhdWFEU.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-7680512624931832202</id><published>2011-09-08T05:28:00.001-07:00</published><updated>2011-09-08T05:28:17.039-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T05:28:17.039-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="игры" /><category scheme="http://www.blogger.com/atom/ns#" term="инди" /><category scheme="http://www.blogger.com/atom/ns#" term="angry birds" /><title>JavaScript Gaming: Часть 1. Box2d и основы Физики</title><content type="html">&lt;br /&gt;	&lt;img src="http://habrastorage.org/storage1/2c170c5f/921a60df/0ec17029/98f6798f.jpg"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h3&gt;Вместо предисловия.&lt;/h3&gt;&lt;br/&gt;&lt;br /&gt;Я всегда любил и буду любить компьютерные игры. Есть в них какая-то своя внутренняя магия, которая всегда привлекает и завораживает одновременно. За всю свою жизнь я переиграл в десятки игр, начиная с ветеранов Wolfenstein и Dune 2 и заканчивая современными блокбастерами. И теперь, добивая очередной хит и наблюдая за финальным роликом и титрами, в голове все чаще и чаще мелькает мысть «А что, если?..»&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;А ведь действительно, что если взять и написать собственную игру? Конечно же понятно, что ААА-тайтл сделать в одиночку не получится, и это годы работы и прочая и прочая, но ведь осилит дорогу идущий? Так уж получилось, что в Desktop-программироании я откровенно слаб, и вариантов для практикующего веб-разработчика не так уж много. Но за последние годы все кардинально изменилось, и теперь уже у браузера много общего с кофеваркой, а javascript может спокойно удовлетворять даже нужды военных ведомств, не то что мои собственные.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Вот как раз во время очередных раздумий и достаточно серьезной простуды мне попалась на глаза статья о Box2d в игрологе Ant.Karlov'а. Зачитавшись и замечтавшись я очень быстро нашел JS-порт этой библиотеки, и старая шальная идея сделать что-то маленькое и, главное — свое, начала донимать меня с новыми силами. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В общем, меньше патетики, больше дела. Надеюсь, вам будет интересно. Да простят меня суровые боги за использование Angry Birds в КПДВ ^_^&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;h3&gt;Вводная и Disclaimer&lt;/h3&gt;&lt;br/&gt;&lt;br /&gt;Конечная цель всего цикла заметок — сделать полноценный клон Angry Birds, как минимум с 3-мя видами метательного оружия и 5-ю разными уровнями. Да, их и так уже достаточно, и в разных компоновках, и даже самой Angry Birds как минимум 3 версии, но нужно же на чем-то практиковаться? В процессе я постараюсь затронуть все аспекты — сам физический движок, работу с растровой графикой, редактор уровней (а он обязательно понадобится), обвязку в виде меню/credits'ов/настроек, звук и музыку и еще тысячу важных мелочей. Всего этого у меня, на самом деле, самого еще нет, но в процессе написания я буду рассказывать здесь, что и как у меня получилось сделать и к чему это привело.&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;h3&gt;Поехали!&lt;/h3&gt;&lt;br/&gt;&lt;br /&gt;Итак, приступим. Первое, что нам нужно — это создать мир игры, наполнить его тестовым уровнем и попробовать бросить первую «птицу» в первую «свинью». Поскольку в самой Angry Birds мы видели псевдо-реальную физику — нам понадобится физический движок, который будет занят обработкой столкновений и перемещениями птиц, свиней и прочих объектов по игровому миру.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В качестве физического движка я выбрал Box2d по нескольким причинам:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;1. У него достаточно сильное Flash-комьюнити, где можно попросить помощи или совета.&lt;br/&gt;&lt;br /&gt;2. Библиотека Box2dWeb, которую я решил использовать — прямой порт Box2dAS, так что API Reference, как минимум, уже есть.&lt;br/&gt;&lt;br /&gt;3. Достаточно полезной информации, правда на антимонгольском, о процессе разработки и внутренностях движка.&lt;br/&gt;&lt;br /&gt;4. Ну и, конечно же, сотни успешных применений.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В общем и целом, движок у нас есть — теперь нужно примерно представить все, что нам нужно и создать наш маленькмй и уютненький мир. Начнем мы, пожалуй, с небольшой HTML-заготовки. Забросим на страничку canvas и создадим базовый объект нашей игры.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;html&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;head&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;title&lt;/font&gt;&amp;gt;&lt;/font&gt;Angry&amp;nbsp;Birds&amp;nbsp;WRYYYYYYYY!!!!&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#66cc66"&gt;/&lt;/font&gt;&lt;font color="#000000"&gt;title&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;nbsp;&lt;font color="#000066"&gt;src&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;quot;/js/jquery.js&amp;quot;&lt;/font&gt;&amp;nbsp;&lt;font color="#000066"&gt;type&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;«text/javascript»&lt;/font&gt;&amp;gt;&amp;lt;&lt;font color="#66cc66"&gt;/&lt;/font&gt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;nbsp;&lt;font color="#000066"&gt;src&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;quot;/js/box2d.js&amp;quot;&lt;/font&gt;&amp;nbsp;&lt;font color="#000066"&gt;type&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;«text/javascript»&lt;/font&gt;&amp;gt;&amp;lt;&lt;font color="#66cc66"&gt;/&lt;/font&gt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(document).ready(function(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new&amp;nbsp;Game();&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#66cc66"&gt;/&lt;/font&gt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;body&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;canvas&amp;nbsp;&lt;font color="#000066"&gt;id&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;«canvas»&lt;/font&gt;&amp;nbsp;&lt;font color="#000066"&gt;width&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;«800»&lt;/font&gt;&amp;nbsp;&lt;font color="#000066"&gt;height&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;«600»&lt;/font&gt;&amp;nbsp;&lt;font color="#ff0000"&gt;style=&amp;quot;&lt;/font&gt;background-&lt;font color="#000066"&gt;color&lt;/font&gt;:#&lt;font color="#cc66cc"&gt;333333&lt;/font&gt;;&lt;font color="#ff0000"&gt;&amp;quot;&amp;nbsp;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#66cc66"&gt;/&lt;/font&gt;&lt;font color="#000000"&gt;body&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;nbsp;&lt;font color="#000066"&gt;type&lt;/font&gt;&lt;font color="#66cc66"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;«text/javascript»&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game&amp;nbsp;=&amp;nbsp;function()&amp;nbsp;{&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#66cc66"&gt;/&lt;/font&gt;&lt;font color="#000000"&gt;script&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="#009900"&gt;&amp;lt;&lt;font color="#66cc66"&gt;/&lt;/font&gt;&lt;font color="#000000"&gt;html&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Замечательно, у нас есть шаблон для дальнейших экспериментов. Теперь нужно создать физический мир и начать активно использовать Box2d. Этим мы и займемся.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//Я&amp;nbsp;решил&amp;nbsp;сразу&amp;nbsp;обозначить&amp;nbsp;типы&amp;nbsp;объектов&amp;nbsp;константами&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;const&lt;/font&gt;&amp;nbsp;PIG&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;1&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;const&lt;/font&gt;&amp;nbsp;BIRD&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;2&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;const&lt;/font&gt;&amp;nbsp;PLANK&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;3&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//Флаг,&amp;nbsp;который&amp;nbsp;нам&amp;nbsp;понадобится&amp;nbsp;при&amp;nbsp;обработке&amp;nbsp;«броска».&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isMouseDown&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;false&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//Будущая&amp;nbsp;«резинка»&amp;nbsp;для&amp;nbsp;виртуальной&amp;nbsp;рогатки&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mouseJoint&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;false&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//Используется&amp;nbsp;в&amp;nbsp;процессе&amp;nbsp;обработки&amp;nbsp;броска&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;false&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mousePosition&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;x&lt;font color="#339933"&gt;:&lt;/font&gt;&lt;font color="#CC0000"&gt;0&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;y&lt;font color="#339933"&gt;:&lt;/font&gt;&lt;font color="#CC0000"&gt;0&lt;/font&gt;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Все&amp;nbsp;необходимые&amp;nbsp;ресурсы&amp;nbsp;для&amp;nbsp;наших&amp;nbsp;текущих&amp;nbsp;нужд.&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Решил&amp;nbsp;сразу&amp;nbsp;переопределить,&amp;nbsp;чтобы&amp;nbsp;не&amp;nbsp;городить&amp;nbsp;километры&amp;nbsp;непонятного&amp;nbsp;и&amp;nbsp;нечитаемого&amp;nbsp;кода.&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Значение&amp;nbsp;каждого&amp;nbsp;ресурса&amp;nbsp;я&amp;nbsp;попытаюсь&amp;nbsp;объяснить&amp;nbsp;далее&amp;nbsp;в&amp;nbsp;заметке.&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2AABB&amp;nbsp;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Collision&lt;/font&gt;.&lt;font color="#660066"&gt;b2AABB&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2World&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Dynamics&lt;/font&gt;.&lt;font color="#660066"&gt;b2World&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2Vec2&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Common&lt;/font&gt;.&lt;font color="#660066"&gt;Math&lt;/font&gt;.&lt;font color="#660066"&gt;b2Vec2&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2DebugDraw&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Dynamics&lt;/font&gt;.&lt;font color="#660066"&gt;b2DebugDraw&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2Body&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Dynamics&lt;/font&gt;.&lt;font color="#660066"&gt;b2Body&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2BodyDef&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Dynamics&lt;/font&gt;.&lt;font color="#660066"&gt;b2BodyDef&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2FixtureDef&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Dynamics&lt;/font&gt;.&lt;font color="#660066"&gt;b2FixtureDef&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2PolygonShape&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Collision&lt;/font&gt;.&lt;font color="#660066"&gt;Shapes&lt;/font&gt;.&lt;font color="#660066"&gt;b2PolygonShape&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2CircleShape&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Collision&lt;/font&gt;.&lt;font color="#660066"&gt;Shapes&lt;/font&gt;.&lt;font color="#660066"&gt;b2CircleShape&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2MouseJointDef&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Dynamics&lt;/font&gt;.&lt;font color="#660066"&gt;Joints&lt;/font&gt;.&lt;font color="#660066"&gt;b2MouseJointDef&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b2ContactListener&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Box2D.&lt;font color="#660066"&gt;Dynamics&lt;/font&gt;.&lt;font color="#660066"&gt;b2ContactListener&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Создаем&amp;nbsp;наш&amp;nbsp;мир.&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2World&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2Vec2&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;0&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;10&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Вектор&amp;nbsp;гравитации.&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#339933"&gt;,&lt;/font&gt;&lt;font color="#003366"&gt;true&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;doSleep&amp;nbsp;флаг.&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Инициализация&amp;nbsp;всего&amp;nbsp;в&amp;nbsp;нашем&amp;nbsp;мире,&amp;nbsp;вызывается&amp;nbsp;при&amp;nbsp;создании&amp;nbsp;объекта&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Немного подробнее хотелось бы остановиться на параметрах нашего мира. Первый — это вектор гравитации. Box2d достаточно подробно моделирует физику окружающего мира, поэтому без влияния гравитации тут не обошлось. У нас этим вектором задается ускорение свободного падения, равное 10 виртуальным метрам в секунду по оси Y. Второй параметр: doSleep, разрешает не обсчитывать в текущий момент неактивные элементы. Это очень сильно сказывается на скорости работы и я не советую менять этот параметр.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Так же бы хотелось добавить, что Box2d по умолчанию использует систему координат с началом в левом верхнем углу.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Думаю, все присутствующие здесь в курсе, что обработка экранного полотна в любой игре происходит покадрово, не исключение в этом и Box2d. Поэтому нам необходимо создать для него метод обновления и загнать этот метод в SetTimeout, чтобы он вызывался постоянно для пересчета объектов и перерисовки графики.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;init&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.&lt;font color="#660066"&gt;setInterval&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;update&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;1000&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;/&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;60&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;Step&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;1&lt;/font&gt;&lt;font color="#339933"&gt;/&lt;/font&gt;&lt;font color="#CC0000"&gt;60&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;10&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;10&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;DrawDebugData&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;ClearForces&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В функции update() мы, в первую очередь, задали частоту обновления мира — 60 кадров в секунду, а так же задали предельное количество обрабатываемых событий изменения скорости объектов и их положения на 1 такт работы. При увеличении этих параметров общая скорость реакции будет увеличиваться, но с увеличением количества объектов мы можем уткнуться в системные ресурсы, при уменьшении — получим неправильную обработку объектов от такта к такту. 10 — вполне вменяемое среднее значение.&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;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;init&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildWorld&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initDraw&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.&lt;font color="#660066"&gt;setInterval&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;update&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;1000&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;/&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;60&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;initDraw&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debugDraw&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2DebugDraw&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debugDraw.&lt;font color="#660066"&gt;SetSprite&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;document.&lt;font color="#660066"&gt;getElementById&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#3366CC"&gt;«canvas»&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;getContext&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#3366CC"&gt;«2d»&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debugDraw.&lt;font color="#660066"&gt;SetDrawScale&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;30.0&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debugDraw.&lt;font color="#660066"&gt;SetFillAlpha&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;0.5&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debugDraw.&lt;font color="#660066"&gt;SetLineThickness&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;1.0&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;debugDraw.&lt;font color="#660066"&gt;SetFlags&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;b2DebugDraw.&lt;font color="#660066"&gt;e_shapeBit&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;|&lt;/font&gt;&amp;nbsp;b2DebugDraw.&lt;font color="#660066"&gt;e_jointBit&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;SetDebugDraw&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;debugDraw&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildWorld&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2FixtureDef&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef.&lt;font color="#660066"&gt;density&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;1.0&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef.&lt;font color="#660066"&gt;friction&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.5&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef.&lt;font color="#660066"&gt;restitution&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.2&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Да, стоит добавить, что для отображения в текущем виде мы будем использовать только Debug mode — т.е. прямое представление объектов в нашем физическом мире без текстур и графики. Что называется — As Is. Именно для этого мы в функции update() вызываем метод DrawDebugData() и именно для этого отображения мы создаем объект b2DebugDraw(). Там же устанавливаем масштаб, полупрозрачность и битами задаем, что именно нам нужно рисовать. Более детально все по b2DebugDraw() достаточно хорошо описано в API Reference.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Так же стоит добавить, что Box2d не оперирует пикселями как данными о координатной сетке. Он изначально пректировался под использование стандарной системы Си — поэтому мы имеем метры, килограммы, секунды, и соответствующие преобразования. Сейчас я не буду углубляться подробно в эту область, просто имейте в виду, что 1 метр в представлении Box2d — это примерно 30 пикселей экранного пространства.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Ну и еще немного добавлю про структуру fixDef() — это набор основных параметров физики объектов. Именно в этой струкруре описываются основные параметры, по которым будет обсчитываться физика процесса взаимодействия объектов. Как видите, мы указали параметры для трения, плотности и упругости объектов.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h3&gt;Рисование&lt;/h3&gt;&lt;br/&gt;&lt;br /&gt;Мы вплотную приблизились к нашей заветной цели — проектированию механики игры, но для начала нужно поместить в наш мир какие-то объекты и уже затем попробовать что-то с ними сделать. Поэтому добавим в наш init() методы построения ограничителей для нашего пространства и, прорисуем наш уровень с прямоугольниками в качестве неразбиваемых досок и кругами в качестве «свиней».&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;PigData&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PigData.&lt;font color="#660066"&gt;prototype&lt;/font&gt;.&lt;font color="#660066"&gt;GetType&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;return&lt;/font&gt;&amp;nbsp;PIG&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PlankData&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;GetType()&amp;nbsp;аналогичный&amp;nbsp;PigData.GetType()&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildWorld&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;bodyDef&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2BodyDef&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bodyDef.&lt;font color="#660066"&gt;type&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;b2Body.&lt;font color="#660066"&gt;b2_staticBody&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef.&lt;font color="#660066"&gt;shape&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2PolygonShape&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef.&lt;font color="#660066"&gt;shape&lt;/font&gt;.&lt;font color="#660066"&gt;SetAsBox&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;20&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;2&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bodyDef.&lt;font color="#660066"&gt;position&lt;/font&gt;.&lt;font color="#660066"&gt;Set&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;10&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;600&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;/&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;30&lt;/font&gt;&lt;font color="#339933"&gt;+&lt;/font&gt;&lt;font color="#CC0000"&gt;1.8&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;CreateBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;bodyDef&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;CreateFixture&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;fixDef&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&lt;font color="#006600"&gt;//еще&amp;nbsp;3&amp;nbsp;стенки&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvasPosition&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;$&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#3366CC"&gt;&amp;quot;#canvas&amp;quot;&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;offset&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildLevel&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;createPlank&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;22&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;20&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.25&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;2&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Отрисовка&amp;nbsp;еще&amp;nbsp;8-ми&amp;nbsp;досок&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;createPig&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#CC0000"&gt;20&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&lt;font color="#CC0000"&gt;11&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&lt;font color="#CC0000"&gt;0.5&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Еще&amp;nbsp;2&amp;nbsp;дополнительные&amp;nbsp;свиньи&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;createPlank&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;x&lt;font color="#339933"&gt;,&lt;/font&gt;y&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;width&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;height&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bodyDef.&lt;font color="#660066"&gt;type&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;b2Body.&lt;font color="#660066"&gt;b2_dynamicBody&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef.&lt;font color="#660066"&gt;shape&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2PolygonShape&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fixDef.&lt;font color="#660066"&gt;shape&lt;/font&gt;.&lt;font color="#660066"&gt;SetAsBox&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&amp;nbsp;height&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bodyDef.&lt;font color="#660066"&gt;position&lt;/font&gt;.&lt;font color="#660066"&gt;x&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;x&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bodyDef.&lt;font color="#660066"&gt;position&lt;/font&gt;.&lt;font color="#660066"&gt;y&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;y&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plank&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;world.&lt;font color="#660066"&gt;CreateBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;bodyDef&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plank.&lt;font color="#660066"&gt;SetUserData&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;PlankData&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plank.&lt;font color="#660066"&gt;CreateFixture&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;fixDef&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;createPig&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;x&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;y&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;r&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;Метод,&amp;nbsp;аналочичный&amp;nbsp;методу&amp;nbsp;createPlank,&amp;nbsp;за&amp;nbsp;исключением&amp;nbsp;того,&amp;nbsp;что&amp;nbsp;используется&amp;nbsp;CircleShape&amp;nbsp;и&amp;nbsp;PigData();&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Box2d позволяет привязывать к любому физическому объекту доподнительный «юзерский» интерфейс, с помощью которого можно непосредственно реализовать игровую логику. Именно поэтому мы добавили 2 объекта — PigData и PlankData, которые возвращают нам тип объекта. Это станет важным чуть позже, когда мы займемся обработкой столкновений.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Структура BodyDef предназначна для описания геометрических характеристик объекта и его общее поведение (FixtureDef же описывает его физические свойства). Именно в BodyDef мы указываем, как будет обсчитан тот или иной блок, будет ли он статическим, или же будет динамическим. Вообще в Box2d, как нам рассказывает документация, есть 3 типа объектов — static, т.е. полностью статические объекты (в DebugView — зеленые объекты), dynamic — полностью независимые динамические объекты, и kinematic — объекты, отвечающие за движение. В качестве примера static — это дорога, dynamic — это подвеска автомобиля и колеса, а kinetic — это двигатель автомобиля.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Там же мы указываем геометрическую форму объекта, положение его левого верхнего угла и размеры. Все в метрах ( Ох как же я долго догадывался, почему у меня размеры и пиксели не совпадают! ). &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Ну и в конце мы дорисовываем новый метод drawLevel(), который будет отрисовывать нам весь уровень вместе с досками и свинками.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h3&gt;Рогатка&lt;/h3&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;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;init&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bindMouse&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bindMouse&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$&lt;font color="#009900"&gt;(&lt;/font&gt;document&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;mousedown&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;e&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isMouseDown&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;true&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handleMouse&lt;font color="#009900"&gt;(&lt;/font&gt;e&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$&lt;font color="#009900"&gt;(&lt;/font&gt;document&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;bind&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#3366CC"&gt;«mousemove»&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;handleMouse&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$&lt;font color="#009900"&gt;(&lt;/font&gt;document&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;mouseup&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;e&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;isMouseDown&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;false&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$&lt;font color="#009900"&gt;(&lt;/font&gt;document&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;unbind&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#3366CC"&gt;«mousemove»&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handleMouse&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;e&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mouseX&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;(&lt;/font&gt;e.&lt;font color="#660066"&gt;clientX&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;-&lt;/font&gt;&amp;nbsp;canvasPosition.&lt;font color="#660066"&gt;left&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;/&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;30&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mouseY&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;(&lt;/font&gt;e.&lt;font color="#660066"&gt;clientY&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;-&lt;/font&gt;&amp;nbsp;canvasPosition.&lt;font color="#660066"&gt;top&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;/&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;30&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;isMouseDown&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#339933"&gt;!&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;body&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mousePosition&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;x&lt;font color="#339933"&gt;:&lt;/font&gt;mouseX&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;y&lt;font color="#339933"&gt;:&lt;/font&gt;mouseY&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;createPig&lt;font color="#009900"&gt;(&lt;/font&gt;mouseX&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;mouseY&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.40&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;getBodyAtMouse&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;md&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2MouseJointDef&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;md.&lt;font color="#660066"&gt;bodyA&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;world.&lt;font color="#660066"&gt;GetGroundBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;md.&lt;font color="#660066"&gt;bodyB&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;body&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;md.&lt;font color="#660066"&gt;target&lt;/font&gt;.&lt;font color="#660066"&gt;Set&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;mousePosition.&lt;font color="#660066"&gt;x&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;mousePosition.&lt;font color="#660066"&gt;y&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;md.&lt;font color="#660066"&gt;collideConnected&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;true&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;md.&lt;font color="#660066"&gt;maxForce&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;300.0&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;*&lt;/font&gt;&amp;nbsp;body.&lt;font color="#660066"&gt;GetMass&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mouseJoint&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;world.&lt;font color="#660066"&gt;CreateJoint&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;md&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body.&lt;font color="#660066"&gt;SetAwake&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#003366"&gt;true&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body.&lt;font color="#660066"&gt;SetPosition&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2Vec2&lt;font color="#009900"&gt;(&lt;/font&gt;mouseX&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;mouseY&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;mouseJoint&amp;nbsp;&lt;font color="#339933"&gt;&amp;amp;&amp;amp;&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;!&lt;/font&gt;isMouseDown&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mouseX&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;mousePosition.&lt;font color="#660066"&gt;x&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mouseY&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;mousePosition.&lt;font color="#660066"&gt;y&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;getBodyAtMouse&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;DestroyJoint&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;mouseJoint&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mouseJoint&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;null&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;false&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Итак, что мы здесь сделали? Первое — это, конечно же, прибили обработчики мыши mousedown и mouseup к нашей маленькой игре. Теперь при нажалии на клавишу мыши в игровом поле будет устанввливаться флаг isMouseDown, ну и при движении мышью координаты, сохраняемые в mouseX и mouseY, будут меняться. Второе, чего мы добились — это динамическое создание объекта при клике мышки, эту часть я вынес в метод update(). Грубо говоря, мы сразу же создаем новую «птичку», если ее не было, хоть она у нас и является объектом с типом «свинья» — летает она не хуже. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Дальше интереснее — при помощи метода GetBodyAtMouse() мы сразу получаем на обработку тело объекта нашей птички и используя MouseJoint привязываем ее к нашему миру. Т.е. именно MouseJoint создает резинку рогатки, которая будет запускать птичку. Там же мы указываем направление действия нашей гибкой сцепки и максимальное усилие.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В примере четко видно, что после нажатия на клавишу мыши появляется новая окружность с характерной голубоватой связкой, прицепленной к центру. Если вы не будете отжимать клавишу мыши — связка так и будет тянуться к центру окружности. Но если отжать…&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Если отжать — флаг isMouseDown изменится и начнет работать второе условие, которое с помощью того же метода getBobyAtMouse определяет, пересекло ли тело центр прикрепленной связки, и если пересекло — удаляет связку. В свою очередь тело, т.е. наша птицесвинья, отправляется в свободный полет на страх всем свиньям не летающим ^_^.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;На методе GetBodyAtMouse() я хотел бы остановиться поподробнее, уж очень он интересен.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&amp;nbsp;getBodyAtMouse&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mousePVec&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2Vec2&lt;font color="#009900"&gt;(&lt;/font&gt;mouseX&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;mouseY&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;var&lt;/font&gt;&amp;nbsp;aabb&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;b2AABB&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aabb.&lt;font color="#660066"&gt;lowerBound&lt;/font&gt;.&lt;font color="#660066"&gt;Set&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;mouseX&amp;nbsp;&lt;font color="#339933"&gt;-&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.001&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;mouseY&amp;nbsp;&lt;font color="#339933"&gt;-&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.001&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aabb.&lt;font color="#660066"&gt;upperBound&lt;/font&gt;.&lt;font color="#660066"&gt;Set&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;mouseX&amp;nbsp;&lt;font color="#339933"&gt;+&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.001&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;mouseY&amp;nbsp;&lt;font color="#339933"&gt;+&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0.001&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selectedBody&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;null&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;QueryAABB&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;getBodyCallback&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;aabb&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;return&lt;/font&gt;&amp;nbsp;selectedBody&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getBodyCallback&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;fixture&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;fixture.&lt;font color="#660066"&gt;GetBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetType&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;!=&lt;/font&gt;&amp;nbsp;b2Body.&lt;font color="#660066"&gt;b2_staticBody&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;fixture.&lt;font color="#660066"&gt;GetShape&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;TestPoint&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;fixture.&lt;font color="#660066"&gt;GetBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetTransform&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;mousePVec&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selectedBody&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;fixture.&lt;font color="#660066"&gt;GetBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;false&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;return&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;true&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Первое, что здесь делается — создается новый вектор с текущим положением мыши. Дальше мы создаем структуру, выделяющую часть экранного пространства в системе координат Box2d под указателем мыши, и при помощи getBodyCallback определяем, пересекатся ли область под мышью с каким-либо телом вообще, и если да — устанавливаем новый selectedBody. В принципе, все просто и нетривиально.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h3&gt;Свинки&lt;/h3&gt;&lt;br/&gt;&lt;br /&gt;До этой части, в принципе, все шло достаточно монотонно в канве стандартных примеров. Но для правильной обработки столкновений мне пришлось порядочно зарыться в мануал. Что же теперь необходимо сделать? Всего самую малость — добиться того, чтобы наши свинки, расположенные на уровне, исчезали. Но не просто так от контакта, а от контакта с определенным усилием. Для этого нам будет необходимо переопределить стандартный обработчик контактов и добавить подсчет суммарного импульса, который получила наша свинка в процессе столкновения.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Game&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;GameContactListener&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GameContactListener.&lt;font color="#660066"&gt;prototype&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;b2ContactListener.&lt;font color="#660066"&gt;prototype&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GameContactListener.&lt;font color="#660066"&gt;prototype&lt;/font&gt;.&lt;font color="#660066"&gt;PostSolve&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;contact&lt;font color="#339933"&gt;,&lt;/font&gt;&amp;nbsp;impulse&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;contact.&lt;font color="#660066"&gt;GetFixtureB&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetUserData&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;var&lt;/font&gt;&amp;nbsp;BangedBody&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;contact.&lt;font color="#660066"&gt;GetFixtureB&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;contact.&lt;font color="#660066"&gt;GetFixtureB&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetUserData&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;.&lt;font color="#660066"&gt;GetType&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;==&lt;/font&gt;&amp;nbsp;PIG&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;var&lt;/font&gt;&amp;nbsp;imp&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;for&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;a&amp;nbsp;&lt;font color="#000066"&gt;in&lt;/font&gt;&amp;nbsp;impulse.&lt;font color="#660066"&gt;normalImpulses&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;imp&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;imp&amp;nbsp;&lt;font color="#339933"&gt;+&lt;/font&gt;&amp;nbsp;impulse.&lt;font color="#660066"&gt;normalImpulses&lt;/font&gt;&lt;font color="#009900"&gt;[&lt;/font&gt;a&lt;font color="#009900"&gt;]&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;if&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;imp&amp;nbsp;&lt;font color="#339933"&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;3&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;destroyedBodies.&lt;font color="#660066"&gt;push&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;BangedBody&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BangedBody.&lt;font color="#660066"&gt;visible&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;false&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BangedBody&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;null&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#003366"&gt;var&lt;/font&gt;&amp;nbsp;contactListener&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;new&lt;/font&gt;&amp;nbsp;GameContactListener&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;SetContactListener&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;contactListener&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;&lt;font color="#003366"&gt;function&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;destroyedBodies&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;=&lt;/font&gt;&amp;nbsp;Array&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;…&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#660066"&gt;world&lt;/font&gt;.&lt;font color="#660066"&gt;ClearForces&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&amp;nbsp;&lt;font color="#006600"&gt;//&amp;nbsp;&amp;nbsp;ВАЖНО!&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#000066"&gt;while&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;destroyedBodies.&lt;font color="#660066"&gt;length&lt;/font&gt;&amp;nbsp;&lt;font color="#339933"&gt;&amp;gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#CC0000"&gt;0&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&amp;nbsp;&lt;font color="#009900"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;world.&lt;font color="#660066"&gt;DestroyBody&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;destroyedBodies.&lt;font color="#660066"&gt;shift&lt;/font&gt;&lt;font color="#009900"&gt;(&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#009900"&gt;)&lt;/font&gt;&lt;font color="#339933"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#009900"&gt;}&lt;/font&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Первое, что ммы здесь делаем — переопределяем стандартный ContactListener. Это объект, отвечающий за обработку всех столкновений. Там же при помощи нашего метода мы проверяем UserData() и удовлетворяемся тем, что действительно мы ударили свинку, и если нас устраивает импульс, с которым ее ударили — мы скрываем ее с поля боя и заносим в массив на удаление. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Честно посыпаю голову пеплом — силу импульса подобрал наугад, так как уже не было никаких сил считать необходимый импульс усилия вручную. Надеюсь, подобрал оптимальный вариант. Так же это условие важно тем, что при создании мира так же происходят столкновения до тех пор, пока мир не придет в статическое состояние (Возможно, вы наблюдали в некоторых играх на Flash подобной тематики при создании уровня легкое подергивание плит перекрытий? В моем примере это тоже есть. Вот, собственно, чтобы свиньи не исчезали при таких коллизиях — нужна проверка суммарного импульса).&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Дальше в конце метода update после вызова ClearForces() мы перевариваем наш массив и удаляем всех свинок, которые были нещадно избиты летающей сестрой. Я специально выделил это место, как важное — у вас не получится удалить ни один объект до тех пор, пока идет процесс обсчета физики. Таковы условия Box2d. Только после того, как все объекты освободились от математики — можно свободно проводить их удаление. Именно поэтому свинки лопаются только после того, как сцена, фактически, завершилась.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h3&gt;Итоги&lt;/h3&gt;&lt;br/&gt;&lt;br /&gt;Фуф, вроде как простыня завершена. Прошу прощения за изобилие кода и возможные ошибки.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Как я и обещал — ссылка на &lt;a href="http://test.elhsmart.net.ru"&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;img src="http://habrastorage.org/storage1/9ac26028/7893e05f/f7785fc9/3f850ec4.png"/&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;h3&gt;Список полезного&lt;/h3&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/box2dweb/"&gt;code.google.com/p/box2dweb/&lt;/a&gt; — Box2dWeb, порт Box2dAS для Javascript'а.&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.box2dflash.org/docs/2.1a/reference/"&gt;www.box2dflash.org/docs/2.1a/reference/&lt;/a&gt; — API Reference на антимонгольском.&lt;br/&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/View?id=dfh3v794_41gtqs6wf4&amp;pli=1"&gt;docs.google.com/View?id=dfh3v794_41gtqs6wf4&amp;pli=1&lt;/a&gt; — Достаточно полное руководство на русском. Спасибо VirtualMaestro и его блогу — flashnotes.ru. Там же очень много полезного по поводу Box2d.&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.emanueleferonato.com/"&gt;www.emanueleferonato.com/&lt;/a&gt; — Очень полезный блог про Box2d в частности и инди в целом.&lt;br/&gt;&lt;br /&gt;&lt;a href="http://ant-karlov.ru/"&gt;ant-karlov.ru/&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/javascript/"&gt;Хабрахабр - JavaScript &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/javascript/127991/"&gt; JavaScript Gaming: Часть 1. Box2d и основы Физики&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-7680512624931832202?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kz7lv65_wv5clvJw5v2SYGnO6dQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kz7lv65_wv5clvJw5v2SYGnO6dQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kz7lv65_wv5clvJw5v2SYGnO6dQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kz7lv65_wv5clvJw5v2SYGnO6dQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/sxpe9nQMcKk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/7680512624931832202/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/javascript-gaming-1-box2d.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/7680512624931832202?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/7680512624931832202?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/sxpe9nQMcKk/javascript-gaming-1-box2d.html" title="JavaScript Gaming: Часть 1. Box2d и основы Физики" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/javascript-gaming-1-box2d.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04FRn8-eyp7ImA9WhdWEkg.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-877392306321075502</id><published>2011-09-05T14:58:00.001-07:00</published><updated>2011-09-05T14:58:37.153-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-05T14:58:37.153-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="firefox.ru" /><category scheme="http://www.blogger.com/atom/ns#" term="товарный знак" /><category scheme="http://www.blogger.com/atom/ns#" term="Firefox Mail Service" /><category scheme="http://www.blogger.com/atom/ns#" term="СэйлНэймс" /><category scheme="http://www.blogger.com/atom/ns#" term="Роберт Гледенов" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Огненный лис" /><title>Mozilla отобрала товарный знак Firefox у российских киберсквоттеров</title><content type="html">&lt;br /&gt;	Коллегия палаты по патентным спорам РФ опубликовала &lt;a href="http://pravo.ru/store/doc/doc/2011_201342.pdf"&gt;заключение по результатам рассмотрения заявления компании Мозилла Фаундейшн&lt;/a&gt; (PDF) о досрочном прекращении правовой охраны товарного знака по свидетельству №348999 в связи с его неиспользованием. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Речь идёт о товарном знаке Firefox, который получил в 2006 году известный российский киберсквоттер Роберт Гледенов (компания «СэйлНэймс»), чтобы подтвердить права на домен firefox.ru, зарегистрированый годом раньше. Для этой же цели бизнесмен якобы ведёт и бизнес, продавая на указанном сайте какую-то почтовую программу под названием Firefox Mail Service по цене $1 за штуку. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Очевидно, что весь этот «бизнес» и товарный знак нужны только для одной цели — сохранить в собственности домен firefox.ru, чтобы потом продать его Mozilla за большие деньги. Но теперь на этих планах можно поставить крест. По мнению юристов, сейчас Mozilla может сама зарегистрировать товарный знак Firefox, после чего получает полное право претендовать на домен firefox.ru.&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Из заключения коллегии палаты по патентным спорам РФ:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;В адрес правообладателя (ООО «СэйлНэймс», 113035, Москва, ул.Садовническая, д. 14, стр. 2) и в адрес его представителя (ООО «Юридическое агентство «ИНТЕЛЛЕКТ И ПРАВО», Патентному поверенному РФ В.В. Клюкину, 103009, Москва, Вознесенский пер., д. 5), указанные в Госреестре и в материалах заявки №2006733994/50, в установленном порядке были направлены уведомления от 08.06.2011 о дате заседания коллегии Палаты по патентным спорам, назначенной на 22.08.2011, с приложением заявления и предложением представить отзыв по мотивам заявления.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Уведомление, направленное в адрес правообладателя, было возвращено с отметкой почты о том, что организация по указанному адресу не значится. Корреспонденция, направленная представителю правообладателя, возвращена за истечением срока хранения.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;На заседании коллегии Палаты по патентным спорам, состоявшемся 22.08.2011, правообладатель рассматриваемого знака отсутствовал, также им не был представлен отзыв по мотивам заявления. &lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Если бы компания «СэйлНэймс» получила письмо из палаты по патентным спорам РФ, то могла бы попытаться доказать факт использования товарного знака. Но, как сказано в вышеупомянутом заключении коллегии, «бремя доказывания использования товарного знака лежит на правообладателе. Направив уведомления правообладателю и его представителю, Палата по патентным спорам исчерпала свои возможности по извещению правообладателя о поступившем заявлении».&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Проще говоря, господам киберсквоттерам нужно внимательнее просматривать почту, а теперь уж поезд ушёл.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Сам Роберт Гледенов категорически не согласен с таким решением коллегии. Он &lt;a href="http://www.marker.ru/news/499471"&gt;утверждает&lt;/a&gt;, что ведёт нормальный бизнес в соответствии с российским законодательством, а название Firefox они сами придумали. «Так можно у любого товарный знак отнять», — негодует Гледенов.&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/firefox/"&gt;Хабрахабр - Огненный лис &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/firefox/127809/"&gt; Mozilla отобрала товарный знак Firefox у российских киберсквоттеров&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-877392306321075502?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xN3Dz3fxRALJ9r268VBfJC_wJ0Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xN3Dz3fxRALJ9r268VBfJC_wJ0Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xN3Dz3fxRALJ9r268VBfJC_wJ0Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xN3Dz3fxRALJ9r268VBfJC_wJ0Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/w7Ld64QbEx4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/877392306321075502/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/mozilla-firefox.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/877392306321075502?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/877392306321075502?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/w7Ld64QbEx4/mozilla-firefox.html" title="Mozilla отобрала товарный знак Firefox у российских киберсквоттеров" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/mozilla-firefox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIGQ3Y9eCp7ImA9WhdWEUo.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-5779653475445102648</id><published>2011-09-04T14:58:00.001-07:00</published><updated>2011-09-04T14:58:42.860-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-04T14:58:42.860-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google" /><category scheme="http://www.blogger.com/atom/ns#" term="google doodles" /><category scheme="http://www.blogger.com/atom/ns#" term="фредди меркьюри" /><title>Сегодняшний медиа-дудл в честь Фредди Меркьюри</title><content type="html">&lt;br /&gt;	Сегодня Google порадовал своих посетителей отличным &lt;a href="http://google.ru"&gt;медиа-дудлом&lt;/a&gt;, посвящённым 65-летию со дня рождения Фредди Меркьюри. Смотрим (дождитесь загрузки):&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://google.ru"&gt;&lt;img src="http://habrastorage.org/storage1/c1cc415a/82302a58/3b5f5c0b/3605a275.jpg"/&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/"&gt;Хабрахабр - Google &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/127714/"&gt; Сегодняшний медиа-дудл в честь Фредди Меркьюри&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-5779653475445102648?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/v5MCtfhcdFiONfVIV7Qvfu8ff2E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v5MCtfhcdFiONfVIV7Qvfu8ff2E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/v5MCtfhcdFiONfVIV7Qvfu8ff2E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v5MCtfhcdFiONfVIV7Qvfu8ff2E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/iTvYd9wkWSc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/5779653475445102648/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/blog-post_04.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/5779653475445102648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/5779653475445102648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/iTvYd9wkWSc/blog-post_04.html" title="Сегодняшний медиа-дудл в честь Фредди Меркьюри" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/blog-post_04.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QHQXs8eCp7ImA9WhdWEEU.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-8173642730742390038</id><published>2011-09-03T14:28:00.001-07:00</published><updated>2011-09-03T14:28:50.570-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-03T14:28:50.570-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google Desktop" /><category scheme="http://www.blogger.com/atom/ns#" term="эволюция ПО" /><category scheme="http://www.blogger.com/atom/ns#" term="десктопный софт" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google" /><category scheme="http://www.blogger.com/atom/ns#" term="облачные сервисы" /><category scheme="http://www.blogger.com/atom/ns#" term="OneBox" /><title>Прекращён выпуск Google Desktop и других программ Google</title><content type="html">&lt;br /&gt;	Очередным продуктом Google, который «уходит на пенсию», становится Google Desktop — офлайновая программа, надстройка для операционных систем. Она появилась в 2004 году и выполняла ряд функций, отсутствующих в ОС. Например, полнотекстовый поиск по всем документам на компьютере, включая кэш веб-страниц и текстовые файлы в разных форматах. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://habrastorage.org/storage1/15c886af/3d680b3a/38951e0e/76c01c94.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Но с переходом всего документооборота в онлайн надобность в такой программе исчезла. Действительно, почту, рабочие файлы, книги и другие текстовые документы теперь привычно хранить в Gmail и Google Docs. Там есть полнотекстовый поиск, он также появился практически в каждой ОС. Да и вообще какой смысл для Google улучшать чужие «операционки», когда у неё уже появились несколько своих собственных (Android, Chrome OS) и облачные сервисы? Поэтому проект Google Desktop решено закрыть, что вполне логично.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://googledesktop.blogspot.com/2011/09/google-desktop-update.html"&gt;Последнее сообщение&lt;/a&gt; в официальном блоге &lt;i&gt;Inside Google Desktop&lt;/i&gt;, вероятно, действительно станет последним. С 14 сентября они обещают убрать программу с сервера, так что даже старую версию нельзя будет скачать с офсайта. Существующий инсталляции больше не будут обновляться. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Кроме того, Google &lt;a href="http://googleblog.blogspot.com/2011/09/fall-spring-clean.html"&gt;прекращает разработку и распространение&lt;/a&gt; следующих продуктов: &lt;a href="http://pack.google.com/intl/en/pack_installer.html"&gt;Google Pack&lt;/a&gt;, Aardvark, Fast Flip, Image Labeler, Google Notebook (все записки автоматически экспортируются в Google Docs), Sidewiki и Subscribed Link.&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/"&gt;Хабрахабр - Google &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google/127656/"&gt; Прекращён выпуск Google Desktop и других программ Google&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-8173642730742390038?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nE23BzxL-SdsmZimd-iEYgtnFhQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nE23BzxL-SdsmZimd-iEYgtnFhQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nE23BzxL-SdsmZimd-iEYgtnFhQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nE23BzxL-SdsmZimd-iEYgtnFhQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/lM87ZayK-QE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/8173642730742390038/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/google-desktop-google.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/8173642730742390038?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/8173642730742390038?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/lM87ZayK-QE/google-desktop-google.html" title="Прекращён выпуск Google Desktop и других программ Google" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/google-desktop-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YAQXY_cSp7ImA9WhdXGUo.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-5526206954174829138</id><published>2011-09-02T08:59:00.001-07:00</published><updated>2011-09-02T08:59:00.849-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-02T08:59:00.849-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ide" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Веб-разработка" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="github" /><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="облака" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="html" /><category scheme="http://www.blogger.com/atom/ns#" term="css" /><title>[Перевод] Программирование в облаке: Небольшой обзор Онлайн-IDE</title><content type="html">&lt;br /&gt;	Похоже, что всё сегодня переходит в «облака», которые являются туманным термин для определения программных приложений и хранилищ данных, размещенных на удаленных серверах где-то далеко по всему Интернету. Так что, если всё наше ПО переходит на облака, то почему бы не перейти инструментам, используемым для создания этого ПО? Ну, а некоторые инструменты, есть там прямо сейчас. Черт, даже GitHub недавно добавил базовые возможности редактирования. В этой статье мы рассмотрим некоторые многообещающие Онлайн-IDE. &lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;&lt;b&gt;Pastebin'ы: Младшие братья Онлайн-IDE&lt;/b&gt;&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Первая категория онлайн-IDE, которые мы будем рассматривать, я на самом деле не могу назвать полноценными IDE. Эти легковесные IDE-подобные веб-инструменты больше похожи pastebin'ы на стероидах. Pastebin'ы предоставляют основные возможности редактирования текста и такие функции, как подсветка синтаксиса, но не поддержку контроля версий или деплоймента. Вместо этого, pastebin'ы позволяют сохранять и расшаривать фрагменты кода между другими пользователями. Следующие веб-инструменты выходит за рамки типичных pastebin'ов в том, что они также позволяют выполнять код. Эта категория недо-IDE отлично подходит для чего-то простенького, но не для полноценной разработки. Главной фишкой этих веб-инструментов является возможность быстро и легко выполнять и совместно использовать фрагменты кода. Мы рассмотрим три из них: JS Fiddle, Python Fiddle и ideone. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;JS Fiddle&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-AeOxBZzoNrc/TluOBFVk5XI/AAAAAAAAABI/BOvjw0JOBjA/s1600/1314623024676.png"&gt;&lt;img src="http://3.bp.blogspot.com/-AeOxBZzoNrc/TluOBFVk5XI/AAAAAAAAABI/BOvjw0JOBjA/s1600/1314623024676.png" alt="image" align="center"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://jsfiddle.net/"&gt;JS Fiddle&lt;/a&gt;&lt;/b&gt; не является полнофункциональной IDE, но отличное средство для для быстрого опробования каких-либо идей с HTML, JavaScript, CSS. Веб-сайт содержит отдельные окна для HTML, JavaScript, CSS и конечного результата. Редакторы поддерживают подсветку синтаксиса. JS Fiddle позволяет при проверке JavaScript-фрагментов выбрать из нескольких версий каждой из крупных библиотек JavaScript, таких как JQuery, Mootools, Prototype, YUI, Dojo. Он даже позволяет сделать ссылку на URL, где удаленно размещены ваши JavaScript и CSS-файлы. Ваш «фрагменты» (fiddles) также могут быть сохранены и совместно использоваться с другими пользователями. И ещё интегрирован JSLint.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Python Fiddle&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Q59vUV-U7j0/TluQcqzFYDI/AAAAAAAAABY/1Wt-1ZSSK84/s1600/1314623646767.png"&gt;&lt;img src="http://1.bp.blogspot.com/-Q59vUV-U7j0/TluQcqzFYDI/AAAAAAAAABY/1Wt-1ZSSK84/s1600/1314623646767.png" alt="image" align="center"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://pythonfiddle.com/"&gt;Python Fiddle&lt;/a&gt;&lt;/b&gt; похож на JS Fiddle за исключением того, что ориентирован на Python, а не комбинацию HTML/CSS/JavaScript. Python Fiddle обеспечивает песочницу для тестирования фрагментов кода на Python, а также обеспечивает поддержку многих популярных Python-библиотек. Как и JS Fiddle, Python Fiddle поддерживает подсветку синтаксиса, и ваши фрагменты можно сохранять и расшаривать для других пользователей. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;ideone&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-i-ZaeGNctDU/TluRHXAUgpI/AAAAAAAAABg/hyUiY5xq6FQ/s1600/1314623818256.png"&gt;&lt;img src="http://4.bp.blogspot.com/-i-ZaeGNctDU/TluRHXAUgpI/AAAAAAAAABg/hyUiY5xq6FQ/s1600/1314623818256.png" alt="image" align="center"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://ideone.com/"&gt;ideone&lt;/a&gt;&lt;/b&gt; на сегодняшний день является самым амбициозным из известных мне pastebin'ов. Так же, как JS Fiddle и Python Fiddle, ideone обеспечивает подсветку синтаксиса и возможность сохранять и обмениваться фрагментами кода. Однако, в отличие от двух других, ideone поддерживает более чем 20 различных языков, включая C, C++, C#, Java, JavaScript, Go, Groovy, Objective-C, Perl, Python и Ruby. ideone стремится быть универсальным средством для тестирования ваших фрагментов кода. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;&lt;b&gt;«А теперь попросим подняться тех, кто станет &lt;u&gt;настоящими&lt;/u&gt; облачными IDE»&lt;/b&gt;&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Что отличает реальные облачные IDE от своих младших братьев так это, что они включают в себя поддержку для импорта проектов, работу с системами контроля версий (в первую очередь Git), а в некоторых случаях поддержку деплоймента. Из полнофункциональных онлайновых IDE мы будем исследовать Eclipse Орион, Cloud 9 IDE, и eXo Cloud IDE.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Eclipse Orion&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-PPxM_yAD0Bo/Tlvo9hSVd8I/AAAAAAAAABw/0onABxKHlcI/s1600/1314646305848.png"&gt;&lt;img src="http://4.bp.blogspot.com/-PPxM_yAD0Bo/Tlvo9hSVd8I/AAAAAAAAABw/0onABxKHlcI/s1600/1314646305848.png" alt="image" align="center"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.eclipse.org/orion/"&gt;Eclipse Orion&lt;/a&gt;&lt;/b&gt; представляет собой онлайновую IDE и является частью Eclipse Foundation. IDE в первую очередь ориентированно на веб-языки программирования, такие как HTML, JavaScript, CSS, но включает начальную поддержку Java. Orion отличается от других онлайновых сред разработки тем, что это не обязательно представляет из себя хостящееся решение, а на самом деле предназначен для развертывания в частных условиях на собственных серверах пользователей. Вы можете скачать Orion и разместить у себя, например, ваша компания может запустить у себя внутри корпоративной сети Orion для всех разработчиков компании или даже для какого-то конкретного проекта. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;С самого начала Orion позволяет инициализировать новые проекты путем клонирования из Git (единственная поддерживаемая система контроля версий), загрузкой ZIP файл вашего проекта, либо путем создания нового сайта HTML5 с использованием initializr. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Для тестирования я клонировал репозиторий в Git. По непонятным причинам мне пришлось использовать HTTP для Git вместо SSH, так как я нигде не смог найти, в каком месте указывается SSH-ключ. Orion предоставляет графический интерфейс для работы с Git, но он может быть немного запутанным. Хотя я понимаю, что использование Git'овской команды «status» перед выполнением коммита — это хорошая практика, но Orion скрывает интерфейс коммита под опцией окна репозитория «Показать Статус», что очень путает. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Редактор довольно хорош. Он поддерживает номера строк и подсветку синтаксиса. Поддержка структуры кода (outlining) и контекстной помощи разбросана. В настоящее время структура кода поддерживается только для JavaScript и HTML, а контекстная помощь доступна только для CSS. Поддерживаются основные команды редактирования, такие как Alt+Up/Down, чтобы перемещать строки, Ctrl+D для удаления строки, а Ctrl+L для перехода к номеру строки. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Дополнительную информацию вы можете получить в Eclipse'овском &amp;quot;&lt;a href="http://wiki.eclipse.org/Orion/Getting_Started_with_Orion"&gt;Руководство по началу работы&lt;/a&gt;&amp;quot; для Orion. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Cloud9 IDE&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-uwo63r8w1u0/TlvqPUlyr3I/AAAAAAAAACA/XqMZ9Ems29U/s1600/1314646632329.png"&gt;&lt;img src="http://2.bp.blogspot.com/-uwo63r8w1u0/TlvqPUlyr3I/AAAAAAAAACA/XqMZ9Ems29U/s1600/1314646632329.png" alt="image" align="center"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://c9.io/"&gt;Cloud9 IDE&lt;/a&gt;&lt;/b&gt; это ещё одна веб-IDE, специализирующаяся на веб-разработке, и единственная в нашем списке, которая является платным решением. Cloud9 IDE является бесплатной для публичных (видимых всем) проектов, но для частных проектов стоимость составляет $15 в месяц. IDE поддерживает HTML, JavaScript, CSS, а также включает в себя поддержку Ruby и PHP. Из онлайновых IDE, Cloud9 является единственной в этом списке, которая поддерживает Mercurial, а также Git. На самом деле, с самого начала встроена поддержка GitHub и BitBucket и вы можете создать свой аккаунт в Cloud9 ID, войдя в систему через один из этих сервисов. Когда я создавал свой аккаунт, это вообще было единственным способом (надеюсь, что это было исправлено, но я не хочу создавать новый аккаунт для проверки). &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;При условии, что вы войдите через GitHub или BitBucket, импорт проектов является элементарным. Вы даже не должны быть знакомы с консольной версий Git или Mercurial, хотя, полная поддержка контроля версий осуществляется через консоль в нижней части экрана. Инструмент предоставляет SSH-ключ, который вы можете зарегистрировать в GitHub, чтобы не видеть получать каждый раз запрос при попытке закоммитить код. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Редактор очень гибкий и поддерживает некоторые тонкости, знакомые нам по Eclipse (Alt+Up/Down для перемещения строк кода, Ctrl+D для удаления строки, Ctrl+L для перехода к строке). Подсветка синтаксиса великолепна, и есть поддержка «украшения» кода. Редактор при вводе уведомляет вас об ошибках в коде. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Ваши HTML-страницы могут быть протестированы прямо в интерфейсе. Если вам нужен деплоймент вне хоста, Cloud9 IDE поддерживает развертывание в Joyent и Heroku. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;eXo Cloud IDE&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-nkvec1b0f4I/Tlvpq7oltpI/AAAAAAAAAB4/Wed3mLuMvXE/s1600/1314646487216.png"&gt;&lt;img src="http://4.bp.blogspot.com/-nkvec1b0f4I/Tlvpq7oltpI/AAAAAAAAAB4/Wed3mLuMvXE/s1600/1314646487216.png" alt="image" align="center"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://cloud-ide.com/"&gt;eXo Cloud IDE&lt;/a&gt;&lt;/b&gt; является последней онлайновой IDE, которую мы будем рассматривать и, возможно, самой амбициозной. eXo Cloud IDE направлена на поддержку трех веб-языков, а также Ruby, Java и JSP, PHP. Она также обеспечивает множество вариантов развертывания: CloudBees, CloudFoundry, Heroku, и Red Hat OpenShift.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;eXo Cloud IDE поддерживает Git для управления версиями, а также содержит отличное меню в верхней части экрана для всех Git-операций. В меню «Window» спрятана утилита «Ssh Key Manager», позволяющая настроить SSH-ключ для использования с удаленным хостингом Git (таких, как Github). Импорт проекта из Git был немного сложнее с eXo Cloud IDE в том, что сначала вы должны были создать папку, инициализировать репозиторий в папке, а затем выполнить клонирование. Большинство других сервисов позволят вам начать сразу с «клонирования» и берут на себя все остальное. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Редактор достаточно хорош. Он поддерживает подсветку синтаксиса и номера строк. Но он не имеет некоторых фишек редактирования текста, которые я уже видел в других (Alt+Up/Down отсутствует, но Ctrl+D для удаления строки и Ctrl+L для навигации по линии работают). Он поддерживает outline для навигации по вашему коду. Ещё одно чрезвычайно полезное свойство — eXo Cloud IDE поддерживает минимальная форму автодополнения кода (со стандартным Ctrl+Пробел). eXo Cloud IDE обеспечивает базовое автозавершение для кода на HTML, JavaScript, CSS, и Java, Ruby и PHP. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;&lt;b&gt;Сравнение&lt;/b&gt;&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;В следующей таблице приведено сравнение различных особенностей онлайновых IDE: &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;IDE&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Стоимость&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Языки&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Контроль версий&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Деплоймент&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;JS Fiddle&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Бесплатна&lt;/td&gt;&lt;br /&gt;&lt;td&gt;HTML, JavaScript, CSS&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Нет&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Нет&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Python Fiddle&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Бесплатна&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Python&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Нет&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Нет&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Eclipse Orion&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Бесплатна&lt;/td&gt;&lt;br /&gt;&lt;td&gt;HTML, JavaScript, CSS, Java&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Git&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Нет&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;eXo Cloud IDE&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Бесплатна&lt;/td&gt;&lt;br /&gt;&lt;td&gt;HTML, JavaScript, CSS, Ruby, Java, PHP&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Git&lt;/td&gt;&lt;br /&gt;&lt;td&gt;CloudBees, CloudFoundry, Heroku, OpenShift&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;&lt;b&gt;Заключение&lt;/b&gt;&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Пока я не вижу онлайн IDE, с помощью которых можно решать большую часть задач разработчиков, но думаю, что они могут являться полезным дополнением к инструментарию любого разработчика. Большая часть создана для веб-разработчиков, так как большинство инструментов направлены на разработку HTML, JavaScript, CSS. Инструменты типа pastebin полезны для быстрого тестирования новых концептов и не требуют много накладных расходов по сравнению с полноценными IDE. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Git — явный победитель, когда дело доходит до поддержки контроля версий в онлайновых IDE. GitHub, в частности, этому очень способствует (это отличный сервис, поэтому я могу понять, почему). Только одна IDE предлагает поддержку Mercurial, а любителям Subversion не повезло в будущем в онлайн-мире. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Лично мне не хватает функций нормального автодополнения кода и инструментов рефакторинга в нынешнем поколении онлайновых IDE. Я думаю, что поддержка этих функций будет появляться и улучшаться. Я вижу, что через несколько лет в конечном счете появятся команды разработчиков, создающие и развертывающие весь их код прямо из веб-браузера.&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/webdev/"&gt;Хабрахабр - Веб-разработка &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/webdev/127567/"&gt; [Перевод] Программирование в облаке: Небольшой обзор Онлайн-IDE&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-5526206954174829138?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gF3ThzpJR28VwIdLYdrUYHIm86s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gF3ThzpJR28VwIdLYdrUYHIm86s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gF3ThzpJR28VwIdLYdrUYHIm86s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gF3ThzpJR28VwIdLYdrUYHIm86s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/IhxmYWOV-wM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/5526206954174829138/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/ide.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/5526206954174829138?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/5526206954174829138?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/IhxmYWOV-wM/ide.html" title="[Перевод] Программирование в облаке: Небольшой обзор Онлайн-IDE" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-AeOxBZzoNrc/TluOBFVk5XI/AAAAAAAAABI/BOvjw0JOBjA/s72-c/1314623024676.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/ide.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYBQXg_cCp7ImA9WhdXGU0.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-7445787973486818602</id><published>2011-09-01T12:59:00.001-07:00</published><updated>2011-09-01T12:59:10.648-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T12:59:10.648-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google Chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="расширения" /><category scheme="http://www.blogger.com/atom/ns#" term="facebook" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Chrome" /><title>«+1» и «Like» на панели Chrome</title><content type="html">&lt;br /&gt;	&lt;img src="http://habrastorage.org/storage1/f7dcb7a4/85b440ca/f526dbb3/0f88003a.png"/&gt; &lt;img src="http://habrastorage.org/storage1/60084095/729c9e79/bd371f45/46f0fcc5.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Пару дней назад в каталоге расширений для Google Chrome появилось новое &lt;a href="https://chrome.google.com/webstore/detail/jgoepmocgafhnchmokaimcmlojpnlkhp"&gt;расширение&lt;/a&gt;, чей потенциал может быть многообещающим.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Оно добавляет на панель браузера кнопку «+1», позволяя делиться &lt;i&gt;любой&lt;/i&gt; интернет-страницей всего за один простой клик. Как и в случае, если бы вы нажали кнопку «+1», расположенную на сайте, об этом узнают читатели вашей ленты в Google+ и… конечно, сам поисковый гигант. Теоретически, такая функция может оказаться мощным инструментом для усиления влияния Google на рынке социальных сетей, особенно, учитывая его &lt;a href="http://habrahabr.ru/blogs/google/127466/"&gt;обещания&lt;/a&gt; увеличить значение голосов «+1» для ранжирования сайтов в результатах поиска.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Сегодня на эту инициативу ответили разработчики Facebook, выпустив &lt;a href="https://chrome.google.com/webstore/detail/jehaijobeonhempacbjelicepjkhoidi"&gt;аналогичное расширение&lt;/a&gt; с кнопкой «Like». Точно так же, оно позволяет нажать «Мне нравится» на любой интернет-странице, используя кнопку на панели браузера Chrome.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;При серфинге по сети оба расширения показывают число людей, которым уже понравилась страница, на которой вы находитесь. В связи с этим, едва ли не самое любопытное здесь — вопрос приватности. Из соглашений следует, что и то, и другое расширение отправляют все адреса посещенных вами страниц соответственно в Google и Facebook.&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google_chrome/"&gt;Хабрахабр - Google Chrome &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google_chrome/127545/"&gt; «+1» и «Like» на панели Chrome&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-7445787973486818602?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lJ6XZmKEN7kf7w8nQzOgSkpBvpY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lJ6XZmKEN7kf7w8nQzOgSkpBvpY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lJ6XZmKEN7kf7w8nQzOgSkpBvpY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lJ6XZmKEN7kf7w8nQzOgSkpBvpY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/RNu1HYssjsM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/7445787973486818602/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/1-like-chrome.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/7445787973486818602?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/7445787973486818602?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/RNu1HYssjsM/1-like-chrome.html" title="«+1» и «Like» на панели Chrome" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/1-like-chrome.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIASHk9eip7ImA9WhdXGEQ.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-2379070443655962026</id><published>2011-09-01T09:29:00.001-07:00</published><updated>2011-09-01T09:29:09.762-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T09:29:09.762-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="переменные" /><category scheme="http://www.blogger.com/atom/ns#" term="поднятие" /><category scheme="http://www.blogger.com/atom/ns#" term="функции" /><category scheme="http://www.blogger.com/atom/ns#" term="hosting" /><title>[Перевод] Область видимости в JavaScript и «поднятие» переменных и объявлений функций</title><content type="html">&lt;br /&gt;	Вы знаете, какое значение выведет этот код на JavaScript?&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;var foo = 1; &lt;br /&gt;function bar() { &lt;br /&gt;    if (!foo) { &lt;br /&gt;        var foo = 10; &lt;br /&gt;    } &lt;br /&gt;    alert(foo); &lt;br /&gt;} &lt;br /&gt;bar();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Если вас удивляет, что выведется «10», то следующий код вас и вовсе запутает:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;var a = 1; &lt;br /&gt;function b() { &lt;br /&gt;    a = 10; &lt;br /&gt;    return; &lt;br /&gt;    function a() {} &lt;br /&gt;} &lt;br /&gt;b(); &lt;br /&gt;alert(a);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;В этом случае браузер выведет «1». Так что, собственно, происходит? Хотя такое поведение кажется странным, опасным и сбивающим с толку, на самом деле это очень мощное и выразительное средство JavaScript. Я не знаю, есть ли официальное название для такого поведения, но мне нравится использовать термин «поднятие»(«hoisting»). В этой статье я попытаюсь пролить свет на этот механизм языка, но сначала давайте поговорим об области видимости в JavaScript.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Область видимости в JavaScript&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Одна из причин, приводящих в замешательство новичков, — это область видимости. Вообще, не только новичков. Я встречал много опытных JavaScript-разработчиков, которые не понимают механизм области видимости в JavaScript. Причина в том, что внешне JavaScript очень похож на любой другой Си-подобный язык.&lt;br/&gt;&lt;br /&gt;Давайте рассмотрим следующий код на Cи:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="cpp"&gt;#include &amp;lt;stdio.h&amp;gt; &lt;br /&gt;int main() { &lt;br /&gt;    int x = 1; &lt;br /&gt;    printf(&amp;quot;%d, &amp;quot;, x); // 1 &lt;br /&gt;    if (1) { &lt;br /&gt;        int x = 2; &lt;br /&gt;        printf(&amp;quot;%d, &amp;quot;, x); // 2 &lt;br /&gt;    } &lt;br /&gt;    printf(&amp;quot;%d\n&amp;quot;, x); // 1 &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Эта программа выведет 1, 2, 1, потому что Си и все остальные Си-подобные языки реализуют &lt;strong&gt;области видимости на уровне блоков кода&lt;/strong&gt;. Когда исполняется новый блок кода, например условие if, новые переменные, объявленные в нём, не повлияют на переменные внешней области видимости.&lt;br/&gt;&lt;br /&gt;Но не в случае JavaScript. Попробуйте запустить вот этот код в Firebug:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;var x = 1; &lt;br /&gt;console.log(x); // 1 &lt;br /&gt;if (true) { &lt;br /&gt;    var x = 2; &lt;br /&gt;    console.log(x); // 2 &lt;br /&gt;} &lt;br /&gt;console.log(x); // 2&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;На этот раз будут выведены числа 1, 2, 2. Это связано с тем, что в JavaScript используется &lt;strong&gt;область видимости на уровне функций&lt;/strong&gt;. Это совсем не то, что мы привыкли видеть в языках программирования, вроде Си. Блоки кода, вроде того, который у нас идёт сразу после if, &lt;strong&gt;не создают&lt;/strong&gt; новую область видимости. Только функции создают новые области видимости.&lt;br/&gt;&lt;br /&gt;Для многих программистов, привыкших к Си, C++, C# или Java такое поведение очень неожиданное и неприятное. К счастью, благодаря гибкости функций JavaScript, можно обойти эту проблему. Чтобы создать временную область видимости внутри функции, достаточно сделать следующее:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;function foo() { &lt;br /&gt;    var x = 1; &lt;br /&gt;    if (x) { &lt;br /&gt;        (function () { &lt;br /&gt;            var x = 2; &lt;br /&gt;            // какой-то код&lt;br /&gt;        }()); &lt;br /&gt;    } &lt;br /&gt;    // x всё ещё 1. &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;Такой подход достаточно гибок и может быть использован везде, где вам нужна временная область видимости, не только внутри блоков кода. Но я настаиваю на том, чтобы вы всё-таки потратили своё время, чтобы понять реализацию области видимости в JavaScript. Это довольно мощная особенность языка, которая мне очень нравится. Если вы понимаете область видимости, вам проще будет разобраться в «поднятии» переменных и объявлений функций.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Объявления, именование и «поднятие» переменных и функций&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;В JavaScript существует четыре основных способа появления идентификатора в области видимости:&lt;br/&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Внутренние механизмы языка&lt;/strong&gt;: например, во всех областях видимости доступны this и arguments.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Формальные параметры&lt;/strong&gt;: у функций могут быть именованные формальные параметры, область видимости которых ограничена телом функции.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Объявления функций&lt;/strong&gt;: объявленные в виде function foo() {}.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Объявления переменных&lt;/strong&gt;: например, var foo;.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br/&gt;&lt;br /&gt;Интерпретатор JavaScript всегда незаметно для нас перемещает («поднимает») объявления функций и переменных в начало области видимости. Формальные параметры функций и встроенные переменные языка, очевидно, изначально уже находятся в начале. Это значит, что этот код:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;function foo() { &lt;br /&gt;    bar(); &lt;br /&gt;    var x = 1; &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;на самом деле интерпретируется так:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;function foo() { &lt;br /&gt;    var x; &lt;br /&gt;    bar(); &lt;br /&gt;    x = 1; &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;Оказывается, не важно, будет ли вообще выполнена строка, в которой происходит объявление. Следующие две функции эквивалентны:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;function foo() { &lt;br /&gt;    if (false) { &lt;br /&gt;        var x = 1; &lt;br /&gt;    } &lt;br /&gt;    return; &lt;br /&gt;    var y = 1; &lt;br /&gt;} &lt;br /&gt;function foo() { &lt;br /&gt;    var x, y; &lt;br /&gt;    if (false) { &lt;br /&gt;        x = 1; &lt;br /&gt;    } &lt;br /&gt;    return; &lt;br /&gt;    y = 1; &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;Обратите внимание, что присваивание значений переменным не поднимается вместе с их объявлением. Поднимаются только объявления переменных. В случае с функциями, поднимается вся функция целиком. Существуют два основных способа объявить функцию, давайте их рассмотрим:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;function test() { &lt;br /&gt;    foo(); // TypeError &amp;quot;foo is not a function&amp;quot; &lt;br /&gt;    bar(); // &amp;quot;this will run!&amp;quot; &lt;br /&gt;    var foo = function () { // функциональное выражение, присвоенное локальной переменной 'foo' &lt;br /&gt;        alert(&amp;quot;this won't run!&amp;quot;); &lt;br /&gt;    } &lt;br /&gt;    function bar() { // объявление функции с именем 'bar' &lt;br /&gt;        alert(&amp;quot;this will run!&amp;quot;); &lt;br /&gt;    } &lt;br /&gt;} &lt;br /&gt;test();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;в этом случае поднимается только функция bar. Идентификатор «foo» также поднимается, но не анонимная функция — она остаётся на месте.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Вот мы и описали основные моменты «поднятия» переменных и функций. Конечно, JavaScript не был бы сам собой, если бы не было особых случаев, в которых всё немного сложнее.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Разрешение имён&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Самый важный особый случай, который стоит иметь в виду, — это порядок разрешения имён. Вспомните, есть четыре способа появления идентификаторов в области видимости. Именно в том порядке, в котором я их упомянул, и происходит разрешение имён. В общем случае, если имя уже определено, оно никогда не будет переопределено другой сущностью с таким же именем. То есть объявление функции имеет приоритет над объявлениями переменной с таким же именем. Но это совсем не означает, что присваивание переменной значение не заменит функцию, просто её определение будет проигнорировано.&lt;br/&gt;&lt;br /&gt;Есть несколько исключений:&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Встроенный идентификатор arguments ведёт себя странно. Он как будто объявляется сразу после формальных аргументов функции и перед объявлениями функций. Это означает, что если у функции есть формальный аргумент arguments, у него будет приоритет над встроенным, даже если его не передадут при вызове функции. Это плохая особенность JavaScript. Не используйте формальный аргумент с именем arguments.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Если вы попробуете использовать this в качестве идентификатора, произойдёт ошибка SyntaxError. Это хорошая особенность.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Если в списке формальных параметров функции несколько из них имеют одинаковое имя, тот параметр, который упоминается последним, имеет приоритет. Даже если его не передали при вызове функции.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Именованные функциональные выражения&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Вы можете давать имена функциям, определённым с помощью функциональных выражений, используя синтаксис определения функций. Это не приводит к объявлению функции, а следовательно, имя функции ни добавляется в область видимости, ни поднимается вместе с телом функции в начало области видимости. Вот несколько строк, чтобы проиллюстрировать, что я имею в виду:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;foo(); // TypeError &amp;quot;foo is not a function&amp;quot; &lt;br /&gt;bar(); // работает &lt;br /&gt;baz(); // TypeError &amp;quot;baz is not a function&amp;quot; &lt;br /&gt;spam(); // ReferenceError &amp;quot;spam is not defined&amp;quot; &lt;br /&gt; &lt;br /&gt;var foo = function () {}; // анонимное функциональное выражени (поднимается 'foo') &lt;br /&gt;function bar() {}; // объявление функции (поднимаются 'bar' и тело функции) &lt;br /&gt;var baz = function spam() {}; // именованное функциональное выражение (поднимается только 'baz') &lt;br /&gt; &lt;br /&gt;foo(); // работает &lt;br /&gt;bar(); // работает &lt;br /&gt;baz(); // работает &lt;br /&gt;spam(); // ReferenceError &amp;quot;spam is not defined&amp;quot; &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Как писать код, обладая такими знаниями&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Итак, теперь вы понимаете область видимости и «поднятие» переменных и объявлений функций. Что это означает применительно к написанию кода на JavaScript? Самое главное — всегда объявлять ваши переменные, используя var. Я &lt;strong&gt;настаиваю&lt;/strong&gt; на том, чтобы у вас был &lt;em&gt;ровно один&lt;/em&gt; var на область видимости и чтобы он располагался в её начале. Если вы заставите себя так делать, у вас никогда не будет проблем, связанных с «поднятием». Тем не менее, это может привести к тому, что сложно следить за переменными, которые объявлены в текущей области видимости. Я рекомендую использовать JSLint с включённой опцией onevar, чтобы вынудить вас так делать. Если вы будете так всё делать, ваш код будет выглядеть примерно так:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;code class="javascript"&gt;/*jslint onevar: true [...] */ &lt;br /&gt;function foo(a, b, c) { &lt;br /&gt;    var x = 1, &lt;br /&gt;        bar, &lt;br /&gt;        baz = &amp;quot;something&amp;quot;; &lt;br /&gt;} &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Что говорит стандарт&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Достаточно полезно обращаться к стандарту ECMAScript напрямую, чтобы понять, как всё работает. Вот что в нём говорится про объявление переменных и область видимости(секция &lt;a href="http://javascript.ru/ecma/part12#a-12.2"&gt;12.2.2&lt;/a&gt;):&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;Если инструкция переменной встречается внутри ОбъявленияФункции, переменные объявляются внутри локальной области видимости для данной функции согласно описанию в разделе 10.1.3. В противном случае они объявляются в глобальной области видимости (т.е. создаются как поля глобального объекта согласно описанию в разделе 10.1.3) с использованием атрибутов свойств { DontDelete }. Переменные создаются, когда происходит вход в область выполнения. Блок не определяет новой области выполнения. Только Программа и ОбъявлениеФункции создают новую область видимости. Переменные инициализируются при создании значением undefined. Переменной, для которой определён Инициализатор, присваивается значение его ВыраженияПрисваивания в момент выполнения ИнструкцииПеременной, а не в момент создания переменной.&lt;br/&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Я надеюсь, эта статья пролила немного света на особенность JavaScript, которая так часто многих приводит в замешательство. Я старался быть как можно более последовательным, чтобы не запутать вас ещё сильнее. Если я в чём-то ошибся или что-то пропустил, пожалуйста, дайте мне знать.&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/javascript/"&gt;Хабрахабр - JavaScript &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/javascript/127482/"&gt; [Перевод] Область видимости в JavaScript и «поднятие» переменных и объявлений функций&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-2379070443655962026?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kqVRYYJC3LS9W33KjWkvXc3jcsI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kqVRYYJC3LS9W33KjWkvXc3jcsI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kqVRYYJC3LS9W33KjWkvXc3jcsI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kqVRYYJC3LS9W33KjWkvXc3jcsI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/c5UoPN0YVmQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/2379070443655962026/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/javascript.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/2379070443655962026?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/2379070443655962026?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/c5UoPN0YVmQ/javascript.html" title="[Перевод] Область видимости в JavaScript и «поднятие» переменных и объявлений функций" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/javascript.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEABQ3o7eCp7ImA9WhdXGEQ.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-9214502571986862779</id><published>2011-09-01T08:59:00.003-07:00</published><updated>2011-09-01T08:59:12.400-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T08:59:12.400-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Дизайн в IT" /><category scheme="http://www.blogger.com/atom/ns#" term="работоспособная система" /><title>Работоспособные системы в IT и автомобиль</title><content type="html">&lt;br /&gt;	&lt;img src="http://habrastorage.org/storage1/d47866ec/1eeb31df/18210686/1b59c243.jpg"/&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;a name='more'&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;&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/design/"&gt;Хабрахабр - Дизайн в IT &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/design/127485/"&gt; Работоспособные системы в IT и автомобиль&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-9214502571986862779?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uYFEb_0a1xzMK8BNq_u0rcc_wiA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uYFEb_0a1xzMK8BNq_u0rcc_wiA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uYFEb_0a1xzMK8BNq_u0rcc_wiA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uYFEb_0a1xzMK8BNq_u0rcc_wiA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/8yO0wv3jIqI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/9214502571986862779/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/it.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/9214502571986862779?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/9214502571986862779?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/8yO0wv3jIqI/it.html" title="Работоспособные системы в IT и автомобиль" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAASH4zeip7ImA9WhdXGEQ.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-3374239066407034179</id><published>2011-09-01T08:59:00.001-07:00</published><updated>2011-09-01T08:59:09.082-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T08:59:09.082-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="идея для стартапа" /><category scheme="http://www.blogger.com/atom/ns#" term="события" /><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Идеи для стартапов" /><category scheme="http://www.blogger.com/atom/ns#" term="каталог событий" /><title>Глобальная система управления событиями. Постановка проблемы</title><content type="html">&lt;br /&gt;	Я по образованию системный аналитик. За 5 лет учебы на данной специальности я понял, что &lt;a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7"&gt;системный анализ&lt;/a&gt; — это искусство решения проблем практически в любой деятельности человека. Не важно, что вы делаете — создаете стартап, открываете ресторан или организуете конференцию, если вы на первоначальном этапе хорошо изучить проблематику той области, в которой вы собираетесь внести изменения, то эффективность вашей деятельности увеличиться. Не даром говорят, выявленная проблема — это 50% решения. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В этой статье я хочу поделиться одной идеей для стартапа, которая появилась из жизни. Дело в том, что я люблю посещать всевозможные события: концерты, фестивали, опен эиры и т.д. И в том месте, где я сейчас обитаю, вокруг меня происходят десятки разных событий (подобная ситуация свойствена всем большим городам). И передо мной периодически возникает следующая проблема: каким образом быть в курсе всех актуальных и интересных событий, проходящих вокруг меня. Я начал изучать эту тему и понял, что на данный момент в интернете отсутствует эффективное решение по поиску событий. Более того я исследовал ситуацию еще и со стороны организации событий, что тоже показало свои проблемные области. Под катом вы можете ознакомиться с результатами моего небольшого исследования. &lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Участие в событие&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Я провел небольшое исследование на тему того, какие решения есть на данный момент в интернете в области поиска событий. &lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Социальные сети&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Сейчас большинство людей публикуют свои события в социальных сетях. Они могут частными (private) или публичными (public). Публичные события можно посмотреть через каталоги событий (vkontakte, facebook). Чтобы получить доступ к частным событиям необходимо иметь в друзьях организатора события или состоять в одной групп-организаторов&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Региональные каталоги событий&lt;/b&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.kudapoiti.info"&gt;kudapoiti.info&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.moscowout.ru"&gt;moscowout.ru&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.lookatme.ru/cities/moscow/events"&gt;lookatme.ru&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Здесь либо сайты сами собирают события и на некоторых есть возможность организаторам самим публиковать события.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Международные каталоги событий&lt;/b&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://eventful.com"&gt;eventful.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.whatsonwhen.com"&gt;whatsonwhen.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Здесь особый интерес представляет сайт eventful. Работает он следующим образом. Пользователи из разных стран публикуют события. Все события собираются в каталоге, где главным основанием для классификации служит местоположение (location). После этого любой пользователь может найти интересующий его набор событий, указав свое местоположение. Или можно авторизоваться на сайте через facebook и тогда система сама будет выдавать события из твоей зоны обитания. Там еще есть куча всяких фич, типа сервиса &lt;a href="http://eventful.com/demand"&gt;demand it&lt;/a&gt; — возможность фанатам какого-либо исполнителя коллективно влиять на проводимые события в их зоне обитания. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Тематические каталоги событий&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Есть целая плеяда сайтов, где аккумулируются события по разным критериям.&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://habrahabr.ru/events/coming/"&gt; habrahabr.ru &lt;/a&gt; — It-события&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://events.linkedin.com"&gt;linkedin.com&lt;/a&gt; — бизнес-события&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.last.fm/events"&gt;last.fm&lt;/a&gt; — музыкальные события&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://lanyrd.com/"&gt;lanyrd.com&lt;/a&gt; — социальный каталог конференций&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.meetup.com"&gt;meetup.com&lt;/a&gt; — социальная сеть местных сообществ. Позволяет создавать события внутри сообществ.&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://plancast.com/"&gt;plancast.com&lt;/a&gt; — социальный сервис по коллективному созданию событий.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Всевозможные сообщества, форумы и блоги&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Очень много событий публикуется в разных интернет-сообществах, например в livejournal — &lt;a href="http://www.livejournal.ru/communities/62"&gt;http://www.livejournal.ru/communities/62&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Поисковые системы&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br /&gt;Я намеренно не стал описывать здесь преимущества и недостатки каждого сервиса. Но можно смело сказать, что не один из описанных выше сервисов не дает комплексного решения в области поиска событий. Например, реальная проблема, с которой могут столкнуться путешественники, когда будут искать события, происходящие по ходу их путешествия. Представьте, вы собираетесь сделать турне по трем городам Европы: Амстердам, Берлин и Париж. А теперь попробуйте найти интересные вам события, проходящие в этих городах по ходу движения, через какой либо из описанных выше способов. Более сложная задача предстоит вам, если вы поедете в Японию, например :-) &lt;br/&gt;&lt;br /&gt;Здесь необходимо решение, которое комплексно удовлетворяло бы потребность в поиске событий в любой точки мира. Я под этим решением подразумеваю информационную систему, которая имеет следующие функции:&lt;br/&gt;&lt;br /&gt;&lt;ul&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;Система должна быть интегрирована со внешними сервисами (Outlook, Google Calendar, iCal) и помогать более эффективно планировать свой досуг.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Сервис интегрирован с разными мобильными платформами через приложения, чтобы получать информацию о событиях оперативно как по времени, так и месту нахождения. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Организация события&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Описанное выше связано с событиями со стороны участников. А что происходит со стороны организаторов? Я начал изучать эту тему и наткнулся вот на что. На западе есть термин &lt;a href="http://en.wikipedia.org/wiki/Event_management"&gt;event management&lt;/a&gt; — методология организации всевозможных событий: от свадеб до международных конференций. Естественно здесь тоже есть свои it-решения:&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Online event-management&lt;/b&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.eventbrite.com/l/event-management-online"&gt;eventbrite.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.artegis.com"&gt;artegis.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.cvent.com"&gt;cvent.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Эти системы похожы на &lt;a href="http://www.onlineprojects.ru/pm/"&gt;online project management system&lt;/a&gt;, но заточены специально под онлайн организацию событий с таким набором инструментов как онлайн регистрация, сервис онлайн продажи билетов, календарь, оповещения и прочее&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Каталоги поставщиков услуг для организации событий (vendors) &lt;/b&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.eventective.com"&gt;www.eventective.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.mypartyplanner.com/"&gt;mypartyplanner.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.eventvendors.com/"&gt;eventvendors.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Здесь в основном представлены американские сайты, так как там инфраструктура организаций событий очень развита.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Системы онлайн продажи билетов&lt;/b&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://ticketbud.com/"&gt;icketbud.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.ticketleap.com/"&gt;ticketleap.com&lt;/a&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://www.etickets.to/"&gt;etickets.to&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Данные системы позволяют прикрутить к сайту онлайн систему продажи билетов.&lt;br/&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;b&gt;Промоушн событий&lt;/b&gt;&lt;br/&gt;&lt;br /&gt; — &lt;a href="http://eventasaur.us/"&gt;eventasaur.us&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Здесь не представлены все предлагаемые решения, которые существуют на данный момент. Но мы имеем ту же самую ситуацию, что и с поиском событий — отсутствует интегральное решение для онлайн организации событий. Каждый из описанных сервисов представляет один из аспектов event management, но не один из них не дает всех инструментов сразу. И они упускают главную суть: самый эффективный способ создать успешное событие — это вовлечь в процесс его создания потенциальных участников. &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;Кол-во участников: 5-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;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Концепция события&lt;/b&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;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Программа события&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Каждый тип событий события имеет свою программу реализации. В данном случае программа — это деталезированный план действий по осуществлению данного события. Для такого типа событие как походы можно выделить следующие основные этапы: &lt;br/&gt;&lt;br /&gt;1. Укомплектование команды и распределение ролей.&lt;br/&gt;&lt;br /&gt;2. Разработка маршрута и календарного плана маршрута.&lt;br/&gt;&lt;br /&gt;3. Снаряжение, провиант, медикаменты&lt;br/&gt;&lt;br /&gt;4. Сбор и отправление&lt;br/&gt;&lt;br /&gt;5. Маршрут &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Расчеты&lt;/b&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;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Привлечение необходимых средств (fund rising)&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;В данном примере представлено простое событие как по типу, так и по масштабу, поэтому здесь привлечение средств ограничено распределением расходов между участниками похода на равных паях, то есть вскладчину. Но если мы возьмем, например, крупное событие как фестиваль, то здесь привлечение средств может идти из абсолютно разных источников: предварительная продажа билетов, социальное инвестирование, спонсорство и т.д. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Подготовка события (setting)&lt;/b&gt; &lt;br/&gt;&lt;br /&gt;После того, как собраны необходимые средства, начинается этап подготовки события: покупка необходимого провианта и снаряжение, сбор рюкзаков, подготовка карты маршрута и т.д.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Менеджмент события&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Когда событие перешло в стадию непосредственной реализации (в нашем примере — это этап “сбора и отправления”), наступает процесс оперативного управление. Здесь необходимы такие инструменты как управление задачами, календарь, сетевой график, панель состояния события и т.д… В нашем примере с походом, оперативное управление ограничивается распределением ролей (костровой, повар, отвественный за разбив палатки и т.д.) и обязанностей. Список задач представляет собой маршрут похода, где по каждому чек-поинту прописано, что надо сделать. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;“Разбор полетов” (post-event activity)&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;И вот, когда событие завершено подводится итог в виде сбора контента (фото, видео, артефакты), обсуждение ошибок и поиска их решений, предложение идей новых событий и т.д. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br /&gt;Данная схема вполне может подходить практически к любому типу событий с небольшими дополнениями. Например, для крупных событий, таких как концерты, фестивали, конференции можно выделить этап “Заключение контрактов” (Liacing), где оформляются всевозможные соглашения с разными организациями (аренда помещения, аренда оборудования, контракты с исполнителями и т.д.).&lt;br/&gt;&lt;br /&gt;А теперь представьте, если этот процесс создания события реализовать в онлайн среде. То есть это такая система, которая последовательно проводит организатора события через все этапы создания события, описанного выше, позволяя вовлекать разными методами в этот процесс людей и ресурсы. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Заключение&lt;/h4&gt;&lt;br/&gt;&lt;br /&gt;Подведем итог всему вышесказанному. Если объединить оба аспекта события (участие и организацию), то мы получим глобальную информационную систему, которая выполняет две основные функции:&lt;br/&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Предоставляет инструменты для более эффективной организации событий.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Аккумулирует все события происходящие в любой точки мира.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br /&gt; В этой статье я описал проблему, которая существует на данный момент в области участия и организаций событий в интернет среде. У меня уже есть решение, которое я хочу описать в следующей статье. Но сперва я хочу понять, насколько описанная проблема актуальна, возможно уже существуют какие-то решения, которые ее решают и т.д. Одним словом, хочется услышать грамотный feedback.&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/startup_ideas/"&gt;Хабрахабр - Идеи для стартапов &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/startup_ideas/127500/"&gt; Глобальная система управления событиями. Постановка проблемы&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-3374239066407034179?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sxKqW8IxL2tc-eSFnPyUEQeIgvU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sxKqW8IxL2tc-eSFnPyUEQeIgvU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sxKqW8IxL2tc-eSFnPyUEQeIgvU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sxKqW8IxL2tc-eSFnPyUEQeIgvU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/-F2MgEDt_P8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/3374239066407034179/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/blog-post.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3374239066407034179?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3374239066407034179?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/-F2MgEDt_P8/blog-post.html" title="Глобальная система управления событиями. Постановка проблемы" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQBQH87cCp7ImA9WhdXGEU.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-1850796280217922915</id><published>2011-09-01T07:29:00.001-07:00</published><updated>2011-09-01T07:29:11.108-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T07:29:11.108-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google Chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="создание" /><category scheme="http://www.blogger.com/atom/ns#" term="разработка" /><category scheme="http://www.blogger.com/atom/ns#" term="Chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="расширение" /><category scheme="http://www.blogger.com/atom/ns#" term="фриланс" /><title>[Из песочницы] Разработка простого расширения для google chrome</title><content type="html">&lt;br /&gt;	&lt;img src="http://s013.radikal.ru/i324/1109/0b/06c060192ac7.jpg" alt="image" align="left"/&gt;Расширения для браузеров очень популярны в наше время. Повод написать какое-либо расширение всегда найдется, и их напашется еще много. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В данной статье я хочу рассказать о том как я написал небольшое расширение для google chrome в личных целях. А цель статьи — помощь молодому программисту, с трудом понимающему английский язык. Не каждый на 3ом курсе сможет читать гугловскую документацию, которая есть только на английском. А сделать расширение хочется. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Если поискать, то на русском языке нет ничего толкового по разработке расширений для chrome, только лишь эта &lt;a href="http://habrahabr.ru/blogs/google_chrome/75639/"&gt;статья&lt;/a&gt; доступно описывает самые основы.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Данный пост будет более продвинутой версией.&lt;br/&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;Приступим.&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Не хочется вдаваться в самые основы и поэтому рекомендую для начала прочесть &lt;a href="http://habrahabr.ru/blogs/google_chrome/75639/"&gt;эту&lt;/a&gt; статью.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://dl.dropbox.com/u/32839060/Ffilter.rar"&gt;Скачайте&lt;/a&gt; мое расширение и смотрите код параллельно чтению.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Мы уже примерно знаем, что такое &lt;b&gt;manifest.json&lt;/b&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;b&gt;manifest.json&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;{&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;name&amp;quot;&lt;/font&gt;:&lt;font color="#A31515"&gt;&amp;quot;Ffilter&amp;quot;&lt;/font&gt;,&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;version&amp;quot;&lt;/font&gt;: &lt;font color="#A31515"&gt;&amp;quot;1.0&amp;quot;&lt;/font&gt;,&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;background_page&amp;quot;&lt;/font&gt;: &lt;font color="#A31515"&gt;&amp;quot;bg.html&amp;quot;&lt;/font&gt;,&amp;nbsp;&amp;nbsp; &lt;font color="#008000"&gt;// имя background страницы.&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;icons&amp;quot;&lt;/font&gt;: {&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;48&amp;quot;&lt;/font&gt;:&lt;font color="#A31515"&gt;&amp;quot;icon_48.png&amp;quot;&lt;/font&gt;,&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;128&amp;quot;&lt;/font&gt;:&lt;font color="#A31515"&gt;&amp;quot;icon_128.png&amp;quot;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;},&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;page_action&amp;quot;&lt;/font&gt;:{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000"&gt;// действие для текущей страницы&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;default_title&amp;quot;&lt;/font&gt;: &lt;font color="#A31515"&gt;&amp;quot;Ffilter&amp;quot;&lt;/font&gt;,&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;default_icon&amp;quot;&lt;/font&gt;: &lt;font color="#A31515"&gt;&amp;quot;icon_19.png&amp;quot;&lt;/font&gt;,&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;default_popup&amp;quot;&lt;/font&gt;:&lt;font color="#A31515"&gt;&amp;quot;popup.html&amp;quot;&lt;/font&gt;&amp;nbsp;&amp;nbsp; &lt;font color="#008000"&gt;// имя страницы фильтра&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;},&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;permissions&amp;quot;&lt;/font&gt;: [&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000"&gt;// разрешения&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;tabs&amp;quot;&lt;/font&gt;,&lt;font color="#A31515"&gt;&amp;quot;http://www.free-lance.ru/*&amp;quot;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;],&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;content_scripts&amp;quot;&lt;/font&gt;:[{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000"&gt;// работа с DOM страницы фриланса.&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;matches&amp;quot;&lt;/font&gt;: [&lt;font color="#A31515"&gt;&amp;quot;http://www.free-lance.ru/*&amp;quot;&lt;/font&gt;],&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#A31515"&gt;&amp;quot;js&amp;quot;&lt;/font&gt;: [&lt;font color="#A31515"&gt;&amp;quot;jq.js&amp;quot;&lt;/font&gt;,&lt;font color="#A31515"&gt;&amp;quot;script.js&amp;quot;&lt;/font&gt;]&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}]&lt;br/&gt;&lt;br /&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&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;img src="http://code.google.com/chrome/extensions/images/overview/arch-1.gif" alt="image" align="right"/&gt;&lt;b&gt;background_page&lt;/b&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;b&gt;page_action&lt;/b&gt; — важный объект. Он сообщает браузеру, что наше расширение будет индивидуально для каждой вкладки, то есть значок будет выводиться в адресной строке, а не на панели (например &lt;i&gt;gmail checker&lt;/i&gt;). Такие расширения как &lt;i&gt;gmail checker&lt;/i&gt; не считаются индивидуальными, они открываются один раз для всего браузера (для них в манифесте используется вместо объекта &lt;b&gt;page_action&lt;/b&gt; объект &lt;b&gt;browser_action&lt;/b&gt;, на картинках соответственно).&lt;br/&gt;&lt;br /&gt;&lt;img src="http://code.google.com/chrome/extensions/images/overview/page-action.png" alt="image"/&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src="http://code.google.com/chrome/extensions/images/overview/browser-action.png" alt="image"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;default_title&lt;/b&gt;, &lt;b&gt;default_icon&lt;/b&gt; — название, иконка соответственно.&lt;br/&gt;&lt;br /&gt;&lt;b&gt;default_popup&lt;/b&gt; — имя html-страницы расширения, которая будет всплывать при нажатии на иконку. Посмотрите предыдущий топик, если не все ясно.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;permissions&lt;/b&gt; — массив с разрешениями. Нам пригодиться общаться с системным объектом &lt;b&gt;tabs&lt;/b&gt; и обращаться к адресу фриланса (имеется в виду не &lt;i&gt;ajax&lt;/i&gt; запросы, а &lt;i&gt;js&lt;/i&gt; работа со страницей).&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;content_scripts&lt;/b&gt; — важный для нас объект, именно он разрешает пользоваться &lt;i&gt;js&lt;/i&gt; на странице фриланса. Мы указываем адрес страницы и указываем &lt;i&gt;js&lt;/i&gt;-файлы, которые будут исполнены сразу после загрузки &lt;i&gt;body&lt;/i&gt;. Я использую&lt;i&gt; jQuery&lt;/i&gt; и определяю свои функции. Порядок имеет значение. &lt;br/&gt;&lt;br /&gt;Важно знать, что скрипты расширения не могу видеть объекты/переменные скриптов самой страницы. Это значит, что если у страницы уже есть свой &lt;i&gt;jQuery&lt;/i&gt; мы не сможем его использовать, обязательно надо подгрузить свой. Это называется &lt;b&gt;изолированными мирами&lt;/b&gt; и это иногда удобно. Скрипты из расширения, конечно же, могут манипулировать &lt;i&gt;DOM&lt;/i&gt;.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Идем далее.&lt;br/&gt;&lt;br /&gt;Если Вы все верно представили себе то видите, что наше расширение состоит из 3х основных объектов: фоновая страница (одна для всех), окошко с фильтром (для каждой страницы), и скрипты на каждой странице. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Общий алгоритм таков:&lt;br/&gt;&lt;br /&gt;Фильтр должен общаться только со скриптом на текущей странице. Скрипт должен только принимать указания от фильтра на текущей странице и исполнять их. И тот и другой не должен общаться с фоновой страницей, но фоновая страница должна контролировать фильтр. Ведь фильтр должен появляться только на странице фриланса. И, кстати говоря, расширение &lt;b&gt;page_action&lt;/b&gt; по умолчанию всегда скрыто, и его нужно включать через фоновую страницу, она это и делает когда загружается страница фриланса.&lt;br/&gt;&lt;br /&gt;&lt;img src="http://s002.radikal.ru/i200/1109/c3/1f669da52e86.png" alt="image" align="center"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;bg.html&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;chrome.tabs.onUpdated.addListener(&lt;font color="#0000ff"&gt;function&lt;/font&gt;(id,info,tab) {&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;if&lt;/font&gt;(info.url)&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;if&lt;/font&gt;(/free-lance.ru/.test(info.url))&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chrome.pageAction.show(id);&lt;br/&gt;&lt;br /&gt;});&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Приведен только &lt;i&gt;js&lt;/i&gt; код (только он и нужен).&lt;br/&gt;&lt;br /&gt;&lt;b&gt;chrome.tabs&lt;/b&gt; — системный объект с которым приходится больше всего работать, как Вы догадались, он отвечает за вкладки. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Мы вешаем свою функцию на событие &lt;b&gt;onUpdated&lt;/b&gt; (обновление вкладки, переход по ссылке). В качестве параметров приходят идентификатор вкладки, информация о обновлении, объект самой вкладки. Нам понадобиться информация — она содержит адрес текущей страницы. Мы проверяем фриланс ли это и если да, то у объекта &lt;b&gt;chrome.pageAction&lt;/b&gt; вызываем метод&lt;b&gt; show&lt;/b&gt; передавая туда идентификатор этой вкладки.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;chrome.pageAction&lt;/b&gt; — объект отвечающий за расширения внутри адресной строки, и мы просим показать иконку в нужной нам вкладке (где только что открылся фриланс).&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Все действия фоновой страницы окончены, сайт открылся, иконка появилась, теперь можно на нее кликнуть и появится popup.html.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;popup.html&lt;/b&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;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;chrome.tabs.executeScript(&lt;font color="#0000ff"&gt;null&lt;/font&gt;,&amp;nbsp;{code:&lt;font color="#A31515"&gt;&amp;quot;alert(‘hello!’)&amp;quot;&lt;/font&gt;});&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;или можно так:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;chrome.tabs.executeScript(&lt;font color="#0000ff"&gt;null&lt;/font&gt;,&amp;nbsp;{file : “script.js”});&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://i039.radikal.ru/1109/26/5d427b11c8f3.png" alt="image" align="right"/&gt;Но подумайте, как туда передавать параметры? Только строковые? (к слову говоря, &lt;i&gt;null&lt;/i&gt; — это значит, что мы хотим исполнить скрипт на текущей вкладке)&lt;br/&gt;&lt;br /&gt;Это мне подходило, я искал способ передать объекты. И такой способ нашелся, но он был спрятан в документации.&lt;br/&gt;&lt;br /&gt;&lt;b&gt;port&lt;/b&gt; — специальный объект в chrome, с помощью которого можно общаться от скрипта к фоновой странице и popup, или от фоновой страницы и popup к скрипту.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Что бы подключиться к скрипту нужно соединяться через табы:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt; port = chrome.tabs.connect(id);&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;где id номер нужной вкладки со скриптом.&lt;b&gt; port&lt;/b&gt; — возвращенный объект транспорта.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Что бы подключиться к фоновой странице или всплывающему окну нужно обратиться к объекту расширения:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt; port = chrome.extension.connect();&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&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;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;chrome.extension.onConnect.addListener(&lt;font color="#0000ff"&gt;function&lt;/font&gt;(port){&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;port.onMessage.addListener(MyFunc);&lt;br/&gt;&lt;br /&gt;});&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Для чего &lt;b&gt;onMessage&lt;/b&gt; станет понятнее позже.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Вернемся к popup.html.&lt;br/&gt;&lt;br /&gt;В этом месте я связываюсь со скриптом, который “дежурит” на данной странице.&lt;br/&gt;&lt;br /&gt;Для меня стало проблемой то, что нужно указать идентификатор вкладки, а ведь я не знаю этот ИД. Забавно, что нам нужная текущая вкладка, и можно было бы просто послать&lt;i&gt; null &lt;/i&gt;вместо номера, но это не пройдет — нужно знать ИД. Как?&lt;br/&gt;&lt;br /&gt;Много времени убил на это и сделал вот так:&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;chrome.windows.getCurrent(&lt;font color="#0000ff"&gt;function&lt;/font&gt;(w){&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;chrome.tabs.getSelected(w.id,&lt;font color="#0000ff"&gt;function&lt;/font&gt;(t){&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;port = chrome.tabs.connect(t.id);&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;})&lt;br/&gt;&lt;br /&gt;});&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Мы просим сказать какое окно сейчас активно, и нам в&lt;i&gt; callback&lt;/i&gt; возвращают объект окна. Далее мы просим сказать текущую вкладку в этом окне и нам ее возвращают тоже в&lt;i&gt; callback&lt;/i&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;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;port.postMessage(obj);&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;И в этот момент начинает работать script.js&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;В &lt;b&gt;script.js&lt;/b&gt; важно это:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font color="black"&gt;chrome.extension.onConnect.addListener(&lt;font color="#0000ff"&gt;function&lt;/font&gt;(port){&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;port.onMessage.addListener(Filtr);&lt;br/&gt;&lt;br /&gt;});&lt;/font&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;font color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Прослушиваем порт и дожидаемся входящего подключения с объектом&lt;b&gt; port&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;У этого объекта есть событие&lt;b&gt; onMessage&lt;/b&gt; — событие когда сюда присылают сообщение. Мы вешаем свою функцию&lt;i&gt; Filtr&lt;/i&gt;, которая примет все аргументы, которые пришлют с помощью&lt;b&gt; port.postMessage()&lt;/b&gt; на другом конце. Функция&lt;i&gt; Filtr&lt;/i&gt; удалит все объявления, которые указаны в объекте.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;Все&lt;/b&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;a href="http://code.google.com/chrome/extensions/overview.html"&gt;Документация&lt;/a&gt;, &lt;a href="http://dl.dropbox.com/u/32839060/Ffilter.rar"&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google_chrome/"&gt;Хабрахабр - Google Chrome &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google_chrome/127522/"&gt; [Из песочницы] Разработка простого расширения для google chrome&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-1850796280217922915?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5EbpeNjsii1k9iBDzbQ4WiE1LGo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5EbpeNjsii1k9iBDzbQ4WiE1LGo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5EbpeNjsii1k9iBDzbQ4WiE1LGo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5EbpeNjsii1k9iBDzbQ4WiE1LGo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/Bdv03Re3pds" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/1850796280217922915/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/google-chrome.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/1850796280217922915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/1850796280217922915?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/Bdv03Re3pds/google-chrome.html" title="[Из песочницы] Разработка простого расширения для google chrome" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/google-chrome.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIBQ34_fSp7ImA9WhdXGEs.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-4981071420232571800</id><published>2011-09-01T01:59:00.001-07:00</published><updated>2011-09-01T01:59:12.045-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T01:59:12.045-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Информационная безопасность" /><category scheme="http://www.blogger.com/atom/ns#" term="взлом" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="kernel.org" /><category scheme="http://www.blogger.com/atom/ns#" term="троян" /><category scheme="http://www.blogger.com/atom/ns#" term="kernel" /><category scheme="http://www.blogger.com/atom/ns#" term="root" /><title>Kernel.org был заражен в течение 17 дней</title><content type="html">&lt;br /&gt;	Начиная с 12 августа на серверах kernel.org находился троян, который записывал пароли, действия пользователей, предоставлял root-доступ и модифицировал ПО на сервере.&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Только через 17 дней троян был обнаружен на машине одного из разработчиков ядра H Peter Anvin. Далее на серверах kernel.org Hera и Odin1.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Были модифицированы файлы, относящиеся к ssh (openssh, openssh-server и openssh-clients), загрузчик трояна добавлен в rc3.d. &lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Разработчики уверяют, что все файлы ядра подписаны SHA-1, и подменить их невозможно, но на всякий случай проверяют дальше.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Троян удалось обнаружить по сообщению об ошибке в Xnest, на машине, в которой не должно быть X Windows. Разработчики настоящие профессионалы, они сразу догадались, что такого не должно быть.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Источник &lt;a href="http://www.theregister.co.uk/2011/08/31/linux_kernel_security_breach/"&gt;The Register&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;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/infosecurity/"&gt;Хабрахабр - Информационная безопасность &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/infosecurity/127498/"&gt; Kernel.org был заражен в течение 17 дней&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-4981071420232571800?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PHqlh3CRi16K22kyJTOyebroGhc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PHqlh3CRi16K22kyJTOyebroGhc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PHqlh3CRi16K22kyJTOyebroGhc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PHqlh3CRi16K22kyJTOyebroGhc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/GjB_z_3Hu9I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/4981071420232571800/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/09/kernelorg-17.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/4981071420232571800?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/4981071420232571800?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/GjB_z_3Hu9I/kernelorg-17.html" title="Kernel.org был заражен в течение 17 дней" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/09/kernelorg-17.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYBRXs8fyp7ImA9WhdXGE8.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-3098620925329685561</id><published>2011-08-31T14:29:00.001-07:00</published><updated>2011-08-31T14:29:14.577-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T14:29:14.577-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Google Chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="обновление" /><category scheme="http://www.blogger.com/atom/ns#" term="Chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="автообновление" /><title>[Перевод] Самая важная особенность Chrome</title><content type="html">&lt;br /&gt;	Бен Гуджер&amp;nbsp;&amp;mdash; бывший разработчик Mozilla, работающий сейчас в&amp;nbsp;Google в&amp;nbsp;команде Chrome&amp;nbsp;&amp;mdash; &lt;a href="https://plus.google.com/105636695715347097518/posts/G9hbCEMC2wF"&gt;считает&lt;/a&gt;, что автообновление является одной из&amp;nbsp;наиболее важных функций Chrome.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;Автообновление&amp;nbsp;&amp;mdash; это одна из&amp;nbsp;убийственных особенностей Chrome. Оно волшебно, потому что оно непрерывно обновляет всю платформу разработки незаметно и&amp;nbsp;часто. Его поддержка повлияла на&amp;nbsp;то, как мы&amp;nbsp;структурируем наш процесс разработки. Это также была одна из&amp;nbsp;первых функций Chrome. Если вспомнить историю проекта задолго до&amp;nbsp;того, как он&amp;nbsp;был публично запущен в&amp;nbsp;2008&amp;nbsp;году, проект автообновления был одним из&amp;nbsp;первых, над которым мы&amp;nbsp;начали работать. Идея заключалась в&amp;nbsp;том, чтобы дать людям пустое окно с&amp;nbsp;автообновителем. После того, как они его устанавливали, пустое окно постепенно превращалось в&amp;nbsp;браузер. И&amp;nbsp;сегодня&amp;nbsp;&amp;mdash; через пять лет после того, как наш автообновитель начал обновлять практически пустое окно, которое едва могло загружать веб-страницы&amp;nbsp;&amp;mdash; теперь это инструмент для предоставления невероятно сложной веб-технологической платформы на&amp;nbsp;компьютерах наших пользователей, который, в&amp;nbsp;свою очередь, позволяет разработчикам веб-приложений создавать удивительный новый онлайновый опыт. Я&amp;nbsp;никогда раньше не&amp;nbsp;видел такого эффективного механизма обновления платформы.&lt;/blockquote&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Chrome автоматически обновляется в&amp;nbsp;фоновом режиме и&amp;nbsp;гарантирует, что у&amp;nbsp;него всегда новейшие функции и&amp;nbsp;исправления ошибок. Вам не&amp;nbsp;нужно больше беспокоиться о&amp;nbsp;номерах версий, списке возможностей последней версии, и&amp;nbsp;вы&amp;nbsp;больше не&amp;nbsp;можете решить не&amp;nbsp;обновляться до&amp;nbsp;новой версии из-за раздражающих изменений. Расширения тоже обновляются в&amp;nbsp;фоновом режиме, и&amp;nbsp;вы&amp;nbsp;всегда используете самые последние версии. Это отлично для разработчиков, которым не&amp;nbsp;нужно поддерживать старые версии Chrome и&amp;nbsp;тратить много времени на&amp;nbsp;тестирование своих сайтов и&amp;nbsp;расширений. Это также отлично для пользователей, которые могут рассчитывать на&amp;nbsp;безопасный браузер с&amp;nbsp;последними исправлениями безопасности и&amp;nbsp;лучшей защитой от&amp;nbsp;вредоносных программ. Они могут также использовать новейшие веб-приложения без необходимости беспокоиться об&amp;nbsp;обновлении своего браузера.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Быстрый цикл выпуска версий Chrome работает хорошо из-за автообновителя. Надоедание пользователям уведомлениями о&amp;nbsp;новых версиях заставляет людей откладывать обновление своих браузеров. Некоторые из&amp;nbsp;них найдут способы отключить обновитель и&amp;nbsp;будут продолжать использовать старую версию браузера. Бен Гуджер считает, что невидимость обновителя очень важна:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;blockquote&gt;Система автообновления Chrome обманчиво проста. Я&amp;nbsp;говорю «обманчиво», потому что для пользователей она совершенно невидима, но&amp;nbsp;на&amp;nbsp;самом деле её&amp;nbsp;поддерживают много сложных технологий и&amp;nbsp;процессов. Ключевым моментом здесь является «совершенно невидима». Мы&amp;nbsp;делали многочисленные усовершенствования в&amp;nbsp;автообновителе в&amp;nbsp;течение разработки Chrome, в&amp;nbsp;том числе одно крупное изменение тогда, когда мы&amp;nbsp;разогнали частоту наших релизов с&amp;nbsp;одного в&amp;nbsp;квартал до&amp;nbsp;одного каждые шесть недель. Но&amp;nbsp;с&amp;nbsp;точки зрения пользователя Chrome всё ещё… Chrome.&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Я&amp;nbsp;остановлюсь на&amp;nbsp;невидимости, потому что это важно:&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Автообновитель Chrome тихо работает в&amp;nbsp;фоновом режиме, никогда не&amp;nbsp;отвлекая вас. Если есть обновление, то&amp;nbsp;он&amp;nbsp;скачает его и&amp;nbsp;подготовит его так, чтобы при следующем запуске браузера это была его последняя версия. Нечто вроде того, как при запуске Gmail это последняя версия.&lt;/blockquote&gt;&lt;br/&gt;&lt;br /&gt;Я&amp;nbsp;считаю, что автообновитель является наиболее важной функцией Chrome, потому что он&amp;nbsp;позволяет появляться другим функциям. С&amp;nbsp;тех пор, как Chrome был выпущен ещё в&amp;nbsp;2008&amp;nbsp;году, он&amp;nbsp;постоянно улучшался, в&amp;nbsp;нём появлялась поддержка новых веб-технологий, новые функции в&amp;nbsp;интерфейсе, новые API для расширений и&amp;nbsp;передовых средств безопасности. Без мощного автообновителя многие пользователи Chrome по-прежнему пользовались&amp;nbsp;бы устаревшей версией и&amp;nbsp;не&amp;nbsp;могли&amp;nbsp;бы всё это использовать. Иногда отсутствие выбора может значительно улучшить программу.&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Источник&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google_chrome/"&gt;Хабрахабр - Google Chrome &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Оригинальная страница&lt;/b&gt;: &lt;a href="http://habrahabr.ru/blogs/google_chrome/127472/"&gt; [Перевод] Самая важная особенность Chrome&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7751701111206475910-3098620925329685561?l=programind.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ShF8m3cZkrodk3-dTZCzcYEYazw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ShF8m3cZkrodk3-dTZCzcYEYazw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ShF8m3cZkrodk3-dTZCzcYEYazw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ShF8m3cZkrodk3-dTZCzcYEYazw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/gZBEN/~4/w_E3OHyqzQM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://programind.blogspot.com/feeds/3098620925329685561/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://programind.blogspot.com/2011/08/chrome.html#comment-form" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3098620925329685561?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7751701111206475910/posts/default/3098620925329685561?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/gZBEN/~3/w_E3OHyqzQM/chrome.html" title="[Перевод] Самая важная особенность Chrome" /><author><name>Програмысли</name><uri>http://www.blogger.com/profile/14689104387429289660</uri><email>noreply@blogger.com</email></author><thr:total>0</thr:total><feedburner:origLink>http://programind.blogspot.com/2011/08/chrome.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIBSX8yfCp7ImA9WhdXGE8.&quot;"><id>tag:blogger.com,1999:blog-7751701111206475910.post-8205840909870765068</id><published>2011-08-31T13:29:00.001-07:00</published><updated>2011-08-31T13:29:18.194-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T13:29:18.194-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Хабрахабр - Информационная безопасность" /><category scheme="http://www.blogger.com/atom/ns#" term="ссылка" /><category scheme="http://www.blogger.com/atom/ns#" term="g.co" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="сокращатель ссылок" /><title>Сокращаем произвольные ссылки сервисом G.CO</title><content type="html">&lt;br /&gt;	&lt;img src="http://habrastorage.org/storage1/7b86d0eb/0cc1f056/2220a22d/f3872755.png"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Google, недавно &lt;a href="http://habrahabr.ru/blogs/google/124407/"&gt;запустил&lt;/a&gt; сервис для сокращения ссылок — &lt;a href="http://g.co"&gt;G.CO&lt;/a&gt;. Пр
