<?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>Bozaro</title>
	<atom:link href="http://www.bozaro.ru/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bozaro.ru/wordpress</link>
	<description>Мой личный блог</description>
	<lastBuildDate>Mon, 08 Feb 2010 20:52:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nokia Ovi Store в России со стороны издателя</title>
		<link>http://www.bozaro.ru/wordpress/2010/02/09/nokia-ovi-store/</link>
		<comments>http://www.bozaro.ru/wordpress/2010/02/09/nokia-ovi-store/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:13:20 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Ovi Store]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=102</guid>
		<description><![CDATA[Цель данного поста &#8211; обратить внимание сотрудников Nokia на тот факт, что магазин Nokia Ovi Store в России работает не идеально.
В августе 2009 года мной было принято волевое решение начать свое дело &#8211; разрабатывать игры под смартфоны Nokia и продавать их через Nokia Ovi Store. Сам магазин Ovi Store открылся только 27-ого мая. Создание приложения [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.bozaro.ru/wordpress/wp-content/uploads/2010/02/ovi_lockup.png"><img class="alignleft size-full wp-image-129" style="padding-right: 15px;" title="Ovi" src="http://www.bozaro.ru/wordpress/wp-content/uploads/2010/02/ovi_lockup.png" alt="" width="115" height="41" /></a>Цель данного поста &#8211; обратить внимание сотрудников Nokia на тот факт, что магазин Nokia Ovi Store в России работает не идеально.</strong></p>
<p>В августе 2009 года мной было принято волевое решение начать свое дело &#8211; разрабатывать игры под смартфоны Nokia и продавать их через Nokia Ovi Store. Сам магазин Ovi Store открылся только 27-ого мая. Создание приложения и его публикации затянулось и заслуживает отдельной статьи.</p>
<p>В магазин мы попали только 6-ого января. Сразу же начались неожиданные проблемы, а именно:</p>
<ol>
<li>Оплатить приложение в России &#8211; задача не тривиальная;</li>
<li>В отчете с текущим состоянием продаж сумма, мягко говоря, не сходится;</li>
<li>Сумма, получаемая с одной копии игры, оказалась несколько меньше ожидаемой;</li>
<li>Очень специфическая работа технической поддержки.</li>
</ol>
<p>А теперь отдельно по каждой проблеме&#8230;</p>
<h2>Оплатить приложение в России &#8211; задача не тривиальная</h2>
<p>Теоретически, оплатить приложение в России можно 3-я способами:</p>
<ol>
<li>Путем отправки SMS со счета мобильного телефона (для операторов Билайн и МТС);</li>
<li>Через банковскую карту Visa;</li>
<li>Через банковскую карту MasterCard.</li>
</ol>
<p>На практике, ситуация выглядела несколько иначе:</p>
<ol>
<li>Оплата через SMS для моего телефона не предлагалась (у меня Билайн).<br />
При этом, весной 2009 на том же аппарате, с той же SIM-картой оплата через SMS работала совершенно корректно. Так же не удалось оплатить через SMS с телефона МТС.</li>
<li>Оплата банковской картой Visa(Альфа-Банк, банк &laquo;Открытие&raquo;) не принимается &#8211; операция отклонена.<br />
При этом, в октябре 2009 с той же банковской карты оплата производилась без проблем. Карта после успешной покупки была сохранена в учетной записи Ovi Store. После не успешной попытки оплаты карта из этого списка удалилась автоматически.</li>
<li>Оплата банковской картой MasterCard Virtual (Альфа-Банк) не принимается &#8211; не корректная дата окончания срока действия карты.<br />
Банковская карта MasterCard Virtual выписывается сроком на один месяц и заканчивается в текущем месяце.</li>
<li>Оплата банковской картой MasterCard Mass (Альфа-Банк) &#8211; работает.</li>
</ol>
<p>Таким образом, получается, что купить что-либо в Nokia Ovi Store может либо владелец MasterCard, либо более везучий человек <img src='http://www.bozaro.ru/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Путем общения с технической поддержкой, на данный момент, удалось добиться только исправления ошибки с не корректной проверкой даты окончания карты.</p>
<h2>В отчете с текущим состоянием продаж сумма, мягко говоря, не сходится</h2>
<p>Несмотря на уже обозначенную проблему с оплатой, какие-то продажи у нас все-таки были. Смотреть на них было грустно, но тем не менее.</p>
<p>Однако обнаружилась еще одна неприятность: в стандартном отчете, помимо итоговой цифры с количеством продаж, есть так же перечень устройств, для которых купили данный контент. На против каждого из устройств выводится относительная доля этого устройства из общей массы.</p>
<p>В нашем случае за январь было 5 продаж, но доля Nokia E65 среди купивших &#8211; 9.1% (1/11).</p>
<p><a href="http://www.bozaro.ru/wordpress/wp-content/uploads/2010/02/ovi.png"><img class="alignnone size-medium wp-image-112" title="Screenshot с отчетом" src="http://www.bozaro.ru/wordpress/wp-content/uploads/2010/02/ovi-300x253.png" alt="" width="300" height="253" /></a></p>
<p>Единственное логичное объяснение данной ситуации, которое мне удалось придумать &#8211; устройство получает свой &laquo;процент&raquo; после того, как на нем была завершена процедура покупки, а число проданных копий меняется после того, как завершается транзакция на оплату (деньги сначала удерживаются банком и потом, через пару дней, списываются со счета).</p>
<p>На данный момент эта теория является неподтвержденной.</p>
<p>Добиться каких-либо комментариев от технической поддержки так и не удалось.</p>
<h2>Сумма, получаемая с одной копии игры, оказалась несколько меньше ожидаемой</h2>
<p>При регистрации в Nokia Ovi Store в качестве издателя, обещается 70% от суммы, которая остается после оплаты налогов и поборов платежной системы:<br />
<code>70% of Gross sales, net of refunds and returns, less applicable taxes and, where applicable, fixed operator billing costs.</code><br />
На практике это значит, что с 3€ издателю остается 0.946€, то есть 31.5%.</p>
<h2>Очень специфическая работа технической поддержки</h2>
<p>Техническая поддержка &#8211; это отдельная песня:</p>
<ol>
<li> Общаться с ней можно только по e-mail-у на английском языке;</li>
<li>К скорости ответа на письма я не могу привыкнуть до сих пор: ответ в стиле &laquo;мы получили ваше письмо&raquo; через 4-ре дня, после отправки этого письма &#8211; в порядке вещей;</li>
<li>Нет никакого идентификатора заявки;</li>
<li>Нет никакой возможности узнать статус заявки, кроме как по e-mail-у.</li>
</ol>
<p>Общение в таком стиле возможно, но малоэффективно.</p>
<h2>И что же дальше?</h2>
<p>Картина получается безрадостная &#8211; деньги уже потрачены, а обильных продаж как-то не видно. Особенно удручает тот факт, что некоторых проблем ранее не было.</p>
<p>Для выправления данной ситуации вижу только следующие пути:</p>
<ol>
<li>Расширение списка поддерживаемых платформ.<br />
В данный момент мы поддерживаем только платформу S60v3. Для расширения линейки устройств портируем под S40.</li>
<li>Расширение потенциальной аудитории.<br />
Что-то мне подсказывает, что таких проблем в Европе быть не должно. Как только доделаем локализацию &#8211; попробуем выйти на продажи в Европе.</li>
<li>Поиск других площадок распространения приложений.<br />
Тут без комментариев, но в данный момент это крайняя мера.</li>
</ol>
<p>P.S. Я понимаю, что статья, в целом, получилась негативная, но другого способа докричаться до Nokia я не вижу.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2010/02/09/nokia-ovi-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Аварийная загрузка Grub2 (rescue mode)</title>
		<link>http://www.bozaro.ru/wordpress/2010/01/31/%d0%b0%d0%b2%d0%b0%d1%80%d0%b8%d0%b9%d0%bd%d0%b0%d1%8f-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b0-grub2-rescue-mode/</link>
		<comments>http://www.bozaro.ru/wordpress/2010/01/31/%d0%b0%d0%b2%d0%b0%d1%80%d0%b8%d0%b9%d0%bd%d0%b0%d1%8f-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b0-grub2-rescue-mode/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 19:34:03 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=96</guid>
		<description><![CDATA[В один прекрасный день я удалил партицию со старыми линухами (sda5) и после перезагрузки вместо окошка выбора операционки получил сообщение об ошибке. Ошибка была вызвана тем, что Grub2 был на партиции sda7, которая теперь стала sda6.
К счастью, Grub2 отображает консоль через которую можно поправить ситуацию. Алгоритм восстановления загручика сводится к следующим действиям:

Ищем партицию, где установлена [...]]]></description>
			<content:encoded><![CDATA[<p>В один прекрасный день я удалил партицию со старыми линухами (sda5) и после перезагрузки вместо окошка выбора операционки получил сообщение об ошибке. Ошибка была вызвана тем, что Grub2 был на партиции sda7, которая теперь стала sda6.</p>
<p>К счастью, Grub2 отображает консоль через которую можно поправить ситуацию. Алгоритм восстановления загручика сводится к следующим действиям:</p>
<ul>
<li>Ищем партицию, где установлена система и загрузчик (у меня они совпадают):<br />
<code>ls (hd0,6)/</code></li>
<li>Когда партиция найдена, нужно задать путь к модулям Grub2:<br />
<code>set prefix=(hd0,6)/boot/grub</code></li>
<li>А так же путь к файловой системе с образом ядра:<br />
<code>set root=(hd0,6)</code></li>
<li>После этого нужно загрузить модуль загрузки Linux-а:<br />
<code>insmod /boot/grub/linux.mod</code><br />
С этого момента жить становится легче, так как начинают работать дополнительные консольные плюшки, к примеру &#8211; табуляция.</li>
<li> Указываем ядро и загружаемся:<br />
<code>linux /vmlinuz root=/dev/sda6 ro<br />
initrd /initrd.img<br />
boot</code></li>
<li> После попадания в Linux надо восстановить загрузчик. Для этого в Ubuntu можно воспользоваться командой:<br />
<code>dpkg-reconfigure grub-pc</code></li>
</ul>
<p>Ссылки по теме:</p>
<ul>
<li>https://help.ubuntu.com/community/Grub2</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2010/01/31/%d0%b0%d0%b2%d0%b0%d1%80%d0%b8%d0%b9%d0%bd%d0%b0%d1%8f-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d0%b0-grub2-rescue-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSL и VHost</title>
		<link>http://www.bozaro.ru/wordpress/2009/12/06/ssl-%d0%b8-vhost/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/12/06/ssl-%d0%b8-vhost/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 06:42:15 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=90</guid>
		<description><![CDATA[Тема старая, но почему-то раньше у меня руки до неё не доходили.
Суть проблемы в следующем: если создается SSL-сервер с самоподписанным сертификатом, то у него в CN может быть указан только один хост. В результате, если обращаться к HTTPS-серверу по другому доменному имени, получаем предупреждение не только о том, что сертификат самопальный, но и о том, [...]]]></description>
			<content:encoded><![CDATA[<p>Тема старая, но почему-то раньше у меня руки до неё не доходили.</p>
<p>Суть проблемы в следующем: если создается SSL-сервер с самоподписанным сертификатом, то у него в CN может быть указан только один хост. В результате, если обращаться к HTTPS-серверу по другому доменному имени, получаем предупреждение не только о том, что сертификат самопальный, но и о том, что сертификат выдан другому сайту. А это как-то некузяво.<span id="more-90"></span></p>
<p>Для генерации сертификата для нескольких доменных имен можно пойти следующим путем:</p>
<ol>
<li>Создаем приватный ключ, которым будем подписывать сертификат:
<pre>openssl genrsa -out server.key 1024</pre>
</li>
<li>Подготавливаем файл с параметрами сертификата (я назвал его server.cfg):
<pre>[req]
# Задаем имя секции с базовыми параметрами сертификата
distinguished_name = req_distinguished_name
# Параметры перечислены, так что спрашивать их нет смысла
prompt = no
# Имя секции с расширениями для запроса сертификата
req_extensions = req_v3
# Имя секции с расширениями для подписи сертификата
x509_extensions = req_v3

[req_v3]
# Все альтернативные имена перечислены в секции alt_name
subjectAltName=@alt_name

[alt_name]
# Альтернативные имена
DNS.1 = www.example1.ru
DNS.2 = www.example2.ru
DNS.3 = www.example1.com

[req_distinguished_name]
# Имя сайта, на который выдан сертификат
CN=www.example1.ru
# Штат
ST=Moscow-State
# Отдел
OU=Software Development
# Организация
O=Example, LLC
# Город
L=Moscow City
# Страна
C=RU</pre>
</li>
<li>Генерируем запрос сертификата:
<pre>openssl req -new -utf8 -key server.key -config server.cfg -out server.csr</pre>
</li>
<li>Подписываем сертификат:
<pre>openssl x509 -req -days 365 -in server.csr -extfile server.cfg -extensions req_v3 -signkey server.key -out server.crt</pre>
<p>При этом важно задать параметр extfile и extensions, без них в сертификате альтернативные имена эффекта не возымеют.</li>
<li>Посмотреть сертификат можно командой:
<pre>openssl x509 -text -in server.crt</pre>
<p>В случае успеха в нем должны присутствовать строки вида:</p>
<pre>X509v3 extensions:
  X509v3 Subject Alternative Name:
    DNS:www.example1.ru, DNS:www.example2.ru, DNS:www.example1.com</pre>
</li>
</ol>
<p>Ссылки по теме:</p>
<ol>
<li><a href="http://openssl.org/docs/apps/req.html">http://openssl.org/docs/apps/req.html</a></li>
<li><a href="http://wiki.cacert.org/VhostTaskForce">http://wiki.cacert.org/VhostTaskForce</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/12/06/ssl-%d0%b8-vhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Патч на qmake для группировки файлов внутри проекта vcproj</title>
		<link>http://www.bozaro.ru/wordpress/2009/07/15/%d0%bf%d0%b0%d1%82%d1%87-%d0%bd%d0%b0-qmake-%d0%b4%d0%bb%d1%8f-%d0%b3%d1%80%d1%83%d0%bf%d0%bf%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b8-%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%b2-%d0%b2%d0%bd%d1%83%d1%82%d1%80/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/07/15/%d0%bf%d0%b0%d1%82%d1%87-%d0%bd%d0%b0-qmake-%d0%b4%d0%bb%d1%8f-%d0%b3%d1%80%d1%83%d0%bf%d0%bf%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b8-%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%b2-%d0%b2%d0%bd%d1%83%d1%82%d1%80/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 19:06:25 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[QT]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[qmake]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=82</guid>
		<description><![CDATA[По долгу службы приходится работать с QT-проектами из под Visual Studio. К сожалению, при создании vcproj-файлов утилитой qmake, все исходные и заголовочные файлы идут сплошным списком без какой-либо группировки. В случае больших проектов это неудобно.
В результате я написал для себя патч, после которого утилита qmake группирует файлы в проекте по поддиректориям. Возможно, этот патч будет [...]]]></description>
			<content:encoded><![CDATA[<p>По долгу службы приходится работать с QT-проектами из под Visual Studio. К сожалению, при создании vcproj-файлов утилитой qmake, все исходные и заголовочные файлы идут сплошным списком без какой-либо группировки. В случае больших проектов это неудобно.</p>
<p>В результате я написал для себя патч, после которого утилита qmake группирует файлы в проекте по поддиректориям. Возможно, этот патч будет кому-нибудь интересен.</p>
<p>Патч проверялся на qmake от следующих версий QT: 4.5.0, 4.5.1, 4.5.2.</p>
<p><a href="http://www.bozaro.ru/wordpress/wp-content/uploads/2009/07/msvc_objectmodelcpp.patch">msvc_objectmodelcpp.patch</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/07/15/%d0%bf%d0%b0%d1%82%d1%87-%d0%bd%d0%b0-qmake-%d0%b4%d0%bb%d1%8f-%d0%b3%d1%80%d1%83%d0%bf%d0%bf%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b8-%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%b2-%d0%b2%d0%bd%d1%83%d1%82%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KVM в Linux</title>
		<link>http://www.bozaro.ru/wordpress/2009/04/29/kvm-%d0%b2-linux/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/04/29/kvm-%d0%b2-linux/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 18:48:44 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=76</guid>
		<description><![CDATA[С недавнего времени я активно использую OpenVZ, но вот понадобилось поставить на виртуальную машину M$ Windows и взор обратился к KVM (KVM и OpenVZ не являются взаимоисключающими и могут работать одновременно).
KVM использует аппаратную виртуализацию, что накладывает сильные ограничения на аппаратную составляющую, но, теоретически, дает минимальную усадку по производительности.
Аппаратная часть
Компьютер собирался относительно недавно и с расчетом [...]]]></description>
			<content:encoded><![CDATA[<p>С недавнего времени я активно использую OpenVZ, но вот понадобилось поставить на виртуальную машину M$ Windows и взор обратился к KVM (KVM и OpenVZ не являются взаимоисключающими и могут работать одновременно).</p>
<p>KVM использует аппаратную виртуализацию, что накладывает сильные ограничения на аппаратную составляющую, но, теоретически, дает минимальную усадку по производительности.<span id="more-76"></span></p>
<h1>Аппаратная часть</h1>
<p>Компьютер собирался относительно недавно и с расчетом на виртуализацию. Основное, как выяснилось, &#8211; это процессор с поддержкой виртуализации (серверные варианты я не рассматривал):</p>
<ol>
<li>От Intel (технология Intel VT): поддержка виртуализации есть на некоторых Core2 Duo и некоторых Core2 Quad (см. здесь: <a href="http://www.intel.com/products/processor/core2duo/specifications.htm">http://www.intel.com/products/processor/core2duo/specifications.htm</a> и <a href="http://ark.intel.com/cpu.aspx">http://ark.intel.com/cpu.aspx</a>), а так же на Core i7;</li>
<li>От AMD (технология AMD SVM): поддержка есть на всех AMD Phenom, включая AMD Phenom X3.</li>
</ol>
<p>Себе лично я взял самый дешевый AMD Phenom X3 из тех, что были в наличии.</p>
<p>Проверить наличие виртуализации в системе можно по наличию в файле /proc/cpuinfo флага vmx для Intel и флага svm для AMD.</p>
<p>Так же виртуализацию нужно включить в BIOS.</p>
<h1>Программная часть</h1>
<p>Работает KVM только под Linux и требует включения его в ядре. В Ubuntu 8.10 по-умолчанию модули для KVM есть, в том числе и в ядре с патчем под OpenVZ. То есть это дает возможность использовать KVM и OpenVZ одновременно.</p>
<p>Для установки KVM под Ubuntu Linux 8.10 достаточно выполнить:</p>
<pre>apt-get install kvm</pre>
<p>Так как под KVM нет свой утилиты для создания вируального диска, придется поставить еще и qemu:</p>
<pre>apt-get install qemu</pre>
<h1>Установка виртуальной машины</h1>
<p>Для начала нужно создать виртуальный диск, например:</p>
<pre class="displaycode"><span class="boldcode">qemu-img create -f qcow disk.img 10G</span></pre>
<p>Эта команда создаст диск формата qcow (в отличие от raw, файл будет расти по мере надобности) с логическим объемом 10Гб.</p>
<p>После этого можно запустить виртуальную машину, например:</p>
<p>kvm disk.img -m 512 -localtime -no-acpi -net nic -net tap,ifname=veth1 -vnc :1 -daemonize</p>
<p>Здесь:</p>
<ul>
<li>-m 512 &#8211; выделить 512Мб оперативной памяти;</li>
<li>-localtime &#8211; в виртуальной машине использовать локальное время (по умолчанию UTC), что полезно при запуске M$ Windows;</li>
<li>-no-acpi &#8211; избавление от проблем с ACPI, иногда полезно;</li>
<li>-net nic -net tap,ifname=veth1 &#8211; создать для виртуальной машины сетевой интерфес veth1 и цепануть его к первому попавшемуся bridge-у (по умолчанию используется сеть HOST-only). Для указания конкретного интерфеса моста я правил файл /etc/kvm/kvm-ifup.</li>
<li>-vnc :1 &#8211; сделать машину доступной по VNC на дисплее :1. Очень полезно при удаленной установке;</li>
<li>-daemonize &#8211; не держать процесс до завершения работы виртуальной машины.</li>
</ul>
<p>Штатного интерфейса для запуска виртульных машин при старте системы я не обнаружил.</p>
<h1>Впечатления</h1>
<p>Впечатления следующие: после установки M$ Windows настройл в ней подключение по RDP и поиздевался над системой (компиляция, установка нескольких программ и т.д.). Тормозов не почувствовал.</p>
<p>Сильно портит впечатление тот факт, что я не обнаружил штатного средства запуска при старте системы и корректного завершения виртуальной машины при остановке системы. Хотя, возможно, я просто недоглядел.</p>
<h1>Ссылки</h1>
<ul>
<li><a href="http://www.ibm.com/developerworks/ru/library/l-linux-kvm/">http://www.ibm.com/developerworks/ru/library/l-linux-kvm/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/04/29/kvm-%d0%b2-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка Hudson под Ubuntu</title>
		<link>http://www.bozaro.ru/wordpress/2009/04/24/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-hudson-%d0%bf%d0%be%d0%b4-ubuntu/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/04/24/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-hudson-%d0%bf%d0%be%d0%b4-ubuntu/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 05:01:49 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Hudson]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=72</guid>
		<description><![CDATA[Установил Tomcat6 и добавил в него Hudson:
sudo apt-get install tomcat6
sudo wget http://hudson.gotdns.com/latest/hudson.war /var/lib/tomcat6/webapps/
После этого перезапустил Tomcat, полез на http://localhost:8080/hudson/ и увидел, что ничего не работает.
Проблема вызвана тем, что политики безопасности Tomcat не дают  Hudson-у достаточных для работы привилегий.
Решается проблема просто &#8211; в файле /etc/defaults/tomcat6 надо добавить строку:
TOMCAT6_SECURITY=no
И перезапустить Tomcat.
Так же в файле /etc/defaults/tomcat6 не [...]]]></description>
			<content:encoded><![CDATA[<p>Установил Tomcat6 и добавил в него Hudson:</p>
<pre>sudo apt-get install tomcat6
sudo wget http://hudson.gotdns.com/latest/hudson.war /var/lib/tomcat6/webapps/</pre>
<p>После этого перезапустил Tomcat, полез на http://localhost:8080/hudson/ и увидел, что ничего не работает.</p>
<p>Проблема вызвана тем, что политики безопасности Tomcat не дают  Hudson-у достаточных для работы привилегий.</p>
<p>Решается проблема просто &#8211; в файле /etc/defaults/tomcat6 надо добавить строку:</p>
<pre>TOMCAT6_SECURITY=no</pre>
<p>И перезапустить Tomcat.</p>
<p>Так же в файле /etc/defaults/tomcat6 не лишним будет указать для Hudson более разумную директорию:</p>
<pre>JAVA_OPTS="-Djava.awt.headless=true -Xmx128M -DHUDSON_HOME=/var/db/hudson"</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/04/24/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-hudson-%d0%bf%d0%be%d0%b4-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Система автоматизированной сборки Hudson</title>
		<link>http://www.bozaro.ru/wordpress/2009/03/29/%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0-%d0%b0%d0%b2%d1%82%d0%be%d0%bc%d0%b0%d1%82%d0%b8%d0%b7%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%bd%d0%be%d0%b9-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-hudson/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/03/29/%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0-%d0%b0%d0%b2%d1%82%d0%be%d0%bc%d0%b0%d1%82%d0%b8%d0%b7%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%bd%d0%be%d0%b9-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-hudson/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 05:10:54 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Софт для разработки ПО]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=64</guid>
		<description><![CDATA[Hudson для меня стал одним из открытий прошлого года.
Нужно было решить простую задачу &#8211; найти систему для автоматического создания ночных билдов.
Цель у этой задачи проста: в случае, если кто-то накосячил и перестали проходить тесты или вообще ничего не компилируется, об этом нужно узнать как можно раньше.
Требования были следующие:

Бесплатность;
Возможность добавления нескольких скриптов для сборки;
Запуск сборки с [...]]]></description>
			<content:encoded><![CDATA[<p>Hudson для меня стал одним из открытий прошлого года.</p>
<p>Нужно было решить простую задачу &#8211; найти систему для автоматического создания ночных билдов.</p>
<p>Цель у этой задачи проста: в случае, если кто-то накосячил и перестали проходить тесты или вообще ничего не компилируется, об этом нужно узнать как можно раньше.</p>
<p><span id="more-64"></span>Требования были следующие:</p>
<ol>
<li>Бесплатность;</li>
<li>Возможность добавления нескольких скриптов для сборки;</li>
<li>Запуск сборки с указанной периодичностью;</li>
<li>Возможность ручного запуска сбоки;</li>
<li>Уведомления о провалившихся сборках;</li>
<li>Хранение последних артефактов сборки;</li>
<li>Возможность посмотреть лог провалившейся сборки;</li>
<li>WEB-интерфейс.</li>
</ol>
<p>До этого для сборки проектов просто запускались скрипты на сборочной машине (скрипты были написаны наа Python, но это не важно).</p>
<p>Это работало, но имело ряд неудобств. Основные из них:</p>
<ol>
<li>После запуска сборки нужно самому залезть и убедиться в её окончании, о чем забываешь;</li>
<li>Если сборка провалилась, трудно искать проблему;</li>
<li>Нельзя назначить следующую сборку, пока идет предыдущая;</li>
<li>Нет сборки по расписанию.</li>
</ol>
<p>В итоге набрел на Hudson &#8211; <a href="https://hudson.dev.java.net/">https://hudson.dev.java.net/</a>.</p>
<p>При всей своей простоте он с лихвой перекрыл все имеющиеся к нему требования. Устанавливается он без каких либо проблем под Java Application Server (я использовал TomCat): сразу после разворачивания war-файла готов к работе.</p>
<p>Краткий перечень вкусностей, которые он предоставляет (многие через плагины):</p>
<ol>
<li>Централизованная установка плагинов;</li>
<li>Сборка после изменения исходного кода в системе контроля версий (поддерживает GIT, Subversion, CVS и др.);</li>
<li>Строит графики результатов сборки, объема занимаемого места, кол-ва TODO-шек и т.п.;</li>
<li>Возможность авторизации через LDAP;</li>
<li>Интеграция с Trac, Bugzilla, Jira и др.;</li>
<li>Можно задать, какие проекты нельзя собирать параллельно;</li>
<li>Возможность создания распределенных сборщиков (полезно для сборки под разным окружением, например Windows и Linux).</li>
</ol>
<p>Так что если у кого есть потребность в системе автоматизированной сборки &#8211; советую глянуть.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/03/29/%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0-%d0%b0%d0%b2%d1%82%d0%be%d0%bc%d0%b0%d1%82%d0%b8%d0%b7%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%bd%d0%be%d0%b9-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-hudson/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Сеть в виртуальной машине на OpenVZ</title>
		<link>http://www.bozaro.ru/wordpress/2009/03/15/%d1%81%d0%b5%d1%82%d1%8c-%d0%b2-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd%d0%b5-%d0%bd%d0%b0-openvz/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/03/15/%d1%81%d0%b5%d1%82%d1%8c-%d0%b2-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd%d0%b5-%d0%bd%d0%b0-openvz/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 22:35:52 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=45</guid>
		<description><![CDATA[В догонку к посту Установка OpenVZ на Ubuntu Linux решил описать результаты копаний по поводу настройки сети в виртуальной машине OpenVZ.
Итого в vzctl можно добавить сетевой интерфейс следующими способами:

vzctl set 101 &#8211;ipadd 192.168.0.1 &#8211;save
Данный способ добавляет виртуальной машине интерфейс точка-тока с хост-машиной. В общем целом для простых случаев этого достаточно, но данный способ, к примеру, [...]]]></description>
			<content:encoded><![CDATA[<p>В догонку к посту <a href="../?p=32">Установка OpenVZ на Ubuntu Linux</a> решил описать результаты копаний по поводу настройки сети в виртуальной машине OpenVZ.</p>
<p>Итого в vzctl можно добавить сетевой интерфейс следующими способами:</p>
<ol>
<li>vzctl set 101 &#8211;ipadd 192.168.0.1 &#8211;save<br />
Данный способ добавляет виртуальной машине интерфейс точка-тока с хост-машиной. В общем целом для простых случаев этого достаточно, но данный способ, к примеру, не позволяет работать с broadcast-ами (он не подходит, если на виртуальную машину нужно установить Samba или DHCP-cервер).</li>
<li>vzctl set 101 &#8211;netdev_add eth0 &#8211;save<br />
Тут все тоже достаточно просто. Указанный сетевой интерфейс переносится в виртуальную машину. То есть он будет доступен только в указанной виртуальной машине (в хост-машине или нескольких виртуальных машинах его использовать нельзя).<br />
Так же данный способ не работает если попытаться перебросить в виртуальную машину VLAN-интерфейс.</li>
<li>vzctl set 101 &#8211;netif_add eth0 &#8211;save<br />
vzctl set 101 &#8211;netif_add eth0,00:18:51:d8:04:98,veth101.0,00:18:51:0f:a6:ab<br />
Самое интересное &#8211; данный способ создает пару интерфейсов (один в виртуальной машине &#8211; eth0, и один в хост-машине &#8211; veth101.0), но аргумент для указания моста в версии 3.0.22 еще отсутствует.</li>
</ol>
<p><span id="more-45"></span>Речь далее пойдет о 3-ем способе.</p>
<p>При старте интерфейса нужно принудительно добавить его в интерфес моста. Описание этого процесса было взято из статьи: <a title="Permanent Link: OpenVZ on Ubuntu 8.10" rel="bookmark" href="http://dmitry.shaposhnik.name/2009/03/01/openvz-on-ubuntu-810/">OpenVZ on Ubuntu 8.10</a> с небольшими правками (мне надо было иметь возможность указать разные мосты для разных интерфейсов), но суть та же.</p>
<p>Разница в реализации следующая:</p>
<ol>
<li>Соответствие моста и интерфейса я задавал через переменную:
<pre>VZBRIDGE="veth101.0,br0 veth101.1,br1"</pre>
</li>
<li>Скрипт /etc/vz/bin/vznetaddbr получился следующим:
<pre>#!/bin/bash
CONFIGFILE=/etc/vz/conf/${VEID}.conf
. $CONFIGFILE
for iter in $VZBRIDGE; do
    IFACE=${iter%,*}
    BRIDGE=${iter#*,}
    if [ "$IFACE" == "$3" ]; then
        echo Adding interface $IFACE to bridge $BRIDGE
        /sbin/ifconfig $IFACE up
        /usr/sbin/brctl addif $BRIDGE $IFACE
    fi
done</pre>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/03/15/%d1%81%d0%b5%d1%82%d1%8c-%d0%b2-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd%d0%b5-%d0%bd%d0%b0-openvz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка OpenVZ на Ubuntu Linux</title>
		<link>http://www.bozaro.ru/wordpress/2009/03/14/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-openvz-%d0%bd%d0%b0-ubuntu-linux/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/03/14/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-openvz-%d0%bd%d0%b0-ubuntu-linux/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 17:16:30 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=32</guid>
		<description><![CDATA[Решил озадачиться виртуализацией под Linux. Основная задача &#8211; разнести различные функции на различные виртуальные сервера на домашней машине (резервное копирование, мониторинг, DHCP, DNS, SubVersion и т.д.). Нужно это для следующих целей:

Чтобы можно было обновлять/восстанавливать/переустанавливать все это по отдельности;
Чтобы упростить борьбу с Firewall-ом, так как часть сервисов должна смотреть в Internet, а часть сугубо локальная;
Для проведения [...]]]></description>
			<content:encoded><![CDATA[<p>Решил озадачиться виртуализацией под Linux. Основная задача &#8211; разнести различные функции на различные виртуальные сервера на домашней машине (резервное копирование, мониторинг, DHCP, DNS, SubVersion и т.д.). Нужно это для следующих целей:</p>
<ol>
<li>Чтобы можно было обновлять/восстанавливать/переустанавливать все это по отдельности;</li>
<li>Чтобы упростить борьбу с Firewall-ом, так как часть сервисов должна смотреть в Internet, а часть сугубо локальная;</li>
<li>Для проведения экспериментов лучше виртуальной машины придумать что-то сложно.</li>
</ol>
<p>Выбор остановился на OpenVZ по следующим причинам:</p>
<ol>
<li>OpenVZ почти не дает усадки по производительности;</li>
<li>OpenVZ не требует процессора с поддержкой виртуализации.</li>
</ol>
<p>Минусы у OpenVZ:</p>
<ol>
<li>Под OpenVZ можно запустить только Linux, причем специально подготовленный;</li>
<li>В Ubuntu от OpenVZ отказываются в пользу KVM.</li>
</ol>
<p><span id="more-32"></span></p>
<h1>Установка OpenVZ</h1>
<p>Все операции выполняем от имени root-а:</p>
<pre>[HW]$ sudo bash</pre>
<p>Из Ubuntu 8.10 OpenVZ был исключен в пользу KVM, поэтому надо подключать репощиторий пакетов от Ubuntu 8.04:</p>
<pre>[HW]$ cat &lt;&lt; EOF &gt;&gt; <tt>/etc/apt/sources.list</tt>
deb <a href="http://de.archive.ubuntu.com/ubuntu/">http://de.archive.ubuntu.com/ubuntu/</a> hardy main restricted universe multiverse
deb <a href="http://de.archive.ubuntu.com/ubuntu/">http://de.archive.ubuntu.com/ubuntu/</a> hardy-updates main restricted universe multiverse
deb <a href="http://de.archive.ubuntu.com/ubuntu/">http://de.archive.ubuntu.com/ubuntu/</a> hardy-backports main restricted universe multiverse
EOF</pre>
<p>Далее просто устанавливаем OpenVZ:</p>
<pre>[HW]$ apt-get update
[HW]$ apt-get install linux-openvz vzctl</pre>
<p>Так же для OpenVZ нужно установить пакет bridge-utils, иначе виртуальные машины не будут иметь доступа в локальную сеть:</p>
<pre>[HW]$ apt-get install bridge-utils</pre>
<p>Конфиг /etc/network/interfaces должен выглядеть где-то так:</p>
<pre>auto lo
iface lo inet loopback

#Inet iface
auto eth0
iface eth0 inet dhcp

#eth1 - LAN
auto br0
iface br0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        bridge_ports eth1</pre>
<p>Для корректной работы в /etc/sysctl.conf пришлось дополнительно добавить следующие опции сети:</p>
<pre>[VPS]$ cat &gt;&gt; /etc/sysctl.conf &lt;&lt;EOF
#-- OpenVZ begin --#

# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0

# Enables source route verification
net.ipv4.conf.all.rp_filter = 1

# Enables the magic-sysrq key
kernel.sysrq = 1

# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0

# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

#-- OpenVZ end --#
EOF</pre>
<p>Затем меняем в /boot/grub/menu.lst дефолтовый вариант загрузки и перезагружаемся.</p>
<h1>Подготовка образа для виртуальной машины</h1>
<p>Сразу оговорюсь, что можно взять уже готовый образ с сайта: <a href="http://wiki.openvz.org/Download/template/precreated" target="_blank">http://wiki.openvz.org/Download/template/precreated</a>.</p>
<p>Но, так как данный образ нужно допиливать напильником (в нем нет русской локали и нет поддержки NFS), решено было изготовить свой образ с нуля.</p>
<p>Для этого нужно установить пакет debootstrap:</p>
<pre>[HW]$ sudo apt-get install debootstrap</pre>
<p>Затем создать директорию и установить в неё минимальный Ubuntu (ARCH нужно заменить на amd64 или i386 в зависимости от желаемой архитектуры):</p>
<pre>[HW]$ mkdir intrepid-chroot
[HW]$ sudo debootstrap [--arch ''ARCH''] intrepid intrepid-chroot</pre>
<p>Затем создаем виртуальную машину:</p>
<pre>[HW]$ sudo mv hardy-chroot /vz/private/101
[HW]$ sudo chown -R root /vz/private/101
[HW]$ sudo vzctl set 101 --applyconfig vps.basic --save
[HW]$ echo "OSTEMPLATE=ubuntu-8.10" | sudo tee -a /etc/vz/conf/101.conf &gt;/dev/null
[HW]$ sudo vzctl set 101 --ipadd x.x.x.x --save
[HW]$ sudo vzctl set 101 --nameserver x.x.x.x --save
[HW]$ sudo rm /vz/private/101/etc/rcS.d/S10udev</pre>
<p>Затем запускаем систему (в контейнере мы будем под root-ом):</p>
<pre>[HW]$ sudo vzctl start 777
[HW]$ vzctl enter 777</pre>
<p>Удаляем лишние пакеты:</p>
<pre>[VPS]$ apt-get remove --purge busybox-initramfs console-setup dmidecode eject \
 initramfs-tools klibc-utils laptop-detect libklibc libvolume-id0 module-init-tools \
 ntpdate ubuntu-minimal udev xkb-data tasksel tasksel-data</pre>
<p>Так же можно удалить DHCP:</p>
<pre>[VPS]$ apt-get remove --purge --auto-remove dhcp3-client dhcp3-common</pre>
<p>Меняем список источников:</p>
<pre>[VPS]$ export COUNTRY=&lt;YOURCOUNTRY&gt;.
[VPS]$ export DISTRIB=intrepid
[VPS]$ cat &gt;/etc/apt/sources.list &lt;&lt;EOF
# Binary
deb http://${COUNTRY}archive.ubuntu.com/ubuntu/ ${DISTRIB} main restricted universe multiverse
deb http://${COUNTRY}archive.ubuntu.com/ubuntu/ ${DISTRIB}-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu ${DISTRIB}-security main restricted universe multiverse

# Binary Canonical
# deb http://archive.canonical.com/ubuntu ${DISTRIB} partner

# Binary backport
# deb http://${COUNTRY}archive.ubuntu.com/ubuntu/ ${DISTRIB}-backports main restricted universe multiverse

# Source
# deb-src http://${COUNTRY}archive.ubuntu.com/ubuntu/ ${DISTRIB} main restricted universe multiverse
# deb-src http://${COUNTRY}archive.ubuntu.com/ubuntu/ ${DISTRIB}-updates main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu ${DISTRIB}-security main restricted universe multiverse

# Source backport
# deb-src http://${COUNTRY}archive.ubuntu.com/ubuntu/ ${DISTRIB}-backports main restricted universe multiverse

# Source Canonical
# deb-src http://archive.canonical.com/ubuntu ${DISTRIB} partner
EOF</pre>
<p>Доставляем нужные пакеты:</p>
<pre>[VPS]$ apt-get update &amp;&amp; apt-get upgrade
[VPS]$ apt-get install language-pack-ru nfs-common ssh mc</pre>
<p>Если установили SSH, то нужно позаботиться о том, чтобы у каждого виртуального контейнера были свои ключи:</p>
<pre>[VPS]$ rm -f /etc/ssh/ssh_host_*
[VPS]$ cat &lt;&lt; EOF &gt; /etc/rc2.d/S15ssh_gen_host_keys
#!/bin/sh
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''
rm -f \$0
EOF
[VPS]$ chmod a+x /etc/rc2.d/S15ssh_gen_host_keys</pre>
<p>Убираем файл mtab и делаем ссылкой на /pronc/mounts:</p>
<pre>[VPS]$ rm -f /etc/mtab
[VPS]$ ln -s /proc/mounts /etc/mtab
[VPS]$ update-rc.d -f mtab.sh remove</pre>
<p class="line862">Отключаем лишние службы:</p>
<pre>[VPS]$ update-rc.d -f klogd remove</pre>
<p>Так же желательно поменять локаль и часовой пояс:</p>
<pre>[VPS]$ echo LANG="ru_RU.UTF8" &gt; /etc/default/locale
[VPS]$ echo Europe/Moscow &gt; /etc/timezone
[VPS]$ ln -s ../usr/share/zoneinfo/Europe/Moscow /etc/localtime</pre>
<p>Убираем запуск терминалов:</p>
<p>В файлах  /etc/event.d/tty* надо заменить &laquo;start on runlevel 2&#8243; на &laquo;stop on runlevel 2&#8243;. Без этого в логах постоянно будет появляться сообщение о перезапуске терминала и постоянный запуск/падение getty будет давать ощутимую нагрузку на процессор.</p>
<p>Убираем следы жизнедеятельности:</p>
<pre>[VPS]$ echo "localhost" &gt; /etc/hostname
[VPS]$ echo "127.0.0.1 localhost.localdomain localhost" &gt; /etc/hosts
[VPS]$ cd /dev &amp;&amp; /sbin/MAKEDEV ptyp
[VPS]$ &gt; /etc/resolv.conf
[VPS]$ apt-get clean
[VPS]$ &gt; /var/log/messages; &gt; /var/log/auth.log; &gt; /var/log/kern.log; &gt; /var/log/bootstrap.log; \
&gt; /var/log/dpkg.log; &gt; /var/log/syslog; &gt; /var/log/daemon.log; &gt; /var/log/apt/term.log; rm -f /var/log/*.0 /var/log/*.1</pre>
<p>Выходим из виртуальной машины:</p>
<pre>[VPS]$ exit</pre>
<p>И финальный шаг &#8211; архивирование образа виртуальной машины:</p>
<pre>[HW]$ sudo tar -czf /var/lib/vz/template/cache/ubuntu-8.10-x86_64.tar.gz -C intrepid-chroot</pre>
<h1>Создание виртуальный машины</h1>
<p>Для создания виртуальной машины достаточно выполнить команды (номера виртуальных машин от 0 до 100 зарезервированы):</p>
<pre>[HW]$ sudo vzctl create 101 --ostemplate ubuntu-8.10-x86_64 --config vps.basic
[HW]$ sudo vzctl set 101 --hostname vm-test --save
[HW]$ sudo vzctl set 101 --ipadd x.x.x.x --save
[HW]$ sudo vzctl set 101 --nameserver x.x.x.x --save
[HW]$ sudo vzctl set 101 --features nfs:on --save
[HW]$ sudo vzctl set 101 --onboot yes --save
[HW]$ sudo vzctl start 101</pre>
<p>Так же хочу обратить внимание на файл /proc/user_beancounters, который содержит в себе все лимиты, наложенные на виртуальную машину и информацию о том, сколько раз она за них пыталась выйти.</p>
<h1>Исправление неполадок</h1>
<p>После игр с виртуальными машинами одна из них перестала подключаться по SSH и через vzctl enter. Выдавалась ошибка: &laquo;Unable to open pty: No such file or directory&raquo;.</p>
<p>Решилость это следующими командами:</p>
<pre>[HW]$ vzctl exec veid update-rc.d -f udev remove
[HW]$ vzctl restart veid</pre>
<h1>Ссылки по теме</h1>
<ul>
<li><a href="https://help.ubuntu.com/community/OpenVZ">https://help.ubuntu.com/community/OpenVZ</a></li>
<li><a href="http://openkazan.info/node/2946">http://openkazan.info/node/2946</a></li>
<li><a href="http://forum.openvz.org/index.php?t=msg&amp;goto=34305">http://forum.openvz.org/index.php?t=msg&amp;goto=34305</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/03/14/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-openvz-%d0%bd%d0%b0-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IDE для разработки на QT</title>
		<link>http://www.bozaro.ru/wordpress/2009/02/25/ide-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b8-%d0%bd%d0%b0-qt/</link>
		<comments>http://www.bozaro.ru/wordpress/2009/02/25/ide-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b8-%d0%bd%d0%b0-qt/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 21:57:34 +0000</pubDate>
		<dc:creator>Bozaro</dc:creator>
				<category><![CDATA[Софт для разработки ПО]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[QtCreator]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Разработка ПО]]></category>

		<guid isPermaLink="false">http://www.bozaro.ru/wordpress/?p=26</guid>
		<description><![CDATA[Выбор IDE для разработки на QT оказался достаточно веселой задачей: IDE много, все они разные, но у каждой свои косяки.
Найдены были следующие IDE, умеющие работать с QT:

Eclipse
Visual Studio (куда же мы без Microsoft  )
QtCreator
QDeveloper
KDevelop

Каждая из них имеет свои плюсы и минусы.
Eclipse
Eclipse это мощная среда разработке, изначально ориентированная на Java. Для работы с C++ вообще [...]]]></description>
			<content:encoded><![CDATA[<p>Выбор IDE для разработки на QT оказался достаточно веселой задачей: IDE много, все они разные, но у каждой свои косяки.</p>
<p>Найдены были следующие IDE, умеющие работать с QT:</p>
<ol>
<li>Eclipse</li>
<li>Visual Studio (куда же мы без Microsoft <img src='http://www.bozaro.ru/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
<li>QtCreator</li>
<li>QDeveloper</li>
<li>KDevelop</li>
</ol>
<p>Каждая из них имеет свои плюсы и минусы.<span id="more-26"></span></p>
<h2>Eclipse</h2>
<p>Eclipse это мощная среда разработке, изначально ориентированная на Java. Для работы с C++ вообще и QT в частности, надо устанавливать CDT (Eclipse C/C++ Development Tooling).</p>
<p>Взять сборку Eclipse+CDT можно здесь: <a href="http://www.eclipse.org/downloads/" target="_blank">http://www.eclipse.org/downloads/</a>.</p>
<p>Так как Eclipse о QT изначально ничего не знает, то нужно поставить модуль интеграции с QT: <a href="http://www.qtsoftware.com/developer/eclipse-integration" target="_blank">http://www.qtsoftware.com/developer/eclipse-integration</a>.</p>
<p>В итоге получается достаточно удобная IDE с богатым функционалом.</p>
<p>Плюсы данной связки:</p>
<ol>
<li>Данная комбинация работает и под Windows, и под Linux;</li>
<li>Под Eclipse есть много всего вкусного (интеграции с системами контроля версий, редакторы XSD и WSDL-файлов, и т.д.);</li>
<li>Работа ведется напрямую с .PRO-файлами;</li>
<li>Есть руссификация, поддержка любых кодировок;</li>
<li>Используются стандартные механизмы сборки.</li>
</ol>
<p>Минусы:</p>
<ol>
<li>Eclipse, как и все, кроме Visual Studio, под Windows работает только с MinGW;</li>
<li>При использовании MinGW из поставки QT отладчик (gdb) надо ставить отдельно (я брал из QtCreator-а);</li>
<li>Отладчик по-умолчанию не умеет показывать содержимое QString-ов (я это так и не поборол).</li>
</ol>
<h2>Visual Studio</h2>
<p>Тут основная особенность в том, что стоит выделить две редакции Visual Studio:</p>
<ol>
<li>Visual Studio Express &#8211; бесплатная редакция Visual Studio;</li>
<li>Visual Studio Standard (и выше) &#8211; платная редакция Visual Studio.</li>
</ol>
<p>Отличие между ними для разработчика только одно &#8211; в Visual Studio Express нелья установить никакие расширения, в том числе и интеграцию с QT (справедливости ради стоит отметить что интеграция QT с Visual Studio входит в коммерческую версию QT, которая тоже стоит денег). В остальном все остальное справедливо для обоих вариантов Visual Studio.</p>
<p>Какие плюсы дает использование Visual Studio:</p>
<ol>
<li>При замере времени исполнения кода, собранная под Visual Studio 2005 программа работала на 10-20% быстрее, чем она же, но собранная под MinGW;</li>
<li>Visual Studio является более &laquo;родной&raquo; для Windows средой разработки;</li>
<li>Качественный и удобный отладчик.</li>
</ol>
<p>Минусы:</p>
<ol>
<li>Без интеграции жить тяжко (надо править .PRO-файл и из него генерить .VCPROJ);</li>
<li>Работает только под Windows.</li>
</ol>
<h2>QtCreator</h2>
<p>Молодая среда разработки для QT от создателей QT (на момент написания еще не вышла первая версия). Имеет достаточно минималистичный и симпотичный вид.</p>
<p>Плюсы:</p>
<ol>
<li>Работает из коробки (включено IDE, компилятор, отладчик, библиотека QT);</li>
<li>Отладка и автозавершение учитывают особенности QT;</li>
<li>Работает под всеми, поддерживающими QT платформами;</li>
</ol>
<p>Минусы:</p>
<ol>
<li>Упорно считает, что все файлы в системной локали (я предпочитаю использование utf-8). Где настраивается &#8211; не нашел.</li>
</ol>
<p>Для первого релиза IDE выглядит очень достойно. Надеюсь, что проблему с кодировкой они достаточно бысто исправят.</p>
<h2>QDeveloper</h2>
<p>IDE на любителя. Игрался с ней сравнительно не долго, так как она мне почему-то не приглянулась.</p>
<p>Плюсы:</p>
<ol>
<li>Отладчик работает и показывает содержимое QString;</li>
<li>Работает и под Windows и под Linux.</li>
</ol>
<h2>KDevelop</h2>
<p>IDE от создателей KDE. Изначально работал с QT3 только под Linux. Версия для KDE4 сейчас находится на стадии беты.</p>
<p>Есть надежда, что KDevelop 4 будет так же работать и под Windows. Ждем <img src='http://www.bozaro.ru/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bozaro.ru/wordpress/2009/02/25/ide-%d0%b4%d0%bb%d1%8f-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b8-%d0%bd%d0%b0-qt/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
