<?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; webmaster</title>
	<atom:link href="http://blog.perlover.com/tag/webmaster/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>Fri, 20 Jan 2012 15:23:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Несколько полезных jQuery модулей от Odyniec</title>
		<link>http://blog.perlover.com/2011/09/27/jquery-plugins-from-odyniec/</link>
		<comments>http://blog.perlover.com/2011/09/27/jquery-plugins-from-odyniec/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 11:02:12 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[CJ/TGP]]></category>
		<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Sony Ericsson]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1416</guid>
		<description><![CDATA[Сегодня посмотрел страничку одного разработчика по ник &#8212; имени Odyniec. Очень понравились его разработки. Спешу поделиться с вами imgAreaSelect &#8212; jQuery плугин для кропинга (cropping images) картинок (точнее, выделение области &#8212; кропинг делайте сами ) &#8212; (пример) imgZoom &#8212; Красивое листание картинок с анимацией, ротацией и приближением из далека (пример) selectList &#8212; мультивыборочный select лист, [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня посмотрел страничку одного разработчика по ник &#8212; имени Odyniec. <strong>Очень понравились его разработки</strong>. Спешу поделиться с вами <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li><strong><a href="http://odyniec.net/projects/imgareaselect/" target="_blank">imgAreaSelect</a></strong> &#8212; jQuery плугин <strong>для кропинга</strong> (cropping images) картинок (точнее, выделение области &#8212; кропинг делайте сами <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) &#8212; (<strong><a href="http://odyniec.net/projects/imgareaselect/examples.html" target="_blank">пример</a></strong>)<strong></strong></li>
<li><strong><a href="http://odyniec.net/projects/imgzoom/" target="_blank">imgZoom</a></strong> &#8212; Красивое <strong>листание картинок с анимацией</strong>, ротацией и приближением из далека (<strong><a href="http://odyniec.net/projects/imgzoom/" target="_blank">пример</a></strong>)<strong></strong></li>
<li><strong><a href="http://odyniec.net/projects/selectlist/" target="_blank">selectList</a></strong> &#8212; <strong>мультивыборочный select лист</strong>, показывающий выбранные опции отдельно с возможностью легкого их удаления (<strong><a href="http://odyniec.net/projects/selectlist/examples.html" target="_blank">пример</a></strong>)</li>
</ul>
<p>Также, автор написал <strong>несколько полезных статей</strong> по CSS (как создать &#171;деревья&#187;, &#171;табы&#187;)</p>
<p>Также, автор написал несколько модулей на perl для <strong><a href="http://search.cpan.org/dist/Dancer/" target="_blank">Dancer</a></strong> (его сайт также <strong>работает под Dancer</strong>): <strong><a href="http://search.cpan.org/dist/Dancer-Plugin-DebugToolbar/" target="_blank">Dancer::Plugin::DebugToolbar</a></strong>, <strong><a href="http://search.cpan.org/dist/Dancer-Plugin-DirectoryView/" target="_blank">Dancer::Plugin::DirectoryView</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/09/27/jquery-plugins-from-odyniec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Немного о супер направлениях в Web на Perl</title>
		<link>http://blog.perlover.com/2011/07/19/perl-plack-psgi/</link>
		<comments>http://blog.perlover.com/2011/07/19/perl-plack-psgi/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 10:15:38 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[mod_perl]]></category>
		<category><![CDATA[Plack]]></category>
		<category><![CDATA[PSGI]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[сисадминам]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1328</guid>
		<description><![CDATA[Немогу не поделиться своими выводами об изучении нескольких новых технологий в Perl и в Web программировании. Немного предистории. Я сам программирую динамические веб сайты (CGI) только на Perl. Никогда не использовал PHP. Это не только потому, что я фанат Perl, но и дань эффективности &#8212; под Perl много модулей, много возможностей, и при грамотном подходе [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Немогу не поделиться своими выводами</strong> об изучении нескольких <strong>новых технологий в Perl и в Web программировании</strong>. Немного предистории.</p>
<p>Я сам программирую <strong>динамические веб сайты</strong> (CGI) только <strong>на Perl</strong>. Никогда не использовал PHP. Это не только потому, что я фанат Perl, но и дань эффективности &#8212; под Perl много модулей, много возможностей, и при грамотном подходе сайты на Perl будут работать быстрее PHP &#8212; ведь Perl код после компиляции хранится в памяти в виде байт кода (типа &#171;<a href="http://en.wikipedia.org/wiki/P-code_machine" target="_blank">Пи кода</a>&#187; кода в Pascal). А если знаешь Perl, то и разработка может идти гораздо быстрее.<span id="more-1328"></span></p>
<p><strong>До недавнего времени я использовал</strong> технологию <strong>Apache + mod_perl + Embperl</strong>, а сам внешний WWW сервер имел фронтенд -Apache + mod_accel либо еще лучший вариант &#8212; nginx  (оба &#8212; реализуют проксирование). Лет 8 назад это было отличным решением, когда я начал использовать эту технологию. Но сейчас она устарела и сложна в использовании.</p>
<p>Сейчас я <strong>всем программерам на Perl</strong>, пишущим приложения под Web, <strong>очень рекомендую обратить внимание</strong> на следующие технологии в Perl, которые, несомненно эффективнее и проще, чем вышеуказанная связка:</p>
<ul>
<li><strong><a href="https://github.com/miyagawa/psgi-specs/blob/master/PSGI.pod" target="_blank">PSGI</a></strong> технология, а также ее реализация через модули <strong><a href="https://github.com/miyagawa/Plack" target="_blank">Plack</a></strong></li>
<li><strong><a href="http://github.com/miyagawa/Starman" target="_blank">Starman</a></strong> &#8212; perl сервер, с режимами pre-fork, контроля количества процессов и многое другое. Вообщем, почти как apache.</li>
<li><strong><a href="http://dancer.sukria.net/" target="_blank">Dancer</a></strong> &#8212; отличное решение для реализации своих PSGI приложений, но с более простым программированием.</li>
</ul>
<h3>Сейчас немного подробнее</h3>
<p>PSGI &#8212; недавно придуманный стандарт для Perl, который реализует простой и понятный программисту подход &#8212; вместо написания CGI скриптов и всей этой ваши с передачей параметров серверам и т.п.., очень умный человек (<a href="http://bulknews.typepad.com/" target="_blank">Tatsuhiko Miyagawa</a>) придумал (правда взяз за основу наработки из Python) простой подход &#8212; любое приложение (будь то скрипт или группа скриптов)  оформляется в виде обычной perl функции, которая чётко принимает и возвращает определенные параметры: принимает ссылку на хеш, в котором есть и заголовки HTTP, и служебные заголовки (вместо старых в CGI переменных окружения), а возвращает ссылку на массив из трех элементов: HTTP ответ, ссылку на массив заголовков ответа и ссылку на массив данных (HTTP BODY). Просто и со вкусом! Причем, можно возвращать и ссылку на код функции для реализации stream потоков. То есть <strong>в PSGI можно реализовать любой вид сервера</strong> &#8212; <strong>простой</strong>, отдающий <strong>потоковые</strong> данные (типа видео, например), либо удерживающее соединение (<strong>Comet</strong> технология). Но и это не все. Прелесть такой структуры функции PSGI в том, что одна функция может вызывать другую PSGI, но при этом делающее что-то своё. То есть другими словами &#8212; стек вызова. Называется это &#8212; middleware. А <strong>Plack служит клеем</strong> &#8212; имеет в своем составе сервис функции для формирования такого стека.</p>
<p>И, конечно же, если подумать, <strong>нужен сам сервер</strong>, который будет принимать TCP соединения, парсить заголовки и формировать хеш для PSGI, вызывать его и отдавать ответ. И таких серверов написано уже много. <strong>Один из них &#8212; Starman</strong>. Он, практически, выполняет те же функции, что выполняла бы связка Apache + mod_perl, только гораздо эффективнее, так как он проще, и нет тех &#171;костылей&#187;, которые были приделаны в apache &amp; mod_perl для их функционирования.</p>
<p><strong>А что же делает Dancer?</strong> Он называется типом <strong>Frameworks</strong> в терминологии Plack. Он для сервера Starman работает как PSGI, но вы сами пишите на perl через предоставляемые <strong>Dancer-ом функции, которые облегчают вам жизнь</strong>. Dancer сам парсит входные данные от Starman, формирует их в удобный вид для обработки в perl и также формирует обратные заголовки и данные. К тому же, Dancer может работать без Starman &#8212; он имеет свой простой вебсервер. Также, раз Dancer может работать как PSGI функция, его можно вызывать из под любого сервера Plack типа, а также на нем можно написать свои middleware. Вообщем, тут вам как ваша фантазия и профессионализм подскажет.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/07/19/perl-plack-psgi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox 5.* &#8212; обновлённые плагины&#8230;</title>
		<link>http://blog.perlover.com/2011/06/22/firefox-5-some-patched-addons/</link>
		<comments>http://blog.perlover.com/2011/06/22/firefox-5-some-patched-addons/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 16:02:38 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Add-ons]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[patches]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[urls]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[Автоматизация труда]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1310</guid>
		<description><![CDATA[Уже после написания этой заметки нашел более подходящий способ запуска несовместимых Add-ons &#8212; читайте здесь. Вместе с Firefox 5 перестали работать некоторые мои любимые плагины. Я постарался оперативно обновить их и выложил у себя на блоге, так как авторы этих Add-ons не спешат их обновлять для Firefox 5.*. Я взял оригинальные версии и только подправил [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #ff0000;">Уже после написания</span></strong> этой заметки <strong><a href="/2011/08/12/run-incompatible-add-ons-firefox/">нашел более подходящий способ запуска несовместимых Add-ons &#8212; читайте здесь.<br />
</a></strong></p>
<p><strong>Вместе с Firefox 5 перестали работать</strong> некоторые мои любимые плагины. Я <strong>постарался оперативно обновить</strong> их и <strong>выложил у себя на блоге</strong>, так как авторы этих Add-ons не спешат их обновлять для Firefox 5.*. Я взял оригинальные версии и <strong>только подправил файлики install.rdf</strong>, где указал любую максимальную версию. Вот эти расширения (мои патченные файлы &#8212; внутри статеек):</p>
<ul>
<li><strong><a href="http://blog.perlover.com/2009/11/05/copy-all-urls/" target="_blank"><span style="color: #ff0000;">Copy All Urls</span></a></strong> (копирует в буфер линки открытых табов, а также открывает табы с линками из буфера)</li>
<li><strong><a href="http://blog.perlover.com/2010/08/03/copy-plain-text-doesn-t-work-freezes/" target="_blank"><span style="color: #ff0000;">Copy Plain Text</span></a></strong> (копирование текста без аттрибутов форматирования, нужен для <strong><a href="http://blog.perlover.com/2009/10/23/one-click-copy-search-save-images/" target="_blank">Auto Copy</a></strong> &#8212; очень хорошая &#171;связка&#187; плагинов для оптимизации работы с web страницами)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/06/22/firefox-5-some-patched-addons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Прикрутил AddThis и Twitter</title>
		<link>http://blog.perlover.com/2011/02/09/added-addthis-twitter/</link>
		<comments>http://blog.perlover.com/2011/02/09/added-addthis-twitter/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 12:39:44 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Расслабуха :)]]></category>
		<category><![CDATA[Addthis]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1204</guid>
		<description><![CDATA[Прилепил на блог AddThis и Twitter. AddThis &#8212; штука для простого &#171;расшаривания&#187; страниц моего блога (то есть для тех, кто хочет поделиться УРЛ-ом моих страниц через какую либо социальную сеть, или даже просто добавить в закладки). Twitter &#8212; моя лента сообщений на Твиттере, которую веду уже несколько недель &#8212; в ней я буду пописывать то, [...]]]></description>
			<content:encoded><![CDATA[<p>Прилепил на блог <strong><a href="http://www.addthis.com/" target="_blank">AddThis</a></strong> и <strong><a href="http://twitter.com/perlover_here" target="_blank">Twitter</a></strong>. <strong>AddThis</strong> &#8212; штука для простого &#171;расшаривания&#187; страниц моего блога (то есть <strong>для тех, кто хочет поделиться УРЛ-ом моих страниц</strong> через какую либо социальную сеть, или даже просто добавить в закладки). <strong>Twitter</strong> &#8212; <strong>моя лента сообщений</strong> на Твиттере, которую веду уже несколько недель &#8212; в ней я буду пописывать то, что будет маловато для блога. <strong>Вы, имея Twitter</strong> аккаунт, <strong>можете оставлять отклики</strong> у себя, для самых интересных которых я сделаю ретвит <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Да, чуть не забыл! <strong>Заголовки новых статей блога транслируются в Twitter</strong> аккаунт. Поэтому, подписавшись на мой твитт (став фолловером), вы оперативно узнаете о чем-то новом у меня на блоге. Постараюсь скоро написать о Твиттере более подробно.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/02/09/added-addthis-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Еще немного о Roboform и LastPass</title>
		<link>http://blog.perlover.com/2010/12/31/roboform-vs-lastpass-some-info/</link>
		<comments>http://blog.perlover.com/2010/12/31/roboform-vs-lastpass-some-info/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 15:11:57 +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[FireFox]]></category>
		<category><![CDATA[Forms]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[LastPass]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[RoboForm]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[Автоматизация труда]]></category>
		<category><![CDATA[сисадминам]]></category>
		<category><![CDATA[Формы]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1101</guid>
		<description><![CDATA[Написал мне недавно суппорт, что они таки устранили баг, о котором я так долго писал! Надо же&#8230; Предложили мне протестировать новую версию (7.1.2). Но я так долго ждал (реально баг есть более года, но последний штурм на саппорт я осуществлял в августе 2010), что это мне надоело, терпеть, пока Firefox тормозит и зависает на сайтах [...]]]></description>
			<content:encoded><![CDATA[<p>Написал мне недавно суппорт, что они таки устранили баг, о котором я так долго писал! Надо же&#8230; Предложили мне протестировать новую версию (7.1.2). Но я так долго ждал (реально баг есть более года, но последний штурм на саппорт я осуществлял в августе 2010), что это мне надоело, терпеть, пока Firefox тормозит и зависает на сайтах с JavaScript, что удалил я этот косячный плагин, тем более, что 7-ая версия (в которой и устранен этот баг) для пользователей 6-ой версии снова стала платной (тут кстати, если помыслить, становится понятно, почему они так тянули с исправлением и исправили во вновь ставшей платной версии&#8230;). Теперь я перешел на LastPass<span id="more-1101"></span>, почти к нему привык, и даже заплатил за Premium account. И далее, я сейчас расскажу о маленьких моих открытиях о LastPass. А Робоформ, я пожалуй, тестировать уже не буду. Если бы 7-ая версия осталась бы для купивших 6-ую &#8212; бесплатной, тогда может быть я попробовал бы вернуться обратно.</p>
<p>Итак, LastPass точно хранит все таки свою базу в одном файле на диске. То есть, в случае недоступности сайта LastPass, или для любителей резервировать свои пароли &#8212; доступ есть. Папка &#8212; &#171;C:\Documents and Settings\&lt;User&gt;\Local Settings\Application Data\LastPass\&#187; и там файл с расширением sxml. Также, хорошая новость еще в том, что на сайте LastPass есть программка, которая может читать этот файл локально, без работы с интернет &#8212; LastPass Pocket. Все это &#8212; очень хорошо <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Также, купив Премиум аккаунт, можно использовать LastPass на мобильных устройствах. Я использую под Android. Те, кто тоже юзают Android, вот наводки &#8212; LastPass можно поставить отдельно, но тогда ходить по сайтам через его же броузер, что не очень хочется (не выключить JavaScript, не понятно, как там обновляется сам броузер и т.п..), либо можно использовать стандартный броузер через букмарклеты (закладки, вместо URL-а которых &#8212; JavaScript код &#8212; вы кликаете в закладках закладки LastPass на нужном сайте для входа и он уже вставляет в страницу сайта логин-окно). Есть и еще способ &#8212; поставить броузер Delphin и к нему расширение LastPass (самый оптимальный вариант). Но повторюсь, все это платно, но не дорого &#8212; $11 в год за аккаунт (заметьте, не за комп, не за лицензию, а за аккаунт &#8212; то есть за $11 вы можете поставить на все свои компы и мобильники). Выгода от Premium на компе тоже есть &#8212; улучшенная защита &#8212; можно защитить вход кодовой таблицей (матрица букв) &#8212; тогда заход с новых компов  (IP адреса точно) будет запрашивать, помимо имени и пароля, еще буквы из таблицы. Минус такого подхода &#8212; мобильные версии не поддерживают такой таблицы. Но можно включить кодовую таблицу для компов, а для мобильников составить список разрешенных устройств через тот же аккаунт в компьютере. Но при кодовой таблице LastPass Pocket будет требовать коннекта к сайту для проверки кодов.</p>
<p>Вот вкратце те тонкости, которые я узнал, поработав с LastPass. С Наступающим Новым 2011 годом!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/12/31/roboform-vs-lastpass-some-info/feed/</wfw:commentRss>
		<slash:comments>1</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-ую ошибку сервера. Для тех, кто не знает что это &#8212; это ошибка, когда на стороне сервера программа выполняет ошибку и документ не может быть сформирован. Другими словами, Google Webmaster Tools сбоит на уровне сервера, то есть где-то там, в глубине [...]]]></description>
			<content:encoded><![CDATA[<p>Впервые в жизни увидел, как сервис Google (Google Webmaster Tools) выдавал мне несколько раз 500-ую ошибку сервера. Для тех, кто не знает что это &#8212; это ошибка, когда на стороне сервера программа выполняет ошибку и документ не может быть сформирован. Другими словами, Google Webmaster Tools сбоит на уровне сервера, то есть где-то там, в глубине &#171;датацентров&#187; Гугля программисты что-то где-то накосячили. Я такого раньше не видел &#8212; сырые программы, они видимо, тщательно оттачивают перед размещением их &#171;для всех&#187;. А тут вот за день (6 августа 2010) &#8212; 5 или 6 раз, и всегда в том месте, когда я &#171;авторизую&#187; свой сайт при добавлении в сервис. Это говорит о том, что даже такой крупный гигант, как Гугль, иногда делает ляпы <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>Это должно быть в цитатнике</title>
		<link>http://blog.perlover.com/2010/07/20/stopping-fucked-spam/</link>
		<comments>http://blog.perlover.com/2010/07/20/stopping-fucked-spam/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:21:33 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[анти-спам]]></category>
		<category><![CDATA[о жизни]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=927</guid>
		<description><![CDATA[Пришел тут ко мне сегодня коммент на одну мою статью. Что то в этом комменте мне показалось нехорошим. Странный он был какой-то&#8230; Он такой и был: &#171;Это должно быть в цитатнике&#187;. Ну думаю, что за цитатник такой. Давай рыть и искать, но недолго, правда. Была в уме мысляшка, что спам это хитрый Так и оказалось. [...]]]></description>
			<content:encoded><![CDATA[<p>Пришел тут ко мне сегодня коммент на одну мою статью. Что то в этом комменте мне показалось нехорошим. Странный он был какой-то&#8230; Он такой и был: &#171;Это должно быть в цитатнике&#187;. Ну думаю, что за цитатник такой. Давай рыть и искать, но недолго, правда. Была в уме мысляшка, что спам это хитрый <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Так и оказалось. Фраза то URL-а не имеет, но зато бот сгенерировал имя и поставил нужный линк.</p>
<p>Оказывается, если погуглить на фразу именно в кавычках (чтобы порядок слов искался именно такой), то найдете кучу буржуйских блогов, где все на английском, зато комменты все на русском и многие из них такие <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Правда там капчей нет почти нигде. А у меня есть. И ведь надо же, спам как то через капчу пролез. Видимо умеют ее распознавать ботами&#8230; Правда есть способ распознавать капчи любые автоматом. Простой и эффективный. Только для этого нужен популярный сайт, чтобы он был ваш. Думаю, сообразительные уже догадались, как <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2010/07/20/stopping-fucked-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rsync &#8212; быстрый резерв + быстрый перенос сайтов</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 &#8212; простая утилита копирования. А раз простая, то вряд ли я получу от нее много толку. Поэтому я [...]]]></description>
			<content:encoded><![CDATA[<p>Когда-то давно, для резервирования, я использовал такие, казалось бы, незаменимые утилиты, как tar или pax. Я слышал в то время про rsync, но не представлял себе, как она в точности работает, поэтому я ощибочно полагал, что rsync &#8212; простая утилита копирования. А раз простая, то вряд ли я получу от нее много толку. Поэтому я продолжал и продолжал пользоваться tar или pax, затем копировал по scp эти архивы, там распаковывал и т.п.. Я даже использовал find затем, чтобы докопировать файлы, которые изменились за последние сутки. <strong>Эх, жаль, что я столько много истратил времени на копирование, ведь была rsync!</strong></p>
<p><span id="more-826"></span>Итак, <strong>что же это за такая rsync?</strong> Это действительно, утилита рекурсивного копирования (копирует все файлы и поддиректории) с одного хоста на другой, или даже внутри одной машины. На этом все ее отличие от, например, утилиты cp заканчивается. И вот тут самое интересное &#8212; она при копировании каждый файл или директории, которые копируем, проходит блоками, и отслеживает только изменения блоков в сравнении с уже скопированными блоками. Грубо говоря, <strong>она копирует только &#171;дельты&#187; файлов и директорий!</strong> Что это значит? Это значит, что второй, третий и так далее запуски этой программы на определенную цель (куда копировать) будут занимать гораздо меньше времени, операций копирования и передачи данных по сети при повторном копировании уже изменившихся файлов. Вот несколько примеров ее использования:</p>
<h3>1) Быстрый перенос баз данных (на примере SQL).</h3>
<p>Имеем два сервака &#8212; один рабочий A, второй Б &#8212; куда будем резервировать свои базы данных (там где нет работающего SQL). Тогда для резервирования <strong>можно периодически запускать rsync</strong> на сервере A, <strong>не прекращая работы SQL сервера</strong> (назовем это &#171;рабочим резервом&#187;). Но чтобы нам иметь полностью правильные базы в резервной директории сервера Б, нам надо временами останавливать SQL на серваке А, и пока там нет работаюшего SQL, делать повторное копирование (назовем это &#171;фиксированным резервом&#187;). Вот тут то rsync и пригождается! Во время &#171;рабочего резерва&#187; многие файлы успевают устареть, ведь SQL продолжает работать. Во время &#171;фиксированного резерва&#187; копируются только дельты с последнего запуска &#171;рабочего резерва&#187;. Если время между этими запусками мало, то дельты копируются очень быстро &#8212; на больших базах это может быть не более минуты, например. Для снижения времени простоя, надо просто выполнить повторный &#171;рабочий резерв&#187; прямо перед остановкой MySQL сервера. Плюсы такого способа &#8212; <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>(можно и на стороне А, но тогда надо поменять пути местами), куда копируем, запускаем команды копирования во время &#171;рабочего резерва&#187;</p>
<pre class="brush: bash; title: ; notranslate">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> &#8212; &#171;оторвать&#187; ввод/вывод от терминала. Это нам потребуется, когда мы захотим оставить запущенный &#171;резерв&#187; в фоновом режиме. Сразу мы не можем этого сделать (то есть не ставлю &#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> &#8212; выставить приоритет для процессора, а <a href="http://linux.die.net/man/1/ionice" target="_blank">ionice</a> &#8212; приоритет для операций при работе с диском &#8212; все приоритеты ставяться на понижение, чтобы продолжалась нормальная работа сервера. Опция <code>--delete</code> для rsync &#8212; удалять все файлы в целевой директории (от слово &#171;цель&#187;, target), которых нет в исходной (source). То есть, после копирования получим полностью равную директорию по содержанию.<br />
<strong>Слеш в конце исходной директории (</strong><code>/path/to/source/folder/</code><strong>)  &#8212; важная штука!</strong> Если в конце слеш &#8212; директория рассматривается rsync-ом как комплект директорий и файлов в ней для копирования, а если слеша нет &#8212; как один объект, целая директория со своим именем &#8212; в обоих случаях копирование рекурсивное, но если из примера убрать слеш в конце первого пути (сделать /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 для &#171;фиксированного резерва&#187;, а после окончания запускаем 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[Мобильники]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[мобильная связь]]></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 или рекламное объявление на столбе, и чтобы его потом можно было использовать в мобильнике (про столб, я конечно, загнул, но это вполне может быть стать широкоупотрибимым при поддержке сотовых телефонов). Оказывается, японцы давно уже придумали простой способ ввода информации в мобильник &#8212; <strong>квадратный штрихкод</strong> с информацией, который <strong>читается обычной камерой мобильника</strong>! И даже если ваш телефон не японский, вы можете легко добавить для него такую фишку &#8212; установить приложение. А некоторые мобильники умеют это уже делать прямо с завода <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-834"></span>Итак, имеем штрихкод &#8212; см. слева<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>. Это &#8212; адрес данной статьи. Запускаем некое приложение, которое читает QR-Codes,  наводим камеру на монитор, щелкаем кнопкой и спустя пару секунд &#8212; адрес у нас уже в телефоне. Из своего опыта и экспериментов, я хочу предложить вам следующие ссылки для установки приложений, читающих QR-Codes:</p>
<ol>
<li><strong><a href="http://i-nigma.mobi/" target="_blank">i-nigma.mobi</a></strong> &#8212; самое <strong>лучшее приложение</strong>, которое мне понравилось из нескольких протестированных мною &#8212; приятный интерфейс, оформление, хистори, возможность отправить через СМС отсканированный текст, нормальная работа с русскими буквами, понимает все форматы + может еще читать обычный линейный штрих-код <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> &#8212; Здесь вы <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>(&#171;карточки контактов&#187;) &#8212; для мобильника рекомендую выбрать тип 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>5</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, вы навярняка сталкивались с такой проблемой &#8212; как реализовать копирование в буфер обмена средствами JavaScript в Firefox. С Internet Explorer все понятно &#8212; Microsoft &#171;постаралась&#187;, чтобы все, кому не лень, могли читать и писать в буфер обмена средствами JavaScript (по правильному, это конечно же, не должен делать любой сайт &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p>Если вы программер под JavaScript, вы навярняка сталкивались с такой проблемой &#8212; как реализовать копирование в буфер обмена средствами JavaScript в Firefox. С Internet Explorer все понятно &#8212; Microsoft &#171;постаралась&#187;, чтобы все, кому не лень, могли читать и писать в буфер обмена средствами JavaScript (по правильному, это конечно же, не должен делать любой сайт &#8212; мало ли что у вас в буфере обмена на тот момент, например пароль&#8230;). А вот Firefox с его сильной защитой JavaScript, не позволяет любому сайту это делать. Как быть?</p>
<p><span id="more-771"></span>Маленький экскурс &#8212; Firefox позволяет делать копирование в буфер, но разрешает это выполнять либо в chrome приложениях (то есть установленным расширениям, или Add-ons, другими словами), либо подписанным цифровой подписью приложениям в jar архивах &#8212; но при этом, у вас в броузере должен быть установлен корневой сертификат того разработчика, кому вы доверили это делать. Поэтому, обычному сайтовому программеру, как может показаться, ничего не остается, как сгенерировать свой сертификат, попросить посетителя его скачать, а свои JavaScript скрипты упаковать в Jar архив и его подписать. При этом, конечно, при любом изменении кода надо заново будет проделывать: упаковка в Jar, подпись Jar архива (ведь код изменился, а значит и подпись надо менять)&#8230; Именно, по началу, я так и думал, и даже делал (ох и муторно это!). Но есть способ попроще и лучше, но он не такой правильный с точки зрения безопасности. Но он также, как и в случае сертификата, требует определенных действий со стороны пользователя &#8212; также, однократных (сделал и забыл). То есть, как никрути, а просто сделать сайт, который бы читал/писал в буфер Clipboard своего посетителя, не получиться &#8212; все равно потребуется участие посетителя сайта (оно и правильно &#8212; нефиг делать без спросу опасные вещи!).</p>
<p>Итак, все что нужно сделать пользователю сайта &#8212; однократно, и не только для вашего сайта, а в общем для всех сайтов &#8212; это разрешить броузеру &#171;спрашивать&#187; посетителя о том, можно ли исполнять расширенные действия такому то сайту или нет (по умолчанию &#8212; ничего не спрашивается и не исполняется). Если посетитель отвечает, что можно &#8212; броузер запоминает домен, для которого это разрешили, и затем, действует в соответствии с этим разрешением всегда. Если другой сайт захочет, например, поработать с вашим буфером обмена &#8212; броузер снова спросит вас и предупредит, но однократно для этого домена и так далее.</p>
<p>Итак, делаем в броузере: <strong>about:config</strong> в адресной строке, соглашаемся с предупреждением, если таковое есть и там ищем параметр <strong>signed.applets.codebase_principal_support</strong>, ставим его в <strong>true</strong>. Все! Теперь осталось написать JavaScript код, например, копирование текстового значения title ссылки в буфера обмена, например:</p>
<pre class="brush: jscript; title: ; notranslate">// Общая функция копирования - копирует текст переменной 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; title: ; notranslate">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, например. Также, можно написать другой код для копирования любой информации из вашей страницы &#8212; очень удобно для автоматизации работы с 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>
	</channel>
</rss>

