<?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>Perlover&#039;s Blog &#187; Для Webmasters</title>
	<atom:link href="http://blog.perlover.com/category/for-webmasters/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.perlover.com</link>
	<description>Blog about Unix, Perl, Firefox, JavaScript and other internet technologies</description>
	<lastBuildDate>Thu, 12 Aug 2010 11:56:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Чуть улучшенный Live HTTP Headers</title>
		<link>http://blog.perlover.com/2010/08/09/patched-live-http-headers/</link>
		<comments>http://blog.perlover.com/2010/08/09/patched-live-http-headers/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 14:25:34 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Add-ons]]></category>
		<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[patches]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Sniffing]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[urls]]></category>
		<category><![CDATA[xpi]]></category>
		<category><![CDATA[сисадминам]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=987</guid>
		<description><![CDATA[Я часто пользуюсь Live HTTP headers, но постоянно раздражают установленные каждый раз флажки во вкладке Generator -&#62; Show &#171;images&#187; &#38; &#171;CSS&#187;. Обычно, Live HTTP headers используется для перехвата GET &#38; POST запросов HTTP трафика броузера, но при этом в 99% случаев не нужны данные о перехвате графики и CSS стилях. Постоянно приходится их отключать, так [...]]]></description>
			<content:encoded><![CDATA[<p>Я часто пользуюсь <strong><a href="https://addons.mozilla.org/en-US/firefox/addon/3829/" target="_blank">Live HTTP headers</a></strong>, но <strong>постоянно раздражают установленные каждый раз флажки</strong> во вкладке Generator -&gt; <strong>Show &laquo;images&raquo; &amp; &laquo;CSS&raquo;</strong>. Обычно, Live HTTP headers используется для перехвата GET &amp; POST запросов HTTP трафика броузера, но при этом в 99% случаев не нужны данные о перехвате графики и CSS стилях. Постоянно приходится их отключать, так как они &laquo;засоряют&raquo; поток других, более важных, данных. <strong>Решил покончить для себя с этим</strong>, поправив чуть чуть этот плагин. <strong>Кому надо &#8211; пользуйтесь. </strong>Правда, когда плагин выпустят с новой версией, эта будет перетерта и все перестанет работать. Как это произойдет, постараюсь придумать более лучшее решение. Исправлена пара строк, но зато так стало удобнее&#8230; <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><a href="http://blog.perlover.com/wp-content/uploads/2010/08/live_http_headers-0.16-fx+sm1.xpi" target="_self">Правленный Live HTTP headers v0.16</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/08/09/patched-live-http-headers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google 500 Server Error</title>
		<link>http://blog.perlover.com/2010/08/06/google-internal-server-error-500/</link>
		<comments>http://blog.perlover.com/2010/08/06/google-internal-server-error-500/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 09:36:20 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Расслабуха :)]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[о жизни]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=966</guid>
		<description><![CDATA[Впервые в жизни увидел, как сервис Google (Google Webmaster Tools) выдавал мне несколько раз 500-ую ошибку сервера. Для тех, кто не знает что это &#8211; это ошибка, когда на стороне сервера программа выполняет ошибку и документ не может быть сформирован. Другими словами, Google Webmaster Tools сбоит на уровне сервера, то есть где-то там, в глубине [...]]]></description>
			<content:encoded><![CDATA[<p>Впервые в жизни увидел, как сервис Google (Google Webmaster Tools) выдавал мне несколько раз 500-ую ошибку сервера. Для тех, кто не знает что это &#8211; это ошибка, когда на стороне сервера программа выполняет ошибку и документ не может быть сформирован. Другими словами, Google Webmaster Tools сбоит на уровне сервера, то есть где-то там, в глубине &laquo;датацентров&raquo; Гугля программисты что-то где-то накосячили. Я такого раньше не видел &#8211; сырые программы, они видимо, тщательно оттачивают перед размещением их &laquo;для всех&raquo;. А тут вот за день (6 августа 2010) &#8211; 5 или 6 раз, и всегда в том месте, когда я &laquo;авторизую&raquo; свой сайт при добавлении в сервис. Это говорит о том, что даже такой крупный гигант, как Гугль, иногда делает ляпы <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Скриншот прилагается <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div id="attachment_967" class="wp-caption alignnone" style="width: 580px"><a href="http://blog.perlover.com/wp-content/uploads/2010/08/google-500-error.jpg"><img class="size-full wp-image-967 " title="google-500-error" src="http://blog.perlover.com/wp-content/uploads/2010/08/google-500-error.jpg" alt="" width="570" height="160" /></a><p class="wp-caption-text">500 Internal Server Error of Google</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/08/06/google-internal-server-error-500/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rsync &#8211; быстрый резерв + быстрый перенос сайтов</title>
		<link>http://blog.perlover.com/2010/06/16/rsync-quickly-reserve-moving/</link>
		<comments>http://blog.perlover.com/2010/06/16/rsync-quickly-reserve-moving/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 05:44:13 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=826</guid>
		<description><![CDATA[Когда-то давно, для резервирования, я использовал такие, казалось бы, незаменимые утилиты, как tar или pax. Я слышал в то время про rsync, но не представлял себе, как она в точности работает, поэтому я ощибочно полагал, что rsync &#8211; простая утилита копирования. А раз простая, то вряд ли я получу от нее много толку. Поэтому я [...]]]></description>
			<content:encoded><![CDATA[<p>Когда-то давно, для резервирования, я использовал такие, казалось бы, незаменимые утилиты, как tar или pax. Я слышал в то время про rsync, но не представлял себе, как она в точности работает, поэтому я ощибочно полагал, что rsync &#8211; простая утилита копирования. А раз простая, то вряд ли я получу от нее много толку. Поэтому я продолжал и продолжал пользоваться tar или pax, затем копировал по scp эти архивы, там распаковывал и т.п.. Я даже использовал find затем, чтобы докопировать файлы, которые изменились за последние сутки. <strong>Эх, жаль, что я столько много истратил времени на копирование, ведь была rsync!</strong></p>
<p><span id="more-826"></span>Итак, <strong>что же это за такая rsync?</strong> Это действительно, утилита рекурсивного копирования (копирует все файлы и поддиректории) с одного хоста на другой, или даже внутри одной машины. На этом все ее отличие от, например, утилиты cp заканчивается. И вот тут самое интересное &#8211; она при копировании каждый файл или директории, которые копируем, проходит блоками, и отслеживает только изменения блоков в сравнении с уже скопированными блоками. Грубо говоря, <strong>она копирует только &laquo;дельты&raquo; файлов и директорий!</strong> Что это значит? Это значит, что второй, третий и так далее запуски этой программы на определенную цель (куда копировать) будут занимать гораздо меньше времени, операций копирования и передачи данных по сети при повторном копировании уже изменившихся файлов. Вот несколько примеров ее использования:</p>
<h3>1) Быстрый перенос баз данных (на примере SQL).</h3>
<p>Имеем два сервака &#8211; один рабочий A, второй Б &#8211; куда будем резервировать свои базы данных (там где нет работающего SQL). Тогда для резервирования <strong>можно периодически запускать rsync</strong> на сервере A, <strong>не прекращая работы SQL сервера</strong> (назовем это &laquo;рабочим резервом&raquo;). Но чтобы нам иметь полностью правильные базы в резервной директории сервера Б, нам надо временами останавливать SQL на серваке А, и пока там нет работаюшего SQL, делать повторное копирование (назовем это &laquo;фиксированным резервом&raquo;). Вот тут то rsync и пригождается! Во время &laquo;рабочего резерва&raquo; многие файлы успевают устареть, ведь SQL продолжает работать. Во время &laquo;фиксированного резерва&raquo; копируются только дельты с последнего запуска &laquo;рабочего резерва&raquo;. Если время между этими запусками мало, то дельты копируются очень быстро &#8211; на больших базах это может быть не более минуты, например. Для снижения времени простоя, надо просто выполнить повторный &laquo;рабочий резерв&raquo; прямо перед остановкой MySQL сервера. Плюсы такого способа &#8211; <strong>минимальный даун по времени</strong>, минимум человеческих ошибок, простота. Я не знаю другого способа на данный момент, чтобы сделать быстрый резерв больших баз данных на другую машину, и при этом свести время простоя к минимуму.</p>
<p>Команды (<strong>смотрите не перепутайте!</strong> Тут все как в теории относительности <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )<br />
<strong>На стороне сервера Б </strong>(можно и на стороне А, но тогда надо поменять пути местами), куда копируем, запускаем команды копирования во время &laquo;рабочего резерва&raquo;</p>
<pre class="brush: bash;">cd
nohup /bin/nice -n 20 ionice -c3 rsync --rsync-path='/bin/nice -n 20 ionice -c3 rsync' -avz --delete IP.ADDRESS.SERVER.A:'/path/to/source/folder/' /path/to/target/folder/</pre>
<p><strong>Краткие пояснения (ВАЖНО):</strong><br />
Некоторые утилиты могут отсутствовать, <strong>примеры даны для Linux!</strong> Здесь <a href="http://ru.wikipedia.org/wiki/Nohup" target="_blank">nohup</a> &#8211; &laquo;оторвать&raquo; ввод/вывод от терминала. Это нам потребуется, когда мы захотим оставить запущенный &laquo;резерв&raquo; в фоновом режиме. Сразу мы не можем этого сделать (то есть не ставлю &#8216;&amp;&#8217; в конце), так как rsync при копировании использует ssh, и раз мы копируем на другой сервак, он запросит у нас пароль (если авторизация через openssh ключи + ssh-agent, то можно и поставить &#8216;&amp;&#8217;, но об этом в другой раз, в другой статье). После ввода пароля уже можно будет нажать <em>Ctrl+Z</em> в shell и затем <code>"<strong>%1 &amp;</strong>"</code> для запуска в фоновом режиме первой запущенной задачи (см. <a href="http://linux.die.net/man/1/bash" target="_blank">man bash</a>). Команда <a href="http://ru.wikipedia.org/wiki/Nice" target="_blank">nice</a> &#8211; выставить приоритет для процессора, а <a href="http://linux.die.net/man/1/ionice" target="_blank">ionice</a> &#8211; приоритет для операций при работе с диском &#8211; все приоритеты ставяться на понижение, чтобы продолжалась нормальная работа сервера. Опция <code>--delete</code> для rsync &#8211; удалять все файлы в целевой директории (от слово &laquo;цель&raquo;, target), которых нет в исходной (source). То есть, после копирования получим полностью равную директорию по содержанию.<br />
<strong>Слеш в конце исходной директории (</strong><code>/path/to/source/folder/</code><strong>)  &#8211; важная штука!</strong> Если в конце слеш &#8211; директория рассматривается rsync-ом как комплект директорий и файлов в ней для копирования, а если слеша нет &#8211; как один объект, целая директория со своим именем &#8211; в обоих случаях копирование рекурсивное, но если из примера убрать слеш в конце первого пути (сделать /path/to/source/folder), то в /path/to/target/folder/ будет создана папка folder и туда скопируется ее содержимое! Почитайте man-ы, если хотите понять, как присутствие или отсутствие слешей в конце директории влияет на ход событий <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>2) Перенос сайтов.</h3>
<p>Способом, описанным выше, также можно переносить и сайты вместе с их базами. Для баз мы используем способ выше, а для переноса контента делаем все то же самое, но при работающем apache. Как и в первом способе, apache мы останавливаем только на несколько минут или секунд, быстро запускаем rsync для &laquo;фиксированного резерва&raquo;, а после окончания запускаем apache снова. После остается сменить только DNS на новый IP адрес и все! Для повышения скорости переноса не забудьте за неделю до переноса выставить часовой TTL в вашем DNS для SOA записи зоны и для всех ее остальных записей. Тогда при смене IP весь трафик на сайт переместится за один час! Но это, как говориться, уже другая история. <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/06/16/rsync-quickly-reserve-moving/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>QR-Code</title>
		<link>http://blog.perlover.com/2010/06/14/qr-code/</link>
		<comments>http://blog.perlover.com/2010/06/14/qr-code/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 13:17:06 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[мобильная связь]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=834</guid>
		<description><![CDATA[Сегодня впервые узнал такую классную штуку, как QR-Code. Представьте себе, что вы хотите записать адрес интернета к себе в мобильник, а он к тому же еще длинный. Что вы будете делать? Или хотите оставить ваш email или рекламное объявление на столбе, и чтобы его потом можно было использовать в мобильнике (про столб, я конечно, загнул, [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня впервые узнал такую <strong>классную штуку</strong>, как <strong>QR-Code</strong>. Представьте себе, что вы хотите записать адрес интернета к себе в мобильник, а он к тому же еще длинный. Что вы будете делать? Или хотите оставить ваш email или рекламное объявление на столбе, и чтобы его потом можно было использовать в мобильнике (про столб, я конечно, загнул, но это вполне может быть стать широкоупотрибимым при поддержке сотовых телефонов). Оказывается, японцы давно уже придумали простой способ ввода информации в мобильник &#8211; <strong>квадратный штрихкод</strong> с информацией, который <strong>читается обычной камерой мобильника</strong>! И даже если ваш телефон не японский, вы можете легко добавить для него такую фишку &#8211; установить приложение. А некоторые мобильники умеют это уже делать прямо с завода <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-834"></span>Итак, имеем штрихкод &#8211; см. слева<a href="http://blog.perlover.com/wp-content/uploads/2010/06/http-blog.perlover.com-2010-06-14-qr-code-.png"><img class="alignleft size-full wp-image-836" title="Адрес этой статьи в QR-Code" src="http://blog.perlover.com/wp-content/uploads/2010/06/http-blog.perlover.com-2010-06-14-qr-code-.png" alt="" width="280" height="280" /></a>. Это &#8211; адрес данной статьи. Запускаем некое приложение, которое читает QR-Codes,  наводим камеру на монитор, щелкаем кнопкой и спустя пару секунд &#8211; адрес у нас уже в телефоне. Из своего опыта и экспериментов, я хочу предложить вам следующие ссылки для установки приложений, читающих QR-Codes:</p>
<ol>
<li><strong><a href="http://i-nigma.mobi/" target="_blank">i-nigma.mobi</a></strong> &#8211; самое <strong>лучшее приложение</strong>, которое мне понравилось из нескольких протестированных мною &#8211; приятный интерфейс, оформление, хистори, возможность отправить через СМС отсканированный текст, нормальная работа с русскими буквами, понимает все форматы + может еще читать обычный линейный штрих-код <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Просто наберите этот адрес в мобильнике, вам будет предложена ссылка для скачки Java приложения на основании марки телефона, которым вы зайдете на тот сайт.</li>
<li><strong><a href="http://qrcode.kaywa.com/" target="_blank">qrcode.kaywa.com</a></strong> &#8211; Здесь вы <strong>найдете онлайн генератор </strong>для формирования штрихкода для вашего URL адреса, текста, SMS. Если вы владелец сайта, и у вас есть мобильный контент, вам это будет очень кстати.</li>
<li><strong><a href="http://www.qrstuff.com/" target="_blank">www.qrstuff.com</a></strong> -  Другой, <strong>более гибкий генератор</strong>. Показывает QR код сразу, во время набора. Также <strong>делает нормально vCard &amp; meCard </strong>(&laquo;карточки контактов&raquo;) &#8211; для мобильника рекомендую выбрать тип meCard. Также там <strong>можно сформировать GPS точку и картой Google Map </strong>(сам стандарт QR кода не предусматривает это, но то, чего нет, тот севрис делает через URL сервисы своего сайта). Очень рекомендую этот генератор для продвинутых QR кодов.</li>
<li><strong><a href="http://ru.wikipedia.org/wiki/QR_Code" target="_blank">Статья в русской Wiki</a></strong>, рассказывающая о QR-Codes</li>
</ol>
<p>Если подумать, применений этому можно найти много. И не обязательно в интернет <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/06/14/qr-code/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Copy Clipboard в Firefox методами JavaScript</title>
		<link>http://blog.perlover.com/2010/06/12/how-copy-clipboard-firefox/</link>
		<comments>http://blog.perlover.com/2010/06/12/how-copy-clipboard-firefox/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 15:36:17 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=771</guid>
		<description><![CDATA[Если вы программер под JavaScript, вы навярняка сталкивались с такой проблемой &#8211; как реализовать копирование в буфер обмена средствами JavaScript в Firefox. С Internet Explorer все понятно &#8211; Microsoft &#171;постаралась&#187;, чтобы все, кому не лень, могли читать и писать в буфер обмена средствами JavaScript (по правильному, это конечно же, не должен делать любой сайт &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Если вы программер под JavaScript, вы навярняка сталкивались с такой проблемой &#8211; как реализовать копирование в буфер обмена средствами JavaScript в Firefox. С Internet Explorer все понятно &#8211; Microsoft &laquo;постаралась&raquo;, чтобы все, кому не лень, могли читать и писать в буфер обмена средствами JavaScript (по правильному, это конечно же, не должен делать любой сайт &#8211; мало ли что у вас в буфере обмена на тот момент, например пароль&#8230;). А вот Firefox с его сильной защитой JavaScript, не позволяет любому сайту это делать. Как быть?</p>
<p><span id="more-771"></span>Маленький экскурс &#8211; Firefox позволяет делать копирование в буфер, но разрешает это выполнять либо в chrome приложениях (то есть установленным расширениям, или Add-ons, другими словами), либо подписанным цифровой подписью приложениям в jar архивах &#8211; но при этом, у вас в броузере должен быть установлен корневой сертификат того разработчика, кому вы доверили это делать. Поэтому, обычному сайтовому программеру, как может показаться, ничего не остается, как сгенерировать свой сертификат, попросить посетителя его скачать, а свои JavaScript скрипты упаковать в Jar архив и его подписать. При этом, конечно, при любом изменении кода надо заново будет проделывать: упаковка в Jar, подпись Jar архива (ведь код изменился, а значит и подпись надо менять)&#8230; Именно, по началу, я так и думал, и даже делал (ох и муторно это!). Но есть способ попроще и лучше, но он не такой правильный с точки зрения безопасности. Но он также, как и в случае сертификата, требует определенных действий со стороны пользователя &#8211; также, однократных (сделал и забыл). То есть, как никрути, а просто сделать сайт, который бы читал/писал в буфер Clipboard своего посетителя, не получиться &#8211; все равно потребуется участие посетителя сайта (оно и правильно &#8211; нефиг делать без спросу опасные вещи!).</p>
<p>Итак, все что нужно сделать пользователю сайта &#8211; однократно, и не только для вашего сайта, а в общем для всех сайтов &#8211; это разрешить броузеру &laquo;спрашивать&raquo; посетителя о том, можно ли исполнять расширенные действия такому то сайту или нет (по умолчанию &#8211; ничего не спрашивается и не исполняется). Если посетитель отвечает, что можно &#8211; броузер запоминает домен, для которого это разрешили, и затем, действует в соответствии с этим разрешением всегда. Если другой сайт захочет, например, поработать с вашим буфером обмена &#8211; броузер снова спросит вас и предупредит, но однократно для этого домена и так далее.</p>
<p>Итак, делаем в броузере: <strong>about:config</strong> в адресной строке, соглашаемся с предупреждением, если таковое есть и там ищем параметр <strong>signed.applets.codebase_principal_support</strong>, ставим его в <strong>true</strong>. Все! Теперь осталось написать JavaScript код, например, копирование текстового значения title ссылки в буфера обмена, например:</p>
<pre class="brush: jscript;">// Общая функция копирования - копирует текст переменной maintext в clipboard, рабоает для IE и Firefox
function copy_clip(maintext)
{
 maintext = String(maintext)
 if (window.clipboardData)
   window.clipboardData.setData(&quot;Text&quot;, maintext);
 else if (window.netscape)
  {
   try
    {
     netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
     var gClipboardHelper = Components.classes[&quot;@mozilla.org/widget/clipboardhelper;1&quot;].
     getService(Components.interfaces.nsIClipboardHelper);
     gClipboardHelper.copyString(maintext);
    }
   catch(err)
    {
     alert (&quot;Clipboard copying error: &quot; + err); return false
    }
  }
 return true;
}
</pre>
<p>Затем, уже используем дополнительные функции для конкретных типов структуры DOM документа HTML:</p>
<pre class="brush: jscript;">function copyObjText(obj)
{
 copy_clip(document.all ? obj.innerText : obj.textContent)
 return false
}

function copyTitleInLink(obj)
{
 copy_clip(obj.title)
 return false
}</pre>
<p>А теперь, если нам надо скопировать в буфер значение поля title у ссылки типа <code>&lt;a title="что то" href="http://..."&gt;&lt;/a&gt;</code>, то делаем так:<code>&lt;a title="что то" onclick="return copyTitleInLink(this)" href="http://..."&gt;</code> Функция copyObjText может копировать текстовое поле тага textarea, например. Также, можно написать другой код для копирования любой информации из вашей страницы &#8211; очень удобно для автоматизации работы с ajax приложениями.</p>
<p>Вот, собственно и все! <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/06/12/how-copy-clipboard-firefox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Вышел WordPress 2.9</title>
		<link>http://blog.perlover.com/2009/12/22/new-wordpress-2-9/</link>
		<comments>http://blog.perlover.com/2009/12/22/new-wordpress-2-9/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 20:53:23 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=681</guid>
		<description><![CDATA[Оригинал на английском Вот некоторые улучшения: Глобальное Undo &#8211; если вы что-то удалили &#8211; пост или комментарий, вы всегда можете их вернуть. Встроенный редактор картинок &#8211; можно кропить, поворачивать, шкалировать их. Теперь можно ставить за раз сразу хоть 10 плагинов. Легкая вставка Embeded Video (YouTube и т.п..) А также много чего хорошего по мелочам. Подробности [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wordpress.org/development/2009/12/wordpress-2-9/" target="_blank">Оригинал на английском</a></p>
<p>Вот некоторые улучшения:</p>
<ul>
<li>Глобальное Undo &#8211; если вы что-то удалили &#8211; пост или комментарий, вы всегда можете их вернуть.</li>
<li>Встроенный редактор картинок &#8211; можно кропить, поворачивать, шкалировать их.</li>
<li>Теперь можно ставить за раз сразу хоть 10 плагинов.</li>
<li>Легкая вставка Embeded Video (YouTube и т.п..)</li>
</ul>
<p>А также много чего хорошего по мелочам. Подробности все тут же &#8211; на <a href="http://wordpress.org/development/2009/12/wordpress-2-9/" target="_blank">английской страничке блога</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2009/12/22/new-wordpress-2-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Каков % пользователей с JavaScript?</title>
		<link>http://blog.perlover.com/2009/12/18/javascript-enabled-users/</link>
		<comments>http://blog.perlover.com/2009/12/18/javascript-enabled-users/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 08:50:55 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=671</guid>
		<description><![CDATA[На своих нескольких проектах уже замечал неоднократно такую статистику &#8211; по моим данным, только 70-73% рядовых пользователей интернета имеют включеную поддержку JavaScript. Сразу хочу заметить, что не Java, а JavaScript! Делаю эту поправку потому, что некоторые ошибочно думают, смотря в Google Analytics или в данные некоторых других счетчиков в  колонку Java (там, как правило, цифры [...]]]></description>
			<content:encoded><![CDATA[<p>На своих нескольких проектах уже замечал неоднократно такую статистику &#8211; по моим данным, только 70-73% рядовых пользователей интернета имеют включеную поддержку <a href="http://ru.wikipedia.org/wiki/JavaScript" target="_blank">JavaScript</a>. Сразу хочу заметить, что не <a href="http://ru.wikipedia.org/wiki/Java" target="_blank">Java</a>, а JavaScript! Делаю эту поправку потому, что некоторые ошибочно думают, смотря в <a href="http://www.google.com/analytics/" target="_blank">Google Analytics</a> или в данные некоторых других счетчиков в  колонку Java (там, как правило, цифры за 90%). А ведь <strong>счетчики сами работают на JavaScript</strong>, и визит посетителя <strong>с отключенным JavaScript они просто не зафиксируют</strong>!</p>
<p><strong>Как я посчитал эти цифры?</strong> Возьмем, к примеру логи Apache сервера. Они показывают сколько реально было загрузок какой либо страницы. Берем данные о загрузке страницы из этих логов -V1, затем смотрим, сколько нам посчитал счетчик, например Google Analytics &#8211; V2 (я обсчитывал статистику даже своими JavaScript счетчиками на основе <a href="http://ru.wikipedia.org/wiki/Ajax" target="_blank">Ajax</a>). V1 &#8211; сколько всего смотрело людей, а V2 &#8211; у скольки включен скрипт. V2 всегда будет меньше V1, и если посчитать по формуле <strong>V2/V1*100%, то получится 70-73%</strong>. Проверьте сами! <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Конечно, могут возразить &#8211; боты и все такое… Но я замерял на разных проектах &#8211; на известных и нет, и из разных источников. Цифры всегда были примерно одинаковые. Не верю, что везде процент ботов одинаковый!</p>
<p>Так что <strong>помните об этом</strong>, когда создаете страницу, работающую только на чистом JavaScript коде!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2009/12/18/javascript-enabled-users/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>О TrackBack спаме</title>
		<link>http://blog.perlover.com/2009/11/30/about-trackback-spam/</link>
		<comments>http://blog.perlover.com/2009/11/30/about-trackback-spam/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 09:22:17 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[Начинающим]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[анти-спам]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=536</guid>
		<description><![CDATA[Повадился некто, с IP 94.243.5.3 спамить мой блог через TrackBack... Ох уж эти спамеры... Поставил SI CAPTCHA - спам в комменты прекратился, но ведь нет! Нашли они новую лазейку (о ней так то давно известно, но я не думал, что WordPress TrackBack комменты будет публиковаться без моего одобрения). Итак, немного о TrackBack спаме сейчас...]]></description>
			<content:encoded><![CDATA[<h3>Побуждение к действию</h3>
<p>Повадился некто, с IP <a href="http://whois.domaintools.com/94.243.5.3" target="_blank">94.243.5.3</a> спамить мой блог через TrackBack… Ох уж эти <a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B0%D0%BC%D0%B5%D1%80%D1%8B" target="_blank">спамеры</a>… Поставил <a href="http://wordpress.org/extend/plugins/si-captcha-for-wordpress/" target="_blank">SI CAPTCHA</a> &#8211; спам в комменты прекратился, но ведь нет! Нашли они новую лазейку (о ней так то давно известно, но я не думал, что <a href="http://codex.wordpress.org/Introduction_to_Blogging#Trackbacks" target="_blank">WordPress TrackBack</a> комменты будет публиковаться без моего одобрения). Итак, немного о <a href="http://tokarevs.ru/2009/01/10/295.html" target="_blank">TrackBack спаме</a> сейчас.</p>
<h3><span id="more-536"></span>Виды комментариев</h3>
<p>В WordPress есть два вида комментирования ваших постов. Обычный комментарий &#8211; если комментирование открыто, то спам туда приходит, замаскированный под комментарий. С линками и прочей фигней. Борьба с ним &#8211; плагин <strong><a href="http://wordpress.org/extend/plugins/si-captcha-for-wordpress/" target="_blank">SI Captcha</a></strong>. Мне очень помог &#8211; теперь спама там нет. И плюс премодерирование &#8211; комменты не попадают сразу на сайт, я их апрувлю. Но если их написал уже человек, ранее апрувленный мной &#8211; комменты публикуются сразу.</p>
<h3>Что такое TrackBack?</h3>
<p>Второй тип &#8211; <a href="http://ru.wikipedia.org/wiki/Trackback" target="_blank">trackback</a> (перевод: «оповещения с других блогов» или «уведомления и обратные ссылки»). Это такая фича WordPress, которая публикует коммент, сгенерерированный другим сайтом, который опубликовал ссылку на мой пост (статью). Это такой протокол, который говорит вашему блогу &#8211; «Привет, я такой то сайт, я поставил на вас ссылку и упомянул о вас в моем посте по адресу такому-то. Вот выдержка моего текста с ссылкой на вас».  Ваш блог принимает эти данные, и помещает коммент-trackback в вашем посте, на который ссылаются, с выдержкой текста с того сайта, где на вас ссылаются, и адресом на них. Эти trackback комментарии сразу попадают на сайт, и их легко подделать, чем спамер с IP адреса 94.243.5.3 успешно пользовался. Опять же, я могу, как с комментариями, отключить это совсем, либо разрешить. Отключить &#8211; не мой способ, все таки мне интересно знать и поощрять тех, кто на меня ссылается и ставить на них обратные ссылки в trackback комментах. Кстати, кому интересно, там запущен Wep-Pro 2.0 &#8211; админка управления сайтом. Для любителей поламать &#8211; <a href="http://94.243.5.3/" target="_blank">welcome</a> <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Но я немного отвлекся…</p>
<h3>Борьба со спамерами <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h3>
<p>Итак, для борьбы в WordPress есть такой плагин &#8211; <strong><a href="http://wordpress.org/extend/plugins/simple-trackback-validation/" target="_blank">Simple Trackback Validation</a></strong>. Он делает две простые вещи &#8211; проверяет <a href="http://ru.wikipedia.org/wiki/IP_%D0%B0%D0%B4%D1%80%D0%B5%D1%81" target="_blank">IP адрес</a>, с которого шел запрос на trackback с IP адресом сайта, который присутствует в ссылке авто-коммента. Если они равны &#8211; уже 90%, что это не спам. И второе &#8211; он идет на страницу, которая указана в трекбеке, и ищет там ссылку на наш блог. Если находит &#8211; то тем более это не спам. Теоретически все это должно работать. Практически &#8211; время покажет <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Проверочка</h3>
<p>Напоследок &#8211; есть <a href="http://www.optiniche.com/blog/117/wordpress-trackback-tutorial/" target="_blank">пост в одном блоге</a>, где можно проверить, как работают trackback-и (test trackbacks <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ). Сейчас я поставлю линк на ту статью, а автор того блога увидит trackback на него и может быть, он одобрит мой трекбэк. В ответ, теоретически, после этого, наверное у меня появится trackback коммент, что на меня там поставили ссылку. Вообщем, проверим <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>TrackBack на этот пост &#8211; welcome!</h3>
<p>Если вы сошлетесь на меня в своем блоге и вызовете trackback &#8211; на вас также поставится ссылка через trackback и я вам буду признателен за это <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Только ваш трэкбэк у меня прежде проверит вышеуказанный плагинчик. Удачи вам в блогосфере! <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2009/11/30/about-trackback-spam/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Как русифицировать англоязычные темы под WordPress</title>
		<link>http://blog.perlover.com/2009/11/28/themes-english-to-russian/</link>
		<comments>http://blog.perlover.com/2009/11/28/themes-english-to-russian/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 10:02:27 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=382</guid>
		<description><![CDATA[Захотелось мне избавиться от английских фраз в своей теме WordPress-а. Тема изначальна не работала для русского языка &#8211; автор ее не русифицировал, так как пока никто на возжелал в этом ему помочь (я ему отправил файлы переводя для этой темы, посмотрим, как оперативно он добавит). Я, не зная изначально, как это делается, правил исходные коды [...]]]></description>
			<content:encoded><![CDATA[<p>Захотелось мне избавиться от английских фраз в своей теме WordPress-а. Тема изначальна не работала для русского языка &#8211; автор ее не русифицировал, так как пока никто на возжелал в этом ему помочь (я ему отправил файлы переводя для этой темы, посмотрим, как оперативно он добавит).</p>
<p>Я, не зная изначально, как это делается, правил исходные коды темы на PHP. Все бы ничего, но меня это достало, и я решил разобраться, как же это делается цивилизованно. Итак, мои инструкции, скорее всего, помогут русифицировать любую тему, которую вы себе поставили («скорее всего» потому, что не знаю я всю кухню русификации пока)</p>
<h3><span id="more-382"></span>Технические тонкости</h3>
<p>Этот параграф вы можете пропустить, если технические детали вам не интересны. Но я решил о них упомянуть, чтобы было более понятно, как все работает изнутри. Итак, грамотно запрограммированная тема (например, применение <a href="http://codex.wordpress.org/%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_%D0%BF%D0%BE_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F%D0%BC/_2" target="_blank">&#8216;__&#8217; и &#8216;_e&#8217; функций</a> PHP везде, где надо иметь мульти-языковую поддержу) имеет языковую поддержку на уровне стандарта <a href="http://www.gnu.org/software/gettext/manual/html_node/index.html" target="_blank">gettext</a>. Что это значит? Изнутри это выглядит так: программист пишет программу, а там, где он использует фразы интерфейса, он вставляет строки через вызов определенных функций. Например, __(«Read more …»). Фразы на английском. А потом натравливает на свои исходные коды программку, которая формирует файл с расширением PO. В этом файле есть фраза «Read more…», а под ней можно указать фразу для другого языка. Потом файл PO с помощью специальной программы преобразуется в бинарный (расширение MO), понятный специальной библиотеке, а та в свою очередь используется той самой функцией &#8216;__()&#8217;. И тогда, когда идет вызов __(«Read more …&raquo;), на самом деле идет подмена этого текста на переведенный, который был в файлике PO, для того языка, который установлен в WordPress.</p>
<h3>Где расположены файлы перевода…</h3>
<p>Для каждого языка существуют два файлика &#8211; <a href="http://codex.wordpress.org/I18n_for_WordPress_Developers" target="_blank">*.PO &amp; *.MO</a>. Например, для русского это ru_RU.po &amp; ru_RU.mo. Итак, темы храняться в папке /wwws/директория_вашего_сайта/wp-content/themes/имя_темы, а директория с файлами перевода хранятся в подпапке languages/. Если ваш WordPress настроен на русский язык (файлик wp-config.php в корне блога имеет установку &laquo;define (&#8216;WPLANG&#8217;, &#8216;ru_RU&#8217;);&raquo;), а вы видите свою тему не в русском исполнении, значит этих файликов нет (ru_RU.po &amp; ru_RU.mo в директории /wwws/директория_вашего_сайта/wp-content/themes/имя_темы/languages). Для руссификации &#8211; ваша задача создать их. Как это сделать?</p>
<h3>Как сделать перевод?</h3>
<p>Вам нужен файл *.PO для английской темы (default.po). Скорее всего, в этой папке будут файлы default.po &amp; default.mo. Ваша задача &#8211; сделать копии default.* файлов, но с именем ru_RU.*, затем отредактировать файл ru_RU.po, скомпилировать его с помощью специальной программы в ru_RU.mo и залить их в папку languages. И все!</p>
<h3>Где взять софт?</h3>
<p>Но как отредактировать и скомпилировать? Поскольку gettext стандарт, как я сам понял, это целый стандарт для open-source разработок, он широко распространен. Для него разработано много инструментов, но я попробовал и вам рекомендую <a href="http://www.poedit.net/" target="_blank">Poedit</a>. Эта простая оболочка для редактирования PO файлов и их компилирования сразу в MO файлы. Она есть и под <a href="http://www.poedit.net/download.php#win32" target="_blank">Windows</a>, и под <a href="http://www.poedit.net/download.php#linux" target="_blank">Linux</a>.</p>
<p>Итак, скачиваем Poedit, ставим, открываем ru_RU.po (копию default.po), редактируем часть строк или все, если у вас хватит терпения, сохраняем и заливаем в директорию, указанную выше. После этого у вас должна работать ваша тема на русском языке.</p>
<h3>Рекомендуется для прочтения:</h3>
<ol>
<li>Стандарт <a href="http://www.gnu.org/software/gettext/manual/html_node/index.html" target="_blank">gettext (GNU проект)</a></li>
<li><a href="http://codex.wordpress.org/I18n_for_WordPress_Developers" target="_blank">Локализация WordPress изнутри (англ. версия)</a></li>
<li>Английская статья <a href="http://codex.wordpress.org/Translating_WordPress" target="_blank">Translating WordPress</a> и <a href="http://codex.wordpress.org/Translating_WordPress#Translation_Tools" target="_blank">инструменты для PO файлов</a></li>
<li><a href="http://www.wordpresser.ru/temy/20-luchshix-svezhix-tem-dlya-wordpress.html" target="_blank">20 лучших свежих тем для WordPress</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2009/11/28/themes-english-to-russian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подборка расширений для АВМа</title>
		<link>http://blog.perlover.com/2009/11/27/addon-collection-awms/</link>
		<comments>http://blog.perlover.com/2009/11/27/addon-collection-awms/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 10:16:02 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Add-ons]]></category>
		<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=430</guid>
		<description><![CDATA[Один из читателей моего блога любезно натолкнул меня на мысль сделать подборку расширений через стандартный инструментарий Mozilla &#8211; личные коллекции расширений. Только сейчас узнал, что оказывается, можно создавать коллекции расширений на сайте addons.mozilla.org, и делится этим списком. Причем в каждой отдельной коллекции можно вставлять свои комментарии для каждого плагина. Вот пробный камень &#8211; Коллекция Add-on [...]]]></description>
			<content:encoded><![CDATA[<p>Один из <a href="/2009/11/21/open-bookmarks-in-new-tab/comment-page-1/#comment-29">читателей моего блога</a> любезно натолкнул меня на мысль сделать подборку расширений через стандартный инструментарий Mozilla &#8211; личные коллекции расширений. Только сейчас узнал, что оказывается, <strong>можно создавать коллекции расширений</strong> на сайте <strong><a href="https://addons.mozilla.org/ru/firefox/collections/editors_picks" target="_blank">addons.mozilla.org</a></strong>, и делится этим списком. Причем в каждой отдельной коллекции можно вставлять свои комментарии для каждого плагина.</p>
<p>Вот пробный камень &#8211; <strong><a href="https://addons.mozilla.org/ru/firefox/collection/perlover-awms" target="_blank">Коллекция Add-on расширений для АВМов и вебмастеров</a></strong>. <span id="more-430"></span>АВМ (Affiliate WebMasters, для тех, кто не в курсе <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) &#8211; это вебмастера, работающие в области зарабатывания денег, которые торгуют трафиком, делают трейды с сайтами и работают с affiliate programs.</p>
<p>В дальнейшем я сделаю подборку под другие задачи пользователей.</p>
<p>Сейчас про расширения, которые отсутствуют в центральном репозитарии Mozilla, но их я также бы посоветовал поставить АВМам:</p>
<ul>
<li><strong><a href="/2009/10/27/speedup-your-firefox/">FastererFox</a></strong> &#8211; ускоритель Firefox</li>
<li><strong><a href="http://redirectremover.mozdev.org/" target="_blank">Redirect Remover</a></strong> &#8211; меняет out линки на CJ/TGP сайтах на линки галлер (убирает редирект). Удобен для проверки трейдов. Работает с Base64 линками.</li>
<li><strong><a title="Roboform - все о нем, статья и где скачать" href="/2009/12/02/roboform/">Roboform</a></strong> &#8211; одно из главных расширений, что должно стоять у каждого (помнит все пароли ко всем сайтам, генерит пароли и т.п..)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2009/11/27/addon-collection-awms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
