<?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>blog.elfet</title>
	<atom:link href="http://blog.elfet.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.elfet.ru</link>
	<description></description>
	<lastBuildDate>Mon, 17 May 2010 19:15:35 +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>Быстрые матричные сложения в C++</title>
		<link>http://blog.elfet.ru/cpp/matrix-expressions/</link>
		<comments>http://blog.elfet.ru/cpp/matrix-expressions/#comments</comments>
		<pubDate>Mon, 17 May 2010 19:10:37 +0000</pubDate>
		<dc:creator>Elfet</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.elfet.ru/?p=97</guid>
		<description><![CDATA[В одном проекте на С++ мне понадобилось два типа матриц: разреженные и заполненные.
Для первых выбрали матрицы из библиотеки uBLAS, для вторых выбрать библиотеку сложнее, так как важна была скорость с которой выполняются операции сложения матриц и умножения на скаляр.
Я решил протестировать несколько библиотек: uBLAS, tvmet и AlgLib.

Вот что получилось:

 операция: n = m + m;
uBLAS: [...]]]></description>
			<content:encoded><![CDATA[<p>В одном проекте на С++ мне понадобилось два типа матриц: разреженные и заполненные.<br />
Для первых выбрали матрицы из библиотеки uBLAS, для вторых выбрать библиотеку сложнее, так как важна была скорость с которой выполняются операции сложения матриц и умножения на скаляр.<br />
Я решил протестировать несколько библиотек: uBLAS, tvmet и AlgLib.<br />
<span id="more-97"></span><br />
Вот что получилось:</p>
<ol>
<li> операция: n = m + m;<br />
uBLAS: 1.357<br />
tvmet: 0.945<br />
AlgLib: 0.889</li>
<li> операция: n = 2 * m &#8211; m;<br />
uBLAS: 1.607<br />
tvmet: 1.512<br />
AlgLib: 1.404</li>
<li> операция: n = 2 * m + m / 3.3 &#8211; 0.1 * -m;<br />
uBLAS: 2.854<br />
tvmet: 3.176<br />
AlgLib: 3.682</li>
</ol>
<p>В uBLAS хорошо оптимизированы алгоритмы по работе с выражениями и большими матрицами, но хуже работает на простых выражениях и маленьких матрицах чем AlgLib. </p>
<p>Тогда мне  в голову пришла гениальная идея о том как можно ускорить простые операции с матрицами до максимума &#8211; использовать для этого циклы <img src='http://blog.elfet.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
А для красоты использовать вот такой-вот define:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#define MatrixExp(n, exp) {\
for(int i = 0; i &lt; n.size1(); i++)  \
for(int j = 0; j &lt; n.size2(); j++) \
    n(i, j) = exp; \
}</span></pre></div></div>

<p>Этим дефайном очень просто пользоваться: MatrixExp([новая матрица], [выражение с индексами (i,j)] ),<br />
пример:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">MatrixExp<span style="color: #008000;">&#40;</span>new_matrix, <span style="color: #0000dd;">2</span> <span style="color: #000040;">*</span> m1<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> m2<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span> <span style="color: #000040;">-</span>m3<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span> <span style="color: #000040;">/</span> <span style="color: #0000dd;">5</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div>

<p>Для любых выражений скорость на порядок выше ~ 0.515 (так не создаются временные объекты)</p>
<p>Вот пример из рабочего кода:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">Matrix total<span style="color: #008000;">&#40;</span>varsize, varsize<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
MatrixExp<span style="color: #008000;">&#40;</span>total,  Ck<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> k<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> Ckx<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> k_x<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> Cky<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">*</span> k_y<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span>  <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div>

<p>PS Matrix &#8211; это моя обертка над классом ap::real_2d_array из AlgLib. Так как у них уж очень не удобно всё.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elfet.ru/cpp/matrix-expressions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Вывод std::vector и std::list</title>
		<link>http://blog.elfet.ru/cpp/vector-and-list/</link>
		<comments>http://blog.elfet.ru/cpp/vector-and-list/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 12:37:40 +0000</pubDate>
		<dc:creator>Elfet</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.elfet.ru/?p=81</guid>
		<description><![CDATA[Иногда хочется иметь возможность вывести содержимое std::vector или std::list в поток, что бы посмотреть что находится внутри. Это может понадобится например при отладке программы. Для этого я написал небольшой класс. С помощью него можно вывести любой std массив или список в поток.
Пример:

cout &#60;&#60; &#34;Vector:&#34; &#60;&#60; my_vector &#60;&#60; endl;

Вывод:

Vector:{0, 1, 2, ... &#60;96&#62; ... , 99}

Если [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда хочется иметь возможность вывести содержимое std::vector или std::list в поток, что бы посмотреть что находится внутри. Это может понадобится например при отладке программы. Для этого я написал небольшой класс. С помощью него можно вывести любой std массив или список в поток.<br />
Пример:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Vector:&quot;</span> <span style="color: #000080;">&lt;&lt;</span> my_vector <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span></pre></div></div>

<p>Вывод:</p>

<div class="wp_syntax"><div class="code"><pre class="no" style="font-family:monospace;">Vector:{0, 1, 2, ... &lt;96&gt; ... , 99}</pre></div></div>

<p>Если нужно вывести определённое количество элементов, то перед выводом массива следует написать <strong>show(int)</strong>. Приведённый ниже код выведет первые 100 элементов:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Vector:&quot;</span> <span style="color: #000080;">&lt;&lt;</span> show<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> vec <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span></pre></div></div>

<p>Если нужно вывести весь массив, то нужно указать <strong>show(-1)</strong>.<br />
<br />
Так же можно выводить в любой выходной поток:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">std<span style="color: #008080;">::</span><span style="color: #007788;">stringstream</span> os<span style="color: #008080;">;</span>
os <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;List:&quot;</span> <span style="color: #000080;">&lt;&lt;</span> show<span style="color: #008000;">&#40;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> my_list <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span></pre></div></div>

<p>Скачать данный код можно тут: <a href="http://smart-flow.googlecode.com/files/Debug.h">Debug.h</a><br />
Примеры использования: <a href="http://smart-flow.googlecode.com/files/cout_vector_debug.rar">cout_vector_debug.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elfet.ru/cpp/vector-and-list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>#ifdef в PHP</title>
		<link>http://blog.elfet.ru/php/ifdef-in-php/</link>
		<comments>http://blog.elfet.ru/php/ifdef-in-php/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 12:15:59 +0000</pubDate>
		<dc:creator>Elfet</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://blog.elfet.ru/?p=72</guid>
		<description><![CDATA[В своем проекте мне понадобилось собирать различные версии исходников. Причём так что бы в различных сборках помещались различные куски кода. if-else мне здесь не подходил, потому что нужно было что бы код либо точно входил, либо не входил в сборку.

Решение
Поэтому я решил использовать директивы #ifdef/#endif. Для их реализации я создал небольшую программку на C#, которая [...]]]></description>
			<content:encoded><![CDATA[<p>В своем проекте мне понадобилось собирать различные версии исходников. Причём так что бы в различных сборках помещались различные куски кода. if-else мне здесь не подходил, потому что нужно было что бы код либо точно входил, либо не входил в сборку.<br />
<span id="more-72"></span><br />
<br/><b>Решение</b></p>
<p>Поэтому я решил использовать директивы #ifdef/#endif. Для их реализации я создал небольшую программку на C#, которая обрабатывает эти директивы. В программе нужно указать исходный файл или папку, и папку куда нужно помещать готовый результат. На наличие директив обрабатываются только php файлы, остальные просто копируются.</p>
<div align="center"><img src="http://img638.imageshack.us/img638/1738/phpifdef.jpg" alt="PHP Ifdef Collector PrintScreen"/></div>
<p><br/><b>Работа программы</b></p>
<p>Программа имеет глобальный массив defines, который создаётся из третьего поля («Defines (comma separated)»). Этот массив может быть дополнен директивой «#define TEXT» в php коде.<br />
Программа умеет обрабатывать следующие директивы: «#ifdef TEXT», «#ifndef TEXT». Первая включает код если директива определена, вторая включает если не определена. Эти директивы обязательно должны иметь закрывающие «#endif».<br />
Так же программа умеет обрабатывать «#else» и вложенность этих директив. </p>
<p><br/><b>Заключение</b></p>
<p>Поскольку в php символ «#» определяет комментарий, то код может быть выполнен и без вырезания этих директив.<br />
Однако, если использовать «#ifdef &#8211; #else &#8211; #endif» с кодом выполняющим различные действия с одними и теми же данными, то нужно закомментировать  одно из этих действий для его выполнения без вырезания директив примерно следующим образом:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
        <span style="color: #666666; font-style: italic;">#ifdef COPY
</span>
        <span style="color: #000088;">$chat_page</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'copy'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$chat_page</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetVars</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'copyright'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Copyright</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">html</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$chat_page</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Display</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">/*#else
&nbsp;
        $this-&gt;html = View('no_copy')::Call();
        $this-&gt;Display();
&nbsp;
        */</span><span style="color: #666666; font-style: italic;">#endif
</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p><br/><br />
Скачать программу можно здесь: <a href="http://phpifdef.googlecode.com/files/Php%20Ifdef%20Collector.exe">Php Ifdef Collector.exe</a><br />
Исходники программы тут: <a href="http://code.google.com/p/phpifdef/">http://code.google.com/p/phpifdef/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elfet.ru/php/ifdef-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Новые принт-скрины ElfChat 5</title>
		<link>http://blog.elfet.ru/elfchat/%d0%bd%d0%be%d0%b2%d1%8b%d0%b5-%d0%bf%d1%80%d0%b8%d0%bd%d1%82-%d1%81%d0%ba%d1%80%d0%b8%d0%bd%d1%8b-elfchat-5/</link>
		<comments>http://blog.elfet.ru/elfchat/%d0%bd%d0%be%d0%b2%d1%8b%d0%b5-%d0%bf%d1%80%d0%b8%d0%bd%d1%82-%d1%81%d0%ba%d1%80%d0%b8%d0%bd%d1%8b-elfchat-5/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 22:03:58 +0000</pubDate>
		<dc:creator>Elfet</dc:creator>
				<category><![CDATA[ElfChat]]></category>

		<guid isPermaLink="false">http://blog.elfet.ru/?p=61</guid>
		<description><![CDATA[Всем привет!
Работа над новым ElfChat 5 постепенно продолжается.
Вот парочка новых принт-скринов пятёрки.

Панель входа в чат:

Главная страница панели управления:

]]></description>
			<content:encoded><![CDATA[<p>Всем привет!</p>
<p>Работа над новым ElfChat 5 постепенно продолжается.</p>
<p>Вот парочка новых принт-скринов пятёрки.<br />
<br />
Панель входа в чат:</p>
<p style="text-align: center;"><a href="http://img189.imageshack.us/img189/5166/scr2s.png"><img class="aligncenter" src="http://img189.imageshack.us/img189/5166/scr2s.png" alt="Панель входа" width="641" height="332" /></a></p>
<p style="text-align: left;">Главная страница панели управления:</p>
<p style="text-align: center;"><a href="http://img502.imageshack.us/img502/4066/scr1t.png"><img class="aligncenter" src="http://img502.imageshack.us/img502/4066/scr1t.png" alt="Панель управления" width="641" height="332" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elfet.ru/elfchat/%d0%bd%d0%be%d0%b2%d1%8b%d0%b5-%d0%bf%d1%80%d0%b8%d0%bd%d1%82-%d1%81%d0%ba%d1%80%d0%b8%d0%bd%d1%8b-elfchat-5/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>Создание PHP-AJAX чата</title>
		<link>http://blog.elfet.ru/jquery/php-ajax-chat/</link>
		<comments>http://blog.elfet.ru/jquery/php-ajax-chat/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 16:18:47 +0000</pubDate>
		<dc:creator>Elfet</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.elfet.ru/?p=26</guid>
		<description><![CDATA[Приветствую!

Эта статья для тех кто желает сам сделать свой чат на php с применением ajax. В ней я расскажу о том как самому сделать простой чат.


Необходимые знания:

Начальные знания в php. Такие как: Как подключиться к базе данных mysql?
Начальные знания в html и css.
Начальные знания в JavaScript и jQuery. (даже если вы только слышали о jQuery, [...]]]></description>
			<content:encoded><![CDATA[<p>Приветствую!<br />
<br />
Эта статья для тех кто желает сам сделать свой <strong>чат на php</strong> с применением <strong>ajax</strong>. В ней я расскажу о том как самому сделать простой чат.</p>
<p style="text-align: center;"><a href="http://img29.imageshack.us/img29/7681/phpajaxchat.png"><img class="aligncenter" title="Php Ajax Chat" src="http://img29.imageshack.us/img29/7681/phpajaxchat.png" alt="Так будет выглядеть получившийся чат." width="450" height="337" /></a></p>
<p>
Необходимые знания:</p>
<ol>
<li>Начальные знания в php. Такие как: Как подключиться к базе данных mysql?</li>
<li>Начальные знания в html и css.</li>
<li>Начальные знания в JavaScript и jQuery. (даже если вы только слышали о jQuery, но не работали с ним)</li>
</ol>
<p>Итак начнём!<br />
<br />
<span id="more-26"></span><br />
<br />
Для начала создадим новую базу данных в MySQL и выполним SQL запрос:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">CREATE TABLE `messages` <span style="color: #00AA00;">&#40;</span>
  `id` int<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #00AA00;">&#41;</span> NOT NULL AUTO_INCREMENT<span style="color: #00AA00;">,</span>
  `name` char<span style="color: #00AA00;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #00AA00;">&#41;</span> character SET utf8 NOT NULL<span style="color: #00AA00;">,</span>
  `<span style="color: #993333;">text</span>` <span style="color: #993333;">text</span> character SET utf8<span style="color: #00AA00;">,</span>
  PRIMARY KEY  <span style="color: #00AA00;">&#40;</span>`id`<span style="color: #00AA00;">&#41;</span>
<span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></pre></div></div>

<p>В этой таблице у нас будут храниться сообщения чата.<br />
</p>
<ol>
<li> id &#8211; номер сообщения, он должен быть помечен как  AUTO_INCREMENT для того что бы для каждого сообщения создавался уникальный индекс.</li>
<li>name &#8211; имя пользователя отправившего сообщение</li>
<li>text &#8211; само сообщение</li>
</ol>
<p>Можно так же расширить список полей, например время сообщения, и так далее.<br />
<br />
Теперь приступим к созданию клиентской части чата. Она у нас будет реализована в файле <strong>index.php:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;!--</span> Указываем DOCTYPE <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;!</span>DOCTYPE HTML <span style="color: #000000; font-weight: bold;">PUBLIC</span> <span style="color: #0000ff;">&quot;-//W3C//DTD HTML 4.01//EN&quot;</span> <span style="color: #0000ff;">&quot;http://www.w3.org/TR/html4/strict.dtd&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>html<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>head<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>title<span style="color: #339933;">&gt;</span>PhpAjaxChat<span style="color: #339933;">&lt;/</span>title<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;!--</span> У нас всё работает в UTF<span style="color: #339933;">-</span><span style="color: #cc66cc;">8</span> <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;</span>meta http<span style="color: #339933;">-</span>equiv<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;content-type&quot;</span> content<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text/html; charset=UTF-8&quot;</span><span style="color: #339933;">&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;!--</span> Загружаем стили для чата <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;</span>link rel<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;stylesheet&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text/css&quot;</span> media<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;screen&quot;</span> href<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;css.css&quot;</span> <span style="color: #339933;">/&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;!--</span> Подключаем jQuery <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text/javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;jquery.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;!--</span> Сам код нашего чата <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>ready<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#pac_form&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>submit<span style="color: #009900;">&#40;</span>Send<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// вешаем на форму с именем и сообщением событие которое срабатывает кодга нажата кнопка &quot;Отправить&quot; или &quot;Enter&quot;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#pac_text&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>focus<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// по поле ввода сообщения ставим фокус</span>
    setInterval<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Load();&quot;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// создаём таймер который будет вызывать загрузку сообщений каждые 2 секунды (2000 миллисекунд)</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
&nbsp;
<span style="color: #666666; font-style: italic;">// Функция для отправки сообщения</span>
<span style="color: #000000; font-weight: bold;">function</span> Send<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Выполняем запрос к серверу с помощью jquery ajax: $.post(адрес, {параметры запроса}, функция которая вызывается по завершению запроса)</span>
    $<span style="color: #339933;">.</span>post<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ajax.php&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #009900;">&#123;</span>
        act<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;send&quot;</span><span style="color: #339933;">,</span>  <span style="color: #666666; font-style: italic;">// указываем скрипту, что мы отправляем новое сообщение и его нужно записать</span>
        name<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#pac_name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>val<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// имя пользователя</span>
        text<span style="color: #339933;">:</span> $<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#pac_text&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>val<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//  сам текст сообщения</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
     Load <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// по завершению отправки вызываем функцию загрузки новых сообщений Load()</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#pac_text&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>val<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// очистим поле ввода сообщения</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#pac_text&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>focus<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// и поставим на него фокус</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// очень важно из Send() вернуть false. Если этого не сделать то произойдёт отправка нашей формы, те страница перезагрузится</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> last_message_id <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// номер последнего сообщения, что получил пользователь</span>
<span style="color: #000000; font-weight: bold;">var</span> load_in_process <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// можем ли мы выполнять сейчас загрузку сообщений. Сначала стоит false, что значит - да, можем</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Функция для загрузки сообщений</span>
<span style="color: #000000; font-weight: bold;">function</span> Load<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Проверяем можем ли мы загружать сообщения. Это сделано для того, чтобы мы не начали загрузку заново, если старая загрузка ещё не закончилась.</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>load_in_process<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
            load_in_process <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// загрузка началась</span>
            <span style="color: #666666; font-style: italic;">// отсылаем запрос серверу, который вернёт нам javascript</span>
            $<span style="color: #339933;">.</span>post<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ajax.php&quot;</span><span style="color: #339933;">,</span>
            <span style="color: #009900;">&#123;</span>
                  act<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;load&quot;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// указываем на то что это загрузка сообщений</span>
                  last<span style="color: #339933;">:</span> last_message_id<span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// передаём номер последнего сообщения который получил пользователь в прошлую загрузку</span>
                  <span style="color: #990000;">rand</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #990000;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>getTime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
               <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>result<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// в эту функцию в качестве параметра передаётся javascript код, который мы должны выполнить</span>
                    <span style="color: #990000;">eval</span><span style="color: #009900;">&#40;</span>result<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// выполняем скрипт полученный от сервера</span>
                    $<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;.chat&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>scrollTop<span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;.chat&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>get<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>scrollHeight<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// прокручиваем сообщения вниз</span>
                    load_in_process <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// говорим что загрузка закончилась, можем теперь начать новую загрузку</span>
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;padding: 100px;&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>h1<span style="color: #339933;">&gt;</span>Php Ajax Chat<span style="color: #339933;">&lt;/</span>h1<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;!--</span> Вот в этих <span style="color: #cc66cc;">2</span><span style="color: #339933;">-</span>х div<span style="color: #339933;">-</span>ах будут идти наши сообщения из чата <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;chat r4&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;chat_area&quot;</span><span style="color: #339933;">&gt;&lt;!--</span> Сюда мы будем добавлять новые сообщения <span style="color: #339933;">--&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>form id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pac_form&quot;</span> action<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">&gt;&lt;!--</span> Наша форма с именем<span style="color: #339933;">,</span> сообщением и кнопкой для отправки <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;</span>table style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;width: 100%;&quot;</span><span style="color: #339933;">&gt;</span>
        <span style="color: #339933;">&lt;</span>tr<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>Имя<span style="color: #339933;">:&lt;/</span>td<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;</span>Сообщение<span style="color: #339933;">:&lt;/</span>td<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;</span>
        <span style="color: #339933;">&lt;/</span>tr<span style="color: #339933;">&gt;</span>
        <span style="color: #339933;">&lt;</span>tr<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;!--</span> Поле ввода имени <span style="color: #339933;">--&gt;</span>
                <span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pac_name&quot;</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;r4&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Гость&quot;</span><span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;</span>
&nbsp;
                <span style="color: #339933;">&lt;!--</span> Поле ввода сообщения <span style="color: #339933;">--&gt;</span>
                <span style="color: #339933;">&lt;</span>td style<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;width: 80%;&quot;</span><span style="color: #339933;">&gt;&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;text&quot;</span> id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pac_text&quot;</span> <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;r4&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;</span>
&nbsp;
                <span style="color: #339933;">&lt;!--</span> Кнопка <span style="color: #0000ff;">&quot;Отправить&quot;</span> <span style="color: #339933;">--&gt;</span>
                <span style="color: #339933;">&lt;</span>td<span style="color: #339933;">&gt;&lt;</span>input type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;submit&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Отправить&quot;</span><span style="color: #339933;">&gt;&lt;/</span>td<span style="color: #339933;">&gt;</span>
        <span style="color: #339933;">&lt;/</span>tr<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>table<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>form<span style="color: #339933;">&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>body<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>html<span style="color: #339933;">&gt;</span></pre></div></div>

<p><strong>css.css:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #00AA00;">*</span> <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
body <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">font</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span> <span style="color: #993333;">normal</span> <span style="color: #993333;">normal</span> <span style="color: #933;">16px</span> <span style="color: #ff0000;">&quot;Trebuchet MS&quot;</span><span style="color: #00AA00;">,</span> Arial<span style="color: #00AA00;">,</span> Times<span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#000000</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* Важное свойство */</span>
<span style="color: #6666ff;">.chat</span> <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">500px</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Это позволяет отображать полосу прокрутки */</span>
        <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Это позволяет съезжать тексту в слое, не растягивая страницу */</span>
        <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#818181</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.chat</span> div <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Страница остаётся того же размера */</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.chat</span> span <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #993333;">text</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span>textarea <span style="color: #00AA00;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;"><span style="color: #cc66cc;">100</span>%</span><span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">font</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">normal</span> <span style="color: #993333;">normal</span> <span style="color: #993333;">normal</span> <span style="color: #933;">16px</span> <span style="color: #ff0000;">&quot;Trebuchet MS&quot;</span><span style="color: #00AA00;">,</span> Arial<span style="color: #00AA00;">,</span> Times<span style="color: #00AA00;">;</span>
        <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#818181</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* Для CSS 3 */</span>
<span style="color: #6666ff;">.r4</span> <span style="color: #00AA00;">&#123;</span>
        -moz-border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">4px</span><span style="color: #00AA00;">;</span>
        -khtml-border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">4px</span><span style="color: #00AA00;">;</span>
        -webkit-border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">4px</span><span style="color: #00AA00;">;</span>
        border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">4px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>
Теперь приступим к созданию серверной части чата <strong>ajax.php:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">// настройки для подключения к MySQl</span>
<span style="color: #000088;">$config</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'hostname'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'username'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'password'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'dbname'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'pacdb'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// подключаемся к MySQL, если не вышло то выходим</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'hostname'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">// Выбираем базу данных, если не вышло то выходим</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'dbname'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SET NAMES 'utf8'&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// говорим MySQl'у то что мы будем работать с UTF-8</span>
&nbsp;
<span style="color: #990000;">Header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cache-Control: no-cache, must-revalidate&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// говорим браузеру что-бы он не кешировал эту страницу</span>
<span style="color: #990000;">Header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Pragma: no-cache&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">Header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type: text/javascript; charset=utf-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// говорим браузеру что это javascript в кодировке UTF-8</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// проверяем есть ли переменная act (send или load), которая указываем нам что делать</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'act'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// $_POST['act'] - существует</span>
        <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'act'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">&quot;send&quot;</span> <span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">// если она равняется send, вызываем функцию Send()</span>
                        Send<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">&quot;load&quot;</span> <span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">// если она равняется load, вызываем функцию Load()</span>
                        Load<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">default</span> <span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">// если ни тому и не другому  - выходим</span>
                        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Функция выполняем сохранение сообщения в базе данных</span>
<span style="color: #000000; font-weight: bold;">function</span> Send<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// тут мы получили две переменные переданные нашим java-скриптом при помощи ajax</span>
        <span style="color: #666666; font-style: italic;">// это:  $_POST['name'] - имя пользователя</span>
        <span style="color: #666666; font-style: italic;">// и $_POST['text'] - сообщение</span>
&nbsp;
        <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// обрезаем до 200 символов</span>
        <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// заменяем опасные теги (&lt;h1&gt;,&lt;br&gt;, и прочие) на безопасные</span>
        <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// функция экранирует все спец-символы в unescaped_string , вследствие чего, её можно безопасно использовать в mysql_query()</span>
&nbsp;
        <span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'text'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// обрезаем до 200 символов</span>
        <span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// заменяем опасные теги (&lt;h1&gt;,&lt;br&gt;, и прочие) на безопасные</span>
        <span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// функция экранирует все спец-символы в unescaped_string , вследствие чего, её можно безопасно использовать в mysql_query()</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// добавляем новую запись в таблицу messages</span>
        <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;INSERT INTO messages (name,text) VALUES ('&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;', '&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$text</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;')&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// функция выполняем загрузку сообщений из базы данных и отправку их пользователю через ajax виде java-скрипта</span>
<span style="color: #000000; font-weight: bold;">function</span> Load<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// тут мы получили переменную переданную нашим java-скриптом при помощи ajax</span>
        <span style="color: #666666; font-style: italic;">// это:  $_POST['last'] - номер последнего сообщения которое загрузилось у пользователя</span>
&nbsp;
        <span style="color: #000088;">$last_message_id</span> <span style="color: #339933;">=</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'last'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// возвращает целое значение переменной</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// выполняем запрос к базе данных для получения 10 сообщений последних сообщений с номером большим чем $last_message_id</span>
        <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM messages WHERE ( id &gt; <span style="color: #006699; font-weight: bold;">$last_message_id</span> ) ORDER BY id DESC LIMIT 10&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// проверяем есть ли какие-нибудь новые сообщения</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">// начинаем формировать javascript который мы передадим клиенту</span>
                <span style="color: #000088;">$js</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'var chat = $(&quot;#chat_area&quot;);'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// получаем &quot;указатель&quot; на div, в который мы добавим новые сообщения</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// следующий конструкцией мы получаем массив сообщений из нашего запроса</span>
                <span style="color: #000088;">$messages</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$messages</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$row</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// записываем номер последнего сообщения</span>
                <span style="color: #666666; font-style: italic;">// [0] - это вернёт нам первый элемент в массиве $messages, но так как мы выполнили запрос с параметром &quot;DESC&quot; (в обратном порядке),</span>
                <span style="color: #666666; font-style: italic;">// то это получается номер последнего сообщения в базе данных</span>
                <span style="color: #000088;">$last_message_id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$messages</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// переворачиваем массив (теперь он в правильном порядке)</span>
                <span style="color: #000088;">$messages</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_reverse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$messages</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// идём по всем элементам массива $messages</span>
                <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$messages</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$value</span> <span style="color: #009900;">&#41;</span>
                <span style="color: #009900;">&#123;</span>
                        <span style="color: #666666; font-style: italic;">// продолжаем формировать скрипт для отправки пользователю</span>
                        <span style="color: #000088;">$js</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'chat.append(&quot;&lt;span&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&amp;raquo; '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'text'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/span&gt;&quot;);'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// добавить сообщние (&lt;span&gt;Имя &amp;raquo; текст сообщения&lt;/span&gt;) в наш div</span>
                <span style="color: #009900;">&#125;</span>
&nbsp;
                <span style="color: #000088;">$js</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;last_message_id = <span style="color: #006699; font-weight: bold;">$last_message_id</span>;&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// запишем номер последнего полученного сообщения, что бы в следующий раз начать загрузку с этого сообщения</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// отправляем полученный код пользователю, где он будет выполнен при помощи функции eval()</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$js</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p><strong>Чат готов!</strong><br />
<strong>Скачать чат</strong> можно <a href="http://www.box.net/shared/jtvflncjr3">тут</a>.<br />
А полноценный чат тут: <a href="http://elfet.ru/elfchat/">ElfChat</a> =)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elfet.ru/jquery/php-ajax-chat/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>О новом ElfChat 5</title>
		<link>http://blog.elfet.ru/elfchat/%d0%be-%d0%bd%d0%be%d0%b2%d0%be%d0%bc-elfchat-5/</link>
		<comments>http://blog.elfet.ru/elfchat/%d0%be-%d0%bd%d0%be%d0%b2%d0%be%d0%bc-elfchat-5/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 22:11:39 +0000</pubDate>
		<dc:creator>Elfet</dc:creator>
				<category><![CDATA[ElfChat]]></category>

		<guid isPermaLink="false">http://blog.elfet.ru/?p=17</guid>
		<description><![CDATA[Привет всем!
Начну сразу с нового скрина чата:

Многое в ElfChat 5 уже сделано, однако многое остаётся ещё недоделанным. Так что вероятнее выйдет он только в начале следующего года.
Главное это то что я определился с путём развития чата, и уже приступил к написанию задуманных функций.
Открывать все тайны о ElfChat 5 я не буду.
Скажу только то что в [...]]]></description>
			<content:encoded><![CDATA[<p>Привет всем!</p>
<p>Начну сразу с нового скрина чата:</p>
<p><a href="http://img194.imageshack.us/img194/6088/elfchat5.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://img194.imageshack.us/img194/6088/elfchat5.png" border="0" alt="" width="641" height="409" /></a></p>
<p>Многое в ElfChat 5 уже сделано, однако многое остаётся ещё недоделанным. Так что вероятнее выйдет он только в начале следующего года.<br />
Главное это то что я определился с путём развития чата, и уже приступил к написанию задуманных функций.<br />
Открывать все тайны о ElfChat 5 я не буду.<br />
Скажу только то что в новой версии будут нативные шаблоны, что ещё упростит создание скинов к чату. Сразу после выхода 5-ки, я ожидаю в короткий срок большого количества новых скинов.<br />
Так же ещё увеличу производительность чата и уменьшу объем передаваемых данных.<br />
Будет больше функций для модерирования чата, такие как моментальное удаление сообщения из чата, и тп.<br />
Ещё не решён вопрос с архивом: рассматриваю вариант вообще его убрать из 5-ки.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elfet.ru/elfchat/%d0%be-%d0%bd%d0%be%d0%b2%d0%be%d0%bc-elfchat-5/feed/</wfw:commentRss>
		<slash:comments>63</slash:comments>
		</item>
		<item>
		<title>Плагин jQuery.Matrix</title>
		<link>http://blog.elfet.ru/jquery/jquery-matrix/</link>
		<comments>http://blog.elfet.ru/jquery/jquery-matrix/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 09:22:39 +0000</pubDate>
		<dc:creator>Elfet</dc:creator>
				<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.elfet.ru/?p=5</guid>
		<description><![CDATA[Простой плагин создания эффекта матрицы для текста.
Демо

jQuery.fn.matrix = function &#40;options&#41; &#123;
    var options = jQuery.extend&#40;&#123;
	  mask: &#34;QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ&#34;,
	  speed: 100
	&#125;, options&#41;;
&#160;
    var iteration = function &#40;obj, i, char, n&#41; &#123;
	    var char_obj = obj.find&#40;'#char'+i&#41;;
		if&#40;n &#60; 0&#41; &#123;
			var rand = Math.ceil&#40;options.mask.length*Math.random&#40;&#41;&#41; - 1; // random between [...]]]></description>
			<content:encoded><![CDATA[<p>Простой плагин создания эффекта матрицы для текста.</p>
<p><a href="http://blog.elfet.ru/demo/jquery.matrix.html" target="_self">Демо</a></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery.<span style="color: #660066;">fn</span>.<span style="color: #660066;">matrix</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> options <span style="color: #339933;">=</span> jQuery.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	  mask<span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ&quot;</span><span style="color: #339933;">,</span>
	  speed<span style="color: #339933;">:</span> <span style="color: #CC0000;">100</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> iteration <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>obj<span style="color: #339933;">,</span> i<span style="color: #339933;">,</span> char<span style="color: #339933;">,</span> n<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	    <span style="color: #003366; font-weight: bold;">var</span> char_obj <span style="color: #339933;">=</span> obj.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#char'</span><span style="color: #339933;">+</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>n <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003366; font-weight: bold;">var</span> rand <span style="color: #339933;">=</span> Math.<span style="color: #660066;">ceil</span><span style="color: #009900;">&#40;</span>options.<span style="color: #660066;">mask</span>.<span style="color: #660066;">length</span><span style="color: #339933;">*</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// random between 0 - options.mask.length</span>
			char_obj.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span>options.<span style="color: #660066;">mask</span><span style="color: #009900;">&#91;</span>rand<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				iteration<span style="color: #009900;">&#40;</span>obj<span style="color: #339933;">,</span> i<span style="color: #339933;">,</span> char<span style="color: #339933;">,</span> n <span style="color: #339933;">-</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> options.<span style="color: #660066;">speed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
		    char_obj.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span>char<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> obj <span style="color: #339933;">=</span> jQuery<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> text <span style="color: #339933;">=</span> obj.<span style="color: #660066;">text</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> text_length <span style="color: #339933;">=</span> text.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> array <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span>text_length<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> text_length<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>text.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">' '</span> <span style="color: #339933;">&amp;&amp;</span> text.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				array<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'&lt;span id=&quot;char'</span> <span style="color: #339933;">+</span> i <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;&gt;'</span> <span style="color: #339933;">+</span> text.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/span&gt;'</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			    array<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> text.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span> 
&nbsp;
		obj.<span style="color: #660066;">html</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;pre&gt;'</span> <span style="color: #339933;">+</span> array.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/p'</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'re&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> text_length<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>text.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">' '</span> <span style="color: #339933;">&amp;&amp;</span> text.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		    	<span style="color: #003366; font-weight: bold;">var</span> rand <span style="color: #339933;">=</span> Math.<span style="color: #660066;">ceil</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">*</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// random between 1 - 100</span>
		    	<span style="color: #003366; font-weight: bold;">var</span> time <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">5</span> <span style="color: #339933;">*</span> rand <span style="color: #339933;">/</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #CC0000;">1000</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// time in milisec</span>
		    	<span style="color: #003366; font-weight: bold;">var</span> repeat <span style="color: #339933;">=</span> Math.<span style="color: #660066;">round</span><span style="color: #009900;">&#40;</span> time <span style="color: #339933;">/</span> options.<span style="color: #660066;">speed</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		    	iteration<span style="color: #009900;">&#40;</span>obj<span style="color: #339933;">,</span> i<span style="color: #339933;">,</span> text.<span style="color: #660066;">charAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> repeat<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		    <span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.elfet.ru/jquery/jquery-matrix/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
	</channel>
</rss>
