<?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>PHP::Portal</title>
	<atom:link href="http://kobzarev.com/feed" rel="self" type="application/rss+xml" />
	<link>http://kobzarev.com:80</link>
	<description>// Секреты экстремального программирования</description>
	<lastBuildDate>Fri, 03 Feb 2012 12:44:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Скрытие базы данных в phpMyAdmin</title>
		<link>http://kobzarev.com:80/docs/hiding-the-database-in-phpmyadmin.html</link>
		<comments>http://kobzarev.com:80/docs/hiding-the-database-in-phpmyadmin.html#comments</comments>
		<pubDate>Tue, 17 Jan 2012 09:36:14 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Документация]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpMyAdmin]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2356</guid>
		<description><![CDATA[Для того, чтобы скрыть базу данных из листинга в phpMyAdmin, в конфиге config.inc.php пишем: PCRE - регулярное выражение, определяющее сокрытие отдельных баз данных. Важно иметь ввиду, что скрываются они только от листинга, но, тем не менее, пользователи имеют доступ к ним (используя, например, область SQL запроса). Чтобы запретить доступ пользователям, используйте механизм MySQL привилегий. Например, [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/searchers/prevent-scanning-of-confidential-data-by-search-engines.html' rel='bookmark' title='Предотвращение сканирования конфиденциальных данных поисковыми системами'>Предотвращение сканирования конфиденциальных данных поисковыми системами</a> <small>Если владелец сайта разместит информацию на нем и забудет ограничить доступ роботам поисковых систем - эта информация будет найдена, проиндексирована...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Для того, чтобы скрыть базу данных из листинга в phpMyAdmin, в конфиге <code>config.inc.php</code> пишем:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$cfg['Servers'][$i]['hide_db'] = 'PCRE';
?&gt;
</pre>
<p><code>PCRE</code> - регулярное выражение, определяющее сокрытие отдельных баз данных. Важно иметь ввиду, что скрываются они только от листинга, но, тем не менее, пользователи имеют доступ к ним (используя, например, область SQL запроса).</p>
<p class="info">Чтобы запретить доступ пользователям, используйте механизм MySQL привилегий.</p>
<p>Например, чтобы скрыть все базы данных, начинающиеся с символа <code>"a"</code>, используйте следующее регулярное выражение:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$cfg['Servers'][$i]['hide_db'] = '^a';
?&gt;
</pre>
<p>Чтобы скрыть одновременно и базу данных "db1", и "db2" используйте:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$cfg['Servers'][$i]['hide_db'] = '(db1|db2)';
?&gt;
</pre>
<h3>Ссылки</h3>
<ul>
<li><!--noindex--><a href="http://php.net/manual/en/reference.pcre.pattern.syntax.php">Мануал PHP по регулярным выражениям в формате PCRE</a><!--/noindex--></li>
<li><!--noindex--><a href="http://php-myadmin.ru/doc/config.html">Руководство. Конфигурирование phpMyAdmin</a><!--/noindex--></li>
</ul>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/searchers/prevent-scanning-of-confidential-data-by-search-engines.html' rel='bookmark' title='Предотвращение сканирования конфиденциальных данных поисковыми системами'>Предотвращение сканирования конфиденциальных данных поисковыми системами</a> <small>Если владелец сайта разместит информацию на нем и забудет ограничить доступ роботам поисковых систем - эта информация будет найдена, проиндексирована...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/docs/hiding-the-database-in-phpmyadmin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Битовые операции в PHP на примерах</title>
		<link>http://kobzarev.com:80/programming/bitwise-operators-in-php-by-example.html</link>
		<comments>http://kobzarev.com:80/programming/bitwise-operators-in-php-by-example.html#comments</comments>
		<pubDate>Wed, 21 Dec 2011 22:01:00 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2352</guid>
		<description><![CDATA[Число в двоичной (бинарной) системе исчисления представляет собой набор нулей и единиц. Самый правый бит, нулевой, называется младшим значащим битом (разрядом). Практика на примерах Установка значений битов Проверка значения бита Сброс бита Число 5 будет выглядеть, как 00000101. Всего в наличии 6 побитовых операторов: $a &#038; $b — И (получаем число в котором установлены биты, [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/browser/32766.html' rel='bookmark' title='32766px'>32766px</a> <small>Оказывается браузер Opera не может справиться с размерами (ширина, высота и тд) больше чем 32766px, так как это - максимальное...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Число в двоичной (бинарной) системе исчисления представляет собой набор нулей и единиц. Самый правый бит, нулевой, называется младшим значащим битом (разрядом).</p>
<p><span id="more-2352"></span></p>
<ol class="contents">
<li><!--noindex--><a href="/programming/bitwise-operators-in-php-by-example.html#practice">Практика на примерах</a><!--/noindex--></li>
<li><!--noindex--><a href="/programming/bitwise-operators-in-php-by-example.html#settings">Установка значений битов</a><!--/noindex--></li>
<li><!--noindex--><a href="/programming/bitwise-operators-in-php-by-example.html#checking">Проверка значения бита</a><!--/noindex--></li>
<li><!--noindex--><a href="/programming/bitwise-operators-in-php-by-example.html#reset">Сброс бита</a><!--/noindex--></li>
</ol>
<p>Число <code>5</code> будет выглядеть, как <code>00000101</code>.</p>
<p><b>Всего в наличии 6 побитовых операторов:</b></p>
<ul>
<li><code>$a &#038; $b</code> — И (получаем число в котором установлены биты, которые установлены в $a и в $b)</li>
<li><code>$a | $b</code> — Или (получаем число в котором установлены биты, которые установлены в $a или в $b)</li>
<li><code>$a ^ $b</code> — Исключающее или (число в котором установлены биты установленные в $a или в $b, но не в обоих одновременно)</li>
<li><code>~$a</code> — Отрицание (инверсия, 1 меняется на 0, и наоборот)</li>
<li><code>$a << $b</code> — Сдвиг влево (все биты в $a смещаются влево на количество позиций в $b)</li>
<li><code>$a >> $b</code> — Сдвиг вправо (все биты в $a смещаются вправо на количество позиций в $b)</li>
</ul>
<h3 id="practice" name="practice">Практика на примерах</h3>
<p>Для большей наглядности рассмотрим в качестве примера, простую систему разграничения прав доступа к сайту.</p>
<p>У нас будут доступны следующие права доступа: Чтение, Создание, Редактирование, Удаление. То есть всего 4 значения, их можно представить в виде 4-х битного числа, в котором 1 — означает, что у пользователя есть данное право, а 0 — нет.</p>
<p>Для наглядности нарисовал картинку.</p>
<p><img src="http://kobzarev.com/wp-content/uploads/2011/12/5f6e8475.png" alt="" title="" width="650" /></p>
<p>Определим для прав доступа следующие константы:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
define('U_READ', 1 &lt;&lt; 0);   // 0001
define('U_CREATE', 1 &lt;&lt; 1); // 0010
define('U_EDIT', 1 &lt;&lt; 2);   // 0100
define('U_DELETE', 1 &lt;&lt; 3); // 1000
define('U_ALL', U_READ | U_CREATE | U_EDIT | U_DELETE); // 1111
?&gt;
</pre>
<h3 id="settings" name="settings">Установка значений битов</h3>
<p>Присваиваем одно право.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$user_perm =  U_READ; // только право чтения
?&gt;
</pre>
<p>Чтобы комбинировать несколько прав используем побитовый оператор ИЛИ.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$user_perm =  U_READ | U_DELETE; // можно читать и удалять
?&gt;
</pre>
<p>Добавляем все права с помощью заготовленной константы.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$user_perm =  U_ALL; // все права
?&gt;
</pre>
<p>Если нужно дать все права кроме одного или нескольких, то можно воспользоваться следующими операторами.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$user_perm =  U_ALL ^ U_DELETE;  // все права кроме  удаления
$user_perm =  U_ALL &amp; ~ U_DELETE; // все права кроме  удаления, в данном случае 2 оператора
?&gt;
</pre>
<p>Разница между этими вариантами в том, что в первом случае просто переключается бит, если был 1, то станет 0, и наоборот. </p>
<p>Второй же вариант делает бит равным 0, независимо от его текущего значения.</p>
<h3 id="checking" name="checking">Проверка значения бита</h3>
<p>Выставлять биты мы уже научились, теперь рассмотрим как же их использовать, т.е. проверять значение. Для проверки наличия прав доступа используем побитовый оператор <code>И</code>.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
if($user_perm &amp; U_READ) // есть ли право чтения?
?&gt;
</pre>
<p>Можно проверять значения сразу нескольких бит, к примеру</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
if($user_perm &amp; ( U_READ | U_DELETE )) // есть ли право чтения и/или удаления
?&gt;
</pre>
<h3 id="reset" name="reset">Сброс бита</h3>
<p>Если мы хотим убрать какое-нибудь право доступа, то пишем так</p>
<pre class="brush: php; title: ; notranslate">
&lt;?
$user_perm &amp;= ~ U_DELETE; // запретить удаление
?&gt;
</pre>
<p class="info">Опубликовано с позволения автора (<!--noindex--><a href="http://habrahabr.ru/users/zapimir/" target="_blank">zapimir</a><!--/noindex-->). Оригинал находится на <!--noindex--><a href="http://habrahabr.ru/blogs/php/134557/" target="_blank">Хабре</a><!--/noindex-->.</p>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/browser/32766.html' rel='bookmark' title='32766px'>32766px</a> <small>Оказывается браузер Opera не может справиться с размерами (ширина, высота и тд) больше чем 32766px, так как это - максимальное...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/programming/bitwise-operators-in-php-by-example.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отключаем плагин Skype Click to Call на сайте</title>
		<link>http://kobzarev.com:80/makeup/disable-plugin-skype-click-to-call.html</link>
		<comments>http://kobzarev.com:80/makeup/disable-plugin-skype-click-to-call.html#comments</comments>
		<pubDate>Thu, 15 Dec 2011 22:12:57 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Верстка]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2350</guid>
		<description><![CDATA[Плагин Skype Click to Call позволяет вам нажатием одной клавиши перейти от просмотра веб-страницы к звонку. На большинстве веб-сайтов и в большинстве браузеров (IE, Firefox, Google Chrome) телефонные номера будут выделены голубыми (бесплатный звонок) и серыми (платный звонок) кнопками. Плагин замечательный, но есть одно "но" - некоторые строки, не являющиеся телефонными номерами, skype ошибочно распознает [...]
Нет похожих публикаций.]]></description>
			<content:encoded><![CDATA[<p>Плагин <em>Skype Click to Call</em> позволяет вам нажатием одной клавиши перейти от просмотра веб-страницы к звонку. На большинстве веб-сайтов и в большинстве браузеров (IE, Firefox, Google Chrome) телефонные номера будут выделены голубыми (бесплатный звонок) и серыми (платный звонок) кнопками.</p>
<p style="clear:left"><span id="more-2350"></span></p>
<p>Плагин замечательный, но есть одно "но" - некоторые строки, не являющиеся телефонными номерами, skype ошибочно распознает и уродует их, напрочь ломая дизайн сайта. Чтобы этого не произошло, можно принудительно отключить это дополнение к браузеру для всего сайта при помощи специальных мета-тегов</p>
<pre class="brush: xml; title: ; notranslate">
&lt;meta name=&quot;SKYPE_TOOLBAR&quot; content=&quot;SKYPE_TOOLBAR_PARSER_COMPATIBLE&quot; /&gt;
&lt;meta content=&quot;telephone=no&quot; name=&quot;format-detection&quot;&gt;
</pre>
<p>Если же необходимо исключить какой-то конкретный номер, а остальные оставить, то достаточно вставить тег <code>&lt;span/&gt;</code> внутри него.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;+7 (495) &lt;span style=&quot;display:none;&quot;&gt;_&lt;/span&gt;718-84-11&lt;/p&gt;
</pre>
<p>При копировании, естественно, знак подчёркивания попадет в буфер обмена, а при вставке его нужно будет вручную стирать.</p>
<p>Или же можно использовать какой-нибудь нестандартный тег, например, <code>&lt;skype/&gt;</code> или тег <code>&lt;noscript/&gt;</code></p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;+7 (495) &lt;skype&gt;&lt;/skype&gt;718-84-11&lt;/p&gt;
</pre>
<p>Номер телефона будет без проблем выделяться и копироваться без лишних символов.</p>
<p>В старых версиях Skype фича с мета-тегами не прокатывает. Проанализировав код через Firebug, стало понятно, что плагин оборачивает телефон  в <code>&lt;span/&gt;</code> с классом <code>skype_pnh_print_container_цифры</code>, после него добавляет <code>&lt;span/&gt;</code> с классом <code>skype_pnh_container</code>. Причем ко всем свойствам прописано <code>!important</code> из-за чего не так просто переопределить стили.</p>
<p>Попробуем исправить это поведение при помощи <code>jQuery</code></p>
<pre class="brush: jscript; title: ; notranslate">
$(function() {
    window.setTimeout(function() {
        $('span[class^=skype_pnh_print_container_]').removeClass('^skype_pnh_print_container_');
        $('span.skype_pnh_container').remove();
     }, 1000);
});
</pre>
<h3>Ссылки</h3>
<ul>
<li><!--noindex--><a href="http://www.skype.com/intl/ru/get-skype/on-your-computer/click-to-call/">Плагин Skype Click to Call</a><!--/noindex--></li>
</ul>
<p>Нет похожих публикаций.</p>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/makeup/disable-plugin-skype-click-to-call.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wine: запуск Windows программ</title>
		<link>http://kobzarev.com:80/linux/wine.html</link>
		<comments>http://kobzarev.com:80/linux/wine.html#comments</comments>
		<pubDate>Wed, 30 Nov 2011 11:29:27 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Wine]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2335</guid>
		<description><![CDATA[Wine - это свободное программное обеспечение, позволяющее пользователям UNIX-подобных систем архитектуры x86 (и других архитектур, при наличии совместимости, например, AMD64) исполнять 16 и 32-битные приложения Microsoft Windows (64-битные приложения находятся в стадии ранней реализации). Установка Wine Установка DirectX с помощью Winetricks Установка необходимых библиотек Установка шрифтов Установка и удаление приложений Запуск приложений Общие настройки Неполадки [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/browser/internet-explorer-6-on-opensuse.html' rel='bookmark' title='Internet Explorer 6 под OpenSUSE'>Internet Explorer 6 под OpenSUSE</a> <small>Свёрстанный макет обычно проверяют в основных браузерах, чтобы отловить ошибки и неточности в HTML-коде. По причине того, что я перешел...</small></li>
<li><a href='http://kobzarev.com:80/news/microsoft-releases-patches-for-25-vulnerabilities-in-windows.html' rel='bookmark' title='Microsoft выпускает патчи для 25 уязвимостей в Windows'>Microsoft выпускает патчи для 25 уязвимостей в Windows</a> <small>Корпорация Microsoft выпустила 11 бюллетеней по безопасности, позволяющих закрыть не менее 25 уязвимостей в своих программных продуктах. Эти уязвимости были...</small></li>
<li><a href='http://kobzarev.com:80/linux/installing-adobe-photoshop-cs5-in-linux.html' rel='bookmark' title='Установка Adobe Photoshop CS5 в Linux'>Установка Adobe Photoshop CS5 в Linux</a> <small>Хотя все уже давно перешли на Linux, но как не крутись, а без фотошопа - не обойтись. Есть несколько способов...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Wine - это свободное программное обеспечение, позволяющее пользователям UNIX-подобных систем архитектуры x86 (и других архитектур, при наличии совместимости, например, AMD64) исполнять 16 и 32-битные приложения Microsoft Windows (64-битные приложения находятся в стадии ранней реализации).</p>
<p style="clear: left"><span id="more-2335"></span></p>
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin-bottom: 15px;">
<tr>
<td width="50%">
<ol>
<li><!--noindex--><a href="/linux/wine.html#install-wine">Установка Wine</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#directx-winetricks">Установка DirectX с помощью Winetricks</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#install-libraries">Установка необходимых библиотек</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#install-fonts">Установка шрифтов</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#install-uninstall-apps">Установка и удаление приложений</a><!--/noindex--></li>
</ol>
</td>
<td>
<ol start="6">
<li><!--noindex--><a href="/linux/wine.html#run-apps">Запуск приложений</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#basic-settings">Общие настройки</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#wine-errors">Неполадки</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#wine-note">Памятка</a><!--/noindex--></li>
<li><!--noindex--><a href="/linux/wine.html#wine-links">Ссылки</a><!--/noindex--></li>
</ol>
</td>
</tr>
</table>
<h3 id="install-wine" name="install-wine">Установка Wine</h3>
<p>Для установки (и только для установки) воспользуйтесь терминалом суперпользователя:</p>
<pre class="brush: bash; title: ; notranslate">sudo -s</pre>
<p>Добавьте список репозиториев, ключ и установите Wine:</p>
<pre class="brush: bash; title: ; notranslate">
RELEASE=`lsb_release -cs`
elif [[ $RELEASE = &quot;karmic&quot; || $RELEASE = &quot;jaunty&quot; || $RELEASE = &quot;intrepid&quot; || $RELEASE = &quot;hardy&quot; ]]; then
wget -q http://wine.budgetdedicated.com/apt/sources.list.d/$RELEASE.list -O /etc/apt/sources.list.d/winehq.list
wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- | apt-key add -
apt-get update &amp;&amp; apt-get install -y wine cabextract
</pre>
<p>Запустите конфигуратор <codeo>wine</codeo>, в домашней директории создастся папка <code>~/.wine/</code></p>
<pre class="brush: bash; title: ; notranslate">winecfg</pre>
<p>Пока что ничего там не стоит трогать, закройте.</p>
<h3 id="directx-winetricks" name="directx-winetricks">Установка DirectX с помощью Winetricks</h3>
<p>DirectX — это набор API функций, разработанных для решения задач, связанных с игровым и видеопрограммированием под Microsoft Windows, разумеется его нужно установить.</p>
<p>Вы можете <!--noindex--><a href="http://filehippo.com/download_directx/">скачать</a><!--/noindex-->, распаковать и установить DirectX вручную.</p>
<p>Вы можете воспользоваться <code>WineSX</code> или <code>Q4Wine</code> - которые позволяют легко настроить Wine путем установки и удаления программ, редактирования реестра, управления файлами и многое другое в графическом режиме.</p>
<ul>
<li><!--noindex--><a href="http://www.ubuntugeek.com/winexs-simple-graphical-environment-to-configure-wine.html">WineSX</a><!--/noindex--> - GUI для Ubuntu.</li>
<li><!--noindex--><a href="http://habrahabr.ru/blogs/linux/55619/">Q4Wine</a><!--/noindex--> - GUI для Kubuntu.</li>
</ul>
<p>Но сообщество Wine, предлагает вам более изящный вариант установки с помощью скрипта <code>winetricks</code>. Который помимо <code>DirectX</code> может ставить ряд других программ, например: .NET, Mono и даже Firefox3, и MS Windows Media Player и др. Шрифты.</p>
<p>Скачайте скрипт командой в терминале:</p>
<pre class="brush: bash; title: ; notranslate">wget http://www.kegel.com/wine/winetricks</pre>
<p>Дайте права на запуск:</p>
<pre class="brush: bash; title: ; notranslate">chmod a+rwx winetricks</pre>
<p>Запускать программу надо именно под тем пользователем, под которым у вас работает Wine, иначе софт установится не туда, куда нужно. Права суперпользователя не потребуются.</p>
<p>Для открытия графического меню, два раза кликните по скрипту и выберите: "Запустить"</p>
<p>Поставьте галочку против directx9 и нажмите "OK"</p>
<p>А так же, вы можете установить пакет из терминала:</p>
<pre class="brush: bash; title: ; notranslate">./winetricks directx9</pre>
<p>Для запуска скрипта <code>winetricks</code> по <code>alt+F2</code>, его следует переместить в <code>/usr/bin</code></p>
<pre class="brush: bash; title: ; notranslate">sudo mv winetricks /usr/local/bin</pre>
<p>В терминале можно указывать сразу несколько пакетов, разделяя названия пробелом. В графическом интерфейсе программы, тоже можно выбирать несколько пакетов (используя для этого клавиши <code>shift</code> или <code>ctrl</code>).</p>
<h3 id="install-libraries" name="install-libraries">Установка необходимых библиотек</h3>
<p>Скачайте в домашнюю директорию несколько необходимых библиотек Windows:</p>
<ul>
<li><!--noindex--><a href="/wp-content/uploads/wine/mscoree.dll">mscoree.dll</a><!--/noindex--></li>
<li><!--noindex--><a href="/wp-content/uploads/wine/streamci.dll">streamci.dll</a><!--/noindex--></li>
<li><!--noindex--><a href="/wp-content/uploads/wine/mfc42.dll">mfc42.dll</a><!--/noindex--></li>
</ul>
<p>Скопируйте их в <code>~/.wine/drive_c/windows/system32/</code>, перейдите в эту папку и удалите ненужные библиотеки:</p>
<pre class="brush: bash; title: ; notranslate">
cp mscoree.dll streamci.dll mfc42.dll ~/.wine/drive_c/windows/system32/ &amp;&amp; cd ~/.wine/drive_c/windows/system32/ &amp;&amp; rm d3d8.dll d3d9.dll ddraw.dll dsound.dll dsound.vxd quartz.dll dxdiagn.dll
</pre>
<p>При необходимости отредактируйте файл <code>~/.wine/user.reg</code></p>
<pre class="brush: bash; title: ; notranslate">
gedit ~/.wine/user.reg
</pre>
<p>В конец файла вставьте:</p>
<pre class="brush: bash; collapse: true; light: false; title: ; toolbar: true; notranslate">
[Software\\Wine\\DllOverrides] 1196330736
&quot;d3d8&quot;=&quot;native&quot;
&quot;d3d9&quot;=&quot;native&quot;
&quot;d3dim&quot;=&quot;native&quot;
&quot;d3dx8&quot;=&quot;native&quot;
&quot;d3dxof&quot;=&quot;native&quot;
&quot;dciman32&quot;=&quot;native&quot;
&quot;ddrawex&quot;=&quot;native&quot;
&quot;devenum&quot;=&quot;native&quot;
&quot;dinput&quot;=&quot;native&quot;
&quot;dinput8&quot;=&quot;native&quot;
&quot;dmband&quot;=&quot;native&quot;
&quot;dmcompos&quot;=&quot;native&quot;
&quot;dmime&quot;=&quot;native&quot;
&quot;dmloader&quot;=&quot;native&quot;
&quot;dmscript&quot;=&quot;native&quot;
&quot;dmstyle&quot;=&quot;native&quot;
&quot;dmsynth&quot;=&quot;native&quot;
&quot;dmusic&quot;=&quot;native&quot;
&quot;dplay&quot;=&quot;native&quot;
&quot;dplayx&quot;=&quot;native&quot;
&quot;dpnaddr&quot;=&quot;native&quot;
&quot;dpnet&quot;=&quot;native&quot;
&quot;dpnhpast&quot;=&quot;native&quot;
&quot;dswave&quot;=&quot;native&quot;
&quot;dxdiagn&quot;=&quot;native&quot;
&quot;mscoree&quot;=&quot;native&quot;
&quot;quartz&quot;=&quot;native&quot;
&quot;streamci&quot;=&quot;native&quot;
</pre>
<p>Снова запустите конфигуратор wine:</p>
<pre class="brush: bash; title: ; notranslate">
winecfg
</pre>
<p>Перейдите на вкладку "Библиотеки", где каждый указанный из ниже приведенного списка файл отредактируйте, указывая что библиотека "Встроенная (Wine)": <code>d3d8</code>, <code>d3d9</code>, <code>ddrawex</code>, <code>dinput</code>, <code>dinput8</code>.</p>
<h3 name="install-fonts" id="install-fonts">Установка шрифтов</h3>
<p>Для того, чтобы шрифты отображались нормально, их надо установить. Дело в том, что по умолчанию папка <code>~/.wine/drive_c/windows/fonts</code> почти пустая.</p>
<p>Установите системные шрифты Windows:</p>
<pre class="brush: bash; title: ; notranslate">
winetricks corefonts
</pre>
<p>Вы можете дополнить коллекцию шрифтов скачав архив, распаковав и скопировав файлы <code>*.ttf</code> в <code>~/.wine/drive_c/windows/fonts</code></p>
<pre class="brush: bash; title: ; notranslate">
wget http://kobzarev.com/wp-content/uploads/wine/notes_69.tar.gz &amp;&amp; tar xvfz notes_69.tar.gz &amp;&amp; cp ~/fonts-cyr-win311/*TTF ~/.wine/drive_c/windows/Fonts
</pre>
<p>Удалите весь мусор из домашней директории:</p>
<pre class="brush: bash; title: ; notranslate">
rm -f mscoree.dll streamci.dll mfc42.dll notes_69.tar.gz &amp;&amp; rm -rf fonts-cyr-win311
</pre>
<p>Если необходимо использование ttf-шрифтов всеми пользователями системы, тогда скопируйте их в папку <code>/usr/share/wine/fonts</code> (Ubuntu) и измените атрибуты файлов на 644:</p>
<pre class="brush: bash; title: ; notranslate">
sudo chmod 644 /usr/share/wine/fonts/*.TTF
</pre>
<h3 id="install-uninstall-apps" name="install-uninstall-apps">Установка и удаление приложений</h3>
<p>Для установки win-приложения проще всего воспользоваться файловым браузером <code>winefile</code>:</p>
<pre class="brush: bash; title: ; notranslate">
winefile
</pre>
<p>Достаточно перейти в необходимый каталог и запустить программу двойным щелчком мыши.</p>
<p>Многие win-приложения запрашивают перезагрузку для завершения установки. Разумеется, перезагружать host-систему при этом не следует.</p>
<p>Процедуре перезагрузки Windows, соответствует команда:</p>
<pre class="brush: bash; title: ; notranslate">
wineboot
</pre>
<p>Если в этот момент в Wine выполняются другие приложения, то рекомендуется их завершить до перезагрузки.</p>
<p>Для установки <code>*.msi</code>, воспользуйтесь командой:</p>
<pre class="brush: bash; title: ; notranslate">
msiexec /i example.msi
</pre>
<p>Для удаления win-приложения перейдите в "Приложения" - "Wine" - "Программы" - "Папка с программой" - "Uninstall"</p>
<p>Или воспользуйтесь утилитой <code>uninstaller</code>. Эта утилита выводит список установленных приложений. Чтобы удалить приложение, выберите его из списка и нажмите кнопку "Uninstall". Если приложения, которое вы хотите удалить, нет в списке, то будет достаточно просто удалить каталог с приложением (можно воспользоваться для этого программой <code>winefile</code>, а можно вручную, перейдя в каталог <code>~/.wine/drive_c/Program Files</code>).</p>
<h3 id="run-apps" name="run-apps">Запуск приложений</h3>
<p>Если установка приложения прошла правильно, в "Приложения" - "Wine" - "Программы" появится соответствующее меню. Если по каким-то причинам этого не произошло, пробуйте запустить установленную программу через терминал.</p>
<p>К примеру, я запускаю из терминала установленный калькулятор:</p>
<pre class="brush: bash; title: ; notranslate">
cd &quot;~/.wine/drive_c/Program Files/Calc&quot;
calc.exe
</pre>
<p class="info">Не пытайтесь запустить приложения Windows щелчком в Nautilus. Иногда этот фокус проходит, но может привести к ошибкам.</p>
<h3 id="basic-settings" name="basic-settings">Общие настройки</h3>
<p><b>Приложения:</b></p>
<p>По умолчанию установлен Windows XP, который можно изменить на другую версию. Причем можно настроить так, чтобы каждое приложение запускалось со своим параметром.</p>
<p><b>Библиотеки:</b></p>
<p>По умолчанию все библиотеки в Wine используются свои. Но при установке DirectX, вы внесли там необходимые изменения.</p>
<p><b>Графика:</b></p>
<p>Для некоторых приложений может потребоваться включить или выключить вершинные и пиксельные шейдеры, может потребоваться эмуляция виртуального рабочего стола. Экспериментируйте.</p>
<p><b>Вид и интеграция:</b></p>
<p>Во вкладке "Графика", по умолчанию стоят галочки "разрешить менджеру окон управлять окнами Wine” и "разрешить менджеру окон декорировать окна", оформление win-окон будет таким же, как и у любых других приложений. При желании вы можете управлять размерами системных шрифтов и цветом десктопа.</p>
<p><b>Диски:</b></p>
<p>Здесь можно добавлять диски, используя для них любую директорию внутри файловой системы. Смонтированную флешку, дисковод или образ диска.</p>
<p><b>Аудио:</b></p>
<p>На ваше усмотрение. Если звук работает, то трогать там ничего не рекомендуется.</p>
<h3 id="wine-errors" name="wine-errors">Неполадки</h3>
<p>Если что-то прошло некорректно, рекомендуется переустановить Wine и все программы.</p>
<p>Для этого следует удалить директорию <code>~/.wine</code>, выполнить команду winecfg и снова установить программы.</p>
<p>Удалять пакеты <code>wine</code> и <code>wine-gecko</code> в Synaptic не нужно.</p>
<p>Если у вас установлен <code>gxNeur</code>, следует добавить <code>Wine</code> в список исключений. Иначе в программах, запущенных под <code>Wine</code> не будет работать клавиатура.</p>
<p>Если вы не используете SCIM - рекомендую удалить:</p>
<pre class="brush: bash; title: ; notranslate">
sudo apt-get remove scim
</pre>
<p>Бывает что после удаления программ установленных под <code>Wine</code>, остаются ярлыки в меню.</p>
<p>Их можно удалить следующим образом:</p>
<p>Посмотрите и удалите тут: <code>~/.local/share/applications/wine/Программы</code></p>
<p>Для удаления ВСЕХ ярлычков:</p>
<pre class="brush: bash; title: ; notranslate">
sudo rm -r ~/.local/share/applications/wine/Программы
</pre>
<h3 id="wine-note" name="wine-note">Памятка</h3>
<p>При запуске Wine - закрывайте все работающие приложения и отключайте <code>Compiz</code>!</p>
<p>Возможно вам потребуются распаковщики <code>*.rar</code>, <code>*.zip</code> и пр.</p>
<pre class="brush: bash; title: ; notranslate">
sudo apt-get install unace rar unrar zip unzip p7zip-full p7zip-rar sharutils aish uudeview mpack lha arj cabextract file-roller
</pre>
<h3 id="wine-links" name="wine-links">Ссылки</h3>
<ul>
<li><!--noindex--><a href="http://ubuntologia.ru/wine">Wine - запуск Windows программ </a><!--/noindex--></li>
<li><!--noindex--><a href="http://biotex.ibss.org.ua/faq_profile.html?id=69">Как установить русские ttf-шрифты в Wine (Ubuntu)</a><!--/noindex--></li>
</ul>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/browser/internet-explorer-6-on-opensuse.html' rel='bookmark' title='Internet Explorer 6 под OpenSUSE'>Internet Explorer 6 под OpenSUSE</a> <small>Свёрстанный макет обычно проверяют в основных браузерах, чтобы отловить ошибки и неточности в HTML-коде. По причине того, что я перешел...</small></li>
<li><a href='http://kobzarev.com:80/news/microsoft-releases-patches-for-25-vulnerabilities-in-windows.html' rel='bookmark' title='Microsoft выпускает патчи для 25 уязвимостей в Windows'>Microsoft выпускает патчи для 25 уязвимостей в Windows</a> <small>Корпорация Microsoft выпустила 11 бюллетеней по безопасности, позволяющих закрыть не менее 25 уязвимостей в своих программных продуктах. Эти уязвимости были...</small></li>
<li><a href='http://kobzarev.com:80/linux/installing-adobe-photoshop-cs5-in-linux.html' rel='bookmark' title='Установка Adobe Photoshop CS5 в Linux'>Установка Adobe Photoshop CS5 в Linux</a> <small>Хотя все уже давно перешли на Linux, но как не крутись, а без фотошопа - не обойтись. Есть несколько способов...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/linux/wine.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка пользовательских шрифтов в Ubuntu</title>
		<link>http://kobzarev.com:80/linux/installation-of-custom-fonts-in-ubuntu.html</link>
		<comments>http://kobzarev.com:80/linux/installation-of-custom-fonts-in-ubuntu.html#comments</comments>
		<pubDate>Tue, 29 Nov 2011 08:35:05 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[Lubuntu]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Xubuntu]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2333</guid>
		<description><![CDATA[Для установки шрифта, копируем его в папку ~/.fonts, находящуюся в корне вашей учетной записи. Если такой папки нет - создайте. После копирования сбросьте шрифтовый кэш Похожие публикации: Таблица соответствия размеров шрифтов в CSS Не важно каким способом задания размера шрифта в CSS вы пользуетесь, но иногда бывает необходимость посмотреть, какое значение соответствует текущему... Установка Java [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/docs/css-font-size-conversion-chart.html' rel='bookmark' title='Таблица соответствия размеров шрифтов в CSS'>Таблица соответствия размеров шрифтов в CSS</a> <small>Не важно каким способом задания размера шрифта в CSS вы пользуетесь, но иногда бывает необходимость посмотреть, какое значение соответствует текущему...</small></li>
<li><a href='http://kobzarev.com:80/linux/installing-java-development-kit-jdk-in-suse.html' rel='bookmark' title='Установка Java Development Kit (JDK) в Suse'>Установка Java Development Kit (JDK) в Suse</a> <small>После установки PhpStorm при первом запуске появилось сообщение о том, что я использую OpenJDK, вместо положенного SunJDK, мотивируя это тем,...</small></li>
<li><a href='http://kobzarev.com:80/soft/quick-install-midnight-commander-in-opensuse-11-2.html' rel='bookmark' title='Быстрая установка Midnight Commander в OpenSUSE 11.2'>Быстрая установка Midnight Commander в OpenSUSE 11.2</a> <small>Midnight Commander (mc, ми́днайт-кома́ндер, «полуночный командир») — один из файловых менеджеров с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Для установки шрифта, копируем его в папку <code>~/.fonts</code>, находящуюся в корне вашей учетной записи. Если такой папки нет - создайте. После копирования сбросьте шрифтовый кэш</p>
<p style="clear:left;"><span id="more-2333"></span></p>
<pre class="brush: bash; title: ; notranslate">
fc-cache -fv
</pre>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/docs/css-font-size-conversion-chart.html' rel='bookmark' title='Таблица соответствия размеров шрифтов в CSS'>Таблица соответствия размеров шрифтов в CSS</a> <small>Не важно каким способом задания размера шрифта в CSS вы пользуетесь, но иногда бывает необходимость посмотреть, какое значение соответствует текущему...</small></li>
<li><a href='http://kobzarev.com:80/linux/installing-java-development-kit-jdk-in-suse.html' rel='bookmark' title='Установка Java Development Kit (JDK) в Suse'>Установка Java Development Kit (JDK) в Suse</a> <small>После установки PhpStorm при первом запуске появилось сообщение о том, что я использую OpenJDK, вместо положенного SunJDK, мотивируя это тем,...</small></li>
<li><a href='http://kobzarev.com:80/soft/quick-install-midnight-commander-in-opensuse-11-2.html' rel='bookmark' title='Быстрая установка Midnight Commander в OpenSUSE 11.2'>Быстрая установка Midnight Commander в OpenSUSE 11.2</a> <small>Midnight Commander (mc, ми́днайт-кома́ндер, «полуночный командир») — один из файловых менеджеров с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/linux/installation-of-custom-fonts-in-ubuntu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpVirtualBox</title>
		<link>http://kobzarev.com:80/programming/phpvirtualbox.html</link>
		<comments>http://kobzarev.com:80/programming/phpvirtualbox.html#comments</comments>
		<pubDate>Sat, 26 Nov 2011 17:09:30 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[VirtualBox]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2196</guid>
		<description><![CDATA[phpVirtualBox - бесплатная реализация веб-морды с Ajax интерфейсом для VirtualBox с открытым исходным кодом, написанная на PHP. Базируется на проекте vboxweb. Внешний вид Возможности Включение / Выключение виртуальных машин Пауза Сохранение состояния машины Отмена состояния Выключение Сигнал завершения Снимки Сделать Удалить Восстановить Просмотр логов Настройка Медиа Добавление Полнофункциональный виртуальный менеджер Мастер создания жесткого диска Монтирование [...]
Нет похожих публикаций.]]></description>
			<content:encoded><![CDATA[<p><!--noindex--><a href="http://code.google.com/p/phpvirtualbox/">phpVirtualBox</a><!--/noindex--> - бесплатная реализация веб-морды с Ajax интерфейсом для VirtualBox с открытым исходным кодом, написанная на PHP. Базируется на проекте <!--noindex--><a href="http://code.google.com/p/vboxweb/">vboxweb</a><!--/noindex-->.</p>
<p><span id="more-2196"></span></p>
<h3>Внешний вид</h3>
<p><img src="http://kobzarev.com/wp-content/uploads/2011/11/phpvbsm.png" alt="" title="phpvbsm" width="500" /></p>
<h3>Возможности</h3>
<ul>
<li>Включение / Выключение виртуальных машин
<ul>
<li>Пауза</li>
<li>Сохранение состояния машины</li>
<li>Отмена состояния</li>
<li>Выключение</li>
<li>Сигнал завершения</li>
</ul>
</li>
<li>Снимки
<ul>
<li>Сделать</li>
<li>Удалить</li>
<li>Восстановить</li>
</ul>
</li>
<li>Просмотр логов</li>
<li>Настройка</li>
<li>Медиа
<ul>
<li>Добавление</li>
<li>Полнофункциональный виртуальный менеджер</li>
<li>Мастер создания жесткого диска</li>
<li>Монтирование устройств в режиме чтения (DVD/CD и Floppy) пока VM запущена</li>
</ul>
</li>
<li>Мастер создания виртуальной машины</li>
<li>Настройка сети
<ul>
<li>Добавление/Удаление/Правка интерфейсов</li>
<li>Конфигурация DHCP</li>
</ul>
</li>
<li>Импорт/Экспорт виртуальных машин</li>
<li>Консоль доступа</li>
<li>Многоязычность</li>
</ul>
<h3>Системные требования</h3>
<ol>
<li>Веб-сервер с PHP &gt;= 5.1.0 </li>
<li>Установленный и рабочий <!--noindex--><a href="/p/phpvirtualbox/wiki/VirtualBox">VirtualBox</a><!--/noindex--> installation &gt;= 3.2.x </li>
<li>Любой из понравившихся браузеров:
<ul>
<li>Firefox &gt;= 3.6.0 </li>
<li>Internet Explorer &gt;= 8 </li>
<li>Opera &gt;= 10.0 </li>
<li>Safari &gt;= 4.0 </li>
<li>Chrome &gt;= 5.0 </li>
<li>В любом другом браузере работа не гарантируется</li>
</ul>
</li>
</ol>
<h3>Ссылки</h3>
<ul>
<li><!--noindex--><a href="http://code.google.com/p/phpvirtualbox/downloads/list">Скачать phpVirtualBox</a><!--/noindex--></li>
</ul>
<p>Нет похожих публикаций.</p>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/programming/phpvirtualbox.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Книги по клиентской оптимизации</title>
		<link>http://kobzarev.com:80/books/client-optimization-books.html</link>
		<comments>http://kobzarev.com:80/books/client-optimization-books.html#comments</comments>
		<pubDate>Tue, 15 Nov 2011 11:40:12 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Книги]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2324</guid>
		<description><![CDATA[Приобрел на днях пару полезных книг, спешу поделиться. Сайт тормозит, и вы не представляете, как с этим справиться? Количество анимации на странице превысило все мыслимые и немысливые границы, и вы не знаете, что делать? На странице десятки и сотни картинок, дизайнер превзошел сам себя, и теперь все это загружается страшно медленно? Эта книга поможет разобраться [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/books/jquery-cookbook-cd-rom.html' rel='bookmark' title='jQuery. Сборник рецептов (+ CD-ROM)'>jQuery. Сборник рецептов (+ CD-ROM)</a> <small>В августе в интернет-магазинах должна появиться в продаже книга jQuery. Сборник рецептов (+ CD-ROM). Это второе издание книги, которая вышла...</small></li>
<li><a href='http://kobzarev.com:80/programming/jquery-collection-of-recipes.html' rel='bookmark' title='jQuery. Сборник рецептов'>jQuery. Сборник рецептов</a> <small>Несколько дней назад в интернет-магазинах появилась в продаже книга "jQuery. Сборник рецептов". Книга вышла в издательстве "БХВ-Петербург". Написана она Геннадием...</small></li>
<li><a href='http://kobzarev.com:80/books/reactive-websites.html' rel='bookmark' title='Книга «Реактивные веб-сайты»'>Книга «Реактивные веб-сайты»</a> <small>Вышла финальная электронная версия второй книги по клиентской оптимизации «Реактивные веб-сайты». Оглавление Введение Благодарности Как ускорить работу сайта для посетителя...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Приобрел на днях пару полезных книг, спешу поделиться.</p>
<p>Сайт тормозит, и вы не представляете, как с этим справиться? Количество анимации на странице превысило все мыслимые и немысливые границы, и вы не знаете, что делать? На странице десятки и сотни картинок, дизайнер превзошел сам себя, и теперь все это загружается страшно медленно? Эта книга поможет разобраться с этими и множеством других проблем, связанных с клиентской производительностью</p>
<p><span id="more-2324"></span></p>
<h3>Книга «Реактивные веб-сайты»</h3>
<p style="float: right; margin-left: 15px;"><img src="/wp-content/uploads/2011/11/reactive-websites.jpg" alt="" title="Реактивные веб-сайты" width="200" height="300" /></a><!--/noindex--></p>
<p>Клиентская оптимизация в алгоритмах и примерах</p>
<p>Автор: Николай Мациевский, Евгений Степанищев, Глеб Кондратенко</p>
<p>Целью данной книги является показать важность (иногда по-настоящему критическую) клиентской оптимизации и ключевые моменты и проблемные места. Очень хочется верить, что после прочтения книги у читателей сложится целостное представление о мире, находящемся между страницей в браузере пользователя и серверными мощностями. О том, что происходит, когда в адресной строке браузера вводится адрес или имя сайта, какие стадии проходит загрузка страницы, прежде чем полностью завершиться. И самое главное — как этим процессом можно управлять</p>
<ul style="clear: both;">
<li><!--noindex--><a href="http://speedupyourwebsite.ru/books/reactive-websites/" target="_blank">Загрузить книгу «Реактивные веб-сайты»</a><!--/noindex--></li>
<li><!--noindex--><a href="http://www.ozon.ru/context/detail/id/5322041/" target="_blank">Купить книгу «Реактивные веб-сайты»</a><!--/noindex--></li>
</ul>
<h3>Книга «Разгони свой сайт»</h3>
<p style="float: left; margin-right: 15px;"><img src="/wp-content/uploads/2011/11/speed-up-your-website.png" alt="" title="Разгони свой сайт" width="200" height="300" /></a><!--/noindex--></p>
<p>Уникальное издание о всех тонкостях современной клиентской оптимизации</p>
<p>Автор: Николай Мациевский</p>
<p>Издание призвано помочь как начинающим веб-разработчикам, так и мастерам своего дела глубже разобраться в прикладных аспектах, связанных с клиентской производительностью. В книге освещаются вопросы и «тонкой» настройки веб-сервера для улучшения пользовательского восприятия, и особенности проектирования сложных клиентских веб-приложений, которые будут быстро загружаться и работать на любой платформе, начиная от персональных компьютеров и ноутбуков и заканчивая коммуникаторами и мобильными телефонами.</p>
<ul style="clear: both;">
<li><!--noindex--><a href="http://speedupyourwebsite.ru/books/speed-up-your-website/" target="_blank">Загрузить книгу «Разгони свой сайт»</a><!--/noindex--></li>
<li><!--noindex--><a href="http://www.ozon.ru/context/detail/id/4400714/" target="_blank">Купить книгу «Разгони свой сайт»</a><!--/noindex--></li>
</ul>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/books/jquery-cookbook-cd-rom.html' rel='bookmark' title='jQuery. Сборник рецептов (+ CD-ROM)'>jQuery. Сборник рецептов (+ CD-ROM)</a> <small>В августе в интернет-магазинах должна появиться в продаже книга jQuery. Сборник рецептов (+ CD-ROM). Это второе издание книги, которая вышла...</small></li>
<li><a href='http://kobzarev.com:80/programming/jquery-collection-of-recipes.html' rel='bookmark' title='jQuery. Сборник рецептов'>jQuery. Сборник рецептов</a> <small>Несколько дней назад в интернет-магазинах появилась в продаже книга "jQuery. Сборник рецептов". Книга вышла в издательстве "БХВ-Петербург". Написана она Геннадием...</small></li>
<li><a href='http://kobzarev.com:80/books/reactive-websites.html' rel='bookmark' title='Книга «Реактивные веб-сайты»'>Книга «Реактивные веб-сайты»</a> <small>Вышла финальная электронная версия второй книги по клиентской оптимизации «Реактивные веб-сайты». Оглавление Введение Благодарности Как ускорить работу сайта для посетителя...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/books/client-optimization-books.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка русского словаря для проверки орфографии в PhpStorm</title>
		<link>http://kobzarev.com:80/soft/installation-of-russian-dictionary-for-spell-checking-in-phpstorm.html</link>
		<comments>http://kobzarev.com:80/soft/installation-of-russian-dictionary-for-spell-checking-in-phpstorm.html#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:26:07 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Soft]]></category>
		<category><![CDATA[PhpStorm]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2315</guid>
		<description><![CDATA[Заходим в репозиторий дополнений JetBrains и ищем по ключевому слову Russian Dictionary Натыкаемся на плагин Spell Checker Russian Dictionary. Скачиваем его. Из скачанного архива распаковываем всего один файл russian.0, переименовываем его в russian.dic и кладем в любую папку на жестком диске. Открываем PhpStorm. Переходим по пути File &#8594; Settings &#8594; Spelling &#8594; Вкладка Dictionaries. Жмем [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/soft/installing-zen-coding-in-phpstorm-under-linux.html' rel='bookmark' title='Установка Zen Coding в PhpStorm под Linux'>Установка Zen Coding в PhpStorm под Linux</a> <small>В последних версиях WebStorm/PhpStorm появилась возможность быстрого кодинга HTML и CSS, используя Zen Coding. Чтобы установить плагин Zen Coding для...</small></li>
<li><a href='http://kobzarev.com:80/soft/release-jetbrains-phpstorm-2-0.html' rel='bookmark' title='Релиз JetBrains PhpStorm 2.0'>Релиз JetBrains PhpStorm 2.0</a> <small>PhpStorm – триальная IDE на Java, предоставляет богатые и умные функции редактирования кода PHP с подсветкой синтаксиса, расширенным форматированием кода...</small></li>
<li><a href='http://kobzarev.com:80/linux/installing-java-development-kit-jdk-in-suse.html' rel='bookmark' title='Установка Java Development Kit (JDK) в Suse'>Установка Java Development Kit (JDK) в Suse</a> <small>После установки PhpStorm при первом запуске появилось сообщение о том, что я использую OpenJDK, вместо положенного SunJDK, мотивируя это тем,...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Заходим в <!--noindex--><a href="http://http://plugins.intellij.net/?idea" target="_blank">репозиторий дополнений JetBrains</a><!--/noindex--> и ищем по ключевому слову <i>Russian Dictionary</i></p>
<p><span id="more-2315"></span></p>
<p style="text-align:center;"><img src="http://kobzarev.com/wp-content/uploads/2011/11/russian-dictionary.png" alt="" title="russian-dictionary" width="580" /></p>
<p>Натыкаемся на плагин <em>Spell Checker Russian Dictionary</em>. Скачиваем его.</p>
<p style="text-align:center;"><img src="http://kobzarev.com/wp-content/uploads/2011/11/spell-checker-russian-dictionary.png" alt="" title="spell-checker-russian-dictionary" width="580" /></p>
<p>Из скачанного архива распаковываем всего один файл <em>russian.0</em>, переименовываем его в <em>russian.dic</em> и кладем в любую папку на жестком диске.</p>
<p style="text-align:center;"><img src="http://kobzarev.com/wp-content/uploads/2011/11/russian.0.jpg" alt="" title="russian.0" width="580" /></p>
<p>Открываем PhpStorm. Переходим по пути File &rarr; Settings &rarr; Spelling &rarr; Вкладка Dictionaries. Жмем <em>ADD</em> и выбираем папку, в которую мы сохранили файл <em>russian.dic</em>. Как только PhpStorm просканирует директорию на наличие в ней файла со словарем он появится в списке доступных.</p>
<p style="text-align:center;"><img src="http://kobzarev.com/wp-content/uploads/2011/11/Spelling.jpg" alt="" title="Spelling" width="580" /></p>
<p>Сохраняем сделанные изменения (Кнопка Apply), перезапускаем PhpStorm и наслаждаемся тем, что больше русские слова не выделяются как ошибка.</p>
<p class="info">Данный прием справедлив также для WebStorm, IDEA, RubyMine, PyCharm</p>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/soft/installing-zen-coding-in-phpstorm-under-linux.html' rel='bookmark' title='Установка Zen Coding в PhpStorm под Linux'>Установка Zen Coding в PhpStorm под Linux</a> <small>В последних версиях WebStorm/PhpStorm появилась возможность быстрого кодинга HTML и CSS, используя Zen Coding. Чтобы установить плагин Zen Coding для...</small></li>
<li><a href='http://kobzarev.com:80/soft/release-jetbrains-phpstorm-2-0.html' rel='bookmark' title='Релиз JetBrains PhpStorm 2.0'>Релиз JetBrains PhpStorm 2.0</a> <small>PhpStorm – триальная IDE на Java, предоставляет богатые и умные функции редактирования кода PHP с подсветкой синтаксиса, расширенным форматированием кода...</small></li>
<li><a href='http://kobzarev.com:80/linux/installing-java-development-kit-jdk-in-suse.html' rel='bookmark' title='Установка Java Development Kit (JDK) в Suse'>Установка Java Development Kit (JDK) в Suse</a> <small>После установки PhpStorm при первом запуске появилось сообщение о том, что я использую OpenJDK, вместо положенного SunJDK, мотивируя это тем,...</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/soft/installation-of-russian-dictionary-for-spell-checking-in-phpstorm.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Разница в днях между двух дат</title>
		<link>http://kobzarev.com:80/programming/date-diff.html</link>
		<comments>http://kobzarev.com:80/programming/date-diff.html#comments</comments>
		<pubDate>Wed, 26 Oct 2011 21:42:55 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2312</guid>
		<description><![CDATA[В РНР с версии 5.3.0 появился класс DateTime для работы с датой и временем. Благодаря ему мы можем одной строкой посчитать разницу в дням между двух дат. Пример Ссылки DateTime::diff Похожие публикации: Расчет расстояний между городами по их координатам Расчет расстояний между точками по их координатам на плоскости элементарен, на поверхности Земли - немного посложнее: [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/programming/calculation-of-distances-between-cities-on-their-coordinates.html' rel='bookmark' title='Расчет расстояний между городами по их координатам'>Расчет расстояний между городами по их координатам</a> <small>Расчет расстояний между точками по их координатам на плоскости элементарен, на поверхности Земли - немного посложнее: мы рассмотрим измерение расстояния...</small></li>
<li><a href='http://kobzarev.com:80/other/congratulations-to-0-%c3%97-100-day-of-the-year.html' rel='bookmark' title='Поздравляю с 0×100 (0xFF) днем года'>Поздравляю с 0×100 (0xFF) днем года</a> <small>День программиста — профессиональный праздник программистов, отмечаемый на 256-й день года. Число 256 (28) выбрано потому, что это количество чисел,...</small></li>
<li><a href='http://kobzarev.com:80/programming/get-the-file-extension.html' rel='bookmark' title='Получить расширение файла'>Получить расширение файла</a> <small>Получить расширение файла в РНР задача не сложная и способов ее решения существует масса. Давайте попробуем рассмотреть несколько возможных вариантов....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>В РНР с версии 5.3.0 появился класс <code>DateTime</code> для работы с датой и временем. Благодаря ему мы можем одной строкой посчитать разницу в дням между двух дат.</p>
<p style="clear: left;"><span id="more-2312"></span></p>
<h3>Пример</h3>
<pre class="brush: php; title: ; notranslate">
&lt;?php
// Покажет сколько мне дней
echo date_diff(new DateTime(), new DateTime('1986-01-04 00:00:01'))-&gt;days;
?&gt;
</pre>
<h3>Ссылки</h3>
<ul>
<li><!--noindex--><a href="http://manual.pohape.ru/ru/datetime.diff.html">DateTime::diff</a><!--/noindex--></li>
</ul>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/programming/calculation-of-distances-between-cities-on-their-coordinates.html' rel='bookmark' title='Расчет расстояний между городами по их координатам'>Расчет расстояний между городами по их координатам</a> <small>Расчет расстояний между точками по их координатам на плоскости элементарен, на поверхности Земли - немного посложнее: мы рассмотрим измерение расстояния...</small></li>
<li><a href='http://kobzarev.com:80/other/congratulations-to-0-%c3%97-100-day-of-the-year.html' rel='bookmark' title='Поздравляю с 0×100 (0xFF) днем года'>Поздравляю с 0×100 (0xFF) днем года</a> <small>День программиста — профессиональный праздник программистов, отмечаемый на 256-й день года. Число 256 (28) выбрано потому, что это количество чисел,...</small></li>
<li><a href='http://kobzarev.com:80/programming/get-the-file-extension.html' rel='bookmark' title='Получить расширение файла'>Получить расширение файла</a> <small>Получить расширение файла в РНР задача не сложная и способов ее решения существует масса. Давайте попробуем рассмотреть несколько возможных вариантов....</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/programming/date-diff.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Способы задания 301-го редиректа</title>
		<link>http://kobzarev.com:80/programming/301-moved-permanently.html</link>
		<comments>http://kobzarev.com:80/programming/301-moved-permanently.html#comments</comments>
		<pubDate>Tue, 18 Oct 2011 19:57:23 +0000</pubDate>
		<dc:creator>Кобзарёв Михаил</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://kobzarev.com:80/?p=2309</guid>
		<description><![CDATA[Код состояния HTTP (англ. HTTP status code) со статусом 301 Moved Permanently (Перемещено окончательно) свидетельствует о том, что запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Для чего это нужно? В первую очередь, при изменении доменного имени сайта, необходимо оповестить поисковые системы о смене адреса сайта. Во-вторых, для склейки имени [...]
Похожие публикации:<ol>
<li><a href='http://kobzarev.com:80/programming/two-ways-to-get-the-status-of-icq-numbers.html' rel='bookmark' title='Два способа получения статуса ICQ номера'>Два способа получения статуса ICQ номера</a> <small>Зачем это может понадобится? Например, чтобы показать свои картинки статусов, подходящие под дизайн вашего сайта или чтобы в зависимости от...</small></li>
<li><a href='http://kobzarev.com:80/programming/fatal-error-allowed-memory-size-of-xxx-bytes.html' rel='bookmark' title='Три способа решения проблемы &#171;Fatal error: Allowed memory size of XXX bytes exhausted&#187;'>Три способа решения проблемы &#171;Fatal error: Allowed memory size of XXX bytes exhausted&#187;</a> <small>Когда вашему скрипту не хватает оперативной памяти для его выполнения (точнее он не укладывается в объём, который ему разрешён), возникает...</small></li>
<li><a href='http://kobzarev.com:80/programming/get-the-file-extension.html' rel='bookmark' title='Получить расширение файла'>Получить расширение файла</a> <small>Получить расширение файла в РНР задача не сложная и способов ее решения существует масса. Давайте попробуем рассмотреть несколько возможных вариантов....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Код состояния HTTP (англ. HTTP status code) со статусом 301 Moved Permanently (Перемещено окончательно) свидетельствует о том, что запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.</p>
<p><span id="more-2309"></span></p>
<h3>Для чего это нужно?</h3>
<p>В первую очередь, при изменении доменного имени сайта, необходимо оповестить поисковые системы о смене адреса сайта. Во-вторых, для склейки имени сайта с www и без него. В-третьих для быстрой передачи Page Rank на новый сайт.</p>
<h3>PHP</h3>
<p>Способ первый</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
header(&quot;HTTP/1.1 301 Moved Permanently&quot;);
header(&quot;Location: http://www.example.com&quot;);
exit();
?&gt;
</pre>
<p>Способ второй</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
header(&quot;Location: http://www.example.com&quot;, true, 301);
exit();
?&gt;
</pre>
<h3>Perl</h3>
<p>Способ первый</p>
<pre class="brush: php; title: ; notranslate">
$cgi = new CGI;
print $cgi-&gt;redirect(&quot;http://www.example.com/&quot;);
</pre>
<p>Способ второй</p>
<pre class="brush: php; title: ; notranslate">
#!/usr/bin/perl -w
use strict;
print &quot;Status: 301 Moved Permanently\n&quot;;
print &quot;Location: http://www.example.com/\n\n&quot;;
exit;
</pre>
<h3>ASP.NET</h3>
<p>Способ первый</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;script runat=&quot;server&quot;&gt;
private void Page_Load(object sender, System.EventArgs e) {
    Response.Status = &quot;301 Moved Permanently&quot;;
    Response.AddHeader(&quot;Location&quot;,&quot;http://www.example.com&quot;);
}
&lt;/script&gt;
</pre>
<p>Способ второй (с версии 4.0)</p>
<pre class="brush: plain; title: ; notranslate">
RedirectPermanent(&quot;http://www.example.com&quot;);
</pre>
<h3>ASP</h3>
<pre class="brush: plain; title: ; notranslate">
&lt;%@ Language=VBScript %&gt;
&lt;%
Response.Status=&quot;301 Moved Permanently&quot;
Response.AddHeader &quot;Location&quot;, &quot;http://www.example.com/&quot;
response.end
%&gt;
</pre>
<h3>Ruby on Rails</h3>
<pre class="brush: plain; title: ; notranslate">
def do_something
headers[&quot;Status&quot;] = &quot;301 Moved Permanently&quot;
redirect_to &quot;http://www.example.com/&quot;
end
</pre>
<h3>ColdFusion</h3>
<pre class="brush: plain; title: ; notranslate">
&lt;.cfheader statuscode=&quot;301&quot; statustext=&quot;Moved Permanently&quot;&gt;
&lt;.cfheader name=&quot;Location&quot; value=&quot;http://www.example.com&quot;&gt;
</pre>
<h3>Java (JSP)</h3>
<pre class="brush: jscript; title: ; notranslate">
&lt;%
response.setStatus(301);
response.setHeader(&quot;Location&quot;, &quot;http://www.example.com&quot;);
response.setHeader(&quot;Connection&quot;, &quot;close&quot;);
%&gt;
</pre>
<h3>Веб-сервер Apache (.htaccess)</h3>
<p>Способ первый (mod_alias, Redirect)</p>
<pre class="brush: bash; title: ; notranslate">
Redirect 301 / http://www.example.com
</pre>
<p>Способ второй (mod_alias, RedirectPermanent)</p>
<pre class="brush: bash; title: ; notranslate">
RedirectPermanent / http://www.example.com
</pre>
<p>Способ третий (mod_alias, Redirect permanent)</p>
<pre class="brush: bash; title: ; notranslate">
Redirect permanent / http://www.example.com
</pre>
<p>Способ четвертый (mod_alias, RedirectMatch)</p>
<pre class="brush: bash; title: ; notranslate">
RedirectMatch 301 ^(.*)$ http://www.example.com/
</pre>
<p>Способ пятый (mod_rewrite)</p>
<pre class="brush: bash; title: ; notranslate">
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
</pre>
<h3>Веб-сервер ngix</h3>
<pre class="brush: plain; title: ; notranslate">
rewrite ^(.*)$ http://www.example.com$1 permanent;
</pre>
<h3>Ссылки</h3>
<ul>
<li><!--noindex--><a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP">Список кодов состояния HTTP</a><!--/noindex--></li>
<li><!--noindex--><a href="http://www.host.ru/tips/51">Как с помощью PHP сделать редирект с кодом 301 (Moved Permanently)?</a><!--/noindex--></li>
<li><!--noindex--><a href="http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirect">Redirect</a><!--/noindex--></li>
<li><!--noindex--><a href="http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectmatch">RedirectMatch</a><!--/noindex--></li>
<li><!--noindex--><a href="http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectmatch">RedirectMatch</a><!--/noindex--></li>
<li><!--noindex--><a href="http://wiki.nginx.org/HttpRewriteModule">HttpRewriteModule</a><!--/noindex--></li>
<li><!--noindex--><a href="http://www.java2s.com/Code/Java/Servlets/Redirect.htm">Java Redirect</a><!--/noindex--></li>
<li><!--noindex--><a href="http://www.quackit.com/coldfusion/tutorial/coldfusion_redirect.cfm">ColdFusion Redirect</a><!--/noindex--></li>
<li><!--noindex--><a href="http://snippets.dzone.com/posts/show/4779">Rails: 301 Permanent Redirect</a><!--/noindex--></li>
<li><!--noindex--><a href="http://www.seoconsultants.com/tips/asp/301">ASP Redirect Method</a><!--/noindex--></li>
<li><!--noindex--><a href="http://www.progblog.ru/Posts/ASP-NET-301-Redirect">301 Permanent Redirect в ASP.NET </a><!--/noindex--></li>
</ul>
<p>Похожие публикации:</p><ol>
<li><a href='http://kobzarev.com:80/programming/two-ways-to-get-the-status-of-icq-numbers.html' rel='bookmark' title='Два способа получения статуса ICQ номера'>Два способа получения статуса ICQ номера</a> <small>Зачем это может понадобится? Например, чтобы показать свои картинки статусов, подходящие под дизайн вашего сайта или чтобы в зависимости от...</small></li>
<li><a href='http://kobzarev.com:80/programming/fatal-error-allowed-memory-size-of-xxx-bytes.html' rel='bookmark' title='Три способа решения проблемы &#171;Fatal error: Allowed memory size of XXX bytes exhausted&#187;'>Три способа решения проблемы &#171;Fatal error: Allowed memory size of XXX bytes exhausted&#187;</a> <small>Когда вашему скрипту не хватает оперативной памяти для его выполнения (точнее он не укладывается в объём, который ему разрешён), возникает...</small></li>
<li><a href='http://kobzarev.com:80/programming/get-the-file-extension.html' rel='bookmark' title='Получить расширение файла'>Получить расширение файла</a> <small>Получить расширение файла в РНР задача не сложная и способов ее решения существует масса. Давайте попробуем рассмотреть несколько возможных вариантов....</small></li>
</ol>]]></content:encoded>
			<wfw:commentRss>http://kobzarev.com:80/programming/301-moved-permanently.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

