<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог Александра Руденко aka ras.</title>
	<atom:link href="http://ras.pl.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://ras.pl.ua</link>
	<description>Заметки о себе, семье, городе, профессиональной деятельности...</description>
	<lastBuildDate>Sun, 15 Aug 2010 19:29:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ограничение доступа при помощи mod_auth_mysql</title>
		<link>http://ras.pl.ua/mod_auth_mysql/</link>
		<comments>http://ras.pl.ua/mod_auth_mysql/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 12:06:01 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_auth_mysql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=206</guid>
		<description><![CDATA[Если нужно ограничить доступ к определённому каталогу web-сайта по логину и паролю, причём эти данные нужно хранить в базе данных MySQL, можно использовать модуль web-сервера Apache mod_auth_mysql. В этой статье я покажу простой пример настройки данного модуля, но, я решил немного улучшить защиту, добавив дополнительно к логину и паролю ограничение доступа по IP-адресу, диапазону IP-адресов, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Если нужно ограничить доступ к определённому каталогу web-сайта по логину и паролю, причём эти данные нужно хранить в базе данных <b>MySQL</b>, можно использовать модуль web-сервера <b>Apache</b> <b>mod_auth_mysql</b>. В этой статье я покажу простой пример настройки данного модуля, но, я решил немного улучшить защиту, добавив дополнительно к логину и паролю ограничение доступа по IP-адресу, диапазону IP-адресов, а также будет осуществляться проверка на активность/заблокированность пользователя.<span id="more-206"></span></p>
<p><u>Создание таблицы пользователей, добавление функции:</u></p>
<p style="text-align: justify;">Для начала нужно создать базу данных ползователей (или использовать существующую, в примере используется база test). Я не буду подробно описывать работу с базой данных MySQL, думаю, те кому нужен данный модуль авторизации &#8211; способны изучить документацию к базе данных. Итак, создаём таблицу с пользователями, ввести в консоли базы MySQL (mysql test):</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> accounts <span style="color: #66cc66;">&#40;</span><br />
&nbsp; login VARCHAR<span style="color: #66cc66;">&#40;</span>16<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; password VARCHAR<span style="color: #66cc66;">&#40;</span>64<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; active TINYINT<span style="color: #66cc66;">&#40;</span>1<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> 1<span style="color: #66cc66;">,</span><br />
&nbsp; ip_range TEXT<span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span>login<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span>;</div></div>
<p style="text-align: justify;">Пароль будет храниться в зашифрованном виде. Я использовал функцию unix_md5_crypt() из модуля Crypt::PasswdMD5, язык программирования Perl. Структура таблицы простая: имя пользователя, пароль в зашифрованном виде, признак активности (1 или 0), неактивных аторизировать не будем, и ограничение по IP. Если поле ip_range будет пустым, то проверка IP-адреса не будет осуществляться. Ограничения по IP записываются в следующем формате: если ограничений несколько, они разделяются запятой (без пробелов), если нужно ограничить доступ с диапазона IP-адресов, то диапазон записывается через чёрточку (без пробелов). Пример: &#8220;192.168.0.1,10.0.0.0-10.255.255.255,172.16.0.1&#8243;. Проверить валидность данного поля можно следующим регулярным выражением:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(-((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))?(,((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(-((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))?)*$</div></div>
<p style="text-align: justify;">Ограничения по IP осуществляются написанной мной хранимой функцией MySQL, ввести с консоли MySQL (mysql test):</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> ip_in_range;<br />
DELIMITER <span style="color: #66cc66;">//</span><br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> ip_in_range <span style="color: #66cc66;">&#40;</span>test_ip VARCHAR<span style="color: #66cc66;">&#40;</span>15<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> ip_range TEXT<span style="color: #66cc66;">&#41;</span><br />
RETURNS TINYINT<span style="color: #66cc66;">&#40;</span>1<span style="color: #66cc66;">&#41;</span><br />
BEGIN<br />
&nbsp; DECLARE temp TEXT;<br />
&nbsp; DECLARE coma INT<span style="color: #66cc66;">&#40;</span>10<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; DECLARE ip BIGINT<span style="color: #66cc66;">&#40;</span>10<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">IF</span> ip_range <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">OR</span> ip_range <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span> THEN<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">1</span>;<br />
&nbsp; END <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">SET</span> ip <span style="color: #66cc66;">=</span> INET_ATON<span style="color: #66cc66;">&#40;</span>test_ip<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; REPEAT<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> coma <span style="color: #66cc66;">=</span> LOCATE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">','</span><span style="color: #66cc66;">,</span> ip_range<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> coma <span style="color: #66cc66;">=</span> 0 THEN<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> temp <span style="color: #66cc66;">=</span> ip_range;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> ip_range <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; &nbsp; ELSE<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> temp <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>ip_range<span style="color: #66cc66;">,</span> coma <span style="color: #66cc66;">-</span> 1<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> ip_range <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">RIGHT</span><span style="color: #66cc66;">&#40;</span>ip_range<span style="color: #66cc66;">,</span> LENGTH<span style="color: #66cc66;">&#40;</span>ip_range<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-</span> coma<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; END <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> coma <span style="color: #66cc66;">=</span> LOCATE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">,</span> temp<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> coma <span style="color: #66cc66;">=</span> 0 THEN<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> ip <span style="color: #66cc66;">=</span> INET_ATON<span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">&#41;</span> THEN<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">1</span>;<br />
&nbsp; &nbsp; &nbsp; END <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; &nbsp; ELSE<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> ip <span style="color: #66cc66;">&gt;=</span> INET_ATON<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">,</span> coma <span style="color: #66cc66;">-</span> 1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> ip <span style="color: #66cc66;">&lt;=</span> INET_ATON<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">RIGHT</span><span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">,</span> LENGTH<span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-</span> coma<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">1</span>;<br />
&nbsp; &nbsp; &nbsp; END <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; &nbsp; END <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; UNTIL ip_range <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span> END REPEAT;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">0</span>;<br />
END;<br />
<span style="color: #66cc66;">//</span><br />
DELIMITER ;</div></div>
<p><u>Настройка web-сервера:</u></p>
<p style="text-align: justify;">Настраиваем httpd.conf, нужно добавить модуль и ограничить доступ к каталогу (в случае с тестируемой системой, Fedora 13, был установлен пакет mod_auth_mysql, и модуль автоматически прописался файлом конфигурации /etc/httpd/conf.d/auth_mysql.conf):</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">LoadModule mysql_auth_module modules/mod_auth_mysql.so<br />
<br />
&lt;Directory &quot;/home/user/www&quot;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; Options FollowSymLinks<br />
&nbsp; AllowOverride All<br />
&nbsp; AuthBasicAuthoritative Off<br />
&nbsp; AuthName &quot;Authentication&quot;<br />
&nbsp; AuthType Basic<br />
&nbsp; AuthMySQLEnable On<br />
&nbsp; AuthMySQLHost localhost<br />
&nbsp; AuthMySQLUser user<br />
&nbsp; AuthMySQLPassword password<br />
&nbsp; AuthMySQLDB test<br />
&nbsp; AuthMySQLUserTable accounts<br />
&nbsp; AuthMySQlNameField login<br />
&nbsp; AuthMySQLPasswordField password<br />
&nbsp; AuthMySQLUserCondition &quot;active AND ip_in_range('%a', ip_range)&quot;<br />
&nbsp; AuthMySQLPwEncryption crypt<br />
&nbsp; AuthUserFile /dev/null<br />
&nbsp; Require valid-user<br />
&lt;/Directory&gt;</div></div>
<p style="text-align: justify;">Тут нужно скорректировать базу данных, если нужно (используется test), ну и ввести нужные имя пользователя с паролем (используется user и password).</p>
<p><u>Заключение:</u></p>
<p style="text-align: justify;">Как видно из статьи, всё просто настраивается, даёт возможность гибко ограничивать доступ пользователей, изменяя данные в базе данных. Плюс мы получаем ограничение доступа блокированных пользователей, а так же получаем защиту от подбора паролей, открывая доступ только с определённых хостов.</p>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/mod_auth_mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Резервирование жёсткого диска при помощи dd поверх ssh</title>
		<link>http://ras.pl.ua/backup_with_dd_over_ssh/</link>
		<comments>http://ras.pl.ua/backup_with_dd_over_ssh/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 07:33:03 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[резервирование]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=195</guid>
		<description><![CDATA[Появилась задача &#8211; снять образ с диска ноутбука, залить его на другой компьютер, чтобы переставить систему на ноутбуке, провести определённые тесты, а затем полностью восстановить жёсткий диск ноутбука в состояние до тестов.
Для проведения данной операции, была произведена загрузка на ноутбуке с CD-привода в Fedora Linux 13 rescue, настроена сеть, диски не монтировались. Компьютер, на который [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Появилась задача &#8211; снять образ с диска ноутбука, залить его на другой компьютер, чтобы переставить систему на ноутбуке, провести определённые тесты, а затем полностью восстановить жёсткий диск ноутбука в состояние до тестов.<span id="more-195"></span></p>
<p style="text-align: justify;">Для проведения данной операции, была произведена загрузка на ноутбуке с CD-привода в Fedora Linux 13 rescue, настроена сеть, диски не монтировались. Компьютер, на который будет сбрасываться образ диска ноутбука находится в одной сети с ноутбуком, на нём установлен и настроен демон sshd.</p>
<p><u>Резервирование данных:</u></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #000000; font-weight: bold;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd of=book/sda&quot;</span></div></div>
<p><u>Восстановление данных:</u></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd if=book/sda&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda</div></div>
<p style="text-align: justify;">Здесь backup-host &#8211; компьютер, на который сохраняется образ, ras &#8211; имя пользователя, book/sda &#8211; каталог и название файла бэкапа, /dev/sda &#8211; устройство-жёсткий диск ноутбука. В моей ситуации был не очень быстрый ноутбук, а компьютер, на который осуществлялось резервирование, обладал объёмным жёстким диском. При резервировании можно применять сжатие, тогда получим меньший образ, меньше трафика передачи по сети, если диск или сеть будут узким местом, но возрастёт нагрузка на процессор резервируемой системы, соответственно увеличится время резервирования. Вариации на эту тему:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #000000; font-weight: bold;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gzip</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd of=book/sda.gz&quot;</span><br />
<span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd if=book/sda.gz&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gzip</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda</div></div>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #000000; font-weight: bold;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bzip2</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd of=book/sda.bz2&quot;</span><br />
<span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd if=book/sda.bz2&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bzip2</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda</div></div>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/backup_with_dd_over_ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перевод дисков после инсталляции Proxmox в RAID1 (mirror)</title>
		<link>http://ras.pl.ua/proxmox_raid1_howto/</link>
		<comments>http://ras.pl.ua/proxmox_raid1_howto/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 12:25:40 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[proxmox]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[raid1]]></category>
		<category><![CDATA[зеркало]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=184</guid>
		<description><![CDATA[В повседневной работе появилась привычка резервировать данные. Обязательно RAID 1 (зеркало), резервное копирование. После установки Proxmox VE в дефолтном режиме, но с двумя дисками &#8211; было обнаружено что система разметила и использует только один диск, что неприемлемо. Ниже приведёно краткое руководство по переводу разделов диска в режим RAID 1. Итак, приступим (данное руководство делалось для [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В повседневной работе появилась привычка резервировать данные. Обязательно RAID 1 (зеркало), резервное копирование. После установки <strong>Proxmox VE</strong> в дефолтном режиме, но с двумя дисками &#8211; было обнаружено что система разметила и использует только один диск, что неприемлемо. Ниже приведёно краткое руководство по переводу разделов диска в режим RAID 1.<span id="more-184"></span> Итак, приступим (данное руководство делалось для версии 1.5 со стандартным ядром).</p>
<p style="text-align: justify;">Установить <strong>Proxmox</strong> только на один первый диск (/dev/sda).</p>
<p style="text-align: justify;">Доустановить необходимые пакеты для работы с RAID, создания рамдиска с драйверами:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> mdadm initramfs-tools</div></div>
<p style="text-align: justify;">Загрузить модуль raid1:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">modprobe raid1</div></div>
<p style="text-align: justify;">Записать необходимые модули в /etc/modprobe.conf, пересоздать initrd:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #7a0874; font-weight: bold;">alias</span> md-personality-3 raid1 <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>modprobe.conf<br />
mkinitramfs <span style="color: #660033;">-o</span> <span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>initrd.img-<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">uname</span> -r<span style="color: #000000; font-weight: bold;">`</span>-raid1 <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>mapper<span style="color: #000000; font-weight: bold;">/</span>pve-root</div></div>
<p style="text-align: justify;">Отредактировать GRUB, чтобы загрузка производилась с новым initrd:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">title &nbsp;Proxmox Virtual Environment, kernel 2.6.18-2-pve on RAID1<br />
root &nbsp; (hd0,0)<br />
kernel /vmlinuz-2.6.18-2-pve root=/dev/mapper/pve-root ro.<br />
initrd /initrd.img-2.6.18-2-pve-raid1</div></div>
<p style="text-align: justify;">Разметить второй диск (/dev/sdb) примерно так:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp;Device Boot &nbsp; &nbsp; &nbsp;Start &nbsp; &nbsp; &nbsp; &nbsp; End &nbsp; &nbsp; &nbsp;Blocks &nbsp; Id &nbsp;System<br />
/dev/sdb1 &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;63 &nbsp; &nbsp; &nbsp;506016 &nbsp; fd &nbsp;Linux raid autodetect<br />
/dev/sdb2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;64 &nbsp; &nbsp; &nbsp; 60801 &nbsp; 487877985 &nbsp; fd &nbsp;Linux raid autodetect</div></div>
<p style="text-align: justify;">Т. е. первый раздел под /boot &#8211; 512 Mb, остальное под второй раздел для LVM (данный раздел не должен быть меньше используемого на первом диске).</p>
<p style="text-align: justify;">Далее создаются RAID-разделы с использованием пока только второго диска:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mdadm <span style="color: #660033;">--create</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0 <span style="color: #660033;">--level</span>=1 <span style="color: #660033;">--raid-devices</span>=2 missing <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1<br />
mdadm <span style="color: #660033;">--create</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1 <span style="color: #660033;">--level</span>=1 <span style="color: #660033;">--raid-devices</span>=2 missing <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb2<br />
mdadm <span style="color: #660033;">--detail</span> <span style="color: #660033;">--scan</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mdadm<span style="color: #000000; font-weight: bold;">/</span>mdadm.conf</div></div>
<p style="text-align: justify;">Теперь нужно создать LVM-раздел на втором диске, добавить его в группу pve, переместить данные с LVM-раздела первого диска, на RAID-LVM-раздел второго диска, убрать из LVM первый диск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">pvcreate <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1<br />
vgextend pve <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1<br />
pvmove <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda2 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1<br />
vgreduce pve <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda2</div></div>
<p style="text-align: justify;">Теперь нужно подготовить RAID-раздел второго диска, скопировать на него /boot:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mkfs.ext3 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0 <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-ax</span> <span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/*</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">rmdir</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0</div></div>
<p style="text-align: justify;">Исправить /etc/fstab, поменять запись о /boot так, чтобы она указывала на RAID-раздел:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/dev/md0 /boot ext3 defaults 0 1</div></div>
<p style="text-align: justify;">Можно перемонтировать /boot:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>boot<br />
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>boot</div></div>
<p style="text-align: justify;">Переразметить первый диск в соответствии со вторым (у меня так почему-то не получилось, переразмечал вручную):</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sfdsk -d /dev/sdb | sfdisk /dev/sda</div></div>
<p style="text-align: justify;">Теперь можно добавлять в RAID-массивы разделы первого диска:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mdadm <span style="color: #660033;">--add</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda1<br />
mdadm <span style="color: #660033;">--add</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda2</div></div>
<p style="text-align: justify;">Нужно подождать пока RAID синхронизируется, контролировать процесс можно при помощи такой команды:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">watch <span style="color: #660033;">-n</span> <span style="color: #000000;">1</span> <span style="color: #ff0000;">&quot;cat /proc/mdstat&quot;</span></div></div>
<p style="text-align: justify;">Теперь нужно переинсталировать загрузчик (GRUB) на обоих дисках:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">grub<br />
&gt; find /grub/stage1<br />
find /grub/stage1<br />
(hd0,0)<br />
(hd1,0)<br />
&gt; root (hd0,0)<br />
&gt; setup (hd0)<br />
&gt; root (hd1,0)<br />
&gt; setup (hd1)<br />
&gt; quit</div></div>
<p style="text-align: justify;">Или такой вариант (не проверял лично):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">grub-install <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda<br />
grub-install <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb</div></div>
<p style="text-align: justify;">Всё, система работает на RAID1 (зеркале).</p>
<p><strong>Ссылки:</strong></p>
<ul>
<li><a href="http://pve.proxmox.com/wiki/Downloads" target="_blank">pve.proxmox.com/wiki/Downloads</a> &#8211; сайт загрузки Proxmox</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/proxmox_raid1_howto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Конвертирование контактов из формата Google в Nokia PC Suite</title>
		<link>http://ras.pl.ua/csv_google_to_nokia/</link>
		<comments>http://ras.pl.ua/csv_google_to_nokia/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 14:19:45 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Программное обеспечение]]></category>
		<category><![CDATA[6300]]></category>
		<category><![CDATA[activesync]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=172</guid>
		<description><![CDATA[Возникла у меня необходимость перенести контакты из Google в телефон Nokia 6300, который был преобретён на замену старому смарту T-Mobile SDA (на Windows Mobile 6), чтобы звонить через другого оператора. И захотелось держать контакты на обоих телефонах, периодически синхронизировать. Основной телефон у меня &#8211; коммуникатор на основе Windows Mobile 6. Тут всё просто, настроил синхронизацию [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Возникла у меня необходимость перенести контакты из Google в телефон Nokia 6300, который был преобретён на замену старому смарту T-Mobile SDA (на Windows Mobile 6), чтобы звонить через другого оператора. И захотелось держать контакты на обоих телефонах, периодически синхронизировать. Основной телефон у меня &#8211; коммуникатор на основе Windows Mobile 6. <span id="more-172"></span>Тут всё просто, настроил синхронизацию в ActiveSync коммуникатора с сервером Google по этой документации: <a href="http://www.google.com/support/mobile/bin/answer.py?hl=en&amp;answer=138636" target="_blank">Mail, Calendar &amp; Contacts Sync: Setting Up Your Windows Mobile Phone for Google Sync</a>. Дальше попытался сделать то же самое с Nokia 6300 по этой документации: <a href="http://www.google.com/support/mobile/bin/answer.py?answer=98265&amp;topic=15015" target="_blank">Device Set Up Instructions: Nokia 6300</a>. Сначала долго настраивал Интернет, получилось, но синхронизация так и не заработала. Гугление дало понять что я в этом не одинок.</p>
<p style="text-align: justify;">После попыток синхронизировать с чем-то контакты в Nokia PC Suite &#8211; пришло решение написать конвертер, которым я и собираюсь поделиться. Написан он на языке Perl, для работы необходимы библиотеки: Encode, Text::Iconv. Процедура такая. В контактах Google делается экспорт в CSV-файл, этот файл конвертируется моей программой в формат Nokia PC Suite, и далее полученный CSV-файл импортируется в контакты Nokia PC Suite.</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Программа конвертирует не все поля</span>, прошу обратить на это внимание.</p>
<p><strong>Скачать</strong> (версия 0.2b от 29.04.2010)<strong><br />
</strong></p>
<ul>
<li><a href="/perl/csv_google2nokia.gz">csv_google2nokia.gz</a> (2.6 кб)</li>
</ul>
<p><strong>On-Line конвертирование</strong></p>
<p style="text-align: justify;">On-Line конвертирование на базе данной программы, если не хочется скачивать/устанавливать, доустанавливать модули Perl-а &#8211; выберите файл в формате Google и нажмите &#8220;Конвертировать&#8221;.</p>
<form method="post" action="/perl/csv_google2nokia.cgi" enctype="multipart/form-data">
<input type="file" name="source">
<input type="submit" value="Конвертировать">
</form>
<p><strong>Сылки<br />
</strong></p>
<ul>
<li><a href="http://www.nokia.ua/" target="_blank">www.nokia.ua</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/csv_google_to_nokia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка и настройка transmission-daemon в CentOS</title>
		<link>http://ras.pl.ua/install_and_configure_transmission-daemon_in_centos/</link>
		<comments>http://ras.pl.ua/install_and_configure_transmission-daemon_in_centos/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 11:57:59 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Программное обеспечение]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[transmission]]></category>
		<category><![CDATA[transmission-daemon]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=150</guid>
		<description><![CDATA[Есть у меня домашний Linux-сервер под CentOS, выполняющий роль шлюза в сеть Интернет, файлового хранилища с FTP и Samba, и другие функции, необходимые системному администратору, которые проблематично реализовать на базе аппаратного маршрутизатора. Вот появилась идея установить и демон torrent-клиент на данный сервер, чтобы качал себе и раздавал необходимые мне файлы.
Раньше у меня был опыт работы [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Есть у меня домашний Linux-сервер под CentOS, выполняющий роль шлюза в сеть Интернет, файлового хранилища с FTP и Samba, и другие функции, необходимые системному администратору, которые проблематично реализовать на базе аппаратного маршрутизатора. Вот появилась идея установить и демон torrent-клиент на данный сервер, чтобы качал себе и раздавал необходимые мне файлы.<span id="more-150"></span></p>
<p style="text-align: justify;">Раньше у меня был опыт работы с <a href="http://mldonkey.sourceforge.net/" target="_blank">MLDonkey</a>, но вспоминая его ужасный web-интерфейс и монстроидальность &#8211; отказался сразу. Далее взгляд пал на <a href="http://libtorrent.rakshasa.no/" target="_blank">rTorrent</a>, знакомый его использовал на маршрутизаторе D-Link DIR-320 с модифицированной прошивкой от Олега. Очень порадовал красивый web-интерфейс, похожий на <a href="http://www.utorrent.com/" target="_blank">µTorrent</a>. Но, т. к. это всё-таки не демон, а консольное приложение, глянув на метод его запуска и связывания с web-интерфейсом &#8211; решено было отказаться и от него.</p>
<p style="text-align: justify;">В итоге выбор пал на <a href="http://www.transmissionbt.com/" target="_blank">Transmission</a>, опять же, тот же знакомый уже его успешно использовал, так же выяснилось, что данный клиент имеет демон для запуска без GUI. Сначала была установлена и настроена старая версия из репозитария EPEL transmission-1.34-1.el5.x86_64, но работать с данной версией было крайне неприятно, многое не поддерживалось, GUI-клиент не совсем корректно работал с данной версией, не была доступна часть функций. Собрать новую версию обычным способом не получалось из-за того, что в CentOS используются более старые версии нужных для сборки transmission библиотек. Ещё одним фактором использования новой версии является поддержка ей списка трекеров. На этом заканчивается лирическое отступление, опишу сборку и настройку.</p>
<p><strong>Сборка</strong></p>
<p>Установка необходимых для сборки пакетов:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">yum <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">gcc</span> gcc-c++ <span style="color: #c20cb9; font-weight: bold;">m4</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">automake</span> libtool <span style="color: #c20cb9; font-weight: bold;">gettext</span> openssl-devel</div></div>
<p>Подготовка каталога, получение исходного кода:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>src<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> transmission<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> transmission<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>pkgconfig.freedesktop.org<span style="color: #000000; font-weight: bold;">/</span>releases<span style="color: #000000; font-weight: bold;">/</span>pkg-config-0.23.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>ftp.gnome.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>gnome<span style="color: #000000; font-weight: bold;">/</span>sources<span style="color: #000000; font-weight: bold;">/</span>intltool<span style="color: #000000; font-weight: bold;">/</span>0.40<span style="color: #000000; font-weight: bold;">/</span>intltool-0.40.6.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>curl.haxx.se<span style="color: #000000; font-weight: bold;">/</span>download<span style="color: #000000; font-weight: bold;">/</span>curl-7.19.7.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>mirrors.m0k.org<span style="color: #000000; font-weight: bold;">/</span>transmission<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>transmission-1.80.tar.bz2<br />
<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzfv</span> pkg-config-0.23.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzfv</span> intltool-0.40.6.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzfv</span> curl-7.19.7.tar.gz<br />
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xjfv</span> transmission-1.80.tar.bz2</div></div>
<p>Сборка:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> pkg-config-0.23<br />
.<span style="color: #000000; font-weight: bold;">/</span>configure<br />
<span style="color: #c20cb9; font-weight: bold;">make</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span><br />
<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>intltool-0.40.6<br />
.<span style="color: #000000; font-weight: bold;">/</span>configure<br />
<span style="color: #c20cb9; font-weight: bold;">make</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span><br />
<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>curl-7.19.7<br />
.<span style="color: #000000; font-weight: bold;">/</span>configure<br />
<span style="color: #c20cb9; font-weight: bold;">make</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span><br />
<br />
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PKG_CONFIG_PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>pkgconfig<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>transmission-1.80<br />
.<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--enable-daemon</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></div></div>
<p>Настройка web-интерфейса для httpd, файл <u>/etc/httpd/conf/httpd.conf</u>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Alias /transmission/web /usr/local/share/transmission/web<br />
RewriteEngine on<br />
RewriteRule /transmission[/]?$ /transmission/web [R=permanent]<br />
ProxyPass /transmission http://127.0.0.1:9091/transmission<br />
ProxyPassReverse /transmission http://127.0.0.1:9091/transmission<br />
&lt;Location /transmission&gt;<br />
&nbsp; Options None<br />
&nbsp; Order allow,deny<br />
&nbsp; Allow from 127.0.0.1<br />
&nbsp; &lt;IfModule expires_module&gt;<br />
&nbsp; &nbsp; ExpiresActive On<br />
&nbsp; &nbsp; ExpiresByType image/gif A43200<br />
&nbsp; &nbsp; ExpiresByType image/png A43200<br />
&nbsp; &nbsp; ExpiresByType application/javascript A43200<br />
&nbsp; &nbsp; ExpiresByType text/css A43200<br />
&nbsp; &lt;/IfModule&gt;<br />
&lt;/Location&gt;</div></div>
<p>В &#8220;Allow from&#8221; укажите IP, с которого вы хотите получить доступ, в своём случае, я использовал &#8220;Authtype Basic&#8221;, т. е. захожу по паролю. Перезапуск httpd (если возникли ошибки, смотрим каких модулей не хватает, подправляем файл конфигурации):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">service httpd restart</div></div>
<p>Далее я столкнулся с тем, что не нашёл нормального init-скрипта, написал свой. Он ещё находится в стадии тестирования, но как показала практика работает нормально, запуск демона будет от пользователя root. Да, знаю что это не правильно, но пока так <u>/etc/rc.d/init.d/transmission</u>:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
<span style="color: #666666; font-style: italic;">#</span><br />
<span style="color: #666666; font-style: italic;"># transmission Start/Stop the transmission-daemon daemon.</span><br />
<span style="color: #666666; font-style: italic;">#</span><br />
<span style="color: #666666; font-style: italic;"># chkconfig: 2345 99 01</span><br />
<span style="color: #666666; font-style: italic;"># description: transmission-daemon is a daemon-based Transmission session</span><br />
<span style="color: #666666; font-style: italic;">#              that can be controlled via RPC commands from</span><br />
<span style="color: #666666; font-style: italic;">#              transmission’s web interface or transmission-remote</span><br />
<span style="color: #666666; font-style: italic;"># processname: transmission-daemon</span><br />
<span style="color: #666666; font-style: italic;"># pidfile: /var/run/transmission.pid</span><br />
<br />
<span style="color: #666666; font-style: italic;"># Source function library.</span><br />
. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>functions<br />
<br />
<span style="color: #007800;">options</span>=<span style="color: #ff0000;">'--allowed 127.0.0.1 --no-auth'</span><br />
<br />
<span style="color: #007800;">processname</span>=<span style="color: #ff0000;">'/usr/local/bin/transmission-daemon'</span><br />
<span style="color: #c20cb9; font-weight: bold;">lockfile</span>=<span style="color: #ff0000;">'/var/lock/subsys/transmission'</span><br />
<span style="color: #007800;">pidfile</span>=<span style="color: #ff0000;">'/var/run/transmission.pid'</span><br />
<span style="color: #007800;">user</span>=<span style="color: #ff0000;">'root'</span><br />
<span style="color: #007800;">home</span>=<span style="color: #000000; font-weight: bold;">`/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-E</span> <span style="color: #ff0000;">&quot;^<span style="color: #007800;">$user</span>:&quot;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">passwd</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-d</span> : <span style="color: #660033;">-f</span> 6<span style="color: #000000; font-weight: bold;">`</span><br />
<br />
start<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HOME</span>=<span style="color: #007800;">$home</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> $<span style="color: #ff0000;">&quot;Starting <span style="color: #007800;">$processname</span>: &quot;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #007800;">$lockfile</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #007800;">$pidfile</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>proc<span style="color: #000000; font-weight: bold;">/`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$pidfile</span><span style="color: #000000; font-weight: bold;">`</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> $<span style="color: #ff0000;">&quot;cannot start <span style="color: #007800;">$processname</span>: <span style="color: #007800;">$processname</span> is already running.&quot;</span><br />
&nbsp; &nbsp; &nbsp; failure $<span style="color: #ff0000;">&quot;cannot start <span style="color: #007800;">$processname</span>: <span style="color: #007800;">$processname</span> already running.&quot;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">return</span> 1<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">fi</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">fi</span><br />
&nbsp; daemon <span style="color: #007800;">$processname</span> <span style="color: #007800;">$options</span><br />
&nbsp; <span style="color: #007800;">RETVAL</span>=<span style="color: #007800;">$?</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$RETVAL</span> <span style="color: #660033;">-eq</span> 0 <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #007800;">$lockfile</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$RETVAL</span> <span style="color: #660033;">-eq</span> 0 <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">ps</span> ax <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-w</span> <span style="color: #007800;">$processname</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-v</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print($1)}'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$pidfile</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #007800;">$RETVAL</span><br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
<br />
stop<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HOME</span>=<span style="color: #007800;">$home</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> $<span style="color: #ff0000;">&quot;Stopping <span style="color: #007800;">$processname</span>: &quot;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-e</span> <span style="color: #007800;">$lockfile</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-n</span> $<span style="color: #ff0000;">&quot;cannot stop <span style="color: #007800;">$processname</span>: <span style="color: #007800;">$processname</span> is not running.&quot;</span><br />
&nbsp; &nbsp; failure $<span style="color: #ff0000;">&quot;cannot stop <span style="color: #007800;">$processname</span>: <span style="color: #007800;">$processname</span> is not running.&quot;</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">1</span>;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">fi</span><br />
&nbsp; killproc <span style="color: #007800;">$processname</span><br />
&nbsp; <span style="color: #007800;">RETVAL</span>=<span style="color: #007800;">$?</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$RETVAL</span> <span style="color: #660033;">-eq</span> 0 <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$lockfile</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$RETVAL</span> <span style="color: #660033;">-eq</span> 0 <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$pidfile</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #007800;">$RETVAL</span><br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">case</span> $1 <span style="color: #000000; font-weight: bold;">in</span><br />
&nbsp; start<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
&nbsp; &nbsp; start<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">;;</span><br />
&nbsp; stop<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
&nbsp; &nbsp; stop<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">;;</span><br />
&nbsp; restart<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
&nbsp; &nbsp; stop<br />
&nbsp; &nbsp; start<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">;;</span><br />
&nbsp; status<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
&nbsp; &nbsp; status <span style="color: #007800;">$processname</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">;;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: $0 start|stop|restart|status&quot;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">;;</span><br />
<span style="color: #000000; font-weight: bold;">esac</span></div></div>
<p>Установка прав на запуск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>transmission</div></div>
<p>Добавление в автозапуск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">chkconfig transmission on</div></div>
<p>Запуск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">service transmission start</div></div>
<p>Если всё выполнено правильно, демон запущен и работает.</p>
<p><strong>Настройка</strong></p>
<p style="text-align: justify;">Теперь нужно настроить демон, основные настройки доступны с web-интерфейса. Нужно открыть в браузере <u>http://ваш-web-сервер/transmission</u>, слева внизу есть кнопка настроек, выбрать Preferences. Указать путь куда будут сохраняться файлы, номер порта и не забыть открыть его в фаерволле для входящих соединений. На второй вкладке указать ограничение скорости. Всё, можно работать, добавлять torrent-файлы, наблюдать процесс скачивания.</p>
<p style="text-align: justify;">Все настройки сохраняются в каталоге <u>/root/.config/transmission-daemon</u>. Там же хранятся torrent-файлы и информация о текущих загрузках.</p>
<p style="text-align: justify;">Ещё я столкнулся с тем, что со временем демон начинает отъедать много ресурсов процессора, ест память, перезапуск помогает. Поэтому небольшой костыль в <u>/etc/crontab</u>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">05 3 * * * root /etc/rc.d/init.d/transmission restart &gt;/dev/null 2&gt;&amp;1</div></div>
<p><strong>GUI</strong></p>
<p style="text-align: justify;">Есть неплохой GUI-интерфейс для transmission-daemon кроме родного &#8211; <a href="http://code.google.com/p/transmisson-remote-gui/" target="_blank">Transmission Remote GUI</a>. Данный клиент является кроссплатформенным, есть сборки как под Linux, так и под Windows, написан на <a href="http://www.lazarus.freepascal.org/" target="_blank">Lazarus</a>. Для того, чтобы данный клиент мог подключиться к демону &#8211; я добавил в скрипт запуска, строку параметров после 127.0.0.1, через запятую &#8211; IP-адрес домашнего компьютера.</p>
<p><strong>Итог</strong></p>
<p style="text-align: justify;">В результате проделанной работы я получил довольно удобную систему: демон качает, по самбе получаю доступ к скачанным файлам. При работе с загрузками используется довольно удобный GUI.</p>
<p style="text-align: justify;">Готов выслушать замечания, ваши рекомендации по улучшению скрипта запуска, дополнения, уточнения материала данной статьи.</p>
<p><strong>Ссылки</strong></p>
<ul>
<li><a href="http://www.transmissionbt.com/" target="_blank">www.transmissionbt.com</a></li>
<li><a href="http://trac.transmissionbt.com/wiki/Building" target="_blank">trac.transmissionbt.com/wiki/Building</a></li>
<li><a href="http://code.google.com/p/transmisson-remote-gui/" target="_blank">code.google.com/p/transmisson-remote-gui</a></li>
</ul>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<p><span id="main" style="visibility: visible;"><span id="search" style="visibility: visible;"> </span></span></p>
<h3 class="r"><a class="l" onmousedown="return rwt(this,'','','res','1','AFQjCNHnDXK_GdW2krhzwQouvUOQ_SJ9PQ','','0CAgQFjAA')" href="http://www.utorrent.com/">µTorrent</a></h3>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/install_and_configure_transmission-daemon_in_centos/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Перевод серверов с KOI8-R на UTF-8</title>
		<link>http://ras.pl.ua/koi8-r_to_utf-8/</link>
		<comments>http://ras.pl.ua/koi8-r_to_utf-8/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:11:33 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[KOI8-R]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[перекодировка]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=135</guid>
		<description><![CDATA[Лучше поздно чем никогда, решил перевести пару серверов на UTF-8, в связи с чем возникла проблема перекодировки русских имён файлов и текстовых файлов. Решил поделиться скриптами. Итак, для перекодировки имён файлов с KOI8-R в UTF-8, вот такой скрипт, который перекодирует файлы в текущем каталоге.
convert_filenames_from_koi8-r_to_utf-8.sh:
#!/bin/bash

ls -1 &#124; while read name ; do
newname=`echo $name &#124; iconv -f [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Лучше поздно чем никогда, решил перевести пару серверов на UTF-8, в связи с чем возникла проблема перекодировки русских имён файлов и текстовых файлов. Решил поделиться скриптами. Итак, для перекодировки имён файлов с KOI8-R в UTF-8, вот такой скрипт, который перекодирует файлы в текущем каталоге.<span id="more-135"></span></p>
<p><span style="text-decoration: underline;">convert_filenames_from_koi8-r_to_utf-8.sh:</span></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/bash</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-1</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #c20cb9; font-weight: bold;">read</span> name ; <span style="color: #000000; font-weight: bold;">do</span><br />
<span style="color: #007800;">newname</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$name</span> <span style="color: #000000; font-weight: bold;">|</span> iconv <span style="color: #660033;">-f</span> KOI8-R <span style="color: #660033;">-t</span> UTF-8<span style="color: #000000; font-weight: bold;">`</span><br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$name</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;<span style="color: #007800;">$newname</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$name</span> =&gt; <span style="color: #007800;">$newname</span>&quot;</span><br />
&nbsp; <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$name</span>&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$newname</span>&quot;</span><br />
<span style="color: #000000; font-weight: bold;">fi</span><br />
<span style="color: #000000; font-weight: bold;">done</span></div></div>
<p style="text-align: justify;">Для перекодировки файлов решено было расширить меню Midnight Commander-а (mc) соответствующим пунктом. Т. е. выбираются файлы, которые нужно перекодировать, нажимается кнопка F2, выбирается последний пункт. Для внесения изменений в меню Midnight Commander-а, необходимо добавить в конец файла <span style="text-decoration: underline;">/etc/mc/mc.menu</span> следующие строки:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">= t r<br />
+ ! t t<br />
i       Convert from KOI8-R to UTF-8 current file<br />
&nbsp; &nbsp; &nbsp; &nbsp; cp %f %f.KOI8-R<br />
&nbsp; &nbsp; &nbsp; &nbsp; iconv -f KOI8-R -t UTF-8 &lt; %f.KOI8-R &gt; %f<br />
&nbsp; &nbsp; &nbsp; &nbsp; rm -f %f.KOI8-R<br />
<br />
+ t t<br />
I       Convert from KOI8-R to UTF-8 tagged files<br />
&nbsp; &nbsp; &nbsp; &nbsp; for i in %t<br />
&nbsp; &nbsp; &nbsp; &nbsp; do<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cp $i $i.KOI8-R<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iconv -f KOI8-R -t UTF-8 &lt; $i.KOI8-R &gt; $i<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rm -f $i.KOI8-R<br />
&nbsp; &nbsp; &nbsp; &nbsp; done</div></div>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/koi8-r_to_utf-8/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Анекдоты</title>
		<link>http://ras.pl.ua/anecdots/</link>
		<comments>http://ras.pl.ua/anecdots/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 11:32:03 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Юмор]]></category>
		<category><![CDATA[админ]]></category>
		<category><![CDATA[анекдот]]></category>
		<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=126</guid>
		<description><![CDATA[Анекдоты про админов, программистов.
***
Умом админа не понять
И мозг линейкой не измерить.
У них особенная стать -
В админа можно только верить.
***
Админская примета: играться с файрволом на удаленной машине &#8211; это к дороге.
]]></description>
			<content:encoded><![CDATA[<p>Анекдоты про админов, программистов.</p>
<p>***</p>
<p>Умом админа не понять<br />
И мозг линейкой не измерить.<br />
У них особенная стать -<br />
В админа можно только верить.<span id="more-126"></span></p>
<p>***</p>
<p>Админская примета: играться с файрволом на удаленной машине &#8211; это к дороге.</p>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/anecdots/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Программа Песенник</title>
		<link>http://ras.pl.ua/songbook/</link>
		<comments>http://ras.pl.ua/songbook/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 15:42:09 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Программное обеспечение]]></category>
		<category><![CDATA[songbook]]></category>
		<category><![CDATA[аккорды]]></category>
		<category><![CDATA[песенник]]></category>
		<category><![CDATA[песни]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=111</guid>
		<description><![CDATA[Программа предназначена для тех кто играет на гитаре и имеет необходимость хранить много текстов песен с аккордами. Программа позволяет упорядочить архив по алфавиту, удобно просмотреть песни с раскраской аккордов, комментариев, добавить новые, отредактировать существующие. Так же имеется ряд сервисных функций, таких как автоформатирование, автоматическая вставка заголовков. Есть система справки, описывающая все детали работы с программой. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Программа предназначена для тех кто играет на гитаре и имеет необходимость хранить много текстов песен с аккордами. Программа позволяет упорядочить архив по алфавиту, удобно просмотреть песни с раскраской аккордов, комментариев, добавить новые, отредактировать существующие. <span id="more-111"></span>Так же имеется ряд сервисных функций, таких как автоформатирование, автоматическая вставка заголовков. Есть система справки, описывающая все детали работы с программой. Все песни хранятся в отдельных текстовых файлах в папках (что обеспечивает целостность информации) и могут быть экспортированы и, скажем, пересланы кому-либо.</p>
<p style="text-align: justify;">Программа бесплатна. Набранные песни для песенника можно загрузить с сервера песен: <a href="http://ras.pl.ua/songs" target="_blank">ras.pl.ua/songs</a>, который ведётся одним из первых проявивших внимание к программе пользователей &#8211; Романом Веселовским.</p>
<p style="text-align: justify;">На данный момент разрабатывается новая версия программы другим разработчиком &#8211; Алексеем Шитовым (<a href="http://alexbit.info/" target="_blank">alexbit.info</a>). Официальная страница новой версии программы: <a href="http://song-book.ru/" target="_blank">song-book.ru</a>.</p>
<p><strong>Требования к системе</strong></p>
<ul>
<li>Windows 2000+</li>
<li>Internet Explorer 5+</li>
<li>128+ Мб. оперативной памяти</li>
</ul>
<p><strong>Скриншот</strong></p>

<a href="http://ras.pl.ua/wp-content/gallery/screenshots/songbook.png" title="" class="shutterset_singlepic51" >
	<img class="ngg-singlepic ngg-center" src="http://ras.pl.ua/wp-content/gallery/cache/51__400x300_songbook.png" alt="songbook.png" title="songbook.png" />
</a>

<p><strong>Скачать</strong></p>
<ul>
<li><a href="http://test.ras.pl.ua/files/songbook.zip"></a><a href="http://ras.pl.ua/wp-content/uploads/2009/06/songbook.zip">songbook.zip</a> (639 кб., версия 2.8.14)</li>
</ul>
<p><strong>Инсталяция</strong></p>
<ul style="text-align: justify;">
<li>Распакуйте zip-архив программы в любую папку на диске;</li>
<li>Создайте ярлык для файла &#8220;SongBook.exe&#8221;, переименуйте его в &#8220;Песенник&#8221; и поместите в меню &#8220;Программы&#8221;.</li>
</ul>
<p><strong>Изменения в новой версии</strong></p>
<ul style="text-align: justify;">
<li> Исправлена небольшая ошибка в навигации по дереву.</li>
</ul>
<p><strong>Ссылки</strong></p>
<ul>
<li><a href="http://ras.pl.ua/songs" target="_blank">ras.pl.ua/songs</a></li>
<li><a href="http://song-book.ru/" target="_blank">song-book.ru</a></li>
<li><a href="http://alexbit.info/" target="_blank">alexbit.info</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/songbook/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Происхождение вида</title>
		<link>http://ras.pl.ua/origin_of_species/</link>
		<comments>http://ras.pl.ua/origin_of_species/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 08:47:06 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Юмор]]></category>
		<category><![CDATA[программист]]></category>
		<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=65</guid>
		<description><![CDATA[Казалось бы, на вопpос о том, откуда на нашей планете взялись пpогpаммисты, наука дала ответ давно и однозначно: пpогpаммисты пpоизошли от обезьяны. Когда дpевняя обезьяна не смогла pазломать кокосовый оpех, она pешила использовать для этой цели компьютеp. Уже тот пеpвый компьютеp обладал весьма мощным пpоцессоpом, пpедставлявшим собой кусок кpемня весом в несколько килогpаммов, поэтому оpех [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Казалось бы, на вопpос о том, откуда на нашей планете взялись пpогpаммисты, наука дала ответ давно и однозначно: пpогpаммисты пpоизошли от обезьяны. Когда дpевняя обезьяна не смогла pазломать кокосовый оpех, она pешила использовать для этой цели компьютеp. Уже тот пеpвый компьютеp обладал весьма мощным пpоцессоpом, пpедставлявшим собой кусок кpемня весом в несколько килогpаммов, поэтому оpех был pасколот после пеpвых же удаpов.<span id="more-65"></span>Обоснованность этой гипотезы подтвеpждает тот факт, что пpогpаммисты до сих поp пользуются кpемниевыми пpоцессоpами и называют их &#8220;камнями&#8221; (пpавда, совpеменные пpогpаммисты значительно слабее своих пеpвобытных пpедков, и их пpоцессоpы весят намного меньше), а одним из наиболее почетных занятий, демонстpиpующих высокую квалификацию, у пpогpаммистов является взлом, или кpак (crack) &#8211; звукоподpажательное слово, имитиpующее тpеск скоpлупы pаскалываемого оpеха. Hаучная теоpия пpоисхождения пpогpаммиста имеет немало и дpугих подтвеpждений, в частности, найденные в местах обитания дpевних обезьянопpогpаммистов окаменелости восьмидюймовых дискет со следами жевания и мышиные кости. Пpи pаскопках в Силиконовой долине (США) был найден даже хоpошо сохpанившийся скелет пpогpаммиста в хаpактеpной скpюченной позе; как полагают ученые, он умеp от стаpости, дожидаясь, пока откомпилиpуется его пpогpамма. Вообще, анатомическое сходство между обезьяной и пpогpаммистом очевидно всякому, кто наблюдал последнего в естественной сpеде обитания (за компьютеpом).</p>
<p style="text-align: justify;">Тем не менее, в последнее вpемя усилилась кpитика в адpес научной теоpии &#8211; пpавда, в основном со стоpоны людей, далеких от науки. Так, пpедставители pелигиозного напpавления кpеационистов утвеpждают, что пpогpаммист не мог появиться путем естественной эволюции и был сотвоpен. Помимо отсылок к pелигиозным текстам, котоpые, естественно, не могут убедить никого, кpоме их самих, кpеационисты пpиводят и такой аpгумент: &#8220;Взгляните на окpужающую нас пpиpоду. Как гаpмонично в ней все устpоено, как pазумно и целесообpазно! Мыслимое ли дело, чтобы такое глючное существо, как пpогpаммист, было частью этой пpиpоды? Совеpшенно очевидно, что его создал искусственно Пеpвопpогpаммист по обpазу и подобию своему, пpичем, по всей видимости, сpоки сдачи пpоекта поджимали.&#8221; Этот довод, однако, опpовеpгается элементаpным возpажением: если пpогpаммистов создал Пеpвопpогpаммист, и они не могли появиться на свет сами, то кто, в таком случае, создал Пеpвопpогpаммиста? Hа этот вопpос кpеационисты не могут внятно ответить и лишь боpмочут что-то насчет &#8220;непостижимости исходников Пеpвопpогpаммиста&#8221;, пpичем пpедставители еpетических напpавлений (имеющие неожиданно высокую поддеpжку) утвеpждают, что в своих исходниках не мог pазобpаться даже Он сам. Тем не менее, кpеационисты пpодолжают яpостные нападки на эволюционную теоpию, договаpиваясь даже до того, что все доказательства в ее пользу неубедительны или фальсифициpованы. Действительно, в истоpии науки был досадный случай фальсификации (пеpфокаpта, найденная в Пицундском обезьяннике, оказалось подбpошенной студентом факультета кибеpнетики, подpабатывавшим там ночным стоpожем), но этот случай единичный и давно pазоблаченный самими учеными.</p>
<p style="text-align: justify;">Пpедставители так называемых &#8220;эзотеpических&#8221; напpавлений пpедлагают свои веpсии. В частности, доктоp Эpнст Балдашев пытается вывеpнуть наизнанку эволюционную теоpию, утвеpждая, что пpогpаммисты пpоизошли от человека, являясь, таким обpазом, четвеpтой (после лемуpийцев, атлантов и людей) стадией дегpадации дpевней пpаpасы высших духовных существ. Hа этой стадии, по Балдашеву, мозг усыхает настолько, что пpогpаммисты вынуждены использовать вместо него компьютеp. Доказательства своей теоpии Балдашев надеется найти, дизассемблиpуя глиняные таблички и наскальные надписи.</p>
<p style="text-align: justify;">Своеобpазный синтез научной и эзотеpической концепции пpедлагают некотоpые любители научной фантастики. По их мнению, пpогpаммисты пpоизошли от скpещивания земных обезьян со сломанными pоботами, некогда выбpошенными за ненадобностью посещавшей Землю инопланетной экспедицией.</p>
<p style="text-align: justify;">В общем, хотя наиболее убедительной по-пpежнему остается официальная научная теоpия, можно не сомневаться, что споpы вокpуг пpоисхождения пpогpаммистов будут пpодолжаться еще долго. И даже если они когда-нибудь утихнут, останется еще загадка пpоисхождения веб-дизайнеpов&#8230;</p>
<p style="text-align: right;">Юpий Hестеpенко</p>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/origin_of_species/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Советы служащим по правильному использованию ценного времени Системного Администратора</title>
		<link>http://ras.pl.ua/valuable_time_system_administrator/</link>
		<comments>http://ras.pl.ua/valuable_time_system_administrator/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 08:39:26 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Юмор]]></category>
		<category><![CDATA[сисадмин]]></category>
		<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=62</guid>
		<description><![CDATA[
Hикогда не записывайте сообщения об ошибках. Просто нажмите &#8220;ОК&#8221; или перезапустите компьютер. СисАдмин любит угадывать, каким было сообщение об ошибке.
Когда говорите о своем компьютере, используйте такие термины, как &#8220;Ящик&#8221; и &#8220;Штука&#8221;.
Когда вы получаете по почте EXE-файл, немедленно его открывайте. CисАдмин любит время от времени убедиться, что антивирусные программы работают нормально.
Когда отправляете кому-нибудь по почте документ, [...]]]></description>
			<content:encoded><![CDATA[<ul style="text-align: justify;">
<li>Hикогда не записывайте сообщения об ошибках. Просто нажмите &#8220;ОК&#8221; или перезапустите компьютер. СисАдмин любит угадывать, каким было сообщение об ошибке.</li>
<li>Когда говорите о своем компьютере, используйте такие термины, как &#8220;Ящик&#8221; и &#8220;Штука&#8221;.</li>
<li>Когда вы получаете по почте EXE-файл, немедленно его открывайте. CисАдмин любит время от времени убедиться, что антивирусные программы работают нормально.<span id="more-62"></span></li>
<li>Когда отправляете кому-нибудь по почте документ, даже не думайте, какое программное обеспечение у адресатов.</li>
<li>Когда СисАдмин говорит, что сейчас придет, выйдете из системы и идите пить кофе. Для него не проблема вспомнить ваш пароль.</li>
<li>Когда вы зовете СисАдмина, чтобы он передвинул ваш компьютер, обязательно оставьте его похороненным под полутонной открыток, детских фотографий, чучел животных, сухих цветов и рекламных календариков. У СисАдмина нет своей жизни, и он находит ее, выхватывая мимолетные картины вашей.</li>
<li>Когда СисАдмин присылает вам почту, помеченную как &#8220;Очень важно&#8221; или &#8220;Примите Меры&#8221;, сразу удаляйте ее. Он наверняка просто проверяет новую функцию почтовой программы.</li>
<li>Когда СисАдмин обедает у себя или в столовой, войдите и опорожните на него все проблемы и ожидайте немедленного ответа. СисАдмин существует только для того, чтобы обслуживать и всегда готов думать о починке компьютеров.</li>
<li>Когда СисАдмин выходит попить воды или прогуливается на улице, найдите его и задайте вопрос о компьютерах. Единственная цель его прогулок &#8211; разыскивать тех служащих, у которых нет электронной почты или телефона.</li>
<li>Отправляйте срочную почту ВСЮ В ВЕРХHЕМ РЕГИСТРЕ. Почтовый сервер вылавливает ее и помечает для внеочередной доставки.</li>
<li>Когда не работает копир, зовите СисАдмина. Это ведь тоже электроника, не так ли?</li>
<li>Когда ваш домашний компьютер сообщает &#8220;Hет сигнала в линии&#8221;, позвоните СисАдмину. Он даже может исправлять проблемы с телефоном на расстоянии.</li>
<li>Когда ваш домашний ПК не в порядке, оставьте его на стуле СисАдмина без имени, без телефона, и без описания проблемы. Он очень любит хорошие мистификации.</li>
<li>Когда СисАдмин рассказывает вам по телефону порядок изменения настройки, читайте газету. СисАдмин на самом деле не имеет в виду, что вы должны что-то делать, он просто любит слушать свою речь.</li>
<li>Когда компания предлагает обучение в связи с апгрейдом операционной системы, не утруждайте себя посещением. СисАдмин всегда рядом, чтобы помочь.</li>
<li>Когда принтер не печатает, отправьте задание на печать заново, по меньшей мере 20 раз. Задания на печать часто исчезают в космос без причины.</li>
<li>Когда принтер все еще не печатает после 20 попыток, отправьте это задание на все принтеры офиса. Один из них должен работать.</li>
<li>Hе пользуйтесь справкой. Справка для тех, кто не соображает, не так ли?</li>
<li>Если вы посещаете вечерние курсы по информатике, не стесняйтесь продемонстрировать свою растущую компетентность, обновив сетевые драйверы себе и всем коллегам. СисАдмин будет благодарен за сверхурочную работу, когда ему придется остаться до 2-3 часов ночи, исправляя все это.</li>
<li>Когда СисАдмин исправляет ваш компьютер в четверть второго, ешьте ваш гамбургер с сыром у него на глазах. Он работает лучше, когда у него слегка кружится голова от голода.</li>
<li>Когда СисАдмин спрашивает, не устанавливали ли вы новые программы, лгите. Hикого не касается, что там у вас на компьютере, не так ли?</li>
<li>Если провод мыши задевает за фотографию вашей собаки, поднимите монитор и проденьте провод под ним. Эти прочные провода для мышей разработаны, чтобы выдерживать 20 килограмм компьютерного монитора, поставленного на них.</li>
<li>Если пробел на клавиатуре не работает, упрекайте СисАдмина в том, что вам не покупают новую. Черт, это же не ваша вина, что в ней под клавишами пол килограмма засохших крошек бутербродов, скрепок и больших липких пятен кетчупа.</li>
<li>Когда вы видите сообщение &#8220;Вы уверены?&#8221;, нажимайте &#8220;Да&#8221; как можно быстрее. Черт, если бы вы не были уверены, вы бы этого не делали, не так ли?</li>
<li>Совершенно свободно говорите &#8220;Я ничего не знаю обо всей этой компьютерной ерунде&#8221;. СисАдмина никогда не беспокоит, когда сферу его профессиональной компетенции называют ерундой.</li>
<li>Когда вам нужно добавить в принтер бумагу, зовите СисАдмина. Менять бумагу &#8211; это сугубо обслуживающая работа, и как Хьюлетт Паккард, так и Лексмарк рекомендуют, чтобы она проделывалась только сертифицированными сетевыми администраторами с уймой свободного времени.</li>
<li>Когда вы получаете 130-мегабайтный файл с фильмом, разошлите его всем, как срочное вложение. У СисАдмина полно дискового пространства и процессорной мощности на его новом почтовом сервере специально для таких важных вещей.</li>
<li>Даже не думайте о том, чтобы разбить большое задание на печать на несколько небольших. Hе дай Бог, кто-нибудь украдет одну страничку из вашей 427-страничной таблицы Excel.</li>
<li>Когда вы встречаете СисАдмина в бакалее в воскресенье днем, задайте ему компьютерный вопрос. Он работает 24 часа в сутки, 7 дней в неделю, даже когда покупает в магазине туалетную бумагу и собачий корм.</li>
<li>Если ваш сын студент-программист, пусть приходит по выходным и делает свои проекты на вашем офисном компьютере. СисАдмин будет рядом и поможет, когда краденая копия Visual Basic 6.0 вашего сына опрокинет и убьет базу данных Access.</li>
<li>Когда вы приносите ваш новый домашний компьютер безымянной марки СисАдмину в офис для бесплатного ремонта, скажите, как срочно он должен его починить, чтобы вы могли снова играть в EverQuest. Он примется за него сразу потому, что в офисе у него так много свободного времени! Все равно все знают, что все, что он делает целыми днями &#8211; это шарит в Интернете.</li>
<li>Hикогда не благодарите СисАдмина. Он обожает все ремонтировать и получать за это зарплату.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/valuable_time_system_administrator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
