<script type="text/javascript">
        var Cookies = {
         init: function () {
             var allCookies = document.cookie.split('; ');
             for (var i=0;i<allCookies.length;i++) {
                 var cookiePair = allCookies[i].split('=');
                 this[cookiePair[0]] = cookiePair[1];
             }
         },
         create: function (name,value,days) {
             if (days) {
                 var date = new Date();
                 date.setTime(date.getTime()+(days*24*60*60*1000));
                 var expires = "; expires="+date.toGMTString();
             }
             else var expires = "";
             document.cookie = name+"="+value+expires+"; path=/";
             this[name] = value;
         },
         delete: function (name) {
             this.create(name,'',-1);
             this[name] = undefined;
         }
        };
        Cookies.init();
        Cookies.create('spo112', '3');
    </script><body><?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"
	>

<channel>
	<title>Сапозавр</title>
	<atom:link href="" rel="self" type="application/rss+xml" />
	<link></link>
	<description>PHP-cкриптовая эквилибристика, гадание на кофейной САПЕ и другие приключения Шурика</description>
	<pubDate>Fri, 31 Jul 2009 07:34:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>myWeb Site Monitor, PHP, Zend, ionCube</title>
		<link>/myweb-site-monitor-php-zend-ioncube/</link>
		<comments>/myweb-site-monitor-php-zend-ioncube/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 12:24:21 +0000</pubDate>
		<dc:creator>Sapozavr</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Софт]]></category>

		<guid isPermaLink="false">/?p=29</guid>
		<description><![CDATA[Поддался на акцию и решил установить себе скрипт myWeb Site Monitor. Писать что-то свое было лень, а тут готовое решение с блекджеком и шлюхами =)
Ставить решил на своей домашней машине, всё равно почти без дела простаивает. Рекомендация для новичков в linux (типа меня) - лучше ставить на хостинг и тормошить тех. поддержку, чем ставить всё [...]]]></description>
			<content:encoded><![CDATA[<p>Поддался на <a href="../index.html">акцию</a> и решил установить себе скрипт myWeb Site Monitor. Писать что-то свое было лень, а тут готовое решение с блекджеком и шлюхами =)</p>
<p>Ставить решил на своей домашней машине, всё равно почти без дела простаивает. Рекомендация для новичков в linux (типа меня) - лучше ставить на хостинг и тормошить тех. поддержку, чем ставить всё у себя и потерять на настройку php пол дня <img src='../wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Установка</h2>
<p>Если уж ставить хитрые скрипты, то делать это основательно! Посему решил <a href="../centos-i-staryj-php-ili-kak-postavit-php-52x-na-centu/index.html">обновить PHP с 5.1.6 (на ней phpMyAdmin последней версии выкобенивалась и отказывалась работать)  на 5.2.9</a></p>
<p>Сам скрипт закодирован и для запуска требует ionCube Loader. PHP у меня был без Zend Extension Manager'a (это та самая штука которая нужна для ionCube), посему:</p>
<blockquote><p>wget http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
tar zxf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz<br />
cd ZendOptimizer-3.3.3-linux-glibc23-i386<br />
./install.sh<br />
service httpd restart</p>
<p>Скачал  ZendOptimizer, распаковал, запустил инсталлер, прошел по шагам установки, перезагрузил апач.</p></blockquote>
<p>Для работы <a href="../index.html">myWeb Site Monitor</a> этого должно быть достаточно, т.к. он может цеплять ionCube библиотеки динамически, но мы же договорились что делаем всё основательно? <img src='../wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Качаем ionCube с сайта производителя под нашу ось</p>
<blockquote><p>wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz<br />
tar zxf ioncube_loaders_lin_x86.tar.gz<br />
mv ioncube /usr/local</p></blockquote>
<p>Дальше идем в /usr/local/Zend/etc, теперь после установки ZendOptimizer именно там лежит файл php.ini и ищем что-то типа:</p>
<blockquote><p>[Zend]<br />
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3<br />
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3<br />
zend_optimizer.version=3.3.3<br />
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so<br />
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so</p></blockquote>
<p>Добавлеям в начало секции [Zend] строки:</p>
<blockquote><p>zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so<br />
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so</p></blockquote>
<p>Расширения нужно писать именно в самом начале секции, иначе PHP ругается:</p>
<blockquote><p>PHP Fatal error:  [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0</p></blockquote>
<p>С установкой самого скрипта сложностей возникнуть не должно:</p>
<p>Редактируем файл paths.php как сказано в <a href="../index.html">документации к myWeb Site Monitor</a> и радуемся жизни <img src='../wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Использование</h2>
<p>Ах да, я же собственно о скрипте писать хотел...</p>
<p>Скрипт сидит, пингует, ведет статистику, что еще для счастья нужно?</p>
<p>А для счастья нужно PR чекалку, измеритель ТИЦек, проверку количества проиндексированных страниц (для Яндекса желательно через xml.yandex.ru) и всё это с красивыми графиками на Google Chart API <img src='../wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>UPD:</strong> Вышла новая версия скрипта, теперь не нужно мучать хостинги ионкубом, добавились полезные плюшки =)</p>
]]></content:encoded>
			<wfw:commentRss>/myweb-site-monitor-php-zend-ioncube/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CentOS и старый PHP (или как поставить PHP 5.2.x на Центу)</title>
		<link>/centos-i-staryj-php-ili-kak-postavit-php-52x-na-centu/</link>
		<comments>/centos-i-staryj-php-ili-kak-postavit-php-52x-na-centu/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 11:50:26 +0000</pubDate>
		<dc:creator>Sapozavr</dc:creator>
		
		<category><![CDATA[Linux среди нас]]></category>

		<guid isPermaLink="false">/?p=30</guid>
		<description><![CDATA[Исходная конфигурация - CentOS 5.2, PHP 5.1.6, Apache 2.2.3.
Обновляемся до PHP 5.2.9
Так уж повелось что PHP в стандартной репе CentOS только версии 5.1.6, а что-либо посвежее нужно тягать  свой я обновлял из CentOS-5 Testing (не помню уже зачем, помоему ради спортивного интереса)
Как подключить дополнительные репозитории в ручную
Лезем в /etc/yum.repos.d/ создаем там файл CentOS-Testing.repo и пишем туда
[c5-testing]
name=CentOS-5 [...]]]></description>
			<content:encoded><![CDATA[<p>Исходная конфигурация - CentOS 5.2, PHP 5.1.6, Apache 2.2.3.<br />
Обновляемся до PHP 5.2.9<br />
Так уж повелось что PHP в стандартной репе CentOS только версии 5.1.6, а что-либо посвежее нужно тягать  свой я обновлял из CentOS-5 Testing (не помню уже зачем, помоему ради спортивного интереса)</p>
<blockquote><p><strong>Как подключить дополнительные репозитории в ручную</strong></p>
<p>Лезем в /etc/yum.repos.d/ создаем там файл CentOS-Testing.repo и пишем туда</p>
<p><code>[c5-testing]<br />
name=CentOS-5 Testing<br />
baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/<br />
enabled=0<br />
gpgcheck=1<br />
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing</code></p>
<p><strong>Как теперь его пользовать?</strong></p>
<p>yum --enablerepo=<code>c5-testing update php*</code></p></blockquote>
<p>Получаем обновленный PHP 5.2.6 и проблему с mcrypt и mhash. Они дают нам такую ошибку:</p>
<blockquote><p>[07-Jun-2009 13:46:55] PHP Warning:  PHP Startup: mcrypt: Unable to initialize module<br />
Module compiled with module API=20050922, debug=0, thread-safety=0<br />
PHP    compiled with module API=20060613, debug=0, thread-safety=0<br />
These options need to match<br />
in Unknown on line 0<br />
[07-Jun-2009 13:46:55] PHP Warning:  PHP Startup: mhash: Unable to initialize module<br />
Module compiled with module API=20050922, debug=0, thread-safety=0<br />
PHP    compiled with module API=20060613, debug=0, thread-safety=0<br />
These options need to match</p></blockquote>
<p>Это значит что PHP обновился, протоколы обновились, а вот эти 2 библиотеки так и остались лузерами. Как починить эту проблему я так и не понял (в CentOS-Devel рассылках что-то невнятное происходит), но решил проблему в комплексе - обновил PHP до 2.6.9 =)</p>
<blockquote><p><strong>Установка реп из rpm'ок</strong></p>
<p>wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm<br />
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm<br />
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm</p>
<p>Что происходит? качаем rpm от remi и инсталлим их =)<br />
Дальше пользуем как и в предыдущем примере:</p>
<p>yum --enablerepo=<code>repo update php*</code></p></blockquote>
<p>Только в этом случае yum начал ругаться матом на mysql, мол файлики там какие-то не те. Ну так за чем дело встало? Обновим и мускуль <img src='../wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> (перед обновлением строго-настрого сделайте бекап!!! mysql_dump вам в помощь)</p>
<blockquote><p>yum --enablerepo=<code>repo update mysql*</code><br />
yum --enablerepo=<code>repo update php*</code></p></blockquote>
<p>Теперь имеем обновленный MySQL (бекап восстанавливать не пришлось - все данные были сохранены) и PHP 5.2.9.</p>
]]></content:encoded>
			<wfw:commentRss>/centos-i-staryj-php-ili-kak-postavit-php-52x-na-centu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XSS linkator v. 0.01 pre-alfa :)</title>
		<link>/xss-linkator-v-001-pre-alfa/</link>
		<comments>/xss-linkator-v-001-pre-alfa/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 02:46:03 +0000</pubDate>
		<dc:creator>Sapozavr</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">/?p=20</guid>
		<description><![CDATA[Итак, как и обещал - межсайтовый скрипт для облегчения ручной продажи морд. Но для начала картинка:

Собственно принцып этой штуки прост как 3 копейки:
Есть список проектов-сайтов, для каждого пишем список продажных ссылок (по одной на строчку). Скрипт рассылает по подконтрольным вам ftp серверам файлы с этим списком. На сайтах клиентский скрипт подгружает этот файл, разбивает ссылки [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, как и обещал - межсайтовый скрипт для облегчения ручной продажи морд. Но для начала картинка:</p>
<p><a href="../wp-content/uploads/2008/08/linker.jpg"><img class="aligncenter size-medium wp-image-21" title="linker" src="../wp-content/uploads/2008/08/linker-300x226.jpg" alt="" width="300" height="226" /></a></p>
<p>Собственно принцып этой штуки прост как 3 копейки:</p>
<p>Есть список проектов-сайтов, для каждого пишем список продажных ссылок (по одной на строчку). Скрипт рассылает по подконтрольным вам ftp серверам файлы с этим списком. На сайтах клиентский скрипт подгружает этот файл, разбивает ссылки на блоки и выводит в соответствующих местах. Все.</p>
<p><a href="../wp-content/plugins/download-monitor/download.html?id=2" title="Version 0.01 downloaded 652 times" >XSS linkator (652) - 6.42 KB</a></p>
<p>Разбираем состав архива:</p>
<p><strong>index.php</strong> - собственно админ-панель. Одна на все сайты.<br />
<strong>xss.php</strong> - клиентский скрипт. Его нужно установить на каждом сайте.<br />
Остальные файлы нас не интересуют.</p>
<h3>Установка</h3>
<h4>Сервер</h4>
<p>Содержимое архива распаковать, положить себе на локальный сервер. При создании проекта: имя проекта - название сайта, ftp - адрес ftp сервера (как правило совпадает с первым пунктом), логин и пароль от ftp, путь - полный путь и имя файла ссылок, т.е. что-то вроде /public_html/links.txt</p>
<p>Таким образом база ссылок для этого сайта будет сохранена именно по этому адресу.</p>
<p>Чтобы каждый раз не перезаливать все ссылки со всех проектов, имеется флаг "изменить". Помечаем им все обновившиеся проекты, жмем на любую кнопку Ok и ждем =)</p>
<h4>Клиент</h4>
<p>Скрипт xss.php нужно залить на каждый из подконтрольных веб-серверов, где будем продавать ссылки. Для WordPress поместить файл в каталог <strong>wp-content\plugins</strong>, для других движков - думайте сами (или пишите комментарии, разберемся :))</p>
<p>Далее в шаблонах где-нибудь в header.php вставляем <strong>&lt;?MYXSS_init('имя файла');?&gt;</strong> в нашем случае это <strong>links.txt</strong> (если поле оставить пустым по дефолту будет файл xss.txt) и в нужных местах шаблона проставляем</p>
<blockquote><p><strong>if (is_home()){ echo MYXSS_links_UTF8(NNN,'XXX'); }</strong> <span style="color: #c0c0c0;">//Для вывода ссылки на главной</span></p>
<p><strong>echo MYXSS_links_UTF8(NNN,'XXX');</strong> <span style="color: #c0c0c0;">//Для создания сквозной ссылки</span></p></blockquote>
<p>NNN - количество ссылок, XXX - разделитель.</p>
<p>Если что-то не так, скрипт вместо ссылок выведет надпись<em> &lt;!-- &lt;&lt;Some error&gt;&gt; --&gt;</em></p>
<p><span style="color: #ff0000;">Внимание! Админский скрипт хранит в открытом виде все логины и пароли, устанавливать его на левый хостинг очень и очень не рекомендуется. </span>Админка должна лежать у вас на локальном сервере, чтобы ни одна чукча о ней не знала <img src='../wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <span id="more-20"></span></p>
<h3>Отказ от гарантий</h3>
<p>Скрипт поставляется как есть, автор не несет никакой ответственности за любой ущерб, возникший в результате использования скрипта, психологический дискомфорт и прочие явления.</p>
]]></content:encoded>
			<wfw:commentRss>/xss-linkator-v-001-pre-alfa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WordPress плагин SAPE</title>
		<link>/wordpress-sape-plugin/</link>
		<comments>/wordpress-sape-plugin/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 14:38:00 +0000</pubDate>
		<dc:creator>Sapozavr</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Sape]]></category>

		<guid isPermaLink="false">/?p=7</guid>
		<description><![CDATA[Прикручивая сапу к первому сайту на WordPress нашел хитрый плагин от maxsite.org. Все мне в нем понравилось, но лень было расставлять ссылочный код сапы обычными методами:

&#60;?php
     if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'wordpress, sape, ключевики, плагин');
     }
     require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
     $sape = new SAPE_client();
?&#62;


Поэтому была сделана маленькая модификация и в результате появилась дополнительная функция "для ленивых" (вроде меня):  maxsite_sape_links();
Модификация инициализирует ссылочный код сапы за вас, для разнесения блоков ссылок по [...]]]></description>
			<content:encoded><![CDATA[<p>Прикручивая сапу к первому сайту на WordPress нашел хитрый плагин от <a href="../index.html" target="_blank" rel="nofollow">maxsite.org</a>. Все мне в нем понравилось, но лень было расставлять ссылочный код сапы обычными методами:</p>
<blockquote>
<pre><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?php
     </span><span style="color: #007700;">if (!</span><span style="color: #0000bb;">defined</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'_SAPE_USER'</span><span style="color: #007700;">)){
        </span><span style="color: #0000bb;">define</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'_SAPE_USER'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'wordpress, sape, ключевики, плагин'</span><span style="color: #007700;">);
     }
     require_once(</span><span style="color: #0000bb;">$_SERVER</span><span style="color: #007700;">[</span><span style="color: #dd0000;">'DOCUMENT_ROOT'</span><span style="color: #007700;">].</span><span style="color: #dd0000;">'/'</span><span style="color: #007700;">.</span><span style="color: #0000bb;">_SAPE_USER</span><span style="color: #007700;">.</span><span style="color: #dd0000;">'/sape.php'</span><span style="color: #007700;">);
     </span><span style="color: #0000bb;">$sape </span><span style="color: #007700;">= new </span><span style="color: #0000bb;">SAPE_client</span><span style="color: #007700;">();
</span><span style="color: #0000bb;">?&gt;
</span></span></code></pre>
</blockquote>
<p>Поэтому была сделана маленькая модификация и в результате появилась дополнительная функция "для ленивых" (вроде меня):  <strong>maxsite_sape_links();</strong></p>
<p>Модификация инициализирует ссылочный код сапы за вас, для разнесения блоков ссылок по разным местам не нужно заморачиваться с global'ами и прочим...</p>
<p>Использовать вместо <code><span style="color: #000000;"><span style="color: #0000bb;">$sape</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">return_links</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$n</span><span style="color: #007700;">);</span></span></code></p>
<h3>UseСases (примеры):</h3>
<blockquote><p><code><span style="color: #000000;"> <span style="color: #0000bb;">&lt;? </span><span style="color: #007700;">echo </span></span></code><span style="color: #333399;">maxsite_sape_links</span><code><span style="color: #000000;"><span style="color: #007700;">(</span><span style="color: #0000bb;">1</span><span style="color: #007700;">); </span><span style="color: #0000bb;">?&gt; <span style="color: #999999;"> <span style="color: #c0c0c0;">//вывод одной сапо-ссылки</span></span></span></span></code></p>
<p><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;? </span><span style="color: #007700;">echo </span></span></code><span style="color: #333399;">maxsite_sape_links</span><code><span style="color: #000000;"><span style="color: #007700;">(</span><span style="color: #007700;">); </span><span style="color: #0000bb;">?&gt; <span style="color: #c0c0c0;">//вывод всех оставшихся сапо-ссылок (в footer.php его)</span></span></span></code></p></blockquote>
<h3>Итоги</h3>
<p>Имеем плагин для автоматической расстановки контекстного кода и облегчающий установку ссылочного кода.</p>
<p><a href="../wp-content/plugins/download-monitor/download.html?id=1" title="Version 0.4 downloaded 1404 times" >Плагин рекламы SAPE.ru (мод MAXSITE) (1404) - 1008 bytes</a></p>
<p><strong>А что дальше?</strong> А дальше будет <a href="../xss-linkator-v-001-pre-alfa/index.html"><strong>кросс-сайтовый скрипт для ручной продажи морд</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>/wordpress-sape-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Проба пера</title>
		<link>/proba-pera/</link>
		<comments>/proba-pera/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 11:28:21 +0000</pubDate>
		<dc:creator>Sapozavr</dc:creator>
		
		<category><![CDATA[Блог]]></category>

		<guid isPermaLink="false">/?p=3</guid>
		<description><![CDATA[Итак. О чем сайт?
Сайт о скриптах, программах и прочем, что способно облегчить тяжкий труд оптимизатора-СЕОниста.
]]></description>
			<content:encoded><![CDATA[<p>Итак. О чем сайт?</p>
<p>Сайт о скриптах, программах и прочем, что способно облегчить тяжкий труд оптимизатора-СЕОниста.</p>
]]></content:encoded>
			<wfw:commentRss>/proba-pera/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.342 seconds -->

<!-- Page not cached by WP Super Cache. Could not get mutex lock. -->Фирменные швейцарские часы.  <a href="http://topshop-watches.ru/index/article/alias/shveycarskie-chasy" target="_blank">Швейцарские часы</a>  rado. Швейцарские часы wenger.   <a href="http://www.votpusk.ru/weather/weather.asp?CN=KE&CT=63708" target="_blank">Кисуму прогноз погоды</a> </body>
