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

<channel>
	<title>Мастерская интернет-разработчика &#187; Инструменты</title>
	<atom:link href="http://adw0rd.ru/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://adw0rd.ru</link>
	<description>Блог Михаила Андреева (aka adw0rd)</description>
	<lastBuildDate>Wed, 28 Jul 2010 18:10:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Установка и настройка Trac на FreeBSD</title>
		<link>http://adw0rd.ru/2009/trac-freebsd/</link>
		<comments>http://adw0rd.ru/2009/trac-freebsd/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 07:00:27 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Hooks]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Svn]]></category>
		<category><![CDATA[Trac]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=3873</guid>
		<description><![CDATA[Trac — это инструмент управления проектами и отслеживания ошибок в программном обеспечении. Он использует минималистичный веб-интерфейс, основанный на технологии wiki, и позволяет организовать перекрёстные гиперссылки между базой данных зарегистрированных ошибок, системой управления версиями и wiki-страницами. Это даёт возможность использовать Trac в том числе и как веб-интерфейс для доступа к системе контроля версий subversion, а так [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/trac-freebsd/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/07/trac.png" alt="trac" title="trac" width="214" height="61" class="alignright size-full wp-image-3876" /></a></p>
<p><strong>Trac</strong> — это инструмент управления проектами и отслеживания ошибок в программном обеспечении. Он использует минималистичный веб-интерфейс, основанный на технологии <a href="/tag/wiki/">wiki</a>, и позволяет организовать перекрёстные гиперссылки между базой данных зарегистрированных ошибок, системой управления версиями и <strong>wiki</strong>-страницами.</p>
<p>Это даёт возможность использовать <strong>Trac</strong> в том числе и как веб-интерфейс для доступа к системе контроля версий <a href="/tag/subversion/">subversion</a>, а так же, через плагины, к <strong>Mercurial</strong>, <strong>git</strong>, <strong>Bazaar</strong> и другим. <strong>Trac</strong> написан на языке программирования <strong>python</strong> и в настоящее время распространяется по модифицированной лицензии <strong>BSD</strong>.</p>
<p><noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/Trac" >http://ru.wikipedia.org/wiki/Trac</a></noindex></p>
<h3>Возможности</h3>
<ul>
<li>Возможность просмотра всех изменений в svn и trac-проекте.</li>
<li>Можно создавать подпроекты, например для портала это будет &laquo;Разработать сервис фотографий&raquo;, &laquo;Разработка форума&raquo; или &laquo;Реконструкция поискового-модуля&raquo;. И для каждого будут отдельные группы тикетов.</li>
<li>Просмотреть изменения кодов проекта в svn-ревизиях и сравнивание их.</li>
<li>Создание, просмотр и закрытие тикетов.</li>
<li>Управление пользователями, участвующие в разработке.</li>
<li>Wiki-движок, с помощью которого можно создавать как справочную информацию, так и документацию по проекту в целом.</li>
</ul>
<p>Так же имеется <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/PluginList" >куча плагинов для Trac</a></noindex>, с помощью которых вы легко расширите функционал!</p>
<h3>Установка</h3>
<p>Для развертывания <strong>Trac</strong> нам понадобится:</p>
<ul>
<li><strong>Apache 2.2</strong>&nbsp;&mdash; но вы можете так же развернуть и на Apache 1.3 или на Nginx, к примеру</li>
<li><strong>mod_python3</strong>&nbsp;&mdash; это для Apache 2, а для 1.3 надо просто &laquo;mod_python&raquo;</li>
<li><strong>Subversion</strong>&nbsp;&mdash; либо другие системы контроля версия, например Mercurial, git или Bazaar</li>
<li><strong>py-subversion</strong>&nbsp;&mdash; для работы из Python с Subversion </li>
<li><strong>MySQL</strong>&nbsp;&mdash; можете также использовать SQLite или PgSQL. Подробнее <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/DatabaseBackend" >http://trac.edgewall.org/wiki/DatabaseBackend</a></noindex></li>
<li>Ну и сам <strong>Trac</strong> разумеется :)</li>
</ul>
<p><span id="more-3873"></span></p>
<h4>Установка mod_python3 на Apache 2.2</h4>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># cd /usr/ports/www/mod_python3/</span><br />
<span style="color: #666666; font-style: italic;"># make install clean</span></div></div>
<p>Зайдите и проверьте установился ли модуль <strong>mod_python.so</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># cd /usr/local/libexec/apache22/</span><br />
<span style="color: #666666; font-style: italic;"># ll | grep mod_python</span></div></div>
<p>Если он есть, то впишите в конфиг <strong>httpd.conf</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">LoadModule python_module libexec/apache22/mod_python.so</div></div>
<p>Более подробно о mod_python: <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/TracModPython" >http://trac.edgewall.org/wiki/TracModPython</a></noindex></p>
<h4>Установка Trac</h4>
<p><strong>Trac</strong> ставиться очень просто:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># cd /usr/ports/www/trac</span><br />
<span style="color: #666666; font-style: italic;"># make install clean</span></div></div>
<p>Если вы хотите управлять настройками <strong>trac-проекта</strong> и правами пользователей из <strong>web-панели</strong>, то установите плагин ”trac-webadmin”.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># cd /usr/ports/www/trac-webadmin/</span><br />
<span style="color: #666666; font-style: italic;"># make install clean</span></div></div>
<p>Более подробно о WebAdmin: <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/WebAdmin" >http://trac.edgewall.org/wiki/WebAdmin</a></noindex></p>
<h4>Использование MySQL</h4>
<p>Если вы хотите использовать <strong>MySQL</strong> для хранения данных <strong>Trac</strong>, то вам надо установить <strong>MySQL-python</strong> драйвер. Если вам не надо, то можете использовать <strong>SQLite</strong> и пропустить установку <strong>MySQL-python</strong>, которую я опишу далее.</p>
<p>Для этого надо установить драйвер <noindex><a rel="nofollow" href="http://sourceforge.net/projects/mysql-python/" >MySQL-python</a></noindex>.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><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;"># cd /tmp</span><br />
<span style="color: #666666; font-style: italic;"># fetch http://downloads.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz</span><br />
<span style="color: #666666; font-style: italic;"># tar -xvf MySQL-python-1.2.2.tar.gz</span><br />
<span style="color: #666666; font-style: italic;"># cd MySQL-python-1.2.2</span><br />
<span style="color: #666666; font-style: italic;"># python setup.py build</span><br />
<span style="color: #666666; font-style: italic;"># python setup.py install</span></div></td></tr></tbody></table></div>
<p>Если вы используете <strong>Apache</strong>, то перезагрузите его, дабы достучатся до <strong>mod_python</strong>.</p>
<p>Теперь создадим базу данных и пользователя для <strong>Trac</strong>:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">DATABASE</span> trac <span style="color: #993333; font-weight: bold;">DEFAULT</span> CHARACTER <span style="color: #993333; font-weight: bold;">SET</span> utf8 COLLATE utf8_bin; <br />
<span style="color: #993333; font-weight: bold;">CREATE</span> USER tracuser <span style="color: #993333; font-weight: bold;">IDENTIFIED</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #ff0000;">'password'</span>;<br />
<span style="color: #993333; font-weight: bold;">GRANT</span> <span style="color: #993333; font-weight: bold;">ALL</span> <span style="color: #993333; font-weight: bold;">ON</span> trac<span style="color: #66cc66;">.*</span> <span style="color: #993333; font-weight: bold;">TO</span> tracuser;<br />
<span style="color: #993333; font-weight: bold;">FLUSH</span> PRIVILEGES;</div></div>
<p>Не забудьте заменить пароль в запросе на придуманный вами.</p>
<h4>Установка Subversion с поддержкой Python</h4>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># cd /usr/ports/devel/subversion </span><br />
<span style="color: #666666; font-style: italic;"># make WITH_PYTHON=true WITH_BERKELEYDB=db42 WITH_MOD_DAV_SVN= install</span></div></div>
<p>Более подробно о ключах: <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/TracFaq#i-am-getting-svn-import-errors-with-trac-what-s-going-on" >http://trac.edgewall.org/wiki/TracFaq</a></noindex></p>
<h4>Установка py-subversion</h4>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># cd /usr/ports/devel/py-subversion </span><br />
<span style="color: #666666; font-style: italic;"># make FORCE_PKG_REGISTER= install clean</span></div></div>
<p>Более подробно о ключе: <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/TracSubversion#unsupported-vcs" >http://trac.edgewall.org/wiki/TracSubversion</a></noindex></p>
<h4>Настройка Apache</h4>
<p>Отредактируем конфиг Apache и добавим новый виртуальный хост:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;VirtualHost *:80&gt;<br />
&nbsp; &nbsp; DocumentRoot &quot;/home/trac&quot;<br />
&nbsp; &nbsp; ServerName trac.example.com<br />
&nbsp; &nbsp; &lt;Location /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; SetHandler mod_python<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonInterpreter main_interpreter<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonHandler trac.web.modpython_frontend<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonOption TracEnv /home/trac/example.com<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonOption TracUriRoot /<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; AuthType Basic<br />
&nbsp; &nbsp; &nbsp; &nbsp; AuthName &quot;Trac Server&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; AuthUserFile /home/trac/example.com/.htpasswd<br />
&nbsp; &nbsp; &nbsp; &nbsp; Require valid-user<br />
&nbsp; &nbsp; &lt;/Location&gt;<br />
&lt;/VirtualHost&gt;</div></td></tr></tbody></table></div>
<p>Я делаю с обязательной авторизацией на <strong>Trac</strong>, дабы сторонние пользователи не заходили. Если вы хотите чтобы <strong>Trac</strong> был открыт на всеобщее обозрение, то можно эту часть:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AuthType Basic<br />
AuthName &quot;Trac Server&quot;<br />
AuthUserFile /home/trac/example.com/.htpasswd<br />
Require valid-user</div></div>
<p>Вынести в отдельный &lt;Location&gt;, например вот так получится в результате:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;VirtualHost *:80&gt;<br />
&nbsp; &nbsp; DocumentRoot &quot;/home/trac&quot;<br />
&nbsp; &nbsp; ServerName trac.example.com<br />
&nbsp; &nbsp; &lt;Location /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; SetHandler mod_python<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonInterpreter main_interpreter<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonHandler trac.web.modpython_frontend<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonOption TracEnv /home/trac/example.com<br />
&nbsp; &nbsp; &nbsp; &nbsp; PythonOption TracUriRoot /<br />
&nbsp; &nbsp; &lt;/Location&gt;<br />
&nbsp; &nbsp; &lt;Location /login&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; AuthType Basic<br />
&nbsp; &nbsp; &nbsp; &nbsp; AuthName &quot;Trac Server&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; AuthUserFile /home/trac/example.com/.htpasswd<br />
&nbsp; &nbsp; &nbsp; &nbsp; Require valid-user<br />
&nbsp; &nbsp; &lt;/Location&gt;<br />
&lt;/VirtualHost&gt;</div></td></tr></tbody></table></div>
<p>Также, я использую пароли от <strong>Subversion</strong> для авторизации, если посмотрите статью <a href="http://adw0rd.ru/2009/freebsd-subversion/" >FreeBSD. Установка и настройка Subversion</a>, то у нас был путь &laquo;/home/svn/svn-auth-file&raquo;, вот его и будем использовать в качестве <strong>AuthUserFile</strong>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">...<br />
AuthUserFile /home/svn/svn-auth-file<br />
...</div></div>
<h3>Настройка Trac</h3>
<p>Для начала нам надо создать trac-проект и настроить его.</p>
<h4>Создание trac-проекта</h4>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># trac-admin /home/trac/example.com initenv</span></div></div>
<p><strong>initenv</strong> — создание и использование интерактивного режима</p>
<p>Более подробно о командах trac-admin: <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/TracAdmin" >http://trac.edgewall.org/wiki/TracAdmin</a></noindex></p>
<p>Далее, укажите имя проекта и адрес для соединения с <strong>MySQL</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql://tracuser:password@localhost:3306/trac</div></div>
<p>Тип используемого сервера контроля версия &laquo;svn&raquo; и путь до svn-репозитория вашего проекта</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/home/svn/repos/example.com</div></div>
<p>Подробнее <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/TracEnvironment" >http://trac.edgewall.org/wiki/TracEnvironment</a></noindex></p>
<h4>Настройка trac-проекта</h4>
<p>Отредактируйте файл &laquo;/home/trac/example.com/conf/trac.ini&raquo; и измените следующие директивы:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">default_charset = utf-8<br />
base_url = http://trac.example.com</div></div>
<p>В конце файла добавляем активацию плагина &laquo;webadmin&raquo;:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[components]<br />
webadmin.* = enabled</div></div>
<p>Подробнее по всем директивам <noindex><a rel="nofollow" href="http://trac.edgewall.org/wiki/TracIni" >http://trac.edgewall.org/wiki/TracIni</a></noindex></p>
<blockquote class="info">
<p>
Если вы заходите на адрес &laquo;trac.example.com&raquo; и видите:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Permission denied: '/home/trac/example.com/.egg-cache'</div></div>
<p>то, настройте права на запись для каталога trac-проекта.
</p>
</blockquote>
<h4>Назначаем права администратора одному из пользователей</h4>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># trac-admin /home/trac/example.com permission add имя_пользователя TRAC_ADMIN</span></div></div>
<h4>Синхронизацию trac-проекта с svn-проектом</h4>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># trac-admin /home/trac/example.com resync</span></div></div>
<h3>Автоматическое оповещения svn-изменений для trac-тикетов</h3>
<p>И на последок, если вы используете <noindex><a href="/tag/hooks/">svn-хуки</a>, как я уже описывал в статье <a href="http://adw0rd.ru/2009/subversion-hooks/" >Subversion. Автоматическое обновление проекта при помощи хуков</a></noindex>, то добавьте эти строки в <strong>post-commit</strong> для оповещения <strong>trac-тикетов</strong>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">TRAC_ENV=&quot;/home/trac/example.com&quot;<br />
/usr/bin/python /usr/local/bin/trac-post-commit-hook -p &quot;$TRAC_ENV&quot; -r &quot;$REV&quot;</div></div>
<h3>Резюме</h3>
<p>Вот и все, <strong>Trac</strong> установлен и настроен для комфортной работы, в последующих статьях буду рассказывать как настроить <strong>Mylyn</strong>, что бы непосредственно из <strong>IDE</strong> работать с <strong>Trac</strong> и управлять всеми подпроектами и тикетами!</p>
<p>Если есть вопросы, то добро пожаловать в комментарии!</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/trac-freebsd/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Subversion. Автоматическое обновление проекта при помощи хуков</title>
		<link>http://adw0rd.ru/2009/subversion-hooks/</link>
		<comments>http://adw0rd.ru/2009/subversion-hooks/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:54:04 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Hooks]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Svn]]></category>
		<category><![CDATA[Триггеры]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=3593</guid>
		<description><![CDATA[В большинстве случаев, при разработке веб-проекта требуется автоматически обновлять рабочую версию, на помощь на приходят свн-хуки! Начнем с того, что у нас есть веб-проект и нам необходимо создать для него репозиторий, как это сделать я рассказывал в статье &#171;FreeBSD. Установка и настройка Subversion&#187;. Далее, мы будем обновлять наш проект только через репозиторий! Подготовка проекта Сначала [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/subversion-hooks/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/06/subversion-hooks.png" alt="subversion-hooks" title="subversion-hooks" width="302" height="76" class="alignright size-full wp-image-3600" /></a></p>
<p>В большинстве случаев, при разработке веб-проекта требуется автоматически обновлять рабочую версию, на помощь на приходят свн-хуки!</p>
<p>Начнем с того, что у нас есть веб-проект и нам необходимо создать для него репозиторий, как это сделать я рассказывал в статье &laquo;<a href="http://adw0rd.ru/2009/freebsd-subversion/" >FreeBSD. Установка и настройка Subversion</a>&raquo;.</p>
<p>Далее, мы будем обновлять наш проект только через репозиторий!</p>
<h3>Подготовка проекта</h3>
<p>Сначала сделаем импорт веб-проекта в репозиторий:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># svn import /_project_ file:///svn/repos/_project_</div></div>
<p>Теперь удалим все файлы проекта (<strong>не забывайте делать бекапы</strong> на всякий случай), и сделаем чекаут:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># cd /_project<br />
# rm -rf *<br />
# svn checkout file:///svn/repos/_project_</div></div>
<h3>Hooks</h3>
<p>Хуки срабатывают на разные события <strong>Subversion</strong>, вот некоторые из них:</p>
<ul>
<li><strong>start-commit</strong>&nbsp;&mdash; запускается до начала транзакции, может быть использован для проверки прав.</li>
<li><strong>pre-commit</strong>&nbsp;&mdash; запускается в конце транзакции, но до commit, часто используется для валидации данных, например для проверки не пустых лог-собщений.</li>
<li><strong>post-commit</strong>&nbsp;&mdash; запускается после транзакции, может быть использовано для отправки e-mail или для резервирования хранилища.</li>
<li><strong>pre-revprop-change</strong>&nbsp;&mdash; запускается до изменений в ревизии, могут быть использованы для проверки доступа.</li>
<li><strong>post-revprop-change</strong>&nbsp;&mdash; запускается после изменений в ревизии, могут быть использованы для отправки e-mail или для резервирования изменений.</li>
</ul>
<p>Есть еще &laquo;post-lock&raquo;, &laquo;post-unlock&raquo;, &laquo;pre-lock&raquo; и &laquo;pre-unlock&raquo;, как видно из названий он срабатывают при блокировке. Я не буду их разбирать, потомучто они у меня интереса пока не вызвали.</p>
<p><span id="more-3593"></span></p>
<h3>Post-Commit Hook</h3>
<p>Этот хук срабатывает после любого <strong>commit&#39;a</strong> репозитория, для его активации надо скопировать шаблон и наделить правами на запуск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># cd /svn/repos/_project_/hooks</span><br />
<span style="color: #666666; font-style: italic;"># cp post-commit.tmpl post-commit</span><br />
<span style="color: #666666; font-style: italic;"># chmod u+x post-commit</span></div></div>
<p>Далее, отредактируем файл <strong>post-commit</strong>, закомментируем все лишнее и добавим наши команды для обновления проекта:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cd /_project_ &amp;&amp; /usr/local/bin/svn update</div></div>
<p>Примерного такой вид в результате будет иметь содержимое ваше хука:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#!/bin/sh<br />
<br />
#<br />
# ... тут куча комментариев ...<br />
#<br />
<br />
REPOS=&quot;$1&quot;<br />
REV=&quot;$2&quot;<br />
<br />
cd /_project_ &amp;&amp; /usr/local/bin/svn update<br />
<br />
#commit-email.pl &quot;$REPOS&quot; &quot;$REV&quot; commit-watchers@example.org<br />
#log-commit.py --repository &quot;$REPOS&quot; --revision &quot;$REV&quot;</div></div>
<p>далее, проверим работает ли хук от имени под которым запущен <strong>Subversion</strong> и выполним его:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># su www<br />
# ./post-commit</div></div>
<p>Если ответ примерно такой:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">At revision тут_номер_ревизии</div></div>
<p>то все в порядке!</p>
<p>А если нет, то у вас ошибка в хуке, пишите в комментарии&nbsp;&mdash; помогу.</p>
<p>Собственно хук готов, теперь его необходимо проверить, сделайте <strong>commit</strong> и посмотрите, обновился ли ваш проект&nbsp;&mdash; если нет, то скорее всего проблемы с правами на запись файлов вашего проекта.</p>
<p>Необходимо разрешить права на запись файлов веб-проекта пользователю/группе от которой запущен <strong>subversion</strong>, скорее всего это <strong>www</strong>.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># cd /_project<br />
# chown -R www:www *<br />
# chown -R www:www .*<br />
# chmod -R 775 *<br />
# chmod -R 775 .svn</div></div>
<p><strong>P.S.</strong> Спасибо <noindex><a rel="nofollow" href="http://clear.helldude.ru/" >дуду</a></noindex> за помощь в тестировании хук :)</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/subversion-hooks/feed/</wfw:commentRss>
		<slash:comments>81</slash:comments>
		</item>
		<item>
		<title>Утилита mysqldump и шпаргалка по параметрам</title>
		<link>http://adw0rd.ru/2009/mysqldump-and-cheat-sheet/</link>
		<comments>http://adw0rd.ru/2009/mysqldump-and-cheat-sheet/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 06:25:48 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[MyISAM]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Бэкап]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=2441</guid>
		<description><![CDATA[Утилита mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц. Так же mysqldump имеет возможность развертывания баз данных из созданного sql-файла. Создание дампа Разберем пример простейшее использования, задампим базу данных [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/cheat-sheet-mysqldump/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/06/mysql-dump.png" alt="mysql-dump" title="mysql-dump" width="208" height="155" class="alignright size-full wp-image-3355" /></a></p>
<p>Утилита <strong>mysqldump</strong> позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц. </p>
<p>Так же <strong>mysqldump</strong> имеет возможность развертывания баз данных из созданного sql-файла.</p>
<h3>Создание дампа</h3>
<p>Разберем пример простейшее использования, задампим базу данных &laquo;database&raquo; при помощи перенаправления потока в файл &laquo;database.sql&raquo;:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysqldump <span style="color: #660033;">-uroot</span> -h82.82.82.82 <span style="color: #660033;">-p</span> database <span style="color: #000000; font-weight: bold;">&gt;</span> database.sql</div></div>
<p>где:</p>
<ul>
<li><strong>-u</strong> или <strong>-–user=...</strong>&nbsp;&mdash; имя пользователя</li>
<li><strong>-h</strong> или <strong>--host=...</strong>&nbsp;&mdash; удаленный хост (для локального хоста можно опустить этот параметр)</li>
<li><strong>-p</strong> или <strong>--password</strong>&nbsp;&mdash; запросить пароль</li>
<li><strong>database</strong>&nbsp;&mdash; имя базы данных</li>
<li><strong>database.sql</strong>&nbsp;&mdash; файл для дампа</li>
</ul>
<p><span id="more-2441"></span><br />
Для того чтобы сделать дамп несколько баз данных, необходимо использовать параметр <strong>--databases</strong> (или сокращенно <strong>-B</strong>), пример:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysqldump <span style="color: #660033;">-uroot</span> -h82.82.82.82 <span style="color: #660033;">-p</span> <span style="color: #660033;">-B</span> database1 database2 database3 <span style="color: #000000; font-weight: bold;">&gt;</span> databases.sql</div></div>
<p>А для того чтобы сделать дамп всех баз данных, необходимо использовать параметр <strong>--all-databases</strong> (или сокращенно <strong>-A</strong>), пример:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysqldump <span style="color: #660033;">-uroot</span> -h82.82.82.82 <span style="color: #660033;">-p</span> <span style="color: #660033;">-A</span> <span style="color: #000000; font-weight: bold;">&gt;</span> all-databases.sql</div></div>
<h3>Развертывание дампа</h3>
<p>Перенаправляем поток в обратную сторону и развертываем базу данных:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql <span style="color: #660033;">-uroot</span> -h82.82.82.82 <span style="color: #660033;">-p</span> database <span style="color: #000000; font-weight: bold;">&lt;</span> database.sql</div></div>
<p>Или через mysql-console:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql<span style="color: #000000; font-weight: bold;">&gt;</span> use database;<br />
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">source</span> database.sql</div></div>
<h3>Пример использование некоторых параметров</h3>
<p>Например, нам нужны данные с &laquo;продакшен версии базы&raquo; для &laquo;версии разработчика&raquo;, то есть нам нужна &laquo;песочница&raquo;. Выбираем не более 100 записей:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysqldump -uroot -h82.82.82.82 -p --where=&quot;true limit 100&quot; database &gt; database.sql</div></div>
<p>Или нам нужна только структура, без данных:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysqldump -uroot -h82.82.82.82 -p --no-data database &gt; database.sql</div></div>
<p>Примеры навеяны постом Александра Макарова&nbsp;&mdash; <noindex><a rel="nofollow" href="http://rmcreative.ru/blog/post/ljogkiy-damp-mysql" >http://rmcreative.ru/blog/post/ljogkiy-damp-mysql</a></noindex></p>
<h3>Шпаргалка по параметрам</h3>
<p>Приведу некоторые параметры, которые могут понадобится при работе с утилитой <strong>mysqldump</strong>.</p>
<blockquote>
<dl>
<dt><b>--add-drop-database</b></dt>
<dd>Добавляет оператор <b>DROP DATABASE</b> перед каждым оператором <b>CREATE DATABASE</b>.</dd>
<dt><b>--add-drop-table</b></dt>
<dd>Добавляет оператор <b>DROP TABLE</b> перед каждым оператором <b>CREATE TABLE</b>.</dd>
<dt><b>--add-locks</b></dt>
<dd>Добавляет оператор <b>LOCK TABLES</b> перед выполнением и <b>UNLOCK TABLE</b> после выполнения каждого дампа таблицы (для ускорения доступа к MySQL).
</dd>
<dt><b>--all-databases, -A</b></dt>
<dd>Сохраняет все таблицы из всех баз данных, которые находятся под управлением текущего сервера.</dd>
<dt><b>--allow-keywords</b></dt>
<dd>Разрешить создавать имена столбцов, которые совпадают с ключевыми словами. Отсутствие конфликтов обеспечивается прибавлением имени таблицы в качестве префикса к имени каждого столбца.</dd>
<dt><b>--comments, -i</b></dt>
<dd>Данный параметр позволяет добавить в дамп дополнительную информацию, такую, как версия <strong>mysqldump</strong>, версия MySQL, имя хоста, на котором расположен сервер MySQL.</dd>
<dt><b>--compact</b></dt>
<dd>Данный параметр требует от <strong>mysqldump</strong> создать дамп, используя как можно более компактный формат. Параметр является противоположным <strong>--comments</strong>.</dd>
<dt><b>--compatible=name</b></dt>
<dd>Параметр генерирует вывод, который совместим с другими СУБД или более старыми версиями MySQL. Вместо ключевого слова <strong>name</strong> можно использовать: <em>&laquo;ansi&raquo;, &laquo;mysql323&raquo;, &laquo;mysql40&raquo;, &laquo;postgresql&raquo;, &laquo;oracle&raquo;, &laquo;mssql&raquo;, &laquo;db2&raquo;, &laquo;maxdb&raquo;, &laquo;no_key_options&raquo;, &laquo;no_table_options&raquo;, &laquo;no_field_options&raquo;</em>. Можно использовать несколько значений, разделив их запятыми.</dd>
<dt><b>--complete-insert, -c</b></dt>
<dd>Используется полная форма оператора <b>INSERT</b> (с именами столбцов).</dd>
<dt><b>--create-options</b></dt>
<dd>Добавляет дополнительную информацию в операторы <b>CREATE TABLE</b>. Это может быть тип таблицы, начальное значение <b>AUTO_INCREMENT</b> и другие параметры.</dd>
<dt><b>--databases, -B</b></dt>
<dd>Параметр позволяет указать имена нескольких баз данных, для которых необходимо создать дамп.</dd>
<dt><b>--delayed</b></dt>
<dd>Использовать команду <b>INSERT DELAYED</b> при вставке строк.</dd>
<dt><b>--delete-master-logs</b></dt>
<dd>На главном сервере репликации автоматически удаляются бинарные логи (logbin) после того, как дамп был успешно создан при помощи mysqldump. Этот параметр автоматически включает параметр &laquo;--master-data&raquo;.</dd>
<dt><b>--disable-keys, -K</b></dt>
<dd>Для каждой таблицы, окружает оператор <b>INSERT</b> выражениями <b>/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;</b> и <b>/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;</b> в выводе результата дампа. Это ускорит загрузку данных на сервер для таблиц типа <b>MyISAM</b>, так как индексы создаются после внесения всех данных.</dd>
<dt><b>--extended-insert, -e</b></dt>
<dd>Использовать команду <b>INSERT</b> с новым многострочным синтаксисом (повышает<br />
компактность и быстродействие операторов ввода).</dd>
<dt><b>--flush-logs, -F</b></dt>
<dd>Записать на диск данные системного журнала из буфера MySQL-сервера перед началом выполнения дампа.</dd>
<dt><b>--force, -f</b></dt>
<dd>Продолжать даже если в процессе создания дампа произошла ошибка.</dd>
<dt><b>--hex-blob</b></dt>
<dd>Параметр позволяет представить бинарные данные в полях типа <b>BINARY, VARBINARY, BLOB и BIT</b> в шестнадцатеричном формате. Так последовательность &laquo;abc&raquo; будет заменена на 0&times;616263.</dd>
<dt><b>--ignore-table=db_name.tbl_name</b></dt>
<dd>Позволяет игнорировать таблицу <b>tbl_name</b> базы данных <b>db_name</b> при создании дампа. Если из дампа необходимо исключить несколько таблиц, необходимо использовать несколько параметров &laquo;--ignore-table&raquo;, указывая по одной таблице в каждом из параметров.</dd>
<dt><b>--insert-ignore</b></dt>
<dd>Добавляет ключевое слово <b>IGNORE</b> в оператор <b>INSERT</b>.</dd>
<dt><b>--lock-all-tables, -x</b></dt>
<dd>Указание этого параметра приводит к блокировке всех таблиц во всех базах данных на время создания полного дампа всех баз данных.</dd>
<dt><b>--lock-tables, -l</b></dt>
<dd>Указание этого параметра приводит к блокировке таблиц базы данных, для которой создается дамп.</dd>
<dt><b>--no-autocommit</b></dt>
<dd>Включает все операторы <b>INSERT</b>, относящиеся к одной таблице, в одну транзакцию, что приводит к увеличению скорости загрузки данных.</dd>
<dt><b>--no-create-db, -n</b></dt>
<dd>Подавляет создание в дампе операторов <b>CREATE DATABASE</b>, которые автоматически добавляются при использовании параметров <b>--databases</b> и <b>--all-databases</b>.</dd>
<dt><b>--no-data, -d</b></dt>
<dd>Подавляет создание операторов <b>INSERT</b> в дампе, что может быть полезно при создании дампа структуры базы данных без самих данных.</dd>
<dt><b>--opt</b></dt>
<dd>Параметр предназначен для оптимизации скорости резервирования данных и является сокращением, включающим следующие опции: <b>--quick --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --set-charset</b>. Начиная с MySQL 4.1, параметр <b>--opt</b> используется по умолчанию, т.е. все вышеперечисленные параметры включаются по умолчанию, даже если они не указываются. Для того чтобы исключить такое поведение, необходимо воспользоваться параметров <b>--skip-opt</b></dd>
<dt><b>--order-by-primary</b></dt>
<dd>Указание параметра приводит к тому. что каждая таблица сортируется по первичному ключу или первому уникальному индексу.</dd>
<dt><b>--port, -P</b></dt>
<dd>Номер TCP порта, используемого для подключения к хосту.</dd>
<dt><b>--protocol={TCP|SOCKET|PIPE|MEMORY}</b></dt>
<dd>Параметр позволяет задать протокол подключения к серверу.</dd>
<dt><b>--quick, -q</b></dt>
<dd>Позволяет начать формирование дампа, не дожидаясь полной загрузки данных с сервера и экономя тем самым память.</dd>
<dt><b>--quote-names, -Q</b></dt>
<dd>Помещает имена баз данных, таблиц и столбцов в обратные апострофы <b>`</b>. Начиная с MySQL 4.1, данный параметр включен по умолчанию.</dd>
<dt><b>--replace</b></dt>
<dd>Добавляет ключевое слово <b>REPLACE</b> в оператор <b>INSERT</b>. Данный параметр впервые появился в MySQL 5.1.3.</dd>
<dt><b>--result-file=/path/to/file, -r /path/to/file</b></dt>
<dd>Параметр направляет дамп в файл <b>file</b>. Этот параметр особенно удобен в <b>Windows</b>, без использования командной строки. когда можно перенаправить результат в файл при помощи последовательностей <b>&gt;</b> и <b>&gt;&gt;</b>.</dd>
<dt><b>--routines, -R</b></dt>
<dd>Данный параметр создает дамп хранимых процедур и функций. Доступен с MySQL 5.1.2.</dd>
<dt><b>--single-transaction</b></dt>
<dd>Параметр создает дамп в виде одной транзакции.</dd>
<dt><b>--skip-comments</b></dt>
<dd>Данный параметр позволяет подавить вывод в дамп дополнительной информации.</dd>
<dt><b>--socket=/path/to/socket, -S /path/to/socket</b></dt>
<dd>Файл сокета для подсоединения к <b>localhost</b>.</dd>
<dt><b>--tab=/path/to/file, -T /path/to/file</b></dt>
<dd>При использовании этого параметра в каталоге <b>path</b> для каждой таблицы создаются два отдельных файла: <b>tbl_name.sql</b>, содержащий оператор <b>CREATE TABLE</b>, и <b>tbl_name.txt</b>, который содержит данные таблиц, разделенные символом тбуляции. Формат данных может быть переопределен явно с помощью параметров <b>--fields-xxx и --lines-xxx</b>.</dd>
<dt><b>--tables</b></dt>
<dd>Перекрывает действия параметра <b>--databases (-B)</b>. Все аргументы, следующие за этим параметром, трактуются как имена таблиц.</dd>
<dt><b>--triggers</b></dt>
<dd>Создается дамп триггеров. Этот параметр включен по умолчанию. для его отключения следует использовать параметр <b>--skip-triggers</b>.</dd>
<dt><b>--tz-utc</b></dt>
<dd>при использовании данного параметра в дамп будет добавлен оператор вида <b>SET TIME_ZONE=&#39;+00:00&#39;</b>, который позволит обмениваться дампа в различных временных зонах.</dd>
<dt><b>--verbose, -v</b></dt>
<dd>Расширенный режим вывода. Вывод более детальной информации о работе программы.</dd>
<dt><b>--version, -V</b></dt>
<dd>Вывести информацию о версии программы.</dd>
<dt><b>--where=&#39;where-condition&#39;, -w &#39;where-condition&#39;</b></dt>
<dd>Выполнить дамп только выбранных записей. Обратите внимание, что кавычки обязательны.</dd>
<dt><b>--xml, -X</b></dt>
<dd>Представляет дамп базы данных в виде XML.</dd>
<dt><b>--first-slave, -x</b></dt>
<dd>Блокирует все таблицы во всех базах данных.</dd>
<dt><b>--debug=..., -#</b></dt>
<dd>Отслеживать прохождение программы (для отладки).</dd>
<dt><b>--help</b></dt>
<dd>Вывести справочную информацию и выйти из программы.</dd>
</dl>
</blockquote>
<h3>Еще пару слов о бекапе в MySQL</h3>
<h4>mysqlhotcopy для MyISAM</h4>
<p>Для быстрого резервирования БД с типом таблиц <strong>ISAM и MyISAM</strong> можно использовать <strong>&laquo;mysqlhotcopy&raquo;</strong>, которая скопирует файлы <strong>*.frm, *.MYD и *.MYI</strong>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># mysqlhotcopy db_name /path/to/dir</div></div>
<p>Для <strong>InnoDB</strong> не подойдет данный способ, потомучто при этом типе не обязательно все файлы будут храниться в директории базы данных.</p>
<h4>xtrabackup для InnoDB</h4>
<p>Для <strong>InnoDB</strong> есть <noindex><a rel="nofollow" href="http://www.google.ru/search?q=site%3Amysqlperformanceblog.com+xtrabackup" >xtrabackup</a></noindex>, рекомендую посмотреть!<br />
<strong>UPD:</strong> <noindex><a rel="nofollow" href="http://highload.com.ua/index.php/2009/09/16/xtrabackup-%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5-%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%BB%D1%8F-innodb/" >XtraBackup&nbsp;&mdash; резервное копирование для innoDB</a></noindex></p>
<h4>Бин-лог и репликации</h4>
<p>Для репликации <strong>&laquo;mysqldump&raquo;</strong> не предназначена, для этого есть <strong>бин-лог</strong> (--log-bin):</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># mysqlbinlog binlog.[0-9]* | mysql</div></div>
<p>Для полной репликации необходимо вести бин-лог с самого начала работы БД, то есть еще до создания структур и данных.</p>
<h4>Резервирование данныс в MySQL 6.x</h4>
<p>С версии MySQL 6.x доступен online-backup, вот слайд объясняющий нововведения:</p>
<p><a href="http://adw0rd.ru/wp-content/uploads/2009/06/online_backup.jpg" ><img src="http://adw0rd.ru/wp-content/uploads/2009/06/online_backup-300x222.jpg" alt="online_backup" title="online_backup" width="300" height="222" class="alignnone size-medium wp-image-3146" style="padding:3px; border: dotted #c4c4c4 2px;" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/mysqldump-and-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Оптимизация сайта при помощи Google Page Speed и Dust-Me Selectors</title>
		<link>http://adw0rd.ru/2009/blog-optimization/</link>
		<comments>http://adw0rd.ru/2009/blog-optimization/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 23:54:42 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Блоггерам]]></category>
		<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Кеш]]></category>
		<category><![CDATA[Оптимизация]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=3040</guid>
		<description><![CDATA[Расскажу про два замечательных плагина для FireFox, которые помогли мне оптимизировать клиентскую часть, это Google Page Speed и Dust-Me Selectors, о которых я узнал от Александра Макарова (тут и тут). Google Page Speed Сначала разберемся с Google Page Speed, плагин сходен YSlow и показывает узкие места, например &#171;не кешированный контент&#187; и &#171;график загрузки сайта&#187;. Плагин [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/blog-optimization/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/06/blog-optimization.png" alt="blog-optimization" title="blog-optimization" width="239" height="70" class="alignright size-full wp-image-3098" /></a></p>
<p>Расскажу про два замечательных плагина для <strong>FireFox</strong>, которые помогли мне оптимизировать клиентскую часть, это <noindex><a rel="nofollow" href="http://code.google.com/intl/ru/speed/page-speed/" >Google Page Speed</a></noindex> и <noindex><a rel="nofollow" href="http://www.sitepoint.com/dustmeselectors/" >Dust-Me Selectors</a></noindex>, о которых я узнал от Александра Макарова (<noindex><a rel="nofollow" href="http://rmcreative.ru/blog/post/google-page-speed" >тут</a></noindex> и <noindex><a rel="nofollow" href="http://rmcreative.ru/blog/post/dust-me-selectors" >тут</a></noindex>).</p>
<h3>Google Page Speed</h3>
<p>Сначала разберемся с <strong>Google Page Speed</strong>, плагин сходен <strong>YSlow</strong> и показывает узкие места, например &laquo;не кешированный контент&raquo; и &laquo;график загрузки сайта&raquo;.</p>
<p>Плагин работает в <strong>FireBug</strong> и доступны две утилиты:</p>
<ol>
<li><strong>Page Speed</strong></li>
<li><strong>Page Speed Activity</strong></li>
</ol>
<p>Мы будем использовать первую утилиту &laquo;Page Speed&raquo;, которая покажет нам:</p>
<ul>
<li>Какой контент НЕ кеширован</li>
<li>Какие файлы JS и CSS не минимизированы</li>
<li>Какие картинки надо оптимизировать (пожать)</li>
<li>Какие CSS и JS файлы надо объединить в один файл</li>
<li>Какие CSS-стили не используются</li>
<li>Сколько занимают куки</li>
<li>Активированно ли Gzip-сжатие</li>
</ul>
<p>и т.д... А также даст полную информацию по каждой процедуре!</p>
<p>После того как определили узкие места, перейдем непосредственно к оптимизации вашего сайта:<br />
<span id="more-3040"></span></p>
<h4>Активированно ли Gzip-сжатие</h4>
<p>Как включить gzip-сжатие в Nginx, я рассказывал в статье &laquo;<a href="http://adw0rd.ru/2009/nginx-gzip/" >Настройка Gzip в Nginx</a>&raquo;.</p>
<h4>Какие CSS и JS файлы надо объединить в один файл</h4>
<p>Хотя я и понимаю проблему в создании соединений для каждого файла, объединять CSS или JS -файлы в один файл я не буду по причине зависимости от архитектуры движка моего блога.</p>
<p>Можно конечно заюзать <noindex><a rel="nofollow" href="http://webo.in/articles/habrahabr/87-web-optimizer-installation/" >Web Optimizer</a></noindex> или <noindex><a rel="nofollow" href="http://dklab.ru/lib/HTTP_StaticMerger/" >HTTP_StaticMerger</a></noindex>. Первое предпочтительней, имхо.</p>
<h4>Какой контент НЕ кеширован</h4>
<p>Перейдем к кешированию, это более важно для меня, посмотрите на рисунок:<br />
<a href="http://adw0rd.ru/wp-content/uploads/2009/06/pagespeed.png" ><img src="http://adw0rd.ru/wp-content/uploads/2009/06/pagespeed-300x257.png" alt="pagespeed" title="pagespeed" width="300" height="257" class="alignnone size-medium wp-image-3051" style="border: dotted #c4c4c4 2px; padding:3px;" /></a></p>
<p>Как видно, у меня множество картинок не кешированно... Точнее все картинки не кешированы :)</p>
<p>Исправим эту проблему путем внесения в конфиг Nginx параметра &laquo;expires&raquo;, установленного в &laquo;max&raquo; (максимальное кеширование, на долгие годы):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; server_name adw0rd.ru www.adw0rd.ru;<br />
<br />
&nbsp; &nbsp; location ~<span style="color: #000000; font-weight: bold;">*</span> \.<span style="color: #7a0874; font-weight: bold;">&#40;</span>jpg<span style="color: #000000; font-weight: bold;">|</span>jpeg<span style="color: #000000; font-weight: bold;">|</span>gif<span style="color: #000000; font-weight: bold;">|</span>png<span style="color: #000000; font-weight: bold;">|</span>ico<span style="color: #7a0874; font-weight: bold;">&#41;</span>$ <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; expires max;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>adw0rd.ru<span style="color: #000000; font-weight: bold;">/</span>www;<br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">&#125;</span></div></div>
<p>Далее, перезагрузим <strong>Nginx</strong>:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># /usr/local/etc/rc.d/nginx restart</span></div></div>
<p>Вот и все. заходим в Nginx и видим что файлы теперь отдаются с заголовком:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Cache-Control: max-age=315360000</div></div>
<p>Что означает, что будет сохранен кеш в браузере на 10 лет :)</p>
<h4>Какие CSS-стили не используются</h4>
<p>Можно конечно посмотреть какие стили НЕ используются в самом <strong>Google Page Speed</strong>, однако хочу представить более наглядную утилиту <b>Dust-Me Selectors</b>, речь о которой пойдет далее... :)</p>
<h3>Dust-Me Selectors</h3>
<p>Позволяет проанализировать страницу и показать сколько и главное какие стили не используются на странице сайта, а также укажет в каком файле стилей они прописаны и номера строк в файле!</p>
<p><a href="http://adw0rd.ru/wp-content/uploads/2009/06/dustmeselectors.png" ><img src="http://adw0rd.ru/wp-content/uploads/2009/06/dustmeselectors-256x300.png" alt="dustmeselectors" title="dustmeselectors" width="256" height="300" class="alignnone size-medium wp-image-3073" style="border: dotted #c4c4c4 2px; padding:3px;" /></a></p>
<p>Далее, проходим этим плагином по основным страницам и делаем выводы&nbsp;&mdash; какие стили необходимо удалить из CSS-файла.</p>
<p>После этого я рекомендую воспользоваться сервисом <noindex><a rel="nofollow" href="http://www.codebeautifier.com/" >Code Beautifier</a></noindex>, для минимизации CSS. Об этом вы можете почитать в моей статье: <a href="http://adw0rd.ru/2008/css-code-beautifier/" >Сжимаем и минимизируем CSS при помощи Code Beautifier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/blog-optimization/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Eclipse плагин subclipse для работы с SVN (Subversion)</title>
		<link>http://adw0rd.ru/2009/eclipse-subclipse/</link>
		<comments>http://adw0rd.ru/2009/eclipse-subclipse/#comments</comments>
		<pubDate>Thu, 28 May 2009 22:32:20 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Svn]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=2677</guid>
		<description><![CDATA[Надоело использовать TortoiseSVN и я решил попробовать попользоваться плагином для Eclipse&#160;&#8212; subclipse, дабы интегрироваться одним комбайном :) По этой ссылке расположено официальное руководство и там рассказывается про установку на старые версии Eclipse, а я покажу как поставить на Eclipse 3.4.2 и Subversion 1.5.5. Установка Заходим в Help -> Software Updates... -> Available Software, нажимаем по [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/eclipse-subclipse/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/02/subversion.png" alt="subversion" title="subversion" width="234" height="32" class="alignright size-full wp-image-858" /></a></p>
<p>Надоело использовать <strong>TortoiseSVN</strong> и я решил попробовать попользоваться плагином для <strong>Eclipse&nbsp;&mdash; subclipse</strong>, дабы интегрироваться одним комбайном :)</p>
<p>По <noindex><a rel="nofollow" href="http://subclipse.tigris.org/servlets/ProjectProcess;jsessionid=FB9D1D8537C319842D00DDC718B9C64D?pageID=p4wYuA" >этой ссылке расположено официальное руководство</a></noindex> и там рассказывается про установку на старые версии <strong>Eclipse</strong>, а я покажу как поставить на <strong>Eclipse 3.4.2</strong> и <a href="http://adw0rd.ru/2009/freebsd-subversion/" >Subversion 1.5.5</a>.</p>
<h3>Установка</h3>
<p>Заходим в <strong>Help -> Software Updates... -> Available Software</strong>, нажимаем по <strong>&laquo;Add Site...&raquo;</strong> и вбиваем в <strong>&laquo;Location&raquo;</strong> следующее:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://subclipse.tigris.org/update_1.6.x</div></div>
<p>Далее отмечаем необходимые пункты:<br />
<img src="http://adw0rd.ru/wp-content/uploads/2009/05/subclipse-insall.png" alt="subclipse-insall" title="subclipse-insall" width="444" height="226" class="alignnone size-full wp-image-2684" style="border: dotted #c4c4c4 2px;padding:3px;" /></p>
<p>Устанавливаем и перегружаем <strong>Eclipse</strong>...</p>
<p>У меня была проблема, пока не включил в установку <strong>&laquo;Subversion JavaHL Native Library Adapter&raquo;</strong>&nbsp;&mdash; не работал <strong>svn-client и Eclipse</strong> посылал на все 3 буквы! Так что не забудьте его включить в список установки! <strong>&laquo;Revision Graph&raquo;</strong>&nbsp;&mdash; можете отключить, если вам ненужен, я так понял это для построения графа ревизий...<br />
<span id="more-2677"></span></p>
<h3>Использование</h3>
<p>Создаем новую перспективу:<br />
<strong>Windows -> Open Perspective -> Other ->SVN Repository Exploring</strong></p>
<p>Заходим в перспективу и создаем новый локейшен:<br />
<strong>New -> Repository Location...</strong></p>
<p>Вставляем URL вашего репозитория:<br />
<a href="http://adw0rd.ru/wp-content/uploads/2009/05/new-rep.png" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/new-rep-150x150.png" alt="new-rep" title="new-rep" width="150" height="150" class="alignnone size-thumbnail wp-image-2693" style="border: dotted #c4c4c4 2px;padding:3px;" /></a></p>
<p>После чего вызываем контекстное меню вашего созданного подключения и выбираем <strong>&laquo;Checkout&raquo;</strong>, далее вписываем имя проекта, у меня <strong>&laquo;pyha.loc&raquo;</strong> (будет создан одноименный каталог):<br />
<a href="http://adw0rd.ru/wp-content/uploads/2009/05/co-name.png" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/co-name-150x150.png" alt="co-name" title="co-name" width="150" height="150" class="alignnone size-thumbnail wp-image-2697" style="border: dotted #c4c4c4 2px;padding:3px;" /></a></p>
<p>Жмем по <strong>&laquo;Next&raquo;</strong> и указываем <strong>&laquo;Workspace Location&raquo;</strong>, у меня это <strong>c:\WebServer\home</strong> и там находятся все веб-проекты:<br />
<a href="http://adw0rd.ru/wp-content/uploads/2009/05/co-location.png" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/co-location-150x150.png" alt="co-location" title="co-location" width="150" height="150" class="alignnone size-thumbnail wp-image-2698" style="border: dotted #c4c4c4 2px;padding:3px;" /></a></p>
<p>Нажимаем <strong>&laquo;Finish&raquo;</strong> и после чекаута у нас доступен проект в других перспективах, а в <strong>&laquo;c:\WebServer\home&raquo;</strong> создан каталог <strong>&laquo;pyha.loc&raquo;</strong>!</p>
<p>Для работы с <strong>SVN-репозиторием</strong> надо вызвать контекстное меню проекта той перспективы, в которой вы работаете (например PDT или Java) и выбрать <strong>&laquo;Team&raquo;</strong>, а для настройки плагина зайти в <strong>Preferences -> Team -> SVN</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/eclipse-subclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java. Установка среды разработки и Eclipse IDE</title>
		<link>http://adw0rd.ru/2009/java-install-jdk-and-eclipse/</link>
		<comments>http://adw0rd.ru/2009/java-install-jdk-and-eclipse/#comments</comments>
		<pubDate>Wed, 20 May 2009 00:13:09 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Java. Изучаем вместе!]]></category>
		<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JDK]]></category>
		<category><![CDATA[ООП]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=2457</guid>
		<description><![CDATA[Решил изучить Java и заодно написать ряд статей &#171;Java. Изучаем вместе!&#187;, может кому пригодится. Изучаю этот замечательный язык по книгам подаренных девушкой на день Святого Валентина. Я не собираюсь перепечатывать эти книги, по мере надобности буду освещать некоторые аспекты языка и сред разработки. Итак, преступим! Для работы нам понадобится JDK и среда разработки Eclipse. Установка [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/java-install-jdk-and-eclipse/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/java1.png" alt="java" title="java" width="58" height="108" class="alignright size-full wp-image-2472" style="padding:0px 30px 0px 20px;" /></a></p>
<p>Решил изучить <strong>Java</strong> и заодно написать ряд статей <strong>&laquo;Java. Изучаем вместе!&raquo;</strong>, может кому пригодится. Изучаю этот замечательный язык по книгам подаренных девушкой <a href="http://adw0rd.ru/2009/java-and-sv/" >на день Святого Валентина</a>.</p>
<p><img src="http://adw0rd.ru/wp-content/uploads/2009/02/1.jpg" alt="Философия Java" style="padding:2px;border: dotted #c4c4c4 2px;" /> <img src="http://adw0rd.ru/wp-content/uploads/2009/02/2.jpg" alt="Гибкая разработки приложений на Java" style="border: dotted #c4c4c4 2px;" /></p>
<p>Я не собираюсь перепечатывать эти книги, по мере надобности буду освещать некоторые аспекты языка и сред разработки.</p>
<p>Итак, преступим! Для работы нам понадобится <strong>JDK</strong> и среда разработки <strong>Eclipse</strong>.</p>
<h3>Установка JDK</h3>
<blockquote>
<p>Java Development Kit, сокращенно JDK — бесплатно распространяемый фирмой Sun комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java (IDE), поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.</p>
<p><noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/JDK" >http://ru.wikipedia.org/wiki/JDK</a></noindex>
</p>
</blockquote>
<p>Качаем <noindex><a rel="nofollow" href="http://java.sun.com/javase/downloads/index.jsp" >JDK</a></noindex> и устанавливаем. Я качал дистрибутив <strong>&laquo;JDK 6 Update 13 with Java EE&raquo;</strong>.</p>
<p>Пропишем путь до исполняемых файлов среды разработки в системную переменную <strong>PATH</strong>, если не указали установщику чтобы он сам прописал их туда. У меня такой путь:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">C:\Program Files\Sun\SDK\jdk\bin</div></div>
<p>После установки нам доступны утилиты <strong>javac.exe</strong>&nbsp;&mdash; для компиляции нашей программы и <strong>java.exe</strong> для исполнения откомпилированной программы.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#&gt; javac JavaTest.java<br />
#&gt; java JavaTest.class</div></div>
<h3>Установка Eclipse IDE</h3>
<p>У меня была установлена сборка <strong>Eclipse PDT2</strong> для работы с PHP, а также <strong>Spket</strong> для работы с JavaScript. Я доустановил набор плагинов <strong>Java Development</strong> через <strong>Help -> Software Updates… -> Available Software</strong>.</p>
<p><a href="http://adw0rd.ru/wp-content/uploads/2009/05/java-install.jpg" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/java-install-300x208.jpg" alt="java-install" title="java-install" width="300" height="208" class="alignnone size-medium wp-image-2491" /></a></p>
<p>После чего перезагрузил Eclipse и выбрал перспективу <strong>Java</strong>. Далее <strong>New -> Java Project</strong> и заполнил все необходимые поля. В появившемся проекте, щелкнул по <strong>&laquo;src&raquo;</strong>, создал класс (<strong>New -> Class</strong>) и заполнил необходимы поля.</p>
<p><a href="http://adw0rd.ru/wp-content/uploads/2009/05/new-class.jpg" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/new-class-300x271.jpg" alt="new-class" title="new-class" width="300" height="271" class="alignnone size-medium wp-image-2493" /></a></p>
<p>Все, готово, приступим к созданию <a href="http://adw0rd.ru/2009/java-first-programm/" >нашей первой программы</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/java-install-jdk-and-eclipse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Eclipse плагин RSE для работы с FTP и SFTP</title>
		<link>http://adw0rd.ru/2009/eclipse-rse/</link>
		<comments>http://adw0rd.ru/2009/eclipse-rse/#comments</comments>
		<pubDate>Tue, 19 May 2009 20:40:38 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=2443</guid>
		<description><![CDATA[Понадобилась возможность работать с SFTP в Eclipse. Погуглив наткнулся на статью &#171;Работа с FTP через Eclipse&#187;, человек очень расхваливал плагин Remote System Explorer (RSE). Я заинтересовался и решил установил себе этот плагин! Установка У меня версия Eclipse 3.4.2, поэтому ставим через Help -> Software Updates... -> Available Software и вбиваем в фильтр &#171;rse&#187;. После чего [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилась возможность работать с <noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/SFTP" >SFTP</a></noindex> в <noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/Eclipse" >Eclipse</a></noindex>. Погуглив наткнулся на статью &laquo;<noindex><a rel="nofollow" href="http://xaoc-pro.ru/2008/10/30/rabota_s_ftp_cherez_eclipse/" >Работа с FTP через Eclipse</a></noindex>&raquo;, человек очень расхваливал плагин <noindex><a rel="nofollow" href="http://www.eclipse.org/dsdp/tm/" >Remote System Explorer</a></noindex> (RSE). Я заинтересовался и решил установил себе этот плагин!</p>
<h3>Установка</h3>
<p>У меня версия Eclipse 3.4.2, поэтому ставим через <strong>Help -> Software Updates... -> Available Software</strong> и вбиваем в фильтр &laquo;rse&raquo;.</p>
<p><a href="http://adw0rd.ru/wp-content/uploads/2009/05/install1.jpg" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/install1-300x208.jpg" alt="Install RSE" title="Install RSE" width="300" height="208" class="alignnone size-medium wp-image-2446" /></a></p>
<p>После чего отмечаем пункты:</p>
<ul>
<li>RSE User Actions</li>
<li>RSE FTP Services</li>
<li>RSE SSH Services</li>
</ul>
<p>Далее &laquo;Install&raquo; и соглашаемся с лицензионными соглашениями. Перегружаемся и все, установка завершена!</p>
<h3>Использование</h3>
<p>Выбираем перспективу &laquo;Remote System Explorer perspective&raquo; и создаем новое подключение (New Connection), вбиваем параметры для подключения и пользуемся с удовольствием!</p>
<p><a href="http://adw0rd.ru/wp-content/uploads/2009/05/perspective.jpg" ><img src="http://adw0rd.ru/wp-content/uploads/2009/05/perspective-274x300.jpg" alt="perspective" title="perspective" width="274" height="300" class="alignnone size-medium wp-image-2454" /></a></p>
<blockquote class="info">
<p>
Более подробно:</p>
<p>Выбираете перспективу &laquo;Remote System Explorer&raquo;, далее щелкаете правой клавишей мыши в окне &laquo;Remote Systems&raquo; (если такого окна у вас нет, то &laquo;Window -> Show View -> Remote Systems&raquo; и оно отобразится) и выбираете &laquo;New -> Connection...&raquo;.</p>
<p>Далее, выбираете тип подключения, для sftp&nbsp;&mdash; &laquo;SSH Only&raquo;, а для ftp&nbsp;&mdash; &laquo;FTP Only&raquo;.<br />
Нажимаете &laquo;Next&raquo;, после чего вбиваете &laquo;Host&raquo; и указываете имя и описание для вашего подключения.</p>
<p>После чего в &laquo;Remote Systems&raquo; выбираете созданное вами подключение и разворачиваете дерево подключения, или кликаете правой клавишей мыши по подключению и выбираете в контекстном меню пункт &laquo;Connect&raquo;. В этот момент, если необходимо указать логин/пароль RSE у вас его спросит.<br />
</blockquote >
<p>Если у вас не стандартный порт, например для ssh не 22, а 2244, то вы можете сменить порт в &laquo;Show in table&raquo; (Правой клавишей мыши по подключению и выбираете &laquo;Show in table&raquo;).</p>
<p>При сохранении файла, плагин заливаете файл на сервер. И еще, если Eclipse жалуется на секурность, то скорее всего проблема в правах на файлы.</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/eclipse-rse/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>FreeBSD. Установка и настройка Яндекс.Сервер</title>
		<link>http://adw0rd.ru/2009/yandex-server/</link>
		<comments>http://adw0rd.ru/2009/yandex-server/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 22:50:17 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Поисковые системы]]></category>
		<category><![CDATA[Яндекс]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=1408</guid>
		<description><![CDATA[Начнем с того, что надо выбрать правильную версию этого сервера, ибо это может обернуться плачевно. Потомучто одна из версий это просто какой-то ужас, порт из линукса, который криво собирается, и версию зовут&#160;&#8212; FREE. Вообще существует две версии, это ENT и FREE. Первая как догадались ентерпрайс, а вторая бесплатная. Дело в том, что с недавнего времени [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/yandex-server/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/04/yandex-server.png" alt="yandex-server" title="yandex-server" width="149" height="129" class="alignright size-full wp-image-1906" /></a></p>
<p>Начнем с того, что надо выбрать правильную версию этого сервера, ибо это может <noindex><a rel="nofollow" href="http://hosstia.ya.ru/replies.xml?item_no=1276" >обернуться плачевно</a></noindex>. Потомучто одна из версий это просто какой-то ужас, порт из линукса, который криво собирается, и версию зовут&nbsp;&mdash; <strong>FREE</strong>.</p>
<p>Вообще существует две версии, это <noindex><a rel="nofollow" href="http://company.yandex.ru/technology/server/" >ENT</a></noindex> и <noindex><a rel="nofollow" href="http://company.yandex.ru/technology/products/Yandex-Server/shareware.xml" >FREE</a></noindex>. Первая как догадались ентерпрайс, а вторая бесплатная.</p>
<p>Дело в том, что с недавнего времени <strong>FREE</strong> пропал со страниц <noindex><a rel="nofollow" href="http://company.yandex.ru/technology/" >технологий и продуктов Яндекса</a></noindex> и <strong>ENT</strong> стал распространяется&nbsp;&mdash; <noindex><a rel="nofollow" href="http://company.yandex.ru/technology/server/conditions.xml" >бесплатно</a></noindex>, хотя может и раньше он распространялся бесплатно, просто я не замечал.</p>
<blockquote>
<p>
<strong>Условия распространения</strong><br />
Яндекс.Сервер распространяется бесплатно.
</p>
</blockquote>
<p>Список возможностей и требований <noindex><a rel="nofollow" href="http://company.yandex.ru/technology/server/features.xml" >сморите тут</a></noindex>. Более подробную документацию можно получить <noindex><a rel="nofollow" href="http://download.yandex.ru/yandex-server/download/yandex-server-manual.pdf" >тут</a></noindex>.<br />
<span id="more-1408"></span></p>
<h3>Установка</h3>
<p><noindex><a rel="nofollow" href="http://company.yandex.ru/technology/server/shareware.xml" >Качаем версию</a></noindex> для своей архитектуры и устанавливаем путем распаковки архива в корень системы.</p>
<h3>Настраиваем поисковый сервер</h3>
<p>Редактируем файл <strong>/usr/local/etc/yandex/yandex.cfg</strong></p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Server<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; Port &nbsp;17000<br />
&nbsp; Host example.com<br />
&nbsp; ServerLog &nbsp; &nbsp; /var/local/yandex/yandex.log<br />
&nbsp; WorkDir &nbsp;/var/local/yandex<br />
<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Authorization<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; UserName &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;admin<br />
&nbsp; &nbsp; UserPassword &nbsp; &nbsp; &nbsp; &nbsp;R#T$56YS<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Authorization<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Server<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Collection</span> <span style="color: #000066;">autostart</span>=<span style="color: #ff0000;">&quot;yes&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<br />
&nbsp; IndexDir /var/local/yandex/workindex<br />
<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;IndexLog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; FileName &nbsp; &nbsp; &nbsp; /var/local/yandex/index.log<br />
&nbsp; &nbsp; &nbsp; Level verbose moreinfo info debug moredebug<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/IndexLog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DocFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp;MimeType application/pdf<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DocFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DataSrc</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;webds&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; # название проекта<br />
&nbsp; &nbsp; Name exmaple<br />
<br />
&nbsp; &nbsp; # указываем с какого адреса надо начинать индексировать<br />
&nbsp; &nbsp; Config -w example.com<br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DataSrc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Collection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<h3>Настраиваем индексатор</h3>
<p>Редактируем файл <strong>/usr/local/etc/yandex/dsindexer.cfg</strong></p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Collection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; WorkDir &nbsp; &nbsp; /var/local/yandex/<br />
&nbsp; &nbsp; IndexDir &nbsp; &nbsp;/var/local/yandex/workindex<br />
&nbsp; &nbsp; TempDir &nbsp; &nbsp; /var/local/yandex/newindex<br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DocFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; MimeType &nbsp;text/html<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DocFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DocFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; Extensions &nbsp; &nbsp; &nbsp; &nbsp;.txt<br />
&nbsp; &nbsp; &nbsp; MimeType &nbsp;text/plain<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DocFormat<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DataSrc</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;webds&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; # название проекта<br />
&nbsp; &nbsp; &nbsp; Name exmaple<br />
<br />
&nbsp; &nbsp; &nbsp; # указываем с какого адреса надо начинать индексирование<br />
&nbsp; &nbsp; &nbsp; Config -w example.com<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DataSrc<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;IndexLog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Level &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; info<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/IndexLog<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Collection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<h3>Пробуем в работе</h3>
<p>Перезагружаем <strong>Яндекс.Сервер</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># /usr/local/etc/rc.d/yandex.sh restart</span></div></div>
<p>После чего заходим на <strong>http://example.com:17000/admin/</strong>, если сервер работает, то запустится страница администрирования, введите туда имя пользователя и пароль который вы указали в <strong>yandex.cfg</strong>, секция &laquo;Authorization&raquo;.</p>
<p>Теперь запустите индексацию!</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;"># dsindexer</span></div></div>
<p>После завершении работы индексатора — он скажет вам сколько документов он проиндексировал и в каталогах <strong>/var/local/yandex/newindex/</strong> и <strong>/var/local/yandex/workindex/</strong> должны появится новые файлы или изменится их дата и размер.</p>
<p>Теперь зайдите на <strong>http://example.com:17000/</strong> и попробуйте поискать что-то на вашем сайте :)</p>
<h3>Оформление выдачи</h3>
<p>Далее, если вы захотите сменить оформление результатов выдачи, то есть 2 варианта:</p>
<ol>
<li>Использовать XML-выдачу и выводить как вам заблагорассудится</li>
<li>Править шаблоны на Perl/C++ которые есть в системе</li>
</ol>
<p>Меня интересует <strong>1 вариант</strong>, то есть будем работать с <strong>XML</strong>. Делается очень просто, в строку запроса надо добавить <strong>xml=yes</strong> и после чего парсить результат выдачи, вот и все!</p>
<blockquote>
<p>http://example.com:17000/?text=test&#038;xml=yes</p>
</blockquote>
<p>Удачной индексации! <strong>:)</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/yandex-server/feed/</wfw:commentRss>
		<slash:comments>143</slash:comments>
		</item>
		<item>
		<title>Настройка групп и прав в Subversion</title>
		<link>http://adw0rd.ru/2009/svn-authz-access/</link>
		<comments>http://adw0rd.ru/2009/svn-authz-access/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 13:57:09 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Svn]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=1409</guid>
		<description><![CDATA[Порой требуется разграничить права доступа участникам вашего сервера контроля версий, например для того, чтобы некоторые не имели доступ к конкретному репозиторию. Для этого вам понадобится создать в системе файл svn-authz-access (называйте его как хотите) и прописать путь до файла в секцию настройки SVN в Apache. Настройки Открываем для редактирования файл /usr/local/etc/apache22/httpd.conf и добавляем в секцию [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/svn-authz-access/" ><img src="http://adw0rd.ru/wp-content/uploads/2009/03/subversion_gr.png" alt="subversion_gr" title="subversion_gr" width="358" height="84" class="alignright size-full wp-image-1705" /></a></p>
<p>Порой требуется разграничить права доступа участникам вашего сервера контроля версий, например для того, чтобы некоторые не имели доступ к конкретному репозиторию.</p>
<p>Для этого вам понадобится создать в системе файл <strong>svn-authz-access</strong> (называйте его как хотите) и прописать путь до файла в секцию настройки <strong>SVN</strong> в <strong>Apache</strong>.</p>
<h3>Настройки</h3>
<p>Открываем для редактирования файл <strong>/usr/local/etc/apache22/httpd.conf</strong> и добавляем в секцию <strong>&lt;location /svn&gt;</strong> запись о файле:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AuthzSVNAccessFile <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>svn-authz-access</div></div>
<p>Информацию о секции можете посмотреть в предыдущем моем посте <a href="http://adw0rd.ru/2009/freebsd-subversion/" >FreeBSD. Установка и настройка Subversion</a></p>
<p>Создадим и отредактируем файл <strong>svn-authz-access</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">touch</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>svn-authz-access<br />
<span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>svn-authz-access</div></div>
<p><span id="more-1409"></span></p>
<h3>Группы</h3>
<p>Группы перечисляются в столбик и напротив каждой группы указываются имена пользователей</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>groups<span style="">&#93;</span></span><br />
<span style="color: #000099;">devel</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> adw0rd, vasac</span><br />
<span style="color: #000099;">tester</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> epsyl</span></div></div>
<p></code></p>
<h3>Секция корня, где все репозитории</h3>
<p>Указываются группы в столбик и права</p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>/<span style="">&#93;</span></span><br />
@devel <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> r</span><br />
* <span style="color: #000066; font-weight:bold;">=</span></div></div>
<h3>Секции для репозиториев</h3>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>pyha-ru:/<span style="">&#93;</span></span><br />
@devel <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> rw</span><br />
* <span style="color: #000066; font-weight:bold;">=</span><br />
<br />
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>example-com:/<span style="">&#93;</span></span><br />
@devel <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> rw</span><br />
@tester <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> rw</span><br />
* <span style="color: #000066; font-weight:bold;">=</span></div></div>
<p><strong>@GROUP =</strong>&nbsp;&mdash; для группы GROUP назначаются права.<br />
<strong>* =</strong>&nbsp;&mdash; означает всем (other).<br />
<strong>rw</strong>&nbsp;&mdash; чтение и запись.<br />
<strong>r</strong>&nbsp;&mdash; чтение<br />
<strong>w</strong>&nbsp;&mdash; запись</p>
<p><br clear="all" /></p>
<h3>В итоге у нас должно получится два файла</h3>
<p>Файл <strong>httpd.conf</strong></p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;location</span> /svn<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp;DAV svn<br />
<br />
&nbsp; &nbsp;# разрешает выдавать перечень всех доступных хранилищ в папке SVNParentPath<br />
&nbsp; &nbsp;SVNListParentPath on<br />
&nbsp; &nbsp;SVNParentPath /home/svn/repos<br />
&nbsp; &nbsp;SVNPathAuthz off<br />
<br />
&nbsp; &nbsp;# включения базовой аутентификации, т.е. имя_пользователя/пароль<br />
&nbsp; &nbsp;AuthType Basic<br />
&nbsp; &nbsp;AuthName &quot;Subversion repository&quot;<br />
&nbsp; &nbsp;AuthUserFile /home/svn/svn-auth-file<br />
<br />
&nbsp; &nbsp;# предписывает, что только пользователям, предоставившим правильные имя_пользователя/пароль,<br />
&nbsp; &nbsp;# будет разрешён доступ к URL<br />
&nbsp; &nbsp;Require valid-user<br />
<br />
&nbsp; &nbsp;# Права и группы<br />
&nbsp; &nbsp;AuthzSVNAccessFile /home/svn/svn-authz-access<br />
<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/location<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p>Файл <strong>svn-authz-access</strong></p>
<div class="codecolorer-container ini default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>groups<span style="">&#93;</span></span><br />
<span style="color: #000099;">devel</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> adw0rd, vasac</span><br />
<span style="color: #000099;">tester</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> epsyl</span><br />
<br />
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>/<span style="">&#93;</span></span><br />
@devel <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> r</span><br />
* <span style="color: #000066; font-weight:bold;">=</span><br />
<br />
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>pyha-ru:/<span style="">&#93;</span></span><br />
@devel <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> rw</span><br />
* <span style="color: #000066; font-weight:bold;">=</span><br />
<br />
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>example-com:/<span style="">&#93;</span></span><br />
@devel <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> rw</span><br />
@tester <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> rw</span><br />
* <span style="color: #000066; font-weight:bold;">=</span></div></div>
<p>Перезагружаем Apache</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">apachectl restart</div></div>
<p>Ну вот и все, теперь мы разграничили права :)</p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/svn-authz-access/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>FreeBSD. Установка и настройка Subversion</title>
		<link>http://adw0rd.ru/2009/freebsd-subversion/</link>
		<comments>http://adw0rd.ru/2009/freebsd-subversion/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 11:12:20 +0000</pubDate>
		<dc:creator>adw0rd</dc:creator>
				<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Инструменты]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Svn]]></category>

		<guid isPermaLink="false">http://adw0rd.ru/?p=856</guid>
		<description><![CDATA[Subversion — свободная централизованная система управления версиями. Subversion разработана специально для замены устаревшей системы CVS, распространённой открытой системы управления версиями. Subversion обладает всеми основными функциями CVS (хотя некоторые из них выполняет другими способами) и свободна от ряда её недостатков. Установка Для начала соберем Apache с поддержкой Berkley DB, так как я предпочитаю именно этот способ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://adw0rd.ru/2009/freebsd-subversion/" ><img class="size-full wp-image-858 alignright" src="http://adw0rd.ru/wp-content/uploads/2009/02/subversion.png" alt="subversion" width="281" height="38" /></a></p>
<p><noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/Subversion" ><strong>Subversion</strong></a></noindex> — <span class="mw-redirect">свободная</span> централизованная система управления версиями.</p>
<p><strong>Subversion</strong> разработана специально для замены устаревшей системы <strong><noindex><a rel="nofollow" href="http://ru.wikipedia.org/wiki/CVS" title="CVS" >CVS</a></noindex></strong>,<br />
распространённой открытой системы управления версиями.</p>
<p><strong>Subversion</strong> обладает всеми основными функциями <strong>CVS</strong> (хотя некоторые из них выполняет другими способами) и свободна от ряда её недостатков.</p>
<h3>Установка</h3>
<p>Для начала соберем <strong>Apache</strong> с поддержкой <strong>Berkley DB</strong>, так как я предпочитаю именно этот способ хранения данных.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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>ports<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>apache22<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #007800;">WITH_BERKELEYDB</span>=db42</div></div>
<p>Если <strong>Apache</strong> уже установлен, то</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">make</span> reinstall <span style="color: #007800;">WITH_BERKELEYDB</span>=db42</div></div>
<p>на худой конец, если невозможно пересобрать <strong>Apache</strong>, то<strong><br />
</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">make</span> deinstall <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> clean</div></div>
<p>можно еще зачистить</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<span style="color: #000000; font-weight: bold;">/</span>distfiles<span style="color: #000000; font-weight: bold;">/*</span></div></div>
<p>а потом снова повторить установку!</p>
<p>Для запуска <strong>Apache</strong> при старте системы&nbsp;&mdash; прописываем в <strong>/etc/rc.conf</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">apache2_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span></div></div>
<p>Далее, устанавливаем <strong>Subversion</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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>ports<span style="color: #000000; font-weight: bold;">/</span>devel<span style="color: #000000; font-weight: bold;">/</span>subversion<br />
<span style="color: #c20cb9; font-weight: bold;">make</span> config</div></div>
<p>выбираем <strong>MOD_DAV_SVN</strong> и <strong>BDB</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></div></div>
<p>Проверьте, есть ли записи в  <strong>/usr/local/etc/apache22/httpd.conf</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">LoadModule dav_svn_module &nbsp; &nbsp; libexec<span style="color: #000000; font-weight: bold;">/</span>apache22<span style="color: #000000; font-weight: bold;">/</span>mod_dav_svn.so<br />
LoadModule authz_svn_module &nbsp; libexec<span style="color: #000000; font-weight: bold;">/</span>apache22<span style="color: #000000; font-weight: bold;">/</span>mod_authz_svn.so</div></div>
<p>Где &laquo;libexec/apache22/&raquo;&nbsp;&mdash; ваш путь до модулей индейца.</p>
<p><strong>Перезагружаем индейца</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">apachectl restart</div></div>
<p><span id="more-856"></span></p>
<h3>Создаем репозиторий</h3>
<p>Каталог для репозитория</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>repos</div></div>
<p>Каталог для вашего проекта</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">svnadmin</span> create <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>repos<span style="color: #000000; font-weight: bold;">/</span>_project_<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p><strong>_project_</strong>&nbsp;&mdash; заменить на имя вашего проекта (каталога).
<p>Импортируем проект в репозиторий</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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>home<span style="color: #000000; font-weight: bold;">/</span>_project_<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">svn</span> import .<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #c20cb9; font-weight: bold;">file</span>:<span style="color: #000000; font-weight: bold;">///</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>repos<span style="color: #000000; font-weight: bold;">/</span>_project_ <span style="color: #660033;">--message</span> <span style="color: #ff0000;">'Initial repository layout'</span></div></div>
<p>Установим права веб-сервера</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">chown</span> <span style="color: #660033;">-R</span> www:www <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span></div></div>
<p>Добавить в <strong>/usr/local/etc/apache22/httpd.conf</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;</span>location <span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">svn</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp;DAV <span style="color: #c20cb9; font-weight: bold;">svn</span><br />
<br />
&nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># разрешает выдавать перечень всех доступных хранилищ в папке SVNParentPath</span><br />
&nbsp; &nbsp;SVNListParentPath on<br />
&nbsp; &nbsp;SVNParentPath <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>repos<br />
&nbsp; &nbsp;SVNPathAuthz off<br />
<br />
&nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># включения базовой аутентификации, т.е. имя_пользователя/пароль</span><br />
&nbsp; &nbsp;AuthType Basic<br />
&nbsp; &nbsp;AuthName <span style="color: #ff0000;">&quot;Subversion repository&quot;</span><br />
&nbsp; &nbsp;AuthUserFile <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>svn-auth-file<br />
<br />
&nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># предписывает, что только пользователям, предоставившим правильные имя_пользователя/пароль,</span><br />
&nbsp; &nbsp;<span style="color: #666666; font-style: italic;"># будет разрешён доступ к URL</span><br />
&nbsp; &nbsp;Require valid-user<br />
<span style="color: #000000; font-weight: bold;">&lt;/</span>location<span style="color: #000000; font-weight: bold;">&gt;</span></div></div>
<p>Теперь, создадим пользователей для доступа к вашему проекту</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">htpasswd <span style="color: #660033;">-cmb</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>svn-auth-file _user_ _password_</div></div>
<p>и добавляем пользователей, так как ключ &laquo;-c&raquo; указывает на создание файла</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">htpasswd <span style="color: #660033;">-mb</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>svn-auth-file _user_ _password_</div></div>
<p>Где <strong>_user_</strong> и <strong>_password_</strong>&nbsp;&mdash; имя и пароль соответственно.
<p>Ну вот и все, удачного checkout&#39;a!</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:650px;"><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;">svn</span> checkout http:<span style="color: #000000; font-weight: bold;">//</span>_domain_<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>_project_</div></div>
<p>
<strong>P.S.</strong> Subversion 1.5</p>
<p><strong>UPD:</strong> <a href="http://adw0rd.ru/2009/svn-authz-access/" >Настройка групп и прав в Subversion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://adw0rd.ru/2009/freebsd-subversion/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>
