<?xml version="1.0" encoding="windows-1251"?>
	<rss version="2.0">
	<channel>
		<title>Zhogov.RU - Блог Юрия Жогова</title>
		<link>http://www.zhogov.ru</link>
		<description>Все самые интересные и полезные новости недвижимости. оперативная информация.</description>
		<image>
			<url>http://www.kvadroom.ru/i/logo.png</url>
			<link>http://www.zhogov.ru</link>
			<title>Zhogov.RU</title>
		</image>
		<language>ru_RU</language>
	 	<item>
		<title>Работа с формами при помощи jQuery</title>
		<link>http://www.zhogov.ru/stat_72.html</link>
		<category>jQuery</category>
		<pubDate>Tue, 27 Oct 2009 00:00:00 +0300</pubDate>
		<description>&lt;h2&gt;Получение значения:&lt;/h2&gt;
&lt;p&gt;Если обычно вы используете конструкцию:&lt;/p&gt;
&lt;pre&gt;document.getElementById(&quot;object_id&quot;).value=&quot;123&quot;&lt;/pre&gt;
То теперь все короче:
&lt;pre&gt;$(&quot;#object_id&quot;).val();&lt;/pre&gt;
&lt;blockquote&gt;&lt;input id=&quot;object_id&quot; type=&quot;text&quot; value=&quot;Мое значение&quot; /&gt; узнать&lt;/blockquote&gt;
&lt;h2&gt;Изменение значения:&lt;/h2&gt;
&lt;p&gt;Было:&lt;/p&gt;
&lt;pre&gt;document.getElementById(&quot;object_id&quot;).value=&quot;123&quot;&lt;/pre&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;pre&gt;$(&quot;#object_id&quot;).val(&quot;123&quot;);&lt;/pre&gt;
&lt;h2&gt;&lt;br /&gt;jQuery и сheckbox:&lt;/h2&gt;
&lt;p&gt;Узнать, выбрано ли: Было: document.getElementById(&quot;object&quot;).checked Стало: $(&quot;#object&quot;).attr(&quot;checked&quot;)&lt;/p&gt;
&lt;h2&gt;jQuery и select:&lt;/h2&gt;
Значение
&lt;pre&gt;$(&quot;#select_id&quot;).val();&lt;/pre&gt;
Найти текст первого аттрибута который selected - для обычного select, без множественного выбора)
&lt;pre&gt;$(&quot;#object option:selected&quot;).text();&lt;/pre&gt;
Получить все значения:
&lt;pre&gt;$(&quot;#object option&quot;).each(function(){&lt;br /&gt;      alert(&quot;Значение: &quot;+this.value+&quot;, Текст: &quot;+$(this).text);&lt;br /&gt;});&lt;/pre&gt;
&lt;p&gt;Полное руководство по работе с &amp;lt;select&amp;gt; тэгом читайте в статье &lt;a href=&quot;../../73_jquery_select--rabota_s_tegom_select.html&quot;&gt;jQuery select&lt;/a&gt;&lt;/p&gt;</description>
	</item>
		<item>
		<title>jQuery Selector: выборка нужных элеметов с помощью jQuery</title>
		<link>http://www.zhogov.ru/stat_70.html</link>
		<category>jQuery</category>
		<pubDate>Mon, 26 Oct 2009 00:00:00 +0300</pubDate>
		<description>&lt;h2&gt;# - Поиск по идентификатору&lt;/h2&gt;
&lt;p&gt;Итак основа основ - &lt;strong&gt;#&lt;/strong&gt; решетка. Это выборка элемента с указанным ID. (полный аналог document.getElementById)&amp;amp;&lt;/p&gt;
&lt;pre&gt;&lt;em&gt;&amp;lt;input type=&apos;text&apos; name=&apos;n&apos; id=&apos;n&apos; value=&apos;Покажи меня&apos;&amp;gt;&lt;br /&gt;&lt;/em&gt;alert($(&quot;#n&quot;).val());&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;В действии:&lt;/p&gt;
&lt;blockquote&gt;&lt;input id=&quot;n&quot; name=&quot;n&quot; type=&quot;text&quot; value=&quot;Покажи меня&quot; /&gt; &lt;a onclick=&quot;alert($(&amp;quot;#n&amp;quot;).val());return false;&quot; href=&quot;#stayhere&quot;&gt;тыц&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;Если вы будете пользоваться то в 99% процентов случае она будет стоять самой первой. Очень часто программисты переходящие с prototype на jQuery забывают ставить решетку а потом рвут на себе волосы долго ищя ошибку в коде. Очень часто отсутствие решетки в селекторе является причиной нерапотоспособности кода.&lt;/p&gt;
&lt;h2&gt;&lt;br /&gt;Поиск по HTML-классу - tag1&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Выбор простого элемента:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;em&gt;&amp;lt;textarea name=&apos;n&apos;&amp;gt;Покажи меня в тексте&amp;lt;/textarea&amp;gt;&lt;br /&gt;&lt;/em&gt;alert($(&quot;textarea&quot;).val());&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;В действии&lt;/p&gt;
&lt;blockquote&gt;&lt;textarea name=&quot;n&quot;&gt;Покажи меня в тексте&lt;/textarea&gt; &lt;a onclick=&quot;alert($(&amp;quot;textarea&amp;quot;).val());return false;&quot; href=&quot;#stayhere&quot;&gt;тыц&lt;/a&gt;&lt;/blockquote&gt;
&lt;h2&gt;&lt;br /&gt;Поиск вложенного элемента - tag1 tag2&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;Но самая основная фишка селекторов jQuery - это возможность их совмещения для поиска нужного элемента. Чтобы совмещать селекторы класса элементов надо их просто написать через пробел в порядке увеличения глубины внутри страницы.&lt;/p&gt;
&lt;blockquote&gt;&lt;em&gt;&amp;lt;div id=&quot;someid&quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;p&amp;gt;Этот текст будет изменен&amp;lt;/p&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;someid2&quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;p&amp;gt;А тут не будет изменений&amp;lt;/p&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;/em&gt;&lt;br /&gt;$(&quot;#someid span p&quot;).html(&quot;Изменить значение у тэга p который внутри тэга span, который внутри элемента с ID someid&quot;);&lt;/blockquote&gt;
&lt;p&gt;В действии&lt;/p&gt;
&lt;pre&gt;&lt;div id=&quot;someid&quot;&gt;&lt;span&gt;&lt;p&gt;Этот текст будет изменен&lt;br /&gt;А тут не будет изменений
&lt;a onclick=&quot;$(&apos;#someid span p&apos;).html(&apos;Изменить значение у тэга p который внутри тэга span, который внутри элемента с ID someid&apos;);&quot; href=&quot;#stayhere&quot;&gt;тыц&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;Обратите внимание: при таком поиске будут найдены все дочерние элементы, даже те которые находятся на более глубоком уровне вложенности, пример:&lt;/p&gt;
&lt;p&gt;&amp;lt;div&amp;gt;&amp;lt;span&amp;gt;&amp;lt;li&amp;gt;123&amp;lt;/li&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;li&amp;gt;234&amp;lt;/li&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;$(&quot;div li&quot;).html(&quot;123-123&quot;); --- Значение изменится у обоих LI:&lt;/p&gt;
&lt;pre&gt;&lt;div id=&quot;123&quot;&gt;&lt;span&gt;&lt;li&gt;123&lt;/li&gt;&lt;/span&gt;&lt;li&gt;234&lt;/li&gt;&lt;/div&gt;
&lt;a onclick=&quot;$(&amp;quot;#123 li&amp;quot;).html(&amp;quot;123-123&amp;quot;);return false;&quot; href=&quot;#stayhere&quot;&gt;тыц&lt;/a&gt;
&lt;/pre&gt;
&lt;h2&gt;&lt;br /&gt;Поиск по аттрибутам - [attr=value]&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;Еще фишка: селектор элемента, с фильтрации по аттрибуту. Методов фильтрации много&lt;/p&gt;
&lt;p&gt;[attr] - поиск объекта имеющего аттрибут attr.&lt;br /&gt;[attr=&apos;value&apos;] - поиск объекта, attr которого равен value&lt;br /&gt;[attr!=&apos;value&apos;] - поиск объекта, attr которого равен value&lt;br /&gt;[attr^=&apos;value&apos;] - поиск объекта, attr которого начинается с value&lt;br /&gt;[attr$=&apos;value&apos;] - поиск объекта, attr которого заканчивается на value&lt;br /&gt;[attr*=&apos;value&apos;] - поиск объекта, аттрибут attr которого содержит value в любом его месте&lt;br /&gt;[attr=&apos;val&apos;][attr2!=&apos;val2&apos;] - поиск объекта где attr равен val а attr2 не равен val2&lt;/p&gt;
&lt;p&gt;Примеры:&lt;/p&gt;
&lt;p&gt;$(&quot;input[type=&apos;text&apos;]&quot;) - выборка всех input у которых type указан как text. Т.е. checkbox, submit, reset под это не попадут.&lt;br /&gt;$(&quot;input[type!=&apos;text&apos;]&quot;) - выборка всех input у которых type указан отличный от text. Т.е. checkbox, submit, reset попадает - очень аккуратно нужно использовать такой селектор.&lt;br /&gt;$(&quot;input[name^=&apos;ofis_phone&apos;]&quot;) - самый используемый тип вборки. Им Вы и будете пользоваться когда освоитесь. Показывает все элементы у которых name начинается с &apos;ofis_phone&apos;&lt;br /&gt;$(&quot;input[name$=&apos;ofis_phone&apos;]&quot;) - полный аналог предыдущего. Разница лишь в том что искомая строка должна быть в конце аттрибута name.&lt;br /&gt;$(&quot;input[value*=&apos;Юрий&apos;]&quot;) - тоже частый механизм поиска. Ищет все элементы где в value есть слово Юрий.&lt;/p&gt;
&lt;p&gt;$(&quot;input[type=text][name=&apos;fio&apos;][value!=&apos;Ольга&apos;]&quot;) - вывод элемента input ааттрибут name которого равен fio а значение value любое кроме &apos;Ольга&apos;.&lt;/p&gt;
&lt;p&gt;Обратите внимание при поиске по HTML-типу надо использовать нижний регистр, а при поиске по указываемым значениям - надо точно указывать регистр.&lt;br /&gt;Т.е. эти структуры содержат ошибки:&lt;br /&gt;$(&quot;input[type=&apos;TEXT&apos;]&quot;) &lt;br /&gt;$(&quot;input[TYPE=&apos;TEXT&apos;]&quot;)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Как и эта:&lt;br /&gt;&amp;lt;input name=&apos;иМя&apos;&amp;gt;&lt;br /&gt;$(&quot;input[name=&apos;имя&apos;]&quot;) - ничего не найдет&lt;br /&gt;$(&quot;input[name=&apos;ИмЯ&apos;]&quot;) - ничего не найдет&lt;br /&gt;$(&quot;input[name=&apos;иМя&apos;]&quot;) - только так правильно&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Поиск по аттрибутам элементов формы&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;То, зачастую скорее всего Вам и нужен jQuery - это работа с формами.&lt;/p&gt;
&lt;p&gt;:enabled - поиска разблокированного&lt;br /&gt; :disabled - поиск заблокированного видимого элемента формы input,textarea&lt;br /&gt; :checked - Поиск checkbox,radio которое checked&lt;br /&gt; :selected - Поиск &amp;lt;option&amp;gt; которое selected&lt;br /&gt; Я считаю что самым серьезным здесь фильтр :selected - очень часто кроме значение поля select котороая скорее всего цифровое надо еще и знать его текстовый вариант. Тогда будет очень полезна вот какая коротка конструкция:&lt;/p&gt;
&lt;blockquote&gt;&amp;lt;select id=&apos;select_id&apos;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value=&apos;1&apos;&amp;gt;Тут значение ОДИН&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value=&apos;2&apos;&amp;gt;Тут значение ДВА&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;$(&quot;#select_id option:selected&quot;).text();&lt;/blockquote&gt;
&lt;p&gt;В действии:&lt;/p&gt;
&lt;pre&gt;&lt;select id=&quot;select_id&quot;&gt;&lt;option value=&quot;1&quot;&gt;Тут значение ОДИН&lt;/option&gt;&lt;option value=&quot;2&quot;&gt;Тут значение ДВА&lt;/option&gt;&lt;/select&gt;&lt;a onclick=&quot;alert($(&amp;quot;#select_id option:selected&amp;quot;).text());return false;&quot; href=&quot;stayhere&quot;&gt;тыц&lt;/a&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Поиск по CSS-классу - . (точка)&lt;/h2&gt;
&lt;p&gt;Чтобы искать по классу достаточно к селектору класса дописать &quot;.название_css_класса_без_пробела&quot;: $(&quot;span.megauser_defines_style&quot;)&lt;br /&gt;Если у нужного объекта указано несколько классов то они все перечисляются через точку: $(&quot;div.class1.class2.class3&quot;);&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;blockquote&gt;&amp;lt;p class=&apos;123&apos;&amp;gt;123&amp;lt;/p&amp;gt;&amp;lt;p class=&apos;234&apos;&amp;gt;234&amp;lt;/p&amp;gt;&lt;br /&gt;$(&quot;p.123&quot;).html(&quot;123-123-123&quot;);&lt;/blockquote&gt;
&lt;p&gt;В действии:&lt;/p&gt;
&lt;pre&gt;&lt;p class=&quot;123&quot;&gt;123&lt;/p&gt;&lt;p class=&quot;234&quot;&gt;234&lt;/p&gt;&lt;a onclick=&quot;$(&amp;quot;p.123&amp;quot;).html(&amp;quot;123-123-123&amp;quot;);return false;&quot; href=&quot;#stayhere&quot;&gt;тыц&lt;/a&gt;
&lt;/pre&gt;
&lt;h2&gt;&lt;br /&gt;Поиск по соседей - first, last, qe, lt,gt&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;:first - первый дочерний элемент&lt;br /&gt;&lt;em&gt;$(&quot;div:first&quot;);&lt;/em&gt;&lt;br /&gt;:last - последний дочерний элемент&lt;br /&gt;&lt;em&gt;$(&quot;div:last&quot;);&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;У каждого элемента ей свой порядковый номер внутри родителя.&lt;br /&gt;Сначал был сын Вася(1) потом дочь Ольга(2). В jQuery&amp;nbsp; тоже самое.&lt;/p&gt;
&lt;p&gt;:eq(номер) - поиск то точному номеру. ОБратите внимание, нумерация начинается с нуля.&lt;br /&gt;&lt;em&gt;$(&quot;table td:eq(2)&quot;) - третий &amp;lt;td&amp;gt; начала таблицы&lt;br /&gt;$(&quot;table tr:eq(3) td:eq(4)&quot;) - пятый &amp;lt;td&amp;gt; в четвертом ряду&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;:gt(номер) - поиск всех элементов чей номер не ниже указанного (gt - сокращение от greater than(больше чем))&lt;br /&gt;&lt;em&gt;$(&quot;table td:gt(5)&quot;) - все &amp;lt;td&amp;gt; от 6&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;:lt(номер) - аналогично предыдущему, только не больше указанного (less than - менее чем)&lt;br /&gt;&lt;em&gt;$(&quot;table td:lt(3)&quot;);&lt;/em&gt;&lt;/p&gt;</description>
	</item>
		<item>
		<title>jQuery select - работа с тэгом &amp;lt;select&amp;gt;</title>
		<link>http://www.zhogov.ru/stat_73.html</link>
		<category>jQuery</category>
		<pubDate>Mon, 19 Oct 2009 00:00:00 +0400</pubDate>
		<description></description>
	</item>
		<item>
		<title>Colorbox как замена ThickBox</title>
		<link>http://www.zhogov.ru/stat_69.html</link>
		<category>jQuery</category>
		<pubDate>Sun, 18 Oct 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Итак, начальные шаги:&lt;/p&gt;
&lt;p&gt;Скачать jQuery версии не менее 1.3.2&lt;/p&gt;
&lt;p&gt;Скачать Colorbox&lt;/p&gt;</description>
	</item>
		<item>
		<title>Проект thickbox завершился</title>
		<link>http://www.zhogov.ru/stat_68.html</link>
		<category>БЛОГ</category>
		<pubDate>Thu, 15 Oct 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Цитата с сайта:&lt;/p&gt;
&lt;div class=&quot;notice&quot; style=&quot;margin: 20px 0pt; padding: 20px; background-color: #ffffcc; text-align: left; font-size: 14px;&quot;&gt;
&lt;p&gt;While Thickbox had its day, &lt;strong&gt;it is not maintained any longer&lt;/strong&gt;, so we recommend you use some alternatives.&lt;/p&gt;
&lt;ul style=&quot;margin: 20px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://colorpowered.com/colorbox/&quot;&gt;colorbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jqueryui.com/demos/dialog/&quot;&gt;jQueryUI Dialog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fancybox.net/&quot;&gt;fancybox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://swip.codylindley.com/DOMWindowDemo.html&quot;&gt;DOM window&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.shadowbox-js.com/index.html&quot;&gt;shadowbox.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;-The Management. 9.30.2009 (and &lt;a href=&quot;http://www.paulirish.com/&quot;&gt;Paul Irish&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Очень обидно! Придется искать другой аналогичный фреймворк для поп-апа!&lt;/p&gt;</description>
	</item>
		<item>
		<title>Не работает javascript onchange</title>
		<link>http://www.zhogov.ru/stat_67.html</link>
		<category>Скрипты</category>
		<pubDate>Mon, 07 Sep 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Итак, начнем с азов. Почему собственно не срабатывает событие &lt;strong&gt;onchange &lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;Ответ очень простой: onchange работает только в том случае если значение поля изменено ПОЛЬЗОВАТЕЛЕМ а не при помощи скрипта!&lt;/p&gt;
&lt;p&gt;Каково решение этой проблемы?&lt;/p&gt;
&lt;p&gt;Нужно просто вручную запустить обработчик onchange:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;document.getElementById(&apos;object_id&apos;).onchange();&lt;/blockquote&gt;
&lt;p&gt;UPD 01.10.2009 Но! Что будет если запустить эту конструкцию для элемента, у которого событие onchange отсуствует? Вылезет ошибка JavaScript.&lt;/p&gt;
&lt;p&gt;Как это исправить? Использовать try!&lt;/p&gt;
&lt;p&gt;Вот как будет выглядеть полноценная конструкция.&lt;/p&gt;
&lt;blockquote&gt;try{
&lt;blockquote&gt;document.getElementById(&apos;object_id&apos;).onchange();&lt;/blockquote&gt;
}catch(e){&lt;br /&gt;}&lt;/blockquote&gt;</description>
	</item>
		<item>
		<title>MySQL Select  - подробное описание основной функции MySQL для новичка</title>
		<link>http://www.zhogov.ru/stat_64.html</link>
		<category>MySQL</category>
		<pubDate>Sun, 16 Aug 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Полный синтаксис SELECT-операции:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;SELECT&lt;/strong&gt; [STRAIGHT_JOIN]&lt;br /&gt;       [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]&lt;br /&gt;       [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]&lt;br /&gt;       [DISTINCT | DISTINCTROW | ALL]&lt;br /&gt;    &lt;strong&gt;select_expression,...&lt;/strong&gt;&lt;br /&gt;    [INTO {OUTFILE | DUMPFILE} &apos;file_name&apos; export_options]&lt;br /&gt;    [&lt;strong&gt;FROM table_references&lt;/strong&gt;&lt;br /&gt;      &lt;strong&gt;[WHERE where_definition]&lt;/strong&gt;&lt;br /&gt;      [GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]&lt;br /&gt;      [HAVING where_definition]&lt;br /&gt;     &lt;strong&gt; [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]&lt;/strong&gt;&lt;br /&gt;      &lt;strong&gt;[LIMIT [offset,] rows | rows OFFSET offset]&lt;/strong&gt;&lt;br /&gt;      [PROCEDURE procedure_name(argument_list)]&lt;br /&gt;      [FOR UPDATE | LOCK IN SHARE MODE]]&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Не паникуйте! 60% из синтаксиса Вы никогда в жизни не будете использовать. Жирным я выделил то, что действительно нужно при использовании.&lt;/p&gt;
&lt;p&gt;Описание функции на сайте dev.mysql.com сделано под разбирающегос я программиста а не для новичка. Поэтому начнем с простого.&lt;/p&gt;
&lt;h2&gt;Самый простой SELECT-запрос&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table_name;&lt;/blockquote&gt;
&lt;p&gt;Выводит все данные из таблицы &quot;table_name&quot;&lt;br /&gt; Чуть сложнее&lt;/p&gt;
&lt;blockquote&gt;SELECT id,name FROM table_name;&lt;/blockquote&gt;
&lt;p&gt;Выводятся только поля &quot;id&quot; и &quot;name&quot; из таблицы &quot;table_name&quot;&lt;/p&gt;
&lt;h2&gt;Оператор WHERE&lt;/h2&gt;
&lt;p&gt;Теперь добавляем оператор WHERE - добавляющий условия вывода&lt;/p&gt;
&lt;blockquote&gt;SELECT id,name FROM table_name WHERE id&amp;gt;5&lt;/blockquote&gt;
&lt;p&gt;Пераметр id должен быть больше 5&lt;/p&gt;
&lt;blockquote&gt;SELECT id,name FROM table_name WHERE id&amp;gt;5 AND id&amp;lt;20&lt;/blockquote&gt;
&lt;p&gt;Пераметр id должен быть больше 5 но меньше 20&lt;/p&gt;
&lt;blockquote&gt;SELECT id,name FROM table_name WHERE name=&quot;Катя&quot;&lt;/blockquote&gt;
&lt;p&gt;Пераметр name должен быть &lt;span style=&quot;text-decoration: underline;&quot;&gt;равен&lt;/span&gt; строке &quot;Катя&quot;, обратите внимание! Строки идут обязательно в кавычках, в то время как цифры могут идти без них. К тому же цифры в кавычках воспринимаются как строки и результат может не совпадать с ожиданием.&lt;/p&gt;
&lt;blockquote&gt;SELECT id,name FROM table_name WHERE name&amp;lt;&amp;gt;&quot;Катя&quot;&lt;/blockquote&gt;
&lt;p&gt;Пераметр name должен быть &lt;span style=&quot;text-decoration: underline;&quot;&gt;неравен&lt;/span&gt; строке &quot;Катя&quot;&lt;/p&gt;
&lt;blockquote&gt;SELECT id,name FROM table_name WHERE id&amp;gt;5 AND id&amp;lt;20 AND name&amp;lt;&amp;gt;&quot;Катя&quot;&lt;/blockquote&gt;
&lt;p&gt;Пераметр больше 5 но меньше 20 &lt;strong&gt;И&lt;/strong&gt; name должен быть неравен строке &quot;Катя&quot;&lt;/p&gt;
&lt;blockquote&gt;SELECT id,name FROM table_name WHERE (id&amp;gt;5 AND id&amp;lt;20) OR name&amp;lt;&amp;gt;&quot;Катя&quot;&lt;/blockquote&gt;
&lt;p&gt;Пераметр больше 5 но меньше 20 &lt;strong&gt;ИЛИ&lt;/strong&gt; name должен быть равен строке &quot;Катя&quot;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Оператор ORDER BY - сортировка&lt;br /&gt;&lt;/h2&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id&lt;/blockquote&gt;
&lt;p&gt;аналог этого запроса (ASC сортировка по возрастанию - по умолчанию)&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id ASC&lt;/blockquote&gt;
&lt;p&gt;Обратная сортировка&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id DESC&lt;/blockquote&gt;
&lt;p&gt;Две сортировки по возрастанию&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id,name&lt;/blockquote&gt;
&lt;p&gt;Различные сортировки&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id DESC, name ASC&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Оператор LIMIT - ограничение вывода&lt;/h2&gt;
&lt;p&gt;Оператор надо использовать если Ваша задача вывести определенное поличество строк.&lt;/p&gt;
&lt;p&gt;Допустим нужно вывести первую строку содержащию максимальный ID:&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id DESC LIMIT 1;&lt;/blockquote&gt;
&lt;p&gt;Две строки (1-2)&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id DESC LIMIT 2;&lt;/blockquote&gt;
&lt;p&gt;Десять строк (1-10)&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id DESC LIMIT 10;&lt;/blockquote&gt;
&lt;p&gt;Пропустить первые 5 строк и вывести 10 строк (6-15)&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id DESC LIMIT 5,10;&lt;/blockquote&gt;
&lt;p&gt;Пропустить 20 строк и вывести 6 (21-26)&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table ORDER BY id DESC LIMIT 20,6;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Вывод данных из двух разных таблиц&lt;/h2&gt;
&lt;p&gt;Для объединения данных используется оператор FROM и добавляются условия в WHERE. Условия нужны чтобы данные совмещались строго, чтобы не получилась чехарда.&lt;/p&gt;
&lt;blockquote&gt;SELECT * FROM table1,table2 WHERE table1.id=table2.id&lt;/blockquote&gt;
&lt;p&gt;Что изменилось в этом запросе? Названия полей указываются с название таблицы,это нужно для того чтобы четко указывать на ячейку нужной нам таблицы. Также мы поступаем если в обоих таблицах есть ячейки с одинаковым названием, а вывести нам нужно ячейку из таблицы table1&lt;/p&gt;
&lt;blockquote&gt;SELECT table1.name, table2.id FROM table1,table2 WHERE table1.id=table2.id&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Послесловие&lt;/h2&gt;
&lt;p&gt;Я рекомедую заключать названия столбцов и таблиц в &quot;тильды&quot;. Вот пример:&lt;/p&gt;
&lt;blockquote&gt;SELECT `id`,`name` FROM `table` WHERE `id`&amp;gt;5 ORDER BY `name` DESC&lt;/blockquote&gt;</description>
	</item>
		<item>
		<title>Аналог PHP функции Strlen в MySQL</title>
		<link>http://www.zhogov.ru/stat_63.html</link>
		<category>MySQL</category>
		<pubDate>Sat, 15 Aug 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Итак, функция&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;CHAR_LENGTH(str)&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Возвразщает длину строки &lt;strong&gt;[str]&lt;/strong&gt;, измеряемую символами. Мультибайтный символ (допустим в кодировке UTF-8) &lt;span style=&quot;text-decoration: underline;&quot;&gt;считается как один символ.&lt;/span&gt; В этом различие этой функции и функции LENGTH() которая возвращает колво байт. Как пример: есть 5 двухбайтных символов. CHAR_LENGTH вернет 5 а LENGTH() - 10.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;MYSQL STRLEN CHAR_LENGTH В ДЕЙСТВИИ&lt;/h2&gt;
&lt;pre&gt;mysql&amp;gt; SELECT CHAR_LENGTH(&apos;MySQL&apos;);&lt;br /&gt;-&amp;gt; 5
&lt;br /&gt;mysql&amp;gt; SELECT * FROM `TABLE` WHERE CHAR_LENGTH(`field`)&amp;gt;5;

mysql&amp;gt; SELECT * FROM `TABLE` WHERE 1 ORDER BY IF(CHAR_LENGTH(`field`)&amp;gt;5,0,1),`id` DESC
&lt;/pre&gt;</description>
	</item>
		<item>
		<title>jQuery Ajax, Post, jQuery get и load - описание AJAX-функций фреймворка</title>
		<link>http://www.zhogov.ru/stat_62.html</link>
		<category>jQuery</category>
		<pubDate>Thu, 13 Aug 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Фреймворк jQuery позволяет достаточно просто без особых знаний добавить интерактивности вашим страницам при владени базовыми знаниями JavaScript и HTML.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Начнем с азов, что такое AJAX :&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AJAX&lt;/strong&gt; (в переводе с английского &lt;em&gt;&lt;span lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;Asynchronous Javascript and XML&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&amp;mdash; &amp;laquo;асинхронный JavaScript и XML&amp;raquo;)&amp;nbsp;&amp;mdash; метод построения интерактивных &lt;span class=&quot;mw-redirect&quot;&gt;пользовательских интерфейсов&lt;/span&gt; веб-приложений на языке JAVASCRIPT, основой которого является &amp;laquo;фоновый&amp;raquo; обмен информацией между &lt;span class=&quot;mw-redirect&quot;&gt;браузером&lt;/span&gt; и веб-сервером. Благодаря этой технологии содержимое WEB-страницы может измениться &lt;span style=&quot;text-decoration: underline;&quot;&gt;без полной перезагрузки&lt;/span&gt; достаточно серьезно, что делает сайты более&amp;nbsp; быстрыми и удобными. Одним из плюсов этого является экономия трафика.&lt;/p&gt;
&lt;p&gt;Конечно же есть и минусы: чтобы это работало нужен современный браузер c включенным JavaScript. Таких среди нашего интернета порядка 99% - так что я бы Вам советовал не бороться за 100% кросс-платформенонсть Вашего сайта и откровенно &quot;забить&quot; на 1% осталых от жизни компьютеров.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Что нужно чтобы начать:&lt;/h2&gt;
&lt;p&gt;1) Скачать библиотеку jQuery, допустим отсюда: &lt;a href=&quot;../../static/jquery.js&quot;&gt;http://zhogov.ru/static/jquery.js&lt;/a&gt;&lt;br /&gt;2) Создать простейший HTML-файл, который подгружает содержимое &lt;a href=&quot;../../robots.txt&quot;&gt;http://zhogov.ru/robots.txt&lt;/a&gt; в слой c идентификатором TEST_DIV&lt;/p&gt;
&lt;pre&gt;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;attribute-name&quot;&gt; type&lt;/span&gt;=&lt;span class=&quot;attribute-value&quot;&gt;&quot;text/javascript&quot; &lt;/span&gt;&lt;span class=&quot;attribute-name&quot;&gt;src&lt;/span&gt;&lt;span&gt;=&quot;&lt;/span&gt;&lt;a href=&quot;view-source://http//zhogov.ru/static/jquery.js&quot;&gt;http://zhogov.ru/static/jquery.js&lt;/a&gt;&lt;span&gt;&quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;script&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;div id=&apos;TEST_DIV&apos; style=&apos;height: 50px;width: 500px; border: 3px dashed black;&apos;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;button onclick=&apos;jquery(&quot;#TEST_DIV&quot;).load(&quot;http://zhogov.ru/robots.txt&quot;);&apos;&amp;gt;Сделать тест&amp;lt;/button&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;p&gt;В действии:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div id=&quot;TEST_DIV&quot; style=&quot;border: 3px dashed black; height: 50px; width: 500px;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;button onclick=&quot;$(&apos;#TEST_DIV&apos;).load(&apos;http://zhogov.ru/robots.txt&apos;);&quot;&gt;Сделать тест&lt;/button&gt;&lt;/blockquote&gt;
&lt;p&gt;Сразу рекомендую: владельцам Mozilla Firefox установить FireBug чтобы отлавливать всякие разные JAVAScript-глюки.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Замечание!!! Подгрузка данных с других сайтов зачастую может &lt;strong&gt;НЕ РАБОТАТЬ&lt;/strong&gt; - т.е. конструкция jQuery(&quot;#ID&quot;).load(&quot;http://google.com&quot;); не всегда прокатит&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Описание функции jQuery load&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;load( url, [data], [callback] )&lt;/strong&gt; - Загружает HTML из файла URL и вставляет его в содержимое в определенный объект WEB-страницы.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;url&lt;/strong&gt; - адрес страницы содержимое которой надо загрузить&lt;br /&gt;&lt;strong&gt;[data]&lt;/strong&gt; - необязательный параметр, данные которые надо передать загружаемой странице(в форме массива). По умолчанию (без [data]) выполняется как GET-запрос, однако, если будут переданы данные, выполнится как POST-запрос.&lt;br /&gt;&lt;strong&gt;[callback]&lt;/strong&gt; - функция, которая будет запущена когда данные буду подгружены.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Варианты запуска jQuery load:&lt;/h2&gt;
&lt;pre&gt;$(&quot;#DIV_ID&quot;).load(&quot;test.html&quot;); // просто страница&lt;br /&gt;jQuery(&quot;#DIV_ID&quot;).load(&quot;test.html&quot;); // просто страница&lt;br /&gt;$(&quot;#DIV_ID&quot;).load(&quot;test.html&quot;,{tt:&quot;123&quot;}); // с одним параметром&lt;br /&gt;$(&quot;#DIV_ID&quot;).load(&quot;test.html&quot;,{tt:&quot;123&quot;,rr:&quot;555&quot;}); // с двумя параметрами&lt;br /&gt;$(&quot;#DIV_ID&quot;).load(&quot;test.html&quot;,{tt:&quot;123&quot;,rr:&quot;555&quot;},function(){ // с двумя параметрами и вызовом функции&lt;br /&gt;alert(&quot;Страница test.html загруженная с данными&quot;);&lt;br /&gt; });&lt;br /&gt;$(&quot;#DIV_ID&quot;).load(&quot;test.html&quot;,function(){ // без параметров но с вызовом функции&lt;br /&gt; alert(&quot;Страница test.html загруженная без данных&quot;);&lt;br /&gt; });&lt;br /&gt;$(&quot;#DIV_ID&quot;).load(&quot;test.html div.super&quot;); // просто страница, но выведутся только элементы &lt;br /&gt;// &amp;lt;DIV&amp;gt; у которых прописан class &quot;super&quot;.  &lt;br /&gt;Пример:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;div class=&quot;super&quot;&amp;gt;Этот слой выведется&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div class=&quot;bad&quot;&amp;gt;А этот нет&amp;lt;/div&amp;gt;&lt;/blockquote&gt;&lt;/pre&gt;
&lt;p&gt;Обратите внимание! При использовани load-функции JavaScript-код исполняется, но иногда с ошибками, так что лучше использовать get или post функции, содержимое ответа для которых ислкючительно JavaScript-код либо использовать XML-ответ и обрабатывать его. Пример статьи использующей &lt;a href=&quot;../../stat_61.html&quot;&gt;jQuery load&amp;nbsp; и xml&lt;/a&gt; тут: &lt;a href=&quot;../../stat_61.html&quot;&gt;http://zhogov.ru/stat_61.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;jQuery get&lt;/h2&gt;
&lt;p&gt;jQuery.get( url, [data], [callback],[type] ) - загружает страницу, используя GET-запрос.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;url&lt;/strong&gt; - адрес страницы содержимое которой надо загрузить&lt;br /&gt;&lt;strong&gt;[data]&lt;/strong&gt; - необязательный параметр, данные которые надо передать загружаемой странице(в форме массива). По умолчанию (без [data]) выполняется как GET-запрос, однако, если будут переданы данные, выполнится как POST-запрос.&lt;br /&gt;&lt;strong&gt;[callback]&lt;/strong&gt; - функция, которая будет запущена когда данные буду подгружены.&lt;br /&gt;&lt;strong&gt;[type]&lt;/strong&gt; - тип данные которые возвращает URL. Возможные варианты: &quot;xml&quot;, &quot;html&quot;, &quot;script&quot;, &quot;json&quot;, &quot;jsonp&quot; или &quot;text&quot;.&lt;/p&gt;
&lt;h3&gt;Подробнее о типах данных:&lt;/h3&gt;
&lt;p&gt;XML - идет загрузка XML файла, разбор файла делает jQuery&lt;br /&gt;HTML - стандарт(по-умолчанию)&lt;br /&gt;SCRIPT - загружается JAVASCRIPT-код&lt;br /&gt;TEXT - обрабатывается как PLAIN TEXT (зачем?)&lt;br /&gt;JSON, JSONP - мы не рассматриваем, для новичков это нереально круто!&lt;/p&gt;
&lt;p&gt;Также у callback-функции появился второй параметр textstatus - содержащий отладочную информацию о загрузке url.&lt;/p&gt;
&lt;h3&gt;Возможные значения&amp;nbsp;textStatus:&lt;/h3&gt;
&lt;p&gt;&lt;br /&gt; &quot;timeout&quot; - таймаут, возможно было превано соединение с сервером или компьютер отключился от интернета (да и такое бывает)&lt;br /&gt;&quot;error&quot; - ошибка, просто ошибка&lt;br /&gt;&quot;notmodified&quot; - URL уже загружался и с тех пор не изменился&lt;br /&gt; &quot;success&quot; - URL успешно загружен&lt;br /&gt;&quot;parsererror&quot; - URL загружен про при его обработке возникла ошибка, при типа данных XML&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Данный метод рекомендую использовать: при отладке скриптов, в случаях когда результат загрузки не нужно отображать на сайте, и когда Вы точно уверены что передаваемые данные влезут в предел GET-запроса(около 1000 символов).&lt;br /&gt;Внешне вызов обоих функций идентичен, но разницы есть.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Отличие от jQuery get от jQuery load:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;1) при вызове используются разные конструкции:&lt;br /&gt;$.get(&quot;test.html&quot;); // просто загружается test.html&lt;br /&gt;$(&quot;#DIV_ID&quot;).load(&quot;test.html&quot;); // данные test.html обязательно где-то выводятся&lt;br /&gt;2) в jQuery get функция [callback] будет запущена только в том случае, когда страница test.html существует (ответ HTTP 200)&lt;br /&gt;3) в функции [callback] появляется параметр data (см. пример)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Варианты запуска jQuery get:&lt;/h2&gt;
&lt;pre&gt;$.get(&quot;test.html&quot;); // просто обращение к странице test.html&lt;br /&gt;jQuery.get(&quot;test.html&quot;); // просто обращение к странице test.html&lt;br /&gt;$.get(&quot;test.html&quot;,{tt:&quot;123&quot;}); // с одним параметром&lt;br /&gt;$.get(&quot;test.html&quot;,{tt:&quot;123&quot;,rr:&quot;555&quot;}); // с двумя параметрами&lt;br /&gt;$.get(&quot;test.html&quot;,{tt:&quot;123&quot;,rr:&quot;555&quot;},function(data){ // с двумя параметрами и вызовом функции&lt;br /&gt;alert(&quot;Страница test.html загруженная с данными:&quot;+data);&lt;br /&gt; });&lt;br /&gt;$.get(&quot;test.html&quot;,function(data){ // без параметров но с вызовом функции&lt;br /&gt; alert(&quot;Страница test.html загруженная без данных:&quot;+data);&lt;br /&gt; });&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;jQuery post&lt;/h2&gt;
&lt;p&gt;jQuery.get( url, [data], [callback],[type] ) - загружает страницу, используя POST-запрос.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;strong&gt;url&lt;/strong&gt; - адрес страницы содержимое которой надо загрузить&lt;br /&gt;&lt;strong&gt;[data]&lt;/strong&gt; - необязательный параметр, данные которые надо передать загружаемой странице(в форме массива). По умолчанию (без [data]) выполняется как GET-запрос, однако, если будут переданы данные, выполнится как POST-запрос.&lt;br /&gt;&lt;strong&gt;[callback]&lt;/strong&gt; - функция, которая будет запущена когда данные буду подгружены.&lt;br /&gt;&lt;strong&gt;[type]&lt;/strong&gt; - тип данные которые возвращает URL. Возможные варианты: &quot;xml&quot;, &quot;html&quot;, &quot;script&quot;, &quot;json&quot;, &quot;jsonp&quot; или &quot;text&quot;.&lt;/p&gt;
&lt;p&gt;Да-да, все абсолютно идентично jQuery get - единственная разница в типе запроса: GET и POST.&lt;br /&gt;POST позволяет сделать запрос очень большим.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Варианты запуска jQuery post:&lt;/h2&gt;
&lt;pre&gt;$.post(&quot;test.html&quot;); // просто обращение к странице test.html&lt;br /&gt;jQuery.post(&quot;test.html&quot;); // просто обращение к странице test.html&lt;br /&gt;$.post(&quot;test.html&quot;,{tt:&quot;123&quot;}); // с одним параметром&lt;br /&gt;$.post(&quot;test.html&quot;,{tt:&quot;123&quot;,rr:&quot;555&quot;}); // с двумя параметрами&lt;br /&gt;$.post(&quot;test.html&quot;,{tt:&quot;123&quot;,rr:&quot;555&quot;},function(data){ // с двумя параметрами и вызовом функции&lt;br /&gt;alert(&quot;Страница test.html загруженная с данными:&quot;+data);&lt;br /&gt; });&lt;br /&gt;$.post(&quot;test.html&quot;,function(data,textStatus){ // без параметров но с вызовом функции &lt;br /&gt;//обработкой текстового статуса  и указанием типа данных XML&lt;br /&gt; alert(&quot;Страница test.html загруженная без данных:&quot;+data+&quot;, статус: &quot;+textStatus);&lt;br /&gt; },&quot;xml&quot;);&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	</item>
		<item>
		<title>MacOS X 10.6 Snow Leopard получила статус Golden Master</title>
		<link>http://www.zhogov.ru/stat_65.html</link>
		<category>БЛОГ</category>
		<pubDate>Thu, 13 Aug 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;&quot;Golden master&quot;(дословно золотой мастер) - значит что золотой диск, на который записана эта сборка будет использоваться как исходник, на основе которого будет сделан массовый тираж OS 10.6.&lt;/p&gt;
&lt;p&gt;Напомню, последняя публичная сборка 10.6 (10A421) была выпущена в начале августа. Какие именно изменения в сборке произошли с тех пор издание умалчивает.&lt;/p&gt;
&lt;p&gt;И еще один любопытный момент. На днях в онлайн-базе Geekbench &amp;mdash; приложения тестирования и сравнения быстродействия компьютеров &amp;mdash; появились записи о машинах, на которых была установлена как раз сборка 10A432. Позднее эти записи были удалены, но еще доступны через кэш Google:&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://deepapple.com/images/news/2009-08-a/leo08_00.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</description>
	</item>
		<item>
		<title>Mas OS X 10A432 найдена на thepiratebay</title>
		<link>http://www.zhogov.ru/stat_66.html</link>
		<category>MacOS</category>
		<pubDate>Thu, 13 Aug 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Скачать образ диска можно тут: &lt;a href=&quot;http://thepiratebay.org/torrent/5050813/Snowleopard_10.6_Build_10A432&quot;&gt;http://thepiratebay.org/torrent/5050813/Snowleopard_10.6_Build_10A432&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Про тиражирование: некоторые англоязычные MAC-сайты отрапортовали, что релиз 10A432 успешно попал в руки бета-тестеров. А также в блоге John Gruber&apos;а найдена фраза незамысловатая фраза:&lt;/p&gt;
&lt;p&gt;&amp;mdash; Мне говорят, что [10A432] ушла на &amp;laquo;золото&amp;raquo; и может поступить в продажу в пятницу 28 августа.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ссылка на источник: http://daringfireball.net/linked/2009/08/12/snow-leopard-gm&lt;/p&gt;</description>
	</item>
		<item>
		<title>jQuery post (AJAX) + jQuery XML в действии</title>
		<link>http://www.zhogov.ru/stat_61.html</link>
		<category>jQuery</category>
		<pubDate>Mon, 10 Aug 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Рабочий пример этой статьи можно увидеть по адресу: &lt;a href=&quot;http://www.kvadroom.ru/yadoma/regions.html&quot; target=&quot;_blank&quot;&gt;http://www.kvadroom.ru/yadoma/regions.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Для начала нужно создать элемент который будет вызывать нашу jQuery-функцию подгрузки и также создать HTML-элемент внутрь которого данные и будут подгружаться.&lt;/p&gt;
&lt;blockquote&gt;&amp;lt;li id=&apos;&lt;strong&gt;r_123&lt;/strong&gt;&apos;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&quot;#stayhere&quot; onclick=&apos;ExpandRegs(&lt;strong&gt;123&lt;/strong&gt;);return false;&apos;&amp;gt;Нажми меня :)&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/li&amp;gt;&lt;/blockquote&gt;
&lt;p&gt;А теперь переходим к JavaScript&lt;/p&gt;
&lt;p&gt;Чтобы дважды не подгружались данные для этого и того же элемента инициируем проверочный массив&lt;/p&gt;
&lt;blockquote&gt;var op=new Array();&lt;/blockquote&gt;
&lt;p&gt;Сама функция (r - идентификатор элемента по которому нажали, в нашем случае 123)&lt;/p&gt;
&lt;blockquote&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;span&gt;function ExpandRegs(r){&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;Первое это проверка, того же двойного нажатия&lt;/p&gt;
&lt;blockquote&gt;if(op[r]==1)return;&lt;/blockquote&gt;
&lt;p&gt;Теперь отправляем AJAX запрос, для этого можно использовать варианты $.post - для большого POST-запроса, $.get - для маленького HTTP-GET. В качестве параметра r_id передается идентификатор текущего элемента.&lt;/p&gt;
&lt;blockquote&gt;$.post(&apos;/static/js_http_regions_xml.php&apos;,{&apos;r_id&apos;:r}, function(xml){&lt;/blockquote&gt;
&lt;p&gt;Обратите внимание! jQuery без глюков работает только c XML в кодировке UTF-8. Для конвертации используйте функцию UTF-8. Если в XML-файле ответа будут ошибки, то, скорее всего такие браузеры как Mozilla, Opera, Safari все равно их &quot;прожуют&quot; а вот Internet Exporer - без выдачи ошибки все что внутри $.post просто не выполнит.&lt;/p&gt;
&lt;p&gt;Пример получаемого XML-ответа:&lt;/p&gt;
&lt;pre id=&quot;line1&quot;&gt;&lt;span class=&quot;pi&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot; ?&amp;gt;&lt;/span&gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;allregs&lt;/span&gt;&amp;gt;&lt;br /&gt;	&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;id&lt;/span&gt;&amp;gt;2513&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;id&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;name&lt;/span&gt;&amp;gt;Джава&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;name&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&lt;br /&gt;	&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;id&lt;/span&gt;&amp;gt;2514&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;id&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;name&lt;/span&gt;&amp;gt;Кваиси&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;name&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&lt;br /&gt;	&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;id&lt;/span&gt;&amp;gt;2515&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;id&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;name&lt;/span&gt;&amp;gt;Корниси&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;name&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&lt;br /&gt;	&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;id&lt;/span&gt;&amp;gt;2516&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;id&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;name&lt;/span&gt;&amp;gt;Ленингори&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;name&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&lt;br /&gt;	&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;id&lt;/span&gt;&amp;gt;2512&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;id&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;name&lt;/span&gt;&amp;gt;Цхинвали&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;name&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;region&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;allregs&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;p&gt;Только когда получили ответ на наш AJAX-запрос создаем внутренний HTML-элемент.&lt;/p&gt;
&lt;blockquote&gt;$(&quot;#r_&quot;+r).append(&quot;&amp;lt;ul id=&apos;rr_&quot;+r+&apos;&amp;gt;&amp;lt;/ul&amp;gt;&apos;);&amp;nbsp;&amp;nbsp;&lt;/blockquote&gt;
&lt;p&gt;И финал, разбираем пришедший в ответ XML-файл и генерируем HTML-код&lt;/p&gt;
&lt;blockquote&gt;$(xml).find(&apos;region&apos;).each(function(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var nm=$(this).find(&apos;name&apos;).text();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var id=$(this).find(&apos;id&apos;).text();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $(&quot;#rr_&quot;+r).append(&quot;&amp;lt;li id=&apos;r_&quot;+id+&quot;&apos;&amp;gt;&amp;lt;a href=&apos;#stayhere&apos; onclick=&apos;ExpandRegs(\&quot;&quot;+id+&quot;\&quot;);return false;&apos;&amp;gt;&quot;+nm+&quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&quot;);&lt;br /&gt;});&lt;/blockquote&gt;
&lt;p&gt;Занавес: делаем отметку в проверочном массиве, что данный ID уже выведен&lt;/p&gt;
&lt;blockquote&gt;op[r]=1;&lt;/blockquote&gt;
&lt;p&gt;А теперь целиковая рабочая версия на  PHP и JAVASCRIPT&lt;/p&gt;
&lt;blockquote&gt;&amp;lt;?&lt;br /&gt;$rez=mysql_query(&quot;SELECT * FROM `some_table` WHERE 1&quot;);&lt;br /&gt;while($res=mysql_fetch_assoc($rez)){&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;li id=&apos;r_&amp;lt;?=$res[id]?&amp;gt;&apos;&amp;gt;&amp;lt;a href=&quot;#stayhere&quot; onclick=&apos;ExpandRegs(&amp;lt;?=$res[id]?&amp;gt;);return false;&apos;&amp;gt;&amp;lt;?=$res[name]?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;?}?&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;&lt;span class=&quot;start-tag&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;attribute-name&quot;&gt; type&lt;/span&gt;=&lt;span class=&quot;attribute-value&quot;&gt;&apos;text/javascript&apos; &lt;/span&gt;&lt;span class=&quot;attribute-name&quot;&gt;src&lt;/span&gt;&lt;span&gt;=&quot;&lt;a href=&quot;../../i/jquery.js&quot;&gt;http://zhogov.ru/i/jquery.js&lt;/a&gt;&lt;span&gt;&quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;end-tag&quot;&gt;script&lt;/span&gt;&amp;gt;&lt;br /&gt; &amp;lt;script type=&apos;text/javascript&apos;&amp;gt;&lt;br /&gt;var op=new Array();&lt;br /&gt;function ExpandRegs(r){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(op[r]==1)return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.post(&apos;/static/js_http_regions_xml.php&apos;,{&apos;r_id&apos;:r}, function(xml){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $(&quot;#r_&quot;+r).append(&quot;&amp;lt;ul id=&apos;rr_&quot;+r+&apos;&amp;gt;&amp;lt;/ul&amp;gt;&apos;);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $(xml).find(&apos;region&apos;).each(function(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var nm=$(this).find(&apos;name&apos;).text();var id=$(this).find(&apos;id&apos;).text();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $(&quot;#rr_&quot;+r).append(&quot;&amp;lt;li id=&apos;r_&quot;+id+&quot;&apos;&amp;gt;&amp;lt;a href=&apos;#stayhere&apos; onclick=&apos;ExpandRegs(\&quot;&quot;+id+&quot;\&quot;);return false;&apos;&amp;gt;&quot;+nm+&quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; op[r]=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Исходный код PHP-файла, который генерирует XML-ответ&lt;/p&gt;
&lt;pre&gt;&amp;lt;?&lt;br /&gt;$str=$_POST[&apos;r_id&apos;];&lt;br /&gt;if(!$str &amp;amp;&amp;amp; $_GET[&apos;r_id&apos;])$str=$_GET[&apos;r_id&apos;];&lt;br /&gt;$rez=mysql_query(&quot;SELECT * FROM `some_table` WHERE `parent_id`=\&quot;$str\&quot; &lt;br /&gt;ORDER BY `name` ASC&quot;);&lt;br /&gt;if(mysql_num_rows($rez)&amp;gt;0){&lt;br /&gt;while($res=mysql_fetch_assoc($rez))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$allregs{$res[id]}=$res[name];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$tot{$res[id]}=$to[tot];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}else{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$allregs=array();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$tot=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$text=&quot;&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$str=&quot;&quot;;&lt;br /&gt;}&lt;br /&gt;header(&quot;Content-type: application/xml&quot;);&lt;br /&gt;echo &apos;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot; ?&amp;gt;&apos;;&lt;br /&gt;?&amp;gt;&amp;lt;allregs&amp;gt;&lt;br /&gt;&amp;lt;?&lt;br /&gt;&amp;nbsp;while(list($k,$v)=each($allregs)){&lt;br /&gt;&amp;nbsp;&amp;nbsp; ?&amp;gt;&amp;lt;region&amp;gt;&amp;lt;id&amp;gt;&amp;lt;?=$k?&amp;gt;&amp;lt;/id&amp;gt;&amp;lt;name&amp;gt;&amp;lt;?=iconv(&quot;windows-1251&quot;,&quot;UTF-8&quot;,$v)?&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/region&amp;gt;&amp;lt;?&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/allregs&amp;gt;&lt;/pre&gt;
&lt;p&gt;Получился достаточно компактный но эффективный код, который надеюсь Вам пригодится.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Если что-то не получается - отписывайте комментарий и обязательно указывайте свой email , я постараюсь в ближайшее время с Вами связаться.&lt;/p&gt;</description>
	</item>
		<item>
		<title>Отлов поисковиков на сайте PHP</title>
		<link>http://www.zhogov.ru/stat_60.html</link>
		<category>БЛОГ</category>
		<pubDate>Sun, 05 Jul 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Отлавливать поисковиков мы будем исключительно на основе заголовков ими посылаемыми. По словам знающих людей иногда поисковики выдают себя за полноценные браузеры, но с тех же IP что и до этого, с целью проверить не идет ли подмена контента для поисковиков. Так что товарищи будьте внимательны и не используйте этот прием для подмены контента.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&lt;p&gt;function DetectSearchEngine(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $CONF[&apos;bots&apos;]=array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Accoona-AI-Agent&quot;,&quot;Adre/&quot;,&quot;Alexibot&quot;,&quot;Aport&quot;,&quot;AppleSyndication&quot;,&quot;BackDoorBot&quot;,&quot;Baiduspider&quot;,&quot;BecomeBot&quot;,&quot;BeijingCrawler&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Bloglines Title Fetch/1.0&quot;,&quot;BlowFish&quot;,&quot;BotALot&quot;,&quot;BuiltBotTough&quot;,&quot;Bullseye&quot;,&quot;BunnySlippers&quot;,&quot;CheeseBot&quot;,&quot;CherryPicker&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;CherryPickerElite&quot;,&quot;CherryPickerSE&quot;,&quot;ConveraCrawler/0.9d&quot;,&quot;Copernic&quot;,&quot;CopyRightCheck&quot;,&quot;Crescent&quot;,&quot;DataPalm/PHP&quot;,&quot;DISCo Pump 3.2&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;DISCoFinder&quot;,&quot;DittoSpyder&quot;,&quot;Dumbot&quot;,&quot;EDI/1.6.5&quot;,&quot;EmailCollector&quot;,&quot;EmailSiphon&quot;,&quot;EmailWolf&quot;,&quot;Enterprise_Search&quot;,&quot;EroCrawler&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Exabot&quot;,&quot;ExtractorPro&quot;,&quot;Feedfetcher-Google&quot;,&quot;Feedster Crawler&quot;,&quot;Foobot&quot;,&quot;FreeFind&quot;,&quot;Gaisbot&quot;,&quot;Geomaxenginebot&quot;,&quot;Gigabot&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Googlebot-Image&quot;,&quot;Googlebot-Mobile/2.1&quot;,&quot;Googlebot/2.1&quot;,&quot;Harvest&quot;,&quot;Hatena Antenna&quot;,&quot;HouxouCrawler/&quot;,&quot;IRLbot/2.0&quot;,&quot;InfoNaviRobot&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Java/&quot;,&quot;JennyBot&quot;,&quot;Jetbot&quot;,&quot;Kenjin Spider&quot;,&quot;Keyword Density&quot;,&quot;LNSpiderguy&quot;,&quot;Larbin&quot;,&quot;LexiBot&quot;,&quot;Liferea/&quot;,&quot;LinkScan&quot;,&quot;LinkWalker&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;LinkextractorPro&quot;,&quot;LocalcomBot&quot;,&quot;Lupa.ru&quot;,&quot;MJ12bot/v&quot;,&quot;MSIECrawler&quot;,&quot;MSRBOT&quot;,&quot;Mediapartners-Google/2.1&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Microsoft Data Access Internet Publishing Provider Protocol Discovery&quot;,&quot;Microsoft URL Control&quot;,&quot;Microsoft-WebDAV-MiniRedir&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Mister PiX&quot;,&quot;Mnogosearch-&quot;,&quot;NG/2.0&quot;,&quot;NICErsPRO&quot;,&quot;NetAnts&quot;,&quot;NetMechanic&quot;,&quot;NetResearchServer&quot;,&quot;Nutch&quot;,&quot;NutchCVS&quot;,&quot;Offline Explorer&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;OmniExplorer_Bot&quot;,&quot;OpenIntelligenceData/&quot;,&quot;Openbot&quot;,&quot;Openfind&quot;,&quot;OrangeSpider&quot;,&quot;OutfoxBot/&quot;,&quot;PerMan&quot;,&quot;Pompos/&quot;,&quot;ProPowerBot&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;ProWebWalker&quot;,&quot;Python-urllib&quot;,&quot;SBIder/0.8-dev&quot;,&quot;SPD&quot;,&quot;Shim-Crawler&quot;,&quot;SiteSnagger&quot;,&quot;SpankBot&quot;,&quot;SpiderMan&quot;,&quot;sproose/&quot;,&quot;StackRambler/&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Stanford&quot;,&quot;SurveyBot&quot;,&quot;SyndicAPI/1.0&quot;,&quot;Syntryx ANT Scout Chassis Pheromone&quot;,&quot;TheNomad&quot;,&quot;True_Robot&quot;,&quot;TurnitinBot/&quot;,&quot;TurtleScanner&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Twiceler&quot;,&quot;UMBC-memeta-Bot&quot;,&quot;UNTRUSTED&quot;,&quot;URL Control&quot;,&quot;URL_Spider_Pro&quot;,&quot;URLy Warning&quot;,&quot;W3C_Validator&quot;,&quot;WWW-Collector-E&quot;,&quot;Web Downloader&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Web Image Collector&quot;,&quot;WebAlta Crawler&quot;,&quot;WebAuto&quot;,&quot;WebCAT&quot;,&quot;WebCopier&quot;,&quot;WebEnhancer&quot;,&quot;WebSauger&quot;,&quot;WebStripper&quot;,&quot;WebVac&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;WebmasterWorldForumBot&quot;,&quot;Webster Pro&quot;,&quot;Wget&quot;,&quot;Xenu Link Sleuth&quot;,&quot;Yahoo! Slurp China;&quot;,&quot;Yahoo! Slurp;&quot;,&quot;Yandex/&quot;,&quot;YandexBlog/&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;ZyBorg/1.0&quot;,&quot;adre.ru&quot;,&quot;aipbot/1.0&quot;,&quot;almaden.ibm.com/cs/crawler&quot;,&quot;appie 1.1&quot;,&quot;asterias&quot;,&quot;bot/1.0&quot;,&quot;ccubee/3.5&quot;,&quot;cosmos&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;eStyleSearch&quot;,&quot;findlinks/1.0.9&quot;,&quot;findlinks/1.1&quot;,&quot;g2Crawler&quot;,&quot;geniebot&quot;,&quot;grub crawler&quot;,&quot;grub-client&quot;,&quot;gsa-crawler&quot;,&quot;hloader&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;httplib&quot;,&quot;humanlinks&quot;,&quot;ia_archiver&quot;,&quot;ichiro/1.0&quot;,&quot;ichiro/2.0&quot;,&quot;larbin&quot;,&quot;libWeb/clsHTTP&quot;,&quot;libwww-perl&quot;,&quot;looksmart&quot;,&quot;lwp-trivial&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;moget&quot;,&quot;msnbot-media/&quot;,&quot;msnbot/&quot;,&quot;msnbot-Products&quot;,&quot;naver&quot;,&quot;nope&quot;,&quot;psbot&quot;,&quot;psycheclone&quot;,&quot;schibstedsokbot&quot;,&quot;searchmee_v0.1a&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;snap.com beta crawler&quot;,&quot;sogou spider&quot;,&quot;spanner&quot;,&quot;Speedy Spider&quot;,&quot;toCrawl/UrlDispatcher&quot;,&quot;turingos&quot;,&quot;uaportalbot&quot;,&quot;updated/0.1beta&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;virus_detector&quot;,&quot;voyager/1.0&quot;,&quot;wwwster/&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; reset($CONF[&apos;bots&apos;]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while ( list($key, $val) = each($CONF[&apos;bots&apos;]) )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(stristr($_SERVER[&apos;HTTP_USER_AGENT&apos;], $val) !== false )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return false; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;Запуск:&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;if(DetectSearchEngine()){&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;// это поисковик&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;}else{&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;// это не поисковик&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;}&lt;/p&gt;&lt;/pre&gt;</description>
	</item>
		<item>
		<title>google_protectAndRun is not defined Отложенный запуск Google AdSense</title>
		<link>http://www.zhogov.ru/stat_59.html</link>
		<category>БЛОГ</category>
		<pubDate>Wed, 01 Jul 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Задача: сделать вывод рекламы adsense только после полной загрузки страницы, чтобы подгрузка рекламы(которая иногда очень долгая) не мешала сверхбыстрой загрузке Вашего сайта. То есть: &lt;strong&gt;отложенный вывод&lt;/strong&gt; adsense или &lt;strong&gt;задержка вывода&lt;/strong&gt; adsense, &lt;strong&gt;вывод adsense&lt;/strong&gt; в слой.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Сначала я попробовал реализовать это через фреймворк jQuery и событием ready(DOM):&lt;/p&gt;
&lt;pre&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&amp;lt;div id=&quot;gg&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&amp;lt;!-- &lt;br /&gt;  google_ad_client = &quot;pub-5150724343510335&quot;;&lt;br /&gt; &amp;nbsp;google_ad_slot = &quot;2423241128&quot;;&lt;br /&gt; &amp;nbsp;google_ad_width = 160;&lt;br /&gt; &amp;nbsp;google_ad_height = 600;&lt;br /&gt; &amp;nbsp;window.onload=TE;&lt;br /&gt; &amp;nbsp;function TE(){&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $(&quot;#gg&quot;).html(&apos;&amp;lt;script type=&quot;tex&apos;+&apos;&apos;+&apos;t/javas&apos;+&apos;&apos;+&apos;cript&quot; src=&quot;http://pagead2.go&apos;+&apos;&apos;+&apos;oglesyndication.com/pagead/show_ads.js&quot; mce_src=&quot;http://pagead2.go&apos;+&apos;&apos;+&apos;oglesyndication.com/pagead/show_ads.js&quot;&amp;gt;&apos;);&lt;br /&gt; &amp;nbsp;};&lt;br /&gt; // --&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;но Firebug выдал  ошибку: &lt;strong&gt;google_protectAndRun is not defined&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Аналогичная участь жадала меня при использовании события window.onload&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Буду думать как это побороть!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;И вот рабочее решение:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&amp;lt;!-- &lt;br /&gt;google_ad_client = &quot;pub-5150724343510335&quot;;&lt;br /&gt;google_ad_slot = &quot;2423241128&quot;;&lt;br /&gt;google_ad_width = 160;&lt;br /&gt;google_ad_height = 600;&lt;br /&gt;setTimeout(&apos;TE();&apos;,3);&lt;br /&gt;function TE(){&lt;br /&gt;	e=document.createElement(&quot;script&quot;);&lt;br /&gt;	e.setAttribute(&quot;src&quot;,&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;);&lt;br /&gt;	e.setAttribute(&quot;type&quot;,&quot;text/javascript&quot;);&lt;br /&gt;	document.getElementById(&quot;gg&quot;).appendChild(e);&lt;br /&gt;};&lt;br /&gt;// --&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;div id=&quot;gg&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;В этом примере реклама подгружается через 3 секунды, который вполне достаточно чтобы сайт прогрузился.&lt;/p&gt;</description>
	</item>
		<item>
		<title>Сохранить пароль SSH</title>
		<link>http://www.zhogov.ru/stat_57.html</link>
		<category>MacOS</category>
		<pubDate>Tue, 30 Jun 2009 00:00:00 +0400</pubDate>
		<description>&lt;p&gt;Суть проблемы: в MacOSX отсутсвует такая любимая в windows-среде программа SecureCRT. На одном из англоязычных каком-то форуме была информация что компания Vandyke(разработчики SecureCRT) планирует выпуск их программы под макинтош в этом(2009) году в середине лета и то в качестве беты.  Так как нам с Вами ждать бету SecureCRT нет никакого желания, мы проделаем небольшую хитрую операцию по загрузке ключей к которым мы подключаемся по SSH2.  Для настройки нам потребуется только родной terminal (терминал)&lt;/p&gt;
&lt;!--more--&gt; &lt;ol&gt;
&lt;li&gt;Запускаем терминал&lt;/li&gt;
&lt;blockquote&gt;&lt;ol&gt;
&lt;li&gt;Вводим&lt;strong&gt; ssh-keygen&lt;/strong&gt; эта программа сгенерирует открытые и закрытые RSA-ключи&lt;/li&gt;
&lt;li&gt;На вопрос:&lt;em&gt; Enter file in which to save the key &lt;/em&gt;- жмете &lt;strong&gt;Enter&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;На вопрос: &lt;em&gt;Enter passphrase (empty for no passphrase): &lt;/em&gt;&lt;em&gt; &lt;/em&gt;- жмете &lt;strong&gt;Enter&lt;/strong&gt; (без пароля, мы же этого желаем добиться)&lt;/li&gt;
&lt;li&gt;На вопрос: &lt;em&gt;Enter same passphrase again: &lt;/em&gt;- жмете &lt;strong&gt;Enter&lt;/strong&gt; (без пароля, мы же этого желаем добиться)&lt;/li&gt;
&lt;li&gt;В итоге должны получить нечто подобное (см картинку)&lt;/li&gt;
&lt;/ol&gt; &lt;img title=&quot;d181d0bdd0b8d0bcd0bed0ba-d18dd0bad180d0b0d0bdd0b0-4&quot; src=&quot;http://gecko.zhogov.ru:8080/wp-content/uploads/2009/03/d181d0bdd0b8d0bcd0bed0ba-d18dd0bad180d0b0d0bdd0b0-4.png&quot; alt=&quot;d181d0bdd0b8d0bcd0bed0ba-d18dd0bad180d0b0d0bdd0b0-4&quot; width=&quot;621&quot; height=&quot;353&quot; /&gt;&lt;/blockquote&gt;
&lt;li&gt;Загружаем ключ на сайт(все в том же терминале) &lt;ol&gt;
&lt;li&gt;&lt;strong&gt;$ scp ~/.ssh/is_rsa.pub ССШ_ЛОГ@ССШ_ХОСТ:~/&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Потребуется ввести пароль&lt;/li&gt;
&lt;/ol&gt; &lt;/li&gt;
&lt;li&gt; Подключиться к удаленному компьютеру и активировать загруженный ключ &lt;ol&gt;
&lt;li&gt;&lt;strong&gt;$ ssh -l ИМЯ_ЮЗЕРА имя_хоста&lt;/strong&gt; (допустим &quot;&lt;em&gt;ssh -l root microsoft.com&lt;/em&gt;&quot;)&lt;/li&gt;
&lt;li&gt;После авторизации (на всякий случай) -  $         &lt;strong&gt;cd ~&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Далее нужно проверить, есть ли папка  &lt;em&gt;.ssh:      $&lt;/em&gt; &lt;strong&gt;ls -la .ssh&lt;/strong&gt; &lt;ol&gt;
&lt;li&gt;Если ответ будет такой: &lt;ol&gt;
&lt;li&gt;[root@srv2 ~]# ls -la /ssh ls: /ssh: No such file or directory&lt;/li&gt;
&lt;li&gt;То делаете &lt;strong&gt;$ mkdir .ssh &lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;И идем к пункту #4&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/li&gt;
&lt;li&gt;Если другой (как ниже), то спускаемся к пункту #4&lt;strong&gt; &lt;/strong&gt; &lt;ol&gt;
&lt;li&gt;total 16 drwxr-xr-x  2 root root 4096 Mar 10 18:03 . drwxr-x--- 22 root root 4096 Mar 27 20:27 .. -rw-r--r--  1 root root  820 Mar 27 20:09 authorized_keys&lt;/li&gt;
&lt;/ol&gt; &lt;/li&gt;
&lt;/ol&gt; &lt;/li&gt;
&lt;li&gt;$&lt;strong&gt; cat id_ras.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys // &lt;/strong&gt;подключание ключа&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;$ &lt;strong&gt;rm -rf id_ras.pub // &lt;/strong&gt;удаление закачанного файла--ключа&lt;strong&gt; &lt;/strong&gt;- в нем больше нет необходимости&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$ logout // &lt;/strong&gt;отключение&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt; &lt;/li&gt;
&lt;li&gt;Попробовать подключится (из терминала): ssh -l логин хост  &lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Это очень разжеванный вариант для чайников. Вот более короткая версия:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Запустить терминал, $ - это коммандная строка&lt;/li&gt;
&lt;li&gt;$ ssh-keygen  # генерация ключа, не используйте пароль&lt;/li&gt;
&lt;li&gt;$ scp ~/.ssh/is_rsa.pub user@host:~/ # загружает ключ на удаленный хост&lt;/li&gt;
&lt;li&gt; $ ssh user@host #подключаемся к удаленному компьютеру&lt;/li&gt;
&lt;li&gt; $ cat id_ras.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys #добавляем ключ к файлу&lt;/li&gt;
&lt;li&gt;$ rm id_rsa.pub #удаляем публичный ключ, он больше не нужен&lt;/li&gt;
&lt;li&gt;$ exit #отключаемся от сервера&lt;/li&gt;
&lt;li&gt;$ ssh user@host #переподключаемся к серверу, пароль уже не требуется&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Оригинальная статья на английском языке доступна тут: &lt;a title=&quot;Оригинальная статья&quot; rel=&quot;nofollow&quot; href=&quot;http://forums.macosxhints.com/archive/index.php/t-55646.html&quot;&gt;http://forums.macosxhints.com/archive/index.php/t-55646.html&lt;/a&gt;&lt;/p&gt;</description>
	</item>
	</channel>
</rss>