<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Блог web-разработчика</title>
	
	<link>http://www.mgordeev.ru</link>
	<description>Блог о веб-технологиях, скриптовых языках, CMS.</description>
	<lastBuildDate>Fri, 16 Dec 2011 14:33:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mgordeev" /><feedburner:info uri="mgordeev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Нестандартные шрифты для сайта. Использование и рецепты.</title>
		<link>http://feedproxy.google.com/~r/mgordeev/~3/tuMOXKpx53g/</link>
		<comments>http://www.mgordeev.ru/2011/11/fonts-for-site/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 20:16:36 +0000</pubDate>
		<dc:creator>mgordeev</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.mgordeev.ru/?p=556</guid>
		<description><![CDATA[В статье рассмотрены различные способы применения нестандартных шрифтов на сайте, их плюсы и минусы.]]></description>
			<content:encoded><![CDATA[<p>В веб-технологиях исторически сформировался список семейств шрифтов, которые принято использовать на сайтах.</p>
<br /><br />  
<p>Стандартные шрифты:</p>
<p style="font-family:Arial; font-size:16px;">Arial</p>
<p style="font-family:Arial Black; font-size:16px;">Arial Black</p>
<p style="font-family:Arial Narrow; font-size:16px;">Arial Narrow</p>
<p style="font-family:Book Antiqua; font-size:16px;">Book Antiqua</p>
<p style="font-family:Century Gothic; font-size:16px;">Century Gothic</p>
<p style="font-family:Comic Sans MS; font-size:16px;">Comic Sans MS</p>
<p style="font-family:Courier New; font-size:16px;">Courier New</p>
<p style="font-family:Franklin Gothic Medium; font-size:16px;">Franklin Gothic Medium</p>
<p style="font-family:Georgia; font-size:16px;">Georgia</p>
<p style="font-family:Impact; font-size:16px;">Impact</p>
<p style="font-family:Lucida Console; font-size:16px;">Lucida Console</p>
<p style="font-family:Lucida Sans Unicode; font-size:16px;">Lucida Sans Unicode</p>
<p style="font-family:Microsoft Sans Serif; font-size:16px;">Microsoft Sans Serif</p>
<p style="font-family:Palatino Linotype; font-size:16px;">Palatino Linotype</p>
<p style="font-family:Sylfaen; font-size:16px;">Sylfaen</p>
<p style="font-family:Tahoma; font-size:16px;">Tahoma</p>
<p style="font-family:Times New Roman; font-size:16px;">Times New Roman</p>
<p style="font-family:Trebuchet MS; font-size:16px;">Trebuchet MS</p>
<p style="font-family:Verdana; font-size:16px;">Verdana</p>
<p style="font-family:Webdings; font-size:16px;">Webdings</p>
<p>
Ограничения использования обусловлены, прежде всего, не кроссплатформенностью шрифтов, вернее, политикой их распространения.  Чаще всего для запоминающегося дизайна сайта web-шрифтов оказывается недостаточно. В этом случае дизайнеры используют либо ранее разработанный фирменный шрифт, либо разрабатывают шрифт сами.</p>
<p>Для корректной и валидной верстки нестандартных для web шрифтов используют несколько методов:</p>
<h4>Решение на базе PHP и GD</h4><p>Отрисовывать шрифты и тексты средствами PHP  и библиотеки GD. Откровенно не самое удачное и простое  решение. Существенным минусом является тот факт, что в браузер будут передаваться картинки букв, что безусловно плохо скажется на индексации сайта.</p>

<h4>Решение на базе css</h4><p>Тупо подгрузить в css. </p>
<pre class="brush: css; ">

BODY {
font-family: url(&#039;path_to_font&#039;);
}

</pre>
<p>
Обычно  это чревато долгой загрузкой и отработкой стилей.</p>

<h4>Решение на базе flash</h4><p> Ни для кого не секрет, что во flash можно легко использовать практически любые шрифты. Самым популярным в этой технологии решением является <noindex><a href="http://www.mikeindustries.com/blog/sifr/" target="_blank" rel="nofollow">sifr</a></noindex>. Принцип действия прост:</p>
<p>1)	Обычная (X)HTML страница загружается браузером.</p>
<p>2)	Запускается javascript функция.</p>
<p>3)	Если Flash-плеер не установлен или если JavaScript выключен, то страница загружается естественным образом, без изменений. Если Flash-плеер установлен, то JavaScript проверяет код страницы на наличие обозначенных ранее элементов и создает подходящий по размеру Flash, который накладывается на определённые элементы.</p>
<p>4)	Actionscript загружает нужный шрифт размером 6 pt, после чего шрифт растягивается до нужного размера.</p><br />
<p><h4>Нестандартный шрифт со помощью cufon</h4><p>Ну и самое удачное на мой взгляд решение: использование библиотек typeface.js или <noindex><a href="http://cufon.shoqolate.com/generate/" target="_blank" rel="nofollow">cufon</a></noindex>. <br />
Cufon более универсален, потому будем рассматривать его.</p>
<p>Скрипт может внедрить любой шрифт на веб страницу без жесткой привязки к дизайну (т.е. тексты, заголовки, меню и т.п. можно будет изменять, не прибегая к услугам веб разработчиков).</p>
<p>
Обычный текст при загрузке страницы заменяется на SVG объект (для браузеров, поддерживающий стандарты) или на VML (для IE) — графические области, в которых символы отрисовываются с помощью javascript.</p>
<p>Подключается cufon достаточно просто:</p>
<pre class="brush: html; ">

&lt;script type=&quot;text/javascript&quot; src=&quot;path-to/cufon-yui.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;path-to/[имя файла, который сделает cufon-генератор]&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
Cufon.replace(&quot;h1&quot;);
&lt;/script&gt;

</pre>
<p>
Преимущества</p>
<ul>
<li>	достаточная кроссбраузерность</li>
<li>	минимум внешних файлов при любом количестве текста с нестандартным шрифтом</li>
<li>	простое внедрение</li>
<li>	владелец сайта спокойно может редактировать текст</li>
<li>	параметры шрифта (размер, жирность, цвет) легко изменить</li>
<li>	есть реакция на hover</li>
<li>	возможность добавления тени у текста (text-shadow - в IE правда тень будет не совсем такая, как нужно)</li>
<li>	защита используемого шрифта от копирования</li>
<li>	возможность разложить шрифт на только нужные символы для уменьшения размера файла-шрифта</li>
<li>	не требует дополнительных библиотек</li>
<li>	небольшой вес скрипта</li>
</ul>
<p>Недостатки:</p>
<ul>
<li>	наличие внешних файлов — хоть их и мало, все равно увеличат трафик, а значит страница будет открываться дольше</li>
<li>	нет возможности выделить и скопировать текст (над этим работают. в IE уже можно, хоть и выглядит страшновато)</li>
<li>	неприменимо к большим объемам текста</li>
<li>	пока не отработает скрипт, пользователь будет видеть текст со шрифтом по умолчанию</li>
</ul>
<br />
<p style="font-style:italic;">Для поиска рецептов, обмена опытом или просто для общения с единомышленниками заходите на <a href="http://www.programmingforum.ru/" title="форум программистов">форум программистов</a>! </p><div class="tweetmeme_button" style="float: left; margin-right: 10px; background:#3d3d3b">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F11%2Ffonts-for-site%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F11%2Ffonts-for-site%2F&amp;source=mgordeevru&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" />
			</a>
		</div><img src="http://feeds.feedburner.com/~r/mgordeev/~4/tuMOXKpx53g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mgordeev.ru/2011/11/fonts-for-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.mgordeev.ru/2011/11/fonts-for-site/</feedburner:origLink></item>
		<item>
		<title>Определение региона посетителя сайта</title>
		<link>http://feedproxy.google.com/~r/mgordeev/~3/503E5f_rTjU/</link>
		<comments>http://www.mgordeev.ru/2011/09/geo/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 13:18:15 +0000</pubDate>
		<dc:creator>mgordeev</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.mgordeev.ru/?p=533</guid>
		<description><![CDATA[Часто на сайтах для посетителей из конкретной географической локации требуется показать свой контент. Для этого необходимо точно и достоверно определить регион пользователя. Решение этой задачи в статье.]]></description>
			<content:encoded><![CDATA[<blockquote style="text-align: right; font-style:italic;">
драйвер от аудашки Creative всегда убивал меня своей истинной американскостью.<br />
"Выберите ваш регион". Пункты: 1.Америка 2.Все другие регионы.<br />
bash.org.ru</blockquote>
Задача состоит в том, чтобы, опираясь на данные, передаваемые посетителем сайта, определить его региональное положение. Это может понадобиться для того, чтобы по умолчанию отразить на сайте нужную контактную информацию или альтернативный контент.

Для определения региона посетителя сайта можно использовать как серверные, так и клиентские технологии.
<br /><br />
<h3 class="yh3">Определение региона с помощью nginx</h3>
Этот способ целесообразно использовать, если сайт находится на собственном виртуальном или физическом сервере. В этом случае изменение конфигурации nginx и загрузка баз не составят большого труда.  Процесс осуществляется в четыре шага:
1. Ставим базу GeoIP. Страны есть в deb-пакете. Для определения города придется скачать свой пакет.
<pre class="brush: bash; ">
sudo apt-get install geoip-database libgeoip-dev
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
sudo mkdir -v /usr/share/GeoIP
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

</pre>
2. Добавляем в /etc/nginx/nginx.conf в секцию http строки:
<pre class="brush: bash; ">

http {
....
# GeoIP
geoip_country /usr/share/GeoIP/GeoIP.dat; # the country IP database
geoip_city /usr/share/GeoIP/GeoLiteCity.dat; # the city IP database
..
}

</pre>
3. В файл /etc/nginx/fastcgi_params добавляем переменные, котоыре будут передаваться в массив $_SERVER веб-приложения:
<pre class="brush: bash; ">

# For GeoIP
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
fastcgi_param GEOIP_REGION $geoip_region;
fastcgi_param GEOIP_CITY $geoip_city;
fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;
fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
fastcgi_param GEOIP_LATITUDE $geoip_latitude;
fastcgi_param GEOIP_LONGITUDE $geoip_longitude;

</pre>
Этот файл должен быть подключен в параметрах виртуального хоста nginx.
4. Перезапускаем сервер
<pre class="brush: bash; ">

sudo service nginx restart

</pre>
<br /><br />
<h3 class="yh3">Определение региона сайта с помощью php</h3>
Если модификация настроек nginx невозможна, или данный сервер отсутствует, определить регион посетителя можно с помощью библиотеки geoip. Если библиотека подключена, становятся доступными следующие функции:
<ul>
	<li>geoip_continent_code_by_name — Получить двухбуквенный код континента</li>
	<li>geoip_country_code_by_name — Получить двухбуквенный код страны</li>
	<li>geoip_country_code3_by_name — Получить трехбуквенный код страны</li>
	<li>geoip_country_name_by_name — Возаращает полное название страны</li>
	<li>geoip_database_info — Получить версию БД GeoIP</li>
	<li>geoip_db_avail — Проверить доступность БД GeoIP</li>
	<li>geoip_db_filename — Возвращает имя файла БД GeoIP</li>
	<li>geoip_db_get_all_info — Возвращает всю информацию о файлах БД в виде многомерного массива</li>
	<li>geoip_id_by_name — Возвращает скоростную метрику интернет-канала пользователя (GEOIP_UNKNOWN_SPEED/GEOIP_DIALUP_SPEED/GEOIP_CABLEDSL_SPEED/GEOIP_CORPORATE_SPEED ).</li>
	<li>geoip_isp_by_name — Возвращает имя провайдера (ISP) пользователя</li>
	<li>geoip_org_by_name — Возвращает имя организации, за которой закреплен IP пользователя.</li>
	<li>geoip_record_by_name — Возвращает информацию о местоположении пользователя (континент, страна, город, широта и долгота).</li>
	<li>geoip_region_by_name — Возвращает код страны и региона</li>
	<li>geoip_region_name_by_code — Возвращает название региона страны и код региона</li>
	<li>geoip_time_zone_by_country_and_region — Возвращает часовой пояс клиента (по вычисленной стране и региону).</li>
</ul>
Если библиотека не подключена, но есть возможность ее установить, то это делается так:<br />
1.	Закачиваем и устанавливаем базу и модуль для php.
<pre class="brush: bash; ">

sudo apt-get install geoip-database libgeoip-dev php5-geoip
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
sudo mkdir -v /usr/share/GeoIP
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

</pre>
2.	Проверяем, чтобы расширение php было подключено (/etc/php5/fpm/conf.d), и перезагружаем интерпретатор.
<pre class="brush: bash; ">

sudo service php5-fpm restart

</pre>
3.	Проверяем установку:
<pre class="brush: php; ">

&lt;?=geoip_record_by_name($_SERVER[&#039;REMOTE_ADDR&#039;]);?&gt;

</pre>
<br /><br />
<h3 class="yh3">Определение региона сайта с помощью javascript</h3>
Этот способ подойдет, если нет возможности определения региона пользователя на уровне сервера. На мой взгляд, лучшим решением является зарегистрировать свой сайт в сервисе http://ipgeobase.ru/ и использовать возвращаемые данные на сайте. 
Сервис возвращает в формате <abbr title="eXtensible Markup Language">xml</abbr> данные о локации пользователя. Т.к. данные структурированы, с ними легко работать.
Посмотреть возвращаемый результат можно, введя в браузере <br />
http://ipgeobase.ru:7020/geo?ip=Ваш_ip<br />
например:<br />
<noindex><a rel="nofollow" href="http://ipgeobase.ru:7020/geo?ip=195.133.205.114" title="XML ответ сервиса по определению региона">http://ipgeobase.ru:7020/geo?ip=195.133.205.114</a></noindex> <br />
На jquery разбор будет примерно такой:<br />
<pre class="brush: javascript; ">

$.get(&quot;http://ipgeobase.ru:7020/geo?ip=&lt;?=$_SERVER[&#039;REMOTE_ADDR&#039;]?&gt;&quot;, function(data) {
			var myregion = $(data).find(&quot;region&quot;).text();
			//делаем что-то с данными
			return true;
}, &quot;xml&quot;)

</pre>
Минусов у такого решения много:<br />
1)	Не работает без javascript<br />
2)	Надо обязательно предусмотереть отсутствие кеширования, т.е. скрипт не должен кешироваться системой управления контентом<br />
3)	Т.к. работа скрипта зависит от стороннего сервиса, снижается его надежность <br /><br />

Если при <a href="http://www.gmsite.ru/create/" title="Разработка сайтов">создании сайта</a> не была предусмотрена возможность работы с регионами, сделать соответствующую доработку совершенно не сложно.<br /><br />

<div class="tweetmeme_button" style="float: left; margin-right: 10px; background:#3d3d3b">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F09%2Fgeo%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F09%2Fgeo%2F&amp;source=mgordeevru&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" />
			</a>
		</div><img src="http://feeds.feedburner.com/~r/mgordeev/~4/503E5f_rTjU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mgordeev.ru/2011/09/geo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.mgordeev.ru/2011/09/geo/</feedburner:origLink></item>
		<item>
		<title>Команды работы с сервером для  web-разработчика</title>
		<link>http://feedproxy.google.com/~r/mgordeev/~3/i5Q43lU-nM0/</link>
		<comments>http://www.mgordeev.ru/2011/09/unix-commands/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 07:37:49 +0000</pubDate>
		<dc:creator>mgordeev</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.mgordeev.ru/?p=508</guid>
		<description><![CDATA[Web-разработчик в принципе профессиональным администратором серверов быть не должен. Однако, часто для того, чтобы скофигурировать сервер нужным образом или банально проставить права на файлы, приходится лезть в консоль и изучать мануалы. В статье список наиболее актуальных команд.]]></description>
			<content:encoded><![CDATA[Вследствие довольно странной настройки сервера на многих хостинг-площадках приходится сталкиваться с определенными трудностями работы с сайтом. Все нижесказанное имеет силу только для web-серверов с операционной системой семейства unix, коих абсолютное большинство. Чаще всего проблемы возникают, когда выданные хостером логин-пароль пользователя не позволяют редактировать файлы, созданные пользователем, под которым запущен web-сервер.

Посмотреть пользователя, под которым запущен сервер, можно несложным php-скриптом:

<pre class="brush: php; ">

&lt;?
$pown = posix_getpwuid(posix_geteuid());
echo &quot;Process Owner: &quot; . $pown[&quot;name&quot;] . &quot;, &quot; . $pown[&quot;uid&quot;] . &quot;&lt;br&gt;&quot;;
?&gt;

</pre>

Рекурсивно поменять владельца файлов можно командой:

<pre class="brush: php; ">

chown --recursive пользователь:группа /полный/путь

</pre>


Если у пользователя к ее выполнению не хватает ssh доступа, можно использовать команду <a href="http://docs.php.net/manual/en/function.system.php" title="Мануал по использованию php команды system">php system</a>.

Следующая команда выполнит рекурсивное применение правил для всех файлов в текущей директории, а также для всех файлов во всех поддиректориях:
<pre class="brush: php; ">

# find . -type f -exec chmod 644 {} \;

</pre>
Следующая команда выполнит рекурсивное применение правил для всех директорий в текущей директории, а также для всех директорий во всех поддиректориях:
<pre class="brush: php; ">

# find . -type d -exec chmod 755 {} \;

</pre>

Команды работы с архивами:
<pre class="brush: php; ">

tar xvfz *.tar.gz – распаковать архив
tar -czvf file.tar.gz /full/path – создать .tar.gz (архив)

</pre>

Узнать занимаемое на сервере место:
<pre class="brush: php; ">

du –sh  &lt;каталог&gt;

</pre>

Работа с резервированием файлов:<br />

Создание полной резервной копии директории:
<pre class="brush: php; ">

dump -0aj -f /путь_куда/имя_файла_резервной_копии.bak /папка/для/резервирования

</pre>
Создание инкрементальной резервной копии директории:
<pre class="brush: php; ">

dump -1aj -f /путь_куда/имя_файла_резервной_копии.bak /папка/для/резервирования

</pre>
Восстановление из резервной копии:
<pre class="brush: php; ">

restore -if /путь_к_копии/имя_файла_резервной_копии.bak

</pre>

Работа с mysql<br />

Сделать дамп базы:
<pre class="brush: php; ">

&gt; mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME &gt; dump.txt

</pre>
Восстановить базу из дампа:
<pre class="brush: php; ">

&gt; mysql -uLOGIN -PPORT -hHOST -pPASS DBNAME &lt; dump.txt 

</pre>
Значение ключей утилиты:<br />
&#8212;databases позволяет сделать так, что mysqldump включит в сценарий восстановления команды CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME и USE DBNAME. Это позволит создавать рабочие базы &laquo;с нуля&raquo;. То есть без использования &#8212;databases подразумевается, что пользователь восстанавливает одну базу данных и явно указывает, куда нужно помещать восстанавливаемые данные. Если же backup создается с целью сделать полностью рабочую копию данных, например, на другом MySQL-сервере, то нужно использовать этот ключ; 
<br /><br />
&#8212;all-databases позволяет сделать копии всех баз данных, которые существуют на данном MySQL-сервере. Если же нужно сделать копии только некоторых баз, нужно просто указать их через пробел при вызове mysqldump из командной строки (см. выше); 
<br /><br />
Ключ &#8212;help. Программа mysqldump имеет множество версий. Посмотреть, какие возможности поддерживаются конкретно Вашей версией, можно с помощью этого ключа; 
<br /><br />
&#8212;add-drop-table &#8212; ключ, который заставит mysqldump добавлять в итоговый сценарий команду drop table перед созданием таблиц. Это позволит избежать некоторых ошибок при восстановлении базы из резервной копии. Конечно, нужно учитывать то, что таблицы, находящиеся в рабочей копии (если таблицы с таким же именем существуют в backup), перед восстановлением из резервной копии будут удалены из основной базы и пересозданы из backup; 
<br /><br />
&#8212;no-data. С помощью этого ключа можно быстро сделать копию структуры таблицы/баз без самих данных. Например, Вы создали сложную таблицу и хотели бы сохранить на будущее ее структуру, а сами данные, которые находятся в этой таблице, Вам в резервной копии не нужны; 
<br /><br />
&#8212;result-file=&#8230; &#8212; этот ключ можно использовать для перенаправления вывода в файл. Можно использовать обычное unix-перенаправление командой &laquo;>&raquo;, а можно &#8212; вот этот ключ. Кому что нравится;
<br /><br />
Постовой: <a href="http://quellcode.ru/" target="_blank" title="Статьи о компьютерной технике">Статьи о компьютерной технике</a>.
<br /><br /><div class="tweetmeme_button" style="float: left; margin-right: 10px; background:#3d3d3b">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F09%2Funix-commands%2F">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F09%2Funix-commands%2F&amp;source=mgordeevru&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" />
			</a>
		</div><img src="http://feeds.feedburner.com/~r/mgordeev/~4/i5Q43lU-nM0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mgordeev.ru/2011/09/unix-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.mgordeev.ru/2011/09/unix-commands/</feedburner:origLink></item>
		<item>
		<title>Настройки TinyMCE в MODx</title>
		<link>http://feedproxy.google.com/~r/mgordeev/~3/atTZphaiMxY/</link>
		<comments>http://www.mgordeev.ru/2011/06/tinymce-setting/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 07:57:23 +0000</pubDate>
		<dc:creator>mgordeev</dc:creator>
				<category><![CDATA[MODx]]></category>

		<guid isPermaLink="false">http://www.mgordeev.ru/?p=468</guid>
		<description><![CDATA[В статье рассматриваются настройки встроенного в MODx визуального редактора. Так же есть рецепт по добавлению новых тегов в конфигурацию редактора, например, noindex.]]></description>
			<content:encoded><![CDATA[<p>Множество <abbr title="Content Management System">CMS</abbr> имеют предустановленный редактор контента <abbr title="What You See Is What You Ge">WYSIWYG</abbr> TinyMCE . Он достаточно удобен и очень гибко настраивается.<br />
Настройки визуального редактора в MODx разделены на 2 части: глобальные настойки редактора контента и настройки плагина TinyMCE.<br />
Содержимое панели редактирования контента и порядок кнопок можно настроить в глобальных настройках редактора контента по пути инструменты - конфигурация - интерфейс и представление.</p>
<div id="attachment_470" class="wp-caption aligncenter" style="width: 695px"><a rel="attachment wp-att-470" href="http://www.mgordeev.ru/2011/06/tinymce-setting/tiny-mini/"><img class="size-full wp-image-470" title="tiny-mini" src="http://www.mgordeev.ru/wp-content/uploads/2011/06/tiny-mini.jpg" alt="Внешний вид редактора после установки MODx" width="530" /></a><p class="wp-caption-text">Внешний вид редактора после установки MODx</p></div>
<p>&nbsp;<br />
Однако это не полная версия редактора. Некоторые отсутствующие функции могут быть очень полезны при редактировании контента.</p>
<div id="attachment_473" class="wp-caption aligncenter" style="width: 695px"><a rel="attachment wp-att-473" href="http://www.mgordeev.ru/2011/06/tinymce-setting/tiny-maxi/"><img class="size-full wp-image-473" title="Полный вид редактора TinyMCE" src="http://www.mgordeev.ru/wp-content/uploads/2011/06/tiny-maxi.jpg" alt="Полный вид редактора TinyMCE" width="530"  /></a><p class="wp-caption-text">Полный вид редактора TinyMCE</p></div>
<p>&nbsp;</p>
<p>Особое внимание хотелось бы уделить настройкам "путь к CSS файлу" и "Селекторы CSS". В первой настройке надо указать путь относительно корня сайта к css файлу, содержащему описание стилей, которые хотелось бы использовать при редактировании контента. А в настройку "Селекторы CSS" надо прописать примерно следующий код:</p>
<div class="code">Код=code;Красный цвет=red</div>
<p>После этого в плагине "стиль" можно будет выбрать нужное оформление. Выбор "Красный цвет" равносилен применению CSS класса red для конкретного элемента.</p>
<p>Помимо глобальных настроек WYSIWYG редактора есть настройки плагина. Они обычному пользователю вряд ли потребуются, однако я все же рекомендую их немного изменить. Дело в том, что в ходе работ по <a title="Поисковая оптимизация" href="http://www.gmsite.ru/research/promo/">поисковому продвижению сайта</a> требуется скрыть от поискового робота некоторое содержимое страницы. Это делается обычно с помощью тега noindex. Однако при сохранении документа редактор контента TinyMCE убирает тег noindex как невалидный. Чтобы этого не происходило, в поле Custom Parameters надо добавить:</p>
<div class="code">extended_valid_elements : "noindex"</div>
<p>Если версия modx старая, нужно искать /assets/plugins/tinymce....../xconfig.js и в нем заменить строку</p>
<div class="code">var tinymce_extended_valid_elements = "";</div>
<p>на</p>
<div class="code">var tinymce_extended_valid_elements = "noindex";</div>
<p>Вставлять тег noindex можно, редактируя контент в режиме html.</p>
<p>Постовой: При переустановке операционной системы вам может потребоваться <a href="http://web-grand.ru/2009/12/18/perenos-vsex-dannyx-firefox/" title="перенос данных Firefox">перенос данных Firefox</a> для сохранения данных.
<div class="tweetmeme_button" style="float: left; margin-right: 10px; background:#3d3d3b">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F06%2Ftinymce-setting%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F06%2Ftinymce-setting%2F&amp;source=mgordeevru&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<img src="http://feeds.feedburner.com/~r/mgordeev/~4/atTZphaiMxY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mgordeev.ru/2011/06/tinymce-setting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.mgordeev.ru/2011/06/tinymce-setting/</feedburner:origLink></item>
		<item>
		<title>Как выбрать хостинг для сайта?</title>
		<link>http://feedproxy.google.com/~r/mgordeev/~3/3cWGmXHKJiw/</link>
		<comments>http://www.mgordeev.ru/2011/04/hosting-for-site/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 19:57:36 +0000</pubDate>
		<dc:creator>mgordeev</dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://www.mgordeev.ru/?p=450</guid>
		<description><![CDATA[Некоторые рекомендации по выбору хостинг-провайдера.]]></description>
			<content:encoded><![CDATA[<p>Недавно мой блог переехал с хостинга группы компаний majordomo на <a href="http://timeweb.ru/">timeweb</a>. Тому были объективные причины, о них я расскажу ниже. <strong>Хочу заметить, статья является выражением моего личного мнения и не является ни рекламой, ни антирекламой хостинг провайдеров.</strong></p>
<p>Долгое время на странице партнерских программ на моем блоге висел баннер от Majordomo. Искренне хочется извиниться перед теми, кто использовал мои рекомендации при выборе хостинга. В свое оправдание могу сказать лишь то, что в момент выбора мною хостинга качество услуг Majordomo было значительно лучше.</p>
<p>Те минусы, которые стали последней каплей при переходе от majordomo:</p>
<ul>
<li>Операции с доменами (делегирование, изменение информации в WHOIS) происходят только в рабочие дни и в рабочее время по Московскому времени</li>
<li>Абсолютно мертвая поддержка, работающая по вышеописанному графику</li>
<li>Постоянные проблемы с сетевыми коммуникациями между серверами (mysql и сайты находятся на разных серверах, которые раз по 5 за день друг друга «не видят»)</li>
<li>Почтовые сервера работают очень медленно, иногда письмо можно ждать до 2 часов</li>
<li>Совершенно идиотская система тарифов и скидок. Например, хостинг стоит 45р./мес. (тариф старый), но можно купить годовой абонемент (хостинг на год) всего(!) за 972 р.</li>
<li>Постоянно дорожающие тарифные планы.</li>
<li>Очень медленное выполнение заявок в поддержке. Т.е. если вы захотите отказаться от услуг хостинга, вам придется подождать пару дней, пока вашу заявку должным образом обработают, и что самое смешное, оплатить это время по текущему тарифу хостинга.</li>
</ul>
<p>Ну и апогеем всего была фраза девушки в техподдержке: «А что вы переживаете-то так, Ваши сайты недоступны всего 2 часа?»</p>
<h1>Таким образом, встал резонный вопрос – какой хостинг для сайта выбрать?</h1>
<p>Четкого ответа, как собственно и алгоритма действий, здесь, наверное, нет. Могу привести только ряд рекомендаций по выбору хостинга:</p>
<p>1) Если работоспособность сайта важна, не выбирайте хостинг-провайдера с самыми низкими ценами. Качественные услуги по поддержке и хорошее оборудование стоят денег.  Все конфликтные ситуации связанные с <a href="http://www.gmsite.ru/research/support/">поддержкой сайта</a> придется решать как правило с хостинг-провайдером, обычно работоспособность сайта намного ценнее скромной платы за хостинг.</p>
<p>2) Можно использовать для выбора различные рейтинги и каталоги хостингов. Однако, слепо верить им не рекомендую, т.к. есть вероятность «проплаченного первого места». Особое внимание стоит уделить именно отрицательным отзывам и соотнести их с задачами, которые будет решать ваш сайт.</p>
<p>3) На одной из конференций услышал мнение, что хостинг &#8212; провайдером и регистратором доменов должна быть одна компания. Категорически не согласен. Лучше регистрировать домены у проверенных регистраторов, но хостинг у них лучше не заказывать. Соотношение цена-качество по опыту резко заваливается в одну из сторон.</p>
<p>4) Обратите внимание на уровень поддержки – сроки ожидания ответа на письмо, on-line консультант, реакция на звонок. Эти параметры можно проверить и не оплачивая хостинг.</p>
<p>5) Исполь зуйте тестовый период, предоставляемый хостинг &#8212; провайдерами. Оценить работу сайта под нагрузкой можно с помощью сервиса <a href="http://loadimpact.com/">http://loadimpact.com/</a>, например.</p>
<p><noindex><a rel="nofollow" href="http://ping-admin.ru/hosting_rating/02001002.html">Аптайм и время отклика самого сайта хостинга</a></noindex> тоже важные параметры. Но верить им тоже категорично нельзя. Недавно 31.03.2011 была <a href="http://habrahabr.ru/blogs/hosting/116564/">авария в хостинг компании caravan</a>,  но сайт самого каравана в это время себя чувствовал весьма комфортно.</p>
<p>В общем, рассмотрев очень много вариантов (short-лист содержал 11 компаний ), я остановил свой выбор на <a href="http://timeweb.ru/">timeweb</a>.  Пока меня все устраивает.
<div class="tweetmeme_button" style="float: left; margin-right: 10px; background:#3d3d3b">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F04%2Fhosting-for-site%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mgordeev.ru%2F2011%2F04%2Fhosting-for-site%2F&amp;source=mgordeevru&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<img src="http://feeds.feedburner.com/~r/mgordeev/~4/3cWGmXHKJiw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.mgordeev.ru/2011/04/hosting-for-site/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.mgordeev.ru/2011/04/hosting-for-site/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.913 seconds. --><!-- Cached page generated by WP-Super-Cache on 2011-12-27 14:13:19 -->

