<?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/" version="2.0">

<channel>
	<title>Заметки одного программиста</title>
	
	<link>http://olezhek.net</link>
	<description />
	<lastBuildDate>Wed, 21 Jul 2010 14:20:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/olezhek/feed" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="olezhek/feed" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">olezhek/feed</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Как я обновлял WordPress с 2.9.2 до 3.0</title>
		<link>http://olezhek.net/2010-07-21-kak-ya-obnovlyal-wordpress-s-2-9-2-do-3-0.html</link>
		<comments>http://olezhek.net/2010-07-21-kak-ya-obnovlyal-wordpress-s-2-9-2-do-3-0.html#comments</comments>
		<pubDate>Wed, 21 Jul 2010 14:20:48 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[обновление]]></category>

		<guid isPermaLink="false">http://olezhek.net/?p=769</guid>
		<description><![CDATA[Блог, который вы читаете сейчас, изначально был развёрнут на сборке WordPress от mywordpress.ru . Почему именно на этой сборке? Причин тут несколько. Во-первых, эта сборка отличается облегчённым файлом локализации. Использование облегчённой версии ru_RU.mo уменьшает потребление ресурсов во время просмотра страниц блога. Во-вторых, эта сборка содержит пару полезных плагинов: MaxSite Russian Date для отображения дат по [...]]]></description>
			<content:encoded><![CDATA[<p>Блог, который вы читаете сейчас, изначально был развёрнут на сборке WordPress от mywordpress.ru . Почему именно на этой сборке? Причин тут несколько. Во-первых, эта сборка отличается облегчённым файлом локализации. Использование облегчённой версии ru_RU.mo уменьшает потребление ресурсов во время просмотра страниц блога. Во-вторых, эта сборка содержит пару полезных плагинов: <a title="maxsite.org/russian-date" href="http://maxsite.org/russian-date" target="_blank">MaxSite Russian Date</a> для отображения дат по российским стандартам, <noindex><a rel="nofollow" title="http://olezhek.net/jexr/aHR0cDovL215d29yZHByZXNzLnJ1L3BsdWdpbnMvcnVzdG9sYXQv" href="http://olezhek.net/jexr/aHR0cDovL215d29yZHByZXNzLnJ1L3BsdWdpbnMvcnVzdG9sYXQv" target="_blank">RusToLat</a></noindex> для транслитерации русских символов в английские (используется, например, при создании ЧПУ), <noindex><a rel="nofollow" title="http://olezhek.net/jexr/aHR0cDovL3dvcmRwcmVzcy5vcmcvZXh0ZW5kL3BsdWdpbnMvd3Atc3VwZXItY2FjaGUv" href="http://olezhek.net/jexr/aHR0cDovL3dvcmRwcmVzcy5vcmcvZXh0ZW5kL3BsdWdpbnMvd3Atc3VwZXItY2FjaGUv" target="_blank">WP Super Cache</a></noindex> для кэширования (я его не использовал), “<noindex><a rel="nofollow" title="http://olezhek.net/jexr/aHR0cDovL2xlY2FjdHVzLnJ1LzIwMDgvMTEvMjcvMzIzMi8=" href="http://olezhek.net/jexr/aHR0cDovL2xlY2FjdHVzLnJ1LzIwMDgvMTEvMjcvMzIzMi8=" target="_blank">Блокировка запросов на новые версии</a></noindex>” для ускорения работы блога (его я тоже не использовал). Особенностью сборки было то, что она обновлялась со своего сайта, а не с сайта WordPress. Новые версии выходили с небольшим опозданием от основного WordPress. Свежая версия WP &#8211; 3.0 &#8211; вышла уже давненько, но еще не появлялась обновленная сборка от mywordpress.ru, и я решил обновить движок блога руками.<span id="more-769"></span>Для этой процедуры мне понадобился архив с WordPress 3 и много чего от старой сборки. Во-первых, я взял облегченную версию ru_RU.mo, которую положил в /wp-content/languages. Во-вторых, конфиг wp-config.php с настройками. В-третьих, тема блога, которую я перенес на то же самое место, только уже в новой сборке &#8211; /wp-content/themes. В-четвертых, плагины. Все плагины у меня были обновлены, и я их перенес на их законное место в новый движок &#8211; /wp-content/plugins. Скомпоновав всё это дело в одну кучку, я поставил его выгружаться на сервер и пошел пить чаёк <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .<br />
Изначально я предполагал, что могут возникнуть проблемы с совместимостью плагинов и готовился к тому, что что-то не будет работать после переноса. Однако, все прошло очень гладко и просто &#8211; WP подхватил настройки и базу и корректно отобразил мой блог. Когда же я обратился к админке WP, то получил вот такое сообщение:</p>
<p><img class="aligncenter size-full wp-image-770" title="Предложение обновить базу данных" src="http://olezhek.net/wp-content/uploads/2010/07/update.png" alt="" width="436" height="155" /></p>
<p>Я нажал на единственную кнопку на странице, и база быстро обновилась, WP впустил меня в админку. Обновление прошло очень легко и беспроблемно, чему я был весьма рад <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . После небольшого тестирования я убедился, что, вроде бы, все работает отлично. Впрочем, если вы заметили какие-либо косяки на моем сайте, вы можете отправить мне сообщение через форму на этой странице.</p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-07-21-kak-ya-obnovlyal-wordpress-s-2-9-2-do-3-0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>На меня ссылаются #1</title>
		<link>http://olezhek.net/2010-07-13-na-menya-ssylayutsya-1.html</link>
		<comments>http://olezhek.net/2010-07-13-na-menya-ssylayutsya-1.html#comments</comments>
		<pubDate>Tue, 13 Jul 2010 11:26:51 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[На меня ссылаются]]></category>

		<guid isPermaLink="false">http://olezhek.net/?p=766</guid>
		<description><![CDATA[Мой блог продолжает свое существование, и, надеюсь, становится более полезным для вас, уважаемые читатели . Я решил создать новую рубрику &#8211; &#8220;На меня ссылаются&#8221;. В этой рубрике я, в качестве благодарности, буду упоминать блоги тех, кто заметил мой блог и порекомендовал своим читателям мои материалы. Итак, я начну эту рубрику с моего тезки Олега Маркарьяна. [...]]]></description>
			<content:encoded><![CDATA[<p>Мой блог продолжает свое существование, и, надеюсь, становится более полезным для вас, уважаемые читатели <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>Я решил создать новую рубрику &#8211; &#8220;На меня ссылаются&#8221;. В этой рубрике я, в качестве благодарности, буду упоминать блоги тех, кто заметил мой блог и порекомендовал своим читателям мои материалы.</p>
<p>Итак, я начну эту рубрику с моего тезки <a title="blogonika.ru" href="http://blogonika.ru/" target="_blank">Олега Маркарьяна</a>. Олег ведет блог &#8220;Блогоника &#8211; город блоггеров&#8221;, в котором он рассказывает о новостях в блогосфере, о SEO и многих других интересных вещах, порой не связанных с блогосферой. В общем, очень интересный и разносторонний (как и его хозяин <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) ресурс &#8211; рекомендую к прочтению.</p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-07-13-na-menya-ssylayutsya-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с SSH. Часть 1 – делаем это в Python</title>
		<link>http://olezhek.net/2010-07-06-zametki-o-python-rabotaem-s-ssh.html</link>
		<comments>http://olezhek.net/2010-07-06-zametki-o-python-rabotaem-s-ssh.html#comments</comments>
		<pubDate>Tue, 06 Jul 2010 17:41:23 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[paramiko]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://tingol.ru/?p=612</guid>
		<description><![CDATA[Сегодня я хотел бы поведать вам о том, как можно работать с SSH в Python. SSH &#8211; Secure SHell &#8211; сетевой протокол, который позволяет производить удаленное управление операционной системой компьютера по зашифрованному соединению. При помощи SSH можно осуществлять передачу файлов. SSH применяется для соединения с удаленной операционной системой по SFTP. В Python для работы с [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня я хотел бы поведать вам о том, как можно работать с SSH в Python. SSH &#8211; Secure SHell &#8211; сетевой протокол, который позволяет производить удаленное управление операционной системой компьютера по зашифрованному соединению. При помощи SSH можно осуществлять передачу файлов. SSH применяется для соединения с удаленной операционной системой по SFTP.</p>
<p>В Python для работы с ssh используется модуль <noindex><a rel="nofollow" title="paramiko" href="http://olezhek.net/jexr/aHR0cDovL3d3dy5sYWcubmV0L3BhcmFtaWtvLw==" target="_blank">paramiko</a></noindex>. Документацию по модулю вы можете почитать <noindex><a rel="nofollow" title="тут" href="http://olezhek.net/jexr/aHR0cDovL3d3dy5sYWcubmV0L3BhcmFtaWtvL2RvY3MvcGFyYW1pa28tbW9kdWxlLmh0bWw=" target="_blank">тут</a></noindex>, ну а я покажу вам пару основных моментов, от которых вы оттолкнетесь и дальше уже будете применять то, что вам необходимо.<span id="more-612"></span></p>
<p>Paramiko присутствует в стандартных репозиториях Ubuntu и Debian, и установить его можно очень даже легко:</p>
<pre># apt-get install python-paramiko</pre>
<p>Теперь, когда модуль установлен, приступим к программированию)). Для работы с SSH в модуле предусмотрен класс &#8211; SSHClient. С него все и начинается:</p>
<pre name="code" class="python">#!/usr/bin/env python
import paramiko
ssh=paramiko.SSHClient()</pre>
<p>Я создал объект ssh класса SSHClient, и теперь могу устанавливать соединение. Модуль позволяет авторизоваться как при помощи пары &#8220;имя пользователя &#8211; пароль&#8221;, так и при помощи ключа. Во втором случае, конечно же, нужно иметь &#8220;при себе&#8221; этот самый ключ.</p>
<p>Разумеется, на разных серверах SSH настроен по разному. Важно знать, что существует 3 варианта авторизации &#8211; по имени пользователя и паролю, ключом и гибридный. По умолчанию, скажем, на Debian-based дистрибутивах включен последний вариант. Осмелюсь предположить, что это наиболее популярный вариант настроек. Что он из себя представляет? Когда вы подключаетесь к серверу по SSH, он, перед запросом логина и пароля, предлагает вам принять ключ, чтобы, позже, вы, выгрузив в директорию с ключами на сервере свой ключ, могли авторизоваться именно по ключу. Что получает пользователь? Он получает удобный диалог, на утвердительный ответ которого SSH-клиент скопирует к себе ключики сервера сам. Что получает программист? Весьма неудобную ситуацию &#8211; дело в том, что по умолчанию SSHClient настроен так, чтобы не соединяться с сервером, если у клиента нет ключа. Даже если логин и пароль правильны. Это приводит к тому, что SSHClient сбрасывает соединение, и авторизоваться не получается. К счастью, на такие случаи в Paramiko предусмотрено удобное решение:</p>
<pre name="code" class="python">ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())</pre>
<p>Ежели вам охота вернуть все обратно, можете просто не прописывать этот метод. Явно политика по умолчанию устанавливается так:</p>
<pre name="code" class="python">ssh.set_missing_host_key_policy(paramiko.RejectPolicy())</pre>
<p>Объект создан и настроен, теперь можно и подключиться:</p>
<pre name="code" class="python">ssh.connect("&lt;сервер&gt;",username="&lt;имя пользователя&gt;",password="&lt;пароль&gt;")</pre>
<p>Необходимо указать свои сервер, имя пользователя и пароль. В качестве сервера можно указать IP-адрес или доменное имя, по которому резолвится ваш сервер.</p>
<p>После успешного соединения есть два варианта работы с сервером &#8211; продолжать работать по SSH и выполнять консольные команды сервера или переключиться в режим SFTP и использовать приемы SFTP для работы с файлами. Какой метод предпочтительнее &#8211; дело ваше. Посмотрим оба варианта.</p>
<p>Вариант номер один &#8211; SFTP. Для переключения в этот режим используем такую конструкцию:</p>
<pre name="code" class="python">ftp=ssh.open_sftp()</pre>
<p>И далее работа с сервером осуществляется по SFTP. В качестве примера приведу пару команд по навигации по директориям сервера и управлению файлами:</p>
<pre name="code" class="python">fileList=ftp.listdir()
ftp.chdir("/var/log")
currentDir = ftp.getcwd()
ftp.get("sql.log","mysql.log")
ftp.put("sql.log","mysql.log")
ftp.unlink("mysql.log")
ftp.mkdir("test")
ftp.rmdir("test")
</pre>
<p>В первой строке я получил список файлов. Метод listdir() возвращает кортеж, с которым я могу работать как обычно.</p>
<p>Во второй строке я осуществил переход в директорию /var/log. Таким образом можно перемещаться по директориям на сервере.</p>
<p>В третьей строке мне захотелось узнать, где я нахожусь. В результате выполнения метода getcwd я получил строку, содержащую путь к моей текущей директории.</p>
<p>Для скачивания файла использется метод get() &#8211; строка четвертая. В качестве первого параметра задается имя локального файла (куда скачивать), в качестве второго &#8211; что скачивать. Можно указывать абсолютные пути.</p>
<p>Для выгрузки файла на сервер используется метод put() &#8211; параметры аналогично get(). Стоит отметить, что ни get(), ни put() не принимают в качестве входных параметров маски (например, &#8220;*.php&#8221;).</p>
<p>Удалить файл можно при помощи метода unlink(). Параметр задается также, как и у get() и put().</p>
<p>Для создания директории можно использовать метод mkdir(), а для удаления &#8211; rmdir().</p>
<p>Вообще, если вы имели ранее дело с sftp/ftp, то, думаю, вы заметили похожесть в названиях методов и команд протоколов FTP/SFTP. Так что трудно не будет, а нюансы всегда можно найти в документации к paramiko.</p>
<p>Вариант номер два &#8211; работа с сервером по SSH. Работа с сервером не через SFTP, а через SSH отличается прежде всего тем, что можно выполнять консольные команды. Для выполнения команд по SSH служит метод exec_command(). Ниже пример (я продублировал соединение с сервером для наглядности):</p>
<pre name="code" class="python">#!/usr/bin/env python
import paramiko
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("&lt;сервер&gt;",username="&lt;имя пользователя&gt;",password="&lt;пароль&gt;")
stdin, stdout, stderr = ssh.exec_command("cat /var/log/syslog")</pre>
<p>Данный метод примечателен тем, что при выполнении команды необходимо обрабатывать три возвращаемых канала &#8211; это содержимое стандартного ввода, стандартного вывода и стандартного вывода ошибок. Например, результат выполнения вышеописанной команды, если он будет успешен, будет содержаться в stdout. Ко всем трём возвращаемым каналам можно обратиться как к файлу и, например, считать оттуда всё, что необходимо. Для получения результата выполнения всё той же команды выше (результатом будет содержимое файла), я могу просто считать его построчно из stdout:</p>
<pre name="code" class="python">result = stdout.read.splitlines()</pre>
<p>Таким образом я получил кортеж строк системного лога удаленного сервера.</p>
<p>Усложним немного. Допустим, мне понадобилось перезагрузить сервер. Команда перезагрузки доступна только для root (/sbin/reboot). Для выполнения команд, доступных только root, от обычного пользователя, можно воспользоваться утилитой sudo. Я исхожу из того, что на сервере установлена и настроена sudo, и моя учетная запись может выполнять эту утилиту (является т.н. sudoer&#8217;ом):</p>
<pre name="code" class="python">stdin, stdout, stderr = ssh.exec_command("sudo reboot")
stdin.write("&lt;пароль пользователя&gt;\n")
stdin.flush()</pre>
<p>Мои действия:</p>
<ol>
<li>выполняю команду &#8220;sudo reboot&#8221;</li>
<li>в результате выполнения мне нужно ввести пароль пользователя (настройки по умолчанию для sudo &#8211; пароль вашего пользователя). Для этого я пишу в stdin, как в обычный файл, свой пароль вместе с <strong>переносом строки</strong>, и отправляю содержимое stdin серверу.</li>
</ol>
<p>Результатом выполнения будет перезагрузка сервера <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Так что для большей наглядности можете повыполнять другие команды через sudo <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>Это основные моменты работы с ssh в Python, для более подробной информации вы всегда можете обратиться к документации, ссылку на которую я дал в начале статьи. Удачи! <img src='http://olezhek.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-07-06-zametki-o-python-rabotaem-s-ssh.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox: пара полезных плагинов для веб-разработчика</title>
		<link>http://olezhek.net/2010-07-02-firefox-para-poleznyx-plaginov-dlya-veb-razrabotchika.html</link>
		<comments>http://olezhek.net/2010-07-02-firefox-para-poleznyx-plaginov-dlya-veb-razrabotchika.html#comments</comments>
		<pubDate>Fri, 02 Jul 2010 07:10:42 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Веб-разработка]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[плагины]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://olezhek.net/?p=741</guid>
		<description><![CDATA[Сегодня я хотел бы поделиться с вами несколькими плагинами для Firefox, которые я использую при разработке и анализе web-приложений. Я использую Firefox при разработке web-приложений по нескольким причинам: это один из самых популярных браузеров; наличие плагинов, которые добавляют такие функции, которых нет в других браузерах. Итак, первый и, пожалуй, самый нужный для веб-разработчика плагин &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня я хотел бы поделиться с вами несколькими плагинами для Firefox, которые я использую при разработке и анализе web-приложений.</p>
<p style="text-align: center;"><img class="size-full wp-image-742 aligncenter" title="firefox" src="http://olezhek.net/wp-content/uploads/2010/07/firefox-logo-bus.jpg" alt="" width="460" height="302" /></p>
<p>Я использую Firefox при разработке web-приложений по нескольким причинам:</p>
<ol>
<li>это один из самых популярных браузеров;</li>
<li>наличие плагинов, которые добавляют такие функции, которых нет в других браузерах.</li>
</ol>
<p>Итак, первый и, пожалуй, самый нужный для веб-разработчика плагин<span id="more-741"></span> &#8211; <noindex><a rel="nofollow" title="Firebug" href="http://olezhek.net/jexr/aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi8xODQzLw==" target="_blank">Firebug</a></noindex>. С его помощью можно удобно инспектировать HTML-код страницы, CSS-стили, отлаживать JavaScript. Если вы имеете дело с AJAX &#8211; для вас этот плагин просто &#8220;must-have&#8221;. Да, бесспорно, существуют аналогичные средства для разработчиков во всех современных браузерах, но они не дотягивают до функционала Firebug. Это первый плагин, который я устанавливаю после новой установки Firefox.</p>
<p>Следующая группа плагинов так или иначе связана с работой с HTTP-заголовками. Их просмотр может понадобится при анализе работы web-сервера.</p>
<p>Удобнее всего мне просматривать HTTP-заголовки при помощи плагина <noindex><a rel="nofollow" title="Live HTTP Headers" href="http://olezhek.net/jexr/aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi8zODI5Lw==" target="_blank">Live HTTP Headers</a></noindex>. Когда плагин запущен, он, при загрузке какой либо страницы или фоновой передаче браузером данных, пишет в свое текстовое поле все переданные и полученные HTTP-заголовки. Если вы анализируете заголовки для одной страницы, лучше не производить работу в других вкладках или плагинах, работающих с сетью, иначе будет каша)).</p>
<p>Для редактирования HTTP-заголовков я обычно использую <noindex><a rel="nofollow" title="Tamper Data" href="http://olezhek.net/jexr/aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvcnUvZmlyZWZveC9hZGRvbi85NjYv" target="_blank">Tamper Data</a></noindex>. Думаю, это наиболее удобный из целой &#8220;плеяды&#8221; подобных плагинов. Этот плагин также позволяет просматривать HTTP-заголовки и может это делать по команде.</p>
<p>Следующий плагин &#8211; <noindex><a rel="nofollow" title="Modify Headers" href="http://olezhek.net/jexr/aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi85Njcv" target="_blank">Modify Headers</a></noindex> &#8211; позволяет составлять HTTP-заголовки вручную. Плагин, будучи запущенным, отсылает составленные заголовки при обращении к какому-либо серверу при помощи Firefox.</p>
<p>И, напоследок, еще один плагин для работы с HTTP-заголовками &#8211; <noindex><a rel="nofollow" title="Poster" href="http://olezhek.net/jexr/aHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi8yNjkxLw==" target="_blank">Poster</a></noindex>. Плагин также позволяет составлять HTTP-заголовки и отправлять их какому-либо сайту. Особенность его заключается в том, что он не зависит от вкладок Firefox, т. е. у него есть свой интерфейс для получения результатов (простенький) и своя адресная строка, что может дать некоторую гибкость в работе. Штукенция весьма навороченная, хотя я чаще пользуюсь именно Tamper Data.</p>
<p>А какими плагинами/утилитами, помогающими при разработке web-приложений, пользуетесь вы?</p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-07-02-firefox-para-poleznyx-plaginov-dlya-veb-razrabotchika.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Кнопки добавления в социальные сервисы без плагинов</title>
		<link>http://olezhek.net/2010-06-22-knopki-dobavleniya-v-socialnye-servisy-bez-plaginov.html</link>
		<comments>http://olezhek.net/2010-06-22-knopki-dobavleniya-v-socialnye-servisy-bez-plaginov.html#comments</comments>
		<pubDate>Tue, 22 Jun 2010 20:47:20 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[кнопки]]></category>
		<category><![CDATA[опера]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[сервисы]]></category>
		<category><![CDATA[социальные]]></category>

		<guid isPermaLink="false">http://olezhek.net/?p=712</guid>
		<description><![CDATA[Наверно, вы уже заметили небольшое усовершенствование на моем блоге &#8211; кнопки добавления статьи на социальные сервисы. Эта штука не является нововведением &#8211; до этого я использовал плагин &#8220;ОднаКнопка&#8221; для WordPress. Как-то на днях я подумал, что подгрузка js плагином со стороннего сайта может замедлить (и иногда действительно замедляла) загрузку страницы &#8211; ведь браузер с настройками [...]]]></description>
			<content:encoded><![CDATA[<p>Наверно, вы уже заметили небольшое усовершенствование на моем блоге &#8211; кнопки добавления статьи на социальные сервисы. Эта штука не является нововведением &#8211; до этого я использовал плагин &#8220;ОднаКнопка&#8221; для WordPress. Как-то на днях я подумал, что подгрузка js плагином со стороннего сайта может замедлить (и иногда действительно замедляла) загрузку страницы &#8211; ведь браузер с настройками по умолчанию (Opera, Firefox, Chrome &#8211; проверено на этих браузерах) будет ожидать полной загрузки скрипта, прежде чем рендерить дальше страницу. Далее, лишний JavaScript на странице может замедлить работу браузера (не утверждаю, что у меня много JavaScript, но для владельцев сайтов с большим количеством js это актуально). Ну и пункт 3 &#8211; известно, что чем больше плагинов установлено в WordPress, тем больше он жрет системных ресурсов. Как следствие, устанавливать ради двух строчек инклюда js на каждый пост в странице блога целый плагин, считаю немного лишним <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Придя к такому заключению, я решил сделать очередную модификацию в теме своего блога<span id="more-712"></span> (это определенно минус, т.к. после смены темы придется изменять новую тему). Мне понадобилось определенное время для того, чтобы откопать методы добавления статьи в социальные сервисы через GET-запрос, и теперь я хочу поделиться ими с вами.</p>
<p>Итак, я выбрал небольшой список социальных сервисов, вот они:</p>
<ul>
<li><noindex><a rel="nofollow" title="mail.ru" href="http://olezhek.net/jexr/aHR0cDovL21haWwucnU=" target="_blank">Мой Мир mail.ru</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="facebook.com" href="http://olezhek.net/jexr/aHR0cDovL2ZhY2Vib29rLmNvbQ==" target="_blank">Facebook</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="delicious.com" href="http://olezhek.net/jexr/aHR0cDovL2RlbGljaW91cy5jb20=" target="_blank">Delicious</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="digg.com" href="http://olezhek.net/jexr/aHR0cDovL2RpZ2cuY29t" target="_blank">Digg</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="friendfeed.com" href="http://olezhek.net/jexr/aHR0cDovL2ZyaWVuZGZlZWQuY29t" target="_blank">FriendFeed</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="google.com/buzz" href="http://olezhek.net/jexr/aHR0cDovL3d3dy5nb29nbGUuY29tL2J1eno=" target="_blank">Google Buzz</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="twitter.com" href="http://olezhek.net/jexr/aHR0cDovL3R3aXR0ZXIuY29t" target="_blank">Twitter</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="mister-wong.ru" href="http://olezhek.net/jexr/aHR0cDovL3d3dy5taXN0ZXItd29uZy5ydQ==" target="_blank">Mister-Wong</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="reddit.com" href="http://olezhek.net/jexr/aHR0cDovL3JlZGRpdC5jb20=" target="_blank">Reddit</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="myspace.com" href="http://olezhek.net/jexr/aHR0cDovL215c3BhY2UuY29t" target="_blank">MySpace</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="orkut.com" href="http://olezhek.net/jexr/aHR0cDovL29ya3V0LmNvbQ==" target="_blank">Orkut</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="slashdot.org" href="http://olezhek.net/jexr/aHR0cDovL3NsYXNoZG90Lm9yZw==" target="_blank">Slashdot</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="technorati.com" href="http://olezhek.net/jexr/aHR0cDovL3RlY2hub3JhdGkuY29t" target="_blank">Technorati</a></noindex>;</li>
<li><noindex><a rel="nofollow" title="stumbleupon.com" href="http://olezhek.net/jexr/aHR0cDovL3d3dy5zdHVtYmxldXBvbi5jb20=" target="_blank">StumbleUpon</a></noindex>.</li>
</ul>
<p>Далее я нашел подходящие иконки для отображения на страницах блога. Мне очень приглянулись иконки <a title="webtreatsetc.deviantart.com" href="http://webtreatsetc.deviantart.com" target="_blank">этого</a> товарища, за них ему спасибо. Самое скучное было дальше &#8211; поиск GET-запросов к сервисам для добавления постов. Оказывается, аналогичное проделал и <a title="shakin.ru" href="http://shakin.ru/other/social-buttons.html" target="_blank">Глобатор</a>, за что ему тоже спасибо &#8211; некоторые запросы перекочевали ко мне именно из его статьи <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>
<p>Итак, код:</p>
<pre name="code" class="html"><!--mail.ru-->
<noindex><a target="_blank" rel="nofollow" href="http://connect.mail.ru/share?share_url=<?php the_permalink(); ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/mail-ru.png" title="Поделиться В Моем Мире"></a></noindex>

<!--facebook-->
<noindex><a rel="nofollow" target="_blank" href="http://www.facebook.com/sharer.php?u=<?php the_permalink(); ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/facebook.png" title="Поделиться в Facebook"></a></noindex>

<!--delicious-->
<noindex><a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=<?php the_permalink() ?>&#038;title=<?php the_title(); ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/delicious.png" title="Поделиться в Delicious"></a></noindex>

<!--digg-->
<noindex><a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&#038;url=<?php the_permalink() ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/digg.png" title="Поделиться в Digg"></a></noindex>

<!--friendfeed-->
<noindex><a rel="nofollow" href="http://friendfeed.com/?url=<?php the_permalink() ?>&#038;title=<?php the_title(); ?>" target="_blank"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/friendfeed.png" title="Поделиться в FriendFeed"></a></noindex>

<!--buzz-->
<noindex><a rel="nofollow" target="_blank" href="http://www.google.com/buzz/post?message=<?php the_title(); ?>&#038;url=<?php the_permalink(); ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/google.png" title="Поделиться в Google Buzz"></a></noindex>

<!--twitter-->
<noindex><a rel="nofollow" target="_blank" href="http://twitter.com/home?status=RT @ru_tingol <?php the_title(); ?>: <?php the_permalink(); ?>" title="Добавить в Twitter"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/twitter.png" title="Поделиться в Twitter"></a></noindex> 

<!--mister-wong-->
<noindex><a rel="nofollow" target="_blank" href="http://www.mister-wong.ru/index.php?action=addurl&#038;bm_url=<?php the_permalink(); ?>&#038;bm_description=<?php the_title(); ?>" title="Добавить в Mister-Wong"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/mister-wong.png" title="Добавить в Mister Wong"></a></noindex>

<!--reddit-->
<noindex><a target="_blank" rel="nofollow" href="http://reddit.com/submit?url=<?php the_permalink() ?>&#038;title=<?php the_title(); ?>" ><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/reddit.png" title="Поделиться в Reddit"></a></noindex>

<!--myspace-->
<noindex><a target="_blank" rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=<?php the_permalink() ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/myspace.png" title="Поделиться в MySpace"></a></noindex>

<!--orkut-->
<noindex><a target="_blank" rel="nofollow" href="http://promote.orkut.com/preview?nt=orkut.com&#038;tt=<?php the_title(); ?>&#038;du=<?php the_permalink() ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/orkut.png" title="Поделиться в Orkut"></a></noindex>

<!--./-->
<noindex><a target="_blank" rel="nofollow" href="http://slashdot.org/bookmark.pl?url=<?php the_permalink() ?>&#038;title=<?php the_title(); ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/slash-dot.png" title="Поделиться в Slashdot"></a></noindex>

<!--Technorati-->
<noindex><a target="_blank" rel="nofollow" href="http://technorati.com/signup/?f=favorites&#038;Url=<?php the_permalink() ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/technocrati.png" title="Поделиться в Technorati"></a></noindex>

<!--StumbleUpon-->
<noindex><a target="_blank" rel="nofollow" href="http://www.stumbleupon.com/submit?url=<?php the_permalink() ?>"><img width="32" height="32" src="<?php bloginfo('template_url'); ?>/icons/stumbleupon.png" title="Поделиться в StumbleUpon"></a></noindex></pre>
<p>Пара нюансов.<br />
Во-первых, необходимо поменять пути к вашим иконкам.<br />
Во-вторых, размер ваших иконок может быть другим, поэтому вам может понадобиться изменить параметры width=&#8221;32&#8243; height=&#8221;32&#8243; в теге IMG или вовсе убрать их. В последнем случае иконки будут отрисовываться со своим натуральным разрешением.<br />
Этот код необходимо прописать в файле &#8220;index.php&#8221; и/или &#8220;single.php&#8221; вашей темы после строки:</p>
<pre name="code" class="php">&lt;?php the_content(''); ?&gt;</pre>
<p>Первый файл отвечает за вывод информации на главную страницу (где, как правило, отображаются подряд несколько постов), а второй &#8211; за вывод отдельного поста &#8211; когда вы посещаете страницу, содержащую один пост. Например, эту <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Можно сделать и покрасивее &#8211; сохранить приведенный выше html-код в отдельный файл и назвать его как-нибудь с расширением .php, например &#8220;services.php&#8221;. Далее, этот файл кладется в директорию с темой (можно и в любое другое место), и в вышеуказанных файлах после </p>
<pre name="code" class="php">&lt;?php the_content(''); ?&gt;</pre>
<p>пишем</p>
<pre name="code" class="php">&lt;?php include(&quot;path/to/services.php&quot;); ?&gt;</pre>
<p>Путь, конечно же, надо изменить на свой. Второй вариант хорош тем, что вам не нужно прописывать html-код со ссылками прямо в теме, вы делаете это в отдельном файле, который можно положить в любое удобное место и просто подключать (функция <noindex><a rel="nofollow" target="_blank" title="http://olezhek.net/jexr/aHR0cDovL3J1LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLnJlcXVpcmUucGhw" href="http://olezhek.net/jexr/aHR0cDovL3J1LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLnJlcXVpcmUucGhw">include()</a></noindex> php) там, где это нужно.<br />
Вот что у меня было:<br />
<img src="http://olezhek.net/wp-content/uploads/2010/06/knopka.png" alt="" title="Старые иконки добавления в социальные сервисы" width="231" height="26" class="aligncenter size-full wp-image-720" /><br />
А вот что стало:<br />
<img src="http://olezhek.net/wp-content/uploads/2010/06/my.png" alt="" title="Новые иконки добавления в социальные сервисы" width="503" height="32" class="aligncenter size-full wp-image-721" /><br />
По-моему, неплохо <img src='http://olezhek.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  . К тому же, оно теперь и грузится быстрее <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-06-22-knopki-dobavleniya-v-socialnye-servisy-bez-plaginov.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Постинг в блог из Google Docs</title>
		<link>http://olezhek.net/2010-06-16-posting-v-blog-iz-google-docs.html</link>
		<comments>http://olezhek.net/2010-06-16-posting-v-blog-iz-google-docs.html#comments</comments>
		<pubDate>Wed, 16 Jun 2010 07:25:13 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Технологии Веб]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[docs]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[MovableType]]></category>
		<category><![CDATA[Xml-RPC]]></category>
		<category><![CDATA[пост]]></category>
		<category><![CDATA[публикация]]></category>

		<guid isPermaLink="false">http://olezhek.net/?p=698</guid>
		<description><![CDATA[Я частенько пользуюсь Google Docs для написания различных документов. Инструмент этот, хоть еще и не дорос до полноценного офисного пакета, для меня все же полезен. Главным образом, за счет того, что мои документы доступны отовсюду, и при этом нет необходимости таскать с собой что-то на флешке. Во-вторых, нет необходимости в установке программного обеспечения на компьютер. [...]]]></description>
			<content:encoded><![CDATA[<p>Я частенько пользуюсь Google Docs для написания различных документов. Инструмент этот, хоть еще и не дорос до полноценного офисного пакета, для меня все же полезен. Главным образом, за счет того, что мои документы доступны отовсюду, и при этом нет необходимости таскать с собой что-то на флешке. Во-вторых, нет необходимости в установке программного обеспечения на компьютер. Ну а в-третьих, почти всё, что я пишу для блога, я пишу в Google Docs. Как-то на днях я решил пошариться в Google Docs в поисках механизма для публикации документов<span id="more-698"></span> на блоге &#8211; поднадоело мне копипастить материал оттуда каждый раз. Для того, чтобы настроить публикацию из Google Docs, мне понадобилось немного порыться в настройках публикации, которые размещены несколько необычно &#8211; нужно для их вызова отметить галочкой какой-нибудь документ, нажать большую кнопку “Дополнительные действия“ на верхней панели Google Docs, и в выпадающем меню кликнуть по пункту “Публикация“.</p>
<p><img class="aligncenter size-full wp-image-699" title="Публикация" src="http://olezhek.net/wp-content/uploads/2010/06/settings_small_1.png" alt="" width="350" height="298" />Появится такое окошко:</p>
<p><a href="http://olezhek.net/wp-content/uploads/2010/06/settings_small_2.png"><img class="aligncenter size-medium wp-image-700" title="Настройки публикации" src="http://olezhek.net/wp-content/uploads/2010/06/settings_small_2-500x258.png" alt="" width="500" height="258" /></a></p>
<p>Необходимо перейти по ссылке “задать настройки сайта блога“. Тут-то мы и найдем желаемое:</p>
<p><a href="http://olezhek.net/wp-content/uploads/2010/06/settings_small_3.png"><img class="aligncenter size-medium wp-image-701" title="Настройки публикации" src="http://olezhek.net/wp-content/uploads/2010/06/settings_small_3-500x245.png" alt="" width="500" height="245" /></a></p>
<p>Далее я привожу настройки для WordPress. Если у вас standalone-блог, выбираете “Мой собственный или указанный мною сервер“. WordPress поддерживает постинг через MovableType API, выбираем его. Заполняем URL, логин и пароль пользователя, от которого будем писать статьи. Жмем кнопочку “Проверить”, чтобы узнать, работает выбранный API, и сохраняем настройки. Единственная проблема заключается в том, что публиковать на данный момент можно документы, созданные старым редактором Google Docs, в котором нет отображения документа, как на листе, дополнительных опций форматирования и прочих функций нового редактора. Таким образом, если вы публикуете некоторые документы (неважно куда &#8211; даже просто как html-страничку), вам перед их созданием придется переводить Google Docs в старый режим работы:</p>
<p><a href="http://olezhek.net/wp-content/uploads/2010/06/dgrsxqsm_349fpbctxc5_b.png"><img class="aligncenter size-medium wp-image-702" title="Настройки редактора" src="http://olezhek.net/wp-content/uploads/2010/06/dgrsxqsm_349fpbctxc5_b-500x244.png" alt="" width="500" height="244" /></a>Для публикации вам необходимо отметить документ флажком и в меню &#8220;Дополнительные действия&#8221; выбрать пункт &#8220;Публикация&#8221; (все точно так же, как на первом снимке). Появится окошко, где вы можете кликнуть по кнопке &#8220;Поместить в блог&#8221; для публикации на блоге:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-703" title="Публикация" src="http://olezhek.net/wp-content/uploads/2010/06/dgrsxqsm_350g8f8cjfh_b.png" alt="" width="440" height="334" /></p>
<p>Вам необходимо будет перед публикацией определить стили документа, т.к. Google Docs выгружает документ со стилями, либо почистить от стилей исходный код документа (меню Изменить-&gt; Изменить HTML). Может возникнуть также ситуация, когда пост будет опубликован без названия. Скорее всего в таком случае после публикации понадобится дополнительное изменение поста в редакторе WP. Думаю, что это косяки Google Docs, а не Movabletype API, т.к. через него мне уже доводилось писать пост с мобильника, и все было в порядке. Также отмечу то, что Google Docs не позволяет сохранять документ как черновик WP, нет возможности указать категории поста и тэги. Если у вас есть несколько документов, названных одинаково, и вы публикуете один из них, то, несмотря на выделение только одного документа, будут опубликованы все документы с этим названием <img src='http://olezhek.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Google Docs &#8211; весьма сырой для публикации постов в блог инструмент, и остается наверно только ждать, когда его базовые (совсем уж базовые) функции для публикации будут расширены необходимым для комфортного написания статей. Впрочем, начать публиковать через Google Docs можно хоть сейчас, особенно если вас не останавливает его ограниченный функционал <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-06-16-posting-v-blog-iz-google-docs.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Сайт переехал</title>
		<link>http://olezhek.net/2010-06-11-sajt-pereexal.html</link>
		<comments>http://olezhek.net/2010-06-11-sajt-pereexal.html#comments</comments>
		<pubDate>Fri, 11 Jun 2010 13:15:26 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Мои новости]]></category>
		<category><![CDATA[olezhek.net]]></category>
		<category><![CDATA[блог]]></category>
		<category><![CDATA[домен]]></category>
		<category><![CDATA[новый]]></category>
		<category><![CDATA[переезд]]></category>

		<guid isPermaLink="false">http://olezhek.net/?p=687</guid>
		<description><![CDATA[Ну вот и новое изменение в моем блоге &#8211; я перенес его на новый домен. Теперь блог расположен здесь &#8211; http://olezhek.net/ . Уважаемые читатели, если вы добавляли сайт в закладки, обновите их, пожалуйста. Ссылка на RSS также изменилась]]></description>
			<content:encoded><![CDATA[<p>Ну вот и новое изменение в моем блоге &#8211; я перенес его на новый домен. Теперь блог расположен здесь &#8211; <a title="http://olezhek.net/" href="http://olezhek.net/">http://olezhek.net/</a> . Уважаемые читатели, если вы добавляли сайт в закладки, обновите их, пожалуйста. Ссылка на RSS также изменилась</p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-06-11-sajt-pereexal.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Особенности работы bluehost и переезд на него</title>
		<link>http://olezhek.net/2010-05-14-osobennosti-raboty-bluehost-i-pereezd-na-nego.html</link>
		<comments>http://olezhek.net/2010-05-14-osobennosti-raboty-bluehost-i-pereezd-na-nego.html#comments</comments>
		<pubDate>Fri, 14 May 2010 06:37:15 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Мои новости]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[American]]></category>
		<category><![CDATA[bluehost]]></category>
		<category><![CDATA[Electron]]></category>
		<category><![CDATA[Express]]></category>
		<category><![CDATA[Maestro]]></category>
		<category><![CDATA[majordomo]]></category>
		<category><![CDATA[Mastercard]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Visa]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[блог]]></category>
		<category><![CDATA[домен]]></category>
		<category><![CDATA[настройка]]></category>
		<category><![CDATA[оплата]]></category>
		<category><![CDATA[переезд]]></category>
		<category><![CDATA[сайт]]></category>
		<category><![CDATA[хостер]]></category>
		<category><![CDATA[хостинг]]></category>

		<guid isPermaLink="false">http://tingol.ru/?p=677</guid>
		<description><![CDATA[Как я уже сообщал ранее, я перенес свой блог на другой хостинг. Ранее моим хостингом был majordomo, который радовал меня своей стабильностью вплоть до января месяца этого года. С наступлением нового года начали появляться косячки. Суть их заключалась вот в чем. Я замеряю uptime своего сайта при помощи сервиса pingdom, который делает это круглые сутки [...]]]></description>
			<content:encoded><![CDATA[<p>Как я уже сообщал <noindex><a rel="nofollow" title="Сайт недоступен | Заметки одного программиста" href="http://olezhek.net/jexr/aHR0cDovL3RpbmdvbC5ydS8yMDEwLTA1LTA0LXNhanQtbmVkb3N0dXBlbi5odG1s" target="_blank">ранее</a></noindex>, я перенес свой блог на другой хостинг. Ранее моим хостингом был majordomo, который радовал меня своей стабильностью вплоть до января месяца этого года. С наступлением нового года начали появляться косячки. Суть их заключалась вот в чем.<span id="more-677"></span> Я замеряю uptime своего сайта при помощи сервиса pingdom, который делает это круглые сутки и ежемесячно выдает мне отчет. В январе-феврале месяце появились какие-то &#8220;пробелы&#8221; в работе хостера &#8211; сайт бывал в дауне по несколько часов в месяц. Понятия не имею, были ли это канальные проблемы, или что-то еще, но свою ложку дегтя они добавили. К марту работа стабилизировалась, вроде бы, но в голове уже роились мысли о стабильности. Помимо всего прочего, у меня частенько возникала ситуация, когда время соединения со страницей сайта возрастало до 20 секунд с лишним. Потом был <noindex><a rel="nofollow" title="Пожар в дата-центре hosting.ua" href="http://olezhek.net/jexr/aHR0cDovL2hhYnJhaGFici5ydS9ibG9ncy9ob3N0aW5nLzg5MTcyLw==" target="_blank">пожар в дата-центре hosting.ua</a></noindex> и закрытие mchost, показавшие, что, как был бардак в нашем СНГ-шном пространстве, так он и остался. Тут-то я и стал поглядывать в сторону зарубежных хостеров. Я решил исходить из того, что, чем меньше я слышал о хостере и чем он при этом крупнее, тем лучше для меня. Далее, я вспомнил про тех хостеров, с которыми мне или моим знакомым доводилось иметь дело. Я также прикинул, что мне может потребоваться от будущего хостинга &#8211; какое ПО и какие сервисы. После анализа всего этого я остановился на хостинг-провайдере <noindex><a rel="nofollow" title="bluehost.com" href="http://olezhek.net/jexr/aHR0cDovL2JsdWVob3N0LmNvbS8=" target="_blank">bluehost.com</a></noindex>. Ребята предлагают shared-хостинг (то, что у нас называется &#8220;виртуальным хостингом&#8221;) за примерно 7 американских баксов в месяц. За эти деньги я получаю просто кучу всего, и, в качестве приятного довеска, cPanel для удобного управления всем этим хозяйством (подробнее о возможностях можно почитать на их сайте, их действительно море, по сравнению с нашими хостерами). Нет, я не утверждаю, что того тарифа, который я использовал на majordomo, мне не хватало (кстати, платил я за него столько же &#8211; около $7, если уж измерять цены в них). Просто от подхода сотрудников bluehost к клиентам возникает некоторое ощущение стабильности. Но, не буду нахваливать, тем более что я не для этого пишу сей трактат <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Кстати, при регистрации необходимо зарегистрировать доменное имя (домены с tld .com, .net и т.д.), продление которого будет стоить вам 0, пока вы оплачиваете свой аккаунт.<br />
Использование хостинга от bluehost таит в себе несколько нюансов.<br />
<strong>Во-первых</strong>, оплата. Тут не катят какие-либо online-платежные системы, даже популярный во всем остальном мире PayPal. Оплата производится только по карте. Bluehost можно оплачивать картами Visa или Mastercard. Ну или American Express, но про них речи я вести не буду, т.к. нет у нас их. Оплатить хостинг с Visa Electron или Mastercard Maestro не получится. Это карты начального уровня и они &#8220;местечковые&#8221;, т.е. делать денежные переводы с их помощью можно только в том государстве, где они были приобретены (есть нюансы, но сейчас не об этом). Я оплачивал при помощи карты Visa Classic.<br />
<strong>Во-вторых</strong>, собственно устройство пространства пользователя на сервере. Сперва отмечу, что для работы с аккаунтом предоставляется удобная и мощная вещь под названием cPanel &#8211; веб-интерфейс ко всем доступным настройкам, плюс установщики программного обеспечения и т.п. Далее, в отличие от таких, например, российских хостеров, как Masterhost или тот же Majordomo, на серверах bluehost своя структура директорий. Например, у обозначенных ранее хостеров пользователь получает доступ к одной директории, внутри которой размещаются поддиректории для каждого сайта в отдельности. Т.е. мы имеем примерно такую структуру: ~, внутри нее ~/site1, ~/site2 и т.д. На bluehost пользователь получает по сути свой маленький Linux &#8211; окружение сделано через chroot/fakeroot, а в домашней директории пользователя лежит много всего. Прежде всего это директория public_html и симлинк на нее с названием www для совместимости. К этой директории подключен домен, который вы регистрируете при создании аккаунта (далее подробнее об этом). В домашней же директории можно найти такие директории, как bin, usr, etc. Ни на что не намекает? Правильно, там можно ставить софт, указывая свои префиксы и запуская его в своем окружении. Руки зачесались <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ? Не торопитесь, команда bluehost активно следит за своими серверами, поэтому необходимо соблюдать правила использования хостинга. Рекомендую ознакомиться с ними.<br />
Дальше у нас работа с доменами. И тут появляются свои не очень приятные, в плане легкости использования хостинга, моменты. Дело в том, что при подключении доменов (раздел &#8220;Addon domains&#8221;, или, если вы настроили язык UI cPanel, &#8220;Дополнительные домены&#8221;) происходит следующее: создается домен 3 уровня (на основе вашего первого домена), к нему прописывается <strong>алиасом</strong> подключаемый вами домен, и все это дело подключается к указанной вами <strong>поддиректории</strong> в директории ~/public_html. Эта немного странная конструкция приводит к тому, что:<br />
1. Вы получаете редирект с вашего красивого домена, который вы только что подключили, на тихий ужас третьего уровня. Это нехорошо, потому, что вам-то наверняка по боку этот домен третьего уровня, вам нужен ваш сайт по вашему домену, и безо всяких там. А еще, представьте себе, если поисковики не так склеют домены?! И будет у вас основным домен третьего уровня, а ваш вкусненький, хорошо узнаваемый домен будет являться лишь &#8220;зеркалом&#8221;, и не будет учитываться;<br />
2. Вы получаете ситуацию, в которой все ваши сайты будут доступны при обращении к основному доменному имени аккаунта. Например, ваш основной домен site.com, и у вас подключен домен another-site.com к директории another-site. Так вот, ваш сайт по домену another-site.com будет доступен по URL site.com/another-site. Получите еще одно &#8220;зеркало&#8221;. Плюс это еще возможные проблемы с безопасностью.<br />
Вот тут и придется малость поработать руками. Если вы успели забыть, что такое .htaccess, то вспоминайте. А если не знали, то обязательно почитайте, как обходить такую ситуацию. А обходится она следующим образом: необходимо в файл .htaccess, расположенном в директории ~/public_html (она же ~/www) добавить следующие строки (предполагается, что ваш основной домен &#8211; site.com, а добавленный &#8211; another-site.com, который подключен к директории another-site):</p>
<pre>RewriteEngine On

RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]
Redirect 301 /another-site/ http://another-site.com/
Redirect 301 /another-site http://another-site.com/</pre>
<p>При помощи данных строк мы добились редиректа на доменное имя another-site.com при обращении по URL site.com/another-site и site.com/another-site/ (это разные URL, подробнее читайте про стандарт URI), попутно отдавая в заголовке HTTP код статуса 301 &#8211; Moved permanently. Второй строкой я заодно добился того, чтобы при обращении к www.site.com пользователя перенаправляло на site.com. Далее мы избавляемся от ненужного редиректа с подключенного домена на домен третьего уровня. Для этого в директории, к которой подключен наш домен (в данном примере это another-site), в файле .htaccess пишем такое (предполагается, что ваш сайт another-site.com является алиасом к another-site-com.site.com):</p>
<pre>RewriteEngine On

RewriteCond %{HTTP_HOST} ^another-site-com.site.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.another-site-com.site.com$</pre>
<p>Если необходимо, для решения ситуации с www на another-site.com можете взять строчку выше и изменить ее под свой домен. Всё, теперь не будет редиректов на жуткий домен третьего уровня.</p>
<p>Следующий нюанс, с которым я столкнулся при переносе сайта &#8211; права доступа. Несмотря на то, что tar сохраняет права доступа при архивировании файлов, после распаковки я получил не те права доступа, какие ожидал. Сервер не отдавал такие вещи, как, например, картинки и css-стили из-за отсутствия прав на чтение файлов. Возможно, это связано с настройками umask файловой системы. Ну да не важно. Я просто, в консоли, находясь в директории сайта, набрал:</p>
<pre>$ find . -type d -exec chmod 755 {} \;
$ find . -type f -exec chmod 644 {} \;</pre>
<p>тем самым выставив права на файлы &#8211; 644, на папки &#8211; 755.<br />
Ну а далее все как по установке WordPress &#8211; выставил 777 на wp-content/cache и wp-content/uploads.<br />
После всего проделанного я ринулся было использовать сайт в штатном режиме, но тут же наткнулся на проблему памяти. Как известно, современные версии WordPress кушают до 32 МБ оперативной памяти (PHP). Причем эта цифра имеет место при обычном режиме работы. Во время использования админки WP &#8220;хавает&#8221; (а по другому и не выразишься) гораздо больше. Стандартно на Bluehost установлена настройка PHP max_memory=32M. Это означает, что если php-скрипт начинает сжирать память больше установленного, апач роняет выполнение скрипта, и результата работы мы не видим. Очевидно, что для нормальной работы WP необходимо увеличить максимальное количество памяти, которое может потребить скрипт. Для этого на bluehost необходимо сделать пару действий:<br />
1. в cPanel я нашел раздел &#8220;Программное обеспечение и службы&#8221;, в котором перешел по ссылке &#8220;PHP Config&#8221;. Далее выставил настройки, как на скриншоте:</p>
<p><img class="aligncenter size-medium wp-image-678" title="Настройки PHP" src="http://tingol.ru/wp-content/uploads/2010/05/phpini_small-398x500.png" alt="" width="398" height="500" /></p>
<p>Подробнее об этих настройках можно почитать на страничках, ссылки на которые размещены там же. В разделе &#8220;Install default php.ini&#8221; я нажал кнопку &#8220;Install php.ini master file&#8221;. После этого действия типовой php.ini появился в моей домашней директории с именем php.ini.default.<br />
2. Я его переименовал в php.ini и отредактировал строку:</p>
<pre>max_memory=64M</pre>
<p>64 мегабайт хватило для того, чтобы запустить админку <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Кстати, количество требующейся для WP памяти будет тем больше, чем больше у вас установлено плагинов.<br />
Ну и напоследок отмечу, что, в дополнение ко всем телодвижениям с настройкой, мне пришлось лезть в настройки WP и менять путь к директории с загрузками &#8211; он был прописан как абсолютный, от корня. Разумеется, структура директорий серверов majordomo отличается от структуры директорий серверов bluehost.<br />
Вот, в принципе, и всё. Конечно, существуют некоторые неудобства в работе с данным хостером, но сейчас он меня более чем устраивает своими возможностями. Кстати, главная страница моего блога стала грузиться чуть быстрее &#8211; это плюс. Ну а по поводу стабильности доступа к сайту еще предстоит поговорить &#8211; блог работает на bluehost только неделю.</p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-05-14-osobennosti-raboty-bluehost-i-pereezd-na-nego.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PGP/GPG в Windows</title>
		<link>http://olezhek.net/2010-05-10-pgpgpg-v-windows.html</link>
		<comments>http://olezhek.net/2010-05-10-pgpgpg-v-windows.html#comments</comments>
		<pubDate>Mon, 10 May 2010 20:25:17 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[GnuPG]]></category>
		<category><![CDATA[GPG]]></category>
		<category><![CDATA[PATH]]></category>
		<category><![CDATA[PGP]]></category>
		<category><![CDATA[Psi]]></category>

		<guid isPermaLink="false">http://tingol.ru/?p=665</guid>
		<description><![CDATA[Шифрование через PGP/GPG в Linux работает, что называется, &#8220;из коробки&#8221;. Я уже привык пользоваться им для шифрования сообщений Jabber. Но в Windows такой полезной вещи нет. Для того, чтобы получить ее, необходимо скачать GnuPG. Также, хорошим подспорьем в управлении ключами будет что-то вроде GnuPG Shell, в виду того, что GnuPG &#8211; набор консольных команд для [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-667" title="gnupg logo" src="http://tingol.ru/wp-content/uploads/2010/05/logo-gnupg.png" alt="" width="356" height="120" /></p>
<p>Шифрование через PGP/GPG в Linux работает, что называется, &#8220;из коробки&#8221;. Я уже привык пользоваться им для шифрования сообщений Jabber. Но в Windows такой полезной вещи нет. Для того, чтобы получить ее<span id="more-665"></span>, необходимо скачать <noindex><a rel="nofollow" title="GnuPG" href="http://olezhek.net/jexr/aHR0cDovL3d3dy5nbnVwZy5vcmcvZG93bmxvYWQv" target="_blank">GnuPG</a></noindex>. Также, хорошим подспорьем в управлении ключами будет что-то вроде <noindex><a rel="nofollow" title="GnuPG Shell" href="http://olezhek.net/jexr/aHR0cDovL3d3dy50b3BiaXRzLmNvbS9nbnVwZy1zaGVsbC5odG1s" target="_blank">GnuPG Shell</a></noindex>, в виду того, что GnuPG &#8211; набор консольных команд для управления ключами. GnuPG Shell должен сильно упростить работу с ними.</p>
<p>После установки GnuPG необходимо внести изменения в параметры Windows. А именно, необходимо добавить в переменную PATH путь к GnuPG. Такие программы, как, например, Psi, ищут gpg в директориях, указанных в этой переменной. Для изменения PATH надо перейти в &#8220;Свойства&#8221; системы (правый клик по &#8220;Мой компьютер&#8221; -&gt; &#8220;Свойства&#8221; или &#8220;Панель управления&#8221;-&gt;&#8221;Система&#8221;) и нажать на кнопку &#8220;Переменные среды&#8221;:</p>
<p><img class="aligncenter size-full wp-image-668" title="Свойства системы" src="http://tingol.ru/wp-content/uploads/2010/05/1.png" alt="" width="293" height="417" /> Появится окошко, в котором, в разделе &#8220;Системные переменные&#8221; находим переменную PATH и жмем на кнопку &#8220;Изменить&#8221;:</p>
<p><img class="aligncenter size-full wp-image-669" title="Переменные среды" src="http://tingol.ru/wp-content/uploads/2010/05/022.png" alt="" width="384" height="429" /></p>
<p>Если значение переменной PATH не оканчивается на &#8220;;&#8221;, дописываем его туда, а также дописываем путь к директории с установленным GnuPG:</p>
<p><img class="aligncenter size-full wp-image-670" title="Переменная PATH" src="http://tingol.ru/wp-content/uploads/2010/05/023.png" alt="" width="359" height="146" /></p>
<p>Жмем на &#8220;ОК&#8221;. Далее необходимо импортировать ключ. В GnuPG Shell есть список серверов, на которые вы можете экспортировать свои ключи,  с них же вы можете их и импортировать. Также вы можете воспользоваться экспортом в файл ключа для экспорта, и импортом ключа из файла для импорта. После импорта ключа остается только задействовать его в той программе, в которой вы хотите шифровать. В моем случае меня интересовал jabber, а точнее, клиентом для него &#8211; Psi. Именно этим клиентом я пользуюсь в Windows. Для использования ключа вам необходимо в свойствах учетной записи jabber назначить ключ:</p>
<p><noindex><a rel="nofollow" target="_blank" href="http://olezhek.net/jexr/aHR0cDovL3RpbmdvbC5ydS93cC1jb250ZW50L3VwbG9hZHMvMjAxMC8wNS8wMjQucG5n"><img class="aligncenter size-medium wp-image-671" title="Назначить ключ в Psi" src="http://tingol.ru/wp-content/uploads/2010/05/024-500x385.png" alt="" width="500" height="385" /></a></noindex>Список ваших ключей будет отображаться в окошке ниже:</p>
<p><noindex><a rel="nofollow" target="_blank" href="http://olezhek.net/jexr/aHR0cDovL3RpbmdvbC5ydS93cC1jb250ZW50L3VwbG9hZHMvMjAxMC8wNS8wMjUucG5n"><img class="aligncenter size-medium wp-image-672" title="Список ключей в настройках Psi" src="http://tingol.ru/wp-content/uploads/2010/05/025-500x331.png" alt="" width="500" height="331" /></a></noindex></p>
<p>Выбираем нужный, сохраняем настройки и соглашаемся с предложением о переподключении по этому аккаунту. В дальнейшем, авторизация будет проходить по паролю этого ключа, а в чатах с пользователями вы сможете задействовать кнопочку шифрования, при условии, что у вашего собеседника тоже настроено шифрование.</p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-05-10-pgpgpg-v-windows.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Сайт недоступен</title>
		<link>http://olezhek.net/2010-05-04-sajt-nedostupen.html</link>
		<comments>http://olezhek.net/2010-05-04-sajt-nedostupen.html#comments</comments>
		<pubDate>Tue, 04 May 2010 12:57:42 +0000</pubDate>
		<dc:creator>Олег</dc:creator>
				<category><![CDATA[Мои новости]]></category>
		<category><![CDATA[домен]]></category>
		<category><![CDATA[переезд]]></category>
		<category><![CDATA[хостер]]></category>

		<guid isPermaLink="false">http://tingol.ru/?p=662</guid>
		<description><![CDATA[Дорогие читатели, я решил Вас предупредить. Дело в том, что сегодня мой блог может быть недоступен некоторое время. Это связано с переносом домена на нового хостера. О переезде я расскажу вам позже, тем более, что есть что рассказать. Заранее извиняюсь за неудобства, связанные с переездом и надеюсь, что все решится достаточно быстро]]></description>
			<content:encoded><![CDATA[<p>Дорогие читатели, я решил Вас предупредить. Дело в том, что сегодня мой блог может быть недоступен некоторое время. Это связано с переносом домена на нового хостера. О переезде я расскажу вам позже, тем более, что есть что рассказать. Заранее извиняюсь за неудобства, связанные с переездом и надеюсь, что все решится достаточно быстро <img src='http://olezhek.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://olezhek.net/2010-05-04-sajt-nedostupen.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
