<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0"><channel><title>Все обо всем и ничего ни о чем...</title><link>http://blog.aaa-nan.info/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/aaa-nan" /><description>Буду писать здесь о в всяком разном: о своей жизни (хотя Вас, скорее всего, она и не интересует), о жизни других, высказывать свое мнение по поводу разных вещей ну и т.д. и т.п.</description><language>en</language><managingEditor>noreply@blogger.com (LordOtU)</managingEditor><lastBuildDate>Wed, 02 May 2012 01:55:10 PDT</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">414</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="aaa-nan" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item><title>Все на ZFConf 2012!!!</title><link>http://blog.aaa-nan.info/2012/04/zfconf-2012.html</link><category>PHP</category><category>Web-dev</category><category>Конференция</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Fri, 13 Apr 2012 21:54:32 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-5046909479595183346</guid><description>&lt;div class="art"&gt;
&lt;p&gt;21 апреля в Москве пройдет очередная ежегодная конференция для веб-разработчиков ZFConf 2012, посвященная популярной платформе Zend Framework.&lt;/p&gt;

&lt;p&gt;В этом году с докладом выступит гость из Италии — Enrico Zimuel из Zend Framework Core Team. А также Виктор Фараздаги, Александр Веремьев, Алексей Качаев и многие другие специалисты.&lt;/p&gt;

&lt;p&gt;На сайте опубликован полный &lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/"&gt;список докладов&lt;/a&gt; и открыта &lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/registration/"&gt;регистрация&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Доклады:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/zend-framework-2-a-quick-start/"&gt;Zend Framework 2, a quick start&lt;/a&gt; &lt;br/&gt;
Enrico Zimuel (&lt;a class="other" rel="nofollow" href="http://www.zend.com/"&gt;Zend Technologies&lt;/a&gt;, Zend Framework Core Team) &lt;/li&gt;

&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/code-generation-and-scaffolding-in-zend-framework-2/"&gt;Code Generation и Scaffolding в Zend Framework 2&lt;/a&gt; &lt;br/&gt;
Виктор Фараздаги (Simple Square, Senior Developer) &lt;/li&gt;

&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/ibm-db2-embedded-sql-for-php-implementation/"&gt;Реализация доступа к СУБД IBM DB2 посредством встраиваемого SQL&lt;/a&gt; &lt;br/&gt;
Александр Веремьев (Zend Framework contributor) &lt;/li&gt;

&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/distributed-network-applications-with-zend-framework-2-and-zeromq/"&gt;Распределенные сетевые приложения c Zend Framework 2 и ZeroMQ&lt;/a&gt; &lt;br/&gt;
Алексей Качаев (&lt;a class="other" rel="nofollow" href="http://cogniance.com/"&gt;Сogniance&lt;/a&gt;, Senior Software Engineer) &lt;/li&gt;

&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/dependency-management-in-php-and-zend-framework-2/"&gt;Dependency Management в PHP и Zend Framework 2&lt;/a&gt;&lt;br/&gt;
Кирилл Чебунин (&lt;a class="other" rel="nofollow" href="http://www.creara.ru/"&gt;Creara&lt;/a&gt;, Senior PHP Developer) &lt;/li&gt;

&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/caching-without-misses-with-zend-framework-2/"&gt;Кеш без промахов средствами Zend Framework 2&lt;/a&gt; &lt;br/&gt;
Никита Грибалев (&lt;a class="other" rel="nofollow" href="http://www.nival.com/"&gt;Nival&lt;/a&gt;, Lead PHP Developer) &lt;/li&gt;

&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/architecture-design-implementation-and-organization-of-the-development-process-on-the-example-of-own-zend-framework-project/"&gt;Проектирование архитектуры, внедрение и организация процесса разработки на примере собственного проекта на основе ZF&lt;/a&gt; &lt;br/&gt;
Антон Великанов (&lt;a class="other" rel="nofollow" href="http://sandsign.ru/"&gt;Sand Sign&lt;/a&gt;, Founder&amp;CEO) &lt;/li&gt;

&lt;li&gt;&lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/talks/capistrano-for-deployment-php-applications/"&gt;Capistrano для деплоймента PHP-приложений&lt;/a&gt; &lt;br/&gt;
Роман Лапин (&lt;a class="other" rel="nofollow" href="http://evercodelab.com/"&gt;Evercode Lab&lt;/a&gt;, Senior Developer) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;К участию также приглашаются &lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/2012/sponsors/"&gt;спонсоры&lt;/a&gt; и инфопартнеры. По всем предложениям и вопросам пишите, пожалуйста, через &lt;a class="other" rel="nofollow" href="http://www.zfconf.ru/contacts/"&gt;форму обратной связи&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Следите за последними новостями:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Хабраблог: &lt;a class="other" rel="nofollow" href="http://habr.ru/company/wizartech/blog/"&gt;habr.ru/company/wizartech/blog/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Facebook: &lt;a class="other" rel="nofollow" href="http://www.facebook.com/groups/143714275748061/"&gt;facebook.com/groups/143714275748061/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ВКонтакте: &lt;a class="other" rel="nofollow" href="http://vk.com/zfconf"&gt;vk.com/zfconf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;RSS: &lt;a class="other" rel="nofollow" href="http://feeds.feedburner.com/zfconf"&gt;feeds.feedburner.com/zfconf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a class="other" rel="nofollow" href="http://twitter.com/zfconf"&gt;twitter.com/zfconf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Организатор: &lt;a class="other" rel="nofollow" href="http://www.wizartech.ru/"&gt;компания Wizartech&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Партнеры: &lt;a class="other" rel="nofollow" href="http://zendframework.ru/"&gt;сообщество Zend Framework&lt;/a&gt; и &lt;a class="other" rel="nofollow" href="http://frameworksdays.com/"&gt;конференция Frameworks Days&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-5046909479595183346?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=6J374dmLZrQ:g4bntgdOExc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=6J374dmLZrQ:g4bntgdOExc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-14T08:54:32.654+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Модуль управления доступом к меню Menu subtree per role для Drupal 6</title><link>http://blog.aaa-nan.info/2012/04/menu-subtree-per-role-drupal-6.html</link><category>JavaScript</category><category>PHP</category><category>Web-dev</category><category>Drupal 6</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sun, 08 Apr 2012 06:07:52 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-8076448631827047984</guid><description>&lt;div class="art"&gt;
&lt;p&gt;Итак, второй модуль, призванный помочь администратору в деле управления доступом к меню на страницах создания/редактирования материала. Описание модуля находится тут: &lt;a href="http://olevshin.ru/projects/drupal_6_menu_subtree_per_role"&gt;http://olevshin.ru/projects/drupal_6_menu_subtree_per_role&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-8076448631827047984?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=MgN0_EybgtY:2xk36VdGiyk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=MgN0_EybgtY:2xk36VdGiyk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-08T17:07:52.290+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Модуль создания маршрутов на Яндекс.Картах Ymaps Routes для Drupal 6</title><link>http://blog.aaa-nan.info/2012/04/ymaps-routes-drupal-6.html</link><category>JavaScript</category><category>PHP</category><category>Web-dev</category><category>Яндекс.Карты</category><category>Drupal 6</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sun, 08 Apr 2012 06:04:42 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-2725304114030966354</guid><description>&lt;div class="art"&gt;
&lt;p&gt;Таки впервые показываю общественности свои наработки для Drupal. К сожалению, пока что активно пользую 6-ю ветку, но руки уже начали тянуться к 7-ой. Все проекты будут хоститься на ГитХабе (&lt;a href="https://github.com/LordotU"&gt;https://github.com/LordotU&lt;/a&gt;). Со временем, может быть, они замайнтейнятся на Drupal.org, но не сейчас.&lt;/p&gt;

&lt;p&gt;Первые модуль - это модуль создания маршрутов на основе Яндекс.Карт. Описание модуля находится тут: &lt;a href="http://olevshin.ru/projects/drupal_6_ymaps_routes_module"&gt;http://olevshin.ru/projects/drupal_6_ymaps_routes_module&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-2725304114030966354?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=0wFACEAs9Kw:No-nuakbWFc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=0wFACEAs9Kw:No-nuakbWFc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-08T17:04:42.590+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Установка и настройка web-интерфейса Anyterm для терминала под Ubuntu и Apache</title><link>http://blog.aaa-nan.info/2012/03/web-anyterm-ssh-ubuntu-apache.html</link><category>Linux</category><category>ssl</category><category>ssh</category><category>Статьи</category><category>web</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Wed, 14 Mar 2012 09:07:44 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-2504360727241784663</guid><description>&lt;div class="art"&gt;
&lt;p&gt;Давайте проведем, так сказать, мысленный эксперимент. Представьте, что вы работаете в месте, где с рабочего компьютера очень сложно попасть во вне - вы ограничены только стандартными портами для HTTP, NTLM-аутентификацией и другими штуками, которые делают ваше пребывание в Сети не очень комфортным. Тем не менее, вам кровь из носу нужно достучаться по SSH до домашней (любой другой) машины. В этой заметке я постараюсь рассказать о том, как можно миновать вышеперечисленные ограничения.&lt;/p&gt;

&lt;p&gt;Описанный ниже способ не претендует на единственность и оригинальность - это лишь один из вариантов. Например, можно еще &lt;a href="http://sourceforge.net/projects/cntlm/forums/forum/702676/topic/4524671" class="other" rel="nofollow"&gt;поиграться&lt;/a&gt; с &lt;a href="http://cntlm.sourceforge.net/" class="other" rel="nofollow"&gt;cntlm&lt;/a&gt; и &lt;a href="http://proxytunnel.sourceforge.net/" class="other" rel="nofollow"&gt;proxytunnel&lt;/a&gt;. Но... тут речь пойдет не об этом. Здесь мы попробуем установить на целевую машину &lt;a href="http://anyterm.org/" class="other" rel="nofollow"&gt;Anyterm&lt;/a&gt; и сделать его доступным по HTTPS с базовой аутентификацией.&lt;/p&gt;

&lt;p&gt;Итак, мне нужно было достучаться до моего домашнего сервачка, на котором установлена Ubuntu 11.04, Apache 2 и остальной зоопарк разного ненужного, а сам он находится за NAT ADSL-роутера. Для того, чтобы он все время был доступен по одному адресу, я зарегистрировал домен третьего уровня на &lt;a href="http://dlinkddns.com/" class="other" rel="nofollow"&gt;http://dlinkddns.com/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Для начала Anyterm нужно скачать (&lt;a href="http://anyterm.org/download/index.html" class="other" rel="nofollow"&gt;http://anyterm.org/download/index.html&lt;/a&gt;). Я забирал последнюю dev-версию (&lt;b&gt;1.1.29&lt;/b&gt;), так что все описанное справедливо именно для нее. Скачиваем, выполняя, например, такую команду:&lt;/p&gt;
&lt;pre&gt;
svn co http://svn.anyterm.org/anyterm/tags/releases/1.1/1.1.29/ anyterm-1.1.29
&lt;/pre&gt;
&lt;p&gt;Результатом ее выполнения будет папка anyterm-1.1.29, созданная в директории, откуда эта команда исполнялась. Т.к. были скачаны исходные кода, а сама программа написана на C++ с использованием библиотек &lt;b&gt;Boost&lt;/b&gt;, то нужно убедиться, что у вас установлено все необходимое для успешного компилирования исходников, а именно: пакеты &lt;b&gt;build-essential, libboost1.42-dev и zlib1g-dev&lt;/b&gt;. Все скопом можно установить, выполнив следующую команду:&lt;/p&gt;
&lt;pre&gt;
sudo apt-get install build-essential libboost1.42-dev zlib1g-dev
&lt;/pre&gt;
&lt;p&gt;Теперь, вроде, можно компилировать. Переходим в ранее созданную директорию &lt;b&gt;anyterm-1.1.29&lt;/b&gt; и, скрестя пальцы, выполняем команду:&lt;/p&gt;
&lt;pre&gt;
make
&lt;/pre&gt;
&lt;p&gt;К сожалению, скрещенные пальцы тут не помогут, т.к. процесс компиляции завершится неудачно - все дело в том, что в файле &lt;b&gt;anyterm-1.1.29/libpbe/src/SmtpClient.cc&lt;/b&gt; отсутствует строка, которая подключает стандартную библиотеку языка. Её нужно добавить куда-нибудь в начало файла:&lt;/p&gt;
&lt;pre&gt;
#include &lt;stdio.h&gt; //Missed string
&lt;/pre&gt;
&lt;p&gt;После добавления этой пропущенной строки, необходимо выполнить команды:&lt;/p&gt;
&lt;pre&gt;
make clean; make
&lt;/pre&gt;
&lt;p&gt;Дожидаемся окончания процесса компиляции - на выходе получим исполняемый файл &lt;b&gt;anytermd&lt;/b&gt;, который было бы полезно скопировать в какую-нибудь директорию типа &lt;b&gt;/usr/local/bin&lt;/b&gt; (мой именно там и лежит).&lt;/p&gt;

&lt;p&gt;Попробуем провести тестовый запуск свежескомпилированного демона командой:&lt;/p&gt;
&lt;pre&gt;
anytermd -p 7777 --local-only
&lt;/pre&gt;
&lt;p&gt;Запускаем браузер и переходим по адресу http://localhost:7777. Если вы увидели окошко терминала, то все ок и можно продолжать. Теперь необходимо сделать этот терминал доступным извне.&lt;/p&gt;

&lt;p&gt;Для этого, как я уже писал выше, понадобится установленный веб-сервер Apache 2 с включенными модулями &lt;b&gt;mod_proxy, mod_proxy_http, mod_ssl и mod_auth_basic&lt;/b&gt;. Включить их можно такой командой:&lt;/p&gt;
&lt;pre&gt;
sudo a2enmod proxy proxy_http ssl auth_basic
&lt;/pre&gt;
&lt;p&gt;Модули включили, теперь нужно создать самодписной SLL-сертификат и файл с данными для basic-аутентификации.&lt;/p&gt;

&lt;p&gt;Этапы создания сертификата следующие: создание ключа, создание CSR (запроса на сертификат, в котором содержаться некоторые данные о сервере), подписание сертификата. Создаем какую-нибудь директорию для этого добра, переходим в нее и начинаем последовательно выполнять команды:&lt;/p&gt;
&lt;pre&gt;
sudo openssl genrsa -des3 -out server.key 1024 #В конце два раза вводим парольную фразу
sudo openssl req -new -key server.key -out server.csr #Можно просто вводить пустые ответы
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
&lt;/pre&gt;
&lt;p&gt;Теперь необходимо перенести созданное в правильные папки:&lt;/p&gt;
&lt;pre&gt;
sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private
&lt;/pre&gt;
&lt;p&gt;Далее, создадим файл с данными для basic-аутентификации. Для этого выполним команду:&lt;/p&gt;
&lt;pre&gt;
htpasswd -mbc /var/www/anyterm/.htpasswd username PassWord #где username - имя пользователя, а PassWord - его пароль
&lt;/pre&gt;
&lt;p&gt;Обратите внимание, что файл &lt;b&gt;.htpasswd&lt;/b&gt; создастся в директории &lt;b&gt;/var/www/anyterm&lt;/b&gt;, которая должна существовать. Предпоследний шаг - настроить веб-сервер так, чтобы он принимал соединения на 443 порт по HTTPS и перенаправлял их демону Anyterm. Для этого в директории &lt;b&gt;/etc/apache2/sites-available&lt;/b&gt; (предварительно веб-сервер должен уметь работать с виртуальными хостами и прослушивать 443 порт) создадим файл anyterm, выполнив команду:&lt;/p&gt;
&lt;pre&gt;
sudo touch /etc/apache2/sites-available/anyterm
&lt;/pre&gt;
&lt;p&gt;Теперь, добавим в свеженький файл строки конфигурации примерно такого содержания:&lt;/p&gt;
&lt;pre&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;

    &amp;lt;VirtualHost *:443&amp;gt;

        ServerName server

        &amp;lt;Location /anyterm&amp;gt;

             Allow from all

             ProxyPass http://localhost:8022 ttl=60

             ProxyPassReverse http://localhost:8022

             AuthType Basic

             AuthName "Anyterm"

             AuthUserFile /var/www/anyterm/.htpasswd             

             Require valid-user

         &amp;lt;/Location&amp;gt;

         SSLEngine on

         SSLCertificateFile /etc/ssl/certs/server.crt

         SSLCertificateKeyFile /etc/ssl/private/server.key

    &amp;lt;/VirtualHost&amp;gt;

&amp;lt;/IfModule&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Ффух... осталось соовсем немного, потерпите. Дадим веб-серверу знать, что мы добавили новый хост и сделаем ему рестарт:&lt;/p&gt;
&lt;pre&gt;
sodu a2ensite anyterm
sudo /etc/init.d/apache2 restart
&lt;/pre&gt;
&lt;p&gt;Обратите внимание, что сервер попросит вас ввести парольную фразу для ssl-ключа. Теперь остается последний шаг - правильный запуск демона Anyterm. Помните, что мы выполняли тестовый запуск на 7777 порту? Так вот, надо бы остановить его выполнение. Самый простой способ - это посмотреть идентификатор процесса при помощи:&lt;/p&gt;
&lt;pre&gt;
ps ax | grep anyterm
&lt;/pre&gt;
&lt;p&gt;И его дальнейшее убийство командой kill:&lt;/p&gt;
&lt;pre&gt;
kill идентификатор_процесса_anyterm
&lt;/pre&gt;
&lt;p&gt;Запустим демона заново:&lt;/p&gt;
&lt;pre&gt;
anyterm -p 8022 --user username #где username - имя пользователя, из-под которого будет вестись работа в терминале
&lt;/pre&gt;
&lt;p&gt;Теперь, сидя на работе, вы спокойно можете постучаться на домашнюю машину. Для этого достаточно в адресной строке браузера вбить https://ваш_ip-адрес/anyterm (или https://ваш_домен.служба_динамических_dns:проброшеный_порт, если у вас ADSL без статичного IP и сервер находится за NAT) - и вы увидите родной терминал. :)&lt;/p&gt;

&lt;p&gt;Вот, вроде, и все. Кончено, я мог что-то упустить, но вы можете задавать вопросы, которые могут появиться по ходу выполнения описанного процесса, и мы вместе восстановим справедливость и найдем истину.&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-2504360727241784663?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=TsaCcjA91wg:Lb6UEoZlaZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=TsaCcjA91wg:Lb6UEoZlaZQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-14T20:07:44.829+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Еще одна мысль на тему, почему Lorem ipsum калечит Ваш дизайн</title><link>http://blog.aaa-nan.info/2011/11/lorem-ipsum.html</link><category>Дизайн</category><category>Web-dev</category><category>Переводы</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Thu, 24 Nov 2011 12:32:10 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-7735201288474746292</guid><description>&lt;div class="art"&gt;
&lt;p&gt;Я знаю, что сейчас Вы подумали что-то, типа: "Ооо, еще один пост на тему того, как важен контент, и что в дизайне должна использоваться копия реального текста... Ну а если клиенты не отдали мне текстовку, но все равно хотят, чтобы я что-то им показал? Как тут быть, а?"&lt;/p&gt;

&lt;p&gt;Оокей, не волнуйтесь. Я тут не для того распинаюсь, чтобы давать Вам непрактичные советы или рассказывать то, что Вы и без меня прекрасно знаете. Я знаю, что если бы дизайнеры имели реальный контент, то они ни в коем случае не стали использовать Lorem ipsum, и с этим не поспоришь. Но, если все-таки Вас вынуждают использовать текстовую рыбу, то... вместо &lt;a href="http://lorem2.com/" class="other" rel="nofollow"&gt;Lorem ipsum&lt;/a&gt;, &lt;a href="http://hipsteripsum.me/" class="other" rel="nofollow"&gt;Hipster ipsum&lt;/a&gt;, или &lt;a href="http://hipsteripsum.me/" class="other" rel="nofollow"&gt;Samuel L. Ipsum&lt;/a&gt;, я считаю, что Вы должны использовать первый абзац любой &lt;a href="http://en.wikipedia.org/wiki/Special:Random" class="other" rel="nofollow"&gt;случайной статьи из Википедии&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Чтобы понять, зачем, давайте рассмотрим простой текст. Пожалуйста, внимательно прочтите следующее:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in the answer is purple voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;А теперь, если я спрошу, какой мой любимый цвет, то Вы сможете мне ответить?&lt;/p&gt;

&lt;p&gt;А ведь ответ есть в прочтенном Вами тексте! &lt;/p&gt;

&lt;p&gt;Как же так? Все потому, что как только Ваши глаза наткнулись на незнакомые латинские слова, то они просто соскользнули в его конец и Вы почти мгновенно прекратили чтение. Поверьте, Вы не сможете настроить свой мозг так, чтобы он смог переварить такую тарабарщину, как 100500 латинских слов.&lt;/p&gt;

&lt;h2&gt;Просмотр против Чтения&lt;/h2&gt;

&lt;p&gt;Как правило, Вы, как и Ваш клиент, игнорируете целые абзацы, не уделяя внимания многим мелочам. А происходит это потому, что Вы не читаете, а всего лишь просматриваете текст.&lt;/p&gt;

&lt;p&gt;С другой же стороны, какая-нибудь интересная статья с Википедии или какая-нибудь новость смогут пробудить Ваше любопытство и заставят Вас внимательно прочитать [себя] текст.&lt;/p&gt;

&lt;h2&gt;Почему Латынь?&lt;/h2&gt;

&lt;p&gt;Сейчас, я так полагаю, большинство людей используют рыбу Lorem Ipsum, даже не зная, откуда пошла такая практика - раньше этот текст использовали в книгопечатании в качестве заполнителя.&lt;/p&gt;

&lt;p&gt;Но нужна ли нам сейчас эта рыба? Я уверен, что большинство людей сможет отличить выдуманный контент от настоящего. И наихудшим вариантом развития событий может стать то, что Вы случайно оставили рыбу на какой-нибудь странице сайта. Но ничего, Вы ведь сможете легко ее заменить на реальный контент. (А представьте, если бы это была печатная продукция?)&lt;/p&gt;

&lt;p&gt;Так что... я считаю, что реальный и интересный текст, который заставляет в себя вчитываться, способен гораздо сильнее сконцентрировать внимание человека на мелочах типографики, нежели какая-то там рыба, написанная, к тому же, на латыни.&lt;/p&gt;

&lt;p&gt;Источник: &lt;a href="http://www.attackofdesign.com/why-lorem-ipsum-is-hurting-your-designs/" class="other" rel="nofollow"&gt;http://www.attackofdesign.com/why-lorem-ipsum-is-hurting-your-designs/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-7735201288474746292?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=E5DO6YPBprg:5O1XYlaFeqk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=E5DO6YPBprg:5O1XYlaFeqk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T00:32:10.005+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Об атрибуте scope в HTML5</title><link>http://blog.aaa-nan.info/2011/11/scope-html5.html</link><category>CSS3</category><category>Web-dev</category><category>CSS</category><category>Переводы</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Thu, 24 Nov 2011 12:32:10 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-6374310069141256680</guid><description>&lt;div class="art"&gt;

&lt;p&gt;В спецификации HTML5 был добавлен новый атрибут scope для тэга &lt;span class="code"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;. Итак, эта заметка о том, как работает этот новый атрибут и как это можно использовать.&lt;/p&gt;

&lt;p&gt;Этот атрибут, исходя из названия, используется для того, чтобы ограничить область действия стиля, для которого он (атрибут) указан. Область действия стиля с таким атрибутом будет распространяться на родительский элемент, внутри которого находится тег &lt;span class="code"&gt;&amp;lt;style&amp;gt;&lt;/span&gt; этого стиля, и всех дочерние элементы этого родителя. Все элементы снаружи области действия будут проигнорированы даже в случае полного совпадения селекторов. Этот атрибут принимает булевские значения, так что указывать его можно либо как просто scope для HTML, либо как &lt;span class="code"&gt;scope="scoped"&lt;/span&gt; для XML/XHTML. Вот небольшой пример использования этого атрибута:&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="ru"&amp;gt;
    &amp;lt;head&amp;gt;
        &amp;lt;title&amp;gt;Пример использования атрибута scope&amp;lt;/title&amp;gt;
        &amp;lt;style&amp;gt;
            p { color: black; }
        &amp;lt;/style&amp;gt;
    &amp;lt;/head&amp;gt;
    &amp;lt;body&amp;gt;
        &amp;lt;p&amp;gt;Цвет текста в этом параграфе будет черным.&amp;lt;/p&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;style scoped&amp;gt;
                p { color: green; }
            &amp;lt;/style&amp;gt;
            &amp;lt;p&amp;gt;А здесь - зеленым.&amp;lt;/p&amp;gt;
            &amp;lt;p&amp;gt;И тут!&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;p&amp;gt;А тут - снова черным.&amp;lt;/p&amp;gt;
    &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
&lt;p&gt;В браузерах, которые поддерживают этот атрибут, цвет текста в тех параграфах, что внутри &lt;span class="code"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;, будет зеленым, в остальных же - черным. Любой стиль, внутри тега &lt;span class="code"&gt;&amp;lt;style&amp;gt;&lt;/span&gt; с ограниченной областью действия, будет применен только к его родителю (в данном случае - к &lt;span class="code"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;) и всем дочерним элементам этого родителя (в данном случае - к двум &lt;span class="code"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;).&lt;/p&gt;

&lt;p&gt;И, еще небольшое уточнение. Любые общие правила (т.н. @-правила) игнорируются за пределами ограниченных стилей. Например, если внутри ограниченного стиля мы подключили какой-то шрифт посредством &lt;span class="code"&gt;@font-face&lt;/span&gt;, то этот шрифт не получится использовать для элементов вне области действия данного стиля, даже если явно указать в свойстве &lt;span class="code"&gt;font-family&lt;/span&gt; имя данного шрифта.&lt;/p&gt;

&lt;h2&gt;Зачем использовать стили с ограниченной областью действия?&lt;/h2&gt;

&lt;p&gt;Первый вопрос, который может возникнуть в голове у верстальщика, узнавшего про scope: "Где я могу это использовать?". Когда мы вставляем код стилей в HTML, то это не сильно, на первый взгляд, отличает scoped-стили от обыкновенных inline. Не надо путать эти два понятия.&lt;/p&gt;

&lt;p&gt;Вот пара ситуаций, в которых можно было бы применить &lt;span class="code"&gt;&amp;lt;style&amp;gt;&lt;/span&gt; с атрибутом scope. Первая - это какие-либо html-демо на странице. Чтобы не париться с различными блоками и их id, достаточно просто создать стиль с ограниченной областью действия и вставить его прямо в страницу. Это может пригодиться лишь немногим веб-разработчикам, но, тем не менее, использование новых возможностей в такой ситуации - очевидно.&lt;/p&gt;

&lt;p&gt;Другая ситуация - это использование scoped-стилей для элементов управления богатых функционалом веб-приложений, для обеспечения самодостаточности этих элементов. Хотя существует множество фреймворков, которые призваны решить проблемы элементов интерфейса веб-приложений, да может и Shadow DOM стандартизируют, но, тем не менее, scope - тоже решение. &lt;/p&gt;


&lt;h2&gt;Какими браузерами это поддерживается?&lt;/h2&gt;

&lt;p&gt;Кхм... да пока никакими! Только работы по поддержки этого свойства в WebKit идут...&lt;/p&gt;

&lt;h2&gt;Было бы неплохо...&lt;/h2&gt;

&lt;p&gt;Основная критика, которую народ высказывает по поводу scope - это то, что новая возможности практически ничем не отличается от inline-стилей. Возможно, было бы логично сделать что-то вроде такого: &lt;span class="code"&gt;&amp;lt;link rel="stylesheet" href="style.css" scoped for="scoped-element" /&amp;gt;&lt;/span&gt;, - где вместо "scoped-element" был бы id родительского для этого стиля элемента. Но, умные люди, видимо, знают, почему так сделать нельзя. А жаль...&lt;/p&gt;

&lt;p&gt;Источник: &lt;a href="http://dstorey.tumblr.com/post/11405550112/scoped" rel="nofollow" class="other"&gt;http://dstorey.tumblr.com/post/11405550112/scoped&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-6374310069141256680?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=jo4oOjFsaEU:_lTamhCkc8Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=jo4oOjFsaEU:_lTamhCkc8Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T00:32:10.003+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Дорогие клиенты, Веб изменился! Пришло время использовать HTML5 и CSS3</title><link>http://blog.aaa-nan.info/2011/09/html5-css3.html</link><category>CSS3</category><category>Web-dev</category><category>HTML5</category><category>CSS</category><category>Переводы</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Thu, 22 Sep 2011 14:09:10 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-2757282797861420606</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="art"&gt;
&lt;h2&gt;



Отсебятина&lt;/h2&gt;
Немного капитанская на мой взгляд статья, но раз уж перевел, то почему бы не выложит.
&lt;br /&gt;
&lt;h2&gt;



Отношение к разработке&lt;/h2&gt;
Приблизительно 40% времени разработки сайта уходит на то, чтобы сайт выглядел одинаково, пиксель в пиксель, во всех браузерах. Мы хотим, чтобы все браузеры показывали посетителю одно и то же (ну, или очень похожее). Но нет никаких гарантий, что на мобильных устройствах все будет хорошо.&lt;br /&gt;
Раньше при разработке сайта все были уверены, что он должен отображаться идентично всегда и везде.&lt;br /&gt;
Теперь мы должны понимать, что знакомый нам Веб изменился. Мы уже не в 2004 году, когда разработка велась в основном под IE 6 на PC. Сегодня Веб охватывает множество устройств, включая мобильные телефоны, телевизоры, портативные компьютеры и Маки. Так что, наши сайты должны отображаться на разных устройства в соответствии со спецификой их платформы.&lt;br /&gt;
Стремясь сделать внешний вид вашего проекта идентичным только во всех десктопных браузерах, вы делаете его менее доступным.&lt;br /&gt;
&lt;h2&gt;



Валидность кода&lt;/h2&gt;
Валидация – это всего лишь инструмент, а не религия, которой нужно слепо следовать. Если хотите ознакомится с этим утверждением поближе, то прочитайте статью Джефри Вэя «&lt;a class="other" href="http://net.tutsplus.com/articles/general/but-it-doesnt-validate/" rel="nofollow"&gt;But It Doesn’t Validate&lt;/a&gt;».&lt;br /&gt;
Сайт, код которого полностью валидный, не будет более доступным для пользователей, и не факт, что он будет корректно отображаться во всех браузерах. Но валидация на доступность и юзабилити не будет излишней.&lt;br /&gt;
Google утверждает, что валидность не влияет на результат поисковой выдачи. Но на эти результаты отчасти влияет то, насколько сайт доступен на различных платформах. Если хотите, то можете посмотреть &lt;a class="other" href="http://www.youtube.com/watch?v=FPBACTS-tyg" rel="nofollow"&gt;ответ Мэтта Ката&lt;/a&gt; на вопрос о том, почему google.com не проходит валидацию W3C.&lt;br /&gt;
&lt;h2&gt;



Так как же нам вести разработку сегодня?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Мы должны использовать HTML5 и CSS3 для того, чтобы наши сайты были более дружелюбны к современным устройствам, чтобы они были доступны и удобны для пользователей;&lt;/li&gt;
&lt;li&gt;В связи с этим, процесс разработки ускоряется, что позволяет заканчивать проекты быстрее и делать их очень качественными;&lt;/li&gt;
&lt;li&gt;Такие изменения используемых технологий позволяют экономить деньги клиентов;&lt;/li&gt;
&lt;li&gt;Спроектированные таким образом сайты будут более перспективными;&lt;/li&gt;
&lt;li&gt;Эта методология ускоряет разработку и уменьшает стоимость проекта.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;



Контент – важнее всего!&lt;/h2&gt;
Наиболее важные принципы, которых стоит придерживаться – это:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Доступность. Каждый сайт должен состоять из чистого HTML-кода, чтобы быть доступным на любом устройстве. Это подразумевает доступность контента везде и всюду.&lt;/li&gt;
&lt;li&gt;Удобство. Удобство восприятия информации также важно. Если сайт будет доступен, но не удобен в использовании, то это очень плохо (и может даже повлиять на результаты поисковой выдачи Google).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;



Различия между браузерами&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-MztmQgXJhd0/Tnujv38w39I/AAAAAAAAAaY/1uNSeQ6u9W4/s1600/browser-differences1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-MztmQgXJhd0/Tnujv38w39I/AAAAAAAAAaY/1uNSeQ6u9W4/s1600/browser-differences1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
На скриншоте выше вы можете увидеть, как один и тот же сайт может выглядеть в разных браузерах на различных устройствах. Слева направо вы видите:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;IE6, браузеры и устройства, которые не поддерживают CSS;&lt;/li&gt;
&lt;li&gt;Устаревшие версии браузеров, такие как: IE7-8, FF2, Chrome, Opera и Safari;&lt;/li&gt;
&lt;li&gt;Все современные браузеры, типа FF3.6, Chrome, Opera и Safari;&lt;/li&gt;
&lt;li&gt;CSS 3-D-анимация, которая на данный момент доступна только в Safari, но вскоре должна появиться в FF и Chrome.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;



Адаптивный дизайн&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-DF7UfJBBuXs/TnujkN3a-7I/AAAAAAAAAaU/sg4Ve6gU1JI/s1600/adaptive-design1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-DF7UfJBBuXs/TnujkN3a-7I/AAAAAAAAAaU/sg4Ve6gU1JI/s1600/adaptive-design1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Адаптивный подход к дизайну подразумевает немного другое отношение к созданию сайтов и увеличивает время разработки. Тут вы должны делать сайт с резиновой шириной такой, что взаимодействие с ним пользователя будет зависеть от разрешения экрана устройства, с которого ведется просмотр. Такой подход включает в себя ориентацию на различные размеры экранов устройств, начиная от смартфонов и заканчивая широкоэкранными PC и Маками. Вот главные категории устройств, на которые стоит ориентироваться при таком подходе:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Смартфоны;&lt;/li&gt;
&lt;li&gt;iPad в портретной ориентации, различные планшеты;&lt;/li&gt;
&lt;li&gt;iPad в ландшафтной ориентации, PC и Маки с экранными разрешениями около 1024 пикселей;&lt;/li&gt;
&lt;li&gt;Широкоэкранные дисплеи.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;



Подводя итоги&lt;/h2&gt;
Если просто, то нужно работать над тем, чтобы контент сайта был доступен всегда, чтобы сайт был современным и перспективным. Вы можете найти некоторую &lt;a class="other" href="http://en.wikipedia.org/wiki/Usage_share_of_web_browsers" rel="nofollow"&gt;статистику&lt;/a&gt; использования браузеров и развития тенденций в этой сфере.
Использование мобильных платформ на июнь 2010 года:&lt;br /&gt;
&lt;table border="0" cellpadding="5" cellspacing="0" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-collapse: collapse; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; margin: auto; width: 500px;"&gt;
&lt;tbody&gt;
&lt;tr style="background: #F1F1F1;"&gt;
&lt;th align="left"&gt;Opera&lt;/th&gt;
&lt;th align="left"&gt;iPhone&lt;/th&gt;
&lt;th align="left"&gt;Nokia&lt;/th&gt;
&lt;th align="left"&gt;iPod Touch&lt;/th&gt;
&lt;th align="left"&gt;Blackberry&lt;/th&gt;
&lt;th align="left"&gt;Android&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align="left"&gt;26.35%&lt;/td&gt;
&lt;td align="left"&gt;18.05%&lt;/td&gt;
&lt;td align="left"&gt;15.84%&lt;/td&gt;
&lt;td align="left"&gt;8.69%&lt;/td&gt;
&lt;td align="left"&gt;14.41%&lt;/td&gt;
&lt;td align="left"&gt;6.69%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
Также можно наблюдать сокращение доли IE, который уступает место другим браузерам.&lt;br /&gt;
&lt;h2&gt;



Рассказывайте вашим клиентам о HTML5 и CSS3&lt;/h2&gt;
Итак, вы должны помочь своим клиентам понять, почему нужно делать так, а не иначе, чтобы они не боялись перемен. Надо работать в этом направлении и быть честным клиентом уже в начале работы, и они поймут, что так делать правильно.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-2757282797861420606?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=ThJXA6QMrvw:fIlKc8wB0aU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=ThJXA6QMrvw:fIlKc8wB0aU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-23T01:09:10.127+04:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-MztmQgXJhd0/Tnujv38w39I/AAAAAAAAAaY/1uNSeQ6u9W4/s72-c/browser-differences1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Полезные инструменты для работы с HTML, CSS и JS: часть 2</title><link>http://blog.aaa-nan.info/2011/09/html-css-js-2.html</link><category>JavaScript</category><category>CSS3</category><category>HTML5</category><category>CSS</category><category>jQuery</category><category>Переводы</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Wed, 31 Aug 2011 23:24:13 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-8934290913463943320</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="art"&gt;
&lt;h2&gt;
Инструменты для работы с JS&lt;/h2&gt;
&lt;a href="http://www.modernizr.com/"&gt;Modernizr 2&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.modernizr.com/"&gt;Modernizr&lt;/a&gt; – это широко используемая, открытая JS-библиотека, которая помогает вам использовать HTML5 и CSS3 при разработке сайтов. Начиная со второй её версии, вы можете совместно использовать механизм определения функционала браузера, media queries и загрузку ресурсов по требованию. Это дает вам мощь и гибкость для оптимизации при любых обстоятельствах.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/modernizr.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="182" src="http://media.smashingmagazine.com/uploads/2011/06/modernizr.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://yepnopejs.com/"&gt;yepnope.js&lt;/a&gt;&lt;br /&gt;
Условный загрузчик, который позволяет загружать только те скрипты, которые действительно необходимы в данный момент.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-117.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-117.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://fittextjs.com/"&gt;FitText&lt;/a&gt;&lt;br /&gt;
FitText – это плагин для jQuery, который предназначен для отображения текста таким образом, чтобы он заполнял все пространство родительского элемента. Отлично подходит для создания заголовках, которые будут выглядеть одинаково красиво как на огромной панели, так и на экране мобильного устройства.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-189.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-189.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://imakewebthings.github.com/jquery-waypoints/"&gt;jQuery Waypoints&lt;/a&gt;&lt;br /&gt;
Это маленький плагин для jQuery который позволяет выполнить какую-либо функция, когда пользователь доскроллил до определенного элемента.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-109.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-109.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://stefangabos.ro/jquery/jquery-plugin-boilerplate-revisited/"&gt;jQuery Plugin Boilerplate&lt;/a&gt;&lt;br /&gt;
Этот шаблон уже содержит в себе реализацию public- и private-методов, а также набор public- и private-свойств, которые могут пригодиться для комплексной разработки плагинов для jQuery.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-110.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-110.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/p/ligature-js/"&gt;ligature-js&lt;/a&gt;&lt;br /&gt;
Эта библиотека предназначена для конвертирования символов текста в типографские лигатуры с последующей вставкой их на страницу.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-112.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-112.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="https://github.com/danbentley/placeholder"&gt;Placeholder jQuery Plugin/Polyfill&lt;/a&gt;&lt;br /&gt;
Этот jQuery-плагин обеспечивает поддержку нового атрибута форм в HTML5 – placeholder="", - в браузерах, которые его не понимают (речь идет, конечно, об IE).&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-105.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-105.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://leaverou.me/2011/05/strongly-typed-javascript/"&gt;StronglyTyped&lt;/a&gt;&lt;br /&gt;
Эта библиотека превращает JavaScript в некое подобие строго типизированного языка.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-129.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-129.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://weepy.github.com/kaffeine/"&gt;Kaffeine&lt;/a&gt;&lt;br /&gt;
Это набор расширений для JS, которые добавляют в язык некоторый синтаксический сахар.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-113.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-113.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://millermedeiros.github.com/crossroads.js/"&gt;Crossroads.js &lt;/a&gt;&lt;br /&gt;
Библиотека, предназначенная для диспетчерезации URL-адресов, написанная на JS.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-114.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-114.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-113.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://doctorjs.org/"&gt;Doctor JS&lt;/a&gt;&lt;br /&gt;
Doctor JS анализирует ваш JS-код и выдает отчет о проделанной работе в формате JSON.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-118.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-118.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://headjs.com/"&gt;HEAD.js&lt;/a&gt;&lt;br /&gt;
Это скрипт, который предназначен для ускорения, упрощения и модернизации сайта – это набор различных универсальных решений. С ним вы сможете загружать скрипты, как обычные картинки, а также безопасно использовать HTML5 и CSS3.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://hivelogic.com/enkoder/form"&gt;Hivelogic&lt;/a&gt;&lt;br /&gt;
Публикация e-mail-адреса на сайте в открытом виде – не лучшее решение, т.к. можно нагрести кучу спама в свой почтовый ящик. Эта библиотека предназначена для безопасной публикации e-mail на страницах сайта, так что их увидят только реальные люди, а не спам-боты.  Более надежным решением данной проблемы является сервис &lt;a href="http://mollom.com/"&gt;Mollom&lt;/a&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://coding.smashingmagazine.com/wp-content/uploads/2011/06/useful-tool-screenshot-005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://coding.smashingmagazine.com/wp-content/uploads/2011/06/useful-tool-screenshot-005.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://bonsaiden.github.com/JavaScript-Garden/"&gt;JavaScript Garden&lt;/a&gt;&lt;br /&gt;
Это сервис, который создавался с образовательной целью. Он содержит информацию о распространенных ошибках, которые допускают разработчики, только что начавшие изучение языка.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-206.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-206.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://www.syntaclet.com/"&gt;Syntaclet&lt;/a&gt;&lt;br /&gt;
Этот букмарклет предназначен для подсветки кода, который может быть вставлен в элемент textarea. Один клик – и вы видите подсвеченный в соответствии с выбранным синтаксисом код, строки которого пронумерованы.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-173.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-173.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://chris.zarate.org/projects/bookmarkleter/"&gt;Bookmarkleter&lt;/a&gt;&lt;br /&gt;
Этот сервис предназначен для создания букмарклетов из JS-кода. Он убирает переводы строк, табуляцию, ненужные пробелы, кодирует URL и помещает код в функцию-обёртку.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-144.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-144.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a href="http://ted.mielczarek.org/code/mozilla/bookmarklet.html"&gt;Bookmarklet Crunchinator&lt;/a&gt;&lt;br /&gt;
Крутая тулза, которая также поможет вам создать букмарклет из JS-кода.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-8934290913463943320?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=5PJ7WEBxJfo:tYbSIW7Uybw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=5PJ7WEBxJfo:tYbSIW7Uybw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-01T10:24:13.562+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Полезные инструменты для работы с HTML, CSS и JS: часть 1</title><link>http://blog.aaa-nan.info/2011/08/html-css-js-1.html</link><category>CSS3</category><category>PHP</category><category>HTML5</category><category>CSS</category><category>Переводы</category><category>Firefox</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sat, 27 Aug 2011 12:15:47 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-4927554046194020395</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="art"&gt;
Разработка клиентской части веб-приложения – штука занятная: учиться ей не сложно, но, чтобы стать профессиональным разработчиком, придется постараться. Она состоит из огромной кучи всевозможных вещей, которые необходимо учитывать; безумного количества настроек, которые нужно применять то там, то сям; большого количества деталей, не обращать внимания на которые просто нельзя, если хочешь сделать все правильно… К счастью, разработчики и дизайнеры придумали множество полезных утилит, библиотек и приложений, которые помогают нам, простым смертным, в этом нелегком деле освоения клиентской веб-разработки. Такие инструменты являются ценными и полезными, поскольку они экономят наше время при автоматизации рутинных задач и, следовательно, помогают нам сосредоточиться на более важных вещах.&lt;br /&gt;
&lt;h2&gt;






Инструменты для работы с HTML и CSS&lt;/h2&gt;
&lt;a href="http://htmlemailboilerplate.com/"&gt;MHTML Email Boilerplate&lt;/a&gt;&lt;br /&gt;
Примеры кода на этом сайте помогут вам справится с наиболее распространенными ошибками, которые встречаются при верстке HTML-макетов писем почтовой рассылки.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/emailboiler.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://media.smashingmagazine.com/uploads/2011/06/emailboiler.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://initializr.com/"&gt;Initializr&lt;/a&gt;&lt;br /&gt;
Этот инструмент позволяет вам сгенерировать HTML5-шаблон, основанный на HTML5 Boilerplate. Вы можете решить добавить ли в него образец содержимого, использовать jQuery или чистый JS, указать различные совместимости и настройки сервера. На выходе вы получите шаблон, который сможете применить для нового проекта.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-227.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-227.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://layerstyles.org/"&gt;Layer Styles&lt;/a&gt;&lt;br /&gt;
Это симпотичный и простой инструмент для создания CSS-кода. Он позволяет добавлять тени, фон, границы блока, закругление уголков и генерирует кросс-браузерный CSS-код.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://mgmt.smashingmagazine.com/wp-content/uploads/2011/06/layerstyles.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://mgmt.smashingmagazine.com/wp-content/uploads/2011/06/layerstyles.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://html5boilerplate.com/mobile/"&gt;Mobile Boilerplate&lt;/a&gt;&lt;br /&gt;
Шаблон, который позволит создавать вам насыщенные и производительные мобильные приложения. Используя этот инструмент, вы получите кросс-браузерный код для новых мобильных устройств, а также поддержку устаревших платформ Symbian, Blackberry, IE mobile.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-124.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-124.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.askthecssguy.com/kotatsu/index.html"&gt;Kotatsu&lt;/a&gt;&lt;br /&gt;
Простой генератор HTML-таблиц, который позволит вам легко и просто присвоить необходимые классы столбцам и строкам. Если же вам нужен простой генератор списков, то посмотрите вот &lt;a href="http://www.limaker.com/"&gt;тут&lt;/a&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-188.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-188.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://aboutcode.net/vogue/"&gt;Vogue&lt;/a&gt;&lt;br /&gt;
Этот инструмент позволяет перезагружать стили на странице во всех браузерах и может быть настроен для одновременной перезагрузки стилей во всех открытых браузерах одновременно. Для того, чтобы воспользоваться данным инструментом, необходимо установить NodeJS и npm.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-162.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-162.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/mockko/livereload"&gt;LiveReload&lt;/a&gt;&lt;br /&gt;
LiveReload применяет изменения CSS/JS-файлов страницы в Safari и Chrome без ее перезагрузки и перезагружает страницу, если был изменен ее HTML-код. В качестве альтернативы этому инструменту можно использовать библиотеку &lt;a href="http://livejs.com/"&gt;Live.js&lt;/a&gt;, задача которой отображать только актуальную версию страницы, над которой вы работаете в данный момент.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-141.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-141.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/p/css-x-fire/"&gt;css-x-fire&lt;/a&gt;&lt;br /&gt;
Интересный инструмент, который позволяет применять в IDE CSS-свойства, которые были установлены «на лету» через FireBug. Таким образом, разработчик может сосредоточится на работе с CSS, избегая процесса обновления страницы.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://mgmt.smashingmagazine.com/wp-content/uploads/2011/06/cssxfire.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://ffffallback.com/"&gt;Ffffallback&lt;/a&gt;&lt;br /&gt;
Букмарклет, который позволяет вам тестировать различные наборы шрифтов, пока не будет достигнут удовлетворительный результат. Работает он так: производится сканирование CSS открытой страницы, а затем создается ее клон, с которым вы можете спокойно работать.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-199.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-199.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://incident57.com/less/"&gt;LESS.app for Mac OS X&lt;/a&gt;&lt;br /&gt;
LESS добавляет в стандартный CSS переменные, вложенные правила и операторы. Это приложение делает работу с LESS еще проще и позволяет компилировать less-файлы в стандартный CSS.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-151.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-151.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mgeraci.github.com/Less-Boilerplate/"&gt;Less-Boilerplate&lt;/a&gt;&lt;br /&gt;
Шаблонный CSS, написанный на LESS, включающий в себя CSS reset, CSS3-хелперы и многое другое.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-138.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-138.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://needle.readthedocs.org/en/latest/?redir"&gt;Needle v0.1a1&lt;/a&gt;&lt;br /&gt;
Neddle представляет собой удобный инструмент для тестирования CSS путем снятия скриншотов различных частей сайта и сравнения их с эталоном. Также этот инструмент предоставляет средства для тестирования рассчитанных CSS-значений и позиционирования HTML-элементов.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-101.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-101.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://csswizardry.com/inuitcss/"&gt;inuit.css&lt;/a&gt;&lt;br /&gt;
Это CSS-фреймворк, который содержит полезные советы, приемы и практики в одном файле.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-111.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-tools-111.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://yostudios.github.com/Spritemapper/"&gt;Spritemapper&lt;/a&gt;&lt;br /&gt;
Это приложение необходимо для слияния нескольких изображений в одно (спрайт) и генерации соответствующего CSS-кода, в котором будет расписано позиционирования для отдельных частей общего изображения; такой подход необходим для уменьшения времени загрузки страниц.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-178.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-178.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://theleggett.com/2011/05/04/csssitemap-system/"&gt;CSSsitemap System&lt;/a&gt;&lt;br /&gt;
David Leggett поделился с общественностью кодом основанной на CSS карты сайта, которую они разработали вместе с Andrew Maier.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-151.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-151.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://necolas.github.com/normalize.css/"&gt;Normalize.css&lt;/a&gt;&lt;br /&gt;
Normalize.css использует несколько другой подход к сбросу умолчаний CSS-свойств. Jonathan Neal и Nicolas Gallagher провели некоторые исследования и остановились на том, что не все свойства нужно сбрасывать, но некоторые из них нуждаются в «нормализации».&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/normalizecss.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="143" src="http://media.smashingmagazine.com/uploads/2011/06/normalizecss.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.red-root.com/sandbox/holmes/"&gt;Holmes&lt;/a&gt;&lt;br /&gt;
Это инструмент для тестирования правильности разметки прямо на странице. Вам нужно только добавить один единственный класс в тег &lt;span class="code"&gt;&amp;lt;body&amp;gt;&lt;/span&gt; страницы и вокруг ошибочной разметки появится красная рамка, желтой рамкой обведуться предупреждения, а серой – упраздненные элементы. Также, существует букмарклет, который позволяет holmes.css к любой странице, открытой в вашем браузере.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-195.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-195.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/p/zen-coding/"&gt;Zen Coding&lt;/a&gt;&lt;br /&gt;
Это плагин для редакторов и сред разработки, который позволяет писать разметку страницы в стиле CSS-селекторов. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://andy.edinborough.org/CSS-Stress-Testing-and-Performance-Profiling"&gt;CSS Stress Testing and Performance Profiling&lt;/a&gt;&lt;br /&gt;
Andy Edinborough поделился с нами кодом, при помощи которого можно провести стресс-тест на производительность CSS в основных браузерах.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://the-echoplex.net/log/css-crush"&gt;CSS Crush&lt;/a&gt;&lt;br /&gt;
Препроцессор для CSS. Выполняет много полезной работы при обработке и подключении CSS-файлов на страницу.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/uploads/2011/06/useful-res-103.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/uploads/2011/06/useful-res-103.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://cssprefixer.appspot.com/"&gt;CSSPrefixer&lt;/a&gt;&lt;br /&gt;
CSSPrefixer поможет вам оптимизировать рабочий процесс и сэкономить массу времени при вставке необходимых префиксов CSS-свойств для различных браузеров.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-210.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-210.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://markboultondesign.com/tools/index.html"&gt;iOS Media Query Previewer&lt;/a&gt;&lt;br /&gt;
Очень простой и интуитивно понятный инструмент для того, чтобы посмотреть, как будет выглядеть сайт на iPhone и iPad.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-150.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://media.smashingmagazine.com/wp-content/uploads/2011/06/useful-resources-150.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.csspivot.com/"&gt;CSS Pivot&lt;/a&gt;&lt;br /&gt;
С помощью этого инструмента, вы сможете добавить свои стили для любого сайта и поделиться своими результатами при помощи ссылки.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://pcss.wiq.com.br/"&gt;PCSS&lt;/a&gt;&lt;br /&gt;
Написанный на PHP CSS-препроцессор, который позволяет использовать всю мощь CSS3, обходясь меньшим количеством кода.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-4927554046194020395?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=cPBqILAMx34:7-DNBDagrEI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=cPBqILAMx34:7-DNBDagrEI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-27T23:15:47.392+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Спич!</title><link>http://blog.aaa-nan.info/2011/08/blog-post.html</link><category>Блог</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sat, 27 Aug 2011 04:17:28 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-4962269502660620175</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Таки очень давно ничегошеньки не писал... И это "неписание" меня тяготит, т.к. в голове упорно вертится слово "надо", которое, что странно, не идет вразрез с "хочу". Что ж, вернемся пока к переводам, а там - посмотрим, как пойдет. ;)&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-4962269502660620175?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=ESqlPe7VFCk:0BEX_Iu8POs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=ESqlPe7VFCk:0BEX_Iu8POs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-27T15:17:28.621+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Все на ZFConf 2011!!!</title><link>http://blog.aaa-nan.info/2011/05/zfconf-2011.html</link><category>Конференция</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sat, 07 May 2011 08:27:22 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-7268209191361427866</guid><description>&lt;p&gt;Основные подготовительные работы по конференции закончены. Доклады сформированы. Среди спикеров представители KnpLabs, Magento, JetBrains, Sphinx и других известных компаний.&lt;br /&gt;
&lt;p&gt;Открыта &lt;a href="http://www.zfconf.ru/registration/" target="_blank"&gt;&lt;strong&gt;финальная регистрация&lt;/strong&gt;&lt;/a&gt;!&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Если Вы проходили предварительную регистрацию&lt;/strong&gt;, то для прохождения финальной регистрации Вам нужно перейти по специальной ссылке, отправленной на e-mail. Введенную ранее информацию нужно будет только подтвердить. Если ссылка не приходила Вам, ее можно запросить через &lt;a href="http://www.zfconf.ru/get-registration-path/" target="_blank"&gt;специальную форму&lt;/a&gt;.&lt;br /&gt;
&lt;p&gt;Пожалуйста, обратите внимание на то, что &lt;strong&gt;изменилось &lt;a href="http://www.zfconf.ru/2011/location/" target="_blank" &gt;место проведения&lt;/a&gt;&lt;/strong&gt;! Мероприятие будет проходить на прошлогодней площадке — в актовом зале ЛГТЦ (Ленгипротранс-Центр), по адресу: Московский пр., 143, ст. м. «Электросила». Кофе-брейки и обсуждения на флипчартах будут проходить в фойе.&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Cписок докладов:&lt;/strong&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/flexible-architecture-using-dependency-injection/" target="_blank"&gt;Гибкая архитектура Zend Framework приложений с использованием Dependency Injection&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Алексей Качаев (&lt;a href="http://cogniance.com/" target="_blank" &gt;Сogniance&lt;/a&gt;, Senior PHP Developer)&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/performance-increasing-with-phpdaemon-varnish-esi/" target="_blank"&gt;Воюем за ресурсы: Повышение производительности Zend Framework приложения с помощью phpDaemon, Varnish и ESI&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Алексей Качаев (&lt;a href="http://cogniance.com/" target="_blank" &gt;Сogniance&lt;/a&gt;, Senior PHP Developer)&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/behavior-driven-development/" target="_blank"&gt;Behavior Driven Development в PHP и Zend Framework&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Константин Кудряшов (&lt;a href="http://www.knplabs.com/" target="_blank" &gt;KnpLabs&lt;/a&gt;, Senior Web Developer)&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/multitasking-distributed-system-with-job-queue/" target="_blank"&gt;Разделение труда: Организация многозадачной, распределенной системы в Zend Framework с помощью Job Queue&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Александр Готгельф (&lt;a href="http://www.magentocommerce.com/" target="_blank" &gt;Magento&lt;/a&gt;, PHP-разработчик) &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/how-can-help-development-environment/" target="_blank"&gt;Как может помочь среда разработки при написании приложения на Zend Framework?&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Николай Матвеев (&lt;a href="http://www.jetbrains.com/" target="_blank" &gt;JetBrains&lt;/a&gt;, разработчик) &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/creating-rest-api-for-third-party-developers-and-mobile-devices-with-oauth/" target="_blank"&gt;Создание REST-API для сторонних разработчиков и мобильных устройств с авторизацией по протоколу OAuth 1.0&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Дмитрий Чижевский (&lt;a href="http://zenmoney.ru/" target="_blank" &gt;Дзен-мани&lt;/a&gt;, разработчик) &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/fat-model-through-orm-development-history/" target="_blank"&gt;Толстая модель: История разработки собственного ORM&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Михаил Шамин (&lt;a href="http://geometria.ru/" target="_blank" &gt;Геометрия&lt;/a&gt;, ведущий разработчик)&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zfconf.ru/2011/topics/what-is-sphinx-and-how-use-it-with-php/" target="_blank"&gt;Что такое Sphinx, зачем он вообще нужен и как его использовать с PHP (от простого индекса до поискового кластера)&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Владимир Федорков (&lt;a href="http://sphinxsearch.com/" target="_blank" &gt;Sphinx&lt;/a&gt;, Director of Professional Services)&lt;br /&gt;
&lt;p&gt;Стоимость участия в мероприятии составит 1500 руб. В данную сумму входит: участие в самой конференции, кофе-брейки (от внешней кейтеринг-компании), пакет материалов участника и доступ к профессиональным видеозаписям докладов (после мероприятия). Доступно &lt;a href="http://www.zfconf.ru/payment-types/" target="_blank" &gt;множество способов оплаты&lt;/a&gt;.&lt;br /&gt;
&lt;p&gt;Торопитесь, &lt;strong&gt;количество мест ограничено&lt;/strong&gt;!&lt;br /&gt;
&lt;p&gt;Обязательно следите за последними новостями:&lt;br /&gt;&lt;strong&gt;RSS-канал:&lt;/strong&gt; &lt;a href="http://feeds.feedburner.com/zfconf" target="_blank"&gt;feeds.feedburner.com/zfconf&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Twitter:&lt;/strong&gt; &lt;a href="http://twitter.com/zfconf" target="_blank"&gt;@zfconf&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Группа ВКонтакте:&lt;/strong&gt; &lt;a href="http://vkontakte.ru/club14951507" target="_blank"&gt;vkontakte.ru/club14951507&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Организатор:&lt;/strong&gt; &lt;a href="http://www.wizartech.ru/" target="_blank"&gt;компания Wizartech&lt;/a&gt;&lt;br&gt;&lt;strong&gt;Партнеры:&lt;/strong&gt; &lt;a href="http://zendframework.ru/" target="_blank"&gt;сообщество zendframework.ru&lt;/a&gt; и &lt;a href="http://zfconf.org.ua/" target="_blank"&gt;конференция ZFConf Ukraine&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-7268209191361427866?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=itzF0VlZIrQ:e-6WrqPbCec:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=itzF0VlZIrQ:e-6WrqPbCec:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-07T19:27:22.524+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Лифторазмышление</title><link>http://blog.aaa-nan.info/2010/11/blog-post.html</link><category>Муза</category><category>Мысли</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Tue, 30 Nov 2010 09:01:26 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-4386298101303592161</guid><description>&lt;img alt="" id="BLOGGER_PHOTO_ID_5143539206767549218" src="http://lh3.google.com/LevshinO/R2GFxSusm0I/AAAAAAAAABk/ljkP5MOW_Ww/s144/voskl.jpg" style="border: none; float: left;" /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Когда-то в лифте.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;Мы часто задаем вопросы&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;Такие, что на них ответа нет.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;А если есть, то дать его непросто -&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;Пускай уж лучше синем пламенем горит весь свет.&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-4386298101303592161?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=n9nDNfOoT5Y:L_wTF3xJZ4o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=n9nDNfOoT5Y:L_wTF3xJZ4o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-30T20:01:26.584+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Все на ZFConf Ukraine!</title><link>http://blog.aaa-nan.info/2010/11/zfconf-ukraine.html</link><category>PHP</category><category>Конференция</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Tue, 16 Nov 2010 09:54:00 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-1958919883978796314</guid><description>&lt;div class="art"&gt;&lt;p&gt;27-го ноября в Киеве пройдет бесплатная, международная, совместная конференция ZFConf Ukraine (&lt;a href="http://zfconf.org.ua" class="other"&gt;http://zfconf.org.ua&lt;/a&gt;) &amp; MageConf (&lt;a href="http://mageconf.com" class="other"&gt;http://mageconf.com&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Цель конференции - объединить лучших специалистов PHP и Zend Framework Украины, России и других стран СНГ.&lt;/p&gt;&lt;p&gt;ZFConf Ukraine – первая в Украине конференция по Zend Framework, проводится в партнерстве с ZFConf Russia (&lt;a href="http://www.zfconf.ru" class="other"&gt;http://www.zfconf.ru&lt;/a&gt;) и сообществом &lt;a href="http://zendframework.ru" class="other"&gt;http://zendframework.ru&lt;/a&gt;. ZFConf Russia была первой конференцией по Zend Framework и прошла в марте этого года в Санкт-Петербурге, Россия, собрав более 200 участников из России, Беларуси, Украины, Литвы и других стран СНГ.&lt;/p&gt;&lt;p&gt;Конференция MageConf впервые прошла в мае 2010 года в Киеве. Это была первая конференция из серии PHP and Zend Framework в Украине. Ее посетили более 150 специалистов.&lt;/p&gt;&lt;p&gt;Конференция пройдет 27 ноября, в Киеве.&lt;/p&gt;&lt;p&gt;Титульный спонсор конференции – компания Magento.&lt;/p&gt;&lt;p&gt;Место: КиевЭкспоПлаза, ул. Салютная 2б, 3 павильон.&lt;/p&gt;&lt;p&gt;Время: 27 ноября 2010 г. (с 11:00 до 19:00).&lt;/p&gt;&lt;p&gt;Длительность: 1 полный день.&lt;/p&gt;&lt;p&gt;Формат: доклады в три потока и обсуждения на флипчарте (в перерывах).&lt;/p&gt;&lt;p&gt;Язык докладов: русский.&lt;/p&gt;&lt;p&gt;Стоимость участия: бесплатно.&lt;/p&gt;&lt;p&gt;Потоки: Zend Framework, PHP, Magento.&lt;/p&gt;&lt;p&gt;Аудитория: Разработчики ПО и специалисты по Project Management с Украины, России и близлежащих стран СНГ. Ожидаемое количество участников – 500 человек.&lt;/p&gt;&lt;p&gt;Доклады (&lt;a href="http://zfconf.org.ua/conf-2010/category/topics" class="other"&gt;http://zfconf.org.ua/conf-2010/category/topics&lt;/a&gt;):&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Встречайте Zend Framework 2.0. Александр Веремьев / Zend Framework Core команда (Zend Technologies).&lt;/li&gt;
&lt;li&gt;Эволюция ZF: архитектура, шаблоны, рефакторинг. Виктор Фараздаги / Component Maintainer и Contributor ZF 2.0 (4C).&lt;/li&gt;
&lt;li&gt;Юнит тестирование в Zend Framework 2.0. Ростислав Михайлив / Chief Developer / Software Architect (Gadu-Gadu).&lt;/li&gt;
&lt;li&gt;Хранение, обработка и отдача статики с использованием \Zend \File. Опыт социальной сети http://starlook.ru. Кирилл Мокевнин / Senior developer (undev).&lt;/li&gt;
&lt;li&gt;Чуть сложнее чем Singleton: аннотации, IOC, АОП. Кирилл Чебунин / Senior PHP Developer (Альпари).&lt;/li&gt;
&lt;li&gt;Doctrine 2. Валерий Рабиевский / Team leader (http://stfalcon.com).&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Список еще будет обновляться, вы также можете подать заявку на доклад, если вам есть чем поделиться поделиться с общественностью. &lt;/p&gt;&lt;p&gt;Также были бы рады услышать ваши комментарии по текущим темам.&lt;/p&gt;&lt;p&gt;Регистрация (&lt;a href="http://zfconf.org.ua/registration/" class="other"&gt;http://zfconf.org.ua/registration/&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Регистрируясь на одну конференцию, вы автоматически получаете доступ и на другую.&lt;/p&gt;&lt;p&gt;Если у вас есть предложения, или вы хотите быть спонсором, для связи с нами используйте контакты (&lt;a href="http://zfconf.org.ua/contacts/" class="other"&gt;http://zfconf.org.ua/contacts/&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Регистрируйтесь и следите за обновлениями на &lt;a href="http://zfconf.org.ua" class="other"&gt;http://zfconf.org.ua&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-1958919883978796314?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Ef9QujaURbU:WDWPSt8P2UM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Ef9QujaURbU:WDWPSt8P2UM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-16T20:54:00.471+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Все на HighLoad++!</title><link>http://blog.aaa-nan.info/2010/10/highload.html</link><category>Web-dev</category><category>Конференция</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Mon, 11 Oct 2010 09:45:05 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-8866113625420963077</guid><description>&lt;div class="art"&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Добрый день!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Через две недели, 25 и 26 октября в Москве пройдет крупнейшая профессиональная техничская конференция Рунета - конференция разработчиков высоконагруженных систем &lt;a href="http://www.highload.ru/?partner=levshino"&gt;HighLoad++&lt;/a&gt;. Мероприятие проходит уже четвертый год, собирая более 700 участников. В этом году основная направленность конференции - оригинальные исследования, новые архитектуры, новые концепкции и подходы в построении крупных Интернет-проектов.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.highload.ru/?partner=levshino"&gt;HighLoad++&lt;/a&gt; - знаковое событие по обмену опытом - мы ожидаем Stoyan Stefanov (Yahoo), Eugene Chigirinskiy (Microsoft), Patrice Pelland (Microsoft), James Golick, Robert Johnson (Facebook), Joe Damato, Петр Зайцев (Percona), Simon Riggs (PostgreSQL) и Bruce Momjian (PostgreSQL).&lt;/p&gt;&lt;p&gt;Joe Damato, "хакер", специализирующийся на низком уровне, известный специалист в мире Ruby прочитает доклад "Настройка и инструментарий для Linux / Performance tweaks and tools for Linux". Доклад разделен на две части. В первой части Джо рассмотрит особенности различных настроек производительности ядра Linux (и стандартные драйвера). Разговор пойдет о некоторых малоизвестных настройках ядра, подстройка которых поможет наиболее эффективно использовать аппаратные средства железа.&lt;/p&gt;&lt;p&gt;Во второй части доклада разговор пойдет о полезных инструментах для изучения и диагностики ошибок в процессах. Автор пробежится по различным инструментам для Linux (strace, ltrace, oprofile, gdb, и другие) и разберет, как их можно использовать, чтобы получить представление о том, на что тратятся ресурсы и время обработки запросов.&lt;/p&gt;&lt;p&gt;Другой отличный доклад - про архитектуру крупнейшего интернет-сайта в мире - Facebook.com от Robert Johnson, руководитель отдела разработки в Facebook, где он разрабатывает технологии по экономически эфективному масштабированию инфраструктуры и оптимизации производительности для миллионов пользователей Facebook.&lt;/p&gt;&lt;p&gt;Роберт расскажет о технологии, необходимой для запуска сайта таких масштабов (100 млрд. просмотров в день, 50 млрд. хранящихся фотографий), включая конкретные технологии созданные компанией Фейсбук, некоторые принципы, применяемые в работе с масштабированием, и уроки, полученные во время этих разработок. Также Роберт расскажет о наших новейших разработках в области масштабирования - пропуска социального контекста из сети через платформу Facebook.&lt;/p&gt;&lt;p&gt;Организаторы собрали в эти два дня крупнейшую встречу разработчиков баз данных - мы узнаем о новшествах в PostgreSQL и MySQL от тех, кто разрабатывал эти новшества: Саймон Ригс, Брюс Момжан, Петр Зайцев, разработчики Сфинкса, Константин Осипов и другие.&lt;/p&gt;&lt;p&gt;Целый &lt;b&gt;блок докладов о Ruby и Python&lt;/b&gt; отражает растущую популярность этих языков программирования:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Frontik. Сервер сборщик на python / Сергей Никулин (HeadHunter);&lt;/li&gt;
&lt;li&gt;Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails / Максим Лапшин;&lt;/li&gt;
&lt;li&gt;Приемы разработки высоконагруженных приложений на Twisted / Андрей Смирнов;&lt;/li&gt;
&lt;li&gt;Erlyvideo: 2000 одновременных видеоподключений / Максим Лапшин;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Конечно, конференция такого масштаба, включает в себя и &lt;b&gt;рассказ об облачных вычислениях&lt;/b&gt;, причем на серьезном профессиональном уровне:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cloud APIs: обзор API западных провайдеров и API Scalaxy;&lt;/li&gt;
&lt;li&gt;Extreme Cloud Storage on FreeBSD / Андрей Пантюхин;&lt;/li&gt;
&lt;li&gt;Scaling to Hundreds of Millions of Requests: What Worked and What Didn't / James Golick;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;b&gt;DDOS и защита от него&lt;/b&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Тандемные DDoS-атаки / Проблематика уязвимостей в спецификации TCP/IP (фундаментальные уязвимости) / Артем Гавриченков;&lt;/li&gt;
&lt;li&gt;Отчет за год по DDOS (атаки на ДНС, "не жадные" ботнеты, атаки на индекс Yandex (черный seo), высокоскоростные атаки, позиция государства и МВД на эту тему) / Александр Лямин;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Пара круглых столов с участием крупнейших компаний Рунета и мир&lt;/b&gt;а:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Квадратный стол про использование many-core CPU с участием Google, Intel, Yandex и Badoo / (Google, Яндекс, Mail.ru, Intel);&lt;/li&gt;
&lt;li&gt;Круглый стол с представителями ВКонтакте;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Все доклады конференции построены как профессиональные - даже если докладчик рассказывает о своей услуге, он рассказывает о том, как она устроена, а не рекламирует ее. Например - "Как мы строим CDN в России". Классификация CDN по спобу расположения серверов: расстановка серверов по сетям интернет-провайдеров или подключение к провайдерам в точках обмена трафиком. Классификация CDN по способу распределения нагрузки: DNS, HTTP Redirect. Классификация CDN по способу нахождения кратчайшего пути до пользователя.&lt;/p&gt;&lt;p&gt;И многое, многое другое - более 60 докладов из которых &lt;a href="http://www.highload.ru/?partner=levshino"&gt;Программный комитет конференции&lt;/a&gt;, в который входят технические директора и ведущие специалисты крупнейших компаний Рунета (Яндекс, Mail.ru, Рамблер, Badoo и другие), выберет самые лучшие.&lt;/p&gt;&lt;p&gt;Подробности Вы можете найти на &lt;a href="http://www.highload.ru/?partner=levshino"&gt;сайте конференции&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Удачи и до встречи на конференции!&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-8866113625420963077?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=3LiElatuKAw:e3MPlgedW_U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=3LiElatuKAw:e3MPlgedW_U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-11T20:45:05.960+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Google Maps API 3 – Мобильные устройства</title><link>http://blog.aaa-nan.info/2010/10/google-maps-api-3.html</link><category>Web-dev</category><category>Статьи</category><category>Переводы</category><category>Google Maps</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sat, 09 Oct 2010 11:31:50 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-7905630348179269534</guid><description>&lt;div class="art"&gt;&lt;h1&gt;Google Maps API 3 – Мобильные устройства&lt;/h1&gt;&lt;p&gt;Многие браузеры имеют мобильные версии. Поэтому теперь очень важно знать, как разрабатывать web-приложения (в том числе и карты) для них. Когда дело доходит до интеграции Google Maps в web-приложение, ориентированное на продвинутые устройства (такие, как, скажем, iPhone), то процесс разработки мало чем отличается от такового для настольных систем. Однако, существуют некоторые моменты, на которые стоит обратить внимание.&lt;/p&gt;&lt;p&gt;В текущей версии API разработчики уделили очень большое внимание мобильным девайсам. Производительность карт в мобильных версиях тех или иных браузера стала гораздо выше. Версия API 3, к примеру, работает в 2 раза быстрее на iPhone, чем ветка API 2.&lt;/p&gt;&lt;p&gt;Перейдем к делу.&lt;/p&gt;&lt;h2&gt;Расширяем обозримое пространство&lt;/h2&gt;&lt;p&gt;Экраны мобильных устройств намного меньше, нежели экраны их старших братьев. Первое, что мы сделаем, – будем использовать доступное экранное пространство по максимуму. Это делается путем установки ширины и высоты карты в 100%. Предположим, что id элемента, содержащего карту, равен &lt;span class="code"&gt;"map"&lt;/span&gt;. Тогда CSS-код будет выглядеть так:&lt;/p&gt;&lt;pre class="brush:js"&gt;html, body {  
  height: 100%;  
  margin: 0;  
}  
#map {  
  width: 100%;  
  height: 100%;  
}  
&lt;/pre&gt;&lt;p&gt;Обратите внимание, что высота и ширина элементов &lt;span class="code"&gt;&amp;lt;html&amp;gt;&lt;/span&gt; и &lt;span class="code"&gt;&amp;lt;body&amp;gt;&lt;/span&gt; установлена в 100% при нулевом значении границ. Это нужно для того, чтобы не было пустого пространства вокруг карты. Вот что получилось:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="220" src="http://1.bp.blogspot.com/_czADlTNKV1k/TLC0nAr3GuI/AAAAAAAAAUU/AfqlXwZ1ASQ/s320/both-maps-410x283.png" width="320" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Отключаем зуммирование страницы&lt;/h2&gt;&lt;p&gt;Владельцы мобильных устройств с сенсорными экранами привыкли использовать пальцы, сложенные «щепотью», для увеличения масштаба страницы. Но в приложении с интегрированными картами такой «маневр», скорее всего, будет использоваться для зуммирования карты, а не всей страницы. К счастью, есть специальный тег &lt;span class="code"&gt;&amp;lt;meta&amp;gt;&lt;/span&gt;, при помощи которого можно отключить масштабирование всей страницы. Выглядит он следующим образом:&lt;/p&gt;&lt;pre class="brush:js"&gt;&amp;lt;meta name="viewport" content="initial-scale=1.0, user-scalable=no" /&amp;gt;  
&lt;/pre&gt;&lt;p&gt;Используя этот код, разработчик может быть уверен в том, что карта его будет работать, как ожидалось. Браузеры, не поддерживающие этот тег, будут его просто-напросто игнорировать.&lt;/p&gt;&lt;h2&gt;Отсутствие реакции на наведенный курсор&lt;/h2&gt;&lt;p&gt;При разработке web-приложений для мобильных устройств также стоит учитывать, что мобильные браузеры не знают о событии &lt;span class="code"&gt;mouseover&lt;/span&gt;.&lt;/p&gt;&lt;h2&gt;Заключение&lt;/h2&gt;&lt;p&gt;Разработка карт для мобильных устройств практически ничем не отличается от таковой для настольных компьютеров. Если вы хотите узнать больше о разработке для iPhone, то загляните &lt;a href="http://developer.apple.com/webapps/docs/documentation/AppleApplications/Reference/SafariWebContent/Introduction/Introduction.html" class="other" rel="nofollow"&gt;сюда&lt;/a&gt;. Разработчикам для Android рекомендую заглянуть &lt;a href="http://developer.android.com/" class="other" rel="nofollow"&gt;сюда&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-7905630348179269534?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=UtlJZ_Tih1o:0TJduvSc6VY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=UtlJZ_Tih1o:0TJduvSc6VY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-09T22:31:50.204+04:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_czADlTNKV1k/TLC0nAr3GuI/AAAAAAAAAUU/AfqlXwZ1ASQ/s72-c/both-maps-410x283.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Google Maps API 3 - Инфо-окна</title><link>http://blog.aaa-nan.info/2010/09/google-maps-api-3.html</link><category>Web-dev</category><category>Статьи</category><category>Переводы</category><category>Google Maps</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Thu, 02 Sep 2010 10:47:24 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-2111415192400400086</guid><description>&lt;div style="font-family:Verdana;" class="art"&gt;&lt;h1&gt;Google Maps API 3 – Инфо-окна&lt;/h1&gt;&lt;p&gt;Использование инфо-окон – это очень хороший способ показать на карте информацию о какой-либо конкретной области или о каком-либо объекте. Помимо того, что вы можете добавлять в инфо-окно какой-либо текст или HTML-код, их можно использовать по-разному: порой, очень даже необычно. В этой статье, как не трудно было догадаться, мы рассмотрим вопросы, связанные как раз с инфо-окнами.&lt;/p&gt;&lt;h2&gt;Объект InfoWindow&lt;/h2&gt;&lt;p&gt;Объект &lt;span class="code"&gt;InfoWindow&lt;/span&gt; открывает инфо-окно в каком-нибудь месте карты. Оно, как правило, выглядит как речевая выноска («пузырь», бабл), хвостик которой указывает на конкретный объект. В качестве объекта могут выступать любе координаты на карте.&lt;/p&gt;&lt;p&gt;Объект находится в пространстве имен &lt;span class="code"&gt;google.maps.InfoWindow&lt;/span&gt; и принимает в качестве необязательного аргумента параметр &lt;span class="code"&gt;options&lt;/span&gt;. &lt;span class="code"&gt;Options&lt;/span&gt; – это литерал, в котором вы можете определить свойства инфо-окна. Для того, чтобы заполнить инфо-окно содержимым, необходимо использовать свойство &lt;span class="code"&gt;content&lt;/span&gt; литерала &lt;span class="code"&gt;options&lt;/span&gt;. Можно задать его значение на этапе создания инфо-окна, а можно и позже – используя метод &lt;span class="code"&gt;setContent()&lt;/span&gt;. Значением этого свойства может быть как простая строка, так и HTML-код.&lt;/p&gt;&lt;h3&gt;Подготавливаем сцену&lt;/h3&gt;&lt;p&gt;Начнем, пожалуй, с карты с одним маркером:&lt;/p&gt;&lt;pre class="brush: js"&gt;// Задаем список опций карты  
var options = {  
    zoom: 7,  
    center: new google.maps.LatLng(56.83, 15.16),  
    mapTypeId: google.maps.MapTypeId.ROADMAP  
};  
// Инициализируем карту
var map = new google.maps.Map(document.getElementById('map'), options);  
// Создаем маркер
var marker = new google.maps.Marker({  
  position: new google.maps.LatLng(56.8848, 14.7730),  
  map: map,  
  title: 'Маркер'  
});  
&lt;/pre&gt;&lt;p&gt;Вот, что мы увидим в окне браузера:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_czADlTNKV1k/TH_c7a9TK8I/AAAAAAAAATw/I01zWZ-37ls/s320/InfoWindowHidden.png" width="320" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;Добавляем инфо-окно&lt;/h3&gt;&lt;p&gt;Теперь, когда все подготовлено, давайте добавим инфо-окно. В этом примере мы просто заполним наше окошко классической фразой «Hello, world!»:&lt;/p&gt;&lt;pre class="brush: js"&gt;// Создаем объект инфо-окна
var infowindow = new google.maps.InfoWindow({  
  content: 'Hello, world!'  
});  
&lt;/pre&gt;&lt;h3&gt;Показываем добавленное окно&lt;/h3&gt;&lt;p&gt;Теперь у нас есть инфо-окно с добавленным в него текстом, но не добавленное на карту. Для того, чтобы пользователь увидел наше окошко при загрузке карты, нужно использовать метод &lt;span class="code"&gt;open()&lt;/span&gt; для объекта &lt;span class="code"&gt;InfoWindow&lt;/span&gt;. Этот метод принимает два аргумента: объект карты, к которой добавляется инфо-окно, и якорь (маркер, координаты), которым фиксируется окошко.&lt;/p&gt;&lt;p&gt;Если второй аргумент не задан, то необходимо использовать свойство &lt;span class="code"&gt;position&lt;/span&gt; объекта &lt;span class="code"&gt;InfoWindow&lt;/span&gt; или метод &lt;span class="code"&gt;setPosition()&lt;/span&gt;. В этом примере мы привязываем окошко к ранее созданному маркеру:&lt;/p&gt;&lt;pre class="brush: js"&gt;infowindow.open(map, marker);  
&lt;/pre&gt;&lt;p&gt;Мы увидим следующее:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_czADlTNKV1k/TH_c9mhIYOI/AAAAAAAAAT0/HrJv2qVY6-4/s320/InfoWindow.png" width="320" /&gt;&lt;/div&gt;&lt;p&gt;Дело обстоит так, что по умолчанию карта принимает такой вид, чтобы инфо-окно полностью попадала в область видимости. Это можно изменить, выставив значение свойства &lt;span class="code"&gt;disableAutoPan&lt;/span&gt; инфо-окна в &lt;span class="code"&gt;false&lt;/span&gt;. &lt;/p&gt;&lt;h3&gt;Добавляем реакцию на клик&lt;/h3&gt;&lt;p&gt;Наше инфо-окно автоматически открывается при загрузки карты. Теперь сделаем так, чтобы инфо-окно открывалось после клика по соответствующему маркеру.&lt;/p&gt;&lt;p&gt;Для того, чтобы добавить событие к маркеру, необходимо использовать метод &lt;span class="code"&gt;addListener()&lt;/span&gt;, которые находится в пространстве имен &lt;span class="code"&gt;google.maps.event&lt;/span&gt;. Этот метод принимает три аргумента: первый – объект (в данном случае - маркер), к которому привязывается событие; второй – собственно наименование события (в данном случае - &lt;span class="code"&gt;click&lt;/span&gt;); третий – функций, которая сработает после того, как произойдет событие.&lt;/p&gt;&lt;p&gt;Код следующий:&lt;/p&gt;&lt;pre class="brush: js"&gt;google.maps.event.addListener(marker, 'click', function() {  
  infowindow.open(map, marker);  
});  
&lt;/pre&gt;&lt;p&gt;Теперь, когда мы загрузим страницу, инфо-окно не отобразится. Оно отобразится только после того, как произойдет клик по маркеру.&lt;/p&gt;&lt;h2&gt;Множественные окна&lt;/h2&gt;&lt;p&gt;Вы могли заметить, что код, инициализирующий инфо-окно, вынесен из обработчика события &lt;span class="code"&gt;click&lt;/span&gt; по объекту &lt;span class="code"&gt;marker&lt;/span&gt;. Тут можно подумать о том, а не проще ли и логичней внести этот код в обработчик. Нет, не проще и не логичней. Дело в том, что в данном случае (когда код инфо-окна вынесен из обработчика) мы уверены, что имеем только один экземпляр окошка. Если же мы внесем код в обработчик, то при каждом клике по маркеру будет создаваться новое инфо-окно.&lt;/p&gt;&lt;p&gt;Так что перед созданием какого-либо инфо-окна следует быть уверенным, что никаких других окон не создано.&lt;/p&gt;&lt;h2&gt;Свойства объекта InfoWindow&lt;/h2&gt;&lt;p&gt;Ниже перечислена некоторые свойства объекта инфо-окна, при помощи которых вы сможете более полно его контролировать. Вот они:&lt;/p&gt;&lt;h3&gt;content&lt;/h3&gt;&lt;p&gt;Значение этого свойства определяет содержимое инфо-окна. Это может быть как строка обычного текста, так и HTML-код. Размер окна автоматически подстраивается под размер содержимого.&lt;/p&gt;&lt;h3&gt;disableAutoPan [boolean]&lt;/h3&gt;&lt;p&gt;Если значение этого свойства установлено в &lt;span class="code"&gt;true&lt;/span&gt;, то карта автоматически не фокусируется на инфо-окне. Значение по умолчанию – &lt;span class="code"&gt;false&lt;/span&gt;.&lt;/p&gt;&lt;h3&gt;maxWidth [number]&lt;/h3&gt;&lt;p&gt;Устанавливает максимальную ширину окошка в пикселях. Значение этого свойства должно быть установлено до того, как инфо-окно будет открыто.&lt;/p&gt;&lt;p&gt;Еще один способ контроля ширины инфо-окна – это наполнение его каким-нибудь HTML-блоком, ширина которого изменяется посредством CSS.&lt;/p&gt;&lt;h3&gt;pixelOffset [size]&lt;/h3&gt;&lt;p&gt;Значение этого свойства определяет, как далеко инфо-окно будет смещено от точки позиционирования (якоря).&lt;/p&gt;&lt;h3&gt;position [LatLng]&lt;/h3&gt;&lt;p&gt;Определяет точки позиционирования инфо-окна.&lt;/p&gt;&lt;h3&gt;zIndex [number]&lt;/h3&gt;&lt;p&gt;Определяет порядок наложения инфо-окон.&lt;/p&gt;&lt;h2&gt;В заключении&lt;/h2&gt;&lt;p&gt;Вот и все, что нужно знать новичку об инфо-окнах. В завершении – &lt;a href="http://aaa-nan.info/gm_examples/gm_api_v3_4.php"&gt;ссылка&lt;/a&gt; на готовый пример.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-2111415192400400086?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=GBQGmKy_qpo:4iZHS9ATwms:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=GBQGmKy_qpo:4iZHS9ATwms:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-02T21:47:24.376+04:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_czADlTNKV1k/TH_c7a9TK8I/AAAAAAAAATw/I01zWZ-37ls/s72-c/InfoWindowHidden.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Источник</title><link>http://blog.aaa-nan.info/2010/08/blog-post.html</link><category>Литература</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sun, 22 Aug 2010 16:04:42 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-6714141611657288889</guid><description>&lt;img alt="" id="BLOGGER_PHOTO_ID_5146099136961081746" src="http://bp0.blogger.com/_czADlTNKV1k/R2qd5l2CcZI/AAAAAAAAADk/3rBuNyg_VaI/s320/book.jpg" style="border: none; float: left;" /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Люди не знают, чего они хотят. Люди привыкли обращать самое пристальное внимание на окружающих. Люди берут жизнь из чужих рук – замкнутый круг. Люди – в большинстве своем абсолютно несамодостаточные существа, натура их не цельна. Люди – стадо. Идеализация – зло. Человек не должен создавать у себя в голове стереотипированный идеал – он должен быть уверен в том, что не ДОЛЖНО БЫТЬ ТАК, но БУДЕТ ТАК, исходя только из своих собственных убеждений. Человек должен быть настолько эгоистичным, насколько это вообще возможно.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;К сожалению, сегодня, как и 67 лет назад, когда вышел второй роман Айн Рэнд «Источник», мало кто придерживается этих сентенций.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;А зря.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-6714141611657288889?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=R2EOF6bSoSc:jGpzwrCAXwE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=R2EOF6bSoSc:jGpzwrCAXwE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-23T03:04:42.988+04:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_czADlTNKV1k/R2qd5l2CcZI/AAAAAAAAADk/3rBuNyg_VaI/s72-c/book.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Google Maps API 3 – Маркеры</title><link>http://blog.aaa-nan.info/2010/08/google-maps-api-3_12.html</link><category>Web-dev</category><category>Статьи</category><category>Переводы</category><category>Google Maps</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Thu, 12 Aug 2010 05:22:31 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-3561640539312101741</guid><description>&lt;div class="art" style="font-family:Verdana"&gt;&lt;h1&gt;Google Maps API 3 – Маркеры&lt;/h1&gt;&lt;p&gt;Маркеры являются, наверное, самым используемым элементом цифровых карт. В этой статье мы рассмотрим механизм размещения маркеров на карте и их кастомизацию применительно к Google Maps API 3.&lt;/p&gt;&lt;h2&gt;Объект маркера&lt;/h2&gt;&lt;p&gt;Объект, отвечающий за инициализацию маркеров, находится в пространстве имен &lt;span class="code"&gt;google.maps.Marker&lt;/span&gt; и принимает единственный аргумент – список параметров, который является литералом. Этот литерал должен содержать следующие обязательные свойства:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="code"&gt;map [Map]&lt;/span&gt; – индентификатор карты, на которой будет размещен маркер;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;position [LatLng]&lt;/span&gt; – координаты точки, в которую будет установлен маркер; должно иметь тип &lt;span class="code"&gt;google.maps.LatLng&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Давайте создадим карту, на которую поместим стандартный маркер:&lt;/p&gt;&lt;pre class="brush: js"&gt;// Создаем карту
var map = new google.maps.Map(document.getElementById('map'), {  
  zoom: 7,  
  center: new google.maps.LatLng(56.83, 15.16),  
  mapTypeId: google.maps.MapTypeId.ROADMAP  
});  
  
// Создаем и размещаем маркер на карте
var marker = new google.maps.Marker({  
  position: new google.maps.LatLng(56.8848, 14.7730),  
  map: map  
});  
&lt;/pre&gt;&lt;p&gt;На экране мы увидим нечто вроде этого:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_czADlTNKV1k/TGPmFfCPuxI/AAAAAAAAATk/aPZWeC5S1UY/s320/marker.png" width="320" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Добавляем подсказку к маркеру&lt;/h2&gt;&lt;p&gt;Чтобы немного оживить наш маркер, добавим к нему всплывающую подсказку. Подсказка будет отображаться, когда пользователь наводит указатель мыши на маркер. Это легко сделать, если добавить к списку опций маркера свойство &lt;span class="code"&gt;title&lt;/span&gt; со значением текста подсказки.&lt;/p&gt;&lt;p&gt;Сознательно сделаем так, чтобы в ответ на клик по маркеру, ничего не происходило. Для этого установим свойство &lt;span class="code"&gt;clickable&lt;/span&gt; в значение &lt;span class="code"&gt;false&lt;/span&gt;. Это приведет к тому, что курсор мыши не будет изменяться при наведении на маркер.&lt;/p&gt;&lt;pre class="brush: js"&gt;var marker = new google.maps.Marker({  
  position: new google.maps.LatLng(56.8848, 14.7730),  
  map: map,  
  title: 'My workplace',  
  clickable: false  
});  
&lt;/pre&gt;&lt;p&gt;Увидим вот такую картину:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_czADlTNKV1k/TGPmI_CoTUI/AAAAAAAAATo/OOAEuwOs8ok/s320/marker_tooltip.png" width="320" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Изменяем иконку маркера&lt;/h2&gt;&lt;p&gt;Часто приходится отображать на карте объекты разного типа. Для это целесообразно использовать различные маркеры.&lt;/p&gt;&lt;p&gt;Чтобы задать нестандартный маркер, необходимо придать свойству &lt;span class="code"&gt;icon&lt;/span&gt; значение URL, по которому расположен файл иконки маркера (классные иконки есть тут &lt;a href="http://code.google.com/p/google-maps-icons/" class="other" rel="nofollow"&gt;http://code.google.com/p/google-maps-icons/&lt;/a&gt;):&lt;/p&gt;&lt;pre class="brush: js"&gt;var marker = new google.maps.Marker({  
  position: new google.maps.LatLng(56.8848, 14.7730),  
  map: map,  
  title: 'My workplace',  
  clickable: false,  
  icon: 'http://google-maps-icons.googlecode.com/files/factory.png'  
});  
&lt;/pre&gt;&lt;p&gt;Перед нашими глазами предстанет вот такое чудо:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_czADlTNKV1k/TGPmMxWZG3I/AAAAAAAAATs/O0ab1nQJnDU/s320/marker_custom_icon.png" width="320" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;p&gt;Ниже перечислены некоторые другие свойства маркеров, которые позволяют контролировать иконку в полном объеме, как то:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="code"&gt;icon [string|MarkerImage]&lt;/span&gt; – определяет иконку маркера. Это свойство может принимать значение как URL’а, указывающего на соответствующее изображение, так и объекта &lt;span class="code"&gt;Marker&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;shadow [string|MarkerImage]&lt;/span&gt; – устанавливает тень для иконки маркера. Это свойство может принимать значение как URL’а, указывающего на соответствующее изображение, так и объекта &lt;span class="code"&gt;MarkerImage&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;shape [object]&lt;/span&gt; – определяет кликабельную область вокруг иконки маркера. Принимает объект &lt;span class="code"&gt;MarkerShape&lt;/span&gt;, содержащий координаты многоугольной области, в качестве значения;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;flat [boolean]&lt;/span&gt; – определяет наличие тени у иконки маркера. Если значение этого свойства установлено в &lt;span class="code"&gt;true&lt;/span&gt;, то тень у иконки отсутствует.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Замечание:&lt;/b&gt; если устанавливать произвольную картинку для иконки маркера, то маркер автоматически лишается тени.&lt;/p&gt;&lt;h2&gt;Другие свойства&lt;/h2&gt;&lt;p&gt;Есть еще несколько свойств, при помощи которых можно контролировать внешний вид и поведение маркера. Вот они:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="code"&gt;cursor [string]&lt;/span&gt; – это свойство определяет то, как будет выглядеть курсор мыши при наведении на маркер;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;visible [boolean]&lt;/span&gt; – это свойство определяет видимость маркера. Если установить его значение в &lt;span class="code"&gt;false&lt;/span&gt;, то маркер не будет виден;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;zIndex [number]&lt;/span&gt; – определяет порядок наложения маркеров друг на друга.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;В заключении&lt;/h2&gt;&lt;p&gt;Что ж, в конце могу сказать лишь о том, что наиболее полную информацию о маркерах вы сможете найти только в &lt;a href="http://code.google.com/intl/ru/apis/maps/documentation/javascript/reference.html#Marker" class="other" rel="nofollow"&gt;официальной документации&lt;/a&gt;. Ну и, конечно же, дам вам ссылку на &lt;a href="http://aaa-nan.info/gm_examples/gm_api_v3_3.php"&gt;пример к этой статье&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-3561640539312101741?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=t61l0AKh4o4:j0g4bk0CG5s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=t61l0AKh4o4:j0g4bk0CG5s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-12T16:22:31.840+04:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_czADlTNKV1k/TGPmFfCPuxI/AAAAAAAAATk/aPZWeC5S1UY/s72-c/marker.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Google Maps API 3 – Настройки карты</title><link>http://blog.aaa-nan.info/2010/08/google-maps-api-3_07.html</link><category>Web-dev</category><category>Статьи</category><category>Переводы</category><category>Google Maps</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Fri, 06 Aug 2010 13:45:25 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-1931045827913318749</guid><description>&lt;div class="art" style="font-family:Verdana;"&gt;&lt;h1&gt;Google Maps API 3 – Настройки карты&lt;/h1&gt;&lt;p&gt;В &lt;a href="http://blog.aaa-nan.info/2010/08/google-maps-api-3.html"&gt;первой статье&lt;/a&gt; этого цикла мы говорили о том, как создать простую карту, используя новую версию API. В этот раз разговор пойдет о совойствах, доступных при создании карты, и о том, как они меняют внешний вид и поведение созданной нами карты.&lt;/p&gt;&lt;p&gt;Поехали.&lt;/p&gt;&lt;h2&gt;Обязательные свойства&lt;/h2&gt;&lt;p&gt;О трех обязательных свойствах (&lt;span class="code"&gt;center&lt;/span&gt;, &lt;span class="code"&gt;zoom&lt;/span&gt;, &lt;span class="code"&gt;mapTypeId&lt;/span&gt;) я говорил в &lt;a href="http://blog.aaa-nan.info/2010/08/google-maps-api-3.html"&gt;предыдущей статье&lt;/a&gt;, так что подробно на них останавливаться не буду, но перечислю значения, которые может принимать свойство &lt;span class="code"&gt;mapTypeId&lt;/span&gt; – это:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="code"&gt;ROADMAP&lt;/span&gt; – обычная карта;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;SATELLITE&lt;/span&gt; – изображение со спутника;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;HYBRID&lt;/span&gt; – гибрид изображения со спутника и обычной карты;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;TERRAIN&lt;/span&gt; – карта ландшафта.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Для примера, инициализируем карту, у которой свойство &lt;span class="code"&gt;mapTypeId&lt;/span&gt; примет значение &lt;span class="code"&gt;SATELLITE&lt;/span&gt;:&lt;/p&gt;&lt;pre class="brush: js"&gt;// Создаем объект, содержащий свойства карты  
var options = {  
  zoom: 6,  
  center: new google.maps.LatLng(57.8, 14.0),  
  mapTypeId: google.maps.MapTypeId.SATELLITE  
};  
// Вызываем конструктор, инициализирующий карту  
var map = new google.maps.Map(document.getElementById('map'), options);  
&lt;/pre&gt;&lt;p&gt;В браузере мы увидим нечто подобное:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img style="border:none;" border="0" src="http://4.bp.blogspot.com/_czADlTNKV1k/TFxxYo8I81I/AAAAAAAAATQ/CwCP88bGYRQ/s1600/sattelite.png" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Свойства интерфейса карты&lt;/h2&gt;&lt;p&gt;Стоит отметить, что некоторые элементы управления отображаются на карте по умолчанию. В старой версии API вам нужно было явно указать, какие элементы управления будут отображаться, в версии 3 все иначе: вам нужно указать те элементы, которые отображаться не будут.&lt;/p&gt;&lt;h3&gt;disableDefaultUI [boolean]&lt;/h3&gt;&lt;p&gt;Значение по умолчанию – &lt;span class="code"&gt;false&lt;/span&gt;. Если установить значение этого свойства в &lt;span class="code"&gt;true&lt;/span&gt;, то оно отключит те элементы управления, которые должны отображаться по умолчанию. Это: контроллер зума и список с доступными типами карты. Эти элементы можно включать/выключать по одиночке.&lt;/p&gt;&lt;h3&gt;mapTypeControl [boolean]&lt;/h3&gt;&lt;p&gt;Значение этого свойства отвечает за то, будет ли отображаться список с доступными типами карты. Значение по умолчанию – &lt;span class="code"&gt;true&lt;/span&gt;. Список с типами карты помещается по умолчанию в правый верхний угол.&lt;/p&gt;&lt;h3&gt;mapTypeControlOptions&lt;/h3&gt;&lt;p&gt;Значение этого свойства определяет то, каким образом будет отображаться список с типами карты. Это свойство может принимать одно из следующих значений, которые находятся в пространстве имен &lt;span class="code"&gt;google.maps.MapTypeControlStyle&lt;/span&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="code"&gt;DEFAULT&lt;/span&gt; – вид списка будет зависеть от размера карты и других факторов;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;HORIZONTAL_BAR&lt;/span&gt; – список примет вид горизонтальной панели:&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;DROPDOWN_MENU&lt;/span&gt; – список примет вид выпадающего меню, размеры которого будут меняться в зависимости от доступного пространства, что не всегда способствует хорошему внешнему виду:&lt;br /&gt;
&lt;/ul&gt;&lt;p&gt;Примера ради, зададим свойства карты, список типов которой будет выглядеть как выпадающее меню:&lt;/p&gt;&lt;pre class="brush: js"&gt;var options = {  
  zoom: 6,  
  center: new google.maps.LatLng(57.8, 14.0),  
  mapTypeId: google.maps.MapTypeId.ROADMAP,  
  mapTypeControlOptions: {  
    style: google.maps.MapTypeControlStyle.DROPDOWN_MENU  
  }  
};  
&lt;/pre&gt;&lt;p&gt;Отметим, что свойство &lt;span class="code"&gt;mapControlOptions&lt;/span&gt; явялется литералом, параметр &lt;span class="code"&gt;style&lt;/span&gt; которого отвечает как раз за вид списка типов карты. По началу такая запись может показаться громоздкой, но это лишь по началу.&lt;/p&gt;&lt;h3&gt;navigationControl [boolean]&lt;/h3&gt;&lt;p&gt;Это свойство отвечает за отображения элемента навигации по карте, который по умолчанию расположен в левом верхнем углу карты. Основным отличием этого контроллера в старой версии API от нового является кнопка сброса, которая возвращает карту в ее первоначальное состояние.&lt;/p&gt;&lt;h3&gt;navigationControlOptions&lt;/h3&gt;&lt;p&gt;Значение этого свойства определяет то, каким образом будет отображаться контроллер навигации по карте. Оно так же, как и &lt;span class="code"&gt;mapTypeControlOptions&lt;/span&gt;, является литералом, значения параметра &lt;span class="code"&gt;style&lt;/span&gt; которого находятся в пространстве имен &lt;span class="code"&gt;google.maps.NavigationControlStyle&lt;/span&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="code"&gt;DEFAULT&lt;/span&gt; – при этом значении вид контроллера навигации зависит от размера карты и других факторов;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;SMALL&lt;/span&gt; – контроллер, оснащенный лишь кнопками управления зумом:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img style="border:none;" border="0" src="http://2.bp.blogspot.com/_czADlTNKV1k/TFxx2K_TGYI/AAAAAAAAATU/qq4nIkafmlM/s1600/szc3d.png" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;ANDROID&lt;/span&gt; – такой же контроллер, как и SMALL, только приспособленный под мобильную платформу Android;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;ZOOM_PAN&lt;/span&gt; – контроллер, позволяющий управлять зумом и передвижением по карте:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img style="border:none;" border="0" height="320" src="http://2.bp.blogspot.com/_czADlTNKV1k/TFxx_T4yixI/AAAAAAAAATY/8DuzAlyMUdc/s320/zoom_pan.png" width="45" /&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Например, зададим свойства карты с самым функциональным контроллером навигации:&lt;/p&gt;&lt;pre class="brush: js"&gt;var options = {  
  zoom: 6,  
  center: new google.maps.LatLng(57.8, 14.0),  
  mapTypeId: google.maps.MapTypeId.ROADMAP,  
  navigationControlOptions: {  
    style: google.maps.NavigationControlStyle.ZOOM_PAN  
  }  
};  
&lt;/pre&gt;&lt;h3&gt;scaleControl [boolean]&lt;/h3&gt;&lt;p&gt;Значении этого свойства  определяет, будет ли отображаться линейка масштаба. По умолчанию имеет значение &lt;span class="code"&gt;false&lt;/span&gt;. Если установить его в значение &lt;span class="code"&gt;true&lt;/span&gt;, то на карте, внизу, появится такая линейка:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img style="border:none;" border="0" src="http://3.bp.blogspot.com/_czADlTNKV1k/TFxzPY8lt-I/AAAAAAAAATg/fROxAXuX46Q/s1600/scale_control.png" /&gt; &lt;/div&gt;&lt;h3&gt;scaleControlOptions&lt;/h3&gt;&lt;p&gt;Свойство, которое пока может принимать единственное значение – &lt;span class="code"&gt;STANDART&lt;/span&gt;.&lt;/p&gt;&lt;h3&gt;keyboardShortcuts [boolean]&lt;/h3&gt;&lt;p&gt;Свойство, значение которого определяет возможность управления картой при помощи клавиатуры: перемещение происходит при помощи стрелок, а уровень зума регулируется клавишами +/-. По умолчанию имеет значение &lt;span class="code"&gt;true&lt;/span&gt;. Если хотите отключить управление картой при помощи клавиатуры, то установите значение этого свойства в &lt;span class="code"&gt;false&lt;/span&gt;.&lt;/p&gt;&lt;h2&gt;Свойства блока с картой&lt;/h2&gt;&lt;p&gt;Существует несколько свойств, определяющих поведение блока с картой.&lt;/p&gt;&lt;h3&gt;noClear [boolean]&lt;/h3&gt;&lt;p&gt;Значение по умолчанию – &lt;span class="code"&gt;false&lt;/span&gt;. Определяет, будет ли очищен от первоначального содержимого блок, содержащий карту.&lt;/p&gt;&lt;h3&gt;backgroundColor [string]&lt;/h3&gt;&lt;p&gt;Свойство, определяющее фон блока до того, как будет загружен слой с картой.&lt;/p&gt;&lt;h3&gt;noResize [boolean]&lt;/h3&gt;&lt;p&gt;Значение по умолчанию – &lt;span class="code"&gt;false&lt;/span&gt;. Определяет изменение размеров блока, содержащего карту.&lt;/p&gt;&lt;h2&gt;Свойства курсора&lt;/h2&gt;&lt;p&gt;И, наконец, немного о свойствах курсора.&lt;/p&gt;&lt;h3&gt;draggableCursor&lt;/h3&gt;&lt;p&gt;Устанавливает путь (URL) до файла-курсора, который будет отображаться при наведении на перетаскиваемый объект.&lt;/p&gt;&lt;h3&gt;draggingCursor&lt;/h3&gt;&lt;p&gt;Устанавливает путь (URL) до файла-курсора, который будет отображаться при перетаскивании объекта.&lt;/p&gt;&lt;h2&gt;В заключении&lt;/h2&gt;&lt;p&gt;Что тут можно сказать? Укажу лишь &lt;a href="http://aaa-nan.info/gm_examples/gm_api_v3_2.php"&gt;ссылку на страницу&lt;/a&gt;, на которой вы сможете поиграть с свойствами карты и увидеть, как разные их значения тем или иным образом изменяют поведение и внешний вид карты.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-1931045827913318749?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Lc1nxAA8a1E:fLLoBZBtYLU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Lc1nxAA8a1E:fLLoBZBtYLU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-07T00:45:25.080+04:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_czADlTNKV1k/TFxxYo8I81I/AAAAAAAAATQ/CwCP88bGYRQ/s72-c/sattelite.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Google Maps API 3 – Основы</title><link>http://blog.aaa-nan.info/2010/08/google-maps-api-3.html</link><category>Web-dev</category><category>Статьи</category><category>Переводы</category><category>Google Maps</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Wed, 04 Aug 2010 03:43:13 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-2455958384464606666</guid><description>&lt;div class="art" style="font-family:Verdana;"&gt;&lt;h1&gt;Google Maps API 3 – Основы&lt;/h1&gt;&lt;p&gt;Итак, Google Maps API добрался-таки до третьей версии. Новая версия API была полностью переписана разработчиками и сориентировали ее в первую очередь на скорость работы. Эта статья – первая из нескольких, посвященных Google Maps API 3. Здесь будет рассказано о том, как создать простую карту при помощи новой версии API и о том, какие отличия имеются от предыдущих версий.&lt;/p&gt;&lt;h2&gt;Информация к размышлению&lt;/h2&gt;&lt;p&gt;Ну, прежде всего это – ранний релиз нового API и он все еще находится в разработке. Новая версия не содержит всех тех вещей, которые были во второй ветке API, и, скорее всего, никогда не будет поддерживать весь старый функционал такой, как, например, выполнение AJAX-запросов и вывод лога. Для всего этого человечество давно придумало такие библиотеки, как jQuery и, скажем, Prototype и полезные инструменты такие, как FireBug. Поэтому все эти особенности не были и не будут включены в новую версию API – она должна работать так быстро, как только это возможно.&lt;/p&gt;&lt;p&gt;Поехали.&lt;/p&gt;&lt;h2&gt;Подключаем новый API&lt;/h2&gt;&lt;p&gt;Первое, самое заметное, нововведение касается того, что для подключения нового API к своему приложению не требуется специальный ключ, который в предыдущих версиях выступал в качестве параметра запроса в строке URI, подключающей API.&lt;/p&gt;&lt;p&gt;Единственный параметр, который необходимо указать при подключении API, - это то, есть ли у вашего устройства (браузера) датчик (GPS-сенсор, или другой способ определения местоположения) или нет: &lt;span class="code"&gt;sensor=true&lt;/span&gt;, если датчик есть, и &lt;span class="code"&gt;sensor=false&lt;/span&gt;, если его нет. Параметр &lt;span class="code"&gt;sensor&lt;/span&gt; и его значение является последней частью строки URI, подключающей API.&lt;/p&gt;&lt;pre class="brush: js"&gt;&lt;script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"&gt;&lt;/script&gt;
&lt;/pre&gt;&lt;h2&gt;Создаем карту&lt;/h2&gt;&lt;h3&gt;Новое пространство имен&lt;/h3&gt;&lt;p&gt;В предыдущих версиях использовалось множество глобальных переменных, имеющих вначале префикс G таких, как &lt;span class="code"&gt;GMap&lt;/span&gt; и &lt;span class="code"&gt;GLatLng&lt;/span&gt;, например. В новой версии использутеся пространство имен &lt;span class="code"&gt;google.maps&lt;/span&gt;. Таким образом то, что раньше называлось &lt;span class="code"&gt;GLatLng&lt;/span&gt;, теперь будет называться &lt;span class="code"&gt;google.maps.LatLng&lt;/span&gt;. Использование пространства имен – это хорошие нововведение, так как оно позволяет выработать хороший стиль программирования.&lt;/p&gt;&lt;p&gt;Теперь на практике посмотрим, как создать объект, содержащий координаты точки, в соответствии с новым стилем и сравним со стилем старым:&lt;/p&gt;&lt;pre class="brush: js"&gt;// По-старому  
var latlng = new GLatLng(57.8, 14.0);  
// По-новому  
var latlng = new google.maps.LatLng(57.8, 14.0);  
&lt;/pre&gt;&lt;h3&gt;Литералы объектов&lt;/h3&gt;&lt;p&gt;Новый API делает упор на использование литералов объектов для передачи параметров в их методы. Старая версия API так же позволяла использовать литералы, но не так широко, как API за версией 3. Использование литералов делает код более читаемым и легко расширяемым:&lt;/p&gt;&lt;pre class="brush: js"&gt;var myObj = {  
  id: '1',  
  name: 'Whatever'  
};  
alert(myObj.name); //Выведет "Whatever"
&lt;/pre&gt;&lt;p&gt;Это быстрый и удобный способ создать JS-объект. Многие из вас могли найти схожесть между примером и JSON-кодом – это действительно верно, т.к. любой JSON-код фактически является объектом JavaScript.&lt;/p&gt;&lt;h3&gt;Инициализируем карту&lt;/h3&gt;&lt;p&gt;Чтобы инициализировать карту, мы должны вызвать конструктор, который принимает два аргумента: элемент страницы, в котором будет содержаться карта, и литерал, содержащий свойства карты.&lt;/p&gt;&lt;p&gt;Теперь процесс инициализации весьма отличается от того, что мы знали по старым версиям API. Если раньше нам нужно было вызвать метод &lt;span class="code"&gt;setCenter()&lt;/span&gt;, чтобы установить координаты центра и уровень увеличения, сразу после того, как мы использовали конструктор, то сейчас в этом нет необходимости: мы задаем координаты центра и уровень начального зума в литерале, а конструктор сам выполняет необходимые действия. Вот вам наглядный пример:&lt;/p&gt;&lt;pre class="brush: js"&gt;// Создаем объект LatLng, который будет содержать координаты центра карты
var latlng = new google.maps.LatLng(57.8, 14.0);  
// Создаем литерал, в котором будут хранится свойства карты  
var options = {  
  zoom: 6,  
  center: latlng,  
  mapTypeId: google.maps.MapTypeId.ROADMAP  
};  
// Вызываем конструктор, инициализирующий карту  
var map = new google.maps.Map(document.getElementById('map'), options);  
&lt;/pre&gt;&lt;h3&gt;Параметры&lt;/h3&gt;&lt;p&gt;Как уже говорилось выше, параметр options – это литерал, который содержит три необходимых свойства для инициализации карты:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="code"&gt;center&lt;/span&gt;  - координаты центра карты в формате &lt;span class="code"&gt;google.maps.LatLng&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;zoom&lt;/span&gt; – уровень начального зума;&lt;/li&gt;
&lt;li&gt;&lt;span class="code"&gt;mapTypeId&lt;/span&gt; – тип инициализируемой карты в формате &lt;span class="code"&gt;google.maps.MapTypeId&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Конечно, существует множество свойств, которые могут быть использованы при инициализации каты. Полный список вы сможете посмотреть &lt;a class="other" href="http://code.google.com/intl/ru-RU/apis/maps/documentation/javascript/reference.html#MapOptions" rel="nofollow"&gt;тут&lt;/a&gt;. Здесь же были указаны только основные.&lt;/p&gt;&lt;h2&gt;В заключении&lt;/h2&gt;&lt;p&gt;В заключении хотелось бы сказать вот что: команда Maps API – молодцы. Они выделили особое пространство имен, переменные которого не будут путаться с глобальными переменными; они сделали использование литералов более интенсивным.&lt;/p&gt;&lt;p&gt;Ну и в самом конце – &lt;a href="http://aaa-nan.info/gm_examples/gm_api_v3_1.php"&gt;ссылка на карту&lt;/a&gt;, созданную в соответствии с новой версией Google Maps API.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-2455958384464606666?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=scbC38STNE4:ceFeUw1uKys:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=scbC38STNE4:ceFeUw1uKys:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-04T14:43:13.872+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Используем HTML5-атрибут placeholder для элементов форм уже сейчас при помощи jQuery</title><link>http://blog.aaa-nan.info/2010/07/html5-placeholder-jquery.html</link><category>Web-dev</category><category>HTML5</category><category>Статьи</category><category>jQuery</category><category>Переводы</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Thu, 12 Aug 2010 05:04:34 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-2772778162730603209</guid><description>&lt;div class="art" style="font-family:Verdana;"&gt;&lt;h1&gt;Используем HTML5-атрибут placeholder для элементов форм уже сейчас при помощи jQuery&lt;/h1&gt;&lt;p&gt;Собственно, название отражает суть заметки. Никаких подробностей – только сухой код. Ну, и &lt;a href="http://aaa-nan.info/html5/jquery_placeholder_1.php"&gt;пример&lt;/a&gt;, конечно.&lt;/p&gt;&lt;pre class="brush: js"&gt;&lt;script&gt;  
 $(document).ready(function(){  
     function placeholder(){  
         $("input[type=text]").each(function(){  
             var phvalue = $(this).attr("placeholder");  
             $(this).val(phvalue);  
         });  
     }  
     placeholder();  
     $("input[type=text]").focusin(function(){  
         var phvalue = $(this).attr("placeholder");  
         if (phvalue == $(this).val()) {  
         $(this).val("");  
         }  
     });  
     $("input[type=text]").focusout(function(){  
         var phvalue = $(this).attr("placeholder");  
         if ($(this).val() == "") {  
             $(this).val(phvalue);  
         }  
     });  
 });  
&lt;/script&gt;  
&lt;/pre&gt;&lt;p&gt;И, почти то же самое, только с расширенной функциональностью (в виде задания CSS-классов для текста в атрибуте &lt;span class="code"&gt;placeholder&lt;/span&gt;) и сделанное в виде плагина для jQuery:&lt;/p&gt;&lt;pre class="brush: js"&gt;(function($) {
$.fn.placeholder = function(options) {
 var defaults = {css_class: "placeholder"};
 var options = $.extend(defaults, options);  
 this.each(function() {
  if ($(this).attr('placeholder') !== undefined) {
   var phvalue = $(this).attr("placeholder");
   var currvalue = $(this).attr("value");
   if (phvalue == currvalue) {
    $(this).addClass(options.css_class);
   }
   if (currvalue == "") {
    $(this).addClass(options.css_class);
    $(this).val(phvalue);
   }
   $(this).focusin(function(){
    var ph = $(this).attr("placeholder");
    if (ph == $(this).val()) {
     $(this).val("").removeClass(options.css_class);
    }
   });
   
   $(this).focusout(function(){
    var ph = $(this).attr("placeholder");
    if ($(this).val() == "") {
     $(this).val(ph).addClass(options.css_class);
    }
   });
  }
 });
 return this;
 };
})(jQuery);
&lt;/pre&gt;&lt;p&gt;Пример использования плагина лежит &lt;a href="http://aaa-nan.info/html5/jquery_placeholder_2.php"&gt;тут&lt;/a&gt;, а вот – &lt;a href="http://plugins.jquery.com/files/jquery.placeholder.js_4.txt" rel="nofollow" class="other"&gt;ссылка&lt;/a&gt; на сам плагин.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-2772778162730603209?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=JMMjSyjn3As:clihjqs1TPE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=JMMjSyjn3As:clihjqs1TPE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-12T16:04:34.388+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>SyntaxHighlighter, прикрутись!</title><link>http://blog.aaa-nan.info/2010/07/syntaxhighlighter.html</link><category>Блог</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Thu, 22 Jul 2010 08:11:44 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-8230201573428049703</guid><description>&lt;div style="font-family: Verdana,sans-serif;"&gt;Сейчас попробуем лицезреть пост с вменяемой подсветкой исходного кода на, скажем, JS:&lt;br /&gt;
&lt;/div&gt;&lt;pre class="brush: js"&gt;function foo()
{
    alert("Привет!");
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-8230201573428049703?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=fHthYc1Yggw:okOT2oL_zfM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=fHthYc1Yggw:okOT2oL_zfM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-22T19:11:44.500+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Фото! Фотки! Фоточки!</title><link>http://blog.aaa-nan.info/2010/07/blog-post.html</link><category>Блог</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sun, 18 Jul 2010 11:19:49 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-2891178327774450059</guid><description>&lt;img alt="" id="BLOGGER_PHOTO_ID_5143539206767549218" src="http://lh3.google.com/LevshinO/R2GFxSusm0I/AAAAAAAAABk/ljkP5MOW_Ww/s144/voskl.jpg" style="border: medium none; float: left;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Парам-пам-пам! Живой, человеческий пост, в котором я пишу о новых фоточках! Итак, пополнились разделы "Горы" (выложено немного Архыза 2010 года) и "Камерофония". Ссылочки на Fotki.com: &lt;a href="http://public.fotki.com/LevshinO/e2338/2011/"&gt;первая&lt;/a&gt;, &lt;a href="http://public.fotki.com/LevshinO/ii339/"&gt;вторая&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-2891178327774450059?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Ea83m-WXWD8:7ZnFYQSWH5Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Ea83m-WXWD8:7ZnFYQSWH5Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-18T22:19:49.210+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>52 Framework</title><link>http://blog.aaa-nan.info/2010/07/52-framework.html</link><category>CSS3</category><category>Web-dev</category><category>HTML5</category><category>Статьи</category><category>Переводы</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Sat, 17 Jul 2010 06:30:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-5327069881388965287</guid><description>&lt;div class="art" style="font-family: Verdana;"&gt;&lt;h1&gt;52 Framework: первый HTML5 и CSS3 фреймворк&lt;/h1&gt;&lt;p&gt;Сегодня мы рассмотрим новый проект от Enavu Network под названием &lt;a class="other" href="http://52framework.com/" rel="nofollow"&gt;52 Framework&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Они (Enavu Network) утверждают, что их проект — это первый фреймворк, созданный специально для HTML5 и CSS3. Ниже мы рассмотрим некоторые основные черты этого проекта и немного покопаемся в коде, чтобы найти что-нибудь интересненькое. Итак, приступим.&lt;/p&gt;&lt;h2&gt;Касаемо фреймворков в целом&lt;/h2&gt;&lt;p&gt;Фреймворки — это интересная и противоречивая тема: одни разработчики говорят, что без них нынче никуда, а другие говорят, что без них вполне можно обходиться.&lt;/p&gt;&lt;p&gt;Мое же мнение по этому поводу блуждает где-то посередине. Я согласен с тем, что в большинстве фреймворков содержится ну очень уж большое количество ненужного мусора. Но, в то же время, фрейморки бывают очень полезными и помогают сократить время разработки.&lt;/p&gt;&lt;p&gt;Каждый фреймворк, который вы можете найти в Сети, был создан кем-то другим — не вами, - со своим пониманием того, как должно быть устроено и как должно работать веб-приложение. И одна из главных причин того, почему фреймворки так перегружены: они разработаны с учетом нужд каждого разработчика.&lt;/p&gt;&lt;p&gt;Если вы одалживаете у кого-то на время автомобиль, то это не значит, что вы садитесь в него и сразу едете. Сначала вы подвигаете водительское сидение, подстраиваете боковые зеркала так, как вам надо.  Точно так же дело обстоит и с фреймворком: нельзя его использовать в том виде, в каком он был скачан. Во-первых, нужно выкинуть из него все, что никогда вам не понадобится. Во-вторых, нужно определиться с теми его составляющими, в которых вы всегда будете нуждаться. И, в-третьих, нужно настроить те составляющие, которыми вы будете пользоваться.&lt;/p&gt;&lt;p&gt;Теперь пора перейти к герою сегодняшнего обзора, ну а вы время от времени подумывайте над тем, что было сказано выше. :)&lt;/p&gt;&lt;h2&gt;52 Framework&lt;/h2&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="143" src="http://2.bp.blogspot.com/_czADlTNKV1k/TEGtTINHlmI/AAAAAAAAASo/tYA6vc2deY4/s320/52framework-1.jpg" width="320" /&gt;&lt;/div&gt;&lt;p&gt;Итак, сегодняшний герой — это новый, все еще находящийся на ранней стадии разработки, фреймворк, нужный для того, чтобы быть использовать HTML5 и CSS3 кросс-браузерно  и соответственно стандартам.&lt;/p&gt;&lt;h3&gt;Так скоро?&lt;/h3&gt;&lt;p&gt;HTML5 и СSS3 — все еще новые технологии, так не рано ли выпускать для них фреймворк? Нет, не рано. Поддержка этих технологий становится все шире и шире и сопровождается большим количеством разработчиков. &lt;/p&gt;&lt;p&gt;Разговор о том, пришло ли то время, когда можно в полном объем использовать HTML5 и CSS3, оставим на потом. В данный момент речь идет о том, что уже сейчас следует создавать системы (фреймворки), которые в ближайшем будущем помогут облегчить использование этих новых технологий. Никогда не наступит то время, когда веб-стандарты прекратят развиваться, тем самым создав благоприятный климат для разработчиков.&lt;/p&gt;&lt;h3&gt;Загрузка&lt;/h3&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="117" src="http://1.bp.blogspot.com/_czADlTNKV1k/TEGtb2qlAVI/AAAAAAAAASs/rdng4X6cGLw/s400/52framework-2.jpg" width="400" /&gt;&lt;/div&gt;&lt;p&gt;Как вы можете видеть, совокупный размер файлов фреймворка достаточно мал (если не брать в расчет PSD-файл, который вообще можно удалить), что не может не радовать.Весь фреймворк состоит из трех CSS-фалов, двух HTML-файлов, одного JS-файла, двух PSD-файлов и одного JPG-файла. Рассмотрим роль каждого из этих фалов.&lt;/p&gt;&lt;h3&gt;Демонстрация&lt;/h3&gt;&lt;p&gt;Откройте файл &lt;span class="code"&gt;&lt;i&gt;index.html&lt;/i&gt;&lt;/span&gt; — это сердце фреймворка.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="260" src="http://4.bp.blogspot.com/_czADlTNKV1k/TEGtjo7llXI/AAAAAAAAASw/cpVLgnyxhWQ/s400/52framework-3.jpg" width="400" /&gt;&lt;/div&gt;&lt;p&gt;Фреймворк настраивает все наиболее часто используемые элементы. Тэги заголовков (&lt;span class="code"&gt;h1&lt;/span&gt;, &lt;span class="code"&gt;h2&lt;/span&gt; и &lt;span class="code"&gt;h3&lt;/span&gt;) стилизованны в соответствии с книгопечатной типографикой, элементы форм готовы к использованию и имеют симпотичную кнопку подтверждения. Также существует метод отображения исходного кода и дополнительные стили для множества элементов.&lt;/p&gt;&lt;h2&gt;Код&lt;/h2&gt;&lt;p&gt;Проанализируем исходный код файла &lt;span class="code"&gt;&lt;i&gt;index.html&lt;/i&gt;&lt;/span&gt;.&lt;/p&gt;&lt;h3&gt;DOCTYPE&lt;/h3&gt;&lt;p&gt;Первое, что должно быть в каждом уважающем себя html-файле, — это строка с описанием DOCTYPE. В HTML5 эта строка выглядит просто и элегантно:&lt;/p&gt;&lt;div class="code"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/div&gt;&lt;p&gt;Эта обязательная строка, которая помогает браузерам правильно интерпретировать ваш код. &lt;/p&gt;&lt;h3&gt;JavaScript&lt;/h3&gt;&lt;p&gt;Следующая строка, на которую стоит обратить внимание — это строка в которой происходит подключение внешнего скриптового файла:&lt;/p&gt;&lt;div class="code"&gt;&amp;lt;script src="html5.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/div&gt;&lt;p&gt;Этот JS-файл нужен для того, чтобы обеспечить поддержку новых элементов HTML5 в старых браузерах.&lt;/p&gt;&lt;h3&gt;Семантика&lt;/h3&gt;&lt;p&gt;Теперь обратим внимание на то, как построена сама HTML-страница. Фреймворк использует новую семантическую разметку — очень простую и чрезвычайно удобную, легкую для понимания. Ниже представлена общая структура страницы:&lt;/p&gt;&lt;div class="code"&gt;&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;header&amp;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;lt;nav&amp;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;lt;/nav&amp;gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/header&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;aside&amp;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;lt;form&amp;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;lt;/form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/aside&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section&amp;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;lt;article&amp;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;lt;/article&amp;gt;  &lt;br /&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;lt;article&amp;gt; &lt;br /&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;lt;code&amp;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;lt;/code&amp;gt;&lt;br /&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;lt;article&amp;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;lt;/article&amp;gt;&lt;br /&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;lt;/article&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;footer&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/footer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;/div&gt;&lt;p&gt;Число новых элементов достаточно велико. Страница разделена на заголовок (&lt;span class="code"&gt;header&lt;/span&gt;), навигационную панель (&lt;span class="code"&gt;nav&lt;/span&gt;), сайд-бар (&lt;span class="code"&gt;aside&lt;/span&gt;), секции (&lt;span class="code"&gt;section&lt;/span&gt;), статьи (&lt;span class="code"&gt;article&lt;/span&gt;), исходный код (&lt;span class="code"&gt;code&lt;/span&gt;) и подвал (&lt;span class="code"&gt;footer&lt;/span&gt;).&lt;/p&gt;&lt;p&gt;Использование 52 Framework поможет вам быстро создавать страницы на качественно новом уровне.&lt;/p&gt;&lt;h3&gt;Сброс стилей и модульная сетка&lt;/h3&gt;&lt;p&gt;Фреймворк включает в себя три CSS-файла: &lt;span class="code"&gt;&lt;i&gt;general.css&lt;/i&gt;&lt;/span&gt;, &lt;span class="code"&gt;&lt;i&gt;grid.css&lt;/i&gt;&lt;/span&gt; и &lt;span class="code"&gt;&lt;i&gt;reset.css&lt;/i&gt;&lt;/span&gt;. &lt;span class="code"&gt;&lt;i&gt;reset.css&lt;/i&gt;&lt;/span&gt; является модифицированной версией сброса стилей от &lt;a class="other" href="http://meyerweb.com/eric/tools/css/reset/" rel="nofollow"&gt;Эрика Мейера&lt;/a&gt; (Eric Meyer). Эта версия была создана &lt;a class="other" href="http://html5doctor.com/html-5-reset-stylesheet/" rel="nofollow"&gt;Ричардом Кларком&lt;/a&gt; (Richard Clark).&lt;/p&gt;&lt;p&gt;Каждый уважающий себя HTML/CSS-фреймворк должен обладать модульной сеткой. Наш герой тоже может ей похвастаться:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_czADlTNKV1k/TEGtsKZaMdI/AAAAAAAAAS0/TNMqUUxbRA4/s320/52framework-4.jpg" width="275" /&gt;&lt;/div&gt;&lt;p&gt;Сетка самая обычная, состоящая из 16 колонок (960 grid system). Доступны колонки шириной от 40 до 940 пикселей с границами в 10 пикселей по обеим сторонам.&lt;/p&gt;&lt;div class="code"&gt;.col_1 {width:40px;}&lt;br /&gt;
.col_2 {width:100px;}&lt;br /&gt;
.col_3 {width:160px;}&lt;br /&gt;
.col_4 {width:220px;}&lt;br /&gt;
.col_5 {width:280px;}&lt;br /&gt;
.col_6 {width:340px;}&lt;br /&gt;
.col_7 {width:400px;}&lt;br /&gt;
.col_8 {width:460px;}&lt;br /&gt;
.col_9 {width:520px;}&lt;br /&gt;
.col_10 {width:580px;}&lt;br /&gt;
.col_11 {width:640px;}&lt;br /&gt;
.col_12 {width:700px;}&lt;br /&gt;
.col_13 {width:760px;}&lt;br /&gt;
.col_14 {width:820px;}&lt;br /&gt;
.col_15 {width:880px;}&lt;br /&gt;
.col_16 {width:940px;}&lt;/div&gt;&lt;h3&gt;Основной CSS-файл&lt;/h3&gt;&lt;p&gt;Основной CSS-файл содержит множество полезных стилей, которые помогут вам быстро начать использовать фреймворк. У всех упомянутых выше HTML-элементов есть собственные стили, наряду с классами очистки потока и др. &lt;/p&gt;&lt;p&gt;Интересной особенностью является то, что вы можете самостоятельно выбрать цвет, которым будет подсвечиваться выделенный вами текст:&lt;/p&gt;&lt;div class="code"&gt;::selection {&lt;br /&gt;
background: #525252; /* Safari */&lt;br /&gt;
}&lt;br /&gt;
::-moz-selection {&lt;br /&gt;
background: #525252; /* Firefox */&lt;br /&gt;
color:#fff;&lt;br /&gt;
}&lt;/div&gt;&lt;p&gt;В этом файле можно найти стили для полей с скругленными уголками:&lt;/p&gt;&lt;div class="code"&gt;{ -moz-border-radius: 4px;&lt;br /&gt;
-webkit-border-radius: 4px;&lt;br /&gt;
border-radius: 4px;&lt;br /&gt;
}&lt;/div&gt;&lt;p&gt;Наконец, в CSS-коде, который содержится в HTML-файле, вы можете найти стили, которые обеспечивают поддержку теней:&lt;/p&gt;&lt;div class="code"&gt;header .logo {&lt;br /&gt;
font-size:2.5em; &lt;br /&gt;
height:52px;&lt;br /&gt;
padding-top:28px;&lt;br /&gt;
font-weight:700;&lt;br /&gt;
text-shadow:1px 1px 2px #000;&lt;br /&gt;
color:#fff;&lt;br /&gt;
filter: Shadow(Color=#666666, Direction=135, Strength=3);}&lt;/div&gt;&lt;h2&gt;Дальше — больше&lt;/h2&gt;&lt;p&gt;Как было сказано выше, 52 Framework все еще находится на ранних стадиях разработки, но продолжает расти и улучшаться. Например, в новой бета-версии разработчики добавили поддержку элементов &lt;span class="code"&gt;canvas&lt;/span&gt; и &lt;span class="code"&gt;video&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;В будущем хотелось бы видеть стили, отвечающие, скажем, за тени и скругленные уголки, вынесенными в отдельные классы.&lt;/p&gt;&lt;p&gt;А если в целом, то фреймворк очень хорош и его можно использовать в качестве фундамента для собственных разработок уже сейчас.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-5327069881388965287?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Vj4GtkwZ7co:iG4TUAtnJA0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=Vj4GtkwZ7co:iG4TUAtnJA0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-17T17:30:39.555+04:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_czADlTNKV1k/TEGtTINHlmI/AAAAAAAAASo/tYA6vc2deY4/s72-c/52framework-1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>jQuery и Google Maps API №4: Скользящая карта</title><link>http://blog.aaa-nan.info/2010/07/jquery-google-maps-api-4.html</link><category>Web-dev</category><category>Статьи</category><category>jQuery</category><category>Переводы</category><category>Google Maps</category><author>noreply@blogger.com (LordOtU)</author><pubDate>Fri, 16 Jul 2010 13:50:30 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3516827939672359949.post-1447201878724344000</guid><description>&lt;div style="font-family: verdana;" class="art"&gt;&lt;h1&gt;jQuery и Google Maps API №4: Скользящая карта&lt;/h1&gt;&lt;p&gt;Google Maps API как-то неожиданно добрался до третьей версии, что не может не радовать. Я считаю, что одним из главных преимуществ новой версии АПИ стала возможность работать с картами без получения специального ключа.&lt;/p&gt;&lt;p&gt;API стал еще лучше и проще. Во-первых, он полностью событийный. Это означает, что можно создавать обработчики для любых событий, которые могут происходить как на карте, так и за ее пределами.&lt;/p&gt;&lt;p&gt;Во-вторых, объекты, использующиеся для создания карты и ее, так сказать, внутреннего окружения, обладают необходимым набором методам, который обеспечивает полный контроль над ними.&lt;/p&gt;&lt;p&gt;Итак, попробуем немного поиграться с идеей, подсмотренной вот тут: &lt;a href="http://hitotoki.org/places/japan/tokyo/" rel="nofollow" class="other"&gt;http://hitotoki.org/places/japan/tokyo/&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Так как на дворе уже 2010 год, то в качестве инструментария будем использовать немножко CSS3, немножко — HTML5 и множко — jQuery. Суть дальнейшего действа проста до безобразия.&lt;/p&gt;&lt;p&gt;Для начала мы создадим неупорядоченный список из объектов, которые будут помечаться маркерами на карте. Каждый элемент этого списка будет содержать специальный HTML5-атрибут &lt;span class="code"&gt;data&lt;/span&gt;, в котором будут храниться координаты этого объекта. Также, каждый элемент этого списка будет содержать краткую и полную информацию об объекте. Пример одного объекта из списка:&lt;/p&gt;&lt;div class="code"&gt;&amp;lt;li data-geo-lat="45.039131" data-geo-long="41.98214"&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;г. Ставрополь&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Населенный пункт&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class="longdesc"&amp;gt;&amp;lt;strong&amp;gt;Об объекте:&amp;lt;/strong&amp;gt; Ставрополь расположился на холмах и распадках в центральной части Предкавказья на Ставропольской возвышенности, в верховьях реки Ташла (бассейн Восточного Маныча), в 1450 км к югу от Москвы, на пересечении автодорог Ростов-Ставрополь и Астрахань-Невинномысск. Крайние высотные отметки — от 230 до 660 м над уровнем моря.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;/div&gt;&lt;p&gt;Когда пользователь помещает указатель мыши на какой-нибудь объект из данного списка, то мы применяем к этому объекту класс &lt;span class="code"&gt;hover&lt;/span&gt; для выделения, «передвигаем» центр карты к выделенному объекту и отмечаем объект маркером. Также, мы выделяем область с более детальной информацией.&lt;/p&gt;&lt;p&gt;А вот &lt;a href="http://aaa-nan.info/gm_examples/slider_map.php"&gt;тут&lt;/a&gt; лежит пример.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3516827939672359949-1447201878724344000?l=blog.aaa-nan.info' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=hgndqNbHZoM:SucNqMrsSLM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/aaa-nan?a=hgndqNbHZoM:SucNqMrsSLM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/aaa-nan?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-17T00:50:30.434+04:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>

