<?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>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>История с левыми сертификатами затронет не только Google</title>
		<link>http://blog.perlover.com/2011/09/01/ca-google-com/</link>
		<comments>http://blog.perlover.com/2011/09/01/ca-google-com/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 18:38:08 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[жулики]]></category>
		<category><![CDATA[Мошенники]]></category>
		<category><![CDATA[сисадминам]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1359</guid>
		<description><![CDATA[Перепечатано с BugTraq: История, конечно, замечательная. Голландский CA (авторизационный центр сертификатов, сертификат которого заверяют другие сертификаты низшего порядка) DigiNotar (прикупленный в июне Vasco Data Security International) в июле этого года выдал неизвестно кому новый SSL-сертификат для домена google.com. Всплыл он только в минувшее воскресенье, и, по словам Google, атакующая схема, включающая этот сертификат, была направлена [...]]]></description>
			<content:encoded><![CDATA[<p>Перепечатано с <strong><a href="http://subscribe.ru/archive/inet.bugtraq/201108/31132448.html" target="_blank">BugTraq</a></strong>:</p>
<p>История, конечно, замечательная. <strong>Голландский CA</strong> (авторизационный центр сертификатов, сертификат которого заверяют другие сертификаты низшего порядка) DigiNotar (прикупленный в июне Vasco Data Security International) в июле этого года <strong>выдал неизвестно кому новый SSL-сертификат для домена <span style="color: #ff0000;">google.com</span></strong>. Всплыл он только в минувшее воскресенье, и, по словам Google, атакующая схема, включающая этот сертификат, была направлена против иранских пользователей. Google работает с совершенном другим CA, информация о котором прошита в Chrome, так что пользователи Chrome все равно получали соответствующуу предупреждение.</p>
<p>Кроме того, расследование показало, что тогда же атакующие получили сертификаты для еще &#171;нескольких дюжен&#187; сайтов &#8212; и им уже никакой Chrome не поможет.</p>
<p><strong>В понедельник все левые сертификаты были отозваны</strong>, а Google, Mozilla и Microsoft дружно вычеркнули (или вот-вот вычеркнут) DigiNotar из списка корневых CA в своих браузерах. А это означает отдельный очень большой подарок для всех тех сайтов, кто имел неосторожность купить у DigiNotar свой сертификат. Vasco в своем заявлении говорит о том, что рассматриваются разные варианты &#8212; от перевыпуска этих сертификатов у других CA до убеждения производителей браузеров вернуть к ним доверие (три ха-ха).</p>
<p><strong>А теперь немного от себя <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </strong> Кто еще не понял &#8212; все броузеры имеют хранилище сертификатов цетров (CA), и если какой либо сайт имеет сертификат для своего домена, подписанный ими &#8212; тогда броузер автоматом считает такой сайт доверенным для пользователя. А значит &#8212; получает  поблажки в плане отключения разных security опций. Правда, я не совсем понял из новости &#8212; если был для домена google.com, то и мог работать только когда пользователь заходил на google.com. Разве что, если бы писали про домен gooogle.com какой нибудь, тогда было бы более понятно, зачем что и кому это надо.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/09/01/ca-google-com/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>Хорошая статейка по CSS и Float блоки (поплавки)</title>
		<link>http://blog.perlover.com/2011/03/24/good-post-about-floats-css/</link>
		<comments>http://blog.perlover.com/2011/03/24/good-post-about-floats-css/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 11:21:38 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1232</guid>
		<description><![CDATA[Вот искал и нашел эту статейку со всеми премудростями обращения с блоками &#8212; поплавками (float) в CSS. Спешу с вами поделиться http://designformasters.info/posts/css-float-theory-and-practice/ Для тех, кто хочет иметь этот адрес всегда под рукой в мобильнике, вот QR-Code:]]></description>
			<content:encoded><![CDATA[<p><a href="http://designformasters.info/posts/css-float-theory-and-practice/"><img class="alignleft" src="https://chart.googleapis.com/chart?chs=150x150&amp;cht=qr&amp;chl=http://designformasters.info/posts/css-float-theory-and-practice/" alt="" width="150" height="150" /></a>Вот искал и нашел эту статейку со всеми премудростями обращения с блоками &#8212; поплавками (float) в CSS. Спешу с вами поделиться <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong><a href="http://designformasters.info/posts/css-float-theory-and-practice/" target="_blank">http://designformasters.info/posts/css-float-theory-and-practice/</a></strong></p>
<p>Для тех, кто хочет иметь этот адрес всегда под рукой в мобильнике, вот <strong><a href="http://blog.perlover.com/2010/06/14/qr-code/">QR-Code</a></strong>:</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/03/24/good-post-about-floats-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DOCTYPE &amp; Images в таблицах &#8212; почему разваливается дизайн?</title>
		<link>http://blog.perlover.com/2011/01/26/doctype-tables-td-img-spacing/</link>
		<comments>http://blog.perlover.com/2011/01/26/doctype-tables-td-img-spacing/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 13:57:16 +0000</pubDate>
		<dc:creator>Perlover</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[For AWMs]]></category>
		<category><![CDATA[Для Webmasters]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[DOCTYPE]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://blog.perlover.com/?p=1161</guid>
		<description><![CDATA[Это будет краткий обзор моего исследования на тему DOCTYPE (подробнее о DOCTYPE я напишу как нибудь позднее) и поведения &#60;IMG&#62; элементов. Итак, если вы еще не знаете, а являетесь вебдизайнером или верстальщиком HTML страниц, вам надо знать, что лучше указывать тип документа для HTML диррективой DTD в начале любого HTML документа: &#60;!DOCTYPE &#8230;&#62;. Потому как [...]]]></description>
			<content:encoded><![CDATA[<p>Это будет <strong>краткий обзор</strong> моего исследования на тему DOCTYPE (подробнее о DOCTYPE я напишу как нибудь позднее) и поведения &lt;IMG&gt; элементов. Итак, если вы еще не знаете, а являетесь вебдизайнером или верстальщиком HTML страниц, вам надо знать, что лучше указывать тип документа для HTML диррективой DTD в начале любого HTML документа: &lt;!DOCTYPE &#8230;&gt;. Потому как иначе, ваша страница может выглядеть и работать не так, как вам хочется (например, без этого определения не работает CSS &#171;position: fixed&#187;). Я долго мучался с этим DOCTYPE, чтобы все работало так, как хотелось бы, и пришел к выводу, что лучше делать именно такое объявление типа:<span id="more-1161"></span></p>
<p><em><strong>&lt;!DOCTYPE HTML&gt;</strong></em><br />
ставиться в самом начале HTML документа, а в CSS стиль добавляется следующая директива:<br />
<em><strong> img {display: block}</strong></em></p>
<p><strong>Краткое пояснение</strong>: первой строкой вы говорите броузеру использовать тип документа HTML без указания явного типа модели strict/quirk (<strong><a href="http://htmlhelp.com/tools/validator/doctype.html" target="_blank">лучше не указывать явно</a></strong>, так как вы не старайтесь, все равно очень сложно создать <strong><a href="http://validator.w3.org/" target="_blank">строго валидный HTML</a></strong>, зато такое простое определение включает большинство броузеров в Strict mode &#8212; взято с <strong><a href="http://www.google.com/" target="_blank">Google</a></strong> страниц), а <strong>второй директивой</strong> CSS вы устраняете одну из <strong><span style="color: #ff0000;">проблем strict</span> режима</strong> &#8212; <strong><span style="color: #ff0000;">в нем все &lt;img&gt; елементы имеют inline тип</span></strong>, а не block. Из-за отсутствия такой директивы, <strong>ваш дизайн может &#171;расползаться&#187;, если имеются &lt;img&gt; элементы внутри &lt;td&gt;</strong>. Дело в том, что как привыкли вебдизайнеры старой школы, если вставить в &lt;td&gt; только &lt;img&gt;, картинка должна заполнить всю ячейку таблицы край в край. Все это работало, потому что для броузера IMG являлся блоком, а CSS утверждает, что если в блоке (TD) встречается блочный элемент (IMG), то содержимое блока становится блочным и работает по правилам блока &#8212; &#171;край в край&#187;. Такое же поведение выставляется в <strong><a href="https://developer.mozilla.org/en/Mozilla_Quirks_Mode_Behavior" target="_blank">Quirk и </a><a href="https://developer.mozilla.org/en/Mozilla_Quirks_Mode_Behavior" target="_blank">Almost Strict режимах</a></strong>. <strong>В Strict</strong> модели <strong><a href="http://www.quirksmode.org/css/quirksmode.html" target="_blank">IMG является inline типом</a></strong>, поэтому по CSS получается, что в блоке (TD) идет только inline (IMG), значит содержимое ячейки будет работать как inline модель для содержимого &lt;TD&gt; &#8212; <strong>броузер &#171;выделит&#187; пространство для текста</strong>, как он делает для inline содержимого. Именно <strong>это &#171;пространство&#187;</strong> в виде отступа <strong>снизу после картинки</strong> и<strong> &#171;разваливает&#187;</strong> дизайн страниц. И многие верстальщики могут долго искать причину, почему так происходит.</p>
<p>Вообще, я много интересного у знал о моделях Strict/Quirk броузеров. Как обобщю все инфу, выложу ее здесь.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.perlover.com/2011/01/26/doctype-tables-td-img-spacing/feed/</wfw:commentRss>
		<slash:comments>1</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>Чуть улучшенный 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 &#171;images&#187; &amp; &#171;CSS&#187;</strong>. Обычно, Live HTTP headers используется для перехвата GET &amp; POST запросов HTTP трафика броузера, но при этом в 99% случаев не нужны данные о перехвате графики и CSS стилях. Постоянно приходится их отключать, так как они &#171;засоряют&#187; поток других, более важных, данных. <strong>Решил покончить для себя с этим</strong>, поправив чуть чуть этот плагин. <strong>Кому надо &#8212; пользуйтесь. </strong>Правда, когда плагин выпустят с новой версией, эта будет перетерта и все перестанет работать. Как это произойдет, постараюсь придумать более лучшее решение. Исправлена пара строк, но зато так стало удобнее&#8230; <img src='http://blog.perlover.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>К тому же, эта версия адоптирована для Firefox 3.6.* &amp; 4.*</p>
<p><strong><a href="http://blog.perlover.com/wp-content/uploads/2011/05/patched-livehttpheaders-0.17.xpi">Правленный Live HTTP headers v0.17</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-ую ошибку сервера. Для тех, кто не знает что это &#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>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>
	</channel>
</rss>

