<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>VEG&#039;s Blog &#187; Web-разработка</title>
	<atom:link href="http://vrublevsky.org/blog/category/web-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0/feed/" rel="self" type="application/rss+xml" />
	<link>http://vrublevsky.org/blog</link>
	<description>Орбит с Евгением</description>
	<lastBuildDate>Sun, 22 Nov 2009 11:16:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Используем jQuery в скриптах GreaseMonkey</title>
		<link>http://vrublevsky.org/blog/2009/11/18/jquery-greasemonkey/</link>
		<comments>http://vrublevsky.org/blog/2009/11/18/jquery-greasemonkey/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 21:20:10 +0000</pubDate>
		<dc:creator>VEG</dc:creator>
				<category><![CDATA[Web-разработка]]></category>

		<guid isPermaLink="false">http://veg.slutsk.net/blog/?p=220</guid>
		<description><![CDATA[Я хочу рассказать об удобных и неоправданно редко использующихся новшествах GreaseMonkey версии 0.8, которая доступна уже более года. Они помогут сделать пользовательские скрипты более модульными, а главное — дадут возможность без ухищрений использовать jQuery, что позволит нам «писать меньше, а &#8230; <a href="http://vrublevsky.org/blog/2009/11/18/jquery-greasemonkey/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img align="left" src="http://veg.slutsk.net/habr/gm_jq.png">Я хочу рассказать об удобных и неоправданно редко использующихся новшествах GreaseMonkey версии 0.8, которая доступна уже более года. Они помогут сделать пользовательские скрипты более модульными, а главное — дадут возможность без ухищрений использовать jQuery, что позволит нам «писать меньше, а делать больше». Речь идет о новых мета-параметрах пользовательских скриптов: <a href="http://wiki.greasespot.net/Metadata_block#.40resource">@resource</a> и <a href="http://wiki.greasespot.net/Metadata_block#.40require">@require</a>.<br />
<span id="more-220"></span><br />
Рассмотрим небольшой пример: <a href="http://veg.slutsk.net/habr/habratest.user.js">habratest.user.js</a>. Скрипт добавляет в меню Хабрахабра логотип GreaseMonkey, при клике по которому отобразится текст «Hello, world!», взятый из внешнего файла.</p>
<blockquote><p><code><br />
<font color="#008000"><br />
// ==Userscript==<br />
// @name&nbsp;&nbsp;&nbsp;habratest<br />
// @namespace habratest<br />
// @include&nbsp; http://habrahabr.ru/*<br />
// @include&nbsp; http://*.habrahabr.ru/*<br />
// @resource&nbsp;gm_logo http://veg.slutsk.net/habr/greasemonkey.png<br />
// @resource&nbsp;hello http://veg.slutsk.net/habr/hello.txt<br />
// @require&nbsp; http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js<br />
// ==/Userscript==<br />
</font></p>
<p>$(<font color="#0000ff">document</font>).ready(<font color="#0000ff">function</font>()<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$(<font color="#A31515">"ul.panel-nav-top"</font>).append(<font color="#A31515">'&lt;li style="float: right;" id="habratest"&gt;&lt;/li&gt;'</font>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;$(<font color="#A31515">"#habratest"</font>).append(<font color="#A31515">'&lt;img src="'</font>+GM_getResourceURL(<font color="#A31515">"gm_logo"</font>)+<font color="#A31515">'"&gt;'</font>);<br />
&nbsp;&nbsp;&nbsp;&nbsp;$(<font color="#A31515">"#habratest img"</font>).click(<font color="#0000ff">function</font>()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(GM_getResourceText(<font color="#A31515">"hello"</font>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
});<br />
</code></p></blockquote>
<p>
<b>@resource</b> позволяет привязать к пользовательскому скрипту внешние файлы: картинки, текстовые файлы и т.д. — все что может понадобиться во время выполнения. В примере «gm_logo» — это имя ресурса. Функция GM_getResourceURL предназначена для получения локальной ссылки на файл (например, на картинку), GM_getResourceText — для получения текста из файла (файл может содержать, например, большой кусок HTML). Обе функции принимают в качестве параметра имя ресурса. Преимущество использования ресурсов вместо прямых ссылок на сервер заключается в том, что указанные файлы загружаются один раз во время установки скрипта и в дальнейшем всегда берутся с локальной машины.</p>
<p>Куда более интересен <b>@require</b>, который позволяет подключать внешние библиотеки к скрипту. Можно конечно же городить какой-нибудь код с динамическим созданием тега script, достаточно нетривиальными способами ожидать его загрузки. Но в таком случае файл библиотеки будет запрашиваться с сервера каждый раз при открытии новой страницы в браузере. Этих недостатков лишен @require — файл будет запрошен всего один раз при установке, а главное — он будет будет гарантированно выполнен до того, как начнется выполнение вашего пользовательского скрипта.</p>
<p>В качестве полезного примера предлагаю посмотреть код скрипта <a href="http://veg.slutsk.net/habr/yandexru.user.js">yandexru.user.js</a>, который на страницах результатов поиска добавляет в форму запроса опцию «Поиск без исключения», поле «Поиск по сайту», а также отображает повлиял ли установленный регион на результаты поиска.</p>
<p>К сожалению, сегодня подобные вещи можно делать только в Firefox. Есть смысл намекнуть разработчикам аналогов GreaseMonkey для других браузеров, чтобы те задумались о поддержке столь полезных функций. Но если вы пишете скрипт для личного пользования — воспользоваться данными возможностями вполне можно уже сегодня.</p>
]]></content:encoded>
			<wfw:commentRss>http://vrublevsky.org/blog/2009/11/18/jquery-greasemonkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Индикатор окончания эры Internet Explorer 6 на рабочем столе</title>
		<link>http://vrublevsky.org/blog/2009/07/21/ie6-meter/</link>
		<comments>http://vrublevsky.org/blog/2009/07/21/ie6-meter/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 20:17:49 +0000</pubDate>
		<dc:creator>VEG</dc:creator>
				<category><![CDATA[Web-разработка]]></category>

		<guid isPermaLink="false">http://veg.slutsk.net/blog/?p=196</guid>
		<description><![CDATA[Internet Explorer 6 появился в 2001 году. В 2003-2004 годах он набрал рекордную рыночную долю 90%, и не глядя на все свои недостатки долгое время удерживал лидирующие позиции. Сегодня мы наблюдаем окончание эпохи IE6. Для того, чтобы наблюдать за этим &#8230; <a href="http://vrublevsky.org/blog/2009/07/21/ie6-meter/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Internet Explorer 6 появился в 2001 году. В 2003-2004 годах он набрал рекордную рыночную долю 90%, и не глядя на все свои недостатки долгое время удерживал лидирующие позиции. Сегодня мы наблюдаем окончание эпохи IE6. Для того, чтобы наблюдать за этим процессом, я реализовал идею . Теперь мы можем прямо на рабочем столе наблюдать за изображением уходящего в тень логотипа IE6.</p>
<p><strong>Скачать:</strong> <a href="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/ie6-meter.zip">ie6-meter.zip</a> (1 кб.)<br />
<strong>Исходники:</strong> <a href="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/ie6-meter-src.zip">ie6-meter-src.zip</a> (236 кб.)<br />
<strong>Демо:</strong> <a href="http://veg.slutsk.net/ie6meter/">http://veg.slutsk.net/ie6meter/</a></p>
<p><a href="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/screenshot.png"><img class="aligncenter size-medium wp-image-197" title="Индикатор популярности IE6 на рабочем столе" src="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/screenshot-400x300.png" alt="Индикатор популярности IE6 на рабочем столе" width="400" height="300" /></a></p>
<p>Данные автоматически берутся из <a href="http://www.liveinternet.ru/stat/ru/browsers.html?period=week">статистики liveinternet.ru по неделям</a>. Скрипт генерирует картинку, на которую ссылается обычный HTML документ, что собственно и устанавливается в качестве рабочего стола.<span id="more-196"></span><br />
<a href="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/ie6percents.jpg"><img class="aligncenter size-full wp-image-198" title="Затемнение в зависимости от рыночной доли IE6" src="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/ie6percents.jpg" alt="Затемнение в зависимости от рыночной доли IE6" width="300" height="300" /></a></p>
<p>Используется достаточно крупный масштаб. Затемнение первых пикселей логотипа слева начинается с 25%. Буква «e» полностью спрячется в тени при 5% доле. Оставшийся хвостик вверху будет отражать постепенную потерю последних пяти процентов. Картинка обновляется каждый день.</p>
<p>В Windows XP существует 2 способа добавить HTML страницу на рабочий стол. Стандартный способ (Display Properties-&gt;Desktop-&gt;Customize Desktop&#8230;-&gt;Web) отпадает, поскольку он создает интерактивное окно браузера на рабочем столе — при наведении появляется рамка, при клике — несколько элементов управления. Второй способ лишен этих недостатков, в нем HTML документ как обычная картинка отобразится на весь экран в фоне. Для этого в окне выбора картинки рабочего стола (Display Properties-&gt;Desktop-&gt;Browse&#8230;) необходимо просто вручную ввести имя HTML файла.</p>
<p>Пользователи Linux могут подсказать в комментариях, каким образом поставить это чудо на рабочий стол — буду благодарен.</p>
<p><strong>UPD 17.08.2009:</strong> Как вариант можно сделать что-то вроде:</p>
<p><a href="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/foxy_ie6.png"><img class="aligncenter size-medium wp-image-208" title="foxy_ie6" src="http://veg.slutsk.net/blog/wp-content/uploads/2009/07/foxy_ie6-400x300.png" alt="foxy_ie6" width="400" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://vrublevsky.org/blog/2009/07/21/ie6-meter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Избавляемся от www в адресе сайта</title>
		<link>http://vrublevsky.org/blog/2009/02/10/no-www/</link>
		<comments>http://vrublevsky.org/blog/2009/02/10/no-www/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 16:20:07 +0000</pubDate>
		<dc:creator>VEG</dc:creator>
				<category><![CDATA[Web-разработка]]></category>

		<guid isPermaLink="false">http://veg.slutsk.net/blog/?p=184</guid>
		<description><![CDATA[Универсальное решение проблемы постоянных редиректов на домен без www при помощи mod_rewrite. Просто и полезно. Работает на любом домене без необходимости править для каждого сайта. В корень бросаем файл .htaccess со следующим содержимым: RewriteEngine On RewriteBase / # В переменную &#8230; <a href="http://vrublevsky.org/blog/2009/02/10/no-www/">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Универсальное решение проблемы постоянных редиректов на домен без www при помощи mod_rewrite. Просто и полезно. Работает на любом домене без необходимости править для каждого сайта.<br />
В корень бросаем файл .htaccess со следующим содержимым:</p>
<pre><IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# В переменную окружения %{ENV:PROTOCOL} помещаем протокол
RewriteRule ^(.*)$ - [E=PROTOCOL:http]
RewriteCond %{HTTPS} ^on$ [NC]
RewriteRule ^(.*)$ - [E=PROTOCOL:https]
# Если нужно убираем www
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]
</IfModule></pre>
<p>Это все.</p>
]]></content:encoded>
			<wfw:commentRss>http://vrublevsky.org/blog/2009/02/10/no-www/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

