<?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://zlob.in/category/web-razrabotki/feed/" rel="self" type="application/rss+xml" />
	<link>http://zlob.in</link>
	<description>Information must be free</description>
	<lastBuildDate>Mon, 06 Jun 2011 12:42:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>UUID в MySQL</title>
		<link>http://zlob.in/2011/uuid-v-mysql/</link>
		<comments>http://zlob.in/2011/uuid-v-mysql/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 10:34:18 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=903</guid>
		<description><![CDATA[В этой статьей я предлагаю рассмотреть UUID как альтернативу привычному всем нам первичному ключу. Взглянуть на его плюсы и минусы. И понять где его стоит использовать. UUID расшифровывается как Universal Unique Identifier (Универсальный Уникальный Идентификатор). UUID – это 32 байтная строка, разделенная четырьмя дефисами (всего 36 символов) состоящая из пяти шестнадцатеричных чисел в формате aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee . Если в MySQL [...]]]></description>
			<content:encoded><![CDATA[<div>В этой статьей я предлагаю рассмотреть UUID как альтернативу привычному всем нам первичному ключу. Взглянуть на его плюсы и минусы. И понять где его стоит использовать.</div>
<div></div>
<div>UUID расшифровывается как Universal Unique Identifier (Универсальный Уникальный Идентификатор). UUID – это 32 байтная строка, разделенная четырьмя дефисами (всего 36 символов) состоящая из пяти шестнадцатеричных чисел в формате aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee . Если в MySQL мы привыкли для первичного ключа и счётчика использовать поле AutoIncrement типа Int, то для MSSQL UUID &#8211; это стандартный счётчик.</div>
<div></div>
<div>Функция UUID() в MySQL возвращает этот самый идентификатор, который генерируется в соотвествии со спецификациями. Эта функция появилась в версии MySQL 4.1.2.</div>
<p>Выполнив запрос:</p>
<p>SELECT UUID();</p>
<p>мы получим что-то на подобии этого: <span style="font-family: sans-serif; line-height: normal; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;">c427934f-2adc-11e0-8aae-cf2343e5b2ce</span></p>
<blockquote><p>Первые три числа генерируются на основе временной метки.</p>
<p>Четвертое число предохраняет темпоральную уникальность в случае, если значение временной метки теряет монотонность (например, из-за перехода на летнее время и обратно).</p>
<p>Пятое число &#8211; это номер узла ШЕЕ 802, который представляет пространственную уникальность. Случайное число подставляется в случае, если последнее недоступно (например, если компьютер-хост не имеет сетевой платы Ethernet, или нет возможности извлечь аппаратный адрес интерфейса вашего компьютера). В этом случае пространственная уникальность не может быть гарантирована. Однако, несмотря на это, коллизии крайне маловероятны. В настоящее время МАС-адрес интерфейса принимается во внимание только в средах FreeBSD и Linux. В других операционных системах MySQL использует случайно сгенерированное 48-разрядное число.</p></blockquote>
<div>UUIDы созданы быть уникальными не только для отдельной таблицы, но и для всех таблиц и баз данных. Если вам требуется поле, которое должно оставаться уникальным для всех систем, то UUIDы подходят лучше всего.</div>
<div>Например, если в CakePHP определите первичный ключ типа <em>CHAR(36)</em> или <em>BINARY(36)</em>, то он будет автоматически генерировать UUIDы при добавлении новой записи.</div>
<p>Чем плох UUID:</p>
<ol>
<li>тем, что он просто длиннее, чем int и, соответственно, медленнее;</li>
<li>тем, что его значения не идут по порядку. и функция &laquo;неявного времени&raquo; таким образом отсутствует;</li>
<li>тем, что пока не работает с репликацией.</li>
</ol>
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2011/utilita-bcp-dlya-eksportaimporta-v-mssql/" rel="bookmark" title="26 января 2011">Утилита BCP для экспорта\импорта в MSSQL</a></li>
<li><a href="http://zlob.in/2010/konverter-sqlite-to-mysql/" rel="bookmark" title="28 июля 2010">Конвертер SQLite to Mysql</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
<li><a href="http://zlob.in/2009/php-s-mssql/" rel="bookmark" title="16 июля 2009">PHP с MsSQL</a></li>
<li><a href="http://zlob.in/2009/s-novym-godom/" rel="bookmark" title="30 декабря 2009">С НОВЫМ ГОДОМ!</a></li>
</ul>
<p><!-- Similar Posts took 3.749 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2011/uuid-v-mysql/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Архитектура сайтов с высокой нагрузкой</title>
		<link>http://zlob.in/2011/arxitektury-sajtov-s-vysokoj-nagruzkoj/</link>
		<comments>http://zlob.in/2011/arxitektury-sajtov-s-vysokoj-nagruzkoj/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 15:01:14 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=1012</guid>
		<description><![CDATA[Архитектура Вконтакте Архитектура Google Архитектура Facebook Архитектура Flickr Архитектура Amazon Архитектура YouTube Архитектура Friends for Sale Архитектура Wikimedia Архитектура Digg Архитектура LiveJournal Архитектура Twitter Архитектура Google Talk Архитектура 37signals Архитектура Mailinator Архитектура LinkedIn Архитектура MySpace Архитектура Stack Overflow Архитектура Plenty of Fish Может быть Вам это интересно? Microsoft vs Yahoo кто кого? Будь проще Халявные [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.insight-it.ru/masshtabiruemost/arkhitektura-vkontakte/" target="_blank">Архитектура Вконтакте</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-google/" target="_blank">Архитектура Google</a><br />
<a href="http://www.insight-it.ru/masshtabiruemost/arkhitektura-facebook/" target="_blank">Архитектура Facebook</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-flickr/" target="_blank">Архитектура Flickr</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-amazon/" target="_blank">Архитектура Amazon</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-youtube/" target="_blank">Архитектура YouTube</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-friends-for-sale/" target="_blank">Архитектура Friends for Sale</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-wikimedia/" target="_blank">Архитектура Wikimedia</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-digg/" target="_blank">Архитектура Digg</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-livejournal/" target="_blank">Архитектура LiveJournal</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-twitter/" target="_blank">Архитектура Twitter</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-googletalk/" target="_blank">Архитектура Google Talk</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-37signals/" target="_blank">Архитектура 37signals</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-mailinator/" target="_blank">Архитектура Mailinator</a><br />
<a href="http://www.insight-it.ru/net/scalability/arkhitektura-linkedin/" target="_blank">Архитектура LinkedIn</a><br />
<a href="http://www.insight-it.ru/masshtabiruemost/arkhitektura-myspace/" target="_blank">Архитектура MySpace</a><br />
<a href="http://www.insight-it.ru/masshtabiruemost/arkhitektura-stack-overflow/" target="_blank">Архитектура Stack Overflow</a><br />
<a href="http://www.insight-it.ru/masshtabiruemost/arkhitektura-plenty-of-fish/" target="_blank">Архитектура Plenty of Fish</a><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2008/microsoft-vs-yahoo-kto-kogo/" rel="bookmark" title="6 мая 2008">Microsoft vs Yahoo кто кого?</a></li>
<li><a href="http://zlob.in/2008/bud-proshhe/" rel="bookmark" title="25 ноября 2008">Будь проще</a></li>
<li><a href="http://zlob.in/2008/xalyavnye-semiznaki/" rel="bookmark" title="7 июня 2008">Халявные семизнаки</a></li>
<li><a href="http://zlob.in/2008/polezno-pochitat/" rel="bookmark" title="21 сентября 2008">Полезно почитать</a></li>
<li><a href="http://zlob.in/2009/ipod-touch/" rel="bookmark" title="29 мая 2009">Ipod touch</a></li>
</ul>
<p><!-- Similar Posts took 2.725 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2011/arxitektury-sajtov-s-vysokoj-nagruzkoj/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Утилита BCP для экспорта\импорта в MSSQL</title>
		<link>http://zlob.in/2011/utilita-bcp-dlya-eksportaimporta-v-mssql/</link>
		<comments>http://zlob.in/2011/utilita-bcp-dlya-eksportaimporta-v-mssql/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 08:23:34 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=994</guid>
		<description><![CDATA[Есть одна отличная утилита от Майкрософт, которая идёт в поставке вместе с SQL Server. И насколько я покопался в интернете утилита особой популярности не взыскала (особенно это заметно на хабре, учитывая почти полное отсутствие статей на эту тематику). А зря! BCP предназначена для быстрого, можно сказать оочень быстрого экспорта-импорта данных для MSSQL. Запускается эта утилита [...]]]></description>
			<content:encoded><![CDATA[<p>Есть одна отличная утилита от Майкрософт, которая идёт в поставке вместе с SQL Server.<br />
И насколько я покопался в интернете утилита особой популярности не взыскала (особенно это заметно на хабре, учитывая почти полное отсутствие статей на эту тематику). А зря!</p>
<p>BCP предназначена для быстрого, можно сказать оочень быстрого экспорта-импорта данных для MSSQL. Запускается эта утилита из командной строки, видимо тот факт, что её особо нигде не афишировали (в частности в меню для SQL сервера) и послужило тому, что её мало используют.</p>
<p>Описывать как её применять я не буду, для этого есть <a href="http://msdn.microsoft.com/ru-ru/library/aa337544(v=sql.90).aspx" target="_blank">MSDN</a>. В данном посте я опишу пример конкретной задачи, которую пришлось решить при помощи BCP.</p>
<blockquote><p>Задача: написать скрипт при помощи которого можно будет делать регулярный экспорт данных из таблицы в файл, CSV формата.</p>
<p>Пояснение: у нас имеется таблица пользователей для определенного сайта. И раз в неделю необходимо экспортировать данные о юзерах в файл формата, похожим на CSV. При этом нужно учитывать, что данные не должны содержать определенных символов, т.е. левые символы (список имеется) нужно удалять.</p></blockquote>
<p>Для примера я приведу самые простой набор полей в таблице. Чтобы не усложнять все это дело.</p>
<p>Возьмём абстрактную таблицу с пользователями:</p>
<p><em>[Users]<br />
&#8211; id<br />
&#8211; FirstName<br />
&#8211; LastName<br />
&#8211; DateOfBirth<br />
&#8211; sex<br />
&#8211; confirm </em></p>
<p>и таблицу, где у нас хранится последний отгруженный ID юзера, дата отгрузки и кол-во пользователей.</p>
<p><em>[Counters]<br />
</em><em> &#8212; id<br />
</em><em> &#8212; lid<br />
</em><em> &#8212; counters<br />
</em><em> &#8212; DateOut </em></p>
<p>Для начала напишем функцию для MSSQL которая будет удалять все ненужные символы (&lt;,&gt;,|):</p>
<pre><code>
CREATE FUNCTION [dbo].my_replace(@str nvarchar(4000))
RETURNS nvarchar(4000)
AS
BEGIN
    DECLARE @mydata nvarchar(4000);
    SET @mydata = REPLACE(REPLACE(REPLACE(@str,'&lt;',''),'&gt;',''),'|','');
    RETURN(@mydata);
END;
</code></pre>
<div>Теперь нужно выполнить эту функцию и обязательно в области видимости BCP.</div>
<div>Приступим к SQL коду, который будет вытаскивать все данные из базы. Т.к. может случиться так, что подзапросы будут запрещены, то запихнём результаты в переменные.</div>
<pre><code>DECLARE @id integer;
DECLARE @lid integer;
DECLARE @counter integer;
SET @id = (SELECT TOP 1 lid
                FROM [dbo].[Counters]
                ORDER BY id DESC);
SET @lid = (SELECT TOP 1 id
                 FROM [dbo].[Users]
                 ORDER BY id DESC);
SET @counter = (SELECT COUNT([Users].[id])
                        FROM [dbo].[Users]
                        WHERE [dbo].[Users].[id]&gt;@id);</code></pre>
<div>Теперь формируем сам заголовок полей для файла, заметьте, что у нас появилось ещё одно поле, которого нет в таблице, но которое нужно для отгрузки данных. Помимо написанной нами ранее функции удаления лишних данных, нужно переконвертировать все данные в строковый формат, т.к. используется UNION и тип, и количество полей должны совпадать. Форматы преобразования для даты можно найти по этой ссылке <a href="http://msdn.microsoft.com/ru-ru/library/ms187928.aspx">http://msdn.microsoft.com/ru-ru/library/ms187928.aspx</a>.</div>
<pre><code>
SELECT  'id' as c1, 'FirstName' as c2, 'LastName' as c3,
 'DateOfBirth' as c4, 'sex' as c5, 'confirm' as c6, 'country'  as c7
UNION all
          SELECT Convert(nvarchar, [id]),
              [dbo].my_replace([FirstName]) as FirstName,
              [dbo].my_replace([LastName]) as LastName,
              Convert(nvarchar, [Dateofbirth], 120),
              Convert(nvarchar, [sex]),
              Convert(nvarchar, [confirm]),
              'ru'
          FROM [dbo].[Users]
          WHERE Id &gt; @id; </code></pre>
<div>И после получения данных добавляем в нашу таблицу &laquo;счетчик&raquo; необходимые данные.</div>
<pre><code>INSERT INTO
    [dbo].[import_counter]
         ([lid], [counters], [<em>DateOut</em>])
    VALUES
         (@lid, @counter, GETDATE());
</code></pre>
<div>Приступим к самой BCP.</div>
<div><em>bcp &laquo;&lt;SQL_CODE&gt;&raquo; queryout d:\file.txt -c -t &laquo;||&raquo; -r &laquo;\n&raquo; -C 65001 -T -S &lt;SERVER_ADDRESS&gt; -U &lt;USER_NAME&gt; -P &lt;USER_PASS&gt;</em></div>
<div><em><br />
</em></div>
<div style="padding-left: 30px;">queryout d:\file.txt &#8211; означает, что результат запроса будет помещен в файл</div>
<div style="padding-left: 30px;">-c <em>выполняет операцию, используя символьный тип данных. </em></div>
<div style="padding-left: 30px;">-t &laquo;||&raquo; <em>назначает разделитель между полями</em></div>
<div style="padding-left: 30px;">-r &laquo;\n&raquo; <em>назначает символ конца строки</em></div>
<div style="padding-left: 30px;">-C 65001 <em>указывает используемую кодировку (UTF8 в данном случае)</em></div>
<div style="padding-left: 30px;">-T <em>указывает, что программа <strong>bcp</strong> выполняет подключение к SQL Server по доверенному соединению с помощью встроенной безопасности. (если не удастся соединиться по доверенному соединению будут использованы логин и пароль указанные дальше)</em></div>
<div><em><br />
</em></div>
<div style="padding-left: 30px;">Вместо &lt;SQL_CODE&gt; вставляем весь наш получившийся SQL код, кроме функции. Её нужно выполнить заранее. &lt;SERVER_ADDRESS&gt;  - адрес SQL сервера</div>
<div style="padding-left: 30px;">&lt;USER_NAME&gt;              - имя пользователя для подключения к SQL</div>
<div style="padding-left: 30px;">&lt;USER_PASS&gt;                - пароль пользователя</div>
<div style="padding-left: 30px;"></div>
<div>Вот собственно и всё. Вполне может быть кому-то пригодится. Да и пусть будет здесь сохранено, чтобы самому не забыть.</div>
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2010/xranimye-procedury-v-mysql/" rel="bookmark" title="26 августа 2010">Хранимые процедуры в MySQL</a></li>
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch1/" rel="bookmark" title="16 мая 2008">Ускоряем работу скриптов ч.1</a></li>
<li><a href="http://zlob.in/2010/ustanovka-ape-na-centos/" rel="bookmark" title="16 января 2010">Установка APE на CentOS</a></li>
<li><a href="http://zlob.in/2009/utf-i-problema-s-russkimi-bukvami-i-sh/" rel="bookmark" title="21 января 2009">UTF и проблема с русскими буквами И, ш</a></li>
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch3/" rel="bookmark" title="22 мая 2008">Ускоряем работу скриптов ч.3</a></li>
</ul>
<p><!-- Similar Posts took 2.900 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2011/utilita-bcp-dlya-eksportaimporta-v-mssql/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Хранимые процедуры в MySQL</title>
		<link>http://zlob.in/2010/xranimye-procedury-v-mysql/</link>
		<comments>http://zlob.in/2010/xranimye-procedury-v-mysql/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 07:08:59 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=853</guid>
		<description><![CDATA[Раньше мне как-то не приходилось работать с процедурами в MySQL. Решил заполнить этот пробел хоть каким-то практическим опытом. Хранимые процедуры появились в MySQL начиная с пятой версии. У меня дома как раз установлена версия 5.1. Хранимые процедуры представляют собой набор команд SQL, которые могут компилироваться и храниться на сервере. Таким образом, вместо того, чтобы хранить [...]]]></description>
			<content:encoded><![CDATA[<p>Раньше мне как-то не приходилось работать с процедурами в MySQL. Решил заполнить этот пробел хоть каким-то практическим опытом. Хранимые процедуры появились в MySQL начиная с пятой версии. У меня дома как раз установлена версия 5.1.</p>
<blockquote><p>Хранимые процедуры представляют собой набор команд SQL, которые могут компилироваться и храниться на сервере. Таким образом, вместо того, чтобы хранить часто используемый запрос, клиенты могут ссылаться на соответствующую хранимую процедуру. Это обеспечивает лучшую производительность, поскольку данный запрос должен анализироваться только однажды и уменьшается трафик между сервером и клиентом. Концептуальный уровень можно также повысить за счет создания на сервере библиотеки функций.</p></blockquote>
<p>Для примера приведу написанный мной код процедуры, которая заполняет таблицу</p>
<blockquote><p>· id: INT (AI)<br />
· name: VARCHAR (&laquo;тест&raquo;)<br />
· desc: LONGTEXT (&laquo;текст&raquo;)<br />
· uid: INT (рандом)</p></blockquote>
<p>случайными значениями:</p>
<pre><code>DELIMITER $$
DROP PROCEDURE IF EXISTS `p1`$$
CREATE PROCEDURE `p1`()
BEGIN
	DECLARE id INT;
	DECLARE my_name VARCHAR(255);
	DECLARE description LONGTEXT;
	DECLARE uid INT;
	SET id = 1;
	WHILE id &lt; 5 DO
		SET my_name = CONCAT_WS(' ', MD5( RAND() ), id);
		SET description = CONCAT_WS(' ', 'is desc', my_name);
		SET uid = FLOOR( 1 + RAND() * ( 250000 - 1 ));
		INSERT INTO my_table VALUES (id,my_name,description,uid);
		SET id = id + 1;
	END WHILE;
END$$
DELIMITER ;
</code></pre>
<p>Основная проблема с которой я столкнулся при написании &#8211; это то, что при добавлении вываливалась ошибка. Однако это всё было решено выставлением разделителя:</p>
<pre><code>DELIMITER $$</code></pre>
<p>Вот в <a href="http://www.zoonman.ru/library/mysql_sr_and_t.htm" target="_blank">этой</a> статьей очень подробно описано что такое хранимые процедуры и с чем их есть.<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2011/utilita-bcp-dlya-eksportaimporta-v-mssql/" rel="bookmark" title="26 января 2011">Утилита BCP для экспорта\импорта в MSSQL</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
<li><a href="http://zlob.in/2011/uuid-v-mysql/" rel="bookmark" title="27 февраля 2011">UUID в MySQL</a></li>
<li><a href="http://zlob.in/2010/konverter-sqlite-to-mysql/" rel="bookmark" title="28 июля 2010">Конвертер SQLite to Mysql</a></li>
<li><a href="http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/" rel="bookmark" title="8 октября 2009">Установка nginx,eaccelerator и обновление php,mysql,apache на CentOS</a></li>
</ul>
<p><!-- Similar Posts took 2.973 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/xranimye-procedury-v-mysql/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Конвертер SQLite to Mysql</title>
		<link>http://zlob.in/2010/konverter-sqlite-to-mysql/</link>
		<comments>http://zlob.in/2010/konverter-sqlite-to-mysql/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 06:18:11 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=857</guid>
		<description><![CDATA[Понадобилось мне конвертировать базу из SQLite в мускул. Начав искать инфу наткнулся на платный софт. На офф. сайте предлагается изменение через командную строку. Но зачем нам такие сложности? Есть решение намного проще, быстрее, а главное &#8211; бесплатно. Для этого нам понадобятся: браузер Firefox и сама база которую надо переконвертировать. Открываем Firefox &#8211; и устанавливаем дополнение [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне конвертировать базу из SQLite в мускул. Начав искать инфу наткнулся на платный софт. На <a href="http://www.sqlite.org/sqlite.html" target="_blank">офф. сайте</a> предлагается изменение через командную строку. Но зачем нам такие сложности?</p>
<p>Есть решение намного проще, быстрее, а главное &#8211; бесплатно. Для этого нам понадобятся: браузер Firefox и сама база которую надо переконвертировать.</p>
<ul>
<li>Открываем Firefox &#8211; и устанавливаем дополнение &laquo;SQLite Manager&raquo;</li>
<li>После установки и перезапуска браузера переходим в меню &laquo;Инструменты -&gt; SQLite Manager&raquo;</li>
<li>Жмём значёк с открытой папкой &laquo;Connect Database&raquo; и выбираем нашу базу.</li>
<li>Выполняем пункт меню &laquo;Database -&gt; Export Database &laquo;. Утилита выдаст нам окно созрания *.sql файла.</li>
<li>Теперь нужно пройтись по файлу и провести конвертацию SQLite синтаксиса в Mysql, например  AUTOINCREMENT   заменяем на AUTO_INCREMENT.</li>
</ul>
<p>Бесплатная конвертация из SQLite в Mysql &#8211; это очень легко!<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2011/uuid-v-mysql/" rel="bookmark" title="27 февраля 2011">UUID в MySQL</a></li>
<li><a href="http://zlob.in/2009/centos/" rel="bookmark" title="22 сентября 2009">CentOS</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
<li><a href="http://zlob.in/2008/podderzhi-rossiyu-progolosuj-za-rf/" rel="bookmark" title="28 мая 2008">Поддержи Россию, проголосуй за .РФ!</a></li>
<li><a href="http://zlob.in/2010/xranimye-procedury-v-mysql/" rel="bookmark" title="26 августа 2010">Хранимые процедуры в MySQL</a></li>
</ul>
<p><!-- Similar Posts took 20.756 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/konverter-sqlite-to-mysql/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Говнокод</title>
		<link>http://zlob.in/2010/govnokod/</link>
		<comments>http://zlob.in/2010/govnokod/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 11:42:40 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=859</guid>
		<description><![CDATA[Совершенно случайно открыл для себя замечательный ресурс с КУЧАМИ&#8230; просто морем говнокода - линк. Для программистов зайти туда полистать код &#8211; как баш.орг почитать. Я там даже стих нашёл ) Растворился в похапе, как в океане-море Крыша едет и течет, чао, бомбино, сорри.. Каша кода и шаблонов, где найти энкодер? Разгребу за &#171;Доширак&#187;, я ведь быдлокодер!! [...]]]></description>
			<content:encoded><![CDATA[<p>Совершенно случайно открыл для себя замечательный ресурс с КУЧАМИ&#8230; просто морем говнокода - <a href="http://govnokod.ru" target="_blank">линк</a>.</p>
<p>Для программистов зайти туда полистать код &#8211; как баш.орг почитать. Я там даже стих нашёл )</p>
<blockquote><p>Растворился в похапе, как в океане-море<br />
Крыша едет и течет, чао, бомбино, сорри..<br />
Каша кода и шаблонов, где найти энкодер?<br />
Разгребу за &laquo;Доширак&raquo;, я ведь быдлокодер!!</p>
<p>Этот код писал индус, сука, злоебучий<br />
Буду все писать с нуля, я намного круче!<br />
Левой код пишу в блокноте, правой с телкой в аське..<br />
Называй меня теперь быдлокодер Вася!!</p></blockquote>
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">похожие записи не найдены
</ul>
<p><!-- Similar Posts took 1.242 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/govnokod/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>Требуется FLASH-developer</title>
		<link>http://zlob.in/2010/trebuetsya-flash-developer/</link>
		<comments>http://zlob.in/2010/trebuetsya-flash-developer/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 03:44:52 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=845</guid>
		<description><![CDATA[На постоянную удалённую работу в международную компанию мы ищем Flash-разработчика. Предлагаем: Полный рабочий день; Дружный и профессиональный коллектив; 100% занятость в течении 8 часов по проектам компании; Зарплату в размере от 30.000 до 40.000 рублей ( ~180.000 тенге ) &#8211; по итогам собеседования для граждан РФ – официальное оформление по ТК, белая зп, отпуск; для [...]]]></description>
			<content:encoded><![CDATA[<p>На постоянную удалённую работу в международную компанию мы ищем Flash-разработчика.</p>
<p><strong>Предлагаем:</strong></p>
<ul>
<li><span style="font-size: small;">Полный рабочий день;</span></li>
<li><span style="font-size: small;">Дружный и профессиональный коллектив;</span></li>
<li><span style="font-size: small;">100% занятость в течении 8 часов по проектам компании;</span></li>
<li><span style="font-size: small;">Зарплату в размере от 30.000 до 40.000 рублей ( ~180.000 тенге ) &#8211; по итогам собеседования</span></li>
<li><span style="font-size: small;">для граждан РФ – официальное оформление по ТК, белая зп, отпуск;</span></li>
<li><span style="font-size: small;">для граждан из других стран – оформление оговаривается в индивидуальном порядке в зависимости от страны</span></li>
</ul>
<p><strong>Требования:</strong></p>
<ul>
<li><span style="font-size: small;">Отличное знание Action Script 3(2);</span></li>
<li><span style="font-size: small;">Flash UI;</span></li>
<li><span style="font-size: small;">создание анимации;</span></li>
<li><span style="font-size: small;">знание разговорного английского;</span></li>
<li><span style="font-size: small;">наличие skype;</span></li>
<li><span style="font-size: small;">большим плюсом будет знание всяческих API (Vkontakte, Facebook и т.д.);</span></li>
<li><span style="font-size: small;">приветствуется знание html, php, asp;</span></li>
<li><span style="font-size: small;"><span style="font-family: Verdana, sans-serif; vertical-align: top; outline-style: none; outline-width: initial; outline-color: initial; font-size: 14px; color: red; padding: 0px; margin: 0px;">Обязательно</span> наличие портфолио.</span></li>
</ul>
<p><strong>Контакты:</strong></p>
<p>skype: <a href="callto:creastar-group" target="_self">creastar-group</a></p>
<p><em><strong><span style="color: #c0c0c0;">Вакансия действительна в течении данной недели 13.07 &#8211; 16.07.</span></strong></em><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/html-5-ne-za-gorami/" rel="bookmark" title="29 июля 2009">HTML 5 не за горами</a></li>
<li><a href="http://zlob.in/2011/baza-flesh-igr/" rel="bookmark" title="6 июня 2011">База флэш-игр</a></li>
<li><a href="http://zlob.in/2009/desyatka-samyx-krasivyx-i-originalnyx-sajtov/" rel="bookmark" title="9 мая 2009">Десятка самых красивых и оригинальных сайтов (ч1)</a></li>
<li><a href="http://zlob.in/2009/podklyuchenie-po-ssh/" rel="bookmark" title="2 февраля 2009">Подключение по ssh</a></li>
<li><a href="http://zlob.in/2008/kreastar-na-award/" rel="bookmark" title="8 июня 2008">КреаСтар на Award</a></li>
</ul>
<p><!-- Similar Posts took 2.613 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/trebuetsya-flash-developer/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>YouTube API &amp; JavaScript Upload</title>
		<link>http://zlob.in/2010/youtube-api-javascript-upload/</link>
		<comments>http://zlob.in/2010/youtube-api-javascript-upload/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 13:32:59 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=794</guid>
		<description><![CDATA[Задача: залить видео на ютуб при помощи браузера, html и JS и получить статус запроса и ID загруженного видео. Никаких серверных технологий не используется. Only native JS. Задача довольно не тривиальная. И поиск подобной реализации в сети не увенчался успехом. Создано по мотивам AJAX-транспорт Iframe, AjaxFileUpload и YouTube API. Основано на JQuery. Но при желании можно переделать [...]]]></description>
			<content:encoded><![CDATA[<p>Задача: <em>залить видео на ютуб при помощи браузера, html и JS и получить статус запроса и ID загруженного видео.</em></p>
<blockquote><p>Никаких серверных технологий не используется. Only native JS.</p></blockquote>
<p>Задача довольно не тривиальная. И поиск подобной реализации в сети не увенчался успехом. Создано по мотивам <a href="http://javascript.ru/ajax/transport/iframe" target="_blank">AJAX-транспорт Iframe</a>, <a href="http://www.phpletter.com/Our-Projects/AjaxFileUpload/" target="_blank">AjaxFileUpload</a> и <a href="http://code.google.com/intl/ru-RU/apis/youtube/2.0/developers_guide_protocol_audience.html" target="_blank">YouTube API</a>. Основано на JQuery. Но при желании можно переделать под любой другой фреймворк или вообще без использования оных.</p>
<p>Отмечу, что скрипт уже должен иметь TOKEN и  URL, о которых вы можете прочитать в API документации. В данном варианте скрипт разрабатывался для связки:<br />
FLEX(TOKEN, URL)-JS-YOU_TUBE-JS(ID,STATUS)-FLEX</p>
<p>Для начала создадим форму в которой необходимо выбрать файл и нажать кнопку &laquo;Загрузить&raquo;.</p>
<pre><code><span style="white-space: pre;"> </span>&lt;form name="form" id="form-send" action="" method="POST" enctype="multipart/form-data"&gt;
    <span style="white-space: pre;"> </span>&lt;input type="hidden" name="yttoken" id="yttoken" value=""&gt;
    <span style="font-family: monospace; ">     &lt;input type="hidden" name="yturl" id="yturl" value=""&gt;
    </span><span style="font-family: monospace; ">     &lt;input id="fileToUpload" type="file" size="15" name="fileToUpload" class="input"&gt;
     &lt;button class="button" id="buttonUpload"&gt;Залить&lt;/button&gt;
</span><span style="font-family: monospace;">&lt;/form&gt;</span>
</code></pre>
<p>И создаём функцию, которая будет всё это дело обрабатывать.</p>
<pre><code>      function ajaxFileUpload(YT_TOKEN, YT_URL) {
        $.ajaxFileUpload ({
            url:YT_URL,
            token:YT_TOKEN,
            secureuri:false,
            fileElementId:'fileToUpload',
            dataType: 'json',
            success: function (data, status) {
               if ( typeof(data.error) != 'undefined' ) {
                 if ( data.error != '' ) {
                   alert(data.error);
                 } else {
                   alert(data.msg);
                 }
               }
            },
            error: function (data, status, e) {
               // myloc = УРЛ редиректа
               myloc = myloc + '';
               var get_pos = myloc.lastIndexOf("?");
               myloc = myloc.substr(get_pos + 1);
               var status_pos = myloc.lastIndexOf("status=");
               var id_pos = myloc.lastIndexOf("id=");
               var err_pos = myloc.lastIndexOf("error=");

               ret_status = id_pos == -1 ?
               myloc.substr(7,err_pos-8) : myloc.substr(7,id_pos-8);
               ret_id = id_pos == -1 ?
               myloc.substr(err_pos+6) : myloc.substr(id_pos+3);
               alert(ret_status + ',' + ret_id);
            }
          }
        )
        return false;
      }
</code></pre>
<p>Навешиваем на кнопку загрузки выполнение вышеприведённой функции</p>
<pre><code>    $('#buttonUpload').click(function() {
        return ajaxFileUpload($('#yttoken').attr('value'),$('#yturl').attr('value'));
    });
</code></pre>
<p>Суть работы скрипта такова &#8211; юзер выбирает файл на своём компьютере, затем нажимает кнопку &laquo;загрузить&raquo;. И вызывается функция, приведенная выше. Которая выполняет следующие действия &#8211; создаётся iframe и форма при помощи которой мы будем отсылать данные на сервер YouTube</p>
<pre><code>  createUploadIframe: function(id, uri) {
      var frameId = 'jUploadFrame' + id;
      if ( window.ActiveXObject ) {
            var io = document.createElement('&lt;iframe id="' + frameId + '" name="' + frameId + '" /&gt;');
            if ( typeof uri== 'boolean' ){
                  io.src = 'javascript:false';
            } else if ( typeof uri == 'string' ) {
                  io.src = uri;
            }
      } else {
            var io = document.createElement('iframe');
            io.id = frameId;
            io.name = frameId;
      }

      io.style.position = 'absolute';
      io.style.top = '-1000px';
      io.style.left = '-1000px';
      document.body.appendChild(io);
      return io
},

createUploadForm: function(id, fileElementId, YT_URL, YT_TOKEN) {
      var formId = 'jUploadForm' + id;
      var fileId = 'jUploadFile' + id;
      var form = $('&lt;form  action="' + YT_URL + '" method="POST" name="' + formId +
      '" id="' + formId + '" enctype="multipart/form-data"&gt; &lt;input type="hidden"
      name="token" value="' + YT_TOKEN + '"/&gt;&lt;/form&gt;');
      var oldElement = $('#' + fileElementId);
      var newElement = $(oldElement).clone();
      $(oldElement).attr('id', fileId);
      $(oldElement).before(newElement);
      $(oldElement).appendTo(form);
      $(form).css('position', 'absolute');
      $(form).css('top', '-1200px');
      $(form).css('left', '-1200px');
      $(form).appendTo('body');
      return form;
},
</code></pre>
<p>Ну и соответственно функции, которые осуществляют Ajax транспорт и получают данные</p>
<pre><code>
ajaxFileUpload: function(s) {
    s = jQuery.extend({}, jQuery.ajaxSettings, s);
    var id = new Date().getTime()
    var form = jQuery.createUploadForm(id, s.fileElementId, s.url, s.token);
    var io = jQuery.createUploadIframe(id, s.secureuri);
    var frameId = 'jUploadFrame' + id;
    var formId = 'jUploadForm' + id;
    if ( s.global &amp;&amp; ! jQuery.active++ ) {
        jQuery.event.trigger( "ajaxStart" );
    }
    var requestDone = false;
    var xml = {}
    if ( s.global )
        jQuery.event.trigger("ajaxSend", [xml, s]);
    // Ждём ответа
    var uploadCallback = function(isTimeout) {
    var io = document.getElementById(frameId);
    try {
        if( io.contentWindow ) {
            xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;
            xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
        } else if ( io.contentDocument ) {
            xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;
            xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
        }
    } catch(e) {
        myloc = window.frames[frameId].location;
        jQuery.handleError(s, xml, null, e);
        //alert('err1');
    }
    if ( xml || isTimeout == "timeout" ) {
        requestDone = true;
        var status;
        try {
            status = isTimeout != "timeout" ? "success" : "error";
            if ( status != "error" ) {
                var data = jQuery.uploadHttpData( xml, s.dataType );
                if ( s.success )
                    s.success( data, status );
                if( s.global )
                    jQuery.event.trigger( "ajaxSuccess", [xml, s] );
            } else {
                jQuery.handleError(s, xml, status);
            }
        } catch(e) {
        status = "error";
        myloc = window.frames[frameId].location;
        //alert('err3');
        jQuery.handleError(s, xml, status, e);
    }
    // Запрос завершен
    if( s.global ) {
        jQuery.event.trigger( "ajaxComplete", [xml, s] );
    }
    if ( s.global &amp;&amp; ! --jQuery.active ) {
        jQuery.event.trigger( "ajaxStop" );
    }
    // результаты
    if ( s.complete ) {
        s.complete(xml, status);
    }
    jQuery(io).unbind()
    setTimeout(function(){
       try {
            $(io).remove();
            $(form).remove();
        } catch(e) {
            myloc = window.frames[frameId].location;
            jQuery.handleError(s, xml, null, e);
            //alert('err4');
        }
    }, 100)
    xml = null
}}

if ( s.timeout &gt; 0 ) {
    setTimeout(function(){
        if( !requestDone ) uploadCallback( "timeout" );
    }, s.timeout);
}

try {
    // var io = $('#' + frameId);
    var form = $('#' + formId);
    $(form).attr('action', s.url);
    $(form).attr('method', 'POST');
    $(form).attr('target', frameId);
    if ( form.encoding ) {
        form.encoding = 'multipart/form-data';
    } else {
        form.enctype = 'multipart/form-data';
    }
    $(form).submit();
    } catch(e) {
        jQuery.handleError(s, xml, null, e);
    }
    if ( window.attachEvent ) {
        document.getElementById(frameId).attachEvent('onload', uploadCallback);
    } else {
        document.getElementById(frameId).addEventListener('load', uploadCallback, false);
    }
return {abort: function (){}};
},
uploadHttpData: function( r, type ) {
    var data = !type;
    data = type == "xml" || data ? r.responseXML : r.responseText;
    if ( type == "script" )
        jQuery.globalEval( data );
    if ( type == "json" )
        eval( "data = " + data );
    if ( type == "html" )
        jQuery("&lt;div&gt;").html(data).evalScripts();
    //alert($('param', data).each(function(){alert($(this).attr('value'));}));
    return data;
}
</code></pre>
<p>В итоге двое суток работы и задача решена <img src='http://zlob.in/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Ну и прикрепляю исходные коды скрипта. <a href="http://zlob.in/wp-content/uploads/2010/06/a.7z" target="_blank">Скачать</a><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch1/" rel="bookmark" title="16 мая 2008">Ускоряем работу скриптов ч.1</a></li>
<li><a href="http://zlob.in/2008/smm-ili-vkontakteru-v-dejstvii/" rel="bookmark" title="11 мая 2008">SMM или vkontakte.ru в действии</a></li>
<li><a href="http://zlob.in/2010/ustanavlivaem-mongodb-na-centos-2/" rel="bookmark" title="13 января 2010">Устанавливаем mongoDB на CentOS</a></li>
<li><a href="http://zlob.in/2010/ustanovka-ape-na-centos/" rel="bookmark" title="16 января 2010">Установка APE на CentOS</a></li>
<li><a href="http://zlob.in/2011/avtoportal-cel-1/" rel="bookmark" title="20 апреля 2011">Автопортал &#8211; цель №1</a></li>
</ul>
<p><!-- Similar Posts took 3.265 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/youtube-api-javascript-upload/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Текстовый редактор VI</title>
		<link>http://zlob.in/2010/tekstovyj-redaktor-vi/</link>
		<comments>http://zlob.in/2010/tekstovyj-redaktor-vi/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 03:33:05 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=739</guid>
		<description><![CDATA[В ОС Unix есть свой стандартный текстовый редактор, под названием vi. При работе с сервером очень пригодится знание основных команд. Запустить его просто vi /root/test.txt Существует два режима работы: Командный Режим редактирования По умолчанию запускается командный режим. Для перехода в режим редактирования нажимаем i. Редактируем файл и по окончанию редактирования нажимаем Esc, тем самым возвращаемся [...]]]></description>
			<content:encoded><![CDATA[<p>В ОС Unix есть свой стандартный текстовый редактор, под названием vi. При работе с сервером очень пригодится знание основных команд.</p>
<p>Запустить его просто vi /root/test.txt</p>
<p>Существует два режима работы:</p>
<ul>
<li>Командный</li>
<li>Режим редактирования</li>
</ul>
<p>По умолчанию запускается командный режим. Для перехода в режим редактирования нажимаем i. Редактируем файл и по окончанию редактирования нажимаем Esc, тем самым возвращаемся в командный режим.</p>
<p>Основные команды:<br />
:q — выход<br />
:q! — выход без сохранения файла<br />
:w — сохранить файл на диске<br />
:wq — выход с сохранением файла<br />
:e! — перезагрузить текущий файл<br />
:33 — перепрыгнуть на 33ю строку текстового файла<br />
i — перейти в режим редактирования<br />
u — отменить последнее действие<br />
x — удалить символ под курсором<br />
dd — удалить всю строку<br />
/qso — найти слово qso в тексте после курсора<br />
Esc > :wq > Enter — выйти из файла, сохранив его;<br />
Esc > :q! > Enter — выйти из файла, не сохранив его.</p>
<p>Постовые:</p>
<p>Химчистка дорогостоящих изделий <a href="http://evrohimchistka.ru/">здесь</a>. У нас вы получите отличный результат и превосходный уровень обслуживания.</p>
<p>Для жителей г. Воронеж и гостей города <a href="http://36on.ru/map">карта Воронежа со спутника</a>. Мы не дадим Вам заблудиться.<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/podklyuchenie-po-ssh/" rel="bookmark" title="2 февраля 2009">Подключение по ssh</a></li>
<li><a href="http://zlob.in/2010/ustanavlivaem-mongodb-na-centos-2/" rel="bookmark" title="13 января 2010">Устанавливаем mongoDB на CentOS</a></li>
<li><a href="http://zlob.in/2009/zaparolennyj-vxod-na-sajt/" rel="bookmark" title="27 июля 2009">Запароленный вход на сайт</a></li>
<li><a href="http://zlob.in/2008/dedicated-vs-vds/" rel="bookmark" title="23 июня 2008">Dedicated vs VDS</a></li>
<li><a href="http://zlob.in/2008/smm-ili-vkontakteru-v-dejstvii/" rel="bookmark" title="11 мая 2008">SMM или vkontakte.ru в действии</a></li>
</ul>
<p><!-- Similar Posts took 2.610 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/tekstovyj-redaktor-vi/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>Новый сервак</title>
		<link>http://zlob.in/2010/novyj-servak/</link>
		<comments>http://zlob.in/2010/novyj-servak/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 03:43:31 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=706</guid>
		<description><![CDATA[Не так давно было решено под один крупный проект взять свой сервер, благо, что в этом месяце обещают открыть ДЦ в Павлодаре. И вот наконец свершилось &#8211; Нам пришёл новый сервак. Долго думали, откуда и какой заказать в итоге выбор пал на SuperMicro, а доставку решили сделать из Алматы. Сначала думали взять HP, но они [...]]]></description>
			<content:encoded><![CDATA[<p>Не так давно было решено под один крупный проект взять свой сервер, благо, что в этом месяце обещают открыть ДЦ в Павлодаре. И вот наконец свершилось &#8211; Нам пришёл новый сервак.</p>
<p><a href="http://zlob.in/wp-content/uploads/2010/03/DSC01238.JPG"><img class="alignleft size-medium wp-image-711" style="padding:3px;margin:2px;border:1px solid #ccc;" title="распаковка" src="http://zlob.in/wp-content/uploads/2010/03/DSC01238-300x225.jpg" alt="распаковка" width="300" height="225" /></a></p>
<p>Долго думали, откуда и какой заказать в итоге выбор пал на SuperMicro, а доставку решили сделать из Алматы. Сначала думали взять HP, но они слишком уж дорогие. Решили, что по соотношению цена\конфигурация оптимальный вариант &#8211; SuperMicro.</p>
<p>Конфиг следующий:<br />
• 1U Rackmount (437 x 43 x 503mm)<br />
• Intel® Quad-Core Nehalem E5504 2,0 GHz 4MB FC-LGA8 S1366<br />
• Intel® X58 Express Chipset<br />
• 4Gb DDRIII-1333 ECC UnBuff. / Up to 24GB DDRIII 1333/1066/800MHz SDRAM in 6 DIMM sockets<br />
• 6 x Intel® ICH10R SATA controller RAID 0, 1, 5, 10 support<br />
• Dual Intel® 82574L Gigabit Ethernet Controller<br />
• 3 (x8) PCI-e 2.0 slots (1 using x16 slot)<br />
• 1 (x4) PCI-e slot (using x8 slot)<br />
• 2 x 32-bit 33MHz PCI slot<br />
• 2 х 250Gb SATAII 7200 RPM / 4 x 3.5&#8243; Hot-swap SAS/SATA drive bays<br />
• Integrated Graphics<br />
• DVD-RW<br />
• 520W AC to DC power supply w/ PFC<br />
• 4 x 4cm 12,500 RPM fans</p>
<p>Заказали его в Vista Systems (vss.kz)</p>
<p>Теперь буду ставить на него мой любимый CentOS )</p>
<p>До связи.</p>
<p><a href="http://zlob.in/wp-content/uploads/2010/03/DSC01249.JPG"><img class="alignleft size-medium wp-image-710" title="Вид спереди" src="http://zlob.in/wp-content/uploads/2010/03/DSC01249-300x225.jpg" alt="Вид спереди" width="300" height="225" /></a></p>
<p><a href="http://zlob.in/wp-content/uploads/2010/03/DSC01250.JPG"><img class="alignleft size-medium wp-image-709" title="Вид сверху" src="http://zlob.in/wp-content/uploads/2010/03/DSC01250-300x225.jpg" alt="Вид сверху" width="300" height="225" /></a><a href="http://zlob.in/wp-content/uploads/2010/03/DSC01252.JPG"><img class="alignleft size-medium wp-image-708" title="Вид сверху и сбоку" src="http://zlob.in/wp-content/uploads/2010/03/DSC01252-300x225.jpg" alt="Вид сверху и сбоку" width="300" height="225" /></a><a href="http://zlob.in/wp-content/uploads/2010/03/DSC01251.JPG"><img class="alignleft size-medium wp-image-707" title="Вид сзади" src="http://zlob.in/wp-content/uploads/2010/03/DSC01251-300x225.jpg" alt="Вид сзади" width="300" height="225" /></a></p>
<div style="clear:both;"></div>
<p>Постовые:</p>
<p>Зарабатывайте в интернете вместе с seozavr. <a href="http://seozavr.ru/news.php?newsId=53">Уаленная работа</a>, заработок в сети без вложений. Начинайте зарабатывать в интернете прямо сейчас.</p>
<p>Вам для работы необходимо пять лет учиться и потом писать диплом? Не беда &#8211; <a href="http://homeworkpro.ru/">диплом на заказ в Москве</a>. Быстро, качественно, недорого.</p>
<p>Хотите красивый рабочий стол на своём компьютере или ноутбуке? Тогда установите <a href="http://www.freeoboi.ru/">картинки на рабочий стол бесплатно</a>. Красота окружает нас везде )<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2008/asus-m50vn/" rel="bookmark" title="23 ноября 2008">asus m50vn</a></li>
<li><a href="http://zlob.in/2009/centos/" rel="bookmark" title="22 сентября 2009">CentOS</a></li>
<li><a href="http://zlob.in/2008/google-nastupaet-po-vsem-frontam/" rel="bookmark" title="4 сентября 2008">Google наступает по всем фронтам</a></li>
<li><a href="http://zlob.in/2009/smena-dizajna/" rel="bookmark" title="21 февраля 2009">Смена дизайна</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
</ul>
<p><!-- Similar Posts took 3.099 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/novyj-servak/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>HipHop for PHP</title>
		<link>http://zlob.in/2010/hiphop-for-php/</link>
		<comments>http://zlob.in/2010/hiphop-for-php/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 05:04:39 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=642</guid>
		<description><![CDATA[Буквально на днях Facebook обнародовали свой проект HipHop for PHP. Почему такое название непонятно, видимо разработчики неровно дышат к ХипХопу ) И php превращается, превращается php в &#8230; C++ За счёт этого разработчикам из фейсбука удалось ускорить выполнение php-сценариев в два раза, что позволит сэкономить на покупке новых серверов и оборудования. Особенно порадовал тот факт, [...]]]></description>
			<content:encoded><![CDATA[<p>Буквально на днях Facebook обнародовали свой проект <strong>HipHop for PHP</strong>. Почему такое название непонятно, видимо разработчики неровно дышат к ХипХопу )</p>
<p>И php превращается, превращается php в &#8230; C++ За счёт этого разработчикам из фейсбука удалось ускорить выполнение php-сценариев в два раза, что позволит сэкономить на покупке новых серверов и оборудования.</p>
<p>Особенно порадовал тот факт, что всё исходные коды проекта HipHop выложены в свободный доступ и в разработке продукта могут принять участие все желающие.</p>
<p>В новостных лентах пишут о том, что разработка заняла два года и было написано 300 тыс. строк кода. А вот интересно сколько людей было занято в разработке. Кстати, вот в <a href="http://pro100pro.com/uskoryaem-php-s-hiphop" target="_blank">этом</a> блоге подробно расписано про этот самый HipHop.</p>
<p><em>HipHop PHP Yo!</em> )<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2008/bud-proshhe/" rel="bookmark" title="25 ноября 2008">Будь проще</a></li>
<li><a href="http://zlob.in/2011/arxitektury-sajtov-s-vysokoj-nagruzkoj/" rel="bookmark" title="2 февраля 2011">Архитектура сайтов с высокой нагрузкой</a></li>
<li><a href="http://zlob.in/2010/trebuetsya-flash-developer/" rel="bookmark" title="13 июля 2010">Требуется FLASH-developer</a></li>
<li><a href="http://zlob.in/2008/microsoft-vs-yahoo-kto-kogo/" rel="bookmark" title="6 мая 2008">Microsoft vs Yahoo кто кого?</a></li>
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch2-xaki-na-php/" rel="bookmark" title="18 мая 2008">Ускоряем работу скриптов ч.2 (хаки на PHP)</a></li>
</ul>
<p><!-- Similar Posts took 4.629 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/hiphop-for-php/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Пространства имён в PHP</title>
		<link>http://zlob.in/2010/prostranstva-imyon-v-php/</link>
		<comments>http://zlob.in/2010/prostranstva-imyon-v-php/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 06:24:50 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=621</guid>
		<description><![CDATA[Что такое пространства имён? Пространства имён &#8211; некоторое абстрактное хранилище, которое позволяет группировать уникальные идентификаторы. Какие проблемы? Все определения классов в PHP глобальны, в связи с этим необходимо постоянно выбирать уникальные имена для классов. Это делается для того, чтобы не происходило конфликтов имён при работе с другими библиотеками. На данный момент различных &#171;соглашений&#187; о наименовании [...]]]></description>
			<content:encoded><![CDATA[<h3>Что такое пространства имён?</h3>
<p>Пространства имён &#8211; некоторое абстрактное хранилище, которое позволяет группировать уникальные идентификаторы.</p>
<h3>Какие проблемы?</h3>
<p>Все определения классов в PHP глобальны, в связи с этим необходимо постоянно выбирать уникальные имена для классов. Это делается для того, чтобы не происходило конфликтов имён при работе с другими библиотеками. На данный момент различных &laquo;соглашений&raquo; о наименовании достаточно для защиты классов от &laquo;наложений&raquo;, например PEAR.</p>
<h3>Зачем оно надо?</h3>
<p>Концепция пространства имен позволяет управлять зонами видимости имён и помогает избегать проблем, возникающих при определении классов с одинаковыми именами. Всё это избавляет от необходимости использовать длинные имена и префиксы в названии классов. Что соответсвенно служит повышению читабельности кода.</p>
<h3>Что теперь?</h3>
<p>На данный момент пространства имён уже реализовано в PHP начиная с версии 5.3.0.</p>
<h3>Примеры.</h3>
<p>Для объявления пространства имён используется ключевое слово <em>namespace</em>. Предположим у нас есть &laquo;пакет&raquo; коммерция. Пространства имён определяются на уровне файла, а само объявление должно быть первым оператором в файле:</p>
<pre><code>
&lt;?php
namespace commerce; // определим новое пространство имён

class shop {
// ...
}
?&gt;
</code></pre>
<p>Пространства имён можно импортировать при помощи оператора use:</p>
<pre><code>&lt;?php
use commerce;

require_once('lib.php');
?&gt;</code></pre>
<p>Можно импортировать от одного или несколько пространств имён. Помимо этого для пространста имён можно использовать псевдонимы, которые позволят создавать более короткие имена:</p>
<pre><code>&lt;?php
use commerce\shop\lib as CSL;
?&gt;</code></pre>
<p>Также существует константа<em> __NAMESPACE__</em> которая возвращает текущее простраство имён:</p>
<pre>
<code>&lt;?php
    namespace commerce\shop;
    echo __NAMESPACE__;  // выведет: commerce\shop
?&gt;</code></pre>
<p>Более подробно с правилами разбора имён можно ознакомится в <a href="http://docs.php.net/manual/ru/language.namespaces.rules.php" target="_blank">официальной документации</a>.</p>
<p><em>Постовые:</em><br />
Автомобильный портал от крупнейшей газеты объявлений &laquo;Из рук в руки&raquo;. Крупный <a href="http://auto.irr.ru/cars/catalog/" target="_blank">каталог автомобилей с фото</a>. Мы найдём авто и для тебя.</p>
<p>Объявления о недвижимости. <a href="http://irr.ru/magr/" target="_blank">Московские агентства недвижимости</a>. Продажа квартир. Частники и агентства недвижимости.<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch3/" rel="bookmark" title="22 мая 2008">Ускоряем работу скриптов ч.3</a></li>
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch1/" rel="bookmark" title="16 мая 2008">Ускоряем работу скриптов ч.1</a></li>
<li><a href="http://zlob.in/2008/krizis/" rel="bookmark" title="23 октября 2008">Кризис</a></li>
<li><a href="http://zlob.in/2010/ustanovka-ape-na-centos/" rel="bookmark" title="16 января 2010">Установка APE на CentOS</a></li>
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch2-xaki-na-php/" rel="bookmark" title="18 мая 2008">Ускоряем работу скриптов ч.2 (хаки на PHP)</a></li>
</ul>
<p><!-- Similar Posts took 2.574 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/prostranstva-imyon-v-php/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Установка APE на CentOS</title>
		<link>http://zlob.in/2010/ustanovka-ape-na-centos/</link>
		<comments>http://zlob.in/2010/ustanovka-ape-na-centos/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 08:30:04 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=586</guid>
		<description><![CDATA[Итак продолжаю цикл статей по CentOS. Давеча довелось нам ставить на CentOS легковесный open source push-сервер APE (офф. сайт). Более подробно с этой технологией можно ознакомится на хабре &#171;Двунаправленный асинхронный обмен данными в веб-приложениях&#171;. Основная причина выбора именно APE была дружба между ним и Jquery Итак, в подопытных у нас всё тот же CentOS 5.3 [...]]]></description>
			<content:encoded><![CDATA[<p>Итак продолжаю цикл статей по CentOS. Давеча довелось нам ставить на CentOS  легковесный open source push-сервер APE (<a href="http://www.ape-project.org/" target="_blank">офф. сайт</a>). Более подробно с этой технологией можно ознакомится на хабре &laquo;<a href="http://habrahabr.ru/blogs/webdev/80466/" target="_blank">Двунаправленный асинхронный обмен данными в веб-приложениях</a>&laquo;. Основная причина выбора именно APE была дружба между ним и Jquery <img src='http://zlob.in/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Итак, в подопытных у нас всё тот же CentOS 5.3 64 bit.</p>
<p>Для начала скачиваем ape-project себе на сервер, например через wget или просто через менеджер файлов, кому как удобнее. Далее распаковываем его:<br />
<em>tar xzf APE-Project_1.0.tar.gz<br />
cd APE-Project_1.0<br />
cd ape-server</em></p>
<p>чтобы определить где находится ape используем команду<br />
<em>whereis ape</em></p>
<p>в директории ape-server лежат следующие файлы:<br />
<em>APE_Server-1.0.OSX10.6.bin.tar.gz<br />
APE_Server-1.0.amd64.bin.tar.gz<br />
APE_Server-1.0.i386.bin.tar.gz<br />
APE_Server-1.0.src.tar.gz<br />
APE_Server-1.0.amd64.deb<br />
APE_Server-1.0.i386.deb<br />
APE_Server-1.0.i386.rpm<br />
APE_Server-1.0.x86_64.rpm</em></p>
<p>Определяем какой нужен для нашей операционки и ставим его. В нашем случае это<em> <em>APE_Server-1.0.x86_64.rpm</em></em></p>
<p>Устанавливаем его при помощи rpm<br />
<em><em><em>rpm -Uhv APE_Server-1.0.x86_64.rpm</em> </em></em></p>
<p>В /etc/ape у нас лежат конфиги. Займемся настройкой ape. Заходим в /etc/init.d/ создаем файл aped (файл создается при помощи команды touch). Теперь ставим этому файла следующие права доступа:<br />
chmod a=x /etc/init.d/aped</p>
<p>Сам файл aped наполняем следующим содержимым:</p>
<pre><code>
#! /bin/sh
# /etc/init.d/aped
#
# chkconfig: 2345 85 15
# description: APE Daemon
# processname: APE Daemon

#
# Install the service with chkconfig --add aped
#

# Define where ape is installed.
# The trailing slash is required ( Example : /my/path/bin/ )
APE_DIRECTORY=/etc/ape/

# Define the PID File
PIDFILE=/var/run/aped.pid

# Source function library.
. /etc/init.d/functions

DAEMON="/usr/bin/aped --cfg ${APE_DIRECTORY}ape.conf &gt; /dev/null"

start() {

    echo -n "Starting APE... "

    cd $APE_DIRECTORY;
    daemon $DAEMON
    RETVAL=$?
    echo
        [ $RETVAL = 0 ] &amp;&amp; touch /var/lock/subsys/aped
    return $RETVAL
}

stop() {
    echo "Stopping APE..."
    killall aped
    RETVAL=$?
    echo
        [ $RETVAL = 0 ] &amp;&amp; rm -f /var/lock/subsys/aped
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        stop
        start
    ;;
    *)
        echo "Usage:  {start|stop|restart}"
        exit 1
    ;;
esac
exit $?
</code></pre>
<p>выполняем команду, для добавления службы:<br />
<em>chkconfig &#8211;add aped</em></p>
<p>Теперь выполним команду<br />
<em>/usr/sbin/ntsysv </em><br />
и поставим галочку напротив aped, если ее там нет.</p>
<p>Разберемся с настройкой апача. Открываем httpd.conf, который лежит в /etc/httpd/ Находим там virtual host, принадлежащий нашему доменному имени и дописываем туда альясы:</p>
<p><em><em>&lt;VirtualHost xxx.xxx.xxx.xxx:8080&gt;<br />
*<br />
</em></em><strong><em><em>ServerAlias ape.mydomen.com<br />
ServerAlias *.ape.<em><em>mydomen.com</em></em></em></em></strong><em><em><br />
*<br />
&lt;/VirtualHost&gt;<br />
</em></em><em><em>вместо mydomen.com &#8211; используем свой адрес. </em></em></p>
<p>Перезапускаем апач<br />
<em>service httpd restart</em><em> </em></p>
<p>Теперь запустим сам ape server. Заходим в диреторию /usr/bin/ и выполняем:<em><br />
</em><em>./aped &#8211;cfg /etc/ape/ape.conf</em></p>
<p>Также необходимо произвести некоторые манипуляции с DNS. Для нашего домена создаем записи типа А:<br />
ape.mydomen.com. A xxx.xxx.xxx.xxx<br />
*.ape.mydomen.com. A xxx.xxx.xxx.xxx<br />
где xxx.xxx.xxx.xxx &#8211; ваш IP-адрес, а mydomen.com &#8211; ваше доменное имя. Ждём пока обновятся днски.</p>
<p>При скачивании Ape-project в дирекотрии находилось ищё две папки одна для сервера, другая для клиента. Закачиваем ape-jsf на наш сайт и тестируем работоспособность APE. Переходим по адресу http://ваш сайт/ape-jsf/Demos/Chat/demo.html и наслаждаемся чатом по настоящему в режиме реального времени.</p>
<p>Воистину web за последнее время продвинулся ооочень сильно!<em><em></em></em><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/" rel="bookmark" title="8 октября 2009">Установка nginx,eaccelerator и обновление php,mysql,apache на CentOS</a></li>
<li><a href="http://zlob.in/2009/centos/" rel="bookmark" title="22 сентября 2009">CentOS</a></li>
<li><a href="http://zlob.in/2008/dedicated-vs-vds/" rel="bookmark" title="23 июня 2008">Dedicated vs VDS</a></li>
<li><a href="http://zlob.in/2010/ustanavlivaem-mongodb-na-centos-2/" rel="bookmark" title="13 января 2010">Устанавливаем mongoDB на CentOS</a></li>
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch3/" rel="bookmark" title="22 мая 2008">Ускоряем работу скриптов ч.3</a></li>
</ul>
<p><!-- Similar Posts took 21.049 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/ustanovka-ape-na-centos/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Устанавливаем mongoDB на CentOS</title>
		<link>http://zlob.in/2010/ustanavlivaem-mongodb-na-centos-2/</link>
		<comments>http://zlob.in/2010/ustanavlivaem-mongodb-na-centos-2/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 04:06:22 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=577</guid>
		<description><![CDATA[Судя по отзывам, довольно шустрая документо-ориентированная СУБД (офф. сайт), которая может перекрыть 80% всех требований. Из недостатков стоит выделить отсутствие fulltext индексирования. Зато большим преимуществом будет являться скорость работы. Как и в большинстве СУБД используется принцип B-TREE. Подробнее по тестам, графикам производительности можно почитать на хабре. Провозился пол дня, попутно консультируясь с другом по поводу [...]]]></description>
			<content:encoded><![CDATA[<p>Судя по отзывам, довольно шустрая документо-ориентированная СУБД (<a href="http://www.mongodb.org/" target="_blank">офф. сайт</a>), которая может перекрыть 80% всех требований. Из недостатков стоит выделить отсутствие fulltext индексирования. Зато большим преимуществом будет являться скорость работы. Как и в большинстве СУБД используется принцип B-TREE. Подробнее по тестам, графикам производительности можно <a href="http://habrahabr.ru/blogs/webdev/74683/" target="_blank">почитать на хабре</a>.</p>
<p>Провозился пол дня, попутно консультируясь с другом по поводу того как всё это ставить. И решил написать статью в блог, глядишь &#8211; кому и пригодится, да и сам могу спустя время кое-чего подзабыть, а так запись останется как подсказка. В качестве подопытного использовался CentOS 5.3 64bit.</p>
<p>Перейдем к установке. Качаем с гитхаба mongo driver, в моём случае это драйвер для php.<br />
<a href="http://github.com/mongodb/mongo-php-driver/tree/master" target="_blank">http://github.com/mongodb/mongo-php-driver/tree/master</a></p>
<p>Распаковываем и устанавливаем его:</p>
<p><em>tar zxvf mongodb-mongodb-php-driver-.tar.gz<br />
cd mongodb-mongodb-php-driver-<br />
phpize<br />
./configure<br />
sudo make install</em></p>
<p>если всё прошло успешно, то переносим в <em>php/modules</em>/ файл <em>mongo.so</em>, который лежит в директории, куда был распакован сам монго. Пропишем в настройках php конфиги монго. Определить где находятся настройки php можно через shell<br />
<em>whreis php</em><br />
обычно это <em>/etc/php.ini </em>прописываем там<br />
<em>extension=mongo.so</em></p>
<p>и</p>
<p><em>[mongo]<br />
mongo.auto_reconnect = Off<br />
mongo.allow_persistent = On<br />
mongo.max_persistent = -1<br />
mongo.max_connections = -1<br />
mongo.default_host = localhost<br />
mongo.default_port = 27017<br />
mongo.chunk_size = 262400</em></p>
<p>перезапускаем апач<br />
<em>service httpd restart</em></p>
<p>выводим инфу:</p>
<p><em>&lt;?php<br />
phpinfo();<br />
?&gt;</em></p>
<p>если всё прошло успешно, то должно появиться что-то наподобии этого</p>
<p><a href="http://zlob.in/wp-content/uploads/2010/01/phpinfo1.jpg"><img class="alignnone size-medium wp-image-579" title="mongo" src="http://zlob.in/wp-content/uploads/2010/01/phpinfo1-300x172.jpg" alt="mongo" width="300" height="172" /></a></p>
<p>Теперь разберемся с самим серваком mongo. Заходим снова в shell и прописываем там:</p>
<p><em># Директория по умолчанию для хранения БД<br />
$ mkdir -p /data/db<br />
# Используем курл, для получения<br />
$ curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-latest.tgz<br />
# распаковываем<br />
$ tar xzf mongodb-linux-x86_64-latest.tgz</em></p>
<p>Теперь заходим в директорию, куда установился mongo. В моём случае это:<br />
<em>/root/mongodb-linux-x86_64-2010-01-12/bin/</em></p>
<p>запускаем демона <em>./mongod</em> &#8211; он у нас будет обрабатывать все команды В другом терминале запускаем сам mongo <em>./mongo</em></p>
<p>Для теста напишем во втором терминале:<br />
<em>db.foo.save( { a : 1 } )</em></p>
<p>В певом терминале должно появиться что-то подобное этому:<br />
<em>Tue Jan 12 15:52:37 waiting for connections on port 27017<br />
Tue Jan 12 15:52:37 web admin interface listening on port 28017<br />
Tue Jan 12 15:57:20 allocating new datafile /data/db/test.ns, filling with zeroes&#8230;<br />
Tue Jan 12 15:57:20 done allocating datafile /data/db/test.ns, size: 16MB, took 0.135 secs<br />
Tue Jan 12 15:57:20 allocating new datafile /data/db/test.0, filling with zeroes&#8230;<br />
Tue Jan 12 15:57:21 done allocating datafile /data/db/test.0, size: 64MB, took 0.531 secs<br />
Tue Jan 12 15:57:21 building new index on { _id: ObjId(000000000000000000000000) } for test.foo&#8230;<br />
Tue Jan 12 15:57:21 Buildindex test.foo idxNo:0 { name: &laquo;_id_&raquo;, ns: &laquo;test.foo&raquo;, key: { _id: ObjId(000000000000000000000000) } }<br />
Tue Jan 12 15:57:21 done for 0 records 0.034secs<br />
Tue Jan 12 15:57:21 insert test.foo 704ms</em></p>
<p>Теперь давайте протестируем наш php драйвер. Создадим какой-нибудь php файл и пропишем в нем</p>
<p><em>&lt;?php<br />
$mongo = new Mongo (&#8217;127.0.0.1&#8242;, true, true);<br />
var_dump($mongo);<br />
?&gt;</em></p>
<p>На экране должно высветится:<em> </em></p>
<p><em>object(Mongo)#1 (5) {<br />
["connected"]=&gt;<br />
bool(true)<br />
["server":protected]=&gt;<br />
string(9) &laquo;127.0.0.1&#8243;<br />
["username":protected]=&gt;<br />
NULL<br />
["password":protected]=&gt;<br />
NULL<br />
["persistent":protected]=&gt;<br />
string(0) &laquo;&raquo;<br />
}</em></p>
<p>Вот и всё.<em> </em><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2008/uskoryaem-rabotu-skriptov-ch1/" rel="bookmark" title="16 мая 2008">Ускоряем работу скриптов ч.1</a></li>
<li><a href="http://zlob.in/2010/youtube-api-javascript-upload/" rel="bookmark" title="26 июня 2010">YouTube API &#038; JavaScript Upload</a></li>
<li><a href="http://zlob.in/2009/s-novym-godom/" rel="bookmark" title="30 декабря 2009">С НОВЫМ ГОДОМ!</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
<li><a href="http://zlob.in/2010/biznes-pexota/" rel="bookmark" title="12 февраля 2010">Бизнес-пехота</a></li>
</ul>
<p><!-- Similar Posts took 3.365 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/ustanavlivaem-mongodb-na-centos-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Оптимизация</title>
		<link>http://zlob.in/2010/optimizaciya/</link>
		<comments>http://zlob.in/2010/optimizaciya/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 06:45:56 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=547</guid>
		<description><![CDATA[Сегодня мне хотелось бы затронуть тему оптимизации. Пройтись, так сказать, по основам, чтобы даже новичку было понятно в какую сторону копать. Необходимо, чтобы у вас был доступ к серверу через shell. Какое программное обеспечение будет затронуто: apache nginx mysql lighttpd php memcached CentOS &#8211; Статика-динамика Для начала давайте разберемся с web-серверами. Разделим все дело на [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zlob.in/wp-content/uploads/2010/01/bot.jpg"><img class="alignleft size-medium wp-image-549" title="оптимизация" src="http://zlob.in/wp-content/uploads/2010/01/bot-262x300.jpg" alt="оптимизация" width="262" height="300" /></a>Сегодня мне хотелось бы затронуть тему оптимизации. Пройтись, так сказать, по основам, чтобы даже новичку было понятно в какую сторону копать. Необходимо, чтобы у вас был доступ к серверу через shell.</p>
<p>Какое программное обеспечение будет затронуто:</p>
<ul>
<li>apache</li>
<li>nginx</li>
<li>mysql</li>
<li>lighttpd</li>
<li>php</li>
<li>memcached</li>
<li>CentOS</li>
</ul>
<h3>&#8211; Статика-динамика</h3>
<p>Для начала давайте разберемся с web-серверами. Разделим все дело на так называемые front-end и back-end или в просторечье на статику-динамику. Статику (CSS, картинки, JS) у нас будет отдавать какой-нибудь легкий и быстрый сервер, например nginx или lighttpd. А вот динамикой (php) займется привычный большинству Apache. Либо же это может быть Apache-Tomkat(если используется Java).</p>
<blockquote><p>Преимущества подобной схемы можно понять на небольшом примере. Представьте себе, что к вашему web серверу apache необходимо обслужить порядка 1000 запросов одновременно, причем многие из этих клиентов подключены к медленным каналам связи. В случае использования apache мы получим 1000 процессов httpd на каждый из которых будет выделена оперативная память, и эта память не освободится до тех пор, пока клиент не получит запрошенный контент (в идеальном варианте конечно).</p>
<p>В случае схемы с применением front end/back end сервера получим значительную экономию системных ресурсов за счет того, что после того как пришел запрос клиента, nginx передает запрос apache и быстро получает ответ. В итоге apache после того как отдал ответ nginx освобождает память, далее с клиентом взаимодействует web сервер nginx, который как раз и написан для раздачи статического контента, большому количеству клиентов, при незначительном потреблении системных ресурсов.</p></blockquote>
<h3>&#8211; Нагрузка на сервер</h3>
<p>Нагрузку на сервер можно определять командой <em>top</em> (вводим в командную строку). Данная команда выводит на экран нагрузку сервера в режиме реального времени. Загрузка каждого из процессоров выводится в виде десятичного числа (Например, 0.94 или 15.3).</p>
<p>На экран будет выведено, что-нибудь подобное этому:</p>
<p><em>top &#8211; 20:55:26 up 50 days,  9:50,  3 users,  load average: 0.94, 0.76, 1.26<br />
Tasks:  69 total,   1 running,  68 sleeping,   0 stopped,   0 zombie<br />
Cpu(s):  0.9% us,  0.2% sy,  0.0% ni, 76.6% id, 22.4% wa,  0.0% hi,  0.0% si<br />
Mem:   1034692k total,   996636k used,    38056k free,    12484k buffers<br />
Swap:  3068372k total,      176k used,  3068196k free,   933656k cached</em></p>
<p>Для того, чтобы посмотреть список процессов вводим команду <em>ps</em>.</p>
<h3>&#8211; Нагрузка на MySQL</h3>
<p>Обычно основная нагрузка ложится именно на сервер базы данных. Поэтому этот пункт стоит отметить особо. И уделить внимание оптимизации mysql-сервера тоже нужно особое. Подробнее о том, как <a href="http://www.mysql.ru/docs/man/mysql.html" target="_blank">подключиться к mysql через командную строку</a>. Подробнее по оптимизации самого mysql можно почитать <a href="http://web-scalability.com/2008/05/30/mysql-тюнинг-настраиваем-по-взрослому/" target="_blank">на этом блоге</a>.</p>
<p>Зайдем через консоль в рабочую базу данных и пишем:<br />
<em>show full processlist;</em><br />
либо<br />
<em>show processlist;</em></p>
<p>Данный запрос покажет какие потоки запущены в настоящий момент.</p>
<blockquote><p>Эта команда очень полезна, если выдается сообщение об ошибке &#8216;too many connections&#8217; (слишком много соединений) и необходимо выяснить, что происходит. MySQL резервирует одно дополнительное соединение для клиента с привилегией SUPER, чтобы у вас всегда была возможность войти в систему и произвести проверку (предполагается, что вы не станете раздавать эту привилегию всем своим пользователям).</p></blockquote>
<p>* не забывайте ставить точку с запятой в конце каждой команды!</p>
<p>Также стоить обратить внимание на параметр конфигурации<br />
<em>-log-slow-queries</em><br />
Если используется этот параметр, в лог-журнал будут записываться все медленные запросы. Вам останется только сделать выводы и найти пути решения.</p>
<p>Теперь разберемся с запросами. Находим через <em>show processlist;</em> или <em>-log-slow-queries</em> &laquo;грузящие&raquo; процессы и приступаем к оптимизации. Вариантов несколько:</p>
<ol>
<li>упрощение запросов;</li>
<li>кэширование данных в оперативную память (например, memcached).</li>
</ol>
<p>Еще один немаловажный момент &#8211; частые вставки (INSERT). При существенных нагрузках запросы типа INSERT могут не успевать обрабатываться и они будут попросту сбрасываться. Как вариант можно использовать <em>INSERT DELAYED</em> (запрос будует ставится в очередь на выполнение и когда ресурсы освободятся &#8211; запрос будет выполнен). Однако стоит отметить, что INSERT DELAYED не поддерживается InnoDB. Как правило INSERT DELAYED стоит использовать в таблицах, где хранится статистическая информация и запросы на INSERT превышают запросы на SELECT.</p>
<h3>&#8211; Сессии</h3>
<p>Сессии являются файловым хранилищем, поэтому обращение к ним следует минимизировать. И по возможности хранить данные в cookie. Только не забывайте о мерах безопасности, т.к. пользовательские куки легко подделать. Как вариант хранить данные сессий в том же memcached.</p>
<p>p.s. здесь не были затронуты такие темы, как шардинг, партиционирование, репликация. Каждая из них заслуживает отдельного внимания и проработки.<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/" rel="bookmark" title="8 октября 2009">Установка nginx,eaccelerator и обновление php,mysql,apache на CentOS</a></li>
<li><a href="http://zlob.in/2011/avtoportal-cel-1/" rel="bookmark" title="20 апреля 2011">Автопортал &#8211; цель №1</a></li>
<li><a href="http://zlob.in/2011/uuid-v-mysql/" rel="bookmark" title="27 февраля 2011">UUID в MySQL</a></li>
<li><a href="http://zlob.in/2009/centos/" rel="bookmark" title="22 сентября 2009">CentOS</a></li>
<li><a href="http://zlob.in/2010/xranimye-procedury-v-mysql/" rel="bookmark" title="26 августа 2010">Хранимые процедуры в MySQL</a></li>
</ul>
<p><!-- Similar Posts took 3.276 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2010/optimizaciya/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Обновился Sypex Dumper</title>
		<link>http://zlob.in/2009/obnovilsya-sypex-dumper/</link>
		<comments>http://zlob.in/2009/obnovilsya-sypex-dumper/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 08:43:43 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=460</guid>
		<description><![CDATA[После доооолго перерыва (почти три года) вышло обновление замечательной тулзы Sypex Dumper (создание и восстановление бэкапов баз данных). Я этот момент непростительно пропустил. По заявлениям разработчиков новая версия работает в 7-8 раз быстрее старой, чтож давайте протестируем. Основные нововведения: простой и понятный интерфейс с применением ajax; возможность сохранения заданий и запуска их познее, например по [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_461" class="wp-caption alignleft" style="width: 202px"><a href="http://zlob.in/wp-content/uploads/2009/10/sypex.png"><img class="size-full wp-image-461" title="sypex" src="http://zlob.in/wp-content/uploads/2009/10/sypex.png" alt="sypex" width="192" height="60" /></a><p class="wp-caption-text">sypex</p></div>
<p>После доооолго перерыва (почти три года) вышло обновление замечательной тулзы <a href="http://sypex.net/" target="_blank">Sypex Dumper</a> (создание и восстановление бэкапов баз данных).<br />
Я этот момент непростительно пропустил. По заявлениям разработчиков новая версия работает в 7-8 раз быстрее старой, чтож давайте протестируем.</p>
<p>Основные нововведения:</p>
<ul>
<li>простой и понятный интерфейс с применением ajax;</li>
<li>возможность сохранения заданий и запуска их познее, например по крону;</li>
<li>появился <a href="http://sypex.net/forum/" target="_blank">форум</a>, где можно обсудить проблемы и их решения;</li>
<li>добавлены сервисные функции &#8211; оптимизация, ремонт таблиц;</li>
<li>работа с таймаутами;</li>
<li>BSD лицензия;</li>
<li>&#8230;</li>
<li>и еще много всяких вкусностей.</li>
</ul>
<p>После апробирования можно сделать вывод, что утилита работает очень шустро, не требовательна к ресурсам, легка в настройке и управлении. Но не стоит забывать, что на данный момент она имеет версию &laquo;Beta&raquo;, т.ч. баги еще могут вылазить. Также, скрипт работает без проблем с базами данных очень большого объема и имеет мультиязычный интерфейс.</p>
<p><em>p.s. в связи с возможными вопросами. Данный скрипт устанавливается непосредственно на сервере (локальном или удаленном) и подключается соответственно к СУБД установленной на данном сервере.</em><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/pervyj-opyt-s-ozonru/" rel="bookmark" title="7 мая 2009">Первый опыт с ozon.ru</a></li>
<li><a href="http://zlob.in/2009/utf-i-problema-s-russkimi-bukvami-i-sh/" rel="bookmark" title="21 января 2009">UTF и проблема с русскими буквами И, ш</a></li>
<li><a href="http://zlob.in/2010/youtube-api-javascript-upload/" rel="bookmark" title="26 июня 2010">YouTube API &#038; JavaScript Upload</a></li>
</ul>
<p><!-- Similar Posts took 21.079 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2009/obnovilsya-sypex-dumper/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Установка nginx,eaccelerator и обновление php,mysql,apache на CentOS</title>
		<link>http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/</link>
		<comments>http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 23:39:42 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=434</guid>
		<description><![CDATA[Данная публикация является логическим продолжением одной из предыдущих, в которой я описывал установку yum и ISPManager на CentOS. Зачем нам nginx? Если уж вы читаете статью о том, как установить nginx, то для себя наверняка решили зачем он вам. Более подробно о связке nginx + apache можно почитать в этой статье. Для начала установим отличный [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zlob.in/wp-content/uploads/2009/10/123123.jpg"><img class="alignleft size-medium wp-image-439" title="nginx apache" src="http://zlob.in/wp-content/uploads/2009/10/123123-300x200.jpg" alt="nginx apache" width="300" height="200" /></a>Данная публикация является логическим продолжением одной из предыдущих, в которой я описывал <a href="http://zlob.in/2009/centos/" target="_blank">установку yum и ISPManager на CentOS</a>.</p>
<p>Зачем нам nginx? Если уж вы читаете статью о том, как установить nginx, то для себя наверняка решили зачем он вам. Более подробно о связке nginx + apache можно почитать в <a href="http://centos.alt.ru/?cat=9" target="_blank">этой</a> статье.</p>
<p>Для начала установим отличный репозиторий</p>
<p><em><code>rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm<br />
rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm</code></em></p>
<p>Теперь займемся обновлением ПО. Удалим или обновим свой старый php</p>
<p><em>yum remove php</em></p>
<p>теперь установим новый</p>
<p><em>yum install php php-devel php-fpm php-mcrypt php-mssql php-gd php-mysql</em></p>
<p>Обновим mysql и apache</p>
<p><em>yum update mysql<br />
yum update httpd</em></p>
<p>Разберемся с установкой nginx. Первым делом зайдите в панель ISPManager, найдите там ссылку &laquo;Возможности&raquo; и перейдите по ней. Если в списке присутствует nginx, то просто устанавливаем его путем нажатия на &laquo;горящую&raquo; лампочку. Если же в списке nginx отсутствует, то действуем следующим образом:</p>
<p><em>yum install nginx</em></p>
<p>Для того, чтобы связать ISPManager и nginx очищаем кэш пакетов ISPManager</p>
<p><em>/usr/local/ispmgr/sbin/pkgctl -D cache</em></p>
<p>и рестартим ИСП</p>
<p><em>killall -9 -r ispmgr</em></p>
<p>Идем в пункт Возможности(Features) панели ISPManager и там устанавливаем Nginx. Теперь рестартуем nginx и apache</p>
<p><em>service httpd restart<br />
service nginx restart</em></p>
<p>p.s. хотя можно попробовать активировать его из шелла:</p>
<p><em>/usr/local/ispmgr/sbin/pkgctl activate nginx</em></p>
<h2>Установка mod_rpaf</h2>
<p>Теперь нам потребуется модуль mod_rpaf, т.к. по умолчанию связка nginx+apache для всех IP адресов получаемых через <em>$_SERVER['REMOTE_ADDR']</em> будет показывать адрес вашего сервера.</p>
<p>Для установки понадобятся пакеты gcc, rpm-build и httpd-devel.</p>
<p><em>yum install gcc rpm-build httpd-devel</em></p>
<p>Можно не извращаться и установить mod_rpaf напрямую из репозитория:</p>
<p><em>yum install mod_rpaf</em></p>
<p>Либо сделать все ручками. Перейдем к скачиванию и установке самого mod_rpaf</p>
<p><em>cd /usr/local/src<br />
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz<br />
tar xzf mod_rpaf-0.6.tar.gz<br />
cd mod_rpaf-0.6<br />
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c</em></p>
<p>Проверяем создался ли в директории /etc/httpd/conf.d/ файл rpaf.conf. Если его там нет, то создаем и прописываем следующие строки:</p>
<p><em>LoadModule rpaf_module modules/mod_rpaf-2.0.so<br />
RPAFenable On<br />
RPAFproxy_ips 127.0.0.1 xx.xx.xx.xx</em></p>
<p>где xx.xx.xx.xx &#8211; IP адрес вашего сервера. Если на сервере несколько адресов, то прописываем их по аналогии через пробел. Перезапускаем Apache</p>
<p><em>service httpd restart</em></p>
<p>В nginx внутри блока http {} должны быть указаны строки:</p>
<p><em>proxy_set_header Host $host;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</em></p>
<p>если вы изменяли nginx.conf, следует перезапустить nginx:</p>
<p><em>service nginx restart</em></p>
<p>Проверяем работособность. Создаем php файл со следующим содержимым и на экране у нас должен высветится реальный IP:</p>
<p><em>&lt;?<br />
echo $_SERVER['REMOTE_ADDR'];<br />
?&gt;</em></p>
<h2><strong>Установка Eaccelerator</strong></h2>
<p>Мы уже установили репозитозиторий с centalt, поэтому сразу прописываем</p>
<p><em>yum install php-eaccelerator</em></p>
<p>Теперь создаем директорию для кэша eaccelerator (если эта директория уже не создана) и назначаем ей права</p>
<p><em>mkdir /var/cache/php-eaccelerator<br />
chmod 777 /var/cache/php-eaccelerator</em></p>
<p>перезапускаем apache</p>
<p><em>service httpd restart</em></p>
<p>и проверяем eaccelerator на работоспособность</p>
<p><em>php -v</em></p>
<p>Должно высветиться что-то наподобии этого:</p>
<p>PHP 5.2.11 (cli) (built: Sep 29 2009 22:33:25)<br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies<br />
<strong>with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator</strong></p>
<h2>Скрываем версию php и nginx</h2>
<p>Теперь сделаем еще пару хитростей. В файле /etc/php.ini находим директиву expose_php и выставляем ей значение off  и таким образом скрываем версию php.</p>
<p><em>expose_php = Off</em></p>
<p>Для nginx поступаем следующим образом &#8211; в секции http прописываем строку</p>
<p><em>server_tokens off;</em></p>
<p>Все теперь версии nginx и php у нас скрыты.<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/centos/" rel="bookmark" title="22 сентября 2009">CentOS</a></li>
<li><a href="http://zlob.in/2010/ustanovka-ape-na-centos/" rel="bookmark" title="16 января 2010">Установка APE на CentOS</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
<li><a href="http://zlob.in/2010/xosting-za-12-rublej-v-mesyac/" rel="bookmark" title="7 февраля 2010">Хостинг за 12 рублей в месяц</a></li>
<li><a href="http://zlob.in/2010/ustanavlivaem-mongodb-na-centos-2/" rel="bookmark" title="13 января 2010">Устанавливаем mongoDB на CentOS</a></li>
</ul>
<p><!-- Similar Posts took 3.223 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Kohana &#8211; php framework</title>
		<link>http://zlob.in/2009/kohana-php-framework/</link>
		<comments>http://zlob.in/2009/kohana-php-framework/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 04:33:17 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[web-разработки]]></category>
		<category><![CDATA[kohana]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=401</guid>
		<description><![CDATA[На данный момент я довольно плотно подсел на этот фреймворк (kohana). Кохана на начальном этапе представлял из себя лишь ответвление от другого фреймворка CodeIgniter. Основные их отличия заключались в отсутствии поддержки со стороны kohana php версии меньшее 5.2 и поддержка строгого ООП. Более подробно с историческими сведениями Вы можете ознакомится в википедии. Introduction. С чего [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zlob.in/wp-content/uploads/2009/09/123321123.jpg"><img class="size-medium wp-image-405 alignright" title="php kohana" src="http://zlob.in/wp-content/uploads/2009/09/123321123-300x150.jpg" alt="php kohana" width="300" height="150" /></a>На данный момент я довольно плотно подсел на этот фреймворк (<em>kohana</em>). Кохана на начальном этапе представлял из себя лишь ответвление от другого фреймворка <em>CodeIgniter</em>. Основные их отличия заключались в отсутствии поддержки со стороны kohana php версии меньшее 5.2 и поддержка строгого ООП. Более подробно с историческими сведениями Вы можете ознакомится в <a href="http://ru.wikipedia.org/wiki/Kohana" target="_blank">википедии</a>.</p>
<h2>Introduction. С чего начать?</h2>
<p>Прежде всего нужно отметить, что на данный момент есть две очень сильно различающиеся версии коханы. Ветка 2.4 &#8211; логическое продолжение ветки 2.3 и ветка 3.x &#8211; полностью переписаная версия. В третьей версии поменялось все, кроме, пожалуй, скорости. Именно скоростью своей работы меня и пленил этот фреймворк. Если Вы хотите идти в ногу со временем, то стоит присматриваться именно к KO3, однако к нему нет еще полной документации и разрабатывать приходится на ощупь. Но в этом есть свои плюсы &#8211; приходится подробно просматривать исходники ядра.</p>
<h2>Какие плюсы?</h2>
<ul>
<li>Полная поддержка utf-8;</li>
<li>HMVC модель (в третьей версии);</li>
<li>строгая поддержка ООП;</li>
<li>экстремальная быстрота работы.</li>
</ul>
<h2>Где есть наши?</h2>
<p>К сожалению в рунете довольно мало информации о kohana. Блоги можно пересчитать по пальцам. Я приведу здесь ссылки на те блоги, которые мне удалось найти. Если Вы знаете хороший блог о Kohana, но его нет в этом списке &#8211; сообщите об этом в комментах.</p>
<ul>
<li>Прежде всего нужно отметить <a href="http://habrahabr.ru/blogs/kohanaphp/" target="_blank">блог на Хабре</a>. Туда всегда попадают самые интересные публикации;</li>
<li>блог<a href="http://brotkin.ru " target="_blank"> Броткина Ивана</a>. Именно с этого блога я начал изучение kohana 2.3.3;</li>
<li>блог <a href="http://kupreev.com/" target="_blank">Александра Купреева</a>. Помимо того, что автор пишет статьи на русском о Kohana, так еще и переводит их на английский;</li>
<li>еще один довольно интересный блог. Буквально сегодня <a href="http://progik.ru/blog/naskolko-bstree-Kohana3- " target="_blank">вышел пост</a> о сравнении скорости KO3 и KO2;</li>
<li>на <a href="http://kuzya.name/2009/05/28/начальный-практикум-в-kohana/" target="_blank">этом</a> блоге есть всего одна статья о kohana, но для начинающих очень сильно поможет. К сожалению, блог на данный момент не обновляется;</li>
<li>а вот <a href="http://lastage.ru/kohana_nginx.html" target="_blank">здесь</a> описывается настройка kohana и nginx.</li>
</ul>
<p>Ну и конечно же оффсайт <a href="http://www.kohanaphp.com/" target="_blank">http://www.kohanaphp.com</a>. Давайте вместе продвигать этот замечательный фреймворк в массы )<br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/" rel="bookmark" title="8 октября 2009">Установка nginx,eaccelerator и обновление php,mysql,apache на CentOS</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
<li><a href="http://zlob.in/2011/avtoportal-cel-1/" rel="bookmark" title="20 апреля 2011">Автопортал &#8211; цель №1</a></li>
<li><a href="http://zlob.in/2009/poleznye-internet-servisy/" rel="bookmark" title="30 апреля 2009">Полезные интернет-сервисы</a></li>
<li><a href="http://zlob.in/2008/xss-sdox-dobem/" rel="bookmark" title="9 мая 2008">XSS сдох? Добьем!</a></li>
</ul>
<p><!-- Similar Posts took 2.614 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2009/kohana-php-framework/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>CentOS</title>
		<link>http://zlob.in/2009/centos/</link>
		<comments>http://zlob.in/2009/centos/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 15:49:07 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[ispmanager pro]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=391</guid>
		<description><![CDATA[Так уж исторически сложилось, что наиболее часто на серверах мне довелось работать именно с операционной системой CentOS. В этой публикации я постараюсь осветить некоторые проблемы и их решения, которые возникли при работе с CentOS. Сразу оговорюсь, что вы уже должны быть знакомы с тем, что такое SSH. Если вы не знакомы с этим понятием, рекомендую [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zlob.in/wp-content/uploads/2009/09/123123.jpg"><img class="size-full wp-image-392 alignright" title="CentOS" src="http://zlob.in/wp-content/uploads/2009/09/123123.jpg" alt="CentOS" width="200" height="200" /></a>Так уж исторически сложилось, что наиболее часто на серверах мне довелось работать именно с операционной системой CentOS.</p>
<p>В этой публикации я постараюсь осветить некоторые проблемы и их решения, которые возникли при работе с CentOS. Сразу оговорюсь, что вы уже должны быть знакомы с тем, что такое SSH. Если вы не знакомы с этим понятием, рекомендую прочитать об этом в одной из моих публикаций &laquo;<a href="http://zlob.in/2009/podklyuchenie-po-ssh/" target="_blank">Подключение по SSH</a>&laquo;.</p>
<h2>Установка YUM на CentOS</h2>
<p>Начнем с азов. В одном из случаев мне встретилась ОС без предустановленного установщика yum (<a href="http://nastroi.info/?p=176" target="_blank">для чего нужен yum?</a>). Тут все оказалось не совсем просто на первый взгляд &#8211; для меня как полного новичка в этом деле, т.к. до этого я привык все манипуляции проводить именно через yum. Так вот, для установки нам необходимо найти его <a href="http://mirror.centos.org/centos/5/os/" target="_blank">здесь</a> (по ссылке вам сначала необходимо выбрать архитектуру вашего CentOS, я ставил для x86_64). Находим что-то типа &laquo;<em>yum-3.2.19-18.el5.centos.noarch.rpm</em>&laquo;. Далее через ssh вбиваем следующее <em>(адрес до yum rpm, например, </em><em></em></p>
<p><em>wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/yum-3.2.19-18.el5.centos.noarch.rpm</em><em></em></p>
<p>и соответственно устанавливаем этот пакет</p>
<p><em>rpm -Uhv</em> <em>yum-3.2.19-18.el5.centos.noarch.rpm</em></p>
<p>Если установка у вас прошла успешно и не вывелось никаких errors, то все отлично. Если нет, то возможно у вас отсутсвует один из ниже приведенных пакетов:</p>
<p><em>m2crypto-0.16-6.el5.3.i386.rpm<br />
popt-1.10.2.3-9.el5.i386.rpm<br />
python-2.4.3-24.el5.i386.rpm<br />
python-elementtree-1.2.6-5.i386.rpm<br />
python-iniparse-0.2.3-4.el5.noarch.rpm<br />
python-sqlite-1.1.7-1.2.1.i386.rpm<br />
python-urlgrabber-3.1.0-5.el5.noarch.rpm<br />
rpm-4.4.2.3-9.el5.i386.rpm<br />
rpm-libs-4.4.2.3-9.el5.i386.rpm<br />
rpm-python-4.4.2.3-9.el5.i386.rpm<br />
yum-3.2.19-18.el5.centos.noarch.rpm<br />
yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm<br />
yum-metadata-parser-1.1.2-2.el5.i386.rpm</em></p>
<p>Их необходимо установить точно также, как и yum (сначала скачиваем пакеты через <em>wget</em>, затем инсталлим при помощи <em>rpm</em>).</p>
<h2>Установка ISPManager PRO на CentOS</h2>
<p>Теперь об установке ISPManager PRO на CentOS-5 x86_64. Первое, с чем пришлось столкнуться &#8211; непонятные ошибки при установке. Оказалось, что эту панельку лучше ставить на кристально чистую ОС, т.е. без установленного php, mysql, apache и пр. Очень желательно перед установкой ISPManager удалить имеющиеся пакеты, делается это следующим образом:</p>
<p><em>yum remove apache или yum remove httpd<br />
yum remove php<br />
yum remove phpmyadmin<br />
yum remove mysql-server<br />
yum remove php-mysql</em></p>
<p>ну и далее по списку того, что установлено именно у Вас. После удаления выполняем все согласно инструкции на официальном сайте: <a href="http://ru.ispdoc.com/index.php/Установка_ISPmanager_(ISPmanager)" target="_blank">Документация по установке ISPManager</a>. Качаем ISPManager<br />
<em>wget http://download.ispsystem.com/install.sh</em></p>
<p>затем устанавливаем его<br />
<em>sh install.sh</em>.</p>
<p>Для начала, достаточно. На полноту и максимальную эффективноть не претендую, в основном я эту информацию сохранил, чтобы самому не забыть <img src='http://zlob.in/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2009/ustnovka-nginxeaccelerator-i-obnovlenie-phpmysqlapache-na-centos/" rel="bookmark" title="8 октября 2009">Установка nginx,eaccelerator и обновление php,mysql,apache на CentOS</a></li>
<li><a href="http://zlob.in/2010/optimizaciya/" rel="bookmark" title="8 января 2010">Оптимизация</a></li>
<li><a href="http://zlob.in/2010/ustanovka-ape-na-centos/" rel="bookmark" title="16 января 2010">Установка APE на CentOS</a></li>
<li><a href="http://zlob.in/2011/avtoportal-cel-1/" rel="bookmark" title="20 апреля 2011">Автопортал &#8211; цель №1</a></li>
<li><a href="http://zlob.in/2011/uuid-v-mysql/" rel="bookmark" title="27 февраля 2011">UUID в MySQL</a></li>
</ul>
<p><!-- Similar Posts took 3.839 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2009/centos/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>HTML 5 не за горами</title>
		<link>http://zlob.in/2009/html-5-ne-za-gorami/</link>
		<comments>http://zlob.in/2009/html-5-ne-za-gorami/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 05:12:28 +0000</pubDate>
		<dc:creator>Евгений Злобин</dc:creator>
				<category><![CDATA[web-разработки]]></category>
		<category><![CDATA[Верстка]]></category>

		<guid isPermaLink="false">http://zlob.in/?p=364</guid>
		<description><![CDATA[Уже многие ждут выхода HTML пятой версии, которая будет большим эволюционным скачком в развитии веба. Разработка HTML 5 длится уже с 2005 года. Какие обновления нас ждут в новой версии? Появление новых элементов и атрибутов. Улучшение семантики &#8211; &#60;header&#62;, &#60;footer&#62;, &#60;nav&#62;, &#60;section&#62;, &#60;article&#62;. Думаю, что это отличное решение, ведь практически в любом шаблоне можно найти [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zlob.in/wp-content/uploads/2009/07/gearshtml5.png"><img class="alignleft size-medium wp-image-373" style="margin: 3px; padding: 2px; border: 1px solid #ccc;" title="html5" src="http://zlob.in/wp-content/uploads/2009/07/gearshtml5-300x225.png" alt="html5" width="300" height="225" /></a>Уже многие ждут выхода HTML пятой версии, которая будет большим эволюционным скачком в развитии веба. Разработка HTML 5 длится уже с 2005 года.</p>
<h2 style="clear: both;">Какие обновления нас ждут в новой версии?</h2>
<p><em><strong><span style="color: #808080;">Появление новых элементов и атрибутов.</span></strong></em><br />
<em>Улучшение семантики</em> &#8211; <span style="color: #333333;">&lt;header&gt;, &lt;footer&gt;, &lt;nav&gt;, &lt;section&gt;, &lt;article&gt;</span>. Думаю, что это отличное решение, ведь практически в любом шаблоне можно найти <span style="color: #333333;">&lt;div id=&raquo;header&raquo;&gt;, &lt;div id=&raquo;footer&raquo;&gt;, &lt;div id=&raquo;nav&raquo;&gt;</span> и подобные. Семантика данных контейнеров будет идентична обычному диву.<br />
Добавление новых функциональных элементов:<br />
<span style="color: #333333;">&lt;audio&gt;<br />
&lt;video&gt;<br />
&lt;aside&gt;</span><br />
<span style="color: #333333;">&lt;progress&gt;</span> &#8211; индикатор хода выполнения операции<br />
<span style="color: #333333;">&lt;meter&gt;</span><br />
<span style="color: #333333;">&lt;time&gt;<br />
&lt;canvas&gt;</span><br />
официально включён элемент embed. Особо хочу отметить элемент <strong>canvas</strong>, который предоставляет область для рисования изображений «на лету» средствами JavaScript. Именно это нововведенение и может поставить под большой вопрос применение flash технологий.</p>
<p><em><strong><span style="color: #808080;">Удаление устаревших элементов</span></strong> </em><span style="color: #333333;">&lt;center&gt;, &lt;font&gt;, &lt;strike&gt;, &lt;acronym&gt;, &lt;applet&gt;, &lt;basefont&gt;, &lt;big&gt;, &lt;dir&gt;, &lt;isindex&gt;, &lt;s&gt;, &lt;tt&gt;, &lt;u&gt;</span>. Все правильно &#8211; возможности данных элементов все адекватные верстальщики реализовавают через css. <span style="color: #ff0000;">Напрочь убраны фреймы</span> (frame, frameset, noframes).</p>
<p><span style="color: #808080;"><em><strong>Отказ от формальной совместимости  с SGML</strong></em><strong>.</strong></span></p>
<p><span style="color: #808080;"><em><strong>Расширение DOM-модели</strong></em><strong>.</strong></span></p>
<p><span style="color: #808080;"><em><strong>Добавление нового API</strong></em>:</span><br />
Рисование 2D-картинок в реальном времени;<br />
Контроль над проигрыванием медиафайлов;<br />
Хранение данных в браузере;<br />
Редактирование;<br />
Drag-and-drop;<br />
Работа с сетью;<br />
MIME.</p>
<p><span style="color: #808080;"><em><strong>Значительно переработано представление форм</strong></em>.</span><br />
В HTML 5 появятся такие параметры, как: type=&raquo;number&raquo; — поле для ввода числа, input type=&raquo;range&raquo; &#8211; ползунок для регулирования громкости или чего-то похожего. Также аттрибуты min, max и step будут предоставлять возможность регулировать минимальные, максимальные значения и шаг. И ещё многое и многое другое.</p>
<h2>Кто разрабатывает HTML 5?</h2>
<p>Основная проблема была в том, что консорциум W3C изначально забросил разработку и дальнешую модификацию стандарта HTML и все силы были прошены на разработку XHTML 2.0. Однако разработчики из Opera, Apple, Mozilla учредили рабочую группу WHATWG и начали работу над HTML 5 (<a href="http://www.whatwg.org/specs/web-apps/current-work/" target="_blank">Черновой вариант</a>). И с 2007 года WHATWG и W3C разрабатывают этот стандарт парралельно. А совсем недавно W3C полностью отказался от пути развития <a href="http://habrahabr.ru/blogs/webstandards/63470/" target="_blank">XHTML 2</a>.</p>
<h2>Какие выводы можно сделать?</h2>
<p>Разработка HTML 5 определяет основную тенденцию развития Интернета. И если раньше сайты были лишь средствами по предоставлению текстовой информации, то сейчас веб-сайты все больше напоминают полноценные приложения, требующие функционального и юзабельного интерфейса.</p>
<p>Flash технология может стать второстепенной, т.к. основные возможности по работе с мультимедиа во flash можно будет осуществлять через обычный html. Видео и аудио можно будет вставлять также легко, как и картинки.</p>
<p>Обычные приложение все в большей и большей степени переходят в веб. Достойное тому подтверждение &#8211; google vawe, google docs, google maps и готовящаяся операционная система от гугла.</p>
<p>Полагаю, что не обойдется без проблем. Если за браузеры opera, mozilla, chrome, safari более-менее можно быть уверенными, то как поведет себя Internet Explorer трудно предсказать. Может быть именно этот браузер и станет основным &laquo;стопом&raquo; в развитии веба.</p>
<p>Полезные ссылки:<br />
<a href="http://dimox.name/hello-html5-goodbye-xhtml2/" target="_blank">О том, как применять HTML 5 уже сейчас</a><br />
<a href="http://habrahabr.ru/blogs/webdev/49734/" target="_blank">Семантика в HTML 5</a><br />
<h3>Может быть Вам это интересно?</h3>
<ul class="similar-posts">
<li><a href="http://zlob.in/2011/avtoportal-cel-1/" rel="bookmark" title="20 апреля 2011">Автопортал &#8211; цель №1</a></li>
<li><a href="http://zlob.in/2010/trebuetsya-flash-developer/" rel="bookmark" title="13 июля 2010">Требуется FLASH-developer</a></li>
<li><a href="http://zlob.in/2010/youtube-api-javascript-upload/" rel="bookmark" title="26 июня 2010">YouTube API &#038; JavaScript Upload</a></li>
<li><a href="http://zlob.in/2009/s-novym-godom/" rel="bookmark" title="30 декабря 2009">С НОВЫМ ГОДОМ!</a></li>
<li><a href="http://zlob.in/2008/smm-ili-vkontakteru-v-dejstvii/" rel="bookmark" title="11 мая 2008">SMM или vkontakte.ru в действии</a></li>
</ul>
<p><!-- Similar Posts took 2.980 ms --></p>
                <p>&copy; "<a href = "http://zlob.in" tilte = "фриланс, заработок в сети">Паутина фриланса</a>".</p>                        ]]></content:encoded>
			<wfw:commentRss>http://zlob.in/2009/html-5-ne-za-gorami/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
	</channel>
</rss>

