<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aldebober</id>
		<title>Linuxformat - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aldebober"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Contributions/Aldebober"/>
		<updated>2026-05-13T20:24:35Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:54:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Kamaelia спроектирована для упрощения поддержки параллельных программ (это реальная область для исследований!).&lt;br /&gt;
Старые Unixхакеры согласятся, что «граф-каналы» [graphline], подобно обычным [pipeline], заведомо способны ста&lt;br /&gt;
ть полностью параллельными.&lt;br /&gt;
&lt;br /&gt;
=== Часть 3. Запись ваших сессий ===&lt;br /&gt;
&lt;br /&gt;
Если вы прошли предыдущие шаги, то теперь можете использовать «блокнот» для совместной работы с друзьями и коллегами – вплоть до игры в крестики-нолики. Записанная партия этой игры, возможно, не выглядит волнующе; однако фиксация страниц из вашего плана мирового господства и всей сессии его подготовки может и пригодиться. Так что рассмотрим, как записать сессию; как воспроизвести сессию; как загрузить и сохранить страницы из произвольного места на диске; и, наконец, как добавить MP3 к работающей сессии (скажем, для транскрипции). &lt;br /&gt;
&lt;br /&gt;
Прежде всего, запустите whiteboard-сервер, набрав&lt;br /&gt;
 ./Whiteboard. py --serveport=1500. &lt;br /&gt;
&lt;br /&gt;
Затем можно запустить программу записи, подключив ее к этому серверу. Если сервер работает на локальной машине, наберите&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 127.0.0.1 1500. &lt;br /&gt;
&lt;br /&gt;
Если whiteboard-сервер удаленный – в нашем случае, работающий на 192.168.2.5 – надо набрать&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 192.168.2.5 1500, и т.д. Для остановки записи просто нажмите Ctrl-C. &lt;br /&gt;
&lt;br /&gt;
Чтобы воспроизвести запись сессии, запустите сервер, набрав&lt;br /&gt;
 ./Whiteboard.py --serveport=1500. &lt;br /&gt;
Затем, опять-таки, для случая c локальной машиной, примерно так же запустите инструмент воспроизведения:&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_session.rec 127.0.0.1 1500 &lt;br /&gt;
&lt;br /&gt;
либо, для удаленной машины,&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_ session.rec 192.168.2.5 1500. &lt;br /&gt;
&lt;br /&gt;
Замечательно, что во время воспроизведения сессии вы можете разговаривать и малевать в «блокноте», благодаря тому, что с точки зрения системы, плейер – просто другой пользователь, подключившийся к «блокноту». Аналогично, программа записи так же получает данные, действуя как еще один клиент. &lt;br /&gt;
&lt;br /&gt;
Помимо метафоры переворота страниц, система также позволяет загружать и сохранять их вручную. Если вы вернетесь к консоли, с которой запустили «блокнот», вы найдете там скромненькое приглашение командной строки. Предположим, мне понравился наш план загрузки саней, и я решил сделать себе копию записи. Я мог бы сделать это, набрав одну из следующих команд:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Аналогично, если сохраненное изображение уже есть, я могу загрузить его, заменив команду SAVE на LOAD:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Если вы хотите воспроизводить MP3 во время сессии, вам понадобится запущенный whiteboard-сервер (скажем, 192.168.2.5 на порту 1500). Затем вы вводите:&lt;br /&gt;
 ./MP3Player some_podcast.mp3 192.168.2.5 1500 &lt;br /&gt;
Как и другие программы, MP3Player – это просто специализированный клиент, и люди могут обсуждать то, что он «говорит».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Рис.1:Example.jpg|Рис.1:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
Что происходит, когда несколько «блокнотов» объединяются, формируя сеть.&lt;br /&gt;
&lt;br /&gt;
=== Часть 4. Научная основа Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamaelia работает по принципу логического развития Unix-каналов [pipeline] на шаг вперед. Отличия заключаются в&lt;br /&gt;
 том, что вместо прямых каналов вы можете создать произвольные фигуры (которые мы называем «граф-каналами» [gra&lt;br /&gt;
phline]). Любой объект Python можно послать по ребрам этого графа – в отличие от однонаправленной файлоподобной схемы передачи данных. Кроме того, наши компоненты используют хитрость Python, позволяющую системе оставаться однопоточной. При желании, можно использовать и многопоточную архитектуру, но, в отличие от каналов Unix, нам не требуются тяжеловесные процессы. Это, естественно, в итоге поощряет маленькие, узкофункциональные компоненты и повторное использование кода. У многих юниксоидов этот подход является второй натурой – маленькие фрагменты кода, решающие конкретные задачи и свободно объединяющиеся. Хитрость, которую мы используем в Python, называется генератором. Это маленький, упрощенный объект, похожий на подпрограмму; его можно также рассматривать как возобновляемую функцию. Лучше пояснить на примере:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; def fib():&lt;br /&gt;
 ...           a,b = 1,1&lt;br /&gt;
 ...           while 1:&lt;br /&gt;
 ...                      yield a&lt;br /&gt;
 ...                      a,b = b, a+b&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; G = fib()&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; G&lt;br /&gt;
 &amp;lt;generator object at 0xb7b59bec&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; G.next(), G.next(), G.next(), G.next(), G.next()&lt;br /&gt;
 (1, 1, 2, 3, 5)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как видите, эта функция при вызове возвращает объект-генератор. Python делает это, поскольку в теле функции есть ключевое слово yield, позволяющее неоднократно вызывать метод next генератора – при этом в промежутках между вызовами система вольна использовать процессорное время по своему усмотрению. Затем поместим его внутрь класса с именем main. Это упрощает взаимодействие с функцией, добавление некоторых метаданных компонента, а в итоге – поддержку таких вещей, как визуальное составление систем с использованием графического компоновщика Compose. Простой компонент для вывода содержимого на экран может, например, выглядеть так:&lt;br /&gt;
from Axon.Component import component&lt;br /&gt;
 class ConsoleEchoer(component):&lt;br /&gt;
             def main(self):&lt;br /&gt;
                        while 1:&lt;br /&gt;
                                 while self.dataReady(‘inbox’):&lt;br /&gt;
                                             data = self.recv(‘inbox’)&lt;br /&gt;
                                             print data&lt;br /&gt;
                                 yield 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Этот код берет данные из inbox (похоже на чтение из stdin) и распечатывает их. С другой стороны, я упомянул, что у нас есть и многопоточные компоненты. Предположим, мы хотим написать компонент для чтения с консоли. Он может выглядеть примерно так:&lt;br /&gt;
 from Axon.ThreadedComponent import threadedcomponent&lt;br /&gt;
 class ConsoleReader(threadedcomponent):&lt;br /&gt;
             def main(self):&lt;br /&gt;
                        while 1:&lt;br /&gt;
                                 data = raw_input(‘&amp;gt;&amp;gt;&amp;gt;’)&lt;br /&gt;
                                 self.send(data, ‘outbox’)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По сути, так работает программа чтения мини-консоли нашего «блокнота»: это маленький, специализированный компонент для получения пользовательского ввода. Чтобы соединить эти два элемента в работающую систему, вы создаете канал:&lt;br /&gt;
 from Kamaelia.Chassis.Pipeline import Pipeline&lt;br /&gt;
 Pipeline(&lt;br /&gt;
            ConsoleReader(),&lt;br /&gt;
            ConsoleEchoer(),&lt;br /&gt;
 ).run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Функция button в Pygame работает примерно таким же целевым образом – она отрисовывает кнопку, и когда ее нажимают, отсылает сообщение. В качестве последнего примера мы создадим простой инструмент презентации, используя «граф-канал»:&lt;br /&gt;
 Graphline(&lt;br /&gt;
             CHOOSER = Chooser(items = files),&lt;br /&gt;
             IMAGE = Image(size=(800,600), position=(8,48)),&lt;br /&gt;
             NEXT = Button(caption=’Next’, msg=’NEXT’, position=(72,8)),&lt;br /&gt;
             PREVIOUS = Button(caption=’Previous’, msg=’PREV’,&lt;br /&gt;
 position=(8,8)),&lt;br /&gt;
             FIRST = Button(caption=’First’, msg=’FIRST’,&lt;br /&gt;
 position=(256,8)),&lt;br /&gt;
             LAST = Button(caption=’Last’, msg=’LAST’, position=(320,8)),&lt;br /&gt;
             linkages = {&lt;br /&gt;
                          (‘NEXT’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘PREVIOUS’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘FIRST’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘LAST’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘CHOOSER’, ‘outbox’):(‘IMAGE’, ‘inbox’),&lt;br /&gt;
             }&lt;br /&gt;
 ).run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Этот код создает четыре кнопки: NEXT, PREVIOUS, FIRST и LAST, которые отсылают сообщение компоненту выбора (CHOOSER). Тот выбирает, какое имя файла отправить компоненту изображения (IMAGE). Затем компонент изображения загружает и отображает картинку.&lt;br /&gt;
&lt;br /&gt;
=== Скорая помощь ===&lt;br /&gt;
&lt;br /&gt;
На сайте Kamaelia в разделе Cookbook можно найти обширную библиотеку примеров. После завершения нашего урока, это лучший способ перейти на следующий этап освоения Kamaelia. http://kamaelia. sourceforge.net/ Cookbook.html.&lt;br /&gt;
&lt;br /&gt;
=== И более того... ===&lt;br /&gt;
&lt;br /&gt;
Написать «блокнот» с помощью Kamaelia оказалось намного быстрее, чем на C или C# –наша первая работающая версия была готова за пару дней. Каркас Kamaelia также позволяет сделать приложение намного более гибким, и поскольку оно строится поверх существующих сетевых инструментов, мы получили возможность сосредоточиться исключительно на самом приложении. Конечно, проблемы были, но они возникли бы в любом случае. Этот подход сделал их более явными и более простыми в устранении. Мы используем Kamaelia для исследования лучших способов доставлять контент BBC, и позволяем BBC работать умнее. Где еще вы могли бы создать PVR с OpenGL и подключить его к IRC-серверу?&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Рис.2.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
Визуализатор: средство просмотра работающих систем изнутри.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:52:35Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Kamaelia спроектирована для упрощения поддержки параллельных программ (это реальная область для исследований!).&lt;br /&gt;
Старые Unixхакеры согласятся, что «граф-каналы» [graphline], подобно обычным [pipeline], заведомо способны ста&lt;br /&gt;
ть полностью параллельными.&lt;br /&gt;
&lt;br /&gt;
=== Часть 3. Запись ваших сессий ===&lt;br /&gt;
&lt;br /&gt;
Если вы прошли предыдущие шаги, то теперь можете использовать «блокнот» для совместной работы с друзьями и коллегами – вплоть до игры в крестики-нолики. Записанная партия этой игры, возможно, не выглядит волнующе; однако фиксация страниц из вашего плана мирового господства и всей сессии его подготовки может и пригодиться. Так что рассмотрим, как записать сессию; как воспроизвести сессию; как загрузить и сохранить страницы из произвольного места на диске; и, наконец, как добавить MP3 к работающей сессии (скажем, для транскрипции). &lt;br /&gt;
&lt;br /&gt;
Прежде всего, запустите whiteboard-сервер, набрав&lt;br /&gt;
 ./Whiteboard. py --serveport=1500. &lt;br /&gt;
&lt;br /&gt;
Затем можно запустить программу записи, подключив ее к этому серверу. Если сервер работает на локальной машине, наберите&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 127.0.0.1 1500. &lt;br /&gt;
&lt;br /&gt;
Если whiteboard-сервер удаленный – в нашем случае, работающий на 192.168.2.5 – надо набрать&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 192.168.2.5 1500, и т.д. Для остановки записи просто нажмите Ctrl-C. &lt;br /&gt;
&lt;br /&gt;
Чтобы воспроизвести запись сессии, запустите сервер, набрав&lt;br /&gt;
 ./Whiteboard.py --serveport=1500. &lt;br /&gt;
Затем, опять-таки, для случая c локальной машиной, примерно так же запустите инструмент воспроизведения:&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_session.rec 127.0.0.1 1500 &lt;br /&gt;
&lt;br /&gt;
либо, для удаленной машины,&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_ session.rec 192.168.2.5 1500. &lt;br /&gt;
&lt;br /&gt;
Замечательно, что во время воспроизведения сессии вы можете разговаривать и малевать в «блокноте», благодаря тому, что с точки зрения системы, плейер – просто другой пользователь, подключившийся к «блокноту». Аналогично, программа записи так же получает данные, действуя как еще один клиент. &lt;br /&gt;
&lt;br /&gt;
Помимо метафоры переворота страниц, система также позволяет загружать и сохранять их вручную. Если вы вернетесь к консоли, с которой запустили «блокнот», вы найдете там скромненькое приглашение командной строки. Предположим, мне понравился наш план загрузки саней, и я решил сделать себе копию записи. Я мог бы сделать это, набрав одну из следующих команд:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Аналогично, если сохраненное изображение уже есть, я могу загрузить его, заменив команду SAVE на LOAD:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Если вы хотите воспроизводить MP3 во время сессии, вам понадобится запущенный whiteboard-сервер (скажем, 192.168.2.5 на порту 1500). Затем вы вводите:&lt;br /&gt;
 ./MP3Player some_podcast.mp3 192.168.2.5 1500 &lt;br /&gt;
Как и другие программы, MP3Player – это просто специализированный клиент, и люди могут обсуждать то, что он «говорит».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Рис.1:Example.jpg|Рис.1:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
Что происходит, когда несколько «блокнотов» объединяются, формируя сеть.&lt;br /&gt;
&lt;br /&gt;
=== Часть 4. Научная основа Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamaelia работает по принципу логического развития Unix-каналов [pipeline] на шаг вперед. Отличия заключаются в&lt;br /&gt;
 том, что вместо прямых каналов вы можете создать произвольные фигуры (которые мы называем «граф-каналами» [gra&lt;br /&gt;
phline]). Любой объект Python можно послать по ребрам этого графа – в отличие от однонаправленной файлоподобной схемы передачи данных. Кроме того, наши компоненты используют хитрость Python, позволяющую системе оставаться однопоточной. При желании, можно использовать и многопоточную архитектуру, но, в отличие от каналов Unix, нам не требуются тяжеловесные процессы. Это, естественно, в итоге поощряет маленькие, узкофункциональные компоненты и повторное использование кода. У многих юниксоидов этот подход является второй натурой – маленькие фрагменты кода, решающие конкретные задачи и свободно объединяющиеся. Хитрость, которую мы используем в Python, называется генератором. Это маленький, упрощенный объект, похожий на подпрограмму; его можно также рассматривать как возобновляемую функцию. Лучше пояснить на примере:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; def fib():&lt;br /&gt;
 ...           a,b = 1,1&lt;br /&gt;
 ...           while 1:&lt;br /&gt;
 ...                      yield a&lt;br /&gt;
 ...                      a,b = b, a+b&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; G = fib()&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; G&lt;br /&gt;
 &amp;lt;generator object at 0xb7b59bec&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; G.next(), G.next(), G.next(), G.next(), G.next()&lt;br /&gt;
 (1, 1, 2, 3, 5)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как видите, эта функция при вызове возвращает объект-генератор. Python делает это, поскольку в теле функции есть ключевое слово yield, позволяющее неоднократно вызывать метод next генератора – при этом в промежутках между вызовами система вольна использовать процессорное время по своему усмотрению. Затем поместим его внутрь класса с именем main. Это упрощает взаимодействие с функцией, добавление некоторых метаданных компонента, а в итоге – поддержку таких вещей, как визуальное составление систем с использованием графического компоновщика Compose. Простой компонент для вывода содержимого на экран может, например, выглядеть так:&lt;br /&gt;
from Axon.Component import component&lt;br /&gt;
 class ConsoleEchoer(component):&lt;br /&gt;
             def main(self):&lt;br /&gt;
                        while 1:&lt;br /&gt;
                                 while self.dataReady(‘inbox’):&lt;br /&gt;
                                             data = self.recv(‘inbox’)&lt;br /&gt;
                                             print data&lt;br /&gt;
                                 yield 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Этот код берет данные из inbox (похоже на чтение из stdin) и распечатывает их. С другой стороны, я упомянул, что у нас есть и многопоточные компоненты. Предположим, мы хотим написать компонент для чтения с консоли. Он может выглядеть примерно так:&lt;br /&gt;
 from Axon.ThreadedComponent import threadedcomponent&lt;br /&gt;
 class ConsoleReader(threadedcomponent):&lt;br /&gt;
             def main(self):&lt;br /&gt;
                        while 1:&lt;br /&gt;
                                 data = raw_input(‘&amp;gt;&amp;gt;&amp;gt;’)&lt;br /&gt;
                                 self.send(data, ‘outbox’)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
По сути, так работает программа чтения мини-консоли нашего «блокнота»: это маленький, специализированный компонент для получения пользовательского ввода. Чтобы соединить эти два элемента в работающую систему, вы создаете канал:&lt;br /&gt;
from Kamaelia.Chassis.Pipeline import Pipeline&lt;br /&gt;
Pipeline(&lt;br /&gt;
           ConsoleReader(),&lt;br /&gt;
           ConsoleEchoer(),&lt;br /&gt;
).run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Функция button в Pygame работает примерно таким же целевым образом – она отрисовывает кнопку, и когда ее нажимают, отсылает сообщение. В качестве последнего примера мы создадим простой инструмент презентации, используя «граф-канал»:&lt;br /&gt;
 Graphline(&lt;br /&gt;
             CHOOSER = Chooser(items = files),&lt;br /&gt;
             IMAGE = Image(size=(800,600), position=(8,48)),&lt;br /&gt;
             NEXT = Button(caption=’Next’, msg=’NEXT’, position=(72,8)),&lt;br /&gt;
             PREVIOUS = Button(caption=’Previous’, msg=’PREV’,&lt;br /&gt;
 position=(8,8)),&lt;br /&gt;
             FIRST = Button(caption=’First’, msg=’FIRST’,&lt;br /&gt;
 position=(256,8)),&lt;br /&gt;
             LAST = Button(caption=’Last’, msg=’LAST’, position=(320,8)),&lt;br /&gt;
             linkages = {&lt;br /&gt;
                          (‘NEXT’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘PREVIOUS’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘FIRST’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘LAST’, ‘outbox’):(‘CHOOSER’, ‘inbox’),&lt;br /&gt;
                          (‘CHOOSER’, ‘outbox’):(‘IMAGE’, ‘inbox’),&lt;br /&gt;
             }&lt;br /&gt;
 ).run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Этот код создает четыре кнопки: NEXT, PREVIOUS, FIRST и LAST, которые отсылают сообщение компоненту выбора (CHOOSER). Тот выбирает, какое имя файла отправить компоненту изображения (IMAGE). Затем компонент изображения загружает и отображает картинку.&lt;br /&gt;
&lt;br /&gt;
=== Скорая помощь ===&lt;br /&gt;
&lt;br /&gt;
На сайте Kamaelia в разделе Cookbook можно найти обширную библиотеку примеров. После завершения нашего урока, это лучший способ перейти на следующий этап освоения Kamaelia. http://kamaelia. sourceforge.net/ Cookbook.html.&lt;br /&gt;
&lt;br /&gt;
=== И более того... ===&lt;br /&gt;
&lt;br /&gt;
Написать «блокнот» с помощью Kamaelia оказалось намного быстрее, чем на C или C# –наша первая работающая версия была готова за пару дней. Каркас Kamaelia также позволяет сделать приложение намного более гибким, и поскольку оно строится поверх существующих сетевых инструментов, мы получили возможность сосредоточиться исключительно на самом приложении. Конечно, проблемы были, но они возникли бы в любом случае. Этот подход сделал их более явными и более простыми в устранении. Мы используем Kamaelia для исследования лучших способов доставлять контент BBC, и позволяем BBC работать умнее. Где еще вы могли бы создать PVR с OpenGL и подключить его к IRC-серверу?&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Рис.2.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
Визуализатор: средство просмотра работающих систем изнутри.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:45:48Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Kamaelia спроектирована для упрощения поддержки параллельных программ (это реальная область для исследований!).&lt;br /&gt;
Старые Unixхакеры согласятся, что «граф-каналы» [graphline], подобно обычным [pipeline], заведомо способны ста&lt;br /&gt;
ть полностью параллельными.&lt;br /&gt;
&lt;br /&gt;
=== Часть 3. Запись ваших сессий ===&lt;br /&gt;
&lt;br /&gt;
Если вы прошли предыдущие шаги, то теперь можете использовать «блокнот» для совместной работы с друзьями и коллегами – вплоть до игры в крестики-нолики. Записанная партия этой игры, возможно, не выглядит волнующе; однако фиксация страниц из вашего плана мирового господства и всей сессии его подготовки может и пригодиться. Так что рассмотрим, как записать сессию; как воспроизвести сессию; как загрузить и сохранить страницы из произвольного места на диске; и, наконец, как добавить MP3 к работающей сессии (скажем, для транскрипции). &lt;br /&gt;
&lt;br /&gt;
Прежде всего, запустите whiteboard-сервер, набрав&lt;br /&gt;
 ./Whiteboard. py --serveport=1500. &lt;br /&gt;
&lt;br /&gt;
Затем можно запустить программу записи, подключив ее к этому серверу. Если сервер работает на локальной машине, наберите&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 127.0.0.1 1500. &lt;br /&gt;
&lt;br /&gt;
Если whiteboard-сервер удаленный – в нашем случае, работающий на 192.168.2.5 – надо набрать&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 192.168.2.5 1500, и т.д. Для остановки записи просто нажмите Ctrl-C. &lt;br /&gt;
&lt;br /&gt;
Чтобы воспроизвести запись сессии, запустите сервер, набрав&lt;br /&gt;
 ./Whiteboard.py --serveport=1500. &lt;br /&gt;
Затем, опять-таки, для случая c локальной машиной, примерно так же запустите инструмент воспроизведения:&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_session.rec 127.0.0.1 1500 &lt;br /&gt;
&lt;br /&gt;
либо, для удаленной машины,&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_ session.rec 192.168.2.5 1500. &lt;br /&gt;
&lt;br /&gt;
Замечательно, что во время воспроизведения сессии вы можете разговаривать и малевать в «блокноте», благодаря тому, что с точки зрения системы, плейер – просто другой пользователь, подключившийся к «блокноту». Аналогично, программа записи так же получает данные, действуя как еще один клиент. &lt;br /&gt;
&lt;br /&gt;
Помимо метафоры переворота страниц, система также позволяет загружать и сохранять их вручную. Если вы вернетесь к консоли, с которой запустили «блокнот», вы найдете там скромненькое приглашение командной строки. Предположим, мне понравился наш план загрузки саней, и я решил сделать себе копию записи. Я мог бы сделать это, набрав одну из следующих команд:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Аналогично, если сохраненное изображение уже есть, я могу загрузить его, заменив команду SAVE на LOAD:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Если вы хотите воспроизводить MP3 во время сессии, вам понадобится запущенный whiteboard-сервер (скажем, 192.168.2.5 на порту 1500). Затем вы вводите:&lt;br /&gt;
 ./MP3Player some_podcast.mp3 192.168.2.5 1500 &lt;br /&gt;
Как и другие программы, MP3Player – это просто специализированный клиент, и люди могут обсуждать то, что он «говорит».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Рис.1:Example.jpg|Рис.1:Example.jpg]]&lt;br /&gt;
Что происходит, когда несколько «блокнотов» объединяются, формируя сеть.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:44:51Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Kamaelia спроектирована для упрощения поддержки параллельных программ (это реальная область для исследований!).&lt;br /&gt;
Старые Unixхакеры согласятся, что «граф-каналы» [graphline], подобно обычным [pipeline], заведомо способны ста&lt;br /&gt;
ть полностью параллельными.&lt;br /&gt;
&lt;br /&gt;
=== Часть 3. Запись ваших сессий ===&lt;br /&gt;
&lt;br /&gt;
Если вы прошли предыдущие шаги, то теперь можете использовать «блокнот» для совместной работы с друзьями и коллегами – вплоть до игры в крестики-нолики. Записанная партия этой игры, возможно, не выглядит волнующе; однако фиксация страниц из вашего плана мирового господства и всей сессии его подготовки может и пригодиться. Так что рассмотрим, как записать сессию; как воспроизвести сессию; как загрузить и сохранить страницы из произвольного места на диске; и, наконец, как добавить MP3 к работающей сессии (скажем, для транскрипции). &lt;br /&gt;
&lt;br /&gt;
Прежде всего, запустите whiteboard-сервер, набрав&lt;br /&gt;
 ./Whiteboard. py --serveport=1500. &lt;br /&gt;
&lt;br /&gt;
Затем можно запустить программу записи, подключив ее к этому серверу. Если сервер работает на локальной машине, наберите&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 127.0.0.1 1500. &lt;br /&gt;
&lt;br /&gt;
Если whiteboard-сервер удаленный – в нашем случае, работающий на 192.168.2.5 – надо набрать&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 192.168.2.5 1500, и т.д. Для остановки записи просто нажмите Ctrl-C. &lt;br /&gt;
&lt;br /&gt;
Чтобы воспроизвести запись сессии, запустите сервер, набрав&lt;br /&gt;
 ./Whiteboard.py --serveport=1500. &lt;br /&gt;
Затем, опять-таки, для случая c локальной машиной, примерно так же запустите инструмент воспроизведения:&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_session.rec 127.0.0.1 1500 &lt;br /&gt;
&lt;br /&gt;
либо, для удаленной машины,&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_ session.rec 192.168.2.5 1500. &lt;br /&gt;
&lt;br /&gt;
Замечательно, что во время воспроизведения сессии вы можете разговаривать и малевать в «блокноте», благодаря тому, что с точки зрения системы, плейер – просто другой пользователь, подключившийся к «блокноту». Аналогично, программа записи так же получает данные, действуя как еще один клиент. &lt;br /&gt;
&lt;br /&gt;
Помимо метафоры переворота страниц, система также позволяет загружать и сохранять их вручную. Если вы вернетесь к консоли, с которой запустили «блокнот», вы найдете там скромненькое приглашение командной строки. Предположим, мне понравился наш план загрузки саней, и я решил сделать себе копию записи. Я мог бы сделать это, набрав одну из следующих команд:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Аналогично, если сохраненное изображение уже есть, я могу загрузить его, заменив команду SAVE на LOAD:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Если вы хотите воспроизводить MP3 во время сессии, вам понадобится запущенный whiteboard-сервер (скажем, 192.168.2.5 на порту 1500). Затем вы вводите:&lt;br /&gt;
 ./MP3Player some_podcast.mp3 192.168.2.5 1500 &lt;br /&gt;
Как и другие программы, MP3Player – это просто специализированный клиент, и люди могут обсуждать то, что он «говорит».&lt;br /&gt;
&lt;br /&gt;
[[Что происходит, когда несколько «блокнотов» объединяются, формируя сеть.:Example.jpg|Что происходит]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:43:19Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Kamaelia спроектирована для упрощения поддержки параллельных программ (это реальная область для исследований!).&lt;br /&gt;
Старые Unixхакеры согласятся, что «граф-каналы» [graphline], подобно обычным [pipeline], заведомо способны ста&lt;br /&gt;
ть полностью параллельными.&lt;br /&gt;
&lt;br /&gt;
=== Часть 3. Запись ваших сессий ===&lt;br /&gt;
&lt;br /&gt;
Если вы прошли предыдущие шаги, то теперь можете использовать «блокнот» для совместной работы с друзьями и коллегами – вплоть до игры в крестики-нолики. Записанная партия этой игры, возможно, не выглядит волнующе; однако фиксация страниц из вашего плана мирового господства и всей сессии его подготовки может и пригодиться. Так что рассмотрим, как записать сессию; как воспроизвести сессию; как загрузить и сохранить страницы из произвольного места на диске; и, наконец, как добавить MP3 к работающей сессии (скажем, для транскрипции). &lt;br /&gt;
&lt;br /&gt;
Прежде всего, запустите whiteboard-сервер, набрав&lt;br /&gt;
 ./Whiteboard. py --serveport=1500. &lt;br /&gt;
&lt;br /&gt;
Затем можно запустить программу записи, подключив ее к этому серверу. Если сервер работает на локальной машине, наберите&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 127.0.0.1 1500. &lt;br /&gt;
&lt;br /&gt;
Если whiteboard-сервер удаленный – в нашем случае, работающий на 192.168.2.5 – надо набрать&lt;br /&gt;
 ./WhiteboardRecorder.py whiteboard_session.rec 192.168.2.5 1500, и т.д. Для остановки записи просто нажмите Ctrl-C. &lt;br /&gt;
&lt;br /&gt;
Чтобы воспроизвести запись сессии, запустите сервер, набрав&lt;br /&gt;
 ./Whiteboard.py --serveport=1500. &lt;br /&gt;
Затем, опять-таки, для случая c локальной машиной, примерно так же запустите инструмент воспроизведения:&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_session.rec 127.0.0.1 1500 &lt;br /&gt;
&lt;br /&gt;
либо, для удаленной машины,&lt;br /&gt;
 ./WhiteboardPlayer.py whiteboard_ session.rec 192.168.2.5 1500. &lt;br /&gt;
&lt;br /&gt;
Замечательно, что во время воспроизведения сессии вы можете разговаривать и малевать в «блокноте», благодаря тому, что с точки зрения системы, плейер – просто другой пользователь, подключившийся к «блокноту». Аналогично, программа записи так же получает данные, действуя как еще один клиент. &lt;br /&gt;
&lt;br /&gt;
Помимо метафоры переворота страниц, система также позволяет загружать и сохранять их вручную. Если вы вернетесь к консоли, с которой запустили «блокнот», вы найдете там скромненькое приглашение командной строки. Предположим, мне понравился наш план загрузки саней, и я решил сделать себе копию записи. Я мог бы сделать это, набрав одну из следующих команд:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; SAVE ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Аналогично, если сохраненное изображение уже есть, я могу загрузить его, заменив команду SAVE на LOAD:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.png’&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; LOAD ‘/home/michaels/plans.jpg’ &lt;br /&gt;
&lt;br /&gt;
Если вы хотите воспроизводить MP3 во время сессии, вам понадобится запущенный whiteboard-сервер (скажем, 192.168.2.5 на порту 1500). Затем вы вводите:&lt;br /&gt;
 ./MP3Player some_podcast.mp3 192.168.2.5 1500 &lt;br /&gt;
Как и другие программы, MP3Player – это просто специализированный клиент, и люди могут обсуждать то, что он «говорит».&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Example.jpg|Что происходит, когда несколько «блокнотов» объединяются, формируя сеть.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:36:29Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Скорая помощь */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Kamaelia спроектирована для упрощения поддержки параллельных программ (это реальная область для исследований!).&lt;br /&gt;
Старые Unixхакеры согласятся, что «граф-каналы» [graphline], подобно обычным [pipeline], заведомо способны ста&lt;br /&gt;
ть полностью параллельными.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:36:09Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Клиент–сервер */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
===== Скорая помощь =====&lt;br /&gt;
Kamaelia спроектирована для упрощения поддержки параллельных программ (это реальная область для исследований!).&lt;br /&gt;
Старые Unixхакеры согласятся, что «граф-каналы» [graphline], подобно обычным [pipeline], заведомо способны ста&lt;br /&gt;
ть полностью параллельными.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-16T14:35:02Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Добавляем ингредиенты, по очереди */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
==== Поддержка мультимедиа ====&lt;br /&gt;
&lt;br /&gt;
Speex. «Блокнот» использует аудиокодек Speex для эффективной передачи звука. Сперва установите Speex, затем – PySpeex, а затем – PyMedia. (Speex используется непосредственно для кодирования, PySpeex для активации компонентов Speex, а PyMedia – для ввода/вывода). Установка Speex вполне стандартна – распакуйте speex-1.0.5.tar.gz, перейдите в полученный каталог, введите ./configure, затем – make и make install. Теперь нужно установить поддержку Speex для Python, распаковав PySpeex-0.2.tar.gz, перейдя в него и выполнив python setup.py install. Распакуйте предоставляемую версию PyMedia с наложенными заплатками и установите, как было описано выше. &lt;br /&gt;
&lt;br /&gt;
Python Image Library. Устанавливается так же, как Axon и Kamaelia: распаковать Imaging-1.1.5.tar.gz, перейти в полученный каталог и выполнить python setup.py install.&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подро&lt;br /&gt;
бных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.ne&lt;br /&gt;
t/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Ес&lt;br /&gt;
ли все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, &lt;br /&gt;
предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2. Использование «блокнота» ===&lt;br /&gt;
&lt;br /&gt;
«Блокнот» предусматривает запуск из каталога установки. Однако можно переместить каталог «блокнота» в любое удобное для вас место вашей системы. Запустите приложение командами:&lt;br /&gt;
 cd Kamaelia-0.5.0-rc1/Tools/Whiteboard/&lt;br /&gt;
 ./Whiteboard.py &lt;br /&gt;
&lt;br /&gt;
Если все завершилось нормально, вас встретит чистый экран и небольшая палитра цветов для рисования, а также ластик. Система будет захватывать звук, но поскольку мы запустили «блокнот» в автономном режиме (т.е. не в сети), он никуда не будет передаваться. Для начала, набросайте что-нибудь на первой странице. Для создания новых страниц, щелкайте на new page. Для перемещения назад и вперед между страницами, щелкайте на &amp;lt;&amp;lt; и &amp;gt;&amp;gt;. Все, что вы пишете на страницах, сохраняется, т.е. можно вернуться назад и увидеть это, даже если вы поменяете страницы. Эта функция означает, что использование «блокнота», особенно на ноутбуках-планшетах или внешних планшетках (т.е. таких, которые вы можете прикупить в супермаркете!), совершенно интуитивно. Чтобы запустить whiteboard-приложение как сервер, добавьте номер обслуживаемого порта:&lt;br /&gt;
 ./Whiteboard.py --serveport=1500 &lt;br /&gt;
&lt;br /&gt;
Сервер теперь будет способен принимать соединения от стольких клиентов, сколько потянет ваше оборудование. Чтобы подключиться как клиент, запустите&lt;br /&gt;
 ./Whiteboard.py --connectto=192.168.2.5:1500 &lt;br /&gt;
&lt;br /&gt;
где 192.168.2.5 – IP-адрес сервера, а 1500 – номер порта. Если вы выполняете тестирование на локальной машине (localhost, он же – 127.0.0.1), имеет смысл сделать копию каталога «блокнота» перед запуском второго экземпляра:&lt;br /&gt;
 cd Kamaelia-0.5/Tools&lt;br /&gt;
 cp -R Whiteboard ClientWhiteboard&lt;br /&gt;
 cd ClientWhiteboard&lt;br /&gt;
 ./Whiteboard.py --connectto=127.0.0.1:1500 &lt;br /&gt;
&lt;br /&gt;
(Вы, понятно, можете создать копию каталога где захотите.) Смысл заключается в том, что при перемещении между отредактированными страницами изменения сохраняются, и два постоянно затирающих друг друга «блокнота» могут буквально взбесить! Теперь, имея два «блокнота», вы можете видеть, что все нарисованное на первом дублируется на втором. Если кто-нибудь создает новые страницы локально, эти страницы видимы только ему – у каждого есть свой собственный набор локальных страниц. Коллекция страниц не синхронизируется просто потому, что мы решили, что так удобнее:&lt;br /&gt;
тогда не нужно проверять, что вы начинаете с одного и того же набора страниц перед соединением двух «блокнотов». Вы просто подключаетесь и начинаете взаимодействовать. С подключившимися друзьями можно еще и разговаривать. Качество звука сильно зависит от аудио-оборудования вашей машины и используемых микрофонов, так что стоит потратиться на внешний микрофон или гарнитуру. USB-микрофоны могут быть здесь особенно хороши. Если вы используете внешний микрофон, установите его как источник захвата по умолчанию в аудио-микшере вашей системы.&lt;br /&gt;
&lt;br /&gt;
==== Клиент–сервер ====&lt;br /&gt;
&lt;br /&gt;
Запуск «блокнота» как клиента и сервера – просто комбинация вышеприведенных опций: ./Whiteboard.py --serveport=1500 --connectto=192.168.2.5:1500 Тут «блокнот» становится настоящим узлом в терминах децентрализованной конфигурации. Однако понятия ячеистой [mesh] или древовидной [tree] конфигурации отсутствуют. Интересно было бы автоматизировать подключение к whiteboard-сети... Возникает очевидный вопрос: «Изображения сохраняются автоматически… а где?». А внутри подкаталога Scribbles, как стандартные PNG-файлы (поскольку PNG, благодаря сжатию без потерь, хорошо работает с изображениями, типичными для «блокнота»). На моей системе они находятся здесь:&lt;br /&gt;
 cd Kamaelia-0.5.0/Tools/Whiteboard/&lt;br /&gt;
 ls Scribbles&lt;br /&gt;
 slide.1.png slide.2.png slide.3.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia</id>
		<title>LXF86:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Kamaelia"/>
				<updated>2008-03-13T15:44:57Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Kamaelia: Работа по сети ==  '''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложен...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Ogre</id>
		<title>LXF86:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Ogre"/>
				<updated>2008-03-13T15:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Ogre: Лазеры и звук ==  ''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под так...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
Настроив звуковую систему, мы, наконец, можем заказывать наши звук и музыку. SDL_Mixer берет на себя их загрузку, а вам остается сделать два вызова функций Mix_LoadWAV() и Mix_LoadMSU(). Они принимают имя загружаемого файла и автоматически обрабатывают множество популярных форматов – WAV, MP3, OGG, MID и MOD, но если ваш дистрибутив не поддерживает формат MP3, то SDL, скорее всего, не сможет его проиграть. Кому интересно, общедоступную запись tipperary.mp3 я нашел в Сети – она совершенно не подходит для игры [«Путь далекий до Типперери» – популярная песенка английских солдат времен I Мировой войны, – прим. ред.], поэтому вы уж сами подберите нужный файл! Чтобы покончить с поддержкой звука, остается еще два шага. Добавьте в методе frameStarted() следующие три строки кода:&lt;br /&gt;
 if (!Mix_PlayingMusic()) {&lt;br /&gt;
  Mix_PlayMusic(m_Music, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Я не собираюсь вас унижать, объясняя этот код, кроме 0 в конце: это число повторов нашей мелодии [0 значит, что она будет проиграна всего один раз, без повтора, – прим. ред.]. Добавление звука лазера потребует немного мозгов, поскольку потребуется определить метод mousePressed(). В настоящий момент он пуст и сидит в chad.h. Заменим «заглушку» в chad.h на прототип и напишем реализацию этого метода в chad.cpp (чтобы лазер зазвучал). В chad.h, превратим строку....&lt;br /&gt;
 void mousePressed(MouseEvent* e) { }&lt;br /&gt;
&lt;br /&gt;
 ... в...&lt;br /&gt;
&lt;br /&gt;
 void mousePressed(MouseEvent* e);&lt;br /&gt;
&lt;br /&gt;
Тело этого метода надо поместить где-то в файле chad.cpp:&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
   Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Звук лазера теперь будет раздаваться при каждом нажатии кнопки мыши – не сногсшибательно, но начало хорошее! Можете скомпилировать свой код и насладиться звуками лазера.&lt;br /&gt;
&lt;br /&gt;
=== Прицел ===&lt;br /&gt;
&lt;br /&gt;
Если вы не снайпер сразу после дембеля, то вряд ли поражение цели на дальней дистанции покажется вам несложным. Для упрощения этой задачи многие игры содержат на экране небольшой прицел. Добавим и мы прицел в виде точки в игру Висельник Чед. Для этого необходимо проделать три шага: 1 Создать материал, который даст имя файлу. 2 Создать слой, который использует материал, и позиционировать его на экране. 3 Отобразить слой. Первые два пункта реализуются через систему скриптов Ogre; но для последнего шага придется написать код на С++. Начнем с материала. Сохраните следующий ‘код’ как target.material:&lt;br /&gt;
 material Chad/TargetSights&lt;br /&gt;
 {&lt;br /&gt;
            technique&lt;br /&gt;
            {&lt;br /&gt;
                       pass&lt;br /&gt;
                       {&lt;br /&gt;
                            lighting off&lt;br /&gt;
                            scene_blend alpha_blend&lt;br /&gt;
                            texture_unit&lt;br /&gt;
                            {&lt;br /&gt;
                                         texture terrain_detail.jpg&lt;br /&gt;
                            }&lt;br /&gt;
                       }&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Заметили? Я использовал для прицела текстуру terrain_detail.jpg, но только потому, что прицел очень мал: игроки увидят лишь небольшую серую точку. Вы можете взять свою картинку, но пока сойдет и эта. Следующий шаг – определить слой, который принимает материал и помещает его на экранной панели. Затем можно пристроить эту панель на экране, используя координату относительно левого верхнего угла, а также ширину и высоту. В любом случае, вот код – сохраните его в файл target.overlay:&lt;br /&gt;
 chadtarget&lt;br /&gt;
 {&lt;br /&gt;
            zorder 650&lt;br /&gt;
            container Panel(chadsight)&lt;br /&gt;
            {&lt;br /&gt;
                       metrics_mode relative&lt;br /&gt;
                       left 0.495&lt;br /&gt;
                       top 0.495&lt;br /&gt;
              width 0.004&lt;br /&gt;
              height 0.007&lt;br /&gt;
              transparent false&lt;br /&gt;
              material Chad/&lt;br /&gt;
 TargetSights&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Параметр zorder определяет, где панель отобразится на экране, в терминах глубины, то есть мы можем (если пожелаем) задать способ расположения элементов по слоям. В Ogre его максимальное значение 650 (прицел на вершине стека). Последний шаг – создание слоя, он займет всего две строки. Добавьте такой код в конец метода createOutdoorScene():&lt;br /&gt;
 Overlay *TargetSight = (Overlay*)OverlayManager::getSingleton().&lt;br /&gt;
 getByName(“chadtarget”);&lt;br /&gt;
 TargetSight-&amp;gt;show();&lt;br /&gt;
&lt;br /&gt;
Код загружает слой с именем, определенным в target.overlay, а затем отображает его. Не надо беспокоиться о потере указателя на слой – Ogre автоматически удерживает его посреди экрана, как определено в файле. Наши три шага проделаны; запустите игру и загляните в прицел. Пусть программировать было скучновато, но зато как удобно теперь целиться!&lt;br /&gt;
&lt;br /&gt;
=== Стреляем на поражение ===&lt;br /&gt;
&lt;br /&gt;
Настает главное событие этого урока: отстрел роботов, которые резвились в прошлом номере. Правду сказать, я не особо хотел отягчать насилием Висельника Чеда, но Ребекка – спец по насилию в нашей команде – отказалась плодить опечатки, пока мы не разнесем когонибудь на куски. Пусть будет так. У нас уже есть метод mousePressed() для проигрывания звука лазера, поэтому код для стрельбы подойдет именно сюда. Стрелять будем так: с позиции камеры проводим луч, аналогично тому, как мы делали для определения высоты игрока над уровнем земли. Это непростая геометрическая задача, но, к счастью, Ogre все делает сам, одним методом: getCameraToViewportRay(), который преобразует позицию на экране в позицию в нашем мире и позволяет пустить луч из положения камеры. При необходимости выбирать объекты мышью, можно было бы использовать указатель на объект-событие, передаваемый методу mousePressed(), но мы хотим просто пустить луч через центр экрана, и поэтому используем для координат X и Y значения 0.5. Вот код улучшенного метода mousePressed():&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
          Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
          Ray mouseray = m_Camera-&amp;gt;getCameraToViewportRay(0.5,&lt;br /&gt;
  0.5);&lt;br /&gt;
          RaySceneQuery* scenequery = m_SceneMgr&lt;br /&gt;
 -&amp;gt;createRayQuery(Ray());&lt;br /&gt;
          scenequery-&amp;gt;setRay(mouseray);&lt;br /&gt;
          RaySceneQueryResult &amp;amp;result = scenequery-&amp;gt;execute();&lt;br /&gt;
          if (!result.empty()) {&lt;br /&gt;
               for (unsigned int i = 0; i &amp;lt; result.size(); ++i) {&lt;br /&gt;
               RaySceneQueryResultEntry &amp;amp;re = result[i];&lt;br /&gt;
               if (re.movable &amp;amp;&amp;amp; re.movable-&amp;gt;getMovableType() ==&lt;br /&gt;
 “Entity”) {&lt;br /&gt;
                           Entity *ent = (Entity*)(re.movable);&lt;br /&gt;
                           String name = ent-&amp;gt;getName();&lt;br /&gt;
                           if (name == “water”) continue; // игнорируем воду&lt;br /&gt;
                           for (unsigned int j = 0; j &amp;lt; Enemies.size(); ++j) {&lt;br /&gt;
                                         if (Enemies[j]-&amp;gt;m_EnemyName ==&lt;br /&gt;
  name) {&lt;br /&gt;
                                                      Enemies[j]-&amp;gt;Hit();&lt;br /&gt;
                                                      return;&lt;br /&gt;
                                                      }&lt;br /&gt;
                                         }&lt;br /&gt;
                           }&lt;br /&gt;
                  }&lt;br /&gt;
           }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Послав луч, я прошелся в цикле по откликам в поисках сущностей (в отличие от элементов ландшафта), а затем отсек водную поверхность. Остаются только роботы; получим имя жертвы и найдем в списке роботов соответствующий объект, а затем вызовем его метод Hit(). Те, кто следил за нашими уроками с самого начала, возможно, воскликнет: у наших врагов нет ни имени, ни метода Hit()! Исправим это: откройте файл chadenemy.h и добавьте эти строки до объявления m_Speed:&lt;br /&gt;
 char m_EnemyName[32];&lt;br /&gt;
 bool m_IsDead&lt;br /&gt;
&lt;br /&gt;
Теперь добавьте следующие две строчки после метода Update():&lt;br /&gt;
 void SetAnimation(String animation, bool loop);&lt;br /&gt;
 void Hit();&lt;br /&gt;
&lt;br /&gt;
Метод SetAnimation() я вставил, потому что мне было тошно писать три строчки кода для выполнения одной простой вещи. Можете игнорировать его, если хотите.&lt;br /&gt;
&lt;br /&gt;
Мы уже устанавливали имена врагов в конструкторе (файл chadenemy.cpp), но использовали временную локальную пере&lt;br /&gt;
менную. Теперь, когда у нас есть m_EnemyName, мы можем хранить ее там, чтобы найти правильный объект сцены, поп&lt;br /&gt;
ав в робота. Просто замените следующие три строки кода… &lt;br /&gt;
 char enemyname[32];&lt;br /&gt;
 sprintf(enemyname, “Robot %d”, ++EnemyNum);&lt;br /&gt;
 m_Entity = m_SceneMgr-&amp;gt;createEntity(enemyname, “robot.&lt;br /&gt;
 mesh”);&lt;br /&gt;
&lt;br /&gt;
... на следующие две...&lt;br /&gt;
 sprintf(m_EnemyName, “Robot %d”, ++EnemyNum);&lt;br /&gt;
 m_Entity = m_SceneMgr-&amp;gt;createEntity(m_EnemyName, “robot.&lt;br /&gt;
 mesh”);&lt;br /&gt;
&lt;br /&gt;
Теперь нужно написать метод Hit(), изменить анимацию робота и&lt;br /&gt;
установить переменную m_IsDead в значение true, например, так:&lt;br /&gt;
 void CChadEnemy::Hit() {&lt;br /&gt;
            if (!m_IsDead) {&lt;br /&gt;
                       m_AnimationState-&amp;gt;setEnabled(false);&lt;br /&gt;
                       SetAnimation(“Die”, false);&lt;br /&gt;
                       m_IsDead = true;&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
То есть, если чудовище не сдохло на месте, отмените его текущую анимацию, измените его анимацию на «умирающий» (не в цикле, конечно), а затем добейте его. Теперь необходимо сказать игре, что делать, если робот убит. Для начала сделаем, чтобы убитые роботы переставали двигаться, освободив метод Update(), раз уж робот встретился со своим создателем. Далее, в методе Update() необходимо удалить робота-покойника из игры. Иначе все убитые роботы будут валяться вокруг – но, возможно, вам того и надо! В файле chadenemy.cpp измените начало метода Update() на следующее:&lt;br /&gt;
 void CChadEnemy::Update(Real time) { m_AnimationState-&amp;gt;addTime(time);&lt;br /&gt;
 if (m_IsDead) return;&lt;br /&gt;
&lt;br /&gt;
Здесь все понятно: мы хотим, чтобы робот продолжал проигрывать анимацию (чтобы анимация «Умер» отработала правильно), но не хотим, чтобы он перемещался или поворачивался к игроку. Если робот внезапно умер, мы скоренько выходим из функции.&lt;br /&gt;
&lt;br /&gt;
=== Обломки роботов ===&lt;br /&gt;
&lt;br /&gt;
Удалить мертвых роботов из вектора Enemies желательно элегантным способом, так что потребуется немного подумать. Если робот погиб, и текущее положение в анимации равно ее полной длине, освободим память и присвоим его сущности в массиве Enemies значение NULL. Затем используем метод erase() из библиотеки STL, чтобы удалить из вектора всех обнуленных врагов, а это, в свою очередь, требует использования особого алгоритма STL – remove_if. Звучит хитроумно, но все именно так: STL умеет автоматически удалять элементы из вектора на основе заданного критерия. Можно написать функцию, принимающую элемент вектора, и если функция возвратит значение true, элемент будет удален. Цикл обновления состояния врагов в методе frameStartedOutside() файла chad.cpp нужно привести к следующему виду:&lt;br /&gt;
 for (unsigned int i = Enemies.size() - 1; i &amp;gt; 0; --i) {&lt;br /&gt;
            CChadEnemy* enemy = Enemies[i];&lt;br /&gt;
            enemy-&amp;gt;Update(evt.timeSinceLastFrame);&lt;br /&gt;
            if (enemy-&amp;gt;m_IsDead &amp;amp;&amp;amp; enemy-&amp;gt;m_AnimationState&lt;br /&gt;
-&amp;gt;getTimePosition() == enemy-&amp;gt;m_AnimationState-&amp;gt;getLength()) {&lt;br /&gt;
                         m_SceneMgr-&amp;gt;getRootSceneNode()-&lt;br /&gt;
 &amp;gt;removeAndDestroyChil&lt;br /&gt;
 d(enemy-&amp;gt;m_EnemyName);&lt;br /&gt;
                         delete Enemies[i];&lt;br /&gt;
                         Enemies[i] = NULL;&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
 Enemies.erase(remove_if(Enemies.begin(), Enemies.end(), IsNull),&lt;br /&gt;
 Enemies.end());&lt;br /&gt;
&lt;br /&gt;
Мы перешли от использования цикла с итератором к циклу с целочисленным счетчиком, чтобы манипулировать отдельными элементами вектора Enemies. Убедившись, что враг мертв и доиграл свою анимацию до конца, мы вызываем метод removeAndDestroyChild() корневого узла сцены и выносим из нее покойника. Затем роботу присваивается значение NULL и освобождается занимаемая им память. После цикла вызываются чародеи erase() и remove_if(); последний принимает как параметры начало и конец диапазона, а также функцию обратного вызова. Эта строка пройдется по всему вектору Enemies и удалит элементы, которым при передаче их в функцию IsNull() возвращается значение true. Недостает только самой функции IsNull(), но с ней разобраться проще всего. Откройте файл chad.h и добавьте следующую строку к списку директив #include:&lt;br /&gt;
 #include &amp;lt;algorithm&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Эта строка задействует алгоритм remove_if. Теперь добавьте такую строку сразу после ‘using namespace Ogre’:&lt;br /&gt;
 bool IsNull(void* somepointer) { return (somepointer == NULL); } &lt;br /&gt;
&lt;br /&gt;
Она отвечает на вопрос: не NULL ли значение некого указателя? Просто и мило.&lt;br /&gt;
&lt;br /&gt;
=== Вместо заключения ===&lt;br /&gt;
&lt;br /&gt;
На протяжении пяти уроков мы прошли путь создания 3D-игры с музыкой, звуками и врагами. Я думаю, неплохо. Причем согласитесь, вопросы математики мы почти не обсуждали. Может, от кватернионов у вас голова и пошла кругом, но в основном за вас думал Ogre. Надеюсь, вы кое-что узнали насчет процесса создания 3D игры – в частности, как просто, немного потрудившись, получить солидные результаты. И действительно, написав 500 строк кода, мы уже можем чем-то гордиться: пусть это не образцовая игра, но хороший демо-пример и отличная отправная точка для разработки таковой. Может, вам захочется создать новые уровни, добавить в&lt;br /&gt;
рагов или изменить цель игры в Чеда. Желаем удачи – потом расскажете, как далеко вы продвинулись!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;br /&gt;
&lt;br /&gt;
=== Очистка памяти ===&lt;br /&gt;
&lt;br /&gt;
Я признаю, что люблю что-то делать, но не люблю убирать за собой. Возможно, именно поэтому мне нравится програм&lt;br /&gt;
мировать под Mono – он автоматически подбирает за вами весь мусор! Пока что мы не беспокоились об освобождении &lt;br /&gt;
отведенной памяти, поскольку Linux освобождает ОЗУ автоматически. Но если вы планируете что-то динамически подг&lt;br /&gt;
ружать во время игры, тут уж об освобождении памяти придется позаботиться. Если вы, например, запустите звук и музыку, то в конце концов память будет исчерпана. Ogre прекрасно выполняет свои задачи, а вот памятью управляет плоховато, ибо пытается вмешаться в управление. Под С++ освобождение памяти не слишком поддается интуиции: вы беспокоитесь об одном, а нужно вовсе другое. Не тратьте время на попытки понять, что там вытворяет Ogre, лучше займитесь собственными обязанностями. Они сводятся к выполнению правила: при каждом применении new для создания нового объекта, не забывайте использовать delete для его удаления. В методе run() у нас есть следующая строка:&lt;br /&gt;
 m_Player = new CChadPlayer();&lt;br /&gt;
&lt;br /&gt;
В методе CChadGame::~CChadGame() необходимо добавить следующее:&lt;br /&gt;
 delete m_Player;&lt;br /&gt;
&lt;br /&gt;
SDL имеет собственные функции для освобождения аудиоресурсов, и понадобится вставить туда же такие две строчки:&lt;br /&gt;
 Mix_FreeChunk(m_MixFire);&lt;br /&gt;
 Mix_FreeChunk(m_Music);&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-13T15:43:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Безопасность: Зондируем систему ==  ''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org).&lt;br /&gt;
&lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения.&lt;br /&gt;
 &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
&lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
&lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). &lt;br /&gt;
&lt;br /&gt;
Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. &lt;br /&gt;
&lt;br /&gt;
Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все.&lt;br /&gt;
&lt;br /&gt;
Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. &lt;br /&gt;
&lt;br /&gt;
Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. &lt;br /&gt;
&lt;br /&gt;
Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. &lt;br /&gt;
&lt;br /&gt;
Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. &lt;br /&gt;
&lt;br /&gt;
Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.&lt;br /&gt;
 &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;br /&gt;
&lt;br /&gt;
=== Бойтесь сканеров ===&lt;br /&gt;
&lt;br /&gt;
Будьте осторожны при сканировании действующих серверов с помощью Nessus – некоторые типы сканирования (по умолчанию они отключены) выполняют атаки типа «отказ в обслуживании», способные вывести сервер из строя. Лучшее время выполнения подобных тестов – перед тем, как сервер будет подготовлен к реальной работе. Если вам потребуется &lt;br /&gt;
просканировать его позже, выберите время, когда временная недоступность сервера вызовет минимальные неудобства.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Inkscape</id>
		<title>LXF86:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Inkscape"/>
				<updated>2008-03-13T15:43:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Inkscape: Тест на фоне Xara ==  ''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''  Э...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape: Тест на фоне Xara ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьи дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:Wine</id>
		<title>LXF86:Wine</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:Wine"/>
				<updated>2008-03-13T15:42:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Wine: Windows ==  ''Программное обеспечение не станет свободным за одну ночь, и пока что приходится запускат...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wine: Windows ==&lt;br /&gt;
&lt;br /&gt;
''Программное обеспечение не станет свободным за одну ночь, и пока что приходится запускать Windows-приложения в Linux – '''Энди Ченнел''' покажет, как это сделать.''&lt;br /&gt;
&lt;br /&gt;
Свобода – это здорово, но иногда нужно срочно сделать работу, а угрызения совести оставить на потом. Ради Photoshop, PowerPoint или Grand Theft Auto многие законопослушные линуксоиды тайком обращаются к своим Windows-разделам, не найдя в Linux достойного аналога.&lt;br /&gt;
Но зачем использовать Windows-приложения непременно под Windows? Одна из альтернатив – установка Wine, свободной системы совместимости. Она дублирует многие функции Windows API и способна запустить немало родных приложений Windows. Не нужно дополнительно обзаводиться Windows или запускать полноценную гостевую ОС, чтобы просто поработать с небольшой программой. К сожалению, Wine иногда не справляется с запуском конкретного приложения – хотя по мере взросления проекта это встречается все реже и реже (вы также можете взглянуть на список альтернативных вариантов на стр. 48).&lt;br /&gt;
На данном уроке мы установим Wine и посмотрим, как здесь воссоздается файловая система Windows для запуска Windows-приложений. Опробуем также одну из наиболее популярный реализаций Wine – CrossOver, позволяющую работать с пакетом MS Office.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1 Установка Wine ===&lt;br /&gt;
&lt;br /&gt;
Наш эксперт&lt;br /&gt;
Энди Ченнел&lt;br /&gt;
Энди делает свои первые шаги в Linux уже шесть лет, а технологиями интересуется &lt;br /&gt;
еще со времен Dragon 32.&lt;br /&gt;
&lt;br /&gt;
Для данного урока я использовал простую, но обновленную установку Ubuntu, хотя если Wine уже получен и установлен, то процедура инсталляции и запуска приложений будет одинакова в Fedora Core, Linspire или любой другом дистрибутиве. Как и для других программ Linux, имеется несколько способов установки Wine. В порядке убывания сложности, это сборка из исходных текстов, загрузка и установка пакета с http://www.Winehq.com и использование менеджера пакетов вашего дистрибутива. Мы собираемся воспользоваться последним способом, но не потому, что я такой глупый – просто тогда приложение включается в систему обновления дистрибутива, и вам всегда будет доступна новая версия. Выбрав способ установки, можно двигаться дальше. В Ubuntu это означает запуск Synaptic (''Система &amp;gt; Администрирование &amp;gt; Менеджер пакетов Synaptic'') и использование инструмента Поиска для обнаружения Wine, который должен быть доступен в виде отдельного пакета. Пометьте его для установки и нажмите Применить для загрузки и установки. Теперь откройте терминал и наберите wine для автоматической настройки. Если вы желаете убедиться, что Wine установлен, откройте ваш домашний каталог, выполните ''Вид &amp;gt; Показывать скрытые файлы'' и продвиньтесь вниз до .wine (напомним, что Linux скрывает файлы и каталоги, начинающиеся с точки). Заглянув в этот каталог, вы обнаружите пару директорий с именами Program Files и Windows; это аналоги их тезок в реальной системе Windows. Я всегда добавляю каталог Downloads (стандартно: правый щелчок и затем ''Создать &amp;gt; Каталог'') как репозитарий для загружаемых установочных файлов. На то есть две причины: во-первых, я аккуратист, а во-вторых, это облегчает поиск приложений, которые необходимо переустановить – они всегда в одном месте. Хочу предостеречь вас: вы могли подумать, что Wine – эмулятор Windows... а вот и нет. Это API-совместимая прослойка, и назвав ее эмулятором в присутствии разработчиков Wine, вы станете белой вороной.&lt;br /&gt;
&lt;br /&gt;
=== Часть 2 Запуск Windows-программ ===&lt;br /&gt;
&lt;br /&gt;
Теперь переберемся в терминал. Я сам патологически боюсь работать с компьютером без графических инструментов, но в конце концов это себя оправдывает – и мы не засядем там надолго, обещаю! Откройте терминал – Konsole, Gnome Terminal, вообще любой – и наберите winecfg для запуска утилиты настройки приложения. А не сработает, попробуйте скомандовать &lt;br /&gt;
 /usr/local/bin/winecfg&lt;br /&gt;
 &lt;br /&gt;
Запустится простенькая утилитка, которую можно использовать для указания версии Windows, которую вы хотите, кхе, эмулировать, и различных настроек: звука, видео и прочего. Скорее всего, вам ничего не придется менять здесь, но правка файла настройки приложения может пригодиться, если, например, окажется, что оно разработано для Windows 95 или отказывается работать в режиме более чем 8-битного цвета. Что для нас важнее, в этой утилите также указывается расположение различных «вместилищ файлов», которыми пользуется Windows, например, Мои документы и Мои рисунки. По умолчанию, они попадают во всегдашнюю папку /home/имя_пользователя, но ее легко заменить (используя соглашения об именах файлов в Linux) любой другой, чтобы приложения Windows правильно интегрировались в рабочий стол Linux. Для изменения этих настроек, выберите запись Мое нечто, нажмите кнопку Выбрать и задайте местоположение по вашему выбору. Итак, Wine установлен и настроен, пришло время скогтить какоенибудь приложение. В моем случае это небольшой, бесплатный (как пиво) персональный финансовый менеджер под названием AceMoney Lite (http://www.mechcad.net/products/acemoney/index_lite.shtml). Это не только отличный финансовый пакет, но и Windows-приложение, дружественное к Wine. После загрузки приложения переместите его в корень файловой системы лже-Windows. Linux видит его как директорию: &lt;br /&gt;
 /home/andy/.wine/drive_c/ Windows &lt;br /&gt;
&lt;br /&gt;
(а значит, и Wine), однако, считают, что это &lt;br /&gt;
 c:\\ &lt;br /&gt;
&lt;br /&gt;
Это различие становится важным, когда мы начинаем устанавливать Windows-приложения. Как и большинство других Linux приложений, Wine можно запустить, открыв терминал, набрав имя приложения и нажав клавишу Enter. Разница в том, что мы должны предоставить Wine топливо для работы, а именно, путь к запускаемому приложению. Выполните&lt;br /&gt;
 wine c:\\AceMoneyLiteSetup.exe &lt;br /&gt;
&lt;br /&gt;
Вторую часть этой команды замените на имя приложения, которое выбрали вы. Приложение должно запуститься (если Wine умеет с ним работать), а остальная проПроизводите настройку так, чтобы цедура установки аналогична приложения попали в должные таковой в Windows. места Linux.&lt;br /&gt;
&lt;br /&gt;
=== Ярлыки на рабочем столе ===&lt;br /&gt;
&lt;br /&gt;
После успешной установки приложения, вы можете запустить его, вновь открыв терминал и набрав&lt;br /&gt;
 wine c:\\path\\to\ the\\application.exe &lt;br /&gt;
&lt;br /&gt;
Обратите внимание на важные особенности записи этого пути. В Windows для указания подкаталога используется один обратный слэш (\), но оболочка Linux трактует его как признак спецсимвола, поэтому используется двойной обратный слэш (\\). Необходимо также «экранировать» слэшами пробелы, так что путь Windows вроде&lt;br /&gt;
 C:\Program Files\ MyApp\MyApp.exe &lt;br /&gt;
&lt;br /&gt;
превращается в&lt;br /&gt;
 c:\\Program\ Files\\MyApp\\MyApp.exe &lt;br /&gt;
&lt;br /&gt;
Как сказано выше, я ужас как не люблю пользоваться командной строкой, когда можно обойтись щелчком мыши – поэтому добавлю к нашей команде симпатичную иконку и помещу ее на рабочий стол. Щелкните правой кнопкой мыши в любом месте рабочего стола и выберите ''Создать &amp;gt; Ссылка на приложение''. Введите имя приложения (если хотите, снабдите его описанием), затем – команду запуска приложения. Теперь нажмите кнопку со стандартной иконкой, выберите из приведенных иконок то, что вам понравится, и нажмите OK. Дважды щелкните на новом ярлыке, и voila! Процесс Windows-программы пошел. Чтоб жизнь малиной не казалась, метод добавления Wine-записей в меню приложений Gnome слегка отличается от добавления ярлыка на рабочий стол. В Ubuntu структура меню редактируется в редакторе Alacarte, доступном через ''Applications &amp;gt; Accessories''. Я собираюсь создать отдельный раздел меню с именем «Приложения Windows»; выполните ''Файл &amp;gt; Новое меню'', дайте ему имя и нажмите OK. Стрелками у правого края окна Alacarte можно пользоваться для перемещения вновь созданного раздела меню вверх и вниз по списку.&lt;br /&gt;
&lt;br /&gt;
=== Учебник Первые шаги ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Выбрав в главной панели пункт ''Приложения Windows (Windows Applications)'', следует нажать ''Файл &amp;gt; Новый'' и затем ввести детали в диалоговом окне. Вот и большое отличие: вместо предыдущего метода ввода пути следует использовать метод Linux, а именно указать команду (wine) и полный путь (/.wine/drive_c/Program Files/AceMoney/ AceMoney.exe), заключенный в одиночные кавычки. Выглядит это так:&lt;br /&gt;
 wine ‘/.wine/drive_c/Program Files/AceMoney/AceMoney.exe’ &lt;br /&gt;
&lt;br /&gt;
Сделав это, добавьте подходящую иконку, убедитесь, что небольшая кнопка слева от записи Приложения Windows нажата (чтоб сделать меню видимым в главном меню), и нажмите ''Файл &amp;gt; Выход или кнопку Закрыть''. Теперь вы можете запустить программу, нажав ''Приложения &amp;gt; Приложения Windows &amp;gt; AceMoney''. Все работает, и это хорошо, но упрощение действий – еще лучше; и мы в состоянии сделать работу в Linux прямо-таки магией. Поэтому настроим рабочий стол на установку исполняемых EXE-файлов Windows просто по двойному щелчку на иконке. К счастью, это просто, как дважды два, и лишь слегка отличается от стандартного метода создания «файловой привязки». Сначала найдите установочный EXEфайл, потом щелкните на нем правой кнопкой. После этого выберите пункт меню Открыть в другом приложении... Wine легко назначить стандартным Wine обычно работает в приложением для EXE-файлов. фоновом режиме, поэтому не имеет собственного пункта меню, и не по чему щелкнуть для его выбора в качестве соответствующей программы. Вместо этого надо щелкнуть на маленькой иконке внизу окна с именем Использовать Другую Команду; появится поле ввода текста. Наберите в нем wine, затем нажмите Открыть. Выбранный EXE файл запустится через Wine, и начнется установка. А поскольку для данного типа файлов других привязок-ассоциаций нет, то эта станет стандартной. Ну вот и все. Список поддерживаемых приложений и другая информация находится на http://appdb.winehq.org. Wine и все его производные – это полумера, полезная, пока большая часть Windows-разработчиков не прозреет и не портирует свои приложения в Linux. Однако эти полумеры работают, и неплохо, и по здравом размышлении вы сможете навсегда проститься со своим разделом Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Различные варианты Wine ===&lt;br /&gt;
&lt;br /&gt;
* Wine – проект популярный, и к нему имеется немало дополнительных инструментов, улучшающих качество установки и управления приложениями Windows в Linux.&lt;br /&gt;
* WineTools. Это приложение хорошо уживается с Internet Explorer 6, Photoshop 7.0, Illustrator 9.0 и многими другими, но устанавливает свою версию Wine, вместо той, что уже имеется. Программа доступна на сайте http://www.von-thadden.de/Joachim/wineTools/index.html в виде RPM или статически скомпонованного двоичного файла.&lt;br /&gt;
* CrossOver Linux. Стандартный Wine справляется с тоннами приложений, но для установки некоторых больших программ, типа MS Office или подключаемых модулей для браузеров вроде QuickTime и Shockwave, рекомендую приобрести копию CrossOver Linux (бывший CrossOver Office) от CodeWeavers ($39.95, на сайте http://www.codeweavers.com). Это не только упростит управление приложениями Windows, но и поддержит разработчиков, делающих популярные программы доступными в вашей любимой системе. CrossOver предоставляет более устойчивое окружение для приложений, чем Wine, и упрощает их интеграцию с хост-окружением. Например, создание привязок для файлов (скажем, открытие OFX-файлов при помощи AceMoney) при помощи Wine может быть трудным, а CrossOver имеет для этого специальный раздел.&lt;br /&gt;
* Wine@Etersoft. Отечественная разработка, позволяющая запускать в Linux популярные российские программы: 1С: Предприятие 7.7, 1С:Бухгалтерия 6.0, Консультант Плюс, Инфо-Бухгалтер, Кодекс, Референт, ДубльГИС, программы подготовки обязательной отчётности, а также MS Office 97 и некоторые другие. специалисты компании Etersoft тесно сотрудничают с основным проектом Wine и обмениваются наиболее критичными патчами, но сам продукт Wine@Etersoft – коммерческий, его распространением на территории РФ занимается http://LinuxCenter.Ru.&lt;br /&gt;
* WineDoors. Пользователи Gnome, страдающие по родному графическому клиенту для управления Wine-установками, должны дождаться выпуска этого приложения, хотя и ранние версии выглядят вполне достойно. WineDoors создается в Eclipse, и текущая версия доступна только через SVN. Вероятно, лучше не устанавливать его сейчас, а подождать появления пакетов.&lt;br /&gt;
* WineXS. Это еще один проект, начатый Фрэнком Хендриксоном [Frank Hendrikson], отцом WineTools. Интерфейс пользователя очень прост и предоставляет доступ к реестру Wine, инструменту настройки Winecfg и набору других сервисов «в одно нажатие». Есть также приличный инструмент установки, и благодаря использованию текущей системной инсталляции Wine вы избавлены от необходимости помнить, где какое приложение находится – это проблема WineTools. Ни одно из этих приложений не свободно от ошибок. Некоторые программы работают в Wine, но не работают в CrossOver, и наоборот. К счастью, о конфликтах беспокоиться не нужно. Каждая реализация Wine создает личные каталоги лже-Windows. Например, что-то из CrossOver вы можете найти в /home в подкаталоге .cxoffice; а Wine хранит всё своё в подкаталоге .wine.&lt;br /&gt;
* Cedega. Этот коммерческий продукт от TransGaming Technologies (цена от $15 за трехмесячную подписку на http://www.transgaming. com) позаботился об игроках. Как CrossOver Linux оптимизирован под конкретное промышленное ПО, так Cedega оптимизирован под игры. Число поддерживаемых игр растет с каждым обновлением, среди них World of Warcraft, Battlefield 2, Civilization IV и Half Life 2: Episode 1.&lt;br /&gt;
&lt;br /&gt;
=== Шаг за шагом: неподдерживаемые приложения в CrossOver ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Поддерживаемые программы. Они могут быть загружены непосредственно из меню. В главном окне выберите Install (Установить), затем выберите приложение из списка. Оно будет установлено и добавлено в меню, как и следует.&lt;br /&gt;
# Неподдерживаемые случаи. Выберите ''Install Unsupported Software (Установить неподдерживаемую программу)''. Откроется новое окно для выбора файла. Нажмите ''Other *.exe Location (Расположение другого *.exe)''. Такой выбор объясняется использованием загруженного приложения.&lt;br /&gt;
# Ищем EXE-файл. Выбор третьей опции запустит менеджер файлов CrossOver, весьма похожий на окно выбора файла в Windows. Перейдите к месту расположения вашего EXE-файла.&lt;br /&gt;
# Убедимся, что видим приложение. Установщик сам заполняет меню Windows Applications, а вручную это делается на вкладке Меню: выберите нужное приложение и нажмите кнопку ''Добавить Пункт Меню (Add Menu Entry)''.&lt;br /&gt;
# Берем Flash Player 9 для Windows. При установленном Wine добавьте Microsoft Core Fonts (Базовые шрифты Microsoft) командой sudo apt-get install msttcorefonts. Загрузите последнюю Windows-версию Firefox с http://www.mozilla.org и сохраните ее, как и раньше, на c_drive.&lt;br /&gt;
# Теперь установим программу. Дважды щелкните на нем в каталоге и введите ''wine .wine/drive_c/ Program\ Files/Mozilla\ Firefox/firefox.exe''. На http://www.adobe.com щелкните по ''Get Adobe Flash Player'' и установите EXE-файл. LXF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Скорая помощь ===&lt;br /&gt;
&lt;br /&gt;
Установите ли вы Wine или CrossOver Linux, все равно программы будут припрятаны в скрытых каталогах (обозначенных именем, начинающимся с точки) и станут видны, только если вы сами сделаете их видимыми, выбрав Показывать скрытые файлы в вашем файловом менеджере.&lt;br /&gt;
&lt;br /&gt;
Поскольку не все установки проходят гладко, я рекомендую иметь в вашей системе и Wine, и CrossOver. При этом, если CrossOver проваливает установку (как это произошло с AceMoney Lite), то, скажем, вы можете воспользоваться Wine, и наоборот.&lt;br /&gt;
&lt;br /&gt;
Будьте осторожны: некоторые EXEфайлы на самом деле являются самораспаковывающимися архивами и могут заполонить ваши каталоги DLL- и CAB- файлами, а также файлами readme. Кроме того, известно, что Wine весьма эффективно запускает вирусы Windows.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86</id>
		<title>LXF86</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86"/>
				<updated>2008-03-13T15:42:08Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Учебники */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Linux Format 86 (12), Декабрь 2006==&lt;br /&gt;
&lt;br /&gt;
=== Обзоры ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Учебники ===&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Wine|Wine: Windows в Linux!]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Inkscape|Inkscape: Тест на фоне Xara]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Безопасность|Безопасность: Зондируем систему]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Ogre|Ogre: Лазеры и звук]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Kamaelia|Kamaelia: Работа по сети]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:GTK|GTK+: Первое знакомство]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Unix|Unix API: Потоки POSIX]]&lt;br /&gt;
&lt;br /&gt;
*[[LXF86:Java|Файлы, журналы, XML]]&lt;br /&gt;
Все, что нужно, чтобы ваше Java-приложение обменивалось данными с внешним миром&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Учебники:PostgreSQL|PostgreSQL: Работа с базой]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:LaTeX|LaTeX: Графики]]&lt;br /&gt;
&lt;br /&gt;
[[LXF86:Maxima|Maxima: Файлы и факты]]&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Kamaelia: Работа по сети */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:56:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Kamaelia: Работа по сети */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
[[Изображение:Example.jpg]]&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:53:31Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Что предлагает наш «блокнот» */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;br /&gt;
&lt;br /&gt;
=== Зависимости Kamaelia ===&lt;br /&gt;
&lt;br /&gt;
Kamalelia MegaBundle (http://snipurl.com/xie4) включает все основные зависимости. В ее недрах можно найти: &lt;br /&gt;
* Обязательные файлы: Axon-1.5.1.tar.gz, Kamaelia-0.5.0.tar.gz.&lt;br /&gt;
* Рекомендуемые файлы: pygame-1.7.1release. tar.gz, Pyrex-0.9.3.1.tar.gz.&lt;br /&gt;
* Для поддержки звука в «блокноте»: speex1.0.5.tar.gz, pySpeex-0.2.tar.gz, pymedia-cvspatched.tar.gz.&lt;br /&gt;
* Для загрузки и сохранения изображений: Imaging-1.1.5.tar.gz. Для BitTorrent: BitTorrent-4.20.8.tar.gz.&lt;br /&gt;
* Для OpenGL: PyOpenGL-2.0.2.01.tar.gz. Поддержка Dirac: dirac-0.5.4.tar.gz.&lt;br /&gt;
* Поддержка Vorbis (устанавливается в указанном порядке, в дополнение к Pyrex): libao0.8.6.tar.gz, libogg-1.3.3.tar.gz, libvorbis-1.1.2.tar. gz, pyao-0.82.tar.gz, vorbissimple-0.0.2.tar.gz.&lt;br /&gt;
* Freeview (вам понадобится Pyrex и последнее ядро Linux): python-dvb3-0.0.4.tar.gz. &lt;br /&gt;
&lt;br /&gt;
Набор зависимостей довольно велик, но следует помнить, что они требуются только для поддержки дополнительных функций. Не нужен Dirac – не устанавливайте зависимости Dirac!&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:51:32Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Добавляем ингредиенты, по очереди */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Kamaelia-0.5.0.tar.gz&lt;br /&gt;
 cd Kamaelia-0.5.0&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Pygame. Блокнот использует Pygame для отображения и ввода. Pygame может быть уже установлен у вас или включен в ваш дистрибутив. Если его нет, или ваша версия не последняя, установка выполняется легко: распакуйте, перейдите в каталог и запустите инсталлятор: tar zxf pygame-1.7.1release.tar.gz cd pygame-1.7.1release python setup.py install Вам будет задано несколько вопросов, зависящих от вашей локальной установки, вот почему предпочтительней использовать пакеты из вашего дистрибутива!&lt;br /&gt;
&lt;br /&gt;
В этом уроке я остановился только на зависимостях для «блокнота»; но в MegaBundle полно других. Для более подробных инструкций по всем зависимостям загляните в отдельные пакеты или зайдите на http://kamaelia.sourceforge.net/GettingStarted.html. В Kamaelia существуют PVR-инструменты для захвата ТВ-сигнала и временного разделения. Если все прошло успешно, в вашей системе будет установленная Kamaelia. Если натолкнетесь на проблемы, проверьте, предоставляет ли ваш менеджер пакетов соответствующие версии ПО.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:47:49Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Kamaelia: Работа по сети */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
=== Часть 1. Установка ПО ===&lt;br /&gt;
&lt;br /&gt;
Kamealia разработана для SUSE Linux, с использованием Python 2.4. Она должна работать под любым дистрибутивом Linux; но вашу конфигурацию мы вряд ли проверяли – обратная связь с командой разработчиков приветствуется (http://kamaelia.sourceforge.net/Contact.html). Kamaelia должна работать с любой версией Python, начиная с 2.2.2, но мы рекомендуем 2.4. Для установки Kamaelia требуются два основных пакета: ядро системы, называемое Axon; и библиотека компонентов и инструментов Kamaelia. После них устанавливайте любые дополнительные зависимости для желаемых специфических функций (примеры см. во врезке «Зависимости Kamaelia», справа). Для удобства я предполагаю, что вы выполняете установку как root. Кстати, вы можете считать Axon аналогом ядра Linux, а Kamaelia – базовой инсталляцией; все остальные файлы – необязательные дополнения.&lt;br /&gt;
&lt;br /&gt;
==== Добавляем ингредиенты, по очереди ====&lt;br /&gt;
&lt;br /&gt;
Axon. Сначала установите Axon, чтобы обеспечить базовый коммуникационный каркас для компонентов. Распакуйте, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
 tar zxf Axon-1.5.1.tar.gz&lt;br /&gt;
 cd Axon-1.5.1&lt;br /&gt;
 python setup.py install&lt;br /&gt;
&lt;br /&gt;
Kamaelia. Затем установим репозиторий компонентов. Распакуйте еще один архив, перейдите в каталог и запустите инсталлятор:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;br /&gt;
&lt;br /&gt;
=== Что предлагает наш «блокнот» ===&lt;br /&gt;
* Простейшие функции рисования.&lt;br /&gt;
* Поддержка многостраничности с навигацией.&lt;br /&gt;
* Каждый «блокнот» может быть клиентом, сервером или сразу и клиентом, и сервером. Если вы подключите свой «блокнот» к моему, а я изменю страницы, вы увидите эти изменения. Все, нарисованное в одном «блокноте», становится видимым на всех подключенных к нему. Поскольку любой «блокнот» может быть и сервером, и клиентом, он является децентрализованным в своей основе. Каждый подключившийся к любому серверу в сети сможет получить все, что предоставляется остальными.&lt;br /&gt;
* Поддержка звука с использованием аудиокодека Speex (оптимизированного для разговора и для кодирования с очень низкой частотой дискретизации). То есть можно поговорить с любым из подключенных в данный момент.&lt;br /&gt;
* Сессии могут быть записаны для последующего воспроизведения. Пока запись воспроизводится, вы можете использовать «блокнот» как обычно – как и все подключенные к вашей whiteboard-сети.&lt;br /&gt;
* Поддержка MP3.&lt;br /&gt;
* Консоль с командной строкой.&lt;br /&gt;
* Экспериментальная возможность заставить «блокнот» нумеровать локально сохраненные страницы полусинхронным образом.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:32:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Майкл Спаркс'''&lt;br /&gt;
ведущий инженер BBC Research и лидер открытого проекта Kamaelia. Данный урок и интервью отражают его личное мнение как лидера проекта Kamaelia, а не мнение BBC относительно чего бы то ни было.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:06:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Kamaelia: Работа по сети */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;br /&gt;
&lt;br /&gt;
Kamaelia – это открытый каркас общего назначения для разработки программ. Вы скажете: ну вот, еще один... Но Kamaelia имеет отличие: она работает с распределенными сетями в стиле BitTorrent для поддержки общего доступа к информации в децентрализованной [peer-to-peer] сети в режиме реального времени. Приложения, разрабатываемые с помощью Kamaelia, умеют мгновенно доставлять информацию, через LAN или интернет, потенциально&lt;br /&gt;
неограниченному числу машин.&lt;br /&gt;
&lt;br /&gt;
Эта технология возникла благодаря исследованиям BBC в сфере сетевой передачи мультимедийного контента, но стала применяться и в других областях. Она включает компоненты для работы с Freeview (свободное цифровое наземное телевидение в Великобритании) и инструменты обработки мультимедиа, и позволяет разработчикам легко и просто использовать Pygame, OpenGL, сетевые возможности, видеокодек Dirac, Vorbis, Speex и множество других инструментов в одной и той же системе.&lt;br /&gt;
&lt;br /&gt;
Данный урок покажет, как пользоваться whiteboard-приложением, написанным для решения реальных проблем команды Kamaelia. [Whiteboard – приложение, позволяющее пользователям, объединенным сетью, рисовать на одной «доске». В русском языке встречаются термины «белая доска», «разделяемый блокнот», «разделяемая калька». Мы будем говорить «блокнот», – прим. перев.] Наша команда разбросана по разным местам и нуждается в системе совместной работы,&lt;br /&gt;
поддерживающей и звук, и эскизы, и просто работы – а это может пригодиться многим открытым проектам. Некоторые из возможностей системы описаны во врезке «Что предлагает наш блокнот», справа. Интересно? Тогда займемся.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia</id>
		<title>LXF86:Учебники:Kamaelia</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Kamaelia"/>
				<updated>2008-03-11T15:05:01Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Kamaelia: Работа по сети ==  '''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложен...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Kamaelia: Работа по сети ==&lt;br /&gt;
&lt;br /&gt;
'''''Майкл Спаркс''' расскажет, как запустить децентрализованное whiteboard-приложение, используя&lt;br /&gt;
его новый каркас, а затем расширить его до мультимедиа-вещания и так далее.''&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre</id>
		<title>LXF86:Учебники:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre"/>
				<updated>2008-03-10T16:39:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
Настроив звуковую систему, мы, наконец, можем заказывать наши звук и музыку. SDL_Mixer берет на себя их загрузку, а вам остается сделать два вызова функций Mix_LoadWAV() и Mix_LoadMSU(). Они принимают имя загружаемого файла и автоматически обрабатывают множество популярных форматов – WAV, MP3, OGG, MID и MOD, но если ваш дистрибутив не поддерживает формат MP3, то SDL, скорее всего, не сможет его проиграть. Кому интересно, общедоступную запись tipperary.mp3 я нашел в Сети – она совершенно не подходит для игры [«Путь далекий до Типперери» – популярная песенка английских солдат времен I Мировой войны, – прим. ред.], поэтому вы уж сами подберите нужный файл! Чтобы покончить с поддержкой звука, остается еще два шага. Добавьте в методе frameStarted() следующие три строки кода:&lt;br /&gt;
 if (!Mix_PlayingMusic()) {&lt;br /&gt;
  Mix_PlayMusic(m_Music, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Я не собираюсь вас унижать, объясняя этот код, кроме 0 в конце: это число повторов нашей мелодии [0 значит, что она будет проиграна всего один раз, без повтора, – прим. ред.]. Добавление звука лазера потребует немного мозгов, поскольку потребуется определить метод mousePressed(). В настоящий момент он пуст и сидит в chad.h. Заменим «заглушку» в chad.h на прототип и напишем реализацию этого метода в chad.cpp (чтобы лазер зазвучал). В chad.h, превратим строку....&lt;br /&gt;
 void mousePressed(MouseEvent* e) { }&lt;br /&gt;
&lt;br /&gt;
 ... в...&lt;br /&gt;
&lt;br /&gt;
 void mousePressed(MouseEvent* e);&lt;br /&gt;
&lt;br /&gt;
Тело этого метода надо поместить где-то в файле chad.cpp:&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
   Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Звук лазера теперь будет раздаваться при каждом нажатии кнопки мыши – не сногсшибательно, но начало хорошее! Можете скомпилировать свой код и насладиться звуками лазера.&lt;br /&gt;
&lt;br /&gt;
=== Прицел ===&lt;br /&gt;
&lt;br /&gt;
Если вы не снайпер сразу после дембеля, то вряд ли поражение цели на дальней дистанции покажется вам несложным. Для упрощения этой задачи многие игры содержат на экране небольшой прицел. Добавим и мы прицел в виде точки в игру Висельник Чед. Для этого необходимо проделать три шага: 1 Создать материал, который даст имя файлу. 2 Создать слой, который использует материал, и позиционировать его на экране. 3 Отобразить слой. Первые два пункта реализуются через систему скриптов Ogre; но для последнего шага придется написать код на С++. Начнем с материала. Сохраните следующий ‘код’ как target.material:&lt;br /&gt;
 material Chad/TargetSights&lt;br /&gt;
 {&lt;br /&gt;
            technique&lt;br /&gt;
            {&lt;br /&gt;
                       pass&lt;br /&gt;
                       {&lt;br /&gt;
                            lighting off&lt;br /&gt;
                            scene_blend alpha_blend&lt;br /&gt;
                            texture_unit&lt;br /&gt;
                            {&lt;br /&gt;
                                         texture terrain_detail.jpg&lt;br /&gt;
                            }&lt;br /&gt;
                       }&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Заметили? Я использовал для прицела текстуру terrain_detail.jpg, но только потому, что прицел очень мал: игроки увидят лишь небольшую серую точку. Вы можете взять свою картинку, но пока сойдет и эта. Следующий шаг – определить слой, который принимает материал и помещает его на экранной панели. Затем можно пристроить эту панель на экране, используя координату относительно левого верхнего угла, а также ширину и высоту. В любом случае, вот код – сохраните его в файл target.overlay:&lt;br /&gt;
 chadtarget&lt;br /&gt;
 {&lt;br /&gt;
            zorder 650&lt;br /&gt;
            container Panel(chadsight)&lt;br /&gt;
            {&lt;br /&gt;
                       metrics_mode relative&lt;br /&gt;
                       left 0.495&lt;br /&gt;
                       top 0.495&lt;br /&gt;
              width 0.004&lt;br /&gt;
              height 0.007&lt;br /&gt;
              transparent false&lt;br /&gt;
              material Chad/&lt;br /&gt;
 TargetSights&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Параметр zorder определяет, где панель отобразится на экране, в терминах глубины, то есть мы можем (если пожелаем) задать способ расположения элементов по слоям. В Ogre его максимальное значение 650 (прицел на вершине стека). Последний шаг – создание слоя, он займет всего две строки. Добавьте такой код в конец метода createOutdoorScene():&lt;br /&gt;
 Overlay *TargetSight = (Overlay*)OverlayManager::getSingleton().&lt;br /&gt;
 getByName(“chadtarget”);&lt;br /&gt;
 TargetSight-&amp;gt;show();&lt;br /&gt;
&lt;br /&gt;
Код загружает слой с именем, определенным в target.overlay, а затем отображает его. Не надо беспокоиться о потере указателя на слой – Ogre автоматически удерживает его посреди экрана, как определено в файле. Наши три шага проделаны; запустите игру и загляните в прицел. Пусть программировать было скучновато, но зато как удобно теперь целиться!&lt;br /&gt;
&lt;br /&gt;
=== Стреляем на поражение ===&lt;br /&gt;
&lt;br /&gt;
Настает главное событие этого урока: отстрел роботов, которые резвились в прошлом номере. Правду сказать, я не особо хотел отягчать насилием Висельника Чеда, но Ребекка – спец по насилию в нашей команде – отказалась плодить опечатки, пока мы не разнесем когонибудь на куски. Пусть будет так. У нас уже есть метод mousePressed() для проигрывания звука лазера, поэтому код для стрельбы подойдет именно сюда. Стрелять будем так: с позиции камеры проводим луч, аналогично тому, как мы делали для определения высоты игрока над уровнем земли. Это непростая геометрическая задача, но, к счастью, Ogre все делает сам, одним методом: getCameraToViewportRay(), который преобразует позицию на экране в позицию в нашем мире и позволяет пустить луч из положения камеры. При необходимости выбирать объекты мышью, можно было бы использовать указатель на объект-событие, передаваемый методу mousePressed(), но мы хотим просто пустить луч через центр экрана, и поэтому используем для координат X и Y значения 0.5. Вот код улучшенного метода mousePressed():&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
          Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
          Ray mouseray = m_Camera-&amp;gt;getCameraToViewportRay(0.5,&lt;br /&gt;
  0.5);&lt;br /&gt;
          RaySceneQuery* scenequery = m_SceneMgr&lt;br /&gt;
 -&amp;gt;createRayQuery(Ray());&lt;br /&gt;
          scenequery-&amp;gt;setRay(mouseray);&lt;br /&gt;
          RaySceneQueryResult &amp;amp;result = scenequery-&amp;gt;execute();&lt;br /&gt;
          if (!result.empty()) {&lt;br /&gt;
               for (unsigned int i = 0; i &amp;lt; result.size(); ++i) {&lt;br /&gt;
               RaySceneQueryResultEntry &amp;amp;re = result[i];&lt;br /&gt;
               if (re.movable &amp;amp;&amp;amp; re.movable-&amp;gt;getMovableType() ==&lt;br /&gt;
 “Entity”) {&lt;br /&gt;
                           Entity *ent = (Entity*)(re.movable);&lt;br /&gt;
                           String name = ent-&amp;gt;getName();&lt;br /&gt;
                           if (name == “water”) continue; // игнорируем воду&lt;br /&gt;
                           for (unsigned int j = 0; j &amp;lt; Enemies.size(); ++j) {&lt;br /&gt;
                                         if (Enemies[j]-&amp;gt;m_EnemyName ==&lt;br /&gt;
  name) {&lt;br /&gt;
                                                      Enemies[j]-&amp;gt;Hit();&lt;br /&gt;
                                                      return;&lt;br /&gt;
                                                      }&lt;br /&gt;
                                         }&lt;br /&gt;
                           }&lt;br /&gt;
                  }&lt;br /&gt;
           }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Послав луч, я прошелся в цикле по откликам в поисках сущностей (в отличие от элементов ландшафта), а затем отсек водную поверхность. Остаются только роботы; получим имя жертвы и найдем в списке роботов соответствующий объект, а затем вызовем его метод Hit(). Те, кто следил за нашими уроками с самого начала, возможно, воскликнет: у наших врагов нет ни имени, ни метода Hit()! Исправим это: откройте файл chadenemy.h и добавьте эти строки до объявления m_Speed:&lt;br /&gt;
 char m_EnemyName[32];&lt;br /&gt;
 bool m_IsDead&lt;br /&gt;
&lt;br /&gt;
Теперь добавьте следующие две строчки после метода Update():&lt;br /&gt;
 void SetAnimation(String animation, bool loop);&lt;br /&gt;
 void Hit();&lt;br /&gt;
&lt;br /&gt;
Метод SetAnimation() я вставил, потому что мне было тошно писать три строчки кода для выполнения одной простой вещи. Можете игнорировать его, если хотите.&lt;br /&gt;
&lt;br /&gt;
Мы уже устанавливали имена врагов в конструкторе (файл chadenemy.cpp), но использовали временную локальную пере&lt;br /&gt;
менную. Теперь, когда у нас есть m_EnemyName, мы можем хранить ее там, чтобы найти правильный объект сцены, поп&lt;br /&gt;
ав в робота. Просто замените следующие три строки кода… &lt;br /&gt;
 char enemyname[32];&lt;br /&gt;
 sprintf(enemyname, “Robot %d”, ++EnemyNum);&lt;br /&gt;
 m_Entity = m_SceneMgr-&amp;gt;createEntity(enemyname, “robot.&lt;br /&gt;
 mesh”);&lt;br /&gt;
&lt;br /&gt;
... на следующие две...&lt;br /&gt;
 sprintf(m_EnemyName, “Robot %d”, ++EnemyNum);&lt;br /&gt;
 m_Entity = m_SceneMgr-&amp;gt;createEntity(m_EnemyName, “robot.&lt;br /&gt;
 mesh”);&lt;br /&gt;
&lt;br /&gt;
Теперь нужно написать метод Hit(), изменить анимацию робота и&lt;br /&gt;
установить переменную m_IsDead в значение true, например, так:&lt;br /&gt;
 void CChadEnemy::Hit() {&lt;br /&gt;
            if (!m_IsDead) {&lt;br /&gt;
                       m_AnimationState-&amp;gt;setEnabled(false);&lt;br /&gt;
                       SetAnimation(“Die”, false);&lt;br /&gt;
                       m_IsDead = true;&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
То есть, если чудовище не сдохло на месте, отмените его текущую анимацию, измените его анимацию на «умирающий» (не в цикле, конечно), а затем добейте его. Теперь необходимо сказать игре, что делать, если робот убит. Для начала сделаем, чтобы убитые роботы переставали двигаться, освободив метод Update(), раз уж робот встретился со своим создателем. Далее, в методе Update() необходимо удалить робота-покойника из игры. Иначе все убитые роботы будут валяться вокруг – но, возможно, вам того и надо! В файле chadenemy.cpp измените начало метода Update() на следующее:&lt;br /&gt;
 void CChadEnemy::Update(Real time) { m_AnimationState-&amp;gt;addTime(time);&lt;br /&gt;
 if (m_IsDead) return;&lt;br /&gt;
&lt;br /&gt;
Здесь все понятно: мы хотим, чтобы робот продолжал проигрывать анимацию (чтобы анимация «Умер» отработала правильно), но не хотим, чтобы он перемещался или поворачивался к игроку. Если робот внезапно умер, мы скоренько выходим из функции.&lt;br /&gt;
&lt;br /&gt;
=== Обломки роботов ===&lt;br /&gt;
&lt;br /&gt;
Удалить мертвых роботов из вектора Enemies желательно элегантным способом, так что потребуется немного подумать. Если робот погиб, и текущее положение в анимации равно ее полной длине, освободим память и присвоим его сущности в массиве Enemies значение NULL. Затем используем метод erase() из библиотеки STL, чтобы удалить из вектора всех обнуленных врагов, а это, в свою очередь, требует использования особого алгоритма STL – remove_if. Звучит хитроумно, но все именно так: STL умеет автоматически удалять элементы из вектора на основе заданного критерия. Можно написать функцию, принимающую элемент вектора, и если функция возвратит значение true, элемент будет удален. Цикл обновления состояния врагов в методе frameStartedOutside() файла chad.cpp нужно привести к следующему виду:&lt;br /&gt;
 for (unsigned int i = Enemies.size() - 1; i &amp;gt; 0; --i) {&lt;br /&gt;
            CChadEnemy* enemy = Enemies[i];&lt;br /&gt;
            enemy-&amp;gt;Update(evt.timeSinceLastFrame);&lt;br /&gt;
            if (enemy-&amp;gt;m_IsDead &amp;amp;&amp;amp; enemy-&amp;gt;m_AnimationState&lt;br /&gt;
-&amp;gt;getTimePosition() == enemy-&amp;gt;m_AnimationState-&amp;gt;getLength()) {&lt;br /&gt;
                         m_SceneMgr-&amp;gt;getRootSceneNode()-&lt;br /&gt;
 &amp;gt;removeAndDestroyChil&lt;br /&gt;
 d(enemy-&amp;gt;m_EnemyName);&lt;br /&gt;
                         delete Enemies[i];&lt;br /&gt;
                         Enemies[i] = NULL;&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
 Enemies.erase(remove_if(Enemies.begin(), Enemies.end(), IsNull),&lt;br /&gt;
 Enemies.end());&lt;br /&gt;
&lt;br /&gt;
Мы перешли от использования цикла с итератором к циклу с целочисленным счетчиком, чтобы манипулировать отдельными элементами вектора Enemies. Убедившись, что враг мертв и доиграл свою анимацию до конца, мы вызываем метод removeAndDestroyChild() корневого узла сцены и выносим из нее покойника. Затем роботу присваивается значение NULL и освобождается занимаемая им память. После цикла вызываются чародеи erase() и remove_if(); последний принимает как параметры начало и конец диапазона, а также функцию обратного вызова. Эта строка пройдется по всему вектору Enemies и удалит элементы, которым при передаче их в функцию IsNull() возвращается значение true. Недостает только самой функции IsNull(), но с ней разобраться проще всего. Откройте файл chad.h и добавьте следующую строку к списку директив #include:&lt;br /&gt;
 #include &amp;lt;algorithm&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Эта строка задействует алгоритм remove_if. Теперь добавьте такую строку сразу после ‘using namespace Ogre’:&lt;br /&gt;
 bool IsNull(void* somepointer) { return (somepointer == NULL); } &lt;br /&gt;
&lt;br /&gt;
Она отвечает на вопрос: не NULL ли значение некого указателя? Просто и мило.&lt;br /&gt;
&lt;br /&gt;
=== Вместо заключения ===&lt;br /&gt;
&lt;br /&gt;
На протяжении пяти уроков мы прошли путь создания 3D-игры с музыкой, звуками и врагами. Я думаю, неплохо. Причем согласитесь, вопросы математики мы почти не обсуждали. Может, от кватернионов у вас голова и пошла кругом, но в основном за вас думал Ogre. Надеюсь, вы кое-что узнали насчет процесса создания 3D игры – в частности, как просто, немного потрудившись, получить солидные результаты. И действительно, написав 500 строк кода, мы уже можем чем-то гордиться: пусть это не образцовая игра, но хороший демо-пример и отличная отправная точка для разработки таковой. Может, вам захочется создать новые уровни, добавить в&lt;br /&gt;
рагов или изменить цель игры в Чеда. Желаем удачи – потом расскажете, как далеко вы продвинулись!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;br /&gt;
&lt;br /&gt;
=== Очистка памяти ===&lt;br /&gt;
&lt;br /&gt;
Я признаю, что люблю что-то делать, но не люблю убирать за собой. Возможно, именно поэтому мне нравится програм&lt;br /&gt;
мировать под Mono – он автоматически подбирает за вами весь мусор! Пока что мы не беспокоились об освобождении &lt;br /&gt;
отведенной памяти, поскольку Linux освобождает ОЗУ автоматически. Но если вы планируете что-то динамически подг&lt;br /&gt;
ружать во время игры, тут уж об освобождении памяти придется позаботиться. Если вы, например, запустите звук и музыку, то в конце концов память будет исчерпана. Ogre прекрасно выполняет свои задачи, а вот памятью управляет плоховато, ибо пытается вмешаться в управление. Под С++ освобождение памяти не слишком поддается интуиции: вы беспокоитесь об одном, а нужно вовсе другое. Не тратьте время на попытки понять, что там вытворяет Ogre, лучше займитесь собственными обязанностями. Они сводятся к выполнению правила: при каждом применении new для создания нового объекта, не забывайте использовать delete для его удаления. В методе run() у нас есть следующая строка:&lt;br /&gt;
 m_Player = new CChadPlayer();&lt;br /&gt;
&lt;br /&gt;
В методе CChadGame::~CChadGame() необходимо добавить следующее:&lt;br /&gt;
 delete m_Player;&lt;br /&gt;
&lt;br /&gt;
SDL имеет собственные функции для освобождения аудиоресурсов, и понадобится вставить туда же такие две строчки:&lt;br /&gt;
 Mix_FreeChunk(m_MixFire);&lt;br /&gt;
 Mix_FreeChunk(m_Music);&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre</id>
		<title>LXF86:Учебники:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre"/>
				<updated>2008-03-10T16:31:55Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
Настроив звуковую систему, мы, наконец, можем заказывать наши звук и музыку. SDL_Mixer берет на себя их загрузку, а вам остается сделать два вызова функций Mix_LoadWAV() и Mix_LoadMSU(). Они принимают имя загружаемого файла и автоматически обрабатывают множество популярных форматов – WAV, MP3, OGG, MID и MOD, но если ваш дистрибутив не поддерживает формат MP3, то SDL, скорее всего, не сможет его проиграть. Кому интересно, общедоступную запись tipperary.mp3 я нашел в Сети – она совершенно не подходит для игры [«Путь далекий до Типперери» – популярная песенка английских солдат времен I Мировой войны, – прим. ред.], поэтому вы уж сами подберите нужный файл! Чтобы покончить с поддержкой звука, остается еще два шага. Добавьте в методе frameStarted() следующие три строки кода:&lt;br /&gt;
 if (!Mix_PlayingMusic()) {&lt;br /&gt;
  Mix_PlayMusic(m_Music, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Я не собираюсь вас унижать, объясняя этот код, кроме 0 в конце: это число повторов нашей мелодии [0 значит, что она будет проиграна всего один раз, без повтора, – прим. ред.]. Добавление звука лазера потребует немного мозгов, поскольку потребуется определить метод mousePressed(). В настоящий момент он пуст и сидит в chad.h. Заменим «заглушку» в chad.h на прототип и напишем реализацию этого метода в chad.cpp (чтобы лазер зазвучал). В chad.h, превратим строку....&lt;br /&gt;
 void mousePressed(MouseEvent* e) { }&lt;br /&gt;
&lt;br /&gt;
 ... в...&lt;br /&gt;
&lt;br /&gt;
 void mousePressed(MouseEvent* e);&lt;br /&gt;
&lt;br /&gt;
Тело этого метода надо поместить где-то в файле chad.cpp:&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
   Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Звук лазера теперь будет раздаваться при каждом нажатии кнопки мыши – не сногсшибательно, но начало хорошее! Можете скомпилировать свой код и насладиться звуками лазера.&lt;br /&gt;
&lt;br /&gt;
=== Прицел ===&lt;br /&gt;
&lt;br /&gt;
Если вы не снайпер сразу после дембеля, то вряд ли поражение цели на дальней дистанции покажется вам несложным. Для упрощения этой задачи многие игры содержат на экране небольшой прицел. Добавим и мы прицел в виде точки в игру Висельник Чед. Для этого необходимо проделать три шага: 1 Создать материал, который даст имя файлу. 2 Создать слой, который использует материал, и позиционировать его на экране. 3 Отобразить слой. Первые два пункта реализуются через систему скриптов Ogre; но для последнего шага придется написать код на С++. Начнем с материала. Сохраните следующий ‘код’ как target.material:&lt;br /&gt;
 material Chad/TargetSights&lt;br /&gt;
 {&lt;br /&gt;
            technique&lt;br /&gt;
            {&lt;br /&gt;
                       pass&lt;br /&gt;
                       {&lt;br /&gt;
                            lighting off&lt;br /&gt;
                            scene_blend alpha_blend&lt;br /&gt;
                            texture_unit&lt;br /&gt;
                            {&lt;br /&gt;
                                         texture terrain_detail.jpg&lt;br /&gt;
                            }&lt;br /&gt;
                       }&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Заметили? Я использовал для прицела текстуру terrain_detail.jpg, но только потому, что прицел очень мал: игроки увидят лишь небольшую серую точку. Вы можете взять свою картинку, но пока сойдет и эта. Следующий шаг – определить слой, который принимает материал и помещает его на экранной панели. Затем можно пристроить эту панель на экране, используя координату относительно левого верхнего угла, а также ширину и высоту. В любом случае, вот код – сохраните его в файл target.overlay:&lt;br /&gt;
 chadtarget&lt;br /&gt;
 {&lt;br /&gt;
            zorder 650&lt;br /&gt;
            container Panel(chadsight)&lt;br /&gt;
            {&lt;br /&gt;
                       metrics_mode relative&lt;br /&gt;
                       left 0.495&lt;br /&gt;
                       top 0.495&lt;br /&gt;
              width 0.004&lt;br /&gt;
              height 0.007&lt;br /&gt;
              transparent false&lt;br /&gt;
              material Chad/&lt;br /&gt;
 TargetSights&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Параметр zorder определяет, где панель отобразится на экране, в терминах глубины, то есть мы можем (если пожелаем) задать способ расположения элементов по слоям. В Ogre его максимальное значение 650 (прицел на вершине стека). Последний шаг – создание слоя, он займет всего две строки. Добавьте такой код в конец метода createOutdoorScene():&lt;br /&gt;
 Overlay *TargetSight = (Overlay*)OverlayManager::getSingleton().&lt;br /&gt;
 getByName(“chadtarget”);&lt;br /&gt;
 TargetSight-&amp;gt;show();&lt;br /&gt;
&lt;br /&gt;
Код загружает слой с именем, определенным в target.overlay, а затем отображает его. Не надо беспокоиться о потере указателя на слой – Ogre автоматически удерживает его посреди экрана, как определено в файле. Наши три шага проделаны; запустите игру и загляните в прицел. Пусть программировать было скучновато, но зато как удобно теперь целиться!&lt;br /&gt;
&lt;br /&gt;
=== Стреляем на поражение ===&lt;br /&gt;
&lt;br /&gt;
Настает главное событие этого урока: отстрел роботов, которые резвились в прошлом номере. Правду сказать, я не особо хотел отягчать насилием Висельника Чеда, но Ребекка – спец по насилию в нашей команде – отказалась плодить опечатки, пока мы не разнесем когонибудь на куски. Пусть будет так. У нас уже есть метод mousePressed() для проигрывания звука лазера, поэтому код для стрельбы подойдет именно сюда. Стрелять будем так: с позиции камеры проводим луч, аналогично тому, как мы делали для определения высоты игрока над уровнем земли. Это непростая геометрическая задача, но, к счастью, Ogre все делает сам, одним методом: getCameraToViewportRay(), который преобразует позицию на экране в позицию в нашем мире и позволяет пустить луч из положения камеры. При необходимости выбирать объекты мышью, можно было бы использовать указатель на объект-событие, передаваемый методу mousePressed(), но мы хотим просто пустить луч через центр экрана, и поэтому используем для координат X и Y значения 0.5. Вот код улучшенного метода mousePressed():&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
          Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
          Ray mouseray = m_Camera-&amp;gt;getCameraToViewportRay(0.5,&lt;br /&gt;
  0.5);&lt;br /&gt;
          RaySceneQuery* scenequery = m_SceneMgr&lt;br /&gt;
 -&amp;gt;createRayQuery(Ray());&lt;br /&gt;
          scenequery-&amp;gt;setRay(mouseray);&lt;br /&gt;
          RaySceneQueryResult &amp;amp;result = scenequery-&amp;gt;execute();&lt;br /&gt;
          if (!result.empty()) {&lt;br /&gt;
               for (unsigned int i = 0; i &amp;lt; result.size(); ++i) {&lt;br /&gt;
               RaySceneQueryResultEntry &amp;amp;re = result[i];&lt;br /&gt;
               if (re.movable &amp;amp;&amp;amp; re.movable-&amp;gt;getMovableType() ==&lt;br /&gt;
 “Entity”) {&lt;br /&gt;
                           Entity *ent = (Entity*)(re.movable);&lt;br /&gt;
                           String name = ent-&amp;gt;getName();&lt;br /&gt;
                           if (name == “water”) continue; // игнорируем воду&lt;br /&gt;
                           for (unsigned int j = 0; j &amp;lt; Enemies.size(); ++j) {&lt;br /&gt;
                                         if (Enemies[j]-&amp;gt;m_EnemyName ==&lt;br /&gt;
  name) {&lt;br /&gt;
                                                      Enemies[j]-&amp;gt;Hit();&lt;br /&gt;
                                                      return;&lt;br /&gt;
                                                      }&lt;br /&gt;
                                         }&lt;br /&gt;
                           }&lt;br /&gt;
                  }&lt;br /&gt;
           }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Послав луч, я прошелся в цикле по откликам в поисках сущностей (в отличие от&lt;br /&gt;
 элементов ландшафта), а затем отсек водную поверхность. Остаются только роботы; получим имя жертвы и найдем в &lt;br /&gt;
списке роботов соответствующий объект, а затем вызовем его метод Hit(). Те, кто следил за нашими уроками с самого начала, возможно, воскликнет: у наших врагов нет ни имени, ни метода Hit()! Исправим это: откройте файл chadenemy.h и добавьте эти строки до объявления m_Speed:&lt;br /&gt;
 char m_EnemyName[32];&lt;br /&gt;
 bool m_IsDead&lt;br /&gt;
&lt;br /&gt;
Теперь добавьте следующие две строчки после метода Update():&lt;br /&gt;
 void SetAnimation(String animation, bool loop);&lt;br /&gt;
 void Hit();&lt;br /&gt;
&lt;br /&gt;
Метод SetAnimation() я вставил, потому что мне было тошно писать три строчки кода для выполнения одной простой вещи. Можете игнорировать его, если хотите.&lt;br /&gt;
&lt;br /&gt;
Мы уже устанавливали имена врагов в конструкторе (файл chadenemy.cpp), но использовали временную локальную пере&lt;br /&gt;
менную. Теперь, когда у нас есть m_EnemyName, мы можем хранить ее там, чтобы найти правильный объект сцены, поп&lt;br /&gt;
ав в робота. Просто замените следующие три строки кода… &lt;br /&gt;
 char enemyname[32];&lt;br /&gt;
 sprintf(enemyname, “Robot %d”, ++EnemyNum);&lt;br /&gt;
 m_Entity = m_SceneMgr-&amp;gt;createEntity(enemyname, “robot.&lt;br /&gt;
 mesh”);&lt;br /&gt;
&lt;br /&gt;
... на следующие две...&lt;br /&gt;
 sprintf(m_EnemyName, “Robot %d”, ++EnemyNum);&lt;br /&gt;
 m_Entity = m_SceneMgr-&amp;gt;createEntity(m_EnemyName, “robot.&lt;br /&gt;
 mesh”);&lt;br /&gt;
&lt;br /&gt;
Теперь нужно написать метод Hit(), изменить анимацию робота и&lt;br /&gt;
установить переменную m_IsDead в значение true, например, так:&lt;br /&gt;
 void CChadEnemy::Hit() {&lt;br /&gt;
            if (!m_IsDead) {&lt;br /&gt;
                       m_AnimationState-&amp;gt;setEnabled(false);&lt;br /&gt;
                       SetAnimation(“Die”, false);&lt;br /&gt;
                       m_IsDead = true;&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre</id>
		<title>LXF86:Учебники:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre"/>
				<updated>2008-03-10T16:24:51Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Прицел */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
Настроив звуковую систему, мы, наконец, можем заказывать наши звук и музыку. SDL_Mixer берет на себя их загрузку, а вам остается сделать два вызова функций Mix_LoadWAV() и Mix_LoadMSU(). Они принимают имя загружаемого файла и автоматически обрабатывают множество популярных форматов – WAV, MP3, OGG, MID и MOD, но если ваш дистрибутив не поддерживает формат MP3, то SDL, скорее всего, не сможет его проиграть. Кому интересно, общедоступную запись tipperary.mp3 я нашел в Сети – она совершенно не подходит для игры [«Путь далекий до Типперери» – популярная песенка английских солдат времен I Мировой войны, – прим. ред.], поэтому вы уж сами подберите нужный файл! Чтобы покончить с поддержкой звука, остается еще два шага. Добавьте в методе frameStarted() следующие три строки кода:&lt;br /&gt;
 if (!Mix_PlayingMusic()) {&lt;br /&gt;
  Mix_PlayMusic(m_Music, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Я не собираюсь вас унижать, объясняя этот код, кроме 0 в конце: это число повторов нашей мелодии [0 значит, что она будет проиграна всего один раз, без повтора, – прим. ред.]. Добавление звука лазера потребует немного мозгов, поскольку потребуется определить метод mousePressed(). В настоящий момент он пуст и сидит в chad.h. Заменим «заглушку» в chad.h на прототип и напишем реализацию этого метода в chad.cpp (чтобы лазер зазвучал). В chad.h, превратим строку....&lt;br /&gt;
 void mousePressed(MouseEvent* e) { }&lt;br /&gt;
&lt;br /&gt;
 ... в...&lt;br /&gt;
&lt;br /&gt;
 void mousePressed(MouseEvent* e);&lt;br /&gt;
&lt;br /&gt;
Тело этого метода надо поместить где-то в файле chad.cpp:&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
   Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Звук лазера теперь будет раздаваться при каждом нажатии кнопки мыши – не сногсшибательно, но начало хорошее! Можете скомпилировать свой код и насладиться звуками лазера.&lt;br /&gt;
&lt;br /&gt;
=== Прицел ===&lt;br /&gt;
&lt;br /&gt;
Если вы не снайпер сразу после дембеля, то вряд ли поражение цели на дальней дистанции покажется вам несложным. Для упрощения этой задачи многие игры содержат на экране небольшой прицел. Добавим и мы прицел в виде точки в игру Висельник Чед. Для этого необходимо проделать три шага: 1 Создать материал, который даст имя файлу. 2 Создать слой, который использует материал, и позиционировать его на экране. 3 Отобразить слой. Первые два пункта реализуются через систему скриптов Ogre; но для последнего шага придется написать код на С++. Начнем с материала. Сохраните следующий ‘код’ как target.material:&lt;br /&gt;
 material Chad/TargetSights&lt;br /&gt;
 {&lt;br /&gt;
            technique&lt;br /&gt;
            {&lt;br /&gt;
                       pass&lt;br /&gt;
                       {&lt;br /&gt;
                            lighting off&lt;br /&gt;
                            scene_blend alpha_blend&lt;br /&gt;
                            texture_unit&lt;br /&gt;
                            {&lt;br /&gt;
                                         texture terrain_detail.jpg&lt;br /&gt;
                            }&lt;br /&gt;
                       }&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Заметили? Я использовал для прицела текстуру terrain_detail.jpg, но только потому, что прицел очень мал: игроки увидят лишь небольшую серую точку. Вы можете взять свою картинку, но пока сойдет и эта. Следующий шаг – определить слой, который принимает материал и помещает его на экранной панели. Затем можно пристроить эту панель на экране, используя координату относительно левого верхнего угла, а также ширину и высоту. В любом случае, вот код – сохраните его в файл target.overlay:&lt;br /&gt;
 chadtarget&lt;br /&gt;
 {&lt;br /&gt;
            zorder 650&lt;br /&gt;
            container Panel(chadsight)&lt;br /&gt;
            {&lt;br /&gt;
                       metrics_mode relative&lt;br /&gt;
                       left 0.495&lt;br /&gt;
                       top 0.495&lt;br /&gt;
              width 0.004&lt;br /&gt;
              height 0.007&lt;br /&gt;
              transparent false&lt;br /&gt;
              material Chad/&lt;br /&gt;
 TargetSights&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Параметр zorder определяет, где панель отобразится на экране, в терминах глубины, то есть мы можем (если пожелаем) задать способ расположения элементов по слоям. В Ogre его максимальное значение 650 (прицел на вершине стека). Последний шаг – создание слоя, он займет всего две строки. Добавьте такой код в конец метода createOutdoorScene():&lt;br /&gt;
 Overlay *TargetSight = (Overlay*)OverlayManager::getSingleton(). getByName(“chadtarget”);&lt;br /&gt;
 TargetSight-&amp;gt;show();&lt;br /&gt;
&lt;br /&gt;
Код загружает слой с именем, определенным в target.overlay, а затем отображает его. Не надо беспокоиться о потере указателя на слой – Ogre автоматически удерживает его посреди экрана, как определено в файле. Наши три шага проделаны; запустите игру и загляните в прицел. Пусть программировать было скучновато, но зато как удобно теперь целиться!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre</id>
		<title>LXF86:Учебники:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre"/>
				<updated>2008-03-10T16:24:21Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Запускаем звуковые файлы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
Настроив звуковую систему, мы, наконец, можем заказывать наши звук и музыку. SDL_Mixer берет на себя их загрузку, а вам остается сделать два вызова функций Mix_LoadWAV() и Mix_LoadMSU(). Они принимают имя загружаемого файла и автоматически обрабатывают множество популярных форматов – WAV, MP3, OGG, MID и MOD, но если ваш дистрибутив не поддерживает формат MP3, то SDL, скорее всего, не сможет его проиграть. Кому интересно, общедоступную запись tipperary.mp3 я нашел в Сети – она совершенно не подходит для игры [«Путь далекий до Типперери» – популярная песенка английских солдат времен I Мировой войны, – прим. ред.], поэтому вы уж сами подберите нужный файл! Чтобы покончить с поддержкой звука, остается еще два шага. Добавьте в методе frameStarted() следующие три строки кода:&lt;br /&gt;
 if (!Mix_PlayingMusic()) {&lt;br /&gt;
  Mix_PlayMusic(m_Music, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Я не собираюсь вас унижать, объясняя этот код, кроме 0 в конце: это число повторов нашей мелодии [0 значит, что она будет проиграна всего один раз, без повтора, – прим. ред.]. Добавление звука лазера потребует немного мозгов, поскольку потребуется определить метод mousePressed(). В настоящий момент он пуст и сидит в chad.h. Заменим «заглушку» в chad.h на прототип и напишем реализацию этого метода в chad.cpp (чтобы лазер зазвучал). В chad.h, превратим строку....&lt;br /&gt;
 void mousePressed(MouseEvent* e) { }&lt;br /&gt;
&lt;br /&gt;
 ... в...&lt;br /&gt;
&lt;br /&gt;
 void mousePressed(MouseEvent* e);&lt;br /&gt;
&lt;br /&gt;
Тело этого метода надо поместить где-то в файле chad.cpp:&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
   Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Звук лазера теперь будет раздаваться при каждом нажатии кнопки мыши – не сногсшибательно, но начало хорошее! Можете скомпилировать свой код и насладиться звуками лазера.&lt;br /&gt;
&lt;br /&gt;
=== Прицел ===&lt;br /&gt;
&lt;br /&gt;
Если вы не снайпер сразу после дембеля, то вряд ли поражение цели на дальней дистанции покажется вам несложным. Для упрощения этой задачи многие игры содержат на экране небольшой прицел. Добавим и мы прицел в виде точки в игру Висельник Чед. Для этого необходимо проделать три шага: 1 Создать материал, который даст имя файлу. 2 Создать слой, который использует материал, и позиционировать его на экране. 3 Отобразить слой. Первые два пункта реализуются через систему скриптов Ogre; но для последнего шага придется написать код на С++. Начнем с материала. Сохраните следующий ‘код’ как target.material:&lt;br /&gt;
 material Chad/TargetSights&lt;br /&gt;
 {&lt;br /&gt;
            technique&lt;br /&gt;
            {&lt;br /&gt;
                       pass&lt;br /&gt;
                       {&lt;br /&gt;
                            lighting off&lt;br /&gt;
                            scene_blend alpha_blend&lt;br /&gt;
                            texture_unit&lt;br /&gt;
                            {&lt;br /&gt;
                                         texture terrain_detail.jpg&lt;br /&gt;
                            }&lt;br /&gt;
                       }&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Заметили? Я использовал для прицела текстуру terrain_detail.jpg, но только потому, что прицел очень мал: игроки увидят лишь небольшую серую точку. Вы можете взять свою картинку, но пока сойдет и эта. Следующий шаг – определить слой, который принимает материал и помещает его на экранной панели. Затем можно пристроить эту панель на экране, используя координату относительно левого верхнего угла, а также ширину и высоту. В любом случае, вот код – сохраните его в файл target.overlay:&lt;br /&gt;
 chadtarget&lt;br /&gt;
 {&lt;br /&gt;
            zorder 650&lt;br /&gt;
            container Panel(chadsight)&lt;br /&gt;
            {&lt;br /&gt;
                       metrics_mode relative&lt;br /&gt;
                       left 0.495&lt;br /&gt;
                       top 0.495&lt;br /&gt;
              width 0.004&lt;br /&gt;
              height 0.007&lt;br /&gt;
              transparent false&lt;br /&gt;
              material Chad/&lt;br /&gt;
 TargetSights&lt;br /&gt;
            }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Параметр zorder определяет, где панель отобразится на экране, в терминах глубины, то есть мы можем (если пожелаем) задать способ расположения элементов по слоям. В Ogre его максимальное значение 650 (прицел на вершине стека). Последний шаг – создание слоя, он займет всего две строки. Добавьте такой код в конец метода createOutdoorScene():&lt;br /&gt;
 Overlay *TargetSight = (Overlay*)OverlayManager::getSingleton(). getByName(“chadtarget”);&lt;br /&gt;
 TargetSight-&amp;gt;show();&lt;br /&gt;
&lt;br /&gt;
 Код загружает слой с именем, определенным в target.overlay, а затем отображает его. Не надо беспокоиться о потере указателя на слой – Ogre автоматически удерживает его посреди экрана, как определено в файле. Наши три шага проделаны; запустите игру и загляните в прицел. Пусть программировать было скучновато, но зато как удобно теперь целиться!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre</id>
		<title>LXF86:Учебники:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre"/>
				<updated>2008-03-10T16:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Запускаем звуковые файлы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
Настроив звуковую систему, мы, наконец, можем заказывать наши звук и музыку. SDL_Mixer берет на себя их загрузку, а вам остается сделать два вызова функций Mix_LoadWAV() и Mix_LoadMSU(). Они принимают имя загружаемого файла и автоматически обрабатывают множество популярных форматов – WAV, MP3, OGG, MID и MOD, но если ваш дистрибутив не поддерживает формат MP3, то SDL, скорее всего, не сможет его проиграть. Кому интересно, общедоступную запись tipperary.mp3 я нашел в Сети – она совершенно не подходит для игры [«Путь далекий до Типперери» – популярная песенка английских солдат времен I Мировой войны, – прим. ред.], поэтому вы уж сами подберите нужный файл! Чтобы покончить с поддержкой звука, остается еще два шага. Добавьте в методе frameStarted() следующие три строки кода:&lt;br /&gt;
 if (!Mix_PlayingMusic()) {&lt;br /&gt;
  Mix_PlayMusic(m_Music, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Я не собираюсь вас унижать, объясняя этот код, кроме 0 в конце: это число повторов нашей мелодии [0 значит, что она будет проиграна всего один раз, без повтора, – прим. ред.]. Добавление звука лазера потребует немного мозгов, поскольку потребуется определить метод mousePressed(). В настоящий момент он пуст и сидит в chad.h. Заменим «заглушку» в chad.h на прототип и напишем реализацию этого метода в chad.cpp (чтобы лазер зазвучал). В chad.h, превратим строку....&lt;br /&gt;
 void mousePressed(MouseEvent* e) { }&lt;br /&gt;
&lt;br /&gt;
 ... в...&lt;br /&gt;
&lt;br /&gt;
 void mousePressed(MouseEvent* e);&lt;br /&gt;
&lt;br /&gt;
Тело этого метода надо поместить где-то в файле chad.cpp:&lt;br /&gt;
 void CChadGame::mousePressed(MouseEvent* e) {&lt;br /&gt;
   Mix_PlayChannel(-1, m_MixFire, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Звук лазера теперь будет раздаваться при каждом нажатии кнопки мыши – не сногсшибательно, но начало хорошее! Можете скомпилировать свой код и насладиться звуками лазера.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre</id>
		<title>LXF86:Учебники:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre"/>
				<updated>2008-03-10T16:18:06Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Запускаем звуковые файлы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
Настроив звуковую систему, мы, наконец, можем заказывать наши звук и музыку. SDL_Mixer берет на себя их загрузку, а вам остается сделать два вызова функций Mix_LoadWAV() и Mix_LoadMSU(). Они принимают имя загружаемого файла и автоматически обрабатывают множество популярных форматов – WAV, MP3, OGG, MID и MOD, но если ваш дистрибутив не поддерживает формат MP3, то SDL, скорее всего, не сможет его проиграть. Кому интересно, общедоступную запись tipperary.mp3 я нашел в Сети – она совершенно не подходит для игры [«Путь далекий до Типперери» – популярная песенка английских солдат времен I Мировой войны, – прим. ред.], поэтому вы уж сами подберите нужный файл! Чтобы покончить с поддержкой звука, остается еще два шага. Добавьте в методе frameStarted() следующие три строки кода:&lt;br /&gt;
 if (!Mix_PlayingMusic()) {&lt;br /&gt;
  Mix_PlayMusic(m_Music, 0);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre</id>
		<title>LXF86:Учебники:Ogre</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Ogre"/>
				<updated>2008-03-10T16:15:55Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Ogre: Лазеры и звук ==  ''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под так...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ogre: Лазеры и звук ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 5: Последний урок в данной серии – музыка для ушей '''Пола Хадсона''': под такую сподручно убивать роботов.''&lt;br /&gt;
&lt;br /&gt;
На данном этапе наша игра содержит все базовые элементы стрелялки от первого лица, но имеет легкий недостаток: п&lt;br /&gt;
одстрелить-то вы никого и не можете. Пожалуй, это скорее тяжелый недостаток, если учесть, что Висельник Чед для стрельбы и задуман. Не хватает также звука и музыки, да и прицела оружия, чтоб видеть, куда мы стреляем. А фанаты С++, наверно, заметили, что отсутствует какое-либо высвобождение памяти. &lt;br /&gt;
&lt;br /&gt;
Изящно завершим Висельника Чеда: реализуем все эти элементы на следующих четырех страницах, и притом запросто – обещаю!&lt;br /&gt;
&lt;br /&gt;
=== Включаем громкость ===&lt;br /&gt;
&lt;br /&gt;
Имя Ogre не дает забыть о сильных сторонах программы: это акроним, означающий Объектно-ориентированный Графический Движок Рендеринга [Object-Oriented Graphics Rendering Engine]. Звук – как для эффектов, так и фоновый – не принимается в расчет и, согласно разработчикам Ogre, приниматься не будет. Но это не проблема, благодаря библиотеке SDL и ее расширению SDL_Mixer: вместе они позаботились о поддержке аудио. Если вы следили за нашими уроками с LXF82, то уже установили библиотеки libsdl-devel и libsdl-mixer-devel; а те, кто этот номер пропустил, пусть начнут с их установки, иначе код данного урока работать не будет. Прежде всего, надо изменить файл chad.h, объявив в нем звуковые файлы стрельбы (я использую laser1.wav) и музыкального фона (tipperary.mp3). В SDL-терминах это Mix_Chunk и Mix_Music соответственно, поэтому добавьте две строки в конец класса CChadGame:&lt;br /&gt;
 Mix_Chunk* m_MixFire;&lt;br /&gt;
 Mix_Music* m_Music;&lt;br /&gt;
&lt;br /&gt;
Загрузка нашего аудиоматериала осуществляется в файле chad. cpp, в методе initialise(). В конец этого метода (т&lt;br /&gt;
.е. после установки m_SceneMgr в NULL), добавьте следующие четыре строки:&lt;br /&gt;
 SDL_Init(SDL_INIT_AUDIO);&lt;br /&gt;
 Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 2048);&lt;br /&gt;
 m_MixFire = Mix_LoadWAV(“laser1.wav”);&lt;br /&gt;
 m_Music = Mix_LoadMUS(“tipperary.mp3”);&lt;br /&gt;
&lt;br /&gt;
Первая строка инициирует поддержку звука, потому она и идет первой. Функция SDL_Init() сообщает SDL, какие части вы хотите использовать – графику, звук, ввод, таймеры и т.д., обычно через передачу списка констант, объединенных оператором ИЛИ – например, SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_CDROM. Для инициализации всех доступных в библиотеке подсистем (это изрядная расточительность, если вы не намерены все их использовать!), просто укажите SDL_INIT_EVERYTHING. Инициализировав звуковую подсистему SDL, можно открывать звуковое устройство. Это делает функция Mix_OpenAudio(): у нее четыре параметра, определяющих свойства звука. Первый параметр – частота дискретизации: 44100 соответствует CD-качеству; чтобы игра лучше работала на старых компьютерах, попробуйте уменьшить ее до 22050. Второй параметр – формат сэмпла (AUDIO_S16SYS означает 16 бит, какой байт старший – определяется системой), третий – количество каналов (1 для моно, 2 для стерео), а четвертый определяет размер буфера для проигрывания звука. Вам эти параметры ни о чем не говорят? Можете их проигнорировать. Просто скопируйте и вставьте приведенную мной строку кода и больше о ней не вспоминайте. Магия!&lt;br /&gt;
&lt;br /&gt;
=== Запускаем звуковые файлы ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
Пол Хадсон&lt;br /&gt;
написал три книги по Linux и одну по PHP, он также поддерживает на SourceForge два проекта на Mono по лицензии &lt;br /&gt;
GPL. Пол любит Emacs.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T16:06:40Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Бойтесь сканеров */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org).&lt;br /&gt;
&lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения.&lt;br /&gt;
 &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
&lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
&lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). &lt;br /&gt;
&lt;br /&gt;
Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. &lt;br /&gt;
&lt;br /&gt;
Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все.&lt;br /&gt;
&lt;br /&gt;
Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. &lt;br /&gt;
&lt;br /&gt;
Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. &lt;br /&gt;
&lt;br /&gt;
Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. &lt;br /&gt;
&lt;br /&gt;
Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. &lt;br /&gt;
&lt;br /&gt;
Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.&lt;br /&gt;
 &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;br /&gt;
&lt;br /&gt;
=== Бойтесь сканеров ===&lt;br /&gt;
&lt;br /&gt;
Будьте осторожны при сканировании действующих серверов с помощью Nessus – некоторые типы сканирования (по умолчанию они отключены) выполняют атаки типа «отказ в обслуживании», способные вывести сервер из строя. Лучшее время выполнения подобных тестов – перед тем, как сервер будет подготовлен к реальной работе. Если вам потребуется &lt;br /&gt;
просканировать его позже, выберите время, когда временная недоступность сервера вызовет минимальные неудобства.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T16:05:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Как Nmap говорит с вами */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org).&lt;br /&gt;
&lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения.&lt;br /&gt;
 &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
&lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
&lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). &lt;br /&gt;
&lt;br /&gt;
Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. &lt;br /&gt;
&lt;br /&gt;
Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все.&lt;br /&gt;
&lt;br /&gt;
Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. &lt;br /&gt;
&lt;br /&gt;
Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. &lt;br /&gt;
&lt;br /&gt;
Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. &lt;br /&gt;
&lt;br /&gt;
Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. &lt;br /&gt;
&lt;br /&gt;
Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.&lt;br /&gt;
 &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;br /&gt;
&lt;br /&gt;
=== Бойтесь сканеров ===&lt;br /&gt;
&lt;br /&gt;
Будьте осторожны при сканировании действующих серверов с помощью Nessus – некоторые типы сканирования (по умолч&lt;br /&gt;
анию они отключены) выполняют атаки типа «отказ в обслуживании», способные вывести сервер из строя. Лучшее врем&lt;br /&gt;
я выполнения подобных тестов – перед тем, как сервер будет подготовлен к реальной работе. Если вам потребуется &lt;br /&gt;
просканировать его позже, выберите время, когда временная недоступность сервера вызовет минимальные неудобства.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T16:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Скорая помощь */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org).&lt;br /&gt;
&lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения.&lt;br /&gt;
 &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
&lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
&lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). &lt;br /&gt;
&lt;br /&gt;
Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. &lt;br /&gt;
&lt;br /&gt;
Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все.&lt;br /&gt;
&lt;br /&gt;
Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. &lt;br /&gt;
&lt;br /&gt;
Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. &lt;br /&gt;
&lt;br /&gt;
Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. &lt;br /&gt;
&lt;br /&gt;
Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. &lt;br /&gt;
&lt;br /&gt;
Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.&lt;br /&gt;
 &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T16:02:27Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Сканирование на уязвимости */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org).&lt;br /&gt;
&lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения.&lt;br /&gt;
 &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
&lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
&lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). &lt;br /&gt;
&lt;br /&gt;
Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. &lt;br /&gt;
&lt;br /&gt;
Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все.&lt;br /&gt;
&lt;br /&gt;
Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. &lt;br /&gt;
&lt;br /&gt;
Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. &lt;br /&gt;
&lt;br /&gt;
Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. &lt;br /&gt;
&lt;br /&gt;
Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. &lt;br /&gt;
&lt;br /&gt;
Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.&lt;br /&gt;
 &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T16:00:47Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Экран отчета Nessus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org). &lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения. &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все. Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. &lt;br /&gt;
&lt;br /&gt;
Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. &lt;br /&gt;
&lt;br /&gt;
Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. &lt;br /&gt;
&lt;br /&gt;
Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. &lt;br /&gt;
&lt;br /&gt;
Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.&lt;br /&gt;
 &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:59:31Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Sussen: Nessus наоборот */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org). &lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения. &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все. Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.&lt;br /&gt;
 &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:58:39Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Sussen: Nessus наоборот */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org). &lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения. &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все. Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода. &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:57:32Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Экран отчета Nessus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org). &lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения. &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все. Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите&lt;br /&gt;
 # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода. &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, чт&lt;br /&gt;
о он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:55:44Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Sussen: Nessus наоборот */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org). &lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения. &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все. Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; Ваш код зарегистрируется, и будут&lt;br /&gt;
 скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода. &lt;br /&gt;
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.&lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, чт&lt;br /&gt;
о он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:53:40Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org). &lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения. &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все. Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; Ваш код зарегистрируется, и будут&lt;br /&gt;
 скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот).&lt;br /&gt;
 Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода. Sus&lt;br /&gt;
sen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen. &lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не&lt;br /&gt;
 одной дюжины строк.&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, чт&lt;br /&gt;
о он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов.&lt;br /&gt;
 В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:40:52Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Безопасность: Зондируем систему */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
=== Определяем ОС с помощью Nmap ===&lt;br /&gt;
&lt;br /&gt;
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:&lt;br /&gt;
&lt;br /&gt;
 $nmap -A scanme.nmap.org&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST&lt;br /&gt;
 Interesting ports on scanme.nmap.org (205.217.153.62):&lt;br /&gt;
 (The 1657 ports scanned but not shown below are in state: filtered)&lt;br /&gt;
 PORT STATE SERVICE VERSION&lt;br /&gt;
 22/tcp open ssh OpenSSH 4.3 (protocol 2.0)&lt;br /&gt;
 25/tcp closed smtp&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 70/tcp closed gopher&lt;br /&gt;
 80/tcp open http Apache httpd 2.2.2 ((Fedora))&lt;br /&gt;
 113/tcp closed auth&lt;br /&gt;
 Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.&lt;br /&gt;
&lt;br /&gt;
=== Сканирование на уязвимости ===&lt;br /&gt;
&lt;br /&gt;
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org). &lt;br /&gt;
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения. &lt;br /&gt;
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm. &lt;br /&gt;
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:&lt;br /&gt;
 #/opt/nessus/sbin/nessus-add-first-user&lt;br /&gt;
 Using /var/tmp as a temporary file holder&lt;br /&gt;
 Add a new nessusd user&lt;br /&gt;
 ---------------------&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Authentication (pass/cert) [pass] : pass&lt;br /&gt;
 Login password :&lt;br /&gt;
 Login password (again)&lt;br /&gt;
 : User rules&lt;br /&gt;
 ---------&lt;br /&gt;
 nessusd has a rules system which allows you to restrict the&lt;br /&gt;
 hosts that joe has the right to test. For instance, you may want&lt;br /&gt;
 him to be able to scan his own host only.&lt;br /&gt;
 Please see the nessus-adduser(8) man page for the rules syntax&lt;br /&gt;
 Enter the rules for this user, and hit ctrl-D once you are done :&lt;br /&gt;
 (the user can have an empty rules set)&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Login : joe&lt;br /&gt;
 Password : ***********&lt;br /&gt;
 DN :&lt;br /&gt;
 Rules :&lt;br /&gt;
 accept 192.168.0.0/24&lt;br /&gt;
 default deny&lt;br /&gt;
 Is that ok ? (y/n) [y]&lt;br /&gt;
 user added.&lt;br /&gt;
&lt;br /&gt;
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.&lt;br /&gt;
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert. &lt;br /&gt;
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:&lt;br /&gt;
 #service nessusd start &lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить проверку, запустите графический клиент:&lt;br /&gt;
 $/usr/X11R6/bin/NessusClient&lt;br /&gt;
&lt;br /&gt;
Для начала выберите File-&amp;gt;Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест). Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования. Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все. Настроив сканирование по вкусу, выберите Scope &amp;gt; Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.&lt;br /&gt;
&lt;br /&gt;
=== Экран отчета Nessus ===&lt;br /&gt;
&lt;br /&gt;
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от&lt;br /&gt;
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и &lt;br /&gt;
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран&lt;br /&gt;
ения. Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin&lt;br /&gt;
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по&lt;br /&gt;
сылая различные данные сервису и распознавая ответы. Потом Nessus разными способами атакует каждый открытый пор&lt;br /&gt;
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «&lt;br /&gt;
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер&lt;br /&gt;
ки ввода, переполнения буфера, неудачной конфигурации и так далее. Цитирую фразу из одного шоу, которая звучит &lt;br /&gt;
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време&lt;br /&gt;
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о&lt;br /&gt;
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак&lt;br /&gt;
тивации. Получив его, запустите # nessus-fetch --register &amp;lt;ваш код активации&amp;gt; Ваш код зарегистрируется, и будут&lt;br /&gt;
 скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии. Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).&lt;br /&gt;
&lt;br /&gt;
=== Sussen: Nessus наоборот ===&lt;br /&gt;
&lt;br /&gt;
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот).&lt;br /&gt;
 Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu&lt;br /&gt;
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест&lt;br /&gt;
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ&lt;br /&gt;
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило&lt;br /&gt;
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре&lt;br /&gt;
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore&lt;br /&gt;
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода. Sus&lt;br /&gt;
sen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть &lt;br /&gt;
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen. &lt;br /&gt;
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас&lt;br /&gt;
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ&lt;br /&gt;
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес&lt;br /&gt;
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не&lt;br /&gt;
 одной дюжины строк.&lt;br /&gt;
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, чт&lt;br /&gt;
о он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов.&lt;br /&gt;
 В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не&lt;br /&gt;
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече&lt;br /&gt;
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar&lt;br /&gt;
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже&lt;br /&gt;
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:19:30Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;br /&gt;
&lt;br /&gt;
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
'''Д-р Крис Браун'''&lt;br /&gt;
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп&lt;br /&gt;
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.&lt;br /&gt;
&lt;br /&gt;
=== Как Nmap говорит с вами ===&lt;br /&gt;
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C</id>
		<title>LXF86:Учебники:Безопасность</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C"/>
				<updated>2008-03-10T15:15:36Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: Новая: == Безопасность: Зондируем систему ==  ''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Безопасность: Зондируем систему ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''&lt;br /&gt;
&lt;br /&gt;
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:&lt;br /&gt;
&lt;br /&gt;
 $ nmap -sT -p 20-100 192.168.0.1-50&lt;br /&gt;
 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST&lt;br /&gt;
 Interesting ports on 192.168.0.1:&lt;br /&gt;
 (The 78 ports scanned but not shown below are in state: closed)&lt;br /&gt;
 PORT STATE SERVICE 23/tcp filtered telnet&lt;br /&gt;
 53/tcp open domain&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 Interesting ports on 192.168.0.3:&lt;br /&gt;
 (The 78 ports scanned but not shown beloware in state: closed)&lt;br /&gt;
 PORT STATE SERVICE&lt;br /&gt;
 22/tcp open ssh&lt;br /&gt;
 25/tcp open smtp&lt;br /&gt;
 80/tcp open http&lt;br /&gt;
 All 81 scanned ports on 192.168.0.4 are: closed&lt;br /&gt;
 Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T15:07:17Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape: Тест на фоне Xara ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьи дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:41:56Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Наш эксперт */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьи дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Организация окна */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьио дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:34:28Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Организация окна */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[LXF86:img1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьио дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:31:42Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Организация окна */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[Основы рисования:рис.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьио дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:29:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Организация окна */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[Основы рисования:рис.1]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьио дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:28:31Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Организация окна */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьио дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:22:05Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Наш эксперт */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
'''Дмитрий Кирсанов''' Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьио дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape</id>
		<title>LXF86:Учебники:Inkscape</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF86:%D0%A3%D1%87%D0%B5%D0%B1%D0%BD%D0%B8%D0%BA%D0%B8:Inkscape"/>
				<updated>2008-03-10T04:21:47Z</updated>
		
		<summary type="html">&lt;p&gt;Aldebober: /* Эффекты и фильтры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Практикум Inkscape Реальные проекты для развития ваших навыков работы в векторной графике ==&lt;br /&gt;
&lt;br /&gt;
''ЧАСТЬ 6: В чем работать – в Inkscape или в Xara? Расследует '''Дмитрий Кирсанов'''.''&lt;br /&gt;
&lt;br /&gt;
Это случилось в октябре 2005. Inkscape только-только утвердился в качестве самого многообещающего векторного инструмента для Linux, уже пригодного для работы над реальными проектами, и быстро набирал пользователей и разработчиков: многим открылся мощный потенциал векторного редактора с открытым исходным кодом. И тут на поле вышел новый игрок. Небольшая, но влиятельная английская фирма Xara (http://www.xaraextreme.org) объявила, что опубликует исходный код своего флагманского продукта, векторного редактора Xara Xtreme, и портирует его в Linux. Не являясь промышленным стандартом, программа тем не менее была вполне солидна и уважаема еще с восьмидесятых (сперва на Atari, потом под Windows) и имела внушительное сообщество преданных пользователей.&lt;br /&gt;
&lt;br /&gt;
=== Организация окна===&lt;br /&gt;
&lt;br /&gt;
С первого взгляда на Inkscape (А) и Xara (В) заметно базовое сходство обеих программ. Меню, кнопки под ним, главная панель инструментов слева, цветовая палитра и строка состояния внизу – эти компоненты одинаковы. У Xara больше инструментов в панели, а Inkscape обладает более развитой системой меню. Горизонтальная панель прямо над окном (называемая Info bar в Xara и Tool Controls bar в Inkscape) имеет одинаковое назначение в обоих приложениях: здесь собраны органы управления текущим инструментом. Со сменой инструмента содержимое панели меняется. Но есть и различия. Благодаря долгой истории коммерческого применения, интерфейс Xara компактнее (меньше размер шрифта),проработаннее и чище. (Можно подумать, что столь мелкий шрифт непрактичен, но, судя по опыту профессионалов, кучность дизайнеры ценят выше читаемости). Xara обладает многими удобствами, которых недостает Inkscape, например, открытием документов во вкладках (С) и плавающими панелями инструментов – попробуйте и убедитесь. С другой стороны, Inkscape щеголяет удобным селектором слоев справа от строки состояния (D), и панель сообщений (Е) здесь более информативна, чем в Xara.&lt;br /&gt;
Одной из причин, побудивших Xara сделать подобный выпад, был стремительный прогресс Inkscape благодаря новым, уникальным функциям. С другой стороны, Xara для разработчиков Inkscape всегда была примером продуманности интерфейса и отменной практичности. И хотя обе программ давно знали друг о друге, сейчас они впервые встретились как соперники. Соперники? Да, иначе не охарактеризуешь нынешние взаимоотношения этих проектов. Оба объявили себя открытыми и выразили готовность обмениваться идеями и кодом; ходят даже слухи о грядущем объединении, правда, обусловленные недопониманием технической сложности объединения столь непохожих программ. А разнятся они во всем, начиная с геометрических алгоритмов, продолжая несовместимыми форматами файлов (базирующийся на XML SVG в Inkscape и собственный двоичный формат XAR в Xara) и заканчивая разными интерфейсными библиотеками [это не совсем так. Inkscape использует GTK, Xara – wxWidgets, который «транслируется» в GTK под Linux, – прим. ред.]. Хотя вывод новой Linux-версии (Xara Xtreme for Linux) на один уровень с Windows-редакцией – первоочередная задача, вариант 0.7 пока уступает Windows-версии в функциональности. И все же сравнивать две программы уже можно. За этот короткий урок я проведу базовое сравнение; надеюсь, оно позволит вам получить представление о каждом проекте и поможет выбрать для себя подходящий инструмент. На каждом шаге мы будем сравнивать различные аспекты программ, а граница между «зонами» Inkscape и Xara будет сдвигаться влево или вправо в зависимости от развитости соответствующего инструмента в рассматриваемой области. Экранные снимки сделаны с новейших версий каждой из программ, находящихся в разработке (Inkscape 0.44+, Xara 0.7+), хотя иногда я пользовался Inkscape 0.44.1 Windows-версией Xara, чтобы продемонстрировать то, Xara Xtreme 0.7 что еще недоступно на Linux.&lt;br /&gt;
&lt;br /&gt;
=== Основы рисования===&lt;br /&gt;
&lt;br /&gt;
Давайте начнем с чистого холста и испробуем инструменты для рисования той и другой программы. У Inkscape три таких инструмента: ''Pencil (Карандаш)'' для простых набросков от руки (А); ''Pen (Перо)'' для точных прямых и кривых Безье (В); и Каллиграфическое перо для художественного рисования, имитация каллиграфического ''пера'' (С). У Xara таких инструментов только два: в одном (D) объединены простые линии и художественные кисти, а второй (Е) – прямой аналог Пера. Налицо различие подходов программ к художественному рисованию. Любая линия в Xara может быть выполнена разными «кистями» (F) – по сути, узорами, повторяющимися вдоль линии – и иметь разные «профили», определяющие внешний вид штриха ''[толщину или насыщенность цвета штриха – в зависимости от выбранной кисти – при смене его направления или при изменении силы нажатия, если вы работаете с планшетом – прим. ред.]''(G). Несмотря на изощренность этой системы (можно, например, задать собственную кисть), ей не хватает непосредственности Каллиграфического пера от Inkscape. Судя по моему опыту, кисти Xara удобны для продуманных работ (например, рисования полупрозрачными штрихами в виде эллиптических градиентных мазков), но для быстрых набросков и рисования «для души» нет ничего лучше каллиграфического пера Inkscape, с его отзывчивостью, плавностью и естественностью. Кроме того, изображение с большим количеством художественных мазков может замедлить отрисовку, особенно при большом увеличении (хотя, вообще-то, рендеринг в Xara заметно быстрее, чем в Inkscape).&lt;br /&gt;
&lt;br /&gt;
=== Редактирование узлов ===&lt;br /&gt;
&lt;br /&gt;
Инструменты для работы с узлами, напротив, почти не имеют различий в подходах. Они называются ''Node (Узел, А)'' и ''Shape Editor (Редактор фигур, Е)'' в Inkscape и Xara соответственно (хотя оба могут редактировать как линии, так и фигуры), и если вы знакомы с одним из них, другому обучиться недолго. Однако каждая программа обладает некоторыми функциями, отсутствующими у другой, что мы сейчас и увидим. Xara умеет отображать местонахождение позиций выделенных точек и их рукояток в числовом виде (F), и упрощать (сглаживать) выделенную часть линии при помощи ползунка (G) (Inkscape упрощает только линию целиком по ''Ctrl+L'', хотя иногда похожего эффекта можно добиться удалением выделенных точек). Еще одно преимущество Xara – здесь можно редактировать несколько линий одновременно, тогда как Inkscape ограничивает вас единственной выделенной линией. С другой стороны, Inkscape обзавелся такими мощными функциями, как пластика узлов (В), масштабирование и поворот выделенных узлов (С). Можно даже выравнивать и распределять узлы на линии с помощью специального диалогового окна (D). Узлы также снабжены типами (кроме гладких и узлов перегиба, имеются еще и симметричные); больше вариантов соединения, разделения и копирования узлов, и значительно больше клавиатурных комбинаций – можно, например, двигать узел вдоль его рукоятки по ''Ctrl+Alt''. Когда вы освоите эти функции, работать с узлами в Inkscape станет быстрее и удобнее, чем в Xara.&lt;br /&gt;
&lt;br /&gt;
=== Размещение и преобразования ===&lt;br /&gt;
&lt;br /&gt;
Основные операции инструмента выделения, да и клавиатурные комбинации для преобразований, в обеих программах так похожи, что случайный пользователь может не заметить разницы (А, G). Второй щелчок на выделенном элементе в обеих программах приводит к активации рукояток вращения. Семантика команд перемещения также подобна: например, стрелки без ''Alt'' перемещают выделенный элемент на фиксированное расстояние, а нажатие ''Alt'' со стрелкой вызывает передвижение на один экранный пиксел (истинное расстояние зависит от масштаба). Однако, опытным пользователям не хватает в Xara горячих клавиш поворота и масштабирования ([] и &amp;lt;&amp;gt;, соответственно, в Inkscape). Вообще, я считаю значительным преимуществом Inkscape более широкий выбор клавиатурных комбинаций и возможность переопределять многие из них (предусмотрена даже эмуляция клавиатурного профиля Xara).&lt;br /&gt;
В Xara также недостает мощного диалогового окна преобразований Inkscape (В), хотя некоторые похожие функции (вращение и сдвиг) доступны через панель свойств инструмента выделения (Н). Команда Inkscape дополнила диалоговое окно преобразований флажком ''Apply To Each Object Separately (Применить отдельно к каждому объекту)'' (В). Диалоговые окна выравнивания и распределения объектов также в основном похожи (Е, F), и здесь преимущество Inkscape еще более очевидно: выравнивание строчек текста, рандомизация, разделение, удаление перекрытий – все эти функции уникальны в Inkscape, как и группа команд ''Paste Size (Вставка по размеру, С)''. К тому же Xara не умеет автоматически обновлять клоны, а следовательно, там нечего противопоставить диалоговому окну управления клонами (D).&lt;br /&gt;
&lt;br /&gt;
=== Прозрачность и градиенты ===&lt;br /&gt;
&lt;br /&gt;
Обе программы способны создавать полупрозрачные объекты и градиенты. Однако и здесь налицо концептуальные различия. Xara использует для управления прозрачностью и для заливки два разных инструмента (F, G). Заливка цветом (помимо прочих свойств) может быть как однотонной, так и с градиентом, но прозрачность цвета неуправляема. Если требуется прозрачность (ровная или с переходом), ее нужно добавлять отдельно, поверх заливки, инструментом прозрачности (''Transparency''). Такой подход бывает удобен – иногда (например, при добавлении вертикального прозрачного градиента к горизонтальному цветовому градиенту или к растровому изображению), но в большинстве случаев это не так. У Inkscape другой и, по мне, потенциально более мощный подход. Здесь применяется один инструмент (А), но создаваемый им градиент может быть прозрачным или полупрозрачным в любой степени. Простой градиент от красного до прозрачно-красного (В) легко создать в любой программе, а вот переход от красного до прозрачно-синего (С), безусловно, проще произвести в Inkscape. А если необходимо управлять яркостью независимо от заливки, в Inkscape это можно сделать с помощью масок (D), хотя и через весьма скудный диалоговый интерфейс. У Xara шире выбор типов градиента – конический, ромбовидный, трех- и четырехцветный (Н), тогда как Inkscape может предложить лишь линейный да радиальный – все, что поддерживает SVG. Еще у Xara есть два вида фрактальной заливки и прозрачности (I). С другой стороны, Inkscape может создать узорную заливку из любого объекта или даже группы объектов (Е), а Xara заливает объекты только растровыми паттернами.&lt;br /&gt;
&lt;br /&gt;
==== Скорая помощь ====&lt;br /&gt;
&lt;br /&gt;
Пользоваться Xara одновременно с Inkscape проблематично, так как результаты работы одной программы нельзя сохра&lt;br /&gt;
нить в формате другой. Применять PostScript или PDF означает рисковать потерей значительной части информации. К счастью, на свете есть VectorSection, универсальный векторный конвертор, созданный для безопасного преобразова&lt;br /&gt;
ния форматов. Его уже сегодня можно применить для преобразования XAR в SVG. http://scratchcomputing.com/projects/vectorsection&lt;br /&gt;
&lt;br /&gt;
===   Эффекты и фильтры ===&lt;br /&gt;
&lt;br /&gt;
Итак, Inkscape «выиграл» шаг № 5, но нельзя не упомянуть и о том, что и Xara обладает хорошо развитыми способностями, имеющимися в Inkscape, в лучшем случае, в виде примитивных расширений. Среди них инструменты ''Mould (Лекало)'' (D) и ''Blend (Смеситель)'' (E) с широким набором органов управления и удобств. Все, что Inkscape может им противопоставить – это два расширения («Интерполяция» и «Конверт», А и В соответственно), крайне ограниченные и лишенные гибкости – например, конверт может быть только прямолинейным, тогда как в Xara доступны криволинейные очертания. Есть у Xara и некоторые инструменты, не имеющие прямых аналогов в Inkscape, которые придают обычным творениям особый шик. Таков, например, инструмент ''Bevel (Фаска, H)'', создающий трехмерные рамки с изменяемой высотой и различной направленностью освещения. Но самый популярный инструмент, вероятно, ''Shadow (Тень, G)'', создающий естественно размытые тени разных видов. Поверх всего этого с помощью панели инструментов ''Feather (Растушевка, F)'' можно применить дозированную растушевку (которая в основе своей имеет маску с приглушенной яркостью) к любому объекту. До недавнего времени Inkscape просто нечего было противопоставить всем этим качествам. Теперь же его тестовые версии получили инструмент ''Blur (Размытие, С)'', который делает возможным как создание теней, так и лессировку (хотя, конечно, не в один щелчок, как в Xara), наряду с другими интересными эффектами. Итак, мы сравнили программы с различных точек зрения. Решение принимать, конечно, вам, но я надеюсь, что наш урок поможет оценить их возможности. Надеюсь также, что вы освоите обе программы. Обратная связь – на адрес: letters@linuxformat.ru.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Наш эксперт ===&lt;br /&gt;
&lt;br /&gt;
Дмитрий Кирсанов Графический дизайнер,&lt;br /&gt;
специализирующийся на создании логотипов и web-сайтов. &lt;br /&gt;
Консультант,пишет книги и статьио дизайне и XML-&lt;br /&gt;
технологиях.&lt;/div&gt;</summary>
		<author><name>Aldebober</name></author>	</entry>

	</feed>