<?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>Записки программиста &#187; Web</title>
	<atom:link href="http://anton.bukarev.org/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://anton.bukarev.org</link>
	<description>Web-программирование и не только</description>
	<lastBuildDate>Thu, 05 Nov 2009 08:50:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WebGL в ночных сборках Firefox</title>
		<link>http://anton.bukarev.org/web/javascript/webgl-v-nochnyx-sborkax-firefox/</link>
		<comments>http://anton.bukarev.org/web/javascript/webgl-v-nochnyx-sborkax-firefox/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 16:01:43 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=495</guid>
		<description><![CDATA[Не так давно поддержка WebGL появилась в ночных сборках Firefox. Если Вы не знакомы с WebGL, то это эволюция работы, которую начала Mozilla несколько лет назад с эксперимента Canvas 3D &#8211; основной способ доступа к OpenGL прямо из браузера, через тег canvas в HTML5. Наряду с внедрением в Firefox, технология WebGL в скором времени была [...]]]></description>
			<content:encoded><![CDATA[<p>Не так давно поддержка WebGL появилась в ночных сборках Firefox. Если Вы не знакомы с WebGL, то это эволюция работы, которую начала Mozilla несколько лет назад с эксперимента Canvas 3D &#8211; основной способ доступа к OpenGL прямо из браузера, через тег canvas в HTML5. Наряду с внедрением в Firefox, технология WebGL в скором времени была также внедрена и в WebKit.<span id="more-495"></span></p>
<p>Если Вы хотите посмотреть на WebGL в работе, <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/" target="_blank">скачайте последнюю сборку Firefox</a>. Откройте страницу <strong>about:config</strong> и установите параметр &#8220;<strong>webgl.enabled_for_all_sites</strong>&#8221; в <strong>true</strong> (нажать два раза на webgl.enabled_for_all_sites). В Mac OS сразу все заработает, а пользователям Windows придется обновить драйвера OpenGL.</p>
<p>А вот несколько примеров WebGL:</p>
<ul>
<li><a href="http://wakaba.c3.cx/w/puls.html ">http://wakaba.c3.cx/w/puls.html </a>
<p> <a href="http://anton.bukarev.org/wp-content/uploads/2009/09/engine2.png"><img class="aligncenter size-full wp-image-512" title="engine" src="http://anton.bukarev.org/wp-content/uploads/2009/09/engine2.png" alt="engine" width="220" height="209" /></a></li>
<li><a href="http://wakaba.c3.cx/w/escher_droste.html">http://wakaba.c3.cx/w/escher_droste.html</a>
<p> <a href="http://anton.bukarev.org/wp-content/uploads/2009/09/image.png"><img class="aligncenter size-full wp-image-513" title="image" src="http://anton.bukarev.org/wp-content/uploads/2009/09/image.png" alt="image" width="416" height="318" /></a></li>
<li><a href="http://cs.helsinki.fi/u/ilmarihe/metatunnel.html">http://cs.helsinki.fi/u/ilmarihe/metatunnel.html</a>
<p> <a href="http://anton.bukarev.org/wp-content/uploads/2009/09/tunnel.png"><img class="aligncenter size-full wp-image-514" title="tunnel" src="http://anton.bukarev.org/wp-content/uploads/2009/09/tunnel.png" alt="tunnel" width="411" height="312" /></a></li>
</ul>
<p><br class="spacer_" /></p>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=495" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/web/javascript/webgl-v-nochnyx-sborkax-firefox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ошибка после обновления Wordpress</title>
		<link>http://anton.bukarev.org/web/wordpress/oshibka-posle-obnovleniya-wordpress/</link>
		<comments>http://anton.bukarev.org/web/wordpress/oshibka-posle-obnovleniya-wordpress/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 06:14:08 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=482</guid>
		<description><![CDATA[Если после обновления wordpress появилась ошибка &#8220;Fatal error: Call to undefined method WordPress_Module::_weak_escape() in wp-includes\wp-db.php on line 487&#8220;, то скорее всего перед обновлением движка Вы забыли отключить плагины. 
Чтобы решить эту проблему

Зайдите по FTP на сервер.
Переименуйте папку wp-content/plugins (например в wp-content/plugins_) 
Зайдите в админку блога, чтобы wordpress отключил все плагины.
Переименуйте папку с плагинами в прежнее [...]]]></description>
			<content:encoded><![CDATA[<p>Если после обновления wordpress появилась ошибка &#8220;<strong>Fatal error: Call to undefined method WordPress_Module::_weak_escape() in wp-includes\wp-db.php on line 487</strong>&#8220;, то скорее всего перед обновлением движка Вы забыли отключить плагины. <span id="more-482"></span></p>
<p>Чтобы решить эту проблему</p>
<ol>
<li>Зайдите по FTP на сервер.</li>
<li>Переименуйте папку wp-content/plugins (например в wp-content/plugins_) </li>
<li>Зайдите в админку блога, чтобы wordpress отключил все плагины.</li>
<li>Переименуйте папку с плагинами в прежнее имя (wp-content/plugins)</li>
<li>В админке блога включайте плагины по одному, чтобы определить несовместимый плагин.</li>
</ol>
<p>Эти действия помогли мне исправить вышеупомянутую проблему, надеюсь, что они помогут и Вам <img src='http://anton.bukarev.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=482" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/web/wordpress/oshibka-posle-obnovleniya-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Защита даных в MySQL</title>
		<link>http://anton.bukarev.org/web/mysql/zashhita-danyx-v-mysql/</link>
		<comments>http://anton.bukarev.org/web/mysql/zashhita-danyx-v-mysql/#comments</comments>
		<pubDate>Wed, 27 May 2009 18:41:21 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[защита данных]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=412</guid>
		<description><![CDATA[В MySQL есть функции для хранения данных в зашифрованом виде. Речь пойдет о DES_ENCRYPT, DES_DESCRYPT и AES_ENCRYPT, AES_DECRYPT.

Функции DES_ENCRYPT и DES_DESCRYPT
В этом случае данные шифруются при помощи алгоритма Triple-DES. Правда, для работы с этими функциями MySQL должен быть собранным с поддержкой SSL. Используются эти функции следующим образом:



DES_ENCRYPT&#40;&#8216;строка для шифрования&#8217;, &#8216;ключ&#8217;&#41;







DES_DECRYPT&#40;&#8216;зашифрованная строка&#8217;, &#8216;ключ&#8217;&#41; 



Функции AES_ENCRYPT и [...]]]></description>
			<content:encoded><![CDATA[<p>В MySQL есть функции для хранения данных в зашифрованом виде. Речь пойдет о DES_ENCRYPT, DES_DESCRYPT и AES_ENCRYPT, AES_DECRYPT.</p>
<p><span id="more-412"></span></p>
<h2>Функции DES_ENCRYPT и DES_DESCRYPT</h2>
<p>В этом случае данные шифруются при помощи алгоритма Triple-DES. Правда, для работы с этими функциями MySQL должен быть собранным с поддержкой SSL. Используются эти функции следующим образом:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">DES_ENCRYPT<span class="br0">&#40;</span><span class="st0">&#8216;строка для шифрования&#8217;</span>, <span class="st0">&#8216;ключ&#8217;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">DES_DECRYPT<span class="br0">&#40;</span><span class="st0">&#8216;зашифрованная строка&#8217;</span>, <span class="st0">&#8216;ключ&#8217;</span><span class="br0">&#41;</span> </div>
</li>
</ol>
</div>
<h2>Функции AES_ENCRYPT и AES_DECRYPT</h2>
<p>Эти функции позволяют шифровать и расшифровывать данные с использованием официального алгоритма AES (”Расширенный стандарт шифрования”). Шифрование выполняется с длинной ключа в 128 бит. Впрочем, как написано в официальной документации MySQL, можно увеличить длину до 256 бит, повозившись с исходниками. Пример использования:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">AES_ENCRYPT<span class="br0">&#40;</span><span class="st0">&#8216;строка для шифрования&#8217;</span>, <span class="st0">&#8216;ключ&#8217;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">AES_DECRYPT<span class="br0">&#40;</span><span class="st0">&#8216;зашифрованная строка&#8217;</span>, <span class="st0">&#8216;ключ&#8217;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p></p>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=412" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/web/mysql/zashhita-danyx-v-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Создаем сервис коротких ссылок</title>
		<link>http://anton.bukarev.org/web/php/sozdaem-servis-korotkix-ssylok/</link>
		<comments>http://anton.bukarev.org/web/php/sozdaem-servis-korotkix-ssylok/#comments</comments>
		<pubDate>Sat, 23 May 2009 18:50:06 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[tinyurl.com]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=269</guid>
		<description><![CDATA[Вероятно Вы уже знакомы с сервисом коротких ссылок tinyurl.com. Давайте создадим свой собственный сервис коротких ссылок.

Как работает сервис коротких ссылок
Например Вы залили файл на narod.ru/disk и получили ссылку вида http://narod.ru/disk/9036797010/somefile.html. Запомнить ее будет затруднительно, а записывать долго для этого и существуют сервисы коротких ссылок. Вы заходите на tinyurl.com,  копируете в специальную форму ссылку и [...]]]></description>
			<content:encoded><![CDATA[<p>Вероятно Вы уже знакомы с сервисом коротких ссылок tinyurl.com. Давайте создадим свой собственный сервис коротких ссылок.</p>
<p><span id="more-269"></span></p>
<h2>Как работает сервис коротких ссылок</h2>
<p>Например Вы залили файл на narod.ru/disk и получили ссылку вида http://narod.ru/disk/9036797010/somefile.html. Запомнить ее будет затруднительно, а записывать долго для этого и существуют сервисы коротких ссылок. Вы заходите на tinyurl.com,  копируете в специальную форму ссылку и получаете короткую ссылку вида http://tinyurl.com/8fp ее и запомнить, и записать намного быстрее.</p>
<h2>Приступим</h2>
<p>Для этого нам понадобится:</p>
<ul>
<li>PHP</li>
<li>MySQL</li>
<li>mod_rewrite</li>
</ul>
<p>
Для начала создадим новую базу данных, назвав ее url (для этого можете воспользоваться phpmyadmin). Теперь приступим к созданию таблицы. Назовем ее short_urls.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE TABLE</span> `short_urls` <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">`id` <span class="kw2">INT</span><span class="br0">&#40;</span> <span class="nu0">11</span> <span class="br0">&#41;</span> <span class="kw3">NOT NULL</span> <span class="kw3">AUTO_INCREMENT</span> <span class="kw1">PRIMARY KEY</span> ,</div>
</li>
<li class="li1">
<div class="de1">`short` <span class="kw2">VARCHAR</span><span class="br0">&#40;</span> <span class="nu0">6</span> <span class="br0">&#41;</span> <span class="kw3">NOT NULL</span> ,</div>
</li>
<li class="li1">
<div class="de1">`url` <span class="kw2">VARCHAR</span><span class="br0">&#40;</span> <span class="nu0">1000</span> <span class="br0">&#41;</span> <span class="kw3">NOT NULL</span> ,</div>
</li>
<li class="li2">
<div class="de2">`stamped` <span class="kw2">DATETIME</span> <span class="kw3">NOT NULL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> ENGINE = MYISAM ;</div>
</li>
</ol>
</div>
<p>Первый столбец будет идентификатором. В столбце short будет храниться короткая часть ссылки (будет генерироваться ссылка вида http://yoursite.ru/xxxxxx, где xxxxxx короткая часть ссылки, xxxxxx будет состоять из цифр и букв это даст нам 2176782336 комбинаций). В столбце url будет храниться «укорачиваемая» ссылка. Последний столбец будет содержать в себе даты добавления ссылок.</p>
<p>Теперь создадим html шаблон сервиса. Создайте файл index.php и скопируйте в него следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;form id=&quot;shorten_form&quot; name=&quot;shorten_form&quot; method=&quot;post&quot; action=&quot;shorten.php&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;div align=&quot;center&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;text&quot; name=&quot;url&quot; id=&quot;url&quot; /&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;/label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;div align=&quot;center&quot;&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;input type=&quot;submit&quot; name=&quot;submit&quot; id=&quot;submit&quot; value=&quot;укоротить&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;/label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/form&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>Пришло время для php. Создайе файл shuffle.php и вставте в него следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//функция для установки соединения с базой данных</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//HOST &#8211; адрес сервера баз данных (обычно localhost)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//USERNAME &#8211; имя пользователя</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="co1">//PASSWORD &#8211; пароль</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$link</span> = <a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="st0">&#8216;HOST&#8217;</span>, <span class="st0">&#8216;USERNAME&#8217;</span>, <span class="st0">&#8216;PASSWORD&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//DB &#8211; имя базы данных (у меня url)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$db_selected</span> = <a href="http://www.php.net/mysql_select_db"><span class="kw3">mysql_select_db</span></a><span class="br0">&#40;</span><span class="st0">&#8216;DB&#8217;</span>, <span class="re0">$link</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Функция для генерирования уникальной ссылки длинны $numAlpha</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> generateurl<span class="br0">&#40;</span><span class="re0">$numAlpha</span>=<span class="nu0">6</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//соединяемся с базой данных</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="re0">$listAlpha</span> = <span class="st0">&#8216;abcdefghijklmnopqrstuvwxyz0123456789&#8242;</span>; <span class="co1">//символы из которых генерируется индентификатор</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <a href="http://www.php.net/str_shuffle"><span class="kw3">str_shuffle</span></a><span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><a href="http://www.php.net/str_shuffle"><span class="kw3">str_shuffle</span></a><span class="br0">&#40;</span><span class="re0">$listAlpha</span><span class="br0">&#41;</span>,<span class="nu0">0</span>,<span class="re0">$numAlpha</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="co1">//генерируем индентификатор и возвращаем</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//функция для «укорачивания» ссылок</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">function</span> geturl<span class="br0">&#40;</span><span class="re0">$in</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//соединяемся с базой</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//генерируем индентификатор и проверяем его уникальность</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">do</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re0">$out</span> = generateurl<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re0">$query</span> = <span class="st0">&quot;SELECT short &nbsp;FROM `short_urls` WHERE `short` = &#8216;$out&#8217;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$result</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$query</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">while</span> <span class="br0">&#40;</span><a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a> &gt; <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//добавляем данные в базу данных</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$insert_query</span> = <span class="st0">&quot;INSERT INTO `short_urls` (`id`, `short`, `url`, `stamped`) VALUES (NULL, &#8216;$out&#8217;, &#8216;$in&#8217;, NOW());&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$result</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$insert_query</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">return</span> <span class="st0">&quot;http://yoursite.ru/&quot;</span>.<span class="re0">$out</span>; <span class="co1">//генерируем и возвращаем короткую ссылку</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Последняя функция проверяет присутствует ли сгенерированый индентификатор в таблице, если присутствует, то генерируется новый, пока не сгенерируется уникальный индентификатор, затем генерируется ссылка.</p>
<p>Теперь соберем все вместе. Создайте файл forward.php и вставте в него следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">include</span> <span class="st0">&#8217;shuffle.php&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$i</span> = <span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;QUERY_STRING&#8217;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//проверяем формат индентификатора</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st0">&quot;/^[0-9a-z]{6}$/&quot;</span>, <span class="re0">$i</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//соединяемся с базой</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$result</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;SELECT short, url FROM `short_urls` WHERE `short` = &#8216;$i&#8217;&quot;</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><a href="http://www.php.net/mysql_error"><span class="kw3">mysql_error</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//проверка на наличие индентификатора в базе данных</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a><span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span> &lt; <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Location: http://yoursite.ru&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/exit"><span class="kw3">exit</span></a>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$row</span> = <a href="http://www.php.net/mysql_fetch_row"><span class="kw3">mysql_fetch_row</span></a><span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Location: &quot;</span>.<span class="re0">$row</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="co1">//переадресация по хранимому адресу</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Location: http://yoursite.ru&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>В файл .htaccess вставте</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">XBitHack &nbsp; &nbsp; &nbsp;Off</div>
</li>
<li class="li1">
<div class="de1">RewriteEngine On</div>
</li>
<li class="li1">
<div class="de1">RewriteCond &nbsp; %{REQUEST_URI} \/([0-9a-z]{4})$ [NC]</div>
</li>
<li class="li1">
<div class="de1">RewriteRule &nbsp; ^(.*) http://www.yoursite.ru/forward.php?%1 [L]</div>
</li>
</ol>
</div>
<p>Теперь создайте файл shorten.php и вставте в него следующий код.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">include</span> `<a href="http://www.php.net/shuffle"><span class="kw3">shuffle</span></a>.php`; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;Ваша ссылка:</div>
</li>
<li class="li1">
<div class="de1">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;&lt;?php <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;url&#8217;</span><span class="br0">&#93;</span>; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;Была уменьшена до:</div>
</li>
<li class="li2">
<div class="de2">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;&lt;?php <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> geturl<span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;url&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>shorten.php будет отображать короткую ссылку</p>
<p>Сервис коротких ссылок готов. Как Вы уже заметили в этом нет ничего сложного. Если возникли трудности, задавайте свои вопросы в комментариях</p>
<p><br class="spacer_" /></p>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=269" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/web/php/sozdaem-servis-korotkix-ssylok/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка PHP-GTK 2 в MacOS X</title>
		<link>http://anton.bukarev.org/mac-os/ustanovka-php-gtk-2-v-macos-x/</link>
		<comments>http://anton.bukarev.org/mac-os/ustanovka-php-gtk-2-v-macos-x/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 21:27:15 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=208</guid>
		<description><![CDATA[Установка PHP-GTK 2 в MacOS X теперь тривиальная задача, благодаря установщику PHP-GTK, который работает как любой другой установщик. Теперь не надо возиться с командами, достаточно запустить программу установки.
Установка
Сперва скачайте образ с http://www.kix.in/php-gtk2/PHP-GTK-2.0.0.dmg и откройте. Затем запустите программу установки 2.0.0 Installer.mpkg. Далее следуйте инструкциям программы установки. Для Вашего удобства ниже скриншоты программы установки.





Первый скрипт
Теперь пришло время [...]]]></description>
			<content:encoded><![CDATA[<p>Установка PHP-GTK 2 в MacOS X теперь тривиальная задача, благодаря установщику PHP-GTK, который работает как любой другой установщик. Теперь не надо возиться с командами, достаточно запустить программу установки.<span id="more-208"></span></p>
<h2>Установка</h2>
<p>Сперва скачайте образ с <a href="http://www.kix.in/php-gtk2/PHP-GTK-2.0.0.dmg" target="_blank">http://www.kix.in/php-gtk2/PHP-GTK-2.0.0.dmg</a> и откройте. Затем запустите программу установки 2.0.0 Installer.mpkg. Далее следуйте инструкциям программы установки. Для Вашего удобства ниже скриншоты программы установки.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk_dmg.png"><img class="alignnone size-full wp-image-209" title="php-gtk_dmg" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk_dmg.png" alt="" width="500" height="381" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-1.png"><img class="alignnone size-full wp-image-210" title="php-gtk-1" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-1.png" alt="" width="500" height="351" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-2.png"><img class="alignnone size-full wp-image-211" title="php-gtk-2" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-2.png" alt="" width="500" height="351" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-3.png"><img class="alignnone size-full wp-image-212" title="php-gtk-3" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-3.png" alt="" width="500" height="351" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-4.png"><img class="alignnone size-full wp-image-213" title="php-gtk-4" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-4.png" alt="" width="500" height="351" /></a></div>
<h2>Первый скрипт</h2>
<p>Теперь пришло время первого скрипта. Запустите Вашу любимую среду разработки и вствьте туда следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Code snippet from the PHP-GTK manual.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span>!<a href="http://www.php.net/class_exists"><span class="kw3">class_exists</span></a><span class="br0">&#40;</span><span class="st0">&#8216;gtk&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;Please load the php-gtk2 module in your php.ini&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$window</span> = <span class="kw2">new</span> GtkWindow<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$window</span>-&gt;<span class="me1">set_title</span><span class="br0">&#40;</span><span class="st0">&#8216;Our PHP-GTK window&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$window</span>-&gt;<span class="me1">connect_simple</span><span class="br0">&#40;</span><span class="st0">&#8216;destroy&#8217;</span>, <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;gtk&#8217;</span>, <span class="st0">&#8216;main_quit&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$label1</span> = <span class="kw2">new</span> GtkLabel<span class="br0">&#40;</span><span class="st0">&quot;Hello world!&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$window</span>-&gt;<span class="me1">add</span><span class="br0">&#40;</span><span class="re0">$label1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$window</span>-&gt;<span class="me1">show_all</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">Gtk::<span class="me2">main</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Сохраните в любое, удобное для Вас место (я сохранил в /users/r00t/test.php). Теперь запустите Терминал и выполните команду usr/local/php-gtk/bin/php &#8220;адрес скрипта&#8221; (у меня эта команда выглядит так usr/local/php-gtk/bin/php /users/r00t/test.php). Если Вы увидели окно, как на скриншоте, то Вы сделали все верно <img src='http://anton.bukarev.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/hello_world.png"><img class="alignnone size-medium wp-image-214" title="hello_world" src="http://anton.bukarev.org/wp-content/uploads/2009/02/hello_world.png" alt="" width="76" height="37" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/hello-world-1.png"><img class="alignnone size-full wp-image-215" title="hello-world-1" src="http://anton.bukarev.org/wp-content/uploads/2009/02/hello-world-1.png" alt="" width="247" height="137" /></a></div>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=208" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/mac-os/ustanovka-php-gtk-2-v-macos-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
