Вы находитесь на странице: 1из 108

Asterisk Python Chromium LXFDVD

LXF120
Два дистрибутива!
Mandriva 2009.1 Free

LXF Июль 2009


Быстрая Удобная Красивая
ПЛЮС: Ubuntu 9.04
Подшивка LXF Игры

Google Data API

№ 7 (120)
Главное в мире Linux Доступ к данным
из ваших программ с. 58
Июль 2009 № 7 (120)

Jaunty Jackalope
Запись экрана
Jaunty Jackalope
и девять других:

Mandriva 2009.1
прочтите про них
и попробуйте сами
34

Intel
GData
страницы
учебников

Chromium
для всех!

Сними это!

Open CASCADE
Лучшие программы для записи того,
что происходит на рабочем столе с. 14

VirtualBox Intel вырывается вперед


Nehalem Xeon + vPro + новая
виртуализация = хорошо с. 38
Python

Open CASCADE Заметки VirtualBox и Python


Контроль версий

Почему в Linux до сих пор Вырастим дерево Автоматизируйте управление


нет аналога AutoCAD? с. 30 из ваших мыслей с. 50 виртуальными машинами с. 70

Хороший коала знает, В каталоге агентства «Роспечать» — подписной индекс 20882


В каталоге «Пресса России» — подписной индекс 87974

как разглядеть
за деревьями лес.
Марк Шаттлворт про Ubuntu 9.10 с. 27
тифицир
ер о
С

ва
ФСТ

но
ЭК

но
Простая в освоении и надежная

ва
С о
ер
тифицир

операционная система

Mandriva Linux
Mandriva Powerpack
Дистрибутив Mandriva Powerpack предназначен для корпоративных рабочих стан-
ций и небольших серверов. Mandriva Powerpack включает все необходимые офис-
ные приложения (офисный пакет OpenOffice.org, интернет-приложения, графиче-
ские, мультимедийные приложения и др.), а также wine@etersoft для запуска отече-
ственных бизнес-приложений (1С, «Гарант», «Консультант») и серверные приложе-
ния. Mandriva Powerpack совместим с серверной версией «1С: Предприятие».
Дистрибутив Mandriva 2008 Spring Powerpack сертифицирован ФСТЭК.

Mandriva Flash
Mandriva Flash — дистрибутив GNU/Linux, загружающийся и работающий прямо
с USB-носителя объемом 8 Гб. Дистрибутив включает необходимый набор офис-
ных приложений и допускает обновление и установку новых приложений. На USB-
носителе достаточно места для хранения данных пользователя, и дистрибутив
представляет собой полноценное мобильное рабочее место, работать с кото-
рым можно на любом компьютере, поддерживающем загрузку с USB-устройства,
не оставляя следов на этом компьютере.
Mandriva Flash сертифицирован ФСТЭК.

Mandriva Corporate Server


Дистрибутив Mandriva Corporate Server предназначен для создания корпоративно-
го сервера, на базе него можно создать интернет-сервер, веб-сервер, почтовый,
сервер печати, сервер баз данных, сервер приложений и др. Дистрибутив поддер-
живает стандарт LSB, что делает его совместимым с приложениями, адаптирован-
ными для других ведущих мировых дистрибутивов.
Mandriva Corporate Server 4 Update 3 сертифицирован ФСТЭК.

Корпоративные продукты Mandriva Linux


Mandriva Directory Server Linbox Rescue Server
Mandriva Directory Server (MDS) — это простой в использова- Linbox Rescue Server (LRS) — пакет программ, предоставляющий
нии инструмент для централизованного управления учетными функции локального и удаленного управления ИТ-инфраструктурой
записями и конфигурацией таких служб, как электронная по- предприятия. Он может быть использован как в одном подразде-
чта, прокси сервер, служба доменных имен. MDS является осно- лении, так и в десятках. LRS включает функции инвентаризации
вой для системы управления идентификацией пользователей, программного и аппаратного обеспечения, удаленного управле-
разграничения доступа пользователей к интернет ресурсам, ния компьютерами и серверами, а также резервного копирования.
квотирования почтовых ящиков, полностью заменяет Microsoft Администратор может управлять ИТ-инфраструктурой через веб-
Windows NT4, IIS, m-Daemon, работает с Windows, Linux и Mac. браузер с любого локального или удаленного компьютера.

Наименование Код Linuxcenter.Ru Цена, руб. MANDRIVA LINUX ЯВЛЯЕТСЯ


ОДНИМ ИЗ САМЫХ
Для рабочей станции
ПОПУЛЯРНЫХ ДИСТРИБУТИ-
Mandriva 2009.1 Spring PowerPack (DVD-box, техническая поддержка 12 месяцев) lc4942 1900 ВОВ ОПЕРАЦИОННОЙ СИСТЕ-
Mandriva 2009.1 Spring PowerPack (DVD-box, техническая поддержка 6 месяцев) lc4923 1300 МЫ GNU/LINUX В МИРЕ.
Мобильное рабочее место Главные преимущества дистрибу-
Mandriva Flash 2008.1 (Mandriva Linux на 8 Гб USB накопителе) lc3215 1875 тивов Mandriva — дружелюбный ин-
терфейс, простота настройки, воз-
Корпоративные продукты
можность легкого перехода пользова-
LRS Сервер (Linbox Rescue Server, платформы Linux/Windows) телей с Windows на GNU/Linux, совме-
lc2856 1690
(отдельно приобретаются лицензии на рабочие станции) стимость с широким спектром аппа-
Техническая поддержка на Mandriva Directory Server на 1 год lc3560 5550 ратного обеспечения.
Дистрибутивы Mandriva Linux
Лицензия и техническая поддержка lc3342 18 750 сертифицированы по требованиям
на Mandriva Linux Powerpack 2009 на 50 компьютеров
ФСТЭК по 5 классу для СВТ и 4 уров-
Пакет начальной поддержки Linbox Rescue Server lc2821 99 000
ню контроля НДВ, что дает возмож-
Сертифицированные ФСТЭК продукты ность использовать их при обработ-
Сертифицированный ФСТЭК Mandriva 2008 Spring Powerpack lc3408 2900 ке конфиденциальной информации
Сертифицированный ФСТЭК Mandriva Flash 2008.1 (на 4GB USB накопителе) lc3409 4900 и персональных данных граждан.
Сертифицированный ФСТЭК Mandriva Corporate Server 4.0 Update 3 lc3410 10 050 Множество российских государ-
ственных и коммерческих организа-
ций успешно используют Mandriva
Linux на серверах и рабочих станци-
С вопросами по продуктам Mandriva Также в Mandriva.Ru доступны: ях. Среди них: Правительство Москов-
вы можете обращаться в Mandriva.Ru � литература по Mandriva Linux; ской области, администрация Черни-
говского района Приморского края,
Тел.: (812) 309-06-86, (499) 271-49-55 � услуги по установке и настройке Министерство финансов республики
Электронная почта: info@mandriva.ru корпоративных продуктов Mandriva. Саха (Якутия), группа компаний ИМАГ
www.mandriva.ru и многие другие.
Приветствие

Главное в мире Linux

Что мы делаем
Мы поддерживаем открытое сообщество,
предоставляя источник информации и площадку
для обмена мнениями.
Мы помогаем всем читателям получить от Linux максимум
пользы, публикуя статьи в разделе «Учебники»: здесь каждый
найдет что­то по своему вкусу.
Мы выпускам весь код, появляющийся на страницах раздела
«Учебники», по лицензии GNU GPLv3.
Мы стремимся предоставлять точные, актуальные
и непредвзятые сведения обо всем, что касается Linux
и свободного ПО.

Кто мы
Визит в Canonical заставил нас остро почувствовать свою
финансовую неполноценность, и мы решили поинтересоваться
у команды LXF: а что бы вы сделали, если бы у вас был
не миллион – а 500 миллионов долларов?
Ubuntu – десять!
Если вы – один из тех, кто пишет нам письма с пред ложением пере­
именовать «Linux Format» в «Ubuntu Format», му жайтесь: ваши стра­
хи ста ли реальностью! Вы держите в руках номер, посвященный
Нейл Ботвик
Ubuntu. На самом деле, конечно, не все так плохо. Мы по­прежнему помним,
Грэм Моррисон Майк Сондерс
Потратил бы их все 500 миллионов? Я бы потратил их на что в мире есть и другие цвета, кроме коричневого (поэтому припасли для вас
в местном магазин­ На эти деньги создание искусствен­ яркую Mandriva), и посвятим Ubuntu только один выпуск. Благо, повод имеется
чике как средство можно купить ных роботов, которые
поднятия экономики 1153846153 пакета решили бы проблемы более чем достойный: юбилейный десятый релиз Ubuntu 9.04, тра диционную
Уилтшира. лапши. Мммм, климата и голода LXF­редакцию которого вы так же найдете на DVD.
лапшичка... и умели делать чай. К Ubuntu, как и к любому дистрибу тиву, можно относиться по­разному,
но нельзя отрицать, что он стал синонимом слова «Linux» в глазах многих лю­
дей. Как ему это уда лось? Кто­то ска жет, что все дело в миллионах Шаттлворта
и маркетинге (что лично я могу только приветствовать: в конце концов, Windows
XP удерживает лидирующие позиции не из­за технических харак теристик), дру­
гие вспомнят родословную Debian...
Эфраин Эндрю Грегори Энди Ченнел Мне ка жется, что ключ к успеху скрыт в слогане Ubuntu: «Linux для людей».
Эрнандес-Мендоса А я бы склеил эту Я бы жил на вершине
Спроектировал бы кроватку из мелких башни в центре
Здесь не больше супер­функций, чем в любом другом дистрибу тиве, но чувству­
моему малышу нор­ купюр, а потом бы Лондона, окру­ ется внимание к мелочам. Согласитесь, когда вы вводите команду и видите в от­
мальную кроватку. взял с Эффи за нее те женный акулами вет сообщение типа «команда недоступна, вам на до установить пакет XYZ» – это
Те, что есть – дрянные, самые $500 млн. с лазерами на голо­
а сон бесценен. вах. И пирогами. приятно.
Ну, а если вам ка жется, что Ubuntu монополизирует Linux, не мне вас раз­
убеж дать. Просто возьмите его исходники и соберите из них достойного кон­
курента, который будет отличаться от своего родителя не только кодеками
и цветом обоев.

Энди Хадсон Д-р Крис Браун Валентин Синицын, главный редактор


Дэвид Картрайт
Я всегда хотел иметь Найму детектива – Я купил бы Рональдо info@linuxformat.ru
собственный остров – пусть разберется, и Лионеля Месси
а Исландия, говорят, кто этот Руди в песне для «Шеффилд
сегодня стоит недо­ Rudie Can't Fail Юнайтед», а сдачи
рого. Ура! группы Clash. Что я, хватило бы на пинту
мало об этом думал? приличного пива.

Как с нами связаться


Письма для публикации: letters@linuxformat.ru
Подписка и предыдущие номера: subscribe@linuxformat.ru
Сюзан Линтон Шашанк Шарма Маянк Шарма Техническая поддержка: answers@linuxformat.ru
Пустить их на нестан­ Узнал бы, сколько Ну, раз никто этого Проблемы с дисками: disks@linuxformat.ru
дартные ссуды, затем надо Джо Кальзаге, не сказал, я профи­
Общие вопросы: info@linuxformat.ru
обернуть в ценные чтобы уйти с ринга. нансирую разработку
бумаги на $800 млн Я бы выстоял против альтернативных Web­сайт: www.linuxformat.ru
под будущую при­ него – он не ударит энергоносителей Адрес редакции: Россия, Санкт­Петербург, Лиговский пр., 50, корп. 15
быль. Схема испытана! человека в очках. и лекарства от рака.
Телефон редакции: (812) 309­06­86. Дополнительная информация на стр. 104

Июль 2009 Linux Format 1


Содержание
Весь номер – прямо как на ладони: приятного чтения!

Обзоры
Sacred Gold ������������������������������������������� 8
Секреты
Представьте себе Diablo. Потом представьте
Linux. А теперь – закройте глаза на оценку
в 6/10.

MonoDevelop 2�0 ���������������������������� 10


Ubuntu
Разработчики на C# ликуют сквозь слезы,
потому что отладка так до сих пор
и не работает.

Calculate Desktop 9�6 ������������������ 11


Настольный дистрибутив на базе Gentoo
перестает быть оксюмороном, если за дело
Узнайте,
берутся русские умельцы. как создается
самый популярный
дистрибутив Linux
в мире
с. 20
В который раз спрашиваем: сможет
ли этот релиз Mandriva потеснить
на пьедестале Ubuntu? Что за штука... Open CASCADE с. 30
Mandriva 2009�1 ������������������������������ 12 Chromium
Один из лучших виденных нами настольных Теперь становится понятно,
дистрибутивов на базе KDE 4 уверенно шагнул зачем Google нанял
из весны в лето.
Бена Гуджера с. 42

В Linux нет AutoCAD,


но его можно сделать самому�
Мультимедиа-инструментарий Linux —
один из лучших в мире�
Люди говорят
Сравнение: Cкринкастинг
RecordMyDesktop �������������������������� 15 Готов поспорить, что
DemoRecorder ����������������������������������
Pyvnc2swf ������������������������������������������
16
17
в Сети отыщется даже
Xvidcap ������������������������������������������������� 17 точная дата крещения
Istanbul �������������������������������������������������
Byzanz ���������������������������������������������������
18
18
«Наболиона Буонапарте».
Ник Вейч вернулся, чтобы сделать мир чуточку лучше с� 66

2 Linux Format Июль 2009


Mandriva 2009.1
Для вас, Ubuntu-ненавистники!
Ubuntu 9�04 Традиционная LXF­редакция
с расширенным набором пакетов
MonoDevelop 2�0 Если вы – разработчик на платформе .NET
Подшивка Linux Format Выпуски 107–112 в формате PDF
...и много чего еще! с. 96

Ищите в этом номере... Учебники


Начинающим

Контроль версий ............................ 34


Basket и OOo ������������������������������������� 50
Храните свои соображения на компьютере,
и делайте это красиво.
Мы взяли три наиболее популярных системы контроля
версий и посмотрели, что отличает их друг от друга.

Intel + Linux = удача! ....................... 38


Почему вам следует благодарить движение Free Software
за поддержку Core i7 в ядре?
Basket превратит ваш поток сознания
в специальным образом упорядоченные
Google Data API ............................... 58 электромагнитные поля�
GIMP
По вашим многочисленным просьбам: программные Армагеддон �������������������������������������� 54
интерфейсы к службам Google. Наш Майкл побрился налысо, чтобы сняться
в эпизоде с разрушением современного города.
Программирование

ПоДПиШиСь
Google Data API ������������������������������ 58
У нас есть все средства для управления
данными, хранящимися на серверах Google –
поучимся ими пользоваться.

на Linux Format сегодня и получи Сети


Развернем web-приложение ��� 62
PDF-версию журнала в подарок! Возьмите Apache, PHP и MySQL, настройте их
и запускайте, что душеньке угодно.
www.linuxformat.ru/subscribe/
Python
Мэшап для погоды ���������������������� 66
Если вам нравились наши прошлогодние
Постоянные рубрики уроки программирования, вас порадует весть,
что мы запускаем новую серию.
VirtualBox
Новости ������������������������������������� 4 Ответы ������������������������������������ 84 Через месяц ��������������������� 104 Управляй машинами ������������������� 70
События мира Linux глазами наших Проблемы Linux решены: от создания Что ждет вас в LXF121? Это не про парковку задом или езду по песку –
экспертов. новых пользователей до авторских мы покажем, как автоматизировать жизнен­
прав. ный цикл виртуальной машины.
Отладка
Интервью LXF ������������������� 28 Hotpicks ���������������������������������� 90
Хотите знать, как пишутся Лучшие новинки открытого ПО Знакомьтесь: GNU Debugger ��� 72
компиляторы? на планете. Компьютеры делают то, что вы сказали, а не
то, что вы хотели. Но наши инструменты помо­
Что за штука ����������������������� 42 Диск Linux Format ������������ 96 гут превратить желаемое в действительное.
Google все же выпустил операцион­ Ubuntu или Mandriva, вот в чем JavaFX
ную систему, но замаскировал ее вопрос!
Теперь графический ������������������� 76
под web­браузер.
Применим изученный нами синтаксис к реаль­
ной задаче – создадим приложение с графи­
Рубрика сисадмина �������� 44 Пропустили номер? ����� 103 ческим пользовательским интерфейсом.
DHCP и мониторинг нагрузки Желаете знать, с чего началась
на сервер. заинтересовавшая вас серия статей? Hardcore Linux
Вам сюда! Asterisk ������������������������������������������������ 80
Наша команда всегда Подключите свои телефоны к Linux и навсегда
рада подписать вас на LXF: избавьтесь от нежелательных звонков.
электронная версия в подарок!

Июль 2009 Linux Format 3


Новости

Новости
ГлАВНОе: СПО на уровне государства Nokia и Qt: плоды сотрудничества
Ubuntu и мобильный Linux Первый Linux Install Fest в Ставрополье

Федеральные
инициативы
В последних выпусках LXF мы регулярно освещали проблему возврата денег
Рубрику ведет
еВГеНИй КРеСТНИКОВ

за предустановленную Windows; при этом инициативы властных структур


в области свободного ПО как­то отошли на второй план.

В
теку щем номере мы реши ли ис­ вил: при любом ответе таможни ФАС решит
править эту оплошность и опубли­ проблему возвратов.
ковать небольшой дайджест по­ 4 июня 2009 года ФАС возбудила де­
следних событий. Федеральное агентство ло в отношении корпорации Microsoft по
по обра зованию объявило открытый кон­ признакам нарушения пп. 4,6 ч. 1 ст. 10 ФЗ
курс, победитель которого будет обу чать «О защите конкуренции». Дело рассмот­
российских чиновников работе со сво­ рят 4 июля 2009 года – речь будет идти
бодными настольными приложениями об установленном доминирующем поло­
(в конкурсной доку ментации упомяну­ жении корпорации на исследуемом рын­
ты web­брау зер Mozilla Firefox, почто­ ке, а так же о маркетинговой политике
Чиновников
вый клиент Mozilla Thunderbird и ка лен­ обучат работать Microsoft в отношении Windows XP. Одно­
дарь Sunbird, офисный пакет OpenOffice. с популярным временно с этим было возбу ж дено дело
org, а так же сервис Google Docs, хотя свободным ПО� в отношении компаний Асеr Inc., ASUSTeK
не вполне ясно, каким обра зом он попал Computer Inc., Toshiba Corporation, Hewlett­
в перечень открытого ПО). Цена государ­ Интерес властных струк тур РФ к сво­ Packard Company, Samsung Electronics Co.,
ственного контрак та – девять миллионов бодному ПО очевиден, об этом идет мно­ Ltd., Dell Inc. по признакам нарушения
рублей. Обу чение начнется в августе и за­ го разговоров, но ак тивных действий по­ п. 5 ч. 1 ст. 11 ФЗ «О защите конкуренции».
вершится в ноябре 2009 года. Предпола­ ка никто не предпринимает. Единичные В публикации на официальном сайте ФАС
гается, что через эту программу пройдет инициативы, наподобие обучения чи­ сообщается, что «по итогам проведенных
около полу тора тысяч государственных новников или создания «школьного» ди­ ФАС России в февра ле и марте 2009 года
слу жащих. стрибу тива, не в счет – это достойно контрольных мероприятий установлено
Новость, безусловно, положитель­ и хорошо, но как­то бессистемно. Полагаю, отсутствие у представительств компаний­
ная. Однако не все восприняли ее с энту­ наверху сейчас идет ак тивная борьба, и кто производителей ноутбуков процедуры
зиазмом. Главный редак тор Яndex Елена возьмет верх – пока непонятно. СПО в дан­ возврата конечными пользователями
Колмановская считает выбор продук тов ном случае используется как «козырь» про­ предустановленной неак тивированной
Google неоправданным: «Если не хочется тив Microsoft. Кстати, при таком раскладе, операционной системы корпорации “Майк­
выбирать из российских сервисов, то по­ логотипом будущего государственного ди­ рософт” (Windows ХР, Windows Vista)
чему не остановиться на Hotmail, напри­ стрибу тива всея Руси вместо пингвина сто­ с последующим возмещением конечным
мер?» – заявила она. Лично у меня по­ ит сделать карточный джокер. пользователям ее стоимости». Одним из
добная точка зрения вызывает некоторое Но вернемся к теме возврата денег, оснований для возбу ж дения дела послу­
недоумение, поскольку российские сер­ потраченных на «на лог» Microsoft (уйти жило заявление председателя правления
вис­провайдеры пока не пред лагают ре­ от нее никак не удается): РОО «ЦеСТ» В. И. Алксниса. Рассмотрение
шений уровня Google Docs. И если в Яndex ФАС пред лагает ввести раздельное та­ дела назначено на 15 июля 2009 года.
недовольны выбором ФАО – пусть для на­ моженное дек ларирование оборудования Тем не менее, чиновники не торопятся
ча ла за думаются о развитии собственных и программного обеспечения. По мнению продвигать СПО – по крайней мере, поток
сервисов. Правда, второй вопрос к соста­ антимонопольной службы, это позволит федеральных новостей на эту тему сильно
вителям программы – открытость и безо­ создать процедуру возврата денежных обмелел. Значит ли это, что в борьбе за го­
пасность решений типа Google Docs для средств за предустановленные ОС. Соот­ сударственные контрак ты наступил пере­
применения на государственном уровне – ветствующий запрос направлен в тамо­ лом, и очередной этап гонки выигра ла ком­
от этого не снимается. женную службу. Вла димир Кудрявцев зая­ пания из Редмонда? Поживем – увидим.

4 Linux Format Июль 2009


Новости

Nokia: все идет по плану Новости


короткой строкой
Иск Red Hat к правительству
После приобретения фирмы Trolltech, компания Nokia Швейцарии удовлетворен. Феде­
часто упоминается в тематических Linux­изданиях. ральный суд по административным
вопросам вынес решение, запрещаю­
Мы тоже не остались в стороне и уже писали о развитии щее размещать прямые федеральные
ситуации вокруг Qt в предыдущих номерах LXF. заказы на программное обеспечение
у компании Microsoft.

П
родолжим эту добрую тра ди­ шить проблему разработчикам поможет
Корпорация Intel была оштрафо­
цию – тем более, что финский новый инструментарий. Первый API, кото­
вана антимонопольной комиссией
концерн приготовил поклонникам рый появится в общедоступном репозито­
Евросоюза на 1 миллиард евро за неза­
популярного инструментария несколько рии Qt – Qt Service Framework. Разумеется,
конные методы ведения бизнеса.
приятных подарков, главным из которых, проект использует последнюю стабиль­
на мой взгляд, стал общедоступный Git­ ную версию Qt 4.5.
На сайте Минкомсвязи РФ про­
репозиторий Qt. Есть новости и от самой компании
шло голосование на тему «Что,
Разумеется, исходные тексты Qt бы­ Nokia:
по вашему мнению, мешает внедрению
ли открыты всегда, однако сторонним 27 мая финский гигант сообщил об от­
свободного программного обеспе­
разработчикам приходилось отправ­ крытии исходных кодов 3D­видеокодека
чения (СПО) в России?»
лять исправления по элек тронной почте H.264/MPEG­4 MVC. Кодек оптимизирован
или через сервис отслеживания ошибок, для работы на мобильных устройствах, его
Benq планирует поставлять
а так же пересылать факсом подписан­ возможности были продемонстрированы
настольные моноблочные машины
ный договор о передаче авторских прав на выставке Nokia World 2008. Специально
с предустановленным Linpus Linux
на код. Сейчас процедура максимально уп­ для показа был создан интернет­планшет
Lite OS.
рощена – для внесения изменений доста­
точно зайти на сайт http://qt.gitorious.org/
и там передать неэксклюзивные права
«На рабочих столах Sun Microsystems и Fujitsu пред­
ставили новый процессор Venus
на код в Qt Software. Правда, для форми­
рования заявки автору придется создать
Qt прописался SPARC64 VIIIfx. По приблизитель­

клон Git­репозитория и сделать commit уже давно.» ным оценкам, он в 2,5 раза быстрее
Nehalem и гораздо экономичнее
с изменениями.
разработок Intel.
В Qt Software полагают, что открытие Nokia N800 со стереоскопическим дис­
репозитория позволит улучшить обратную плеем. На странице Nokia Research Center
SourceForge купил социальную
связь с независимым сообществом про­ доступны: MVC Encoder – утилита для соз­
сеть Ohloh (www.ohloh.net).
граммистов и существенно упростит про­ дания 3D­видеофайлов и MVC Decoder –
цедуру включения сторонних исправлений плейер для платформы Maemo.
Исходные тексты системы управ­
в основную ветвь разработки. Новая модель интернет­планшета Nokia
ления проек тами xProcess ста ли
Кроме того, компания Qt Software (на­ N900 на платформе Maemo станет теле­
доступны под лицензией GNU Affero
помним, так ста ла называться Trolltech фоном. Устройство будет работать в се­
Public License.
после приобретения) анонсирова ла но­ тях GSM 850, 900, 1800 и 1900 Мгц, а так­
вый проект – Qt Mobility. Из названия по­ же WCDMA 900, 1700 и 2100 Мгц. Кроме
Вышла Fedora 11 и Russian
нятно, что он ориентирован на разработ­ того, новинку оснастят модулем Wi­Fi. На­
Fedora Remix 11. Разработчики
ку ПО для мобильных устройств. В рамках ча ло продаж запланировано на ок тябрь
планируют уда лить Mono из следую­
Qt Mobility будут реа лизованы пакеты 2009 года.
щего релиза – Fedora 12.
кросс­платформенных API для создания Стартовал oFono – совместный проект
мобильных приложений. Шаг вполне ло­ корпораций Intel и Nokia. В рамках oFono
Проект FreeBSD сообщает
гичный – сейчас для ка ж дой платформы, Штаб-квартира планируется создать открытую платфор­
Nokia: здесь о планах по замене компиля­
под держивающей Qt, требуется своя соб­ му для мобильной GSM/UTMS­телефонии,
определяют тора для базовой системы с GCC
ственная компоновка приложений. Ре­ позволяющую разрабатывать прило­
будущее Qt� на LLVM+Clang. Кроме того, во FreeBSD
жения для организации телефонной свя­
8­CURRENT значительно переработана
зи. Программное обеспечение будет рас­
звуковая подсистема.
пространяться под лицензией GNU GPLv2
и предоставит разработчикам D­BUS API
для создания телекоммуникационных
приложений. не с Nokia или Qt Software, а скорее со сто­
Что же касается новостей, касающих­ ронними разработчиками. Речь в основном
ся применения Qt в настольных системах, идет о развитии среды KDE 4 и выпуске но­
здесь наш «улов» будет поскромнее. Стоит вых версий ПО, собранного с использо­
отметить только выход Qt Creator 1.1 в со­ ванием Qt 4.5. Оно и понятно – если рынок
ответствии с ранее опубликованным гра­ мобильных устройств Nokia и Qt Software
фиком. Тем не менее – платформа Qt для только осваивают, то на рабочих столах Qt
настольных систем ак тивно развивается, «прописался» уже давно, и ждать сюрпри­
и сейчас главные новости о ней связаны зов здесь не стоит.

Июль 2009 Linux Format 5


Новости

Ubuntu: еще мобильнее


Выбирая тему для последней заметки, я долго колебался. Хотелось рассказать
о новостях мобильного Linux, о новых сервисах Google (впрочем, о них речь
пойдет на стр. 58), а также о последних события вокруг компании Canonical
и дистрибутива Ubuntu.

У
читывая тему номера, пришлось продвигают Linux на мобильные устрой­ установки на жесткий диск и позволяет
остановиться на последнем ва­ ства, и ка ж дый пытается откусить кусок максимально защитить данные пользо­
рианте – тем более, что многие побольше от этого «пирога». Вспомним вателя от злоумышленников. К моменту
инициативы Canonical так или иначе свя­ Nokia и Qt Software (Maemo и Qt), о кото­ написания заметки доступна только бета­
заны с продвижением Ubuntu на рынок рых говорилось выше; кроме них, есть еще Ubuntu уже версия Ubuntu Privacy Remix.
мобильных устройств (к которым я от­ Intel с платформой Moblin, а так же Google свил гнездо Как можно видеть, несмотря на отсут­
ношу и нетбуки). Android и целая куча проек тов помель­ на мобильных ствие в новостном блоке раздела «Мобиль­
телефонах�
Тра диционно выделим главную но­ че. Android имеет все шансы занять лиди­ ный Linux», писать пришлось в основ­
вость: компания Canonical представи­ рующее положение на рынке мобильных ном о нем. В этом нет ничего
ла среду исполнения Android­приложе­ устройств под управлением Linux. А зна­ удивительного – открытая
ний в Ubuntu. Разумеется, пока что речь чит, для платформы Google будет разрабо­ ОС сейчас ак тивно про­
идет о прототипе, в котором реа лизова­ тано огромное число приложений, и воз­ двигается на рынок мо­
ны да леко не все особенности платфор­ можность запустить их в Ubuntu поможет бильных устройств,
мы Google. Я не буду заостряться на техни­ Canonical претендовать на свою долю и многие компании со­
ческих подробностях (о них уже нема ло рынка. средоточили свои уси­
говорилось на тематических порта лах). Прочих новостей о популярном дист­ лия именно в данном
Интересно другое – зачем пона добилось рибу тиве GNU/Linux не так много: направлении. Canonical
запускать приложения Android в настоль­ Вышел Linux Mint 7, созданный не ста ла исключением,
ном дистрибу тиве, в репозитории кото­ на основе Ubuntu 9.04. и мне ка жется, что следую­
рого достаточно других свободных про­ Пользователям доступен очередной щим ее шагом будет про­
грамм? По официальной версии, подобная релиз Nexenta Core Platform 2.0, основан­ движение своих продук тов
функция пригодится вла дельцам нетбу­ ный на ядре OpenSolaris и окру жении на рынок интернет­планшетов
ков. Согласен; но стоит учесть тот факт, Ubuntu 8.04. и телефонов. По крайней ме­
что Canonical объявила о своей инициативе Впрочем, стоит отметить новый ре, сообщения об успешном за­
вскоре после того, как корпорация Google проект Canonical – Ubuntu Privacy пуске Ubuntu на планшетах Nokia
озвучила планы продвижения платфор­ Remix, представленный на конфе­ уже мелька ли в сети. Что касает­
мы Android на рынок нетбуков. Видимо, ренции SIGINT 09. Это созданный ся рабочих столов – здесь все идет
сейчас мы имеем дело с банальным пере­ на базе Ubuntu 9.04 LiveCD, ко­ по плану, без сильных рывков, чего
делом рынка. Разработчики ПО ак тивно торый не предназначен для и следова ло ожидать.

Что было: Linux Install Fest / Ставрополь


Когда 24 мая 2009 года Краснодарского края и да же из Дагестана. Сре­ стрирован телекана лом «Симпекс­СТС» в про­
Где г. Ставрополь ди них были как профессиона лы – программи­ грамме «Дета ли КМВ».
24 мая 2009 года, впервые в Ставрополь­ сты, системные администраторы, IT­специа ли­ Репортаж: Виталий Бахтинов (Dumus)
ском крае, состоялся Linux Install Fest / Ставро­ сты, технические дирек тора предприятий – так Фото: Дмитрий Карлов
поль, целью которого было показать возмож­ и обычные пользователи ПК, желающие полу­
ности свободного программного обеспечения чить основные навыки работы в Linux.
вообще и операционной системы GNU/Linux В рамках фестива ля у участников была воз­
в частности. Фестиваль был организован сами­ можность ознакомиться с Linux, за дать вопросы
ми пользователями Linux, при под держке Севе­ специа листам и бесплатно установить ее себе –
ро­Кавказской Группы Пользователей Linux (NC для этих целей многие принесли с собой ноутбук
LUG) на базе коллед жа связи им. В. А. Петро­ или компьютер. Так же проводилась бесплатная
ва. Для всех участников мероприятия это ста ло раздача дисков с заранее записанными дистри­
настоящим событием: организаторы рассчиты­ бу тивами. Кроме того, в программе были пре­
ва ли на 100, максимум – 150 человек, но в об­ дусмотрены мастер­классы по установке и на­
щем счете посетителей было более 500. В том стройке Linux, демонстрации работающих систем
числе, помимо жителей Ставрополя, приеха­ и презентации с подробными докладами.
ли участники из других городов: региона Кав­ Репортаж с мероприятия был опубликован Мероприятие уровня Linux Install Fest проходило
казских Минеральных вод, Ростовской области, в газете «Ставропольская правда» и продемон­ в Ставропольском крае впервые�

6 Linux Format Июль 2009


Обзоры
Новинки программного и аппаратного обеспечения в описании наших экспертов

Сегодня мы рассматриваем:
АлеКСей ФеДОРЧУК
его слабости — mass
storage, разметка
диска и файловые
системы�

Sacred Gold ................................................ 8 Calculate Desktop 9.6 ....................... 11


Авторам этой игры явно не дают покоя лавры Diablo. Схема нумерации версий как у Ubuntu, изнутри как Gentoo,
Будут ли машины Тот ли это слу чай, когда копия оказывается лучше (или по предназначению как Mandriva. Нет, это не чудовище
большими? хотя бы сравнимой) с оригина лом? Все зависит от того, Франкенштейна – это отечественный дистрибу тив Linux,
что именно вы цените в развлечениях подобного рода. и причем весьма удачный.

С
ентенцию о том, что некогда
машины, как и деревья, бы­
ли большими, за последние
MonoDevelop 2.0 .................................. 10 Mandriva 2009.1 .................................... 12
Объект вож деления Пола наконец­то достиг вер­ Если коричневый, пусть да же с апельсиновыми
десятилетия не повторял только су­ сии 2.0. Если вы никак не могли найти повод, чтобы нотками, все равно не ваш цвет, имеет смысл взглянуть
перленивый. А давайте спросим себя: начать программировать с Mono, это как раз то, что нуж­ на Mandriva: она сумела совершить с KDE 4 то же самое,
нужны ли нам большие машины? но – если заработает. А если нет – попробуйте Qt Creator что Ubuntu когда­то проделал с Gnome.
Правда, чтобы ответить на этот во­ и настоящие языки.

прос, нам придется заодно спросить


себя: а зачем нам вообще машины?
Когда­то все мы чего­нибудь да пи­
са ли. Некоторые, настоящие мужчи­ Sacred Gold c. 8 Calculate Desktop 9.6 c. 11
ны, писа ли да же драйвера для своих
устройств. А теперь? Все уже напи­
сано до нас.
Мы имеем право быть простыми
пользователями. Не заморачивающи­
ми себе голову лока лями, драйверами
и прочими материями.
И возникает вопрос – а нужны ли
нам гигагерцы и гигабайты? Да, нуж­
ны. Один раз в жизни – когда мы
собираем ядро (если, конечно, это
Надоело воевать с демонами в консоли? С недавнего времени Calculate Linux Desktop
вообще понадобится). Тогда какова
Воюйте с ними на зеленых лугах в мире фэнтези� обзавелся (в дополнение к рабочему столу KDE)
потребная для этого мощность? самостоятельной Xfce-версией�
(Не будем забывать, что какой же
русский не любит быстрой езды,
то есть, пардон, компиляции?)
Отвечаю: ядро Linux в конфигу­
Наш вердикт: Пояснение
рации по умолчанию на машине
с 3­ГГц процессором и 4­ГБ ОЗУ соби­ Все попавшие Выдающиеся
рается где­то минут 7. На нетбуке в обзор продукты
оцениваются
решения могут
получить престиж­
Вердикт
c 800­Мгц процессором и 512 МБ па­ по одиннадцати­ ную награду «Top
мяти – раза в четыре дольше. Принци­ балльной шкале Stuff». Номинан­
Google Earth
Разработчики: Google
пиально? (0 – низшая оцен­ тами становятся
Сайт: http://earth.google.com
А учи тывая, что наш нетбук ка, 10 – высшая). лучшие из луч­
Цена: Бесплатно по закрытой лицензии
Как правило, ших – просто высо­
еще и элек троэнергии потребляет Функциональность 10/10
учитываются кой оценки здесь
куда меньше... Как говори ли клас­ функциональ­ недостаточно. Производительность 9/10
сики, мил лиард лет – это очень мно­ ность, производительность, Рассматривая свободное Простота использования 9/10
простота использования и цена, ПО, мы обычно указываем Оправданность цены 9/10
го. Ес ли понимать и не сдаваться.
а для бесплатных программ – предпочтительный дистрибу­ Если весь мир – сцена, то Google
Но этого мил лиарда у нас уже нет. Earth – театр. Простая в использова­
еще и документация. Кроме тив. Иногда это означает ком­
Давай те попробуем сде лать, что того, мы всегда выставляем пиляцию из исходных текстов, нии, захватывающая и ободряюще
можем. общую оценку, демонстри­ но если разработчики рекомен­ практичная программа.

alv@posix.ru
рующую наше отношение
к продукту.
дуют Autopackage, мы следуем
этому совету. Рейтинг 9/10

Июль 2009 Linux Format 7


Обзоры Игра

Sacred Gold
Подчиняясь логике приключений, Алекс Кокс месит бесконечную «зеленку»,
подбирает тупые топоры и гоняет скрытых в его душе демонов.

П
овальным ув лечением нын­
Вкратце че яв ляется Diablo; и не хочет­
ся, а на до укротить сей бич
Рабское под- офисных помещений. Sacred Gold [Свя­
ра жание под- щенное золото] многим обязана этой
земельным основополагающей бродилке от Blizzard.
бродилкам,
До такой степени многим, что Blizzard
с 3D-надстройкой
над двумерной так и видится со взыскующим долгов
картой� См� так же: па яльником в руках. Sacred устроена, как
Diablo под Wine� Diablo; выглядит, как Diablo; уши Diablo
торчат отовсюду. Чтобы превзойти ориги­
нал, на до свершить чудеса…
Sacred не будет загадкой да же для
незнакомых с Diablo: это ролевая игра, поч­
ти полностью управляемая мышью. Щел­
чок – и вы продвигаетесь вперед. Щелчок

«Вы спасаете мир,


круша все живое
Таланты персонажей Sacred не сильно различаются� Впрочем, щупальца —
на своем пути.» это нечто новенькое�

на монстре – и монстр пора жен. Щелкае­ ся в нача ле, при выборе персона жа. Вам Кем вы хотите стать?
те правой кнопкой, и получаете особый нравится Гла диатор – гора мышц, которая Прочие персона жи – опять­таки с разруши­
ход. Со временем вы набираетесь опы­ смачно крушит все на своем пу ти? А мо­ тельными наклонностями. Кроме тради­
та и всяких примочек для своего персо­ жет быть, Гном, бородатый тип чуть по­ ционной перемены статистики, есть и дру­
на жа – и это почти все, на что способ­ меньше ростом, предпочитающий пальбу? гие различия: все начинают игру из разных
на игра. Всякий раз, входя в обширный, Или Серафим – сплошные крылья и ког ти? мест (Гладиатор, например, в подземельях
приятный взгляду игровой мир, вы буде­ Ну, а для разнообразия можно взять Ма­ под ареной). Однако после краткого «ввод­
те делать одно и то же, поэтому Sacred – гистра Битвы, волшебника (он, впрочем, ного инструк та жа» их пу ти сливаются. Начи­
на любителя. тоже чаще колошматит, чем заклинает). нается самый обычный квест, и мы не суме­
Богатством выбора игра тоже не бле­ У всех явная проблема с немотивирован­ ли найти каких­либо отклонений от общего
щет. Вероятно, сложнее всего приходит­ ной яростью... принципа роста способностей.

Шаг за шагом: Гоблины для новичков

Атака Отпор Последствия


Гоблины весьма назойливы. Они не преминут Нет проблем, у вас ведь козырь в рукаве. Достае­ Не по нутру за литый кровью пейзаж? Рас­
напасть на вас ку чей, пусть вы да же Демон выс­ те сверкающий шар смерти, и наблюдаете мас­ слабьтесь: через пару секунд трупы испарятся
шего уровня с огромным мечом. совое побоище. сами собой.

8 Linux Format Июль 2009


Игра Обзоры

Многие пейзажи Sacred поражают красотой — отменная Дополнительный сюжет начинается прямо у врат преисподней, перед входом
работа художников� в страну гигантских монстров�

А что же сюжет? Насколько нам уда­ и его воплощение прак тически не связа­ да же после того, как вы специально за­
лось разобрать, речь идет о каком­то де­ ны меж ду собой: Волшебный боевой топор крываете их в клетке на ключ и убегаете.
моне. Из­за неверно составленной пента­ может быть двуручным или миниатюрным; Короче, игра странная, неоригиналь­
граммы он вырвался на волю. И вот, по обоюдоострым или безна дежно тупым. ная, однообразная и скучная. Ну, или за­
велению принца Валора, вы спасаете мир мечательная – кому как. Если вы обожаете
Аскарии, перебираясь из точки А в точку Ах, эта графика расправляться с гоблинами одной левой
В и круша по пу ти все живое. Заодно вам по­ На до отдать должное Sacred: графика вез­ (кнопкой мыши), то несколько недель без­
падется несколько необязательных квестов де превосходная. Двумерные ландшафты заботного веселья вам обеспечены. Sacred,
(что­нибудь добыть, кого­то укокошить, или прорисованы отменно. Мир Аскарии на­ конечно, не Diablo, но чертовски похожая
все это комплектом). Кроме того, есть рас­ столько велик, что и после нескольких ча­ имитация.
ширение Underworld, оно вступает в дей­
ствие по исчерпании основного сюжета. Совет: если
Стоит упоминания система сбора тро­ бежать по прямой,
феев, несуразная до смешного. Убивае­ досаждая злобным
монстрам, они ско-
те трех монстров – двое из них роня­
лотят банду
ют бонусы. Весьма щедрое соотношение, и вас зашибут�
но при таком изобилии вам придется ка­
ж дые пять минут останавливаться и вы­
тряхивать лишнее «добро» из заплечно­
го мешка. Что еще ху же, название трофея

сов игры на карте остается нема ло «белых


пятен». Похоже, места там да же слиш­ Вердикт
ком много: сказать что­нибудь интересное
В Sacred есть чародеи — бродячие могут только персона жи квеста, поэто­
торговцы информацией� Этот раскрывает му разные локации плавно переходят од­
Sacred Gold
тайны сложных атак�
на в другую. Разработчик: Linux Game Publishing
А тут еще иска жения, возникающие из­ Сайт: www.linuxgamepublishing.com

Коллективное безумие за временного зазора меж ду первоначаль­


Цена: около 1500 рублей

ным релизом Sacred и появлением игры Сюжет 5/10


для Linux. Системы репу тации нет, и мож­ Графика 7/10
Sacred не чисто одиночная иг­ но; теоретически PenguinPlay Увлекательность 10/10
ра. Это, конечно, не World of War­ обеспечит вам онлайн­игру, на­ но нагло вторгаться в чу жие дома и выно­
Оправданность цены 5/10
craft, но у вас, по крайней мере, пример, в Ballistics или Knights сить от туда столько золота, сколько ду­
есть шанс выйти в Сеть и разде­ and Merchants. Мы говорим – тео­ ше угодно. Можно купить лошадь и ездить Тягучий однообразный сюжет
лить игру с друзьями. Linux Game ретически, так как на прак тике с минимальными вариациями.
на ней, хотя мы так и не поняли, зачем бы
Publishing организова ла для это­ пока никто особо не подключает­ Впрочем, у некоторых любителей
го собственную серверную систе­ ся. Поэтому сперва найдите еди­ это было на до. Иногда к вам привязывают­ ролевок может быть другое мнение…
му, PenguinPlay (www.penguinplay. номышленников, чтобы извлечь ся люди, втисну тые в ма ловразумитель­
com). Платить ничего не нуж­ из сервиса максимум пользы. ный и плохо озвученный сюжет. Они сле­
дуют за вами по пятам, и телепортируются
Рейтинг 6/10
Июль 2009 Linux Format 9
Обзоры Среда разработки

MonoDevelop 2.0
Пол Хадсон считает, что программисты Mono, наконец,
получают IDE, достойную их любимой платформы.

О
тладки для Mono никог­
Вкратце да не было (дюжина вызовов
Console�WriteLine() не в счет).
лучшая MonoDevelop 2.0 – попытка устранить эту
(единственная!) проблему. Попутно улучшены процессы
IDE для Mono: редак тирования и создания GUI и укрепле­
стала удобнее,
на насущнейшая под держка (ха­ха) цвето­
но отладка по-
прежнему сквер- вых схем.
ная� См� так же: Приступив к использованию Mono­
Eclipse и Java� Develop 2.0, вы сразу же заметите мас­
су изменений. Больше нет старых фор­
матов файлов MonoDevelop (�mds и �mdp):
теперь используется тот же формат, ко­
торый Microsoft применяет в среде Visual
Studio, а значит, можно брать Windows­
проек ты и спокойно работать над ними
в MonoDevelop.
Но да же утрата обратной совмести­
мости пока жется не столь впечатляющей,
когда вы начнете кодировать: свертывание
кода (можно отметить участки программы
и визуально спрятать их за одной строкой),
раздельные панели, маркеры изменений Интерфейс пользователя MonoDevelop богат функциями редактирования
в ду хе Eclipse – все это есть, но отдель­ и вовсю использует композитинг�
ной похва лы заслу живает завершение
кода C# 3.0. Эта функция в MonoDevelop Под держка последних по умолчанию с Visual Studio – тоже хорошо. А то, чего
действует замечательно: она безошибоч­ не ак тивируется, что подчеркивает еще од­ так жда ли – отладка – не годится. Может
ну функцию MonoDevelop – выбор целевой быть, достаточно на ложить пару заплат,

«Новшества подводят версии среды времени выполнения. Это бы­


ло возможно и преж де (в смысле, вы мог­
и все на ла дится – но куда смотрело бета­
тестирование?
MonoDevelop ближе ли компилировать для .NET 2.0 вместо 1.1).
MonoDevelop 2.0 идет дальше, пред лагая
В общем, пробуйте MonoDevelop 2.0 –
ведь это ценное обновление единственно­
к должному уровню». уже 3.5, и, самое важное, автоматически го нашего Mono­редак тора. Найти его
определяет несоответствие, когда, заявив нетрудно (он просочился в Ubuntu 9.04
но сработа ла во всех наших тестах, да же под держку .NET 2.0, вы случайно начинае­ и, видимо, будет в Fedora 11), но отврати­
при нечетком определении переменных те использовать конструкции из 3.5. тельная отладка вас разочарует.
ключевым словом var и использовании
методов­расширений. А это работает?
Новшества ра дуют: они подводят Вердикт
MonoDevelop ближе к уровню, которого
Свойства навскидку он по праву заслу живает. Но вот отладка…
MonoDevelop 2�0
ху же некуда. Часто MonoDevelop бездей­
ствует, пока вы не закроете свое прило­ Разработчик: Novell
жение. А если и реагирует, то не под дер­ Сайт: www.monodevelop.com
живает условные точки останова. Цена: бесплатно под GPL

Ес ли отла дочный модуль все же со­


Функциональность 8/10
изволит заработать, то все отлично: Производительность 7/10
вы можете пройти код по шагам; при на­ Простота использования 6/10
ведении курсора на переменную (да же Оправданность цены 8/10
с неопределенным типом) выводятся
Лучшая среда разработки Mono –
Хромая отладка Компоновка GUI подробные сведения; можно так же про­ потому как единственная.
Расставьте точки останова, Дизайнер пользовательских никать в струк туры данных с помощью Но не без дефектов.
клавишей F5 запустите от­ интерфейсов MonoDevelop «разворачивающих» стрелок. Новый ре­
ладку, и… любуйтесь, как
MonoDevelop их игнорирует.
неплох, но Glade все­таки
лучше.
жим редак тирования хорош. Под держ­
ка C# 3.0 хороша. Тесная взаимосвязь
Рейтинг 7/10
10 Linux Format Июль 2009
Дистрибутив Linux Обзоры

Calculate Linux Desktop


Григорий Рудницкий откопал в закромах родины отечественную
альтернативу Sabayon. Установит ли он ее себе на нетбук?

Д
ружелюбные дистрибутивы часто
Вкратце делают на базе Ubuntu и Fedora,
реже – Mandriva; на основе Gentoo
Отечественный проектов немного, и среди них – Calculate
настольный дис- Linux Desktop. Согласно названию, он наце­
трибутив со спе-
циализированной
лен на настольные ПК и ноутбуки, и досту­
серверной верси- пен в двух вариантах: с KDE и, с недавних
ей� См� также: ALT, пор, с Xfce. Это самостоятельные сборки,
Mandriva, Runtu� распространямые как отдельные образы
LiveDVD; впрочем, Xfce­версия умещает­
ся и на CD.

Готовьте ваши кабели


Загрузка с Live DVD несложная: надо лишь
указать в начальном меню язык и разреше­
ние экрана, причем последнее – только ес­
ли нет уверенности, что видеоадаптер бу­
дет распознан корректно. Все необходимые операции, в том числе и установку на жесткий диск,
Набор ПО, предлагаемый «из коробки», приходится выполнять из консоли��
весьма невелик и накрывает лишь базовый
диапазон задач: для Интернета предлага­ в терминале команду calculate c нужными на в Windows­сетях – в таких сетях смогут
ется браузер Firefox, для электронной поч­ параметрами. работать компьютеры под управлением
ты – клиент Claws Mail, для офисных доку­ Интересна реализация механизма об­ Windows и Linux. Правда, отсутствует спе­
ментов – OpenOffice.org 3.0.1. Разумеется, новления. Новая версия выходит каждый циализированная версия Wine@Etersoft
потом можно добрать все необходимое. месяц. Текущий номер – 9.6, что соответст­ (а значит, безболезненный запуск россий­
вует году и месяцу выпуска. Если вы уста­ ских бизнес­приложений), но ее можно

«Интересна реали- новили CLD, а через месяц вышла его


новая версия, поместите ее ISO­образ
приобрести и установить отдельно. Как это
сделать, тоже сказано в документации.
зация механизма в директорию /usr/calculate/share/linux
и скомандуйте calculate: все пользова­
В целом, CLD вполне стабилен и удо­
бен в работе. Но мы бы не рекомендова­
обновления CLD.» тельские настройки уцелеют, а система ли его новичкам в Linux, даже несмотря на
обновится. И это можно делать сколь­ неплохую документацию. Его аудитория –
Заметно отсутствие поддержки ряда ко угодно раз – опять же командами из опытные пользователи, которые не боят­
беспроводных сетевых карт: так, не обна­ консоли. Подробная информация – в при­ ся и любят работать в консоли, и при этом
ружились внешнее устройство от Netgear лагаемом Readme­файле. Документация эстетика и удобство для них играют не по­
и встроенное от Broadcom. На официаль­ отличная, и есть русская версия: без лиш­ следнюю роль.
ном сайте разработчики заявляют, что про­ них технических подробностей, зато с мас­
тестировали адаптеры Intel PRO/Wireless сой полезных практических примеров.
и Realtek RTL8187, а также точки доступа Кому не нравится CLD,, но симпатич­ Вердикт
Zyxel P­330W и D­Link DI­824VUP+ – воз­ на модель сборки дистрибутива из порте­
можно, обладателям этих устройств удаст­ жей, может изготовить собственный вари­
ся подключиться к беспроводной сети. ант на его основе. Для этого понадобится
Calculate Linux Desktop 9�6
Зато повезло владельцам софт­модемов: уже установленная самая свежая версия
Разработчик: Компания Calculate Pack
они поддерживаются ядром CLD. CLD, а также два пакета из дистрибутива Сайт: www.calculate­linux.ru
Gentoo – portage и stage3. Подробная ин­ Цена: бесплатно
Получите прописку струкция по сборке заняла бы отдельную
Функциональность 8/10
Установить CLD можно прямо с Live DVD, статью; но данный процесс хорошо доку­ Производительность 9/10
но не ищите в меню инсталляторов с кра­ ментирован разработчиками. Простота использования 7/10
сивой графической оболочкой, какие есть Документация 9/10
в Ubuntu или Mandriva: все придется де­ На работе По­своему красивое и функ­
лать в консоли. «Фирменной» программы CLD рассчитан не только на домашние циональное решение, но отнюдь
для разбиения диска нет. Впрочем, fdisk, компьютеры, но и на корпоративное при­ не для начинающих.
который разработчики для этого реко­ менение. Его серверный вариант, Calculate
мендуют, знаком многим. После разметки
диска установите систему, выполнив
Directory Server, способен выступать
в качестве главного контроллера доме­
Рейтинг 8/10
Июль 2009 Linux Format 11
Обзоры Дистрибутив Linux

Mandriva 2009.1
Первая вылазка Mandriva после прошлогоднего тусклого релиза.
Маянк Шарма гадает: это скачок на новую ступень или прыжок в никуда?

П
осле выхода предыдущей вер­
Вкратце сии Mandriva подвергнулся изме­
нениям, многие из которых при­
Один из ста- шлись сообществу против шерсти. Но по
рейших дист-
части выпуска дистрибу тивов общего на­
рибу тивов
общего назна- значения Mandriva всегда держит мар­
чения, имеющий ку. Так произошло и на этот раз: Mandriva
свободную Spring 2009.1 снова за дает тон.
и проприетарную По обычаю, Mandriva подготовила три
ветви� См� так же
варианта: One с проприетарными драй­
Fedora, OpenSUSE
и Ubuntu� верами; Powerpack с проприетарными
приложениями; и Free – ничего проприе­
тарного. Free размещается на 4­ГБ ISO­
образе, а для One имеется Live CD с воз­
можностью инсталляции. Кроме того, ISO
Ключевое ПО
One можно записать на USB и загру жать­
Ядро 2.6.29 ся уже с него.
X.org 7.4 Обновленный установщик научился
KDE 4.2.2
выводить встроенную документацию с по­
Gnome 2.26
мощью WebKit. Гордость Spring – скорость
Xfce 4.6
загрузки, значительно повышенная за Mandriva Linux Spring 2009�1 теперь тайно поддерживает файловую систему ext4 —
Установщик
кодеков Codeina счет применения системы Speedboot (пер­ но до чего же эффектно выглядит KDE 4!
Qt Creator 1 вым делом выводится экран входа в сис­
тему, остальные службы разворачивают­ равления Mandriva еще более обогатился. бочим – пропа дает да же переключение
ся в фоновом режиме). На нашей тестовой Каркас безопасности Mandriva, Msec, об­ меж ду окнами. Новый менед жер сеансов
машине Spring загрузился за 26,6 с, тогда новлен полностью, от графического ин­ обзавелся кнопками ждущего и спяще­
как Debian Lenny пона добилось 42,6 с. Ха­ терфейса до под держки подключаемых го режимов – работают безупречно; а вот
модулей. кнопки выключения и перезагрузки по­

««Весь дистрибутив Почувствуйте разницу


зволяют лишь выйти из KDM, а затем вой­
ти назад.
выстроен вокруг Mandriva Spring 2009.1 одним из первых
крупных дистрибу тивов взяла за осно­
Mandriva всегда извлекает из KDE мак­
симум возможного – впрочем, иного про­
новой версии KDE 4.» ву рабочий стол KDE 4.2. Весь дистрибу­ сто не дано. В любом случае, если вы хо­
тив построен вокруг текущей стабильной тите получить солидный дистрибу тив
рак теристики тестового компьютера: Intel версии KDE, и нигде ни сучка ни за доринки Linux со всеми прелестями KDE 4.2, пора
E400 Core 2 Duo, 2 ГГц и 2 ГБ ОЗУ. (а ведь в ходе подготовки обзора мы спе­ действовать.
И без того внушительный набор адми­ циально наперебой на жима ли все кноп­
нистративных инструментов Центра уп­ ки подряд). Кроме того, в комплек те есть
Gnome 2.26, Xfce 4.6 и LXDE – для нетбуков Вердикт
и «пожилых» машин.
Свойства навскидку Если вы ранее были не знакомы с KDE
Mandriva Linux Spring 2009�1
4.2, вас поразит стильный оконный ме­
нед жер KWin. Он почти так же крут, как Разработчик: Mandriva
Compiz, только не включается по умолча­ Сайт: www.mandriva.ru
нию. Плазмоид Folder View позволяет по­ Цена: бесплатно/1300 руб.

мещать значки на рабочий стол (стандарт­


Функциональность 7/10
ное поведение для Spring). Правда, если Производительность 7/10
выйти из этого режима и войти снова, то Простота использования 9/10
значки блекнут. Документация 8/10
Есть перемены и в рабочей среде Xfce
Speedboot Упрочение безопасности (в частности, возможность выбирать не­
Добротный, стабильный
дистрибутив для поклонников KDE.
Благодаря некоторым Система безопасности Spring
ухищрениям Spring загру­ значительно переработана:
сколько значков на рабочем столе сразу), Вот если бы еще Xfce подтянуть…
жается гораздо быстрее управлять ею проще, а уро­ но есть и связанные с этим проблемы. На­
конкурентов. вень защищенности возрос. пример, после включения композитинга
рабочий стол становится как бы и не ра­
Рейтинг 8/10
12 Linux Format Июль 2009
Сэкономьте 390 рублей как
новый клиент! Укажите в своем
заказе код ваучера: 011107
(Предложение действительно
до 15 августа 2009)
Сравнение
Каждый месяц мы сравниваем тысячи
программ – а вы можете отдыхать!

инструменты скринкастинга
Если картина стоит тысячи слов, то скринкасты отправят на покой
текстовые редакторы. В это верит заработавшийся Маянк Шарма...

Про наш тест…


Основные фак торы оценки приложений
скринкастинга – под держка записи
аудио и формат выходного файла. Хотя
свободные от патентов кодеки и хороши,
они не слишком под ходят для выгрузки
роликов на сайт видеохостинга. Раз­
мер выходного файла мы не учиты­
ва ли, поскольку для разных программ
довольно трудно повторить записывае­
мые действия один в один и полу чить
одинаковую продолжительность видео
и аудиокомментариев. По нашим нена­
учным наблюдениям, если использо­
вать один кодек для всех приложений,
то большой разницы меж ду выходными
файлами не наблюдается.
Все программы тестирова лись на
двух компьютерах: на ноутбуке с 1,4­ГГц
процессором Celeron и 1­ГБ памятью
и на настольной машине с двухъядер­
ным Intel. Приложения запуска лись
и из их графического интерфейса,
и из командной строки, чтобы изго­
товить скринкасты в рабочих средах
Gnome и в KDE, а так же в более слож­
ных слу ча ях, вроде Compiz.

С
кринкасты – это цифровые ро­ тов с разделяемым видеоконтентом, рументарий Linux является одним из луч­
Наш лики­клипы; их сюжет развива­ пополняется и соответствующий свобод­ ших в мире, и некоторые пользователи
выбор ется в декорациях рабочего сто­ ный и открытый инструментарий. предпочитают записывать аудио отдельно
RecordMy ла, в роли главного героя – мышь, а голос Не у всех этих утилит один и тот же с помощью специально предназначенных
Desktop с. 15
Demo за ка дром поясняет происходящее. Они принцип фиксации ак тивности на вашем для этого программ, например, Audacity,
Recorder с. 16 ста ли неот ъемлемой составляющей про­ экране. Одни основаны на службах уда­ а затем просто добавить звук к скринкасту
Pyvnc2swf с. 17
Xvidcap с. 17 цесса элек тронного обучения и являются ленного рабочего стола типа VNC; другие с помощью таких чудо­видеокомбайнов,
Istanbul с. 18 основой индустрии компьютерных тренин­ делают с большой частотой ряд экранных как FFmpeg, MEncoder или Transcode.
Byzanz с. 18 гов. По мере увеличения доступности ши­ снимков и сшивают их в видеопоток; тре­ Благодаря этим простым в использо­
рокополосных кана лов и количества сай­ тьи пред лагают выбор формата вывода; вании инструментам, почти у ка ж дого по­
а четвертые выдают видео только в фор­ пулярного проек та с открытым кодом наря­

«Скринкасты стали матах, свободных от патентов. С их помо­


щью можно заснять всю поверхность рабо­
ду с тра диционной документацией теперь
есть и обучающие скринкасты. А еще есть
неотъемлемой частью чего стола или одно конкретное окно. Одни
позволяют записывать аудиокоммента­
и сайты вроде showmedo.com, где собира­
ются видеоучебники по различным Linux­
электронного обучения.» рии, другие – нет. Но мультимедиа­инст­ тематикам.

14 Linux Format Июль 2009


Скринкасты Сравнение

RecordMyDesktop
Лучшая программа для скринкастинга; ее и за деньги не купишь.

R
ecordMyDesktop – свободная про­ если графика KDE
грамма для создания скринка­ и Gnome — не для
стов, изготовляющая видео в от­ вас, то есть еще
и богатая команд-
крытом формате OGG. Она написана на C
ная строка�
и предоставляет гибкость и контроль как
начинающим, так и опытным в деле скрин­
кастинга пользователям.
У RecordMyDesktop есть оболочки,
написанные на Python, для Gnome и для
KDE, и обе предоставляют предваритель­
ный просмотр рабочего стола, где можно
выбрать область, которую вы желаете за­
печатлеть. Так же пред лагается набор пара­
метров настройки записи.
Скажем, при подготовке демо­ролика
графического приложения, содержащего
массу вид жетов со всплывающими под­ Еще одна опция RecordMyDesk top, зать количество кана лов и частоту для
сказками, можно не включать эти под­ предназначенная для запуска программы кодирования аудиозаписи. По умолчанию,
сказки в ролик. При выборе ма лой области на ма ломощных машинах – отключение настройки как аудио­, так и видеозапи­
можно попросить RecordMyDesktop сле­ сжатия: ценой увеличения затрат диско­ си установлены на получение наилучше­
довать за мышью, что сохраняет размер вого пространства уменьшится нагрузка го возможного качества, но планку можно
скринкаста, но отслеживает движение кур­ на процессор. снизить ра ди сокращения размера полу­
сора по экрану. А можно вообще исклю­ И наконец, еще одна функция – «быст­ чаемого кодированного видео.
чить изобра жение курсора из записи. рая» субдискретизация, опять же помогаю­
щая разгрузить процессор; но обращай­
Настраиваемый захват тесь к ней как к последнему прибежищу, Вердикт
По умолчанию запись делается со скоро­ поскольку видео может получиться раз­
стью 15 кадров в секунду, что под ходит для мытым. Мы испытыва ли RecordMyDesktop RecordMyDesktop
большинства скринкастов, но при желании на ноутбуке с 1,4­Гц процессором Celeron Версия: 0.3.8.1
не устраивающие вас настройки можно и 1­ГБ памятью и на настольной машине Сайт: www.recordmydesktop.
sourceforge.net
изменить. с двухъядерным Intel, и на обоих компь­ Цена: бесплатно под GPL
Так же по умолчанию RecordMyDesktop ютерах программа работа ла одинаково
Устойчивое и хорошо управляемое
кодирует видео по завершении записи, что хорошо. приложение с понятным интерфей­
требует места для хранения временных RecordMyDesktop может обращаться сом. Формат получаемых файлов –
файлов. При отсутствии места можно де­ напрямую к ALSA или звуковой подсисте­ только OGG.

лать запись на лету, что, в свою очередь,


требует приличной мощности процессора.
ме OSS, или подключиться к порту запи­
си через звуковой сервер Jack. Можно ука­
Рейтинг 8/10

Шаг за шагом: Записываем скринкаст

Выбор области экрана Настройка параметров Начало записи


После запуска программы начните с выбора места Теперь пройдитесь по настройкам, назначая их Жмем кнопку Запись – и поеха ли! Не забывайте
действия. Это может быть отдельное окно, или согласно вашим ну ж дам. Отключите запись звука, пользоваться горячими клавишами для паузы, если
выделенная область, или весь рабочий стол. если планируете добавить аудиокомментарий хотите опустить этапы с большим временем выпол­
позже. До нача ла записи на до будет так же выбрать нения. Записав все нужное, жмем Стоп – и наш
имя для вашего файла. скринкаст готов.

Июль 2009 Linux Format 15


Сравнение Скринкасты

DemoRecorder
Отменно быстр, но разве творчество не должно быть свободным?

D
emoRecorder – проприетарная
программа для записи скрин­
кастов, кодирующая видео
в проприетарном формате. Возможно,
кое­кто неодобрительно качает головой;
но, запустив эксперимент с демо­версией,
вы подпрыгнете от изумления.
По умолчанию DemoRecorder запуска­
ется во вложенном режиме: как вирту­
альный рабочий стол внутри графическо­
го интерфейса плюс кнопки для контроля
за процессом. Это отлично под ходит тем,
кто предпочитает навести порядок на сво­
ем рабочем столе перед нача лом запи­
си. Другой плюс – виртуальный рабочий
стол во вложенном режиме умеет работать
с меньшим разрешением (по умолчанию –
800 × 600). Как правило, скринкасты и де­
Интерфейс для
лают при уменьшенном разрешении, по­
записи, он же
скольку действие сосредоточено в окне и плейер для вос-
или в ограниченной области рабочего сто­ произведения гото-
ла. Обычно потом приходится подгонять вых скринкастов�
масштаб под стандартное разрешение,
иска жая видео. Вложенный режим DemoRecorder. Разработчик программы На сайте проек та – большое количе­
DemoRecorder помогает избежать масшта­ говорит, что ни один из существующих ство документации, где подробно описы­
бирования. Если разрешение виртуально­ форматов его не устраивал, и он создал ваются различные функции программы;
го рабочего стола по умолчанию слишком собственный, без потерь, который записы­ там же имеются разнообразные настраи­
ма ло, можно его увеличить. вает кадры с высокой частотой, не пожи­ ваемые сценарии, помогающие поставить
Да лее, есть полноэкранный режим, рая при этом все цик лы процессора и все производство видео на поток. Разработ­
где можно выбрать записываемую об­ пространство на диске. чик ежемесячно рассылает сообщения, где
ласть на основном рабочем столе. Этот ре­ Записывая видео, так же можно ука­ обсу ж даются сложные темы диагностиро­
жим предназначен специально для записи зать длительность постепенного усиления вания и решения проблем узких мест про­
трехмерных приложений OpenGL, и в нем и зату хания звука, чтобы придать скрин­ цесса съемки.
без труда сохраняются игры и эффек ты касту профессиональный штрих. На мед­ Цена за лицензию для DemoRecorder
Compiz. ленной машине можно так же ограничить начинается от $47 за два года исполь­
Интерфейс вложенного режима так­ ресурсы CPU, доступные программе. Зна­ зования. Сюда включены техпод держ­
же включает воспроизведение видео, чение по умолчанию – 50 %, что должно ка и исправление ошибок в течение этого
записанного в проприетарном формате оставить достаточно ресурсов для других периода. Так же есть полноценные демо­
за дач. На двухъядерной машине значение версии – чтобы разжигать аппетит поль­
можно смело поднять до 100 %, поскольку зователей, а пре­релиз в статусе бета
Сделай сам DemoRecorder умеет работать только с од­ с новейшими экспериментальными воз­
ним ядром. можностями и исправлением ошибок мож­
но попробовать бесплатно.
Почти все графические приложения в Linux являются просто
оберткой вокруг каких­нибудь мощных консольных утилит. Пиршество форматов
Инструменты для записи скринкастов – не исключение. В зависимости от версии, DemoRecorder
Многие из них созданы на базе FFmpeg – мощной программы, располагает всякими скриптами, ко­ Вердикт
конвертирующей аудио и видео в различные форматы. Она торые экспортируют ваши скринкасты
так же может «смотреть» потоки X11, что делает ее идеальной не только в популярные форматы FLV, DemoRecorder
для записи скринкастов и преобразования их в распространен­ OGG и AVI, но так же и в NTSC, PAL, DVD,
Версия: 2.5
ные форматы. Команда VOB и т. д. Скрипты запускаются из кон­ Сайт: www.demorecorder.com
ffmpeg ­f x11grab ­r 25 ­s 800x600 ­i:0.0 /tmp/fftest.mpg соли и имеют больше опций, чем оба ре­ Цена: $47–$247 на два года
за хватит ввод X11 и создаст файл MPEG с частотой 25 кадров
жима записи. Ролики можно обработать,
в секунду и с указанным разрешением.
уменьшив частоту кадров по умолчанию Квинтэссенция всего необходимо­
Другая возможность – использовать import и convert, инст­ го для скринкастинга. Цена – дешев­
рументы в составе ImageMagick. Включенный в скрипт, import (25 в секунду) и изменив масштаб видео
ле краденого.
может записать ряд экранных снимков, которые затем можно с 1024 × 768 до 800 × 600 без заметной по­
«сшить» воедино с помощью convert или FFmpeg, полу чив тери качества. У скриптов экспорта так же
в итоге скринкаст. имеются опции для оптимизации видео
под YouTube и Google Video.
Рейтинг 9/10
16 Linux Format Июль 2009
Скринкасты Сравнение

Pyvnc2swf
Минус и минус не всегда дают плюс. Но они стараются.

Е
ще до того, как Linux обзавелся чу­ вается. Закончив запись, Pyvnc2swf созда­
десным рабочим столом с плаз­ ет файл в формате SWF плюс HTML­файл
моидами и кру тящимися кубиками, со встроенным SWF, проигрываемым
которые так и просятся в скринкасты, су­ в бесконечном цик ле. Это хорошая отправ­
ществовал Vnc2swf. Версия этой програм­ ная точка, если нужно выложить видео
мы на языке C более не под держивается, на web­сайт. На мед ленном компьютере
зато под держивается версия на Python, вместо создания сразу SWF можно сде­
и она ничуть не ху же. лать файл �vncrec: он быстрее кодируется.
Vnc2swf никогда не гнался за внешним Самый большой плюс программы вы­
глянцем, и у Pyvnc2swf тот же стиль. Ба­ текает из использования VNC для записи:
зовый пользовательский интерфейс есть, сохранить можно события на любом ра­
но полностью программа контролирует­ бочем столе, доступном через VNC. Чаще
ся только из командной строки. Скрипт всего это будет локальный рабочий стол,
edit, через который можно добавить аудио­ но точно так же можно записать и уда лен­
Pyvnc2swf вполне
комментарий в формате MP3 к готовому ный. Именно поэтому Pyvnc2swf запустит­
скринкасту, ужать его размеры или преоб­ ся и будет работать и в Gnome, и в KDE,
способен к записи
на удаленном
Вердикт
разовать в MPEG FLV, работает исключи­ и да же в Xfce. Так же программа записыва­ рабочем столе,
тельно в консоли. ет все трехмерные навороты и украшения но область дейст- Pyvnc2swf
Pyvnc2swf умеет записывать экран це­ современного экрана, позволяя делать вия выбрать Версия: 0.9.5
ликом или ограничивается областью с ука­ скринкасты Compiz. довольно трудно� Сайт: www.unixuser.org/~euske/vnc2swf/
pyvnc2swf.html
занными ему размерами. Размеры окна
Цена: бесплатно под GPL
можно узнать с помощью команды xwininfo
-frame (ищем числа в строке -geometry
«Полностью Pyvnc2swf Pyvnc2swf удаленно работает с за­
хватом кадров, но не звука.
в ее выводе). контролируется
По умолчанию, скорость записи ви­
део – 12 кадров в секунду, но это настраи­ только из консоли.» Рейтинг 7/10

Xvidcap
Падучий, но не упаднический.

Н
есмотря на неук люжее название, бочего стола, с помощью мыши. Чтобы
Xvidcap – чудесная утилит­ скринкаст запечатлел движения по обшир­
ка, в графическом интерфейсе ной площа ди, нужно указать меньшую об­
и консольных опциях которой умещается ласть за хвата и заставить Xvidcap следо­
удивительное количество функций. вать за курсором.
Утилита работает в двух режимах. Запись скринкаста допускает приоста­
В покадровом режиме отдельные кадры новку; это очень кстати, когда за да­
сохраняются как изобра жения, а затем ча – например, инсталляция программы –
сшиваются в ролик. Во многокадровом отнимает много времени. Назначить конец
режиме видео кодируется автоматически скринкаста так же можно, указав продол­
со значениями по умолчанию. Для пред­ жительность ролика или количество кад­ Xvidcap умеет делать видео в покадровом режиме, так что кадры
просмотра скринкаста используется ин­ ров в нем. можно подправить в GIMP�
струмент animate, входящий в состав Xvidcap работает как в Gnome, так
ImageMagick. и в KDE, а так же без труда улавлива­
Xvidcap выводит видео в различные ет эффек ты Compiz. Есть очень хороший
Вердикт
форматы, включая MPEG, AVI, ASF, FLV, FAQ, подробная man­страничка и пара ви­
MOV, DV и VOB. Так же по умолчанию звук деоинструкций. Единственная проявив­ Xvidcap
записывается в MP3, но можно закодиро­ шаяся проблема – Xvidcap случа лось па­ Версия: 1.1.7
Сайт: www.xvidcap.sourceforge.net
вать его и в Vorbis. Программа обращается дать на обеих наших тестовых машинах. Цена: бесплатно под GPL
к FFmpeg, Transcode или Mencoder, так что Программа выводит видео в раз­
один из них должен быть установлен в ва­
шей системе.
«Xvidcap работает личные форматы и умеет записывать
и звук, но на данный момент очень
Можно делать полноэкранные роли­ в KDE и в GNOME, нестабильна.

ки, или же выбрать область записи, будь


то отдельное окно или любой участок ра­ и даже в Compiz.» Рейтинг 7/10
Июль 2009 Linux Format 17
Сравнение Скринкасты

Istanbul
Пора клубу Ливерпуль выиграть еще один Еврокубок.

Д
овольно долго синонимом скрин­ или на четверть, или просто оставить все
кастинга в Linux была программа как есть. Не думайте, что это тривиально:
Istanbul, и для многих так остается в других программах часто приходится де­
и по сей день. Все потому, что Istanbul про­ лать такие вещи вручную, поскольку об­
ста в использовании и выводит видео толь­ ласть записи варьируется от полноэкран­
ко в свободный от патентов Ogg­контейнер. ной до ма леньких окон xterm.
Istanbul унаследовал свои каче­ Возможности изменить частоту смены
ства за хвата экрана от расширений для кадров мы не нашли, и победить «рывки»
GStreamer. Он сидит в панели за дач и по­ в наших видео тоже не получилось. Так­
зволяет выбрать для записи область рабо­ же бывает, что Istanbul внезапно виснет по
чего стола или отдельное окно. Звук так­ окончании записи, особенно если съемка
же можно записывать вместе с видео, для шла со звуком. Из консоли почти ничего
обоих используется формат Ogg. Можно дополнительно сделать нельзя, разве что
так же отключить запись движений курсо­ настроить некоторые из опций GStreamer,
Istanbul назван
ра, что удобно при съемке действий, управ­ в основном слу жащих для отслеживания
ляемых с клавиатуры. Если вы собирае­ ошибок, не влияя на саму запись.
в честь пятой
победы ливерпуля
Вердикт
тесь добавить аудиокомментарии позднее, Istanbul уже некоторое время не обнов­ в еврокубке�
запись звука тоже можно отключить. Есть ляется, хотя разработчик и сказал нам, что Istanbul
переключатель для записи трехмерных в скором времени на деется выпустить но­ Версия: 0.2.2
эффек тов, и с Compiz все работает отлич­ вый релиз. Сайт: http://live.gnome.org/Istanbul
Цена: бесплатно под GPL
но. После записи скринкаста Istanbul выво­
Вывод делается в OGG, а парамет­
дит диа логовое окно, где можно просмот­
реть видео перед сохранением.
«Захват экрана ров настроек, типа выбора количест­
ва кадров в секунду, маловато.
Так же есть возможность быстро­ Istanbul унаследовал
го масштабирования записанного ви­
део. Можно уменьшить размер вполовину от Gstreamer.» Рейтинг 6/10

Byzanz
Скринкасты в качестве аватар. Кру то?

К
ому ну жен скринкаст, запускае­ нужна не просто некая область, а нечто
мый в любом браузере на любой более конкретное, это не очень удобно,
платформе, берите Byzanz. Он вы­ поскольку нельзя понять, где на ходятся
дает изобра жения в формате GIF, где при­ окна или другие графические элементы
меняется алгоритм сжатия без потерь, так на зачерненном экране.
что мы получаем свеженькие скринкасты, Из консоли можно ограничить дли­
пригодные для блога или сайта. Никакое тельность записи. По умолчанию она равна
другое приложение не делает меньшие по 10 секунд. Запись начинается через секун­
объему скринкасты для тех же размеров ду после старта; ее можно отсрочить, ука­
областей. И если вы не придумаете Byzanz зав за держку в секундах из консоли.
никакого другого применения, сделайте Недостаток Byzanz – слабая рабо­
себе в нем анимированную аватару. та с трехмерными эффек тами, так что
Параметры можно передавать че­ не ждите здесь хорошей записи эффек тов
если Byzanz не до-
рез консоль или через апплет панели Compiz. Кроме того, разработчик не рвет­
Gnome. Тем, кто не использует Gnome, до­ ся добавлять в программу новые функ­
тягивает до ваших
нужд в скрин-
Вердикт
ступна только консоль, но работать впол­ ции, поскольку она уже делает все, что кастинге, сделайте
не можно, что мы и дела ли – и в KDE, ему нужно. Тем не менее он согласен при­ в нем анимирован- Byzanz
и в Xfce. По умолчанию записываются так­ нимать сторонние дополнения и включать ную аватарку� Версия: 0.1.1
Сайт: http://people.freedesktop.
же и движения мыши, но при съемке окон их в код.
org/~company/byzanz
xterm можно отключить эту функцию. Цена: бесплатно под GPL
Byzanz записывает действия как на це­
лом рабочем столе, так и в одном окне. От­
«Нет приложений, де- Неплохая штука для GIF­скрин­
кастов, когда не нужно звуковое
дельную область так же можно выбрать; лающих меньшее видео сопровождение.

при этом экран затемняется, а выбранная


область окрашивается синим. Если вам для данной области.» Рейтинг 7/10
18 Linux Format Июль 2009
Скринкасты Сравнение

Инструменты скринкастинга

Вердикт
DemoRecorder 9/10
Е
сли у вас случится ну ж да в скрин­ тыми исходными текстами – Xvidcap непревзойденный кандидат – Byzanz с его
касте, то у DemoRecorder прак тиче­ и RecordMyDesktop. Xvidcap – наименее GIF­анимацией без потерь.
ски нет конкурентов. стабильное приложение в нашем обзоре, Кроме RecordMyDesktop с интерфей­
Рассмотрим сперва альтернативы. а RecordMyDesktop – лучший выбор для сом, заточенным под KDE, все другие
Istanbul когда­то был образцом для под­ скринкастинга за бесплатно. Программа свободные инструменты скринкастинга
ра жания в семье утилит для полу чения обла дает огромной гибкостью настроек, в нашем обзоре предназначены в первую
скринкастов в Linux – он был легок в ис­ но единственный доступный формат фай­ очередь для Gnome, хотя не ху же рабо­
пользовании и сохранял видео только лов – OGG, который придется затем кон­ тают и в KDE. Но если вам нужно имен­
в форматах, свободных от патентов. вертировать в более под ходящий для сети но KDE­приложение, можно попробовать
Но программа уже давно не обновлялась, с помощью FFmpeg и ему подобных. Кста­ полузаброшенную ScreenKast, использу­
и ей не хватает гибкости в настройке. ти о сети: если вам ну жен действительно щую VNC. Разработчик программы ищет
Дедушка всех инструментов скринка­ интероперабельный скринкаст, воспро­ людей, заинтересованных в ее дальней­
стинга, Pyvnc2swf, работает так, как и обе­ изводимый на всех платформах, то тут шем развитии.
щано, и предоставляет отличную гибкость, DemoRecorder делает все, что могут
если только вы согласны записывать ау­
диокомментарии отдельно. Главное пре­
«Скрипты экспорта свободные программы, плюс много че­
го еще. Он умеет записывать с уда ленных
имущество Pyvnc2swf – способность
к съемке уда ленных рабочих столов.
DemoRecorder охватили рабочих столов и предусматривает спе­
циальный режим для съемки приложений
Две лучших программы с откры­ почти все форматы.» OpenGL. Скрипты для экспорта охватили
прак тически все существующие в приро­
де форматы. Большинство проприетарных
программ от одиночек, как правило, ничуть
не лучше своих свободных альтернатив;
но DemoRecorder – исключение из прави­
ла. Если вы намерены делать скринкасты
постоянно, а просматривать их будут с по­
мощью самых различных программ, аль­
тернативы прак тически нет.

Обратная связь
Что для вас важнее: работа независи­
мо от платформы или же свободные
от патентов форматы? Предпочитаете
ли вы записывать аудиокомментарии
отдельно? Присылайте ваши мнения
DemoRecorder пока не умеет проигрывать видео в режиме OpenGL� о Сравнении на letters@linuxformat.ru

Таблица функций
Командная Паузы Режим Запись
Название лицензия строка Звук в записи 3D Gnome KDE полного Окно Область FLV MPEG OGG удаленного
экрана рабочего стола
DemoRecorder Проприетар­
ная
RecordMyDesktop GPL

Pyvnc2swf GPL

Xvidcap GPL

Instanbul GPL

Byzanz GPL

Июль 2009 Linux Format 19


Ubuntu стукнуло 10

стукнуло 10 Отмечая десятый релиз дистрибутива Ubuntu,


Грэм Моррисон исследует все «как» и «почему»
его успеха и наследия.

Ubuntu 9.04
Прошлые обзоры

С
воими ли достоинствами, грубой ли силой, Ubuntu
изменил людcкие ожидания от дистрибу тива
Linux, в том числе у людей за пределами сообще-
ства свободного ПО� В некоторых сферах Ubuntu
вообще стал синонимом самой операционной системы Linux�
Однако и другие дистрибу тивы не стоят истуканами, со­
зерцая перемены вокруг них. Они динамичны, гибки и адап­
тивны. Ка ж дый своим пу тем, конкуренты среагирова ли на ус­
пех Ubuntu: Debian – увеличением ук лона в сторону свободы,
Fedora – графическим изяществом, OpenSUSE – ак тивной
интероперабельностью, тем самым изменив и наши ожи­
дания. Удивительно то, что Ubuntu ведь не новее или умнее
всех. Он просто сумел завла деть вообра жением людей и от­
лично справляется с некоторыми мелочами.
На последующих семи страницах мы рассмотрим то,
Содержание
что Ubuntu делает хорошо, и то, как это повлияло на ланд­ Вехи Ubuntu с� 21
шафт дистрибу тивов Linux. Мы поговорим с разработчика­
В чем Ubuntu
ми дистрибу тивов­производных от Ubuntu – Mint, Mythubuntu был прав, а в чем нет с� 22
и Ubuntu Studio, а так же с основателем Ubuntu Марком Шаттл­ Обзор Jaunty
вортом [Mark Shuttleworth], и пред ложим наше собственное Jackalope (9.04) с� 22
видение расцвета Ubuntu. В итоге мы представим ана лиз раз­ Изменение ландшафта
вития Linux за последние пять лет, а так же посмотрим на него дистрибу тивов с� 24
через призму (или куб?) коричневого рабочего стола. Будущее Ubuntu с� 26

20 Linux Format Июль 2009


Ubuntu стукнуло 10

Дорога к Jaunty
Как мы здесь оказались?

У
местно будет вспомнить, что дистрибу тив Ubuntu всего ки простого дистрибу тива с дру жественным рабочим столом
лет пять, как с нами. Cтоящая за ним компания Canoni­ и выдава ло прицел на бизнес­сегмент и, как следствие, прибыль­
cal Ltd была основана в конце 2004 для подготовки ные контрак ты по сопровож дению и под держке.
к первому релизу Ubuntu в ок тябре того же года. Canonical начи­ Но и настольные системы не бы ли забыты. Dapper стал так­
на ла, не имея центрального офиса, с горсткой сотрудников, ра­ же первым ре лизом, где исполь зовался установщик на ба зе
ботавших на дому; сейчас в компании 200 слу жащих, живущих Live CD, поднявший планку для всех остальных дистрибу тивов
в 23 странах, а ее штаб­квартира на ходится в Миллбэнк­Тауэр Linux. На первый раз потенциальные поль зовате ли Linux могли
[престижный небоскреб непода леку от Вестминстера, – прим. ред.] попробовать рабочий стол, чтобы
в Лондоне. В недавнем интервью New York Times Марк Шаттлворт
заявил, что выручка приближается к $30 миллионам, и Ubuntu
увидеть, как он выглядит, а уж по­
том выде лять ему уголок на жест­
«Первый Ubuntu
уверенно удерживает первую строчку на Distrowatch. Нечего и го­
ворить, что позиции Canonical и Ubuntu сильны в мире Linux.
ком диске.
Тут компанию покинул Джефф
особого восторга
Во [Jeff Waugh], третий сотрудник не вызвал.»
Дом для Gnome Canonical и влиятельный сторонник
Но жизнь Ubuntu не всегда была историей успеха. Первый его ре­ Gnome: он завел собственный консалтинговый бизнес. Не про­
лиз особого восторга не вызвал: он был девятым в Сравнении шло и месяца, как Джоно Бэкон [Jono Bacon], восходящая звезда
дистрибу тивов в LXF62, и сравнительно ма ло повлиял на рас­ LugRadio, учредил в Canonical новую должность, а именно Ubuntu
становку чарта Distrowatch в 2004 году. Однако дух перемен но­ Community Manager; он и занимает ее до сих пор. Теперь он отве­
сился в возду хе, и ко второй версии, Hoary Hedgehog [Едреный чает за под держку и рост широкого сообщества, которое так по­
Еж], в апреле 2005, Ubuntu решительно утвердился на генераль­ могает пользователям Ubuntu.
ной карте. Рабочий стол Gnome получил компаньона в лице офи­
циально под держиваемого Kubuntu, основанного на KDE, что по­ На марше���
родило идею специа лизированных версий. Потом будут Edubuntu В ок тябре 2006, за державшись на два месяца после выхода 6.06,
и Xubuntu, а так же с десяток дистрибу тивов, официально при­ был выпущен Edgy Eft [Торопливый Тритон]. Как следует из на­
знанных Canonical. Однако цикл шестимесячных обновлений, звания, стабильность его была на грани, и в настольной версии
синхронизированный с релизами Gnome, продолжался. Это оку­ не хвата ло реальных инноваций. К счастью, 7.04 исправил эти
пилось в следующем релизе, Breezy Badger [Бодрый Барсук]. изъяны, добавив утилиту поиска проприетарных драйверов и воз­
Он вышел в ок тябре 2005, со свежим рабочим столом Gnome 2.12, можность установить Flash, Java и MP3 через специальное при­
графическим загрузчиком и утилитой установки и уда ления при­ ложение. Обе эти приманки для новичков вызва ли конфлик ты
ложений, присутствующей в дистрибу тиве и поныне. в сообществе, но благодаря им Linux, несомненно, выиграл в про­
Первый релиз с долгосрочной под держкой (Long Term Support, стоте – многие ожидают, что их музыка заиграет, не требуя сперва
LTS), под кодовым именем Dapper Drake [Сметливый Селезень], вникнуть, что такое кодек и проприетарный драйвер. Быстрое пе­
выбился из этой закономерности, выйдя двумя месяцами позже реключение пользователей и первые проблески плавных перехо­
в июне 2006 – вследствие того, что Canonical пред ложила сопро­ дов Compiz появились в релизе 7.10, а апрель 2008 увидел вторую
вож дение серверной версии до 2011 года, и, таким образом, же­ LTS­версию Ubuntu. С тех пор вышли еще две солидные разработ­
ла ла лучше стабилизировать пакеты перед выпуском. Это так же ки; релиз этого года, Jaunty Jackalope [За дорный Заяц], оказался
сигна лизирова ло о намерениях Canonical вывести Ubuntu за рам­ лучшим из всех Ubuntu.

Перемены лица Ubuntu

Текстовая установка KDE Jaunty Jackalope


Легко забыть, что когда­то в Ubuntu был текстовый Добавка Kubuntu в конюшню Ubuntu умерило кри­ Ка ж дый релиз отличается от предыдущего лишь
инсталлятор, совсем как в Debian. До Live CD было тику за использование Gnome, заодно породив на несколько шагов, однако после 10 выпусков
еще шагать и шагать. идею респинов. прогресс по сравнению с первой версией нельзя
не заметить.

Июль 2009 Linux Format 21


Ubuntu стукнуло 10

В чем Ubuntu был прав...


...и в чем неправ. Что ж, дорога к мировому господству ухабиста.

Л
егко говорить, что Ubuntu преуспел лишь благодаря
неограниченным вливаниям от супербогатой родитель­
ской компании Canonical. Но ведь Linux не есть обычный
комплект приложений. Использовать его никто не обязан, и все­
гда найдется что­нибудь другое, столь же бесплатное. Ubuntu об­
речен был сделать верный ход.
Самым крупный и самый ранний успех Ubuntu был в маркетин­
ге. Он стал узнаваемой маркой, и не только в Linux­сообществе,
но и в более широком нетехническом мире. Для некоторых людей
слово «Ubuntu» ста ло синонимом Linux, что крайне важно. До при­
хода Ubuntu этим людям и в голову бы не пришло, что Linux –
жизнеспособная альтернатива проприетарным ОС. С самого на­
ча ла Ubuntu позиционировался как «Linux для людей», а не для
стереотипно­асоциальных бородатых технарей из голливудских
фильмов. (Так же неплохо иметь харизматического космонавта­ Мы прошли долгий путь со времен Warty Warthog�
заводилу и средства на бесплатную рассылку CD.) Раньше эти
люди, должно быть, представляли нашу ОС с зага дочным ин­ ет ауру заботы, способствуя солидарности новых пользователей
терфейсом и ядовито­желтой командной строкой на черном эк­ и создателей дистрибу тива.
ране; теперь же они поняли, что Linux очень похож на привыч­ Во­вторых, Ubuntu явился вовремя. Ре лиз Warty Warthog
ные им системы, и да же превосходит их по производительности [Буг ристый Бородавочник] в 2004 произошел после дол­
и безопасности. гого периода проре зывания зу бов у Linux, когда многие ПК
и ноут бу ки стра да ли от плохой под держ ки оборудования яд­
Ubuntu Live ром. С точки зрения домашнего поль зовате ля, поч ти все требо­
Продвижению товарного знака Ubuntu помогли два фак та. Во­ ва ло эксперимен тов, от USB­модемов до видеокарт и прин те­
первых (невзирая на нашу периодическую критику), несомнен­ ров. Но к 2004 году появился хороший шанс, что стандарт ная
но, что коричневая/оранжевая/красная цветовая схема, принятая установка сра зу же заработает, и Ubuntu был на гребне волны
и в рабочем столе Gnome, и в логотипе дистрибу тива, помог­ дист рибу тивов, извлек ших преиму щества из новообретенной
ла сделать Ubuntu узнаваемым брэндом. Рабочий стол излу ча­ стабильности. С первого же ре лиза разработ чикам Ubuntu хва­

Присмотримся к Jaunty
LXF обозревает последний релиз
Ка ж дый последующий релиз Ubuntu за по­ в правильном направлении. Возьмем, на­ ческие изменения. Фон теперь имеет утон­
следние 18 месяцев был твердым шагом пример, Jaunty. Теперь установка почти ченный эффект муара, напоминающий
прозрачна и занимает примерно 20 минут недоразмагниченный CRT­экран, и шриф­
от момента вставки диска до готового ра­ ты выглядят немного побольше.
Свойства навскидку бочего стола. Уж не знаем, почему так дол­ Благодаря Gnome 2.26, Jaunty приоб­
го; зато прежний выбор местоположения рел несколько новых приложений. Главное
наконец сослан на свалку истории, а щел­ из них – Brasero, программа для записи
чок по карте теперь выбирает точку, бли­ CD/DVD, наконец достигшая зрелости. Те­
жайшую к вашему предполагаемому дому, перь можно создавать диски с данными,
хотя остров Мэн и лезет поперед Лондона. аудио и видео, и записывать ISO­образы
дистрибу тивов с помощью полноценного
Блеск загрузки инструмента, а не устаревшим способом,
Через несколько минут вы столкнетесь через папки Burn. Gnome улучшил под­
с хва леным улучшением времени загруз­ держку нескольких дисплеев, и появилась
Brasero Проприетарное — вам ки Jaunty. Мы ра ды объявить, что оно есть! масса приятных мелочей, столь украсив­
Наконец­то папки Burn, неиз­ Куча кодеков и драйверов
бежные в прошлых релизах, теперь устанавливается без
Раньше наша система добира лась до рабо­ ших работу с Gnome 2.26. И теперь поль­
свергнуты более искусной обязательного добавления чего стола Gnome больше мину ты, а теперь зователи Ubuntu могут получить OOo 3.0
программой записи. новых репозиториев. ей хватило около 35 секунд. Попав на ра­ и GIMP 2.6, не прибегая к непод держивае­
бочий стол, вы видите обычные космети­ мым репозиториям.

22 Linux Format Июль 2009


Ubuntu стукнуло 10

ти ло ума прина лечь на вещи, ключевые с точки зрения обычно­


го че ловека: преж де всего это под держ ка оборудования и про­
стота установки. Ubuntu победил всех од ной левой, пред ложив
инстал ляцию с LiveCD, которая да ла поль зовате лям возмож­
ность попробовать водичку перед нырком в полную установ­
ку, и сейчас дистрибу тивы, не имеющие такой возмож ности,
от ходят на обочину. В Ubuntu одними из первых осозна ли зна­
чимость, например, менед жера сети и нового ок на «обрат ного
отсчета до выключения», в Ubuntu и Kubuntu, а так же системы
оповещений в Gnome. Непрерывная череда мелких улучшений
приводит к серьезному сдвигу. Не сва ливая новшества в общий
котел, разработ чики Ubuntu оценивают, что важнее, и снача ла
добиваются, чтобы все работа ло, да же ес ли при этом при ходит­
ся опаз дывать на новосе лье к OOo 3.0.
За последние пять лет возник ли еще два важных фак тора,
сработавших на успех Ubuntu. Во­первых, Mozilla Firefox принес
открытое ПО – или, как минимум, знание о нем – на ка ж дый ком­
пьютер. Теперь люди смотрят на Open Source с меньшей подоз­
рительностью и понимают роль Linux как свободной, открытой
и безопасной замены их операционных систем. А второе связано
с первым: это неудавшийся переход на Vista и дороговизна член­
ства в партии Microsoft, заставившие пользователей компьютеров
искать альтернативы. Поскольку Ubuntu – дистрибу тив Linux с са­ Готовность адаптировать своих отпрысков и содействовать им помогла Ubuntu
мым широким «ареа лом обитания приложений», оба этих фак­ вырасти в глазах сообщества Linux�
тора сыгра ли ему на руку.
же лающим. Это выгляде ло нечестной игрой, и от толкнуло ста­
ложе из роз рую гвардию и широкую часть публики.
Но у Ubuntu не все полу ча лось гладко. Главной проблемой Сложно сказать, оста лись ли поза ди те дни перепа лок и сно­
ста ла негативная реакция опреде ленных кру гов сообщества бизма. За пять лет с момента первого релиза шум из лагеря
Linux, считавших, что Ubuntu Debian поутих, но кое­кто про­
не пред лагает ничего ново­
го, кроме глянцевого издания
«Разработчики должает считать, что Canonical
доит энту зиазм разработ чиков
Debian и урока маркетин­
га. Среднему дистрибу тиву,
Ubuntu оценивают, свободного ПО, не внося сво­
его весомого вкла да. Конечно,
живу щему за счет сообще­ что важнее.» это не идет вразрез с миром
ства, слож но конку рировать GPL, который и разрешает,
с компанией, способной позволить себе оп лачиваемый персо­ и да же поощ ряет такое использование, но Canonical никак не ку­
нал по связям с общественностью и даровые отправки CD всем пить хороший пиар в Linux­сообществе.

Все репозитории APT сейчас включе­ ны приложения для вызова их инсталлято­ web­браузер Konqueror уже ощущает свой
ны по умолчанию, в том числе и Multiverse, ра. Firefox, например, пред ложит выбрать преклонный возраст; да и установщик
и источник проприетарных драйве­ меж ду установкой Gnash, SWF от Gnome KPackage не столь интуитивен, как Synaptic
ров. А значит, вы можете скачать несво­ или Flash от Adobe. Попробуйте открыть или да же Adept.
бодное ПО через менед жер пакетов, MP3 из Totem или Rhythbox, и Ubuntu пред­ Ubuntu, быть может, полнится из­
не преодолевая полосу препятствий, и это ложит вам найти и установить под ходя­ менениями постепенно, но с широкой точ­
сразу же станет очевидным, если у вас гра­ щий модуль расширения автоматиче­ ки зрения он все более становится мери­
фические карты от Nvidia или ATI. Через ски. Не на 100 % – например, Brasero такой лом для дистрибу тивов Linux, с которым
30 секунд после первого входа в графиче­ диа лог не показывает – однако это очень сравнивают остальных.
ский рабочий стол Ubuntu определит, какие близко к давней мечте многих из нас.
проприетарные драйверы способны улуч­
шить производительность вашей систе­ KDE
Вердикт
мы, и пред ложит вам добавить их. Для из­ Для пользователей KDE в состав Kubuntu Функциональность 9/10
Производительность 9/10
менений нужны только щелчок мышью 9.04 вошла лучшая из виденных нами вер­
Простота использования 9/10
и ввод пароля, и это хороший компромисс сий KDE 4.2. За несколько недель рабо­ Документация 8/10
меж ду распространением несвободного чий стол доказал, что он совершенно ста­
ПО на дисковых образах и запросом раз­ билен, пусть да же некоторые плазмоиды Лучший Ubuntu всех времен.

решения пользователя на установку. То же ведут себя плоховато. Как ни странно, по


касается Flash, MP3 и Java: предусмотре­ умолчанию установлен не Firefox, хотя Рейтинг 9/10

Июль 2009 Linux Format 23


Ubuntu стукнуло 10

Смена ландшафта
До Ubuntu не было ни установок с Live CD, ни Wubi, ни коричневого цвета.

Б
лагодаря уверенной и четкой рек ламной кампании и уз­
наваемому харизматичному главе, Ubuntu легко вписался
в модель операционной системы, применяемую Windows
и OS X, которые так же имеют ярких харизматичных лидеров. Это
льет воду на мельницу популярных СМИ, да леких от техноло­
гий, и есть нема ло доказательств тому, что взлет Ubuntu привел
к взлету Linux в целом.
Чтобы осознать место Ubuntu на ландшафте Linux, представим,
как этот ландшафт выглядел до 20 ок тября 2004 года – дня, ког­
да Ubuntu впервые попал на сайт Distrowatch. Как показывает чарт
Distrowatch, в тот день на вершине горы на ходился Mandrake Linux. Согласно тенденциям в поисковых запросах Google,
первые несколько лет Ubuntu перекачивал пользователей
Закат Mandrake от Mandriva�

Mandrake, предшественник Mandriva Linux, был сильным со­


перником, и у него было нема ло общего с Ubuntu. Он был и оста­ Через месяц после релиза Ubuntu поднялся до 12­го места
ется дистрибу тивом, разработанным для типового пользователя в чарте Distrowatch. На новый год он уже был девятым. А когда
компьютера. Именно Mandrake привел многих в мир Linux, бла­ в наши офисы ворвался Hoary Hedgehog (апрель 2005), Ubuntu уже
годаря простой процедуре достиг вершины горы, опус­
установки, почти что лучшей
под держке оборудования и пе­
«У Mandrake Linux тив Mandrake Linux на второе
место. Это не простое совпа­
риферии и фантастическому
менед жеру пакетов, позаим­
было немало дение – Ubuntu победил за счет
Mandrake, так как оба дист­
ствовавшему многое из RPM общего с Ubuntu.» рибу тива построены по одно­
от Red Hat, но обла дающему му и тому же рецепту. Комби­
собственными средствами для разрешения зависимостей. В ре­ нация легкой установки и нетехнарской среды рабочего стола,
зультате получа лась колоссальная библиотека доступных пакетов обогащенная беспрецедентным количеством пакетов, сдела ла
и стабильный рабочий стол Linux, который мог установить почти как Ubuntu, так и Mandrake первым портом приписки и для но­
кто угодно на самом разнообразном оборудовании. вых пользователей Linux, и для тех, кто устал менять дистрибу­

Производительность

Бесплатное обновление вашего компьютера — просто за счет ОС


Многие из нас помешаны на производительности
своих систем. Но ведь компьютерам теперь хватает
быстроты для просмотра клипов на YouTube и чте­
ния Slashdot, чего же еще на до?
Ну, конкуренция­то под жимает, и преимуще­
ства быстрого, простого компьютера – например,
нетбука – показывают, что скорость и эффек тив­
ность никогда еще не были так важны. Последний
релиз Ubuntu серьезно повысил ставки: сейчас это
дистрибу тив с самой быстрой загрузкой из всех
опробованных нами. Время старта на нашем тесто­ Количество пакетов стало больше, а свободная память и время загрузки — лучше�
вом Intel Core Duo 2 снизилось примерно на 43 %
и занимает около 35 секунд, от на жатия кнопки на диск вдруг отключится питание. Мы протестиро­ загрузчика Grub, так как с разделами ext4 будет
Power до графического рабочего стола. Кроме ва ли ее метода с помощью виртуальной машины, работать только самая последняя версия.
оптимизации загрузки, очевидно облег чение ряда и Jaunty не испытывал никаких проблем. Однако На некритичных системах, на наш взгляд,
приложений, так как по сравнению с предыдущим мы пока не взялись бы использовать ext4 на произ­ стоит рискнуть и использовать новую техноло­
релизом Ubuntu в стандартном рабочем столе водстве; потому­то в стандартной установке Jaunty гию, так как ext4, похоже, дает 25 % улучшения
Gnome высвободилось около 50 МБ оперативной ext4 и не за действована. Кто за хочет перейти на ext4, производительности файловой системы. Да же
памяти. должен будет указать это самостоятельно во время ес ли вы опустите это в нынешнем релизе, после
Внедрение новейшей файловой системы ext4 установки, на странице разбиения диска вруч­ ула живания проблем со стабильностью внедре­
кое­кто принял скептически: ведь она может при­ ную. Если вы переходите на Jaunty с предыдущей ние ext4 даст эффект бесплатной модернизации
вести к потере данных, если во время записи файла версии Ubuntu, заодно позаботьтесь об обновлении вашего компьютера.

24 Linux Format Июль 2009


Ubuntu стукнуло 10

тивы. При этом обе системы имели завидное сообщество, спо­


собное решить большинство проблем новичков, не дожидаясь Персональные архивы пакетов
официальной службы под держки. Ка ж дое из этих сообществ бы­
ло относительно доступным и дру желюбным, по сравнению с дру­
Если у вас есть склонность к эксперименталь­
гими дистрибу тивами.
ному ПО, но не хватает времени или мастер­
С трудом избежав банкротства по Статье 11 в 2004 году, ства под держивать собственную ветку раз­
Mandrake ударился в метаморфозы. За шестимесячный период работки вашего любимого приложения, вам
меж ду релизами Warty и Hedgehog компания Mandrake слилась ну жен Personal Package Arhive (PPA). Для
с бразильской фирмой Conectiva, производителем одноимен­ пользователей Ubuntu это способ полу чения
новых пакетов, в стабильности которых раз­
ного дистрибу тива. Вполне извинительно, что ра ди избав ления работчики еще не уверены настолько, чтобы
от финансовых неурядиц новая Mandriva вста ла на коммер­ влить их в основные репозитории. Пакеты со­
ческие рельсы. Это помогло протянуть следующие нелегкие бираются автоматически на сервере, и после
пять лет релизов, но до сих пор неясно, хватит ли Mandriva сил запуска проек та разработчику нужно толь­
ко передавать свои изменения в исходном ко­
на следующие пять лет, и в компании недавно произошли сокра­
де, а остальное проделает PPA. Добавив со­
щения. Ubuntu, выживание которого напрямую не связано с при­ Экспериментальные приложения типа
ответствующие PPA в ваш менед жер пакетов,
быльностью, отвоевал себе часть пространства, некогда занято­ Chromium можно установить, добавив
вы сможете скачивать обновления тем же спо­
репозиторий PPA в менеджер пакетов�
го Mandriva. собом, как прочие обновления Ubuntu.
Клеман Лефевр [Clement Lefebvre], разработчик Linux Mint, Хорошим примером того, что можно сде­ рез менед жер пакетов, одновременно обеспе­
лать с помощью PPA, является ветка KDE 4.2 чивая обратную связь для разработчиков. Про­
считает, что есть другая веская причина успеха Ubuntu. «Он при­ (neon), под держиваемая в PPA в ходе разра­ блемы с пакетами и стабильностью слу ча лись,
шел с лозунгом “Linux для людей”, – сказал он нам. – Земные ботки Jaunty. Это значит, что любители KDE, но конечный результат вылился в лучшее ка­
цвета, идея обмена, африканская родина, вот концепция Ubuntu. использовавшие более старую версию Ubuntu, чество KDE 4.2 в релизе 9.04, то есть выигра ли
Я считаю, что это важно само по себе. Философия проек та при­ могли обновиться до нового рабочего стола че­ и пользователи, и разработчики.
влек ла многих».
Луис де Бетанкур­Гимера
[Luis de Bethencourt Guimerá],
ведущий разработчик Ubuntu
«Подъем Ububtu резкое па дение, вызванное
взлетом Ubuntu. Похоже, отсю­
Studio, соглашается: «Ubuntu
распространил слово свобод­
явно произошел да следует, что хотя первичный
рост Ubuntu мог быть резуль­
ного ПО на новую пользова­ за счет Mandriva.» татом перетягивания поль­
тельскую базу. Более типовую зователей от дру гих дистри­
толпу, не из одних технарей». Он продолжает: «Ubuntu должен бу тивов, для более долгого, более растяну того роста, наблюдае­
быть символом Linux, но не более того. Одна из лучших сторон мого у Ubuntu после 2005 года, это уже не так. То есть должно
свободного ПО – свобода выбора». существовать ощу тимое чис ло новых пользователей Linux, про­
бующих открытую ОС в первый раз.
Пример заразителен Ubuntu уда лось сделать что­то намного лучше, чем всем
Взглянув на Google Trends, можно четко увидеть, что в 2004 году остальным дистрибу тивам. Он сумел извлечь выгоду из расту­
подъем Ubuntu произошел за счет Mandriva. Очевидным спа дам щей стабильности и популярности свободного ПО и достичь ти­
на графике Mandriva отвечают подъемы графика Ubuntu. Конеч­ повой компьютерной аудитории способом, оказавшимся недости­
но, это графики количества людей, которые иска ли данные тер­ жимым для других дистрибу тивов Linux.
мины, а не использова ли операционные системы, но все­таки по
ним видно, куда ветер дует. Комментарий сообщества
График показывает, что Mandriva притормозилась в середине Марио Лимончел ло [Mario Limonciello], главный герой Mythbuntu,
2005 года, после чего на протяжении последних четырех лет на­ счи тает, что доминирование Ubuntu может вызвать проблемы
блюдается мед ленный, но постоянный спад. Эта часть графика для сообщества. «По­моему, тот факт, что Ubuntu и Linux ста ли
имеет гораздо больше общего с графиками для Fedora и SUSE синонимами, в действительности приводит к тому, что я считаю
Linux, которые демонстриру ют одинаково мед ленный и растяну­ большой проблемой, – ска зал он. – Очень уж много разве лось
тый спад в использовании в тот же период, а не первоначальное дистрибу тивов. Разработ чики разбрасываются, при лагая массу
дублированных уси лий ра ди мелких изменений в своем личном
дистрибу тиве». Он признает, что его слова нуж но принимать
с щепот кой соли, так как он и сам работает над Mythbuntu, одна­
ко на карту постав лены серьезные вопросы. «Я ду маю, что раз­
ница здесь в том, что мы посы лаем свои труды в архивы Ubuntu,
и выиг рывает все сообщество Ubuntu. А некоторые дру гие дис­
трибу тивы, основанные на Ubuntu, вроде Mint, так не посту па­
ют. И это, на мой взгляд, вредит всей экосистеме».
Однако можно выдвинуть аргумент, что то же самое го­
ворят об обратной совместимости с Ubuntu разработчики
Debian. Клеман Лефевр рассказал нам, что мотивацией Mint бы­
ло «создать комфортную операционную систему с элегант­
ным рабочим столом, использовав лучшее на рынке и доба­
вив то, чего не хватает». Это совершенно иная стратегия, чем
просто улучшение Ubuntu. «Мое личное мнение таково, что Ubuntu
был тогда лучшей операционной системой, – сказал он, – и раз
Mandriva (урожденный Mandrake) — это дистрибутив Linux уж приходится вставать на плечи гигантов, мы выбра ли само­
примерно с той же пользовательской базой, что и Ubuntu�� го высокого».

Июль 2009 Linux Format 25


Ubuntu стукнуло 10

Будущее Ubuntu
Прольется ли следующий релиз холодным дождем на парад Ubuntu,
или же вознесет нас к облакам?

П
роцесс разработки дистрибу тива Linux прозрачен, в от­
личие от такового для OS X или Vista. На любой ста дии
видно, что планируется сделать, и да же дозволяет­
ся скачать последнюю сборку вашей любимой системы. Ubuntu
не является исключением, и следующая, ок тябрьская, версия бу­
дет называться Karmic Koala [Кармический Коала]. По названиям
релизов Ubuntu можно определить намерения разработчиков,
и мы думаем, что Karmic Koala – скорее промежу точный релиз,
чем большой скачок. Ну, это если вы не вла деете вычислитель­
ным центром.
«Хороший коа ла знает, как разглядеть за деревьями лес, да же
если его голова в облаках, – говорил Марк Шаттлворт, представ­
ляя Koala. – Ubuntu собирается держать свободное ПО на переднем
крае облачных вы­

«Новая функция числений, вобрав


API от Amazon EC2 Новая версия Ubuntu может стать первым из крупных дистрибу-
для облаков – и упростив его на­
столько, чтобы ка­
тивов, где облачные вычисления сделаны козырем продаж�

Eucalyptus.» ж дый мог настро­ «в облаках». Поль зовате ли Google Docs держат там свои доку­
ить свое облако, мен ты (на вопрос, где хранятся ваши данные, можете невозму­
используя полностью свободные инструменты». Так что наш Koala тимо ткнуть пальцем в небо). Шаттлворту видится перемещение
будет витать в облаках. И, что более важно, для настольных поль­ данных все дальше от наших домашних папок и USB­брел­
зователей он будет полезен только частично. ков – в цен тральные репо зи тории, управ ляемые компаниями
типа Google, и он хочет, чтобы Ubuntu был в сердце этой рево­
Eucalyptus люции. Это не бит ва за ваш рабочий стол, это битва за вычис­
Ес ли вы до сих пор исполь зуете те лефонный модем, объясним, ления на уровне корпораций.
что облако – это последний писк среди он лайн­метафор. На­ Важная новая разработка в сфере облачных вычислений назы­
пример, ес ли вы исполь зуете Gmail, то ваша поч та на ходится вается Eucalyptus. Это вычислительная платформа, позволяющая

Ubuntu Format
Мы следили за Ubuntu с момента выхода Warty тили дополнительные украшения Ubuntu, с на де­
Warthog в 2004, и первая наша приглядка к нему ж дой, что в следующую версию будут интегри­
всплыла в Сравнении LXF62, где оценива лись рованы AIGLX и Xgl. «Именно этот дистрибу тив
популярные дистрибу тивы по состоянию на конец мы рекомендуем новым пользователям, тем более
2004 года. Наш вердикт гласил: «Это Debian, сейчас, когда Mandriva немного растерялась».
но без раздра жающего меню Debian и с лучше Но новейшие функции были претворены
организованными пакетами». Нам не понравилось, в жизнь только в следующем релизе, 6.10, кото­
что KDE, да и любой другой рабочий стол, нельзя рый был первой версией после выхода Long Term
было установить через менед жер пакетов. Это Support. Противопоставив ему Fedora Core 6,
было устранено с появлением Kubuntu. В июле 2005 мы были выну ж дены сказать: «Обычно мы напро­
мы да ли детальный двухстраничный обзор для па лую хва лим Ubuntu, но на сей раз сделаем это
Ubuntu 5.04, с рейтингом 8/10. Наше мнение было более сдержанно. Он выглядит не так кру то, как
«Мощный и исключительно удобный», хотя мы все Fedora, но это потому, что проект Fedora многое
еще горева ли из­за коричневого цвета. наверстал».
Релиз Breezy Badger доказал, что Ubuntu набрал Наши заключения по Ubuntu после версии
свой темп. Мы да ли ему 10/10 за легкость при­ 7.04 отдава ли горечью: порыв первых нескольких
менения, и назва ли «простым в использовании релизов выдохся. Например, в обзоре 7.04 мы отме­
дистрибу тивом, который следует испробовать тили, что «если у вас нет проблем с проприетарными
ка ж дому линуксоиду». Мы да же не упомянули, что драйверами, стоит остаться на 6.10» и что мы «ощу­
он все еще коричневый! Версия 6.06, с механизмом щаем нотку разочарования». Ситуация выправи­
установки с Live CD, была первым релизом, урвав­ лась в 2008 году, и мы снова смогли порекомендо­
Хотя мы радовались каждому новому шим награ ду Top Stuff нашего двухстраничного вать Ubuntu, несмотря на включение бета­версии
релизу Ubuntu, наши похвалы редко бывали обзора. В ожидании Dapper Drake, мы впервые отме­ Firefox 3.0 в редакцию Long Term Support.
без ложки дегтя�

26 Linux Format Июль 2009


Ubuntu стукнуло 10

Голос хозяина
Мы могли и сами догадаться о целях Ubuntu, но пред-
почли пойти к голове лошади — Марку Шаттлворту�

Кто знает — быть может, Karmic Koala сбросит старую


коричневую шубку, прельстившись зеленым, а то и синим!

динамически масштабировать приложения через сеть «прозрач­


ных» компьютеров, работающих в облаке на вашем собственном
оборудовании. Наиболее популярным сервисом облачных вычис­
лений является EC2 от Amazon. Клиенты могут выбрать емкость
и харак теристики своего виртуального оборудования, работаю­
щего на EC2, а затем запускать за дачи на супер­растяжимой плат­
форме. Это невероятно масштабируемо и относительно дешево,
и добавление Eucalyptus к Ubuntu приведет к встраиванию этой
Да, мистер Шаттлворт когда-то был долгогрив и мечтал стать космонавтом�
возможности в операционную систему, дав любому вычислитель­
ному центру возможность либо создать свое облако, либо упро­
Еще в 2005 Linux Format проник в бункер собна реально улучшить сотрудничество
стить использование EC2.
Canonical, где Марк Шаттлворт строил людей из сообщества от кры того ПО. Нас
Вы получаете не только преимущества масштабируемости планы по завоеванию мира дистрибу ти­ ждет эра сотрудничества, и гря ду щие
и мощи ваших приложений, но так же потенциал для экономии вов. Он был точен в своем первом пред­ 20 лет опре де лят программы и инст ру­
на счетах за элек тричество: ведь когда в облаке нет ак тивности, сказании: «Мне ка жется, что ма ятник мен ты для совмест ной работы». Вспоми­
энергопотребление фак тически равно нулю. Так тика внедрения индустрии программных продук тов кач­ ная эти слова, удив ляешься, что Canonical
виртуальных машин в серверные решения применялась и в Novell, нулся в сторону свободного ПО». Прав не под ня ла идею об облачных вычис­
и в Red Hat; интересно будет увидеть, как Canonical применит дру­ он был и в оценке тогдашней неприязни лениях раньше.
гую, но родственную технологию для своего дистрибу тива. И хо­ к Ubuntu. «Я убеж ден, что мы на пике этой Затем мы беседова ли с Марком
тя настольным пользователям Ubuntu она ма ло что даст, однако непроизвольной реакции. Вокруг витает в середине 2006, сразу после релиза 6.06,
FUD (Fear, Uncertainty, and Doubt – страх, и спросили его, постра дает ли качество
серьезно подымет профиль серверной версии, а значит, и дистри­
неуверенность, сомнение)». 6.10 в результате двухмесячной за держки
бу тива Ubuntu в целом.
Когда мы спроси ли Марка, чем выхода 6.06. «То есть отведем ли мы на Edge
он занимается в настоящее время, полные шесть месяцев, отстав от Gnome
Цвет — тоже функция он описал нам то, что, возмож но, впо­ на два месяца, или за месяц­два все навер­
Ну, а по части поверхностных сдвигов – была так же обещана но­ следствии ста ло Launchpad’ом – репо­ стаем? Ка жется, имеется сильная под­
вая па литра рабочего стола. Насчет полной отмены коричневого зи торием проек тов Canonical. «Я много держка второго варианта, и мы быстро сде­
Шаттлворт высказался ук лончиво, но похоже, что стандартный работаю над инфраструк ту рой web­сер­ лаем Edgy современным релизом».
рабочий стол в Karma совершенно преобразится. Так же вероят­ висов, – ска зал он. – Их концепция спо­ Так оно и вышло.
но, что обновится стартовая графика и произойдет дальнейшая
оптимизация загрузки. Марк как­то упомянул об использовании
установки видеорежимов на уровне ядра (kernel mode setting), мы не станем восходящим компонентом их дистрибу тива. Я ре­
и мы на деемся, она будет включена по умолчанию. Тогда Ubuntu ально счастлив от того, что делает Ubuntu, и ес ли бы я мог что­
блеснет полностью графи­ то поменять... это был бы от­
ческим запуском, по типу за­
ставки Plymouth, используе­
«Ubuntu блеснет каз от расписания релизов
и возврат к политике «выпуска
мой сейчас в Fedora. Ubuntu
может применить Plymouth,
полностью графи- по готовности», чтобы обеспе­
чить более высокий уровень
или Upstart от Canonical, од­ ческим запуском.» качества по сравнению с пре­
нако конкретный выбор для дыду щими версиями».
Koala пока еще на ста дии обсу ж дения. Все эти изменения – шаги Марио Лимончелло, разработчик Mythbuntu, рассу ж дает
мелкие, не революционные; так что, видимо, у нас будет здравый примерно так же. «Я бы предпочел, чтобы цикл релизов был
и стабильный 11­й релиз Ubuntu. не строго шестимесячным, – сказал он нам. – В нескольких по­
Однако яблоком раздора может стать шестимесячный релиз­ следних выпусках был ряд ошибок, которые оставили “в живых”,
цикл. На наш вопрос, какие изменения он бы поприветствовал, переложив их исправление на Stable Release Update. По­моему,
Клеман Лефевр, разработ чик основанного на Ubuntu дистрибу­ имея исправление, которое точно работает, не следует откла ды­
тива Linux Mint, сообщил нам, что желал бы большей консолида­ вать его на потом, только чтобы выдержать срок выхода CD. Луч­
ции базовой версии, а не акцента на новейшие функции. «Конеч­ ше исправлять ошибки побыстрее и ра довать пользователя пря­
но, – сказал он, – это не имеет смыс ла для Ubuntu, пока мо из коробки».

Июль 2009 Linux Format 27


Интервью LXF

Занимательная
механика
Мы давно не пишем программы прямо в машинных кодах,
а значит, кто­то должен писать программы, генерирующие код за нас.
Александр Горшенев знает эту работу не понаслышке.

Традиционно, в программировании выде- для разработки компиляторов Sun Studio. Ну, и набра ли – в том
ляют три задачи, решение которых оста- числе и меня.
Интервью ется своего рода уделом избранных: раз-
работка ядра ОС, создание компиляторов, LXF: А о компиляторах с каких языков идет речь?
а так же взлом и защита приложений� Что АГ: Сейчас я работаю в группе кодогенерации для процессо­
касается первого, линус Торвальдс [Linus ров Intel, AMD, так что это не играет роли. А в 1998 году наби­
Torvalds] еще не засветился на страницах ра ли в группу разработчиков компилятора C. Я трудился в ней
LXF; правда, мы успели (и не раз) переговорить с Эндрью Морто- пять лет, а потом стал плавно перемещаться вниз по стеку.
ном [Andrew Morton]� Хакеры (или как вы предпочитаете называть
тех, кто занимается изысканиями в третьей области?) — по натуре LXF: А вам приходилось работать только над компиляторами
народ скрытный и к публичной славе не стремящейся� Что оста- Sun Studio или еще какими-нибудь другими? Ну, скажем, GCC���
лось не охваченным? Правильно — компиляторы! Руководствуясь АГ: В моем положении принимать участие в создании сто­
этой идеей, мы перехватили разработчика Sun Studio и сотрудника ронних компиляторов не очень хорошо: внесешь правку, а по­
петербургского офиса Sun Microsystems Александра Горшенева том кто­нибудь ска жет, что­де твоя запятая в Sun Studio про­
вскоре после его выступления на конференции Sun Tech Days, по- истекает непосредственно из GCC.
священного высокопроизводительным приложениям�
LXF: Да, я понимаю�
Linux Format: Александр, в списке докладчиков Sun Tech Days АГ: Кстати, о запятых. Компилятор С от Sun – наследник PCC
вы представлены как «живой пример того, кто может вырасти (Portable C Compiler) Стивена Джонсона [Stephen C. Johnson],
из ребенка, у которого любимой игрушкой был программируе- который был написан на смену самому первому С­компилято­
мый микрокалькулятор»��� ру Кернигана и Ритчи и достался нам вместе с AT&t Unix. Не так
Александр Горшенев: Да, это была «Элек троника Б3­21». давно ребята из FreeBSD снова вытащили PCC на свет, чтобы ис­
пользовать в своем проек те (GCC они, как известно, недолюбли­
LXF: А что было потом? вают), ну и я пошел поглядеть, что он из себя представляет. Вы­
Вы помните свою первую яснилось, что струк тура очень похожа на то, что есть у нас. Так
серьезную программу? что в Sun Studio можно встретить запятые если не от Кернигана
Что она делала? с Ритчи, то от других отцов­основателей, таких как Джонсон.
АГ: Нет, первую не помню,
но помню седьмую. Это был LXF: Часто приходится слышать мнение, что на нынешнем эта-
паровоз на БК0010­Ш. Он, пе развития технологий писать прикладные программы мож-
знаете ли, ехал. но как угодно — компилятор все соптимизирует� Да и ассемб-
лер представлять себе вовсе не обязательно� Что вы думаете
LXF: И как же вы перешли по этому поводу?
от паровозов к компиля- АГ: Знаете, у нас есть поговорка: «доверяйте компилятору в про­
торам? стых вещах и помогайте ему в сложных». Один плюс два ком­
АГ: Это было в самое без­ пилятор свернет в константу за вас; цикл, наоборот, развернет
денежное время, в лихие и инвариант из него достанет. Но есть вещи, в которых ему на до
девяностые... Точнее ска­ помогать: например, если сообщить дополнительную информа­
зать, шел 1998 год – дефолт, цию вроде «один и тот же указатель никогда не может указы­
все было не так чтобы со­ вать снача ла на int, а потом на float», он сможет применить это
всем плохо, но еще и не хо­ знание с пользой, но сам до него не дога дается.
рошо. В то время на матме­ Что же касается ассемблера, то его знание, безусловно,
хе СПбГУ было отделение помогает. Если речь идет о прикладном программировании на C
МЦСТ, которое курирова ла или C++, то на до понимать, что эти языки ориентированы на кон­
Sun Microsystems. Одна ж ды кретную архитек туру машины – я имею в виду не Intel, Sparc
они решили набрать группу и иже с ними, а более общие вещи: что у машины есть регист­

28 Linux Format Июль 2009


Интервью LXF

ры, их несколько штук, есть память... Ес­


ли мы возьмем принципиально другой
процессор – ска жем, стековый или CUDA
от Nvidia, где много­много ма леньких яд­
рышек, то там и языки должны быть дру­
гими. Половина знания об архитек туре
заключена в семантике языка. Ну и, конеч­
но, всегда полезно понимать, что на са­
мом деле происходит внутри вашей про­
граммы: передается ли параметр функции
так или этак. Это не нужно в «совсем при­
кладных» программах, но если взять
тот же MPlayer, то без ассемблерных вста­
вок уже никуда.

LXF: А какой компилятор, на ваш профес-


сиональный взгляд, лучше подходит для
каких задач? Периодически приходит-
ся слышать фразы вроде: «Вот пересобе-
рем ее XYZ, и все будет летать» — хоте-
лось бы понять, имеют ли они под собой
основания�
АГ: Я могу говорить за мир Unix. На ком­
пиляторы (C и C++) можно смотреть с разных сторон – напри­ seed compiler, который генерирует родной код. Единственный
мер, кто на каких платформах работает. Здесь есть явный ли­ такой компилятор для Linux – это GCC, то есть начинать про­
дер – GCC. Другая широкая группа – компиляторы Sun, Intel, SGI, цесс нужно со сборки наших исходных текстов в нем. При этом
изначально разработанные для собственных Unix­платформ, мы (и не только мы, а все, кто занимается портированием) сра­
а затем портированные в Linux, где они все и встретились. Это зу же сталкиваемся с рядом неприятных проблем: стандарт
было знаменательное событие: до тех пор никто не пробовал языка C отдает некоторые вещи на откуп реа лизации. Например,
запустить их на одной ма­ если знаковость перечис­
шине. Такие встречи позво­
ляют помериться силами
«Доверяйте компилятору ления (enum) не указана,
разработчик компилятора
по­честному.
Или, ска жем, можно взять
в простых вещах может выбрать ее по сво­
ему усмотрению и за доку­
соответствие стандарту. Если и помогайте в сложных.» ментировать. Разумеется,
у вас есть программа, напи­ ка ж дый делает это по­раз­
санная на GNU C (да, есть на свете такой язык), ска жем, ядро ному. В итоге одному из наших товарищей пришлось изготовить
Linux, то остальные компиляторы тоже могут ею «позаниматься», специальную версию GCC, которая бы вела себя в этом смыс­
но с переменным успехом. В сфере высокопроизводительных вы­ ле как компиляторы Sun, то есть (в данном примере) под дер­
числений ситуация будет третья. Там, кроме SunCC и ICC, есть еще жива ла ключ -fsigned-enum. Дальше, у нас есть оптимизирую­
«компиляторы на букву P»: PGI и PathScale. щий кодогенератор и не оптимизирующий. Первым делом был
портирован последний – это сравнительно простая програм­
LXF: Но собрать-то ядро Linux при помощи Sun Studio можно? ма. В итоге у нас получился компилятор C, который «вытянул»
АГ: Ну, как вам сказать – это и при помощи GCC сделать не все­ остальной C­мир. Ну а потом мы долго­долго возились с C++.
гда получается: возьмите «не ту» версию компилятора, и уви­ С тех пор я еще больше недолюбливаю C++.
дите только кучу сообщений об ошибках. Без исправления та­
ких «подводных камней» ядро Linux компиляторам Sun Studio LXF: Вот как? Кстати, а как обстоят дела с совместимостью
не собрать; ну, а если исправить, так вы ведь сразу же ска же­ компиляторов C++ из Sun Studio и GCC?
те, мол, «с патчами не считается»? Когда мы только портиро­ АГ: Смотря что вы имеете в виду. Подозреваю, что речь
ва ли Sun Studio в Linux, вопросы совместимости стояли весь­ идет о двоичных интерфейсах (ABI) – здесь есть недоделки,
ма остро, но с ка ж дым релизом ситуация улучша лась. В Sun но опять же Sun Studio 12 Update 1 обещает большие положи­
Studio 12 Update 1 была проделана большая работа, чтобы до­ тельные сдвиги в данном направлении.
стичь совместимости с GCC на уровне ассемблерных вставок –
мы научились не только понимать их, но и агрессивно оптими­ LXF: Остался последний вопрос, который мы, как сторонники
зировать. Нашей тестовой площадкой слу жат FFmpeg и MPlayer: свободного ПО, просто не имеем права не задать: а планирует-
в них огромное количество встроенного ассемблера, и за дачей ся ли открыть исходные тексты Sun Studio?
наших разработчиков было обеспечить корректную сборку обо­ АГ: Если вас интересует короткий ответ, то процесс идет. В сущ­
их проек тов от нача ла и до конца. ности, все упирается в права на интеллек туальную собствен­
ность: части кода Sun Studio были получены от AT&T и других
LXF: Вы несколько раз упомянули портирование Sun Studio в Li- компаний. Мы не можем просто взять и выложить исходные
nux — а что вообще скрывается за этими словами? Насколько тексты где­нибудь на sun.com – необходимо удостовериться,
сложно перенести компилятор из одной Unix-системы в другую? что при этом не будут ущемлены права третьих лиц. Для Solaris,
АГ: Трудности при портировании делятся на две категории: ожи­ например, на такую проверку кода ушло несколько лет. Сколько
данные и неожиданные. Последние делают жизнь интересной, потребуется Sun Studio – поживем, увидим.
но ужасной [смеется]. Начинать на до с какого­то «зернышка» – Фото: Татьяна Цыганова

Июль 2009 Linux Format 29


Open CASCADE

Каскад
из CAD'ов
Повертев модель Cassini во FreeCAD, Николай Колдыркаев был так впечатлен
скоростью обработки 300 000 деталей, что полгода уговаривал российских
разработчиков Open CASCADE открыть личико. Следующие полгода
он потратит на то, чтобы написать портрет.

О
ткрытое программное обеспечение – это не только сво­ с другими программами для проек тирования и численного моде­
бодно распространяемые приложения, но и библио­ лирования. Кстати, именно для разработки программ численного
теки, на основе которых можно и нужно создавать моделирования Open CASCADE под ходит лучше всего. Специа ли­
вполне коммерческие решения. Разработчики технологии Open сты по системам автоматизированного проек тирования утвер­
CASCADE (www.opencascade.org) придерживаются открытой мо­ ждают, что это могут быть не только CAD/CAM/CAE/PDM­системы,
дели и концентрируются на коммерческой под держке пользова­ но так же AEC (Assembly Engineering Manager) или да же геоинфор­
телей. В результате на основе специа лизированной свободной мационные (GIS) приложения.
библиотеки Open CASCADE был разработан целый ряд САПР­сис­ Исходный код библиотеки Open CASCADE доступен и распро­
Наш тем промышленного уровня, а так же специа лизированный дист­ страняется бесплатно по лицензии Open CASCADE Technology
эксперт рибу тив Linux. Public License, являющейся производной от GNU LGPl. Сторонние
Николай В 1999 году французская фирма MATRA Datavision, извест­ разработчики могут использовать код Open CASCADE в своих про­
Колдыркаев ная в то время как меж дународный поставщик технологиче­ дук тах (в том числе коммерческих), однако обязаны, в соответ­
Николай – техни­
ческий писатель ских решений и услуг в области CAD/CAM/CAE/PDM­систем, объ­ ствии с LGPL, отсылать любые изменения в исходных текстах
и ИТ­журна лист, явила об открытии исходных текстов своей библиотеки Open Open CASCADE ее оригинальному разработчику – Open CASCADE
а так же автор CASCADE. В результате с 2000 года все, кто так или иначе был за­ S.A.S. Последняя являет собой яркий пример успешного ведения
книги «Открытые интересован в разработке собственной системы автоматизиро­ бизнеса, в основе которого лежит открытое ПО. Вот уже 10 лет
и бесплатные
ванного проек тирования (САПР), получили бесплатный доступ компания зарабатывает не на прода же программ, а на создании
программы
для Windows». к функциона лу Open CASCADE, на базе которой ста ли создаваться специа лизированных СAD/CAM/CAE­приложений и их техниче­
все новые и новые специа лизированные программные решения ской под держке.
в данной области. Соответственно, и лицензии на это ПО самые разные. Среди
программ, разработанных на основе Open CASCADE, есть и сво­
Open CASCADE сегодня – ��� бодно распространяемые, и коммерческие, и да же специа лизи­
…это целый набор библиотек и средств разработки про­ рованные закрытые системы для промышленного применения,
граммного обеспечения для трехмерного поверхностного например, в авиастроении и ядерной энергетике. Есть и «наши»
и твердотельного моделирования, визуа лизации, обмена данными разработки: например, появившаяся в самом нача ле века украин­
ская система Океан­CAD, известная тем, что о ней ма ло известно,
но, тем не менее, предназначенная (судя по плохо сохранившим­
Расшифруем сокращения ся экранным снимкам и другим непроверенным данным) для мо­
делирования авиационных двигателей.
По числу использованных ТБА (они же – производства изделий, ориентированная
трехбуквенные сокращения) эта статья явно на использование ЭВМ. Что умеет Open CASCADE?
метит в лидеры. Если вы да леки от систем CAE – Computer­Aided Engineering – общее С момента публикации исходных текстов, Open CASCADE пользу­
автоматизированного проек тирования, то название для программ или программных ется заслу женной популярностью среди разработчиков во всем
вот что может пояснить по их поводу все­ пакетов, предназначенных для инженерных мире. Для создания специа лизированных CAD/CAM/CAE/PDM­
знающая Википедия: расчётов, ана лиза и моделирования физи­ систем на основе Open CASCADE программистам доступны сле­
CAD – Computer­Aided Design – система ческих процессов. дующие возможности:
автоматизированного проек тирования. Это PDM – Product Data Management – система
алгоритмы поверхностного и твердотельного моделирования
программный пакет, предназначенный для управления данными об изделии. Это орга­
(скругления и фаски, поверхности смещения и протягивания, бу­
создания чертежей, конструк торской и/ низационно­техническая система, обеспе­
или технологической документации и/или чивающая управление всей информацией левы операции);
3D­моделей. об автомобиле, корабле, самолете и так обмен данными (как с нейтральными форматами IGES и STEP,
CAM – Computer­Aided Manufacturing – да лее. так и со специфичными, такими как ACIS, Parasolid и DXF);
подготовка технологического процесса Подробности – на http://ru.wikipedia.org. исправление (‘shape healing’ – «лечение» некорректных геомет­
рических данных и восстановление поверхностей);

30 Linux Format Июль 2009


Open CASCADE

FreeCAD пока назвать сложно – в интерак тивном режиме пред­


ставлен лишь базовый инструментарий библиотеки Open
CASCADE. В результате в программе FreeCAD не так­то просто что­
нибудь спроек тировать и тем более смоделировать – большин­
ство операций выполняется из командной строки. Тем не менее,
в ней можно работать с файлами, форматы которых под держи­
вает Open CASCADE.
Другой открытый проект на базе Open CASCADE предоставля­
ет больше возможностей для редак тирования и да же позволя­
ет подключать дополнительные модули расширения. Программа
HeeksCAD (code.google.com/p/heekscad/) позволяет импортиро­
вать твердотельные модели из файлов STEP и IGES. Она так же
умеет визуа лизировать модели, выполнять редак тирование с по­
мощью смешивания и булевых операций, сохранять наработки
в форматах IGES, STEP и STL.
Двоичный дистрибу тив HeeksCAD пока доступен толь­
ко пользователям Windows. Но пользователи Linux так­
же могут принять участие в тестировании этой програм­
мы, собрав ее из исходных текстов, доступных через
Subversion. Подробно этот процесс описан на странице http://code.
google.com/p/heekscad/wiki/CompilingForUbuntu.
К сожа лению, многие создатели САПР на платформе Open
CASCADE не стремятся поделиться своими наработками с широ­
кой общественностью, и зачастую это оправдано тем, что в них
Юрген Ригель — разработчик открытой и бесплатной используются еще и коммерческие компоненты. Сама же фирма
САПР FreeCAD� Open CASCADE S.A.S., кроме своего основного продук та, продви­
гает собственную открытую интегрируемую платформу для чис­
визуа лизация (включая прозрачность и на ложение текстур). ленного моделирования под названием SALOME.
Однако Open CASCADE – это не только специа лизированные
библиотеки. Эта технология предоставляет полную среду разра­ Шалом, SALOME!
ботки приложений для 3D­моделирования и визуа лизации, кото­ Как и Open CASCADE, платформа SALOME распространяет­
рая включает ся на условиях GNU Lesser General Public License. Первоначаль­
средства быстрого создания приложений (Application но она игра ла роль связующего звена меж ду CAD­ и CAE­систе­
Framework), мами. В настоящее время SALOME объединяет в себе различные
систему отладки (Test Harness), модули, применяемые в приложениях численного моделиро­
широкий набор примеров, вания – от создания моделей в САПР до параллельных вычис­
исчерпывающую документацию. лений. При этом САПР­средства в SALOME как раз и реа лизуют
FreeCAD трудно
Таким образом, разработчики совершенно бесплатно получа­ возможности технологии Open CASCADE. назвать полноцен-
ют необходимый и достаточный инструментарий для того, чтобы Проект SALOME на сегодняшний день объединяет 20 участ­ ной САПР, но для
начать создание собственных САПР­приложений. В то же время, ников, включая таких лидеров рынка, как Renault (автомобиле­ демонстрации
компания Open CASCADE S.A.S. пред лагает своим заказчикам ряд строение), Bureau Veritas (кораблестроение), EADS (авиастроение) возможностей
закрытых коммерческих компонентов – например, для обеспе­ и другие. При под держке Правительства Франции, одной из самых библиотеки Open
CASCADE она впол-
чения обмена данными с проприетарными САПР­системами. Ис­ серьезных областей применения SALOME ста ла ядерная энер­
не подходит�
пользуя такие компоненты, сторонние раз­
работчики создают так называемое Value
Added Software – программное обеспе­
чение коммерческого или да же индустри­
ального уровня.

Свободу САПР’ам!
Было бы странно, если бы на основе сво­
бодно распространяемой библиотеки ник­
то не попытался бы создать свободную же
систему автоматизированного проек ти­
рования. FreeCAD (free­cad.sf.net) – одна
из таких попыток. Разработчик FreeCAD,
..
Юрген Ригель [Jurgen Riegel], работа­
ет в корпорации DaimlerChrysler. Он пози­
ционирует свою программу как первый
бесплатный инструмент проек тирования
механики, созданный на основе библио­
теки Open CASCADE. Сам автор сравнива­
ет FreeCAD с такими развитыми коммер­
ческими системами, как CATIA версий 4
и 5 и SolidWorks. Но полноценной САПР

Июль 2009 Linux Format 31


Open CASCADE

вия. WOK поощряет использование в разных программах одних


и тех же компонентов, для достижения максимальной эффек тив­
ности, и, в общем, позволяет на ла дить производство САПР­при­
ложений промышленного уровня.
Более того, в рамках WOK возможно использование специаль­
ного макроязыка CDL (Component Definition Language) программ­
ной платформы Open CASCADE. Поэтому компоненты, созданные
при помощи CDL, будут использовать программную архитек туру
Open CASCADE.

Все вместе
Технология Open CASCADE и система чис ленного моделиро­
вания SALOME ста ли центральной частью специа лизированно­
го LiveDVD­дистрибу тива для CAD/CAM/CAE. Дистрибу тив CAE
Linux основан на PCLinuxOS и загру жается непосредственно
с DVD без необходимости установки, хотя при желании вы мо­
жете выполнить и эту операцию. Его создатели продела ли боль­
шую работу, собрав вместе и обеспечив интеграцию наиболее
Импорт и экспорт DXF в HeeksCAD только разрабатывается, но уже сейчас развитых средств CAD/CAM/CAE­систем для Linux. Например,
эта программа предоставляет больше средств для редактирования моделей, инстру менты чис ленного моделирования системы SALOME в ди­
чем FreeCAD, да и развивается динамичнее� стрибу тиве расширены средствами ана лиза конечных элемен­
тов от Code Aster.
гетика. Платформа SALOME используется как база для проек та Как можно видеть, спектр применения открытой технологии
NURESIM (European Platform for NUclear REactor SIMulations), кото­ трехмерного моделирования Open CASCADE настолько широк,
рый предназначен для полномасштабного моделирования ядер­ что до сих пор не было создано универсальной открытой САПР
ных реак торов. на его основе. И это не пара­
Для использования техно­
логии Open CASCADE группой
«SALOME используют докс. Дело в том, что ка ж­
дая новая разработка на ба­
разработчиков слу жит спе­
циальный инструментарий –
для моделирования зе данной технологии обычно
нацелена на решение кон­
WOK (Workshop Organization ядерных реакторов.» кретных отраслевых за­
Kit). Он позволяет большо­ дач. Но если сторонние раз­
му количеству людей создавать несколько программных продук­ работчики объединят усилия для работы над новым открытым
тов одновременно. При этом разработчики могут генерировать проек том, то мы сможем рассчитывать на появление полноцен­
несколько версий программы для разных аппаратно­программ­ ной универсальной САПР для Linux. Лично я считаю, что полная
ных платформ и специальные версии с функциональным на­ реа лизация за ложенного в Open CASCADE потенциа ла в открытом
полнением, диверсифицированным под разные рыночные усло­ ПО для моделирования – это лишь вопрос времени.

Собственная
платформа для
численного
моделирования
Salome — централь-
ное приложение
в специализирован-
ном дистрибутиве
CAELinux�

32 Linux Format Июль 2009


Open CASCADE

Слово – разработчикам
Linux Format не упустил возможности побеседовать с Сергеем Зерчаниновым,
менеджером по поддержке клиентов (Open CASCADE Customer Support manager)
в компании Open CASCADE Russia.
Linux Format (LXF): Расскажите немного о компании Open граммном обеспечении для внутренних
CASCADE S�A�S� Чем она занимается? Сколько людей в ней ра- нужд. Естественно, такие программы
ботает? И какая роль отводится отечественному филиалу? не распространяются, и более того, ин­
Сергей Зерчанинов (СЗ): Open CASCADE S.A.S. – сервис­ формация о них не может быть опубли­
ная компания, пред лагающая разработку специа лизирован­ кована по сообра жениям защиты от кон­
ного программного обеспечения для решения инженерных за­ курентов.
дач. Open CASCADE является дочерним предприятием компании Другую группу составляют компании –
Euriware (Франция), входящей в группу компаний Areva. Опыт производители программных продук тов,
работы на рынке – более 25 лет. такие как Samtech, MidasIt. Как правило,
Штат сотрудников – около 100 человек, включая ква лифици­ информация об их решениях доступна
рованных программистов, инженеров­экспертов, опытных кон­ в Интернете.
сультантов и проектных менед жеров, обла дающих глубокими И наконец, Open CASCADE S.A.S. про­
знаниями в сферах трехмерного и численного моделирования, изводит собственные коммерческие про­
обмена данными САПР, визуа лизации и графического пользова­ граммные продук ты, расширяющие воз­
тельского интерфейса. можности открытой платформы в области
В головном офисе компании Open CASCADE S.A.S., помимо ад­ обмена данными с другими CAD­систе­
министрации, работает несколько проектных менед жеров, ответ­ мами, специальных алгоритмов, рабо­
ственных за исполнение проек тов и развитие бизнеса с крупными той с дискретными моделями (mesh) и так
клиентами, такими как AREVA, CEA, EDF, RINA и так да лее. да лее.
Основная же техническая работа по реа лизации проек тов
и под держке заказчиков, по выпуску и развитию Open CASCADE LXF: А можно подсчитать, сколько существует открытых
Technology и SALOME осуществляется российской командой, ко­ проек тов, использующих Open CASCADE? Вы ведете такую
торая насчитывает около 70 инженеров. Мы так же занимаемся статистику?
технической под держкой: отвечаем на вопросы, консультируем, СЗ: Точно оценить количество открытых проек тов, основан­
обучаем пользователей. ных на наших платформах, сложно, поскольку наши пользо­
ватели не всегда информируют нас о своих разработках. Од­
LXF: Интересно, а каков вклад отечественных разработчиков нако их не слишком много, поскольку создание такого рода
как в саму технологию Open CASCADE, так и в создание прило- программ требует высокой ква лификации и значительных ре­
жений на ее основе? сурсов, которые не всегда могут быть обеспечены да же в круп­
СЗ: В рамках регулярной деятельности по реа лизации проек тов ных коммерческих компаниях.
и под держке заказчиков компании Open CASCADE S.A.S. про­ Тем не менее, на нашем сайте в разделе «Сообщество /
исходит и эволюция открытых платформ, которая в первую Community» представлено около 60 интересных проек тов
очередь следует за пожеланиями коммерческих клиентов Open Source, созданных с использованием технологии Open
и призвана улучшить качество исполнения проек тов заказчи­ CASCADE. Помимо уже упомяну той вами FreeCAD, могу отметить
ков, создаваемых на основе Open CASCADE Technology. Имен­ Cadmai Рихарда Бренделя [Richard Brendel], адаптивную систе­
но российская команда осуществляет коррекцию ошибок, реа­ му, интегрируемую в приложения (например, Internet Explorer или
лизацию новых или улучшение существующих возможностей Excel) и позволяющую изменять их дизайн или отобра жать двух­
с точки зрения на дёжности и производительности. и трехмерные объек ты. В настоящее время разрабатывается еще
C момента публикации в 2000 году версии 3.1 (первой, подго­ одна открытая и бесплатная CAD­программа HeeksCAD.
товленной в России) платформа Open CASCADE Technology непре­
рывно эволюционирова ла: всего было выпущено порядка 20 вер­ LXF: Как вы думаете, почему выгодно использовать именно
сий, последней на сегодняшний день является Open CASCADE открытую технологию, свободно распространяемую
Technology ver. 6.3. За это время струк тура платформы весьма из­ библиотеку Open CASCADE? Какие это дает преимущества?
менилась, став намного более удобной; все модули платформы СЗ: Я думаю, основных преимуществ два: Ваше
подверглись существенным изменениям и улучшениям, добавля­
лись или оптимизирова лись алгоритмы, добавлялась под держка
Экономия средств клиента благодаря мо­
дели Open Source. Не нужно покупать лицензии
мнение нну ю
у женно обойде му
Знаете незасл ис те
ма ни ем CAD/CAM /CAE­с бра ли
новых форматов данных, новых операционных систем. и делать лицензионные выплаты – вы инвестируете вн и
CASCADE? Со
на основе Open расширенну ю
средства только в решение своих конкретных про­ собственну ю,
? Знаете еще
LXF: А как много программ на основе Open CASCADE распро- блем. Экономия средств особенно высока в долго­ версию FreeCAD тированный
иен
один САПР­ор в Linux?
страняется на коммерческой основе? И сколько они стоят? срочной перспек тиве. дистрибу ти
СЗ: Среди заказчиков компании Open CASCADE S.A.S. большой Гарантия на дежности решений – клиент име­ М ы ждем вашихсу:
от кликов по адреat�ru
процент составляют промышленные компании (например, TATA ет полный доступ к исходным текстам программных
letters@linuxform
Motors), имеющие необходимость в специа лизированном про­ средств, как самих решений, так и базовых платформ.

Июль 2009 Linux Format 33


Системы контроля версий

Управление Bazaar 1.13.1

и контроль
Git 1.6.2.4
Subversion 1.6.1

Джульетта Кемп оценивает трех главных претендентов


на должность менеджера изменений в ваших данных:
Bazaar, Subversion и Git�

С
истемы контроля версий (СКВ) необходимы при кол- («патчей») или слияния ветвей проек та. На прак тике большинство
лек тивной работе над проек тами, но весьма полез- ма ло­мальски значительных проек тов имеют одну копию, кото­
ны и для предпочитающих сольную деятельность� рая считается главной ветвью разработки; но это скорее социаль­
Отслеживание сделанных изменений обеспечит вам ное различие, чем техническое.
откат к одной из прежних версий, если вы случайно что-нибудь Оба варианта имеют и достоинства, и недостатки. Вот некото­
испортите� рые из преимуществ распределенных СКВ:
Наш Со времени выхода устаревшей CVS появилось множество Обеспечивается полное резервное копирование кодовой базы
эксперт новых вариантов – какой же из них предпочесть? Распределен­ и истории изменений для ка ж дой ветви проек та; возможно суще­
Джульетта Кемп ную систему или центра лизованную? Мы рассмотрим самые из­ ствование нескольких ветвей.
считает контроль вестные реа лизации – Bazaar, Subversion и Git, чтобы вы осознан­ Упрощается работа без подключения к Интернету, так как из­
версий самой но выбра ли наиболее под ходящую именно вашим ну ж дам, будь менения можно до поры фиксировать в локальном хранилище.
полезной вещью
это крупный проект, любительское программирование, отслежи­ Проще взаимодействовать с коллегами: для этого не нужно об­
после автоматиза­
ции резервного вание изменений в конфигурационных файлах или что­нибудь ращаться к центра лизованной системе.
копирования, осо­ более экзотичное. Легче создавать и ликвидировать ветви разработки: тем самым
бенно с тех пор, упрощается проведение экспериментов в ходе развития проек та.
как слу чайно на­
жа ла :w после уда­
Клиент–сервер против распределенки Есть мнение, что такой способ более демократичен, и позволяет
ления 2500 слов.
Существует два основных типа систем контроля версий: клиент– вовлекать в проек ты большее число участников.
серверные и распределенные. Бывают и чисто локальные систе­ Можно организовать несколько «центральных» ветвей с различ­
мы, типа RCS, которые действуют исключительно в рамках одной ной специа лизацией (например, стабильную, текущую и релиз).
машины, но сейчас они применяются редко: иметь дело с совре­ Фиксация изменений, просмотр истории и другие подобные
менными разновидностями в любом случае и проще, и удобнее. операции происходят быстрее: для них не ну жен доступ к цен­
Клиент–серверные системы работают в центра лизованном ре­ тральному серверу.
жиме: на центральном сервере существует текущая копия проек­ Упрощается слияние нескольких частей проек та.
та, из которой «выписывает» (‘checkout’) данные локально рабо­ Центра лизованные СКВ тоже обла дают рядом достоинств:
тающий пользователь. Внеся Любой отдельный пользова­
желаемые изменения, он (или
она) обновляет локальную ко­
«Системы контроля тель или группа может полу­
чить полный доступ к истории
пию с сервера (чтобы учесть
изменения, которые успели
версий бывают двух и содержанию проек та (прав­
да, иногда это достоинство
сделать за это время другие основных типов.» может рассматриваться как
пользователи), разрешает кон­ недостаток!).
флик ты, если таковые возникают, а затем фиксирует (‘commit’) Главная версия кода содержится центра лизованно, а не дробит­
свою версию данных в центральном репозитории. После этого ся на несколько вариантов.
внесенные изменения становятся доступны для выписки други­ Проще обеспечить отказоустойчивость одного центра лизован­
ми людьми. ного сервера (хотя бы за счет ква лифицированного обслу жива­
Распределенные системы построены по принципу одноранго­ ния), чем множества пользовательских персональных машин.
вой сети – репозиторий у ка ж дого свой, а работа синхронизиру­ Короче, внимания заслу живают оба варианта, хотя в наши дни
ется за счет взаимообмена пакетами изменений в форме заплат популярность набирают именно распределенные системы.

34 Linux Format Июль 2009


Системы контроля версий

Bazaar Сайт http://bazaar­vcs.org


лицензия GPL
Применяется в MySQL, Gnash, Squid

Распределенная система не без способностей к централизации.

B
azaar (в командной строке – bzr) – распределенная систе­
ма, называемая авторами «СКВ, за думанной для людей».
Она рассчитана на под держку рабочих процессов разно­
образных типов и предоставляет вам значительную свободу в вы­
боре способа работы и управления версиями. Возможно исполь­
зование Bazaar совместно с другими ана логичными системами
(например, CVS или Subversion).
Применяя Bazaar в распределенном сценарии, вы создаете по
ветви на ка ж дую новую функцию (их называют ‘task branches’ –
ветви для за дачи), а для отправки изменений на сервер исполь­
зуется локальная ветвь­зерка ло. В центра лизованной модели из­
менения периодически отправляются непосредственно на общий
сервер. Девиз команды разработчиков Bazaar – «не стоит проги­
баться под причуды ПО, пускай ПО прогнется под вас».
Одна из приятных особенностей Bazaar – работая индивиду­ Запрос изменений из Bazaar и проверка статуса репозитория�
ально, вы не должны (как в Subversion, например) создавать ре­
позиторий, импортировать файлы, а потом выписывать рабочую конфликтных ситуаций. Но требование общего предка у ветвей
копию. Вы работаете себе в ката логе проек та, а Bazaar сам отсле­ является обязательным (а вот Git умеет совмещать совершенно
живает сделанные изменения. Одно из очевидных неудобств – не родственные ветви).
усложнение резервного копирования: следует либо держать все Bazaar под держивает выборочное слияние, при котором про­
проек ты внутри главного ката лога, либо обеспечить регулярное водится не полное, а частичное совмещение изменений ветви (на­
сохранение абсолютно всех пример, только до версии 104,
ката логов (кстати, идея сама
по себе неплохая). Кроме то­
«Bazaar позволяет или только из версий 105–107).
Есть возможность отложить
го, ненароком ошибившись
в команде rm -rf, легко сгубить
вносить изменения свои изменения до поры, изъяв
их из рабочего дерева (напри­
репозиторий. Начать проект без связи с Сетью.» мер, чтобы упростить слияние
очень просто: вместо импор­ с крупным обновлением, про­
та и последующей выписки кода достаточно инициа лизировать изошедшим в родительской ветви), а затем вернуть в проект. Это
проект внутри его собственного ката лога. При желании работать удобно, если вы работаете над несколькими заплатками, либо хо­
в более центра лизованном режиме можно создать репозиторий тите воспользоваться правками коллег. Как и в Subversion, можно
в отдельном ката логе и выписать ветвь из него. Это делается все­ применять «хуки» (‘hooks’; это скрипты, исполняемые перед опре­
го лишь одной командой: init-repo. деленными действиями или после них).
Полезное качество для крупных проек тов – интеграция
Работа оффлайн с системами отслеживания ошибок. С помощью ключа --fixes
Распределенная природа Bazaar позволяет работать и вносить из­ можно привязать к изменению номер ошибки в системах разных
менения, не подключа ясь к Сети. В центра лизованных системах типов (под держиваются Bugzilla, Launchpad, Trac, Roundup и пр.).
это тоже возможно с помощью локального репозитория, но его Например, строка:
совмещение с основным сервером чревато сложностями. В Ba­ bzr commit ­­fixes project:23400 ­m «Stores user birthdates
zaar локальный контроль версий весьма удобен: вы загру жаете properly»
основной проект командой bzr branch, и на вашей машине созда­ добавит в журнал ссылку на ошибку № 23400 трекера Bugzilla для
ется его локальная ветвь. Можно работать внутри нее, а можно проек та project. Для Bugzilla и Trac под держиваются упрощенные
создавать подветви и фиксировать изменения в них с той часто­ режимы настройки.
той, какая вам заблагорассудится. Команда bzr merge сольет ва­
шу ветвь проек та с родительской, а завершив работу над кодом,
нетрудно создать заплатку для отправки «наверх» командой bzr Прочие претенденты
send -o patchname�patch. Ответственный за родительскую ветвь
проек та может внести в нее ваш патч – а может и не внести; Perforce Популярная схема с использовани­ нием ветвей). Встречается до сих пор, да же
для этого используются те же команды, что и при слиянии вет­ ем клиент­серверной модели. Ак тивно раз­ под держивается, но новые функции уже ни­
вивается; плохо одно – закрытая лицензия. кто не добавляет. Поэтому, выбирая систему
вей. Теоретически Bazaar может обходиться без центрального де­
Для открытых проек тов (или с числом участ­ для нового проек та, присмотрите что­нибудь
рева, но на прак тике большинство проек тов имеют такое и слива­ ников не более двух) продукт бесплатен, в ос­ посвежее.
ют с ним отдельные ветви. тальных слу ча ях – $900 «с носа». Mercurial Еще одна ак тивно развивающая­
Алгоритм объединения ветвей Bazaar позволяет осуществлять CVS Выпущена в 1986; на сегодняшний день – ся распределенная система. На делена удоб­
множественное слияние, а так же определять последнего обще­ одна из старейших СКВ. Она центра лизован­ ной системой очереди заплат. Аббревиату­
ная, имеет ряд хорошо изу ченных недостатков ра командной строки – hg, она освежит ваши
го предка ветвей. Возможно не только объединение, но и «спле­ (в частности, сложности с созданием/слия­ школьные знания по химии.
тение» различных ветвей, а так же разрешение весьма непростых

Июль 2009 Linux Format 35


Системы контроля версий

Subversion Сайт http://subversion.tigris.org


лицензия Apache License
Применяется в KDE, Python, Ruby, Mono, Google Code

Централизованная система, призванная устранить часть проблем CVS.

ми выкру тасами распределенные системы справляются гораздо


лучше.
Можно сливать или разделять репозитории целиком – инстру­
мент администратора SVN под названием svndumpfilter позволяет
обрабатывать проек ты с помощью фильтра. И все­таки Subversion
недоступен присущий распределенным системам уровень гибко­
сти и эффек тивности в работе с ветвями. Не существует встро­
енных команд, позволяющих взять патч и встроить его в дерево
проек та; это можно делать с помощью внешней команды patch,
но возможны проблемы с уда ленными или слитыми файлами.

Маркировка изменений
Subversion под держивает файловые мета­данные. В качестве
метки файлу можно присвоить нечто вполне человекочитае­
мое – это прекрасная возможность добавить сопроводительную
информацию.
$ svn propset test «test property value» myfile.txt
$ svn proplist myfile.txt
Организация репозитория и импорт файлов� В данном каталоге уже существует Properties on 'myfile.txt'
репозиторий Git, поэтому заодно импортируется информация из него� test
$ svn propget test myfile.txt

S
ubversion создава лась на смену популярной CVS, чтобы test property value
ликвидировать самые заметные недостатки предшест­ Есть некоторые специальные свойства, названия которых на­
венницы. Как и CVS, система работает в режиме клиент– чинаются с svn: – этот префикс здесь на ходится «на особом поло­
сервер. Центральный репозиторий может быть локальным (до­ жении». Например, если установить для какого­либо файла свой­
ступ через file://) или уда ленным (доступ через http://, https:// или ство svn:ignore, то он будет игнорироваться системой.
собственные протоколы svn:// и svn+ssh://). Как и в Bazaar или Git, под держиваются «хуки» (скрипты, ис­
В отличие от Bazaar, здесь перед нача лом работы необходимо полняемые по поводу определенных событий). Это может при­
создать центральный репозиторий (локальный или уда ленный); годиться, например, для тестовой сборки кода перед фиксацией
поэтому процесс передачи изменений в репозитории; для
файлов под контроль системы
чуть более трудоемок. Покон­
«Слить свою ветвь уда ления лишних пробелов;
для замены пробелов на зна­
чив с ним, вы заново выписы­
ваете данные из репозитория,
с основным кодом ки табуляции или наоборот;
для отправки элек тронных
чтобы получить копию для достаточно легко.» сообщений коллегам по слу­
дальнейшей работы. чаю фиксации новых файлов.
Что касается цик ла «изменение/проверка/фиксация» (внесе­ И вообще для выполнения любой за дачи, на которую у вас хватит
ние правок в файл, проверка на отсутствие конфлик тов и отсыл­ вообра жения и способностей к скриптописанию!
ка изменений на сервер), команды и основные операции те же, что
применяются в большинстве систем управления версиями. В прин­
ципе, начав работу с одной из них, вы получаете ключ ко всем Ресурсы
остальным: их команды очень схожи меж ду собой.
Bazaar Subversion
Разрешение конфликтов Учебник «Bazaar за 5 минут»
http://doc.bazaar­vcs.org/bzr.dev/
Version Control with Subversion,
книга O’Reilly, доступная бес­
Если в Subversion вы сталкиваетесь с конфлик том, то перед от­
en/mini­tutorial/index.html платно онлайн (есть перевод
правкой вашего файла необходимо явно пометить его как Руководство по переходу на русский язык)
разрешенный (‘resolved’). Иногда это ка жется нуд­ с других ана логичных http://svnbook.red­bean.com
ным, зато предотвращает случайное попа дание программ
конфликтных данных в репозиторий (впрочем, http://bazaar­vcs.org/BzrSwitching Общие сведения об СКВ
Статья в Википедии со сравнени­
ничто не мешает попросту снять га лочку вместо ре­ Git ем разных систем
ального разрешения конфлик та!). Официальное руководство Git http://en.wikipedia.org/wiki/Compar­
Репозитории могут иметь ветви и тэги, и слить www.kernel.org/pub/software/scm/ ison_of_revision_control_software
ветвь с основным кодом (обычно называемым git/docs/gittutorial.html Элек тронное сообщение Лину­
Краткий курс по переходу са Торвальдса по поводу досто­
‘trunk’ – «ствол») достаточно легко. Однако много­
SVN–Git инств распределенных систем
уровневое ветвление или перекрестные связи меж­ http://git­scm.com/course/svn.html http://lwn.net/Articles/246381
ду ветвями осуществляются «со скрипом» – с таки­

36 Linux Format Июль 2009


Системы контроля версий

Git Сайт http://git­scm.com


лицензия GPL
Применяется в ядре Linux, Gnome, Perl, X.org, VLC, Android

Чрезвычайно распределенная, и очень быстрая.

К
ак и Bazaar, Git – это вариант распределенной СКВ; изна­
чально она была создана Линусом Торвальдсом [Linus
Torvalds] для ядра Linux.
Одна из ключевых особенностей Git – под держка нелинейно­
го процесса разработки: идея состоит в том, что изменения вли­
ваются неоднократно, по мере проверок ответственными лицами
(именно так и происходит развитие Linux). На прак тике это значит
очень простое слияние ветвей и деревьев, да же если они никак
не связаны меж ду собой и не имеют общих предков. Можно да же
встраивать код неопределенной версии в существующее версион­
ное дерево: на такие фокусы не способны ни Bazaar, ни Subver­
sion. Кроме того, в Git значительное внимание уделяется скоро­
сти, быстроте работы с крупными проек тами.
Распределенная природа позволяет Git, как и Bazaar, со­
провож дать ка ж дую рабочую копию отдельным репозиторием
(в подката логе .git), а не полагаться на одно центра лизованное
хранилище, как делает SVN. Кроме того, в этой системе неслож­
но создать новый проект – нуж но лишь дать команды git init;
git add�; git commit в его ката логе. Это, правда, немного ослож­
Сделать из ката-
няет резервное копирование. Ну, а при желании всегда можно ного происхож дения. Система работает с патчами (пакетами из­
лога репозиторий
создать собственный вариант локального центра лизованного менений) и обла дает развитой под держкой патчей, доставляе­ Git проще простого�
репозитория. мых по элек тронной почте. Вы можете просто указать программе Строки с символами
на почтовый ящик (в формате mailbox), содержащий сообщения # в начале — сведе-
Совместимость с патчами: они будут извлечены и пущены в дело. А для работы ния о состоянии�
Как и Bazaar, Git работает с Subversion: мож но поль зовать­ с группами патчей еще есть инструмент StGIT.
ся репо зи торием Subversion непосредственно в Git с помощью
команды git-svn. Это очень полезно, ес ли, например, вы хоти­ Хук слева, хук справа
те просто попробовать систему или работаете с проек том SVN, Как и Bazaar с Subversion, Git под держивает хуки: скрипты, испол­
изменять который не следует. При сильном сходстве, команды няемые по слу чаю некоторых событий. Например, скрипт может
имеют и отличия от тех, что проверять на личие лишних про­
исполь зу ются в Bazaar и Sub­
version. Есть действи тельно
«Git имеет поддержку белов и, обнару жив таковые,
прервать фиксацию; или разо­
классные улучшения: напри­
мер, git diff автоматически ис­
патчей, доставляемых слать элек тронные сообщения
по окончании процесса отправ­
поль зует в качестве пейджера электронной почтой.» ки изменений. Одно плохо – Git
команду less, и вам незачем неэкономно расходует место:
помнить о соединении процессов через канал. ка ж дый объект в системе хранится в виде отдельного файла. По­
Так же интересно обеспечение безопасности: история записы­ этому файлы, в целях экономии, время от времени «пакуются»
вается таким образом, что номера версий зависят от ранее сде­ друг с другом.
ланных изменений. После публикации версии исправить ее тай­
ком невозможно.
На прак тике версии распознаются по идентификатору SHA1 ID, Вердикт
160­битному числу в шестна дцатеричном формате. Естествен­
ный недостаток этого способа – длинный и сложный номер. Впро­
Все три рассмотренные системы управления Для более центра лизованных проек тов
чем, в Git есть автодополнение, да и копирование­вставку никто версиями – замечательные экземпляры ПО: лучше под ходит Subversion – под держка для
не отменял. ваш выбор зависит от ваших же потребностей. этой системы тоже неплохая. Bazaar слу жит
Система тэгов в Git довольно мощная. Можно сопровож дать При сверхраспределенной схеме разра­ мостиком меж ду центра лизованными и рас­
любой файл совершенно произвольным описанием; иногда тэг ботки, с большим количеством независи­ пределенными системами: несмотря на рас­
мо работающих программистов, Git обла дает пределенную природу, в этой системе можно
проек та содержит полномерную документацию. Сохраняется имя
рядом несомненных преимуществ. Для дей­ вести и более центра лизованную работу (если
автора тэга, возможна защита PGP­подписью – то есть обеспе­ ствующих в одиночку использование распре­ такая вдруг пона добится).
чивается подтверждение личности автора, под линности версии, деленной системы тоже имеет смысл, ведь К счастью, затраты на эксперимен ты
истории и дерева проек та. в этом слу чае так просто создать новый репо­ со всеми тремя вариан тами (особенно рас­
зиторий (да же из существующего ката лога). преде ленными) невысоки: просто возьми­
В отличие от манеры Subversion, при слиянии сохраняется пол­
А ведь чем проще пользоваться системой, тем те себе экземп ляр, да и попробуй те. Не по­
ная история изменений обеих ветвей; кроме того, ветви можно выше вероятность ее выбора. Только не забы­ нравится – мож но потом перей ти на дру гую
сливать многократно. Основной приоритет в Git отдан гибкости вайте о регулярном резервном копировании! систему.
и возможности многократного слияния различных ветвей раз­

Июль 2009 Linux Format 37


Системы контроля версий

Intel
inside
Новые чипы, виртуализация, инструменты администратора —
Intel ломает все преграды, говорит Пол Хадсон, а преимущества
первым получает Linux�

К
омпьютеризация — та же эволюция� Мы берем хоро- Intel выдает огромную массу кода: и для драйверов к оборудо­
шие идеи и делаем их лучше — каждые 18 месяцев ванию, и по технологиям, связанным с CPU, например, виртуа ли­
удваиваем число транзисторов, расширяем емкость зацией. Она да же пошла дальше и взяла на работу двух высоко­
устройств хранения данных, постоянно отлаживаем профессиональных программистов ядра и X.org – Алана Кокса
алгоритмы и улучшаем интерфейсы, продвигая компьютериза- [Alan Cox] и Кейта Паккарда [Keith Packard], а так же десятки дру­
цию вперед� гих, чтобы ее новые технологии хорошо работа ли в Linux.
Иногда, однако, появляется истинно новая технология, и ры­ К сожа лению, это сложно разглядеть сквозь фасад корпора­
нок старается отреагировать. ОС с трех­четырех летними цик лами ции, и в качестве конкретных примеров того, где Intel доказа ла
обновления должны бороться, свое превосходство, мы рас­
чтобы не отстать, а вот Linux
быстро откликается на все но­
«Intel выдает массу ска жем о трех ключевых техно­
логиях, о которых, вы, возмож­
вые сдвиги в компьютерных
технологиях, благодаря своей
кода для драйверов но, да же не слыша ли: Nehalem,
VT­d и vPro. Заодно мы объ­
открытости. и виртуализации.» ясним, как другие свободные
Так, в Microsoft требует­ проек ты, вроде GCC, выигры­
ся несколько месяцев на прочтение технических спецификаций вают от вовлеченности корпораций и как новые разработки вы­
и создание кода для Windows. Затем, перед окончательным вы­ водят Linux на передовые аппаратные рубежи.
пуском в виде части сервисного пакета или да же новой версии
операционной системы, код должен пройти тщательное тестиро­ История Nehalem
вание и процедуру контроля качества. В Linux ка ж дый поставщик В конце прошлого года Intel выпустил новый процессор. Са­
инноваций может иметь инженеров, работающих над изменения­ мо по себе это не сильно интересно: за последние годы Intel вы­
ми в ядре за долго до выхода продук та, а значит, под держка га­ пускал десятки CPU, и большинство из них было x86­совмести­
рантируется сразу же. А кто напишет код для ядра лучше, чем ин­ мыми. Но если отбросить маркетинговую шелу ху и технические
женеры той же компании, что изобрела технологию? мелочи, станет ясно, что за все эти годы было только три круп­
Один из самых поразительных подобных примеров – вклад ных изменения.
Intel как в ядро, так и в другие свободные продук ты, напри­ В 1985 появился 386, и – хотите верьте, хотите нет – Intel про­
мер, X.org. Будучи пятой компанией по величине вкла да в ядро, должал его выпуск вплоть до 2007 года, то есть этот процес­

38 Linux Format Июль 2009


Intel

Nehalem в действии
Intel упразднил системную шину (Front Side Bus, FSB), ко­ разогнаны до 3,2 ГГц при соответствующих условиях,
торая тормозила старые Xeon’ы по полосе пропускания однако от одного до трех ядер могут работать на частоте
и латентности. Так же был заменен дискретный контрол­ 3,33 ГГц при низкопотоковой загрузке.
лер памяти, расположенный в чипе северного моста ма­ Все эти чудеса едва оставляют место на описание
теринской платы. В новых Xeon’ах 5500 вместо них вве­ мелких выигрышей в производительности. Проще ска­
дены Nehalem QPI (Quick Path Interconnect) и встроенный зать, Nehalem – это монстр. По сравнении с 2,7­ГГц про­
контроллер памяти. цессором Opteron с двойным сокетом, самым быстрым
Первый – это интерфейс от­точки­к­точке, способ­ из распространенных серверных чипов AMD, 2,93­ГГц
ный развить теоретическую скорость до 6,4 ГБ/с на ка­ Xeon X5570 обычно от 50 % до всех 100 % быстрее. Это
нал или до 32 ГБ/с суммарно. Xeon 5500 – это чип с дву­ показа ли тесты, включающие профессиональную ви­
мя сокетами и двумя QPI­кана лами на сокет, причем зуа лизацию, моделирование гидродинамики и кодиро­
«четверной» Xeon 5500 на базе Nehalem с дополнитель­ вание видео.
ными QPI­кана лами планируется уже в этом году. Что У нас была возможность поба ловаться с новым
касается нового контроллера памяти, то за счет распо­ Boston Quattro 5500 GP – диву даешься, сколько мощи
ложения внутри CPU он не просто выигрывает по час­ втисну то в столь ма лый объем. Когда­то давно нам при­
ти полосы пропускания и времени ожидания: Intel так же ходилось рассматривать Boston 2300 GP, с двумя инди­ Ка ж дая из материнских плат работает независи­
запихнул новый канал и ввел под держку сверх­быстрых видуальными материнскими платами, помещенными мо от других, на ка ж дой два четырехъядерных Xeon’а,
1,333­MГц DDR3 DIMM’ов. Результат – резкий рост про­ в единый модуль 1U. Это нелегко, учитывая, сколько те­ а так же свое ОЗУ и свой диск. А значит, остальные пла­
пускной способности. пла любят выделять серверные CPU. Но в 5500 Boston ты можно подключать по необходимости: в конце кон­
Но это только нача ло. Nehalem – это масса дру­ взяла свою систему с двумя материнскими платами цов, самый энергосберегающий CPU – тот, что выклю­
гих функций, направленных на резкое улучшение и об­ и удвоила ее, применив модуль 2U и, на изумление, чен. Когда все четыре платы заработают на полную
щей производительности вычислений, и специфичных 32 ядра. Да, новый Nehalem HT означает, что вы полу чи­ мощность, вентиляторы ох ла дят машину, произве­
серверных нагрузок. Во­первых, Intel расчех лила тех­ те 64 виртуальных ядра в одной посуде. дя сильный шум, но зато ваш 2U­сервер легко может
нологию Hyperthreading (HT), позволяющую одно­ Не так давно блейды счита лись лучшим способом оказаться самым сильным в мире: предустановлен­
му четырехъядерному чипу Xeon 5500 обрабатывать вместить компьютерную мощь в ма лый объем, однако ная 64­разрядная CentOS выполнит любую за дачу, что
одновременно восемь потоков. Есть еще и новый ре­ Nehalem овеществил сервер Boston без ущерба разом ни взбредет вам в голову.
жим Turbo Mode. По су ти, это функция автоматическо­ и для производительности, и емкости дисков. Это ста ло Блейды хоронить пока рано, но Quattro с Nehalem
го разгона: на ней лежит тонкое управление частота­ возможным с появлением модели Xeon L5520, которая, доказывает, что стоечные серверы все еще верховодят
ми, потреблением мощности и температурой. В слу чае при так товой частоте 2,26 ГГц и четырех ядрах, потреб­ в курятнике, обеспечивая грубую силу без взлета счетов
2,93­ГГц модели Xeon X5570, все четыре ядра могут быть ляет всего 60 Вт при работе на полной мощности. за элек тричество выше крыши.

сор – долгожитель­рекордсмен. Главным его преимуществом кэш – созда ли основу для процессоров Pentium II и Pentium III.
была 32­разрядность, то есть адресация до 4 ГБ памяти (астро­ Те в конце концов вышли на 1,4 ГГц – более чем в десять раз пре­
номическая цифра, по тем временам). Однако это так же значит, взойдя исходную частоту. А когда все уже решили, что ядро
что 386 – общий знаменатель для всех современных CPU от Intel Pentium Pro забыто, оно возродилось в передовых процессорах
и AMD: например, Debian все еще компилируется для 386, ибо это Intel Core и Intel Core 2 как Pentium M, доказав мощный потенциал
гарантирует работу на всех более поздних CPU. первоначальной архитек туры.
Через десять лет Intel выпустил Pentium Pro, впервые шагнув Но сейчас больше всего шума вызывает третья переработка –
в мир серверов. Несмотря на сохранение старой торговой марки, отчасти потому, что Intel расхва лила его как «самый важный сер­
только с привеском Pro, Pentium Pro кардинально изменил архи­ верный выпуск со времен Pentium Pro», но отчасти так оно и есть:
тек туру Pentium’а, введя то, что сейчас называется i686. Ее исполь­ Nehalem, последняя процессорная технология Intel, это громад­
зуют около 70 % пользователей Linux. Так как i686 был на 100 % ный скачок вперед в разработке CPU. Она позволяет сисадминам
обратно совместим с 386, специально для Pentium Pro компили­ разворачивать больше мощности на меньшем пространстве, при­
рова лись только высокопроизводительные серверные прило­ чем существенно дешевле, чем всего год назад.
жения. Тогдашние нововведения Pro – исполнение с изменением
последовательности, переименование регистров и встроенный Серверная сторона
Когда Nehalem в прошлом году добрался до потребителей,
он стал почти всеобщим любимцем. Мгновенная прибавка в ско­
рости всегда приветствуется, а архитек тура Nehalem содержит
ряд изменений, обеспечивающих скачки в производительности
без ощу тимых затрат на энергопотребление. В большинстве слу­
чаев Nehalem действительно потребляет меньше мощности, чем
его предшественник.
Вла дельцы серверов восторга лись им еще больше, ведь по­
требление энергии – проблема серьезная. (Вспомним, что обеспе­
чение серверов энергией и их ох ла ж дение – самая большая рас­
ходная статья серверной, превышающая затраты на оборудование
и персонал.) Новые процессоры Xeon, использующие Nehalem –
модель 5500 – экономят столько энергии, что окупают себя менее
чем за год. Представьте себе масштаб: взяв ферму из 200 серве­
ров Intel Xeon четырех летней давности и заменив их тем же ко­
личеством Xeon’ов серии 5500, вы получите производительность,
большую в 10 раз, а потребление энергии снизится на 20 %. А ес­
Когда мы спросили Кейта Паккарда о его работе в Intel, он сказал: ли вы хотите резко снизить свои затраты, берите 25 Xeon’ов серии
«Самая крутая штука сейчас у нас в работе — это синий экран, где 5500, при этом потребление энергии снизится на 90 %, а вычисли­
выводится информация о сбое»� тельная мощность будет та же.

Июль 2009 Linux Format 39


Intel

Одна из причин, почему Nehalem на­


столько эффек тивен по энергопотреб­
лению – он является вехой, отмечающей
возврат Hyperthreading (HT), Intel’овского
рыночного наименования для симметрич­
ной многопоточности их CPU. HT разра­
батывался, чтобы улучшить работу чипов
со сложным дизайном, то есть по возмож­
ности использовать простаивающие час­
ти CPU для других операций. Это не все­
гда работа ло – быва ло, что процессоры
первого поколения HT от Intel в некоторых
случаях да же замед лялись. Однако вто­
рое поколение HT (начиная с SSE3) было
недурным – при неудачном раскла де про­
изводительность па да ла до уровня не­HT
чипа, а зачастую CPU превосходили своих
лишенных HT соперников. Nehalem пред­
ставляет третье поколение HT, созданное,
чтобы одновременно за действовать еще
больше частей CPU и расширить зону оп­
тимальной работы. Стикеры vPro находятся на многих корпоративных машинах, однако некоторые
Изящество HT состоит в том, что энер­ сисадмины не знают, что именно скрывается за этим и просто игнорируют их� Увы!
гии потребуется не больше, чем без нее.
Ма ло того, она может быть да же эффек тивнее «настоящей» лучив очередное обновление, насла дятся эффек тивным энерго­
многоядерной технологии, благодаря новой энергосберегающей потреблением Nehalem.
функции, которая переводит бездействующие ядра в состояние
без потребления энергии. Виртуализация ввода/вывода
Конечно, ядро CPU, виртуа лизованное с использованием HT, Linux был на передовой в аппаратной виртуа лизации для x86 с мо­
никогда не обгонит настоящий CPU с той же так товой частотой; мента ее появления несколько лет назад, за что опять­таки спаси­
здесь­то и выходит на сцену Linux. Видите ли, наивная реа лизация бо разработчикам свободного ПО, способным следовать мантре
многопроцессорности одинаково обращается с ка ж дым CPU, хоть «выпускайте часто, выпускайте рано» и набрасываться на новые
виртуальным, хоть нет; для HT это, очевидно, не годится. Впервые технологии, как только они возникают.
кусок кода, распознающего процессоры Nehalem (его использует Теперь, благодаря технологиям VT­x от Intel и AMD­V от AMD,
сам Линус), появился в ядре 2.6.27, но Intel вложился в написание аппаратная виртуа лизация означает, что виртуальные процессо­
кода ядер 2.6.28 и 2.6.29, что­ ры смогут работать очень бы­
бы извлечь из новой архитек­
туры максимум.
«В области аппаратной стро. Это идеально для опе­
раций, привязанных к CPU,
Такой оборотистости может
достичь только свободное ПО,
виртуализации Linux так как технология сейчас на­
столько хорошо отла жена, что
причем ка ж дый, кто пользует­ всегда был впереди.» CPU, работающий виртуально
ся современным ядром, полу­ в Nehalem, не отстает от «го­
чает выгоду от Nehalem немед ленно, не дожидаясь выхода новой лого» Xeon’а прошлого поколения. Однако стоит виртуа лизации
версии ОС. Более того, некоторые из функций новейших ядер – отойти от CPU, как неожиданно возникает проблема: если ваша
а именно, мониторинг производительности и экономия энерго­ сетевая или графическая карты были не в курсе виртуа лизации,
потребления для Nehalem – были портированы назад на более они должны управляться программой, которая вызовет большое
ранние ядра; то есть пользователи Red Hat Enterprise Linux 5, по­ па дение производительности. Если вас раздра жа ло, что Compiz
не работает на виртуальной машине, вообразите попытку запуска
в ней рабочей станции для 3D­визуа лизации!
Intel берется за GCC? Сейчас два решения этой проблемы только начинают вхо­
дить в мейнстрим, и опять Linux здесь в первых рядах. Первое
Компиляторы – это та область, где Intel кон­ динения к командам решение в Intel окрестили Directed I/O или VT­d, а в AMD – про­
курирует со свободным ПО: C Compiler от Intel разработчиков сто IOMMU. На самом деле, второе название более точное – хотя
известен своей невероятной производитель­ GCC, glibc, binutils
обе технологии дают виртуальной машине прямой доступ к таким
ностью по сравнению со старым добрым GCC, и gdb. Если Intel по­
однако он не открыт, так что большая часть желает поделить­ устройствам ввода/вывода, как видеокарта или сетевой адаптер,
дистрибу тивов Linux собирает свой код все­ ся наработками как если бы они были для нее родными.
таки при помощи GCC. для компилято­ Parallels уже использует VT­d в своем приложении Parallels
Проблемой для Intel яв ляется то, что AMD ров с GCC, то поч­ Desktop Extreme, которое пока допускает только виртуа лизацию
нема ло вложил в GCC и glibc, обеспечив их оп­ ти любая часть
тимизацию для своих CPU, тогда как наи луч­ системы Linux –
видеокарты. Так что если у компьютера внутри четыре GPU, мож­
шей производи тельности на CPU от Intel и прак тически все, что но назначить по штуке на три разных виртуальных машины, а по­
мож но достичь только с родным компи ля то­ касается мультимедиа – следний приберечь для операционную систему хоста.
ром Intel. увеличит свое быстродействие. Прежние попытки решить эту проблему обычно применя­
К счастью для нас, ка жется, дело сдви­
ли отобра жение вызовов OpenGL гостевой машины на вызовы
гается с мертвой точки. Пару недель назад GCC: вездесущий, но, увы, пока
трое слу жащих Intel нача ли процесс присое­ не самый эффективный компилятор� OpenGL хостовой, что дава ло существенный выигрыш в скоро­
сти – до 40 % реальной производительности видеокарты. Одна­

40 Linux Format Июль 2009


Intel

ко при прямом доступе виртуальной машины к видеокарте она


работает почти на полной скорости: за держка происходит толь­
ко из­за тонкого слоя, предохраняющего хостовую ОС на слу чай,
если виртуальная вдруг за дурит. Parallel Desktop Extreme под­
держивает до 16 ядер и 64 ГБ ОЗУ на виртуальной машине,
то есть огромное количество данных можно гонять целиком
в виртуальном окру жении. И, как вы, наверно, уже дога да лись,
Linux был сертифицирован для использования с первого же дня,
и как хост, и как гость.
Второе решение проблемы виртуа лизированного ввода/выво­
да Intel назвал как VMDq, и у AMD нет соответствующего эквива­
лента, так как технология реа лизуется в сетевом оборудовании,
а не в CPU. Приведем два примера:
У вас есть одна ОС, работающая на «голом железе». При вхо­
де сетевого пакета он передается прямо в ОС, так как других ва­
риантов нет.
У вас есть одна ОС, работающая на «голом железе», но с двумя
гостевыми виртуальными машинами. При входе сетевого пакета
хост определяет, которой из них ну жен этот пакет, затем виртуа­
лизирует его и передает гостевой ОС.
Второй случай представляет проблему – правда, небольшую:
ведь у вас всего две виртуальные машины. А если их 16? Тогда
ваша проблема разрастется – виртуа лизация такого количества VPro: друг сисадмина vPro встроен
в чип сетевой кар-
ввода/вывода требует нема лого объема работы CPU, в частно­ Последняя технология, которую мы рассмотрим, называется ты, а значит, ника-
сти, из­за того, что придется размышлять над ба лансом загруз­ vPro, и хотя она не связана непосредственно с Linux (она сидит кие атаки хакеров
ки и убеж даться, что какая­то из виртуальных машин не забирает глубже ОС), но весьма популярна среди системных админист­ не смогут обойти
слишком много сетевого времени. раторов Linux, управляющих крупными парками компьютерной установленные
VMDq делает так, что ваша сетевая карта знает о виртуа лиза­ техники. вами правила�
ции. Таким образом, исключается ситуация, когда одно ядро CPU Вы могли видеть указание на vPro в виде наклейки на ноутбу­
на хосте обрабатывает весь сетевой трафик. Вместо этого, у ка ж­ ке или других устройствах, но некоторые просто не понимают, что
дой виртуальной машины своя очередь на сетевое оборудование – она делает – во многом потому, что она не имеет единой количе­
она думает, что все как в жизни, и использует его обычным об­ ственной за дачи.
разом, но за кулисами сетевая карта автоматически тасует все В сердце vPro лежит обычный CPU, но он все время ак тивен
запросы, чтобы гарантировать равноправие доступа к сетевому и потребляет немного энергии, да же когда машина выключе­
адаптеру. В результате снижаются требования к CPU и ускоряется на. При подключении к корпоративной сети к этому CPU можно
работа с сетью – и, опять­таки, под держка VMDq уже интегриро­ обратиться напрямую, если иметь пароль администратора, и счи­
вана в ядро Linux, то есть пользоваться ею можно уже сейчас. тывать основную информацию о машине, о CPU, ОЗУ и емкости
жесткого диска, без необходимости включать компьютер. По су­
ти, это позволяет производить ночную инвентаризацию ресурсов,
ка ж дые су тки, без особых затрат энергии. При желании можно
да же получить эту информацию по HTTP, но лучше оставить это
для аварийных ситуаций.
Настоящее волшебство данной технологии в том, что Intel
выпустил открытый код для Linux, который позволяет всем со­
хранять небольшие объемы данных – около 8 КБ за раз – в по­
стоянном хранилище, которое можно будет читать при выклю­
ченной машине. Это значит, что вы можете записывать данные
об обновлении системы или последнее обновление антивирусной
базы на постоянное хранение и считывать его в процессе ин­
вентаризации.
Но это только основы vPro. Поскольку эта платформа требу­
ет только материнскую плату Intel, CPU и сетевую карту, она спо­
собна на большее – вы получаете доступ к BIOS до загрузки или
можете программировать правила фильтрации, отсеивающие се­
тевые пакеты перед тем, как они попа дут к ОС, а то и аппаратные
таймеры, запускающие механизм самозащиты, если определен­
ное действие не происходит. Все эти функции возможны потому,
что vPro сидит глубже, чем Linux, и в то же время обеспечивает ре­
зервный доступ к ОС; делайте с ним что хотите.
Заветная цель vPro состоит в максимальном уменьшении
числа обращений в службу под держки, так как вы сможете поч­
ти все сделать уда ленно. Если дела действительно пойдут плохо,
Parallells Desktop Extreme использует Directed I/O, чтобы дать вы сможете перенаправить уда ленную консоль на ваш локальный
виртуальным машинам выделенный доступ к графическому компьютер, получив полный контроль над системой, да же если
ускорению� SSH не работает.

Июль 2009 Linux Format 41


Что за штука… Chromium

Что за штука…

Chromium?
Поклонники Google, Пол Хадсон припас для вас браузер…

Google я, конечно, уважаю, дер. Поэтому V8 на 100 % совместим с лю­ Не пойму, куда вы клоните�
но и Firefox люблю� Хотите бым из существующих web­сайтов. Давайте посчитаем: если с ка ж дого
уговорить меня сменить браузер? из сайтов, посещаемых вами ежедневно,
Вообще­то я никого ни в чем не собираюсь А зачем он вообще ну жен? загру жается 300–500 КБ кода JavaScript,
убеж дать. Но рассказать вам о новейшем Ключ дан в названии: V8 – это ско­ то объем работы, выполняемой браузе­
программном проек те Google – да, собира­ рость. В момент выхода бета­версии ром, набирается весьма внушительный.
юсь. А вы уж сами решайте. Chrome, V8 как движок JavaScript обогнал
всех с большим отрывом. Хорошо, а почему же Chromium
Ну, если так — слушаю вас� так быстр?
Прекрасно! Итак, начнем: Chromium – Вы говорите так, словно с тех пор Отвечаю: V8 компилирует JavaScript прямо
проект нового браузера от Google, и… что-то изменилось… в машинный код. Этот метод отличается
Так и есть. V8 по­прежнему быстрейший от стандартной построчной интерпретации
Постойте — я вроде что-то об этом движок, но отрыв сократился: другие брау­ JavaScript, позволяя процессору исполнять
слышал� Он не Chrome называется? зеры принялись подтягиваться. сценарии почти со скоростью стандарт­
Chrome и вправду web­браузер, но так на­ ных настольных приложений. Со временем
зывается законченный, стабильный про­ Значит, и Firefox ускорился в оптимизацию процесса трансляции
дукт для Windows. Chromium же – это на­ благодаря Chromium? JavaScript в родные инструкции процессо­
звание открытого проек та, лежащего Опосредованно. Программистам Firefox ра вкла дывается все больше усилий, а зна­
в основе Chrome. пришлось придать существенное ускоре­ чит, эффек тивность процедуры в целом
ние TraceMonkey (прозвище нового движ­ постоянно повышается.

«Немногим ясна важ- ка JavaScript в Firefox 3.5). Теперь Firefox


3.5 выполняет сценарии JavaScript вдвое Короче говоря, Chromium — быстрый
ность JavaScript для быстрее 3.0, а ведь разработка еще не за­
кончена!
браузер�
Он не просто быстрый: он очень быстрый,
развития Интернета.» БЫСТРЫЙ, настолько быстрый, что…
Пожалуй, конкуренция реально
Ух ты, значит, код Chrome открыт? пришпоривает прогресс… Хватит, хватит! Я понял, что он
А как же! Представляя проект, Goo­ Кто бы сомневался! Фак тически ситуация быстрый за счет JavaScript� Вы меня
gle сразу объявил, что браузер будет сво­ обострилась настолько, что Microsoft, вы­ убедили, спасибо�
бодным, ведь там очень много открытых пустив Internet Explorer 8, получила воз­ Но Chromium быстрый не только поэтому.
компонентов. Ядро браузера основано можность заявить – причем обоснованно –
на KHTML (он же WebKit). что ее браузер быстрее существовавшей Быстрее быстрого, или просто
на тот момент версии Firefox. Apple тоже быстрый?
Ясно� Тогда любой сайт, работающий постара лась, чтобы новый Safari 4 нагнал, Быстрее, чем сказать «Вперед!». Благо­
с KHTML, будет работать и с Chrome? а кое­в чем и перегнал Chromium. даря отставке Gecko – неповоротливого
В общем, да, но есть принципиальное от­ HTML­движка Firefox – и переходу на лег­
личие: вместо движка JavaScript, включен­ Сколько же труда вбу хивают в этот кий и скорый WebKit, Chromium не только
ного в WebKit (JavaScriptCore), Chrome ис­ JavaScript… быстро стартует, но и быстро загру жает
пользует свою собственную реа лизацию Это правда, хотя немногим ясна важ­ страницы. Ведь в нем используется тех­
под названием V8. ность JavaScript для развития Интер­ нология «предварительных DNS­запро­
нета. Все больше крупных приложений сов» (DNS pre­fetching), которая сокращает
И естественно, что вне игры разрабатывается на JavaScript – возьми­ время подключения к web­серверам. Кро­
останутся многие сайты, исполь- те хоть GoogleApps или Google Maps. Все ме того, новый браузер быстрее в работе:
зующие JavaScript? больше сайтов (например, Facebook, Twitter при запуске вы видите миниатюры в ду хе
Вы хотите сказать, Gmail? или MySpace) используют JavaScript для Opera, с которым можно быстрее перехо­
управления обновлениями, анимирования дить на любимые web­сайты.
Вот имен… постойте-ка! и других эффек тов, уже вошедших в оби­
То­то и оно: знатокам JavaScript из­ ход. И, конечно, большая часть рек ламы У меня 4-ядерный Intel Core i7 и 8 ГБ
вестно, что Google в этом вопросе ли­ тоже опирается на JavaScript. ОЗУ� Скорости Firefox мне достаточ-

42 Linux Format Июль 2009


Chromium Что за штука…

но, а большой разницы с Chromium Точно. В Chromium самое серьезное, лось больше места для сайтов. Напри­
я не вижу… что может произойти – это отказ од­ мер, при работе в полноэкранном режи­
Что ж, не ка ж дому так повезло с компью­ ной из вкла док. Все остальное остается ме Chromium помещает корешки вкла док
тером. Но Chromium славен не только ско­ в неприкосновенности! в область, где обычно на ходится рамка
ростью. окна; строка состояния в пассивном режи­
Ай да производительность — ме убирается.
А я было подумал, что вы иссяк ли� за одно это к Chromium стоит
ладно, удивите меня: на что еще присмотреться� Вы меня убедили! Давайте адрес!
способен Chromium? Но и это не все! Браузер умеет работать К несчастью, браузер под названием
Как вам понравится такое: ка ж дая вкладка в режиме инкогнито, скрывая историю Chromium для Linux пока не вышел из ста­
в браузере помещается в отдельный тред. и cookies, пока ему не скомандуют обрат­ дии альфа.
ное. Инструмент поиска встроен прямо
Куда, куда? в адресную сроку, а значит, сам Google бу­ Так что ж вы мне голову морочите!
Ну, в тред – их еще потоками называ­ дет подыскивать необходимые вам страни­ Хотите подразнить технологией,
ют!.. Так, буду проще. Тред, или поток – это цы уже во время ввода адреса. Возможно которая мне недоступна?
отдельный процесс на компьютере. Он дей­ да же создание графических ссылок на ра­ И в мыс лях не бы ло! Учтите, мы здесь
ствует самостоятельно и не влияет на дру­ бочем столе: это упрощенные окна браузе­ толкуем о вещах, про которые дру­
гие процессы, выполняемые на компьюте­ ра, в которых сайты «живут» так, словно гие кру тые парни и слы хом не слыша­
ре одновременно с ним. это обычные штатные приложения. ли. А когда выйдет официальная версия
Chromium для Linux, вы с умным видом
И какая мне от этого польза? Радужную картину рисуете� А что порассу ж даете об этом в пабе и всех уди­
Во­первых, если у вашего компью­ если все это лишнее? Не уверен, вите. Я прав?
тера четыре ядра, то Chromium за действу­ что мне нужно какое-то там «инкогнито»�
ет их все одновременно. Во­вторых, если Допустим. Но у Chromium масса мело­ Ну��� да� Но дайте хотя бы URL,
одна из вкла док даст сбой – например, за­ чей, облегчающих жизнь. Скажем, улуч­ где можно прочесть об этом
требует слишком много вычислительных шено автозавершение при вводе URL: подробнее!
ресурсов или вообще зависнет – это ни­ оно теперь «помнит» только адреса, ко­ А вот это запросто: домашняя страни­
чуть не повлияет на выполнение браузе­ торые вы набира ли вручную, исключив ца Chromium – http://code.google.com/
ром остальных за дач. ситуации типа получения www.tuxradar. chromium. Если же вам не терпится опро­
com/content /some­great­ar ticle­name­ бовать новый браузер, хотя бы и в нынеш­
А, вот оно что! Ненавижу, когда here/comments/slow?hello=world вместо нем нестабильном состоянии, то берите
Firefox виснет� Это происходит www.tuxradar.com. Кроме того, интерфейс его из PPA Ubuntu: https://launchpad.net/
чуть ли не на каждом Flash-ролике… пользователя подчищен, чтобы остава­ ~chromium­daily/+archive/ppa. Удачи! LXF

Июль 2009 Linux Format 43


Рецепты доктора Брауна

По рецептам
Д-р Крис Браун
доктора Брауна
Доктор обучает, пишет и консультирует по Linux.
Ученая степень по физике элементарных частиц
Добротное администрирование систем из
ему в этом совсем не помогает. причудливых заворотов кишок серверной.
Старый ворчун
и его почта

К
ак вы посту паете с цепочками пи­
сем? Вы знаете, о чем я – об этих
перекидываниях текста туда­об­
ратно по ходу переписки. Мой личный под­
ход – проявить веж ливость к своим чита­

LDAP с GUI
те лям, кратко ре зюмировав предыду щий
разговор, преж де чем вставить свои пять
копеек. Я не ду маю, что в сообщении нуж­
но цитировать все слова до одного, с самой
первой подачи голоса. (Или, более тонко, Luma и JeOS Просматривайте каталоги Luma 2.4

я попросту вырезаю то, что не вписывает­ LDAP и создавайте виртуальные модули.


ся в мое сообщение!) Но большинство лю­

Е
дей сра зу тыкают в кнопку «Переслать» или сли вы когда­нибудь пользова лись Open­
«Ответить», постепенно накап ливая в поле LDAP для организации службы ката логов,
«Тема» су щее безобра зие. Вот свежий при­ то почти наверняка сра жа лись с зага доч­
мер из моей почты: ным синтаксисом его утилит – таких как ldapadd,
[Fwd: [Fwd Re: [Fwd: Re: [Fwd Re: Проект ldapsearch, ldapmodify и т. д. Я сра жался. Рань­
сервера – Время пошло]]]] ше я пользовался графическим браузером LDAP
Самый вопиющий пример такого под­ GQ, но в последних дистрибу тивах Linux с ним
хода – это письмо, в котором повторе­ проблемы.
но 200 строк из предыдущей переписки Поэтому я был рад открыть для себя Luma,
и в конец добавлено что­то типа «Я согла­ графический LDAP­брау
­браузер, написанный на Py­
сен!». А еще мне на нервы действует то, что thon (возьмите его с http://luma.sourceforge.net или
ка ж дая почтовая программа считает сво­ с нашего DVD). Это расширяемая утилита с мо­
им долгом переформатировать сообщение, дульной архитек турой, в которой есть модули для
обычно вставляя совершенно ничем не оп­ просмотра схем, поиска, управления учетными
равданные пустые строки и символы >, так записями пользователей или просто обзора све­
что простая фраза типа «Tрава
Tрава
рава зеленая, а не­ дений о ката логах LDAP. В модуле управления
бо голубое» в конце концов превращается в пользователями, например, добавление пользо­
>>>> Tрава вательской записи в ката лог организовано как за­
полнение формы, и это, конечно, гораздо удобнее
>>>> зеленая, обычных скриптов LDAP вроде ldapuser, ldapad­
В Luma есть различные модули
dgroup и ldappasswd.
для взаимодействия с каталогами LDAP�
>>>> а небо
Сочный и сладкий
>>>> голубое В этом месяце в поле моего зрения попа ла и JeOS, занимает менее 300 МБ на жестком диске и требу­
Зачем программы так делают? Может что расшифровывается как Just Enough Operation ет всего 128 МБ оперативной памяти. В частности,
быть, чтобы оправдать свое существование? System и часто произносится как «juice» [сок]. Это графическая среда не загру жается заранее. Идея
Это напомнило мне кое­что. Если у вас облегченная версия Ubuntu Server с оптимизиро­ состоит в том, что все необходимое вы установи­
есть пара минут, вы хотите улыбнуться ванным ядром: в ней есть только базовые ком­ те из репозиториев. (Конечно, некоторые вспом­
и вы солидарны со мной насчет попыток про­ поненты, необходимые для запуска на виртуаль­ нят загрузку Unix с диска объемом в 2,5 МБ и 64 КБ
грамм оправдать свое существование, взгля­ ном оборудовании, предоставляемом VMWare оперативной памяти…)
ните, например, на http://miskatonic.net/fooo ESX, VMWare Server или KVM. JeOS прилагается к Ubuntu 8.04 в виде отдель­
как на крайний вариант страницы для ошиб­ Целевой рынок JeOS – создание виртуаль­ ного ISO­образа (см. http://cdimage.ubuntu.com/
ки 404. ных модулей (virtual appliances). Базовая установ­ jeos/releases/8.04), но в версиях 8.10 и 9.04 она
ка JeOS содержит минимальный набор пакетов, включена как опция на стандартном серверном CD.

44 Linux Format Июль 2009


Рецепты доктора Брауна

Летите, голуби
Munin Отслеживает тенденции в загрузке сервера,
Luma 2.4

предотвращая нехватку ресурсов до того, как она случится.

Н
едавно мне попа лась программа для мониторинга На «бирже
Munin. Она наблюдает за сервером или несколькими плагинов» Munin
серверами и строит графики изменений в их поведении множество напи-
в долгосрочной перспек тиве. В Munin используется архитек тура санных пользова-
телями модулей;
«мастер–узел».
многие предос-
На главном узле Munin ак тивизируется раз в пять минут (за­ тавляют предпро-
ботой Cron) и соединяется с утилитой munin­node, работающей смотр, как этот�
на ка ж дом из отслеживаемых узлов. По ка ж дому узлу набор пла­
гинов Munin собирает коллекцию харак теристик загрузки серве­
ра – среднюю загрузку, использование памяти, сетевой трафик,
использование файловой системы, использование файла под­
качки, почтовая ак тивность и многое другое. Данные собирают­
ся и представляются в графическом виде в формате, под ходящем
для их доставки web­сервером системному администратору. Графики строятся за период в день, неделю, месяц, год, и глав­
На серверной стороне у Munin есть довольно простой файл ная сила Munin – в долгосрочных графиках, позволяющих легко
конфигурации munin�conf. Вот его минимальная версия: оценить тенденции. Некоторые модули получают информацию
# Здесь munin держит свою базу данных: из /proc, другие манипулируют данными от утилит мониторинга
dbdir /var/lib/munin ресурсов типа df, NetStat и vmstat.
# Сюда munin будет писать свой HTML­вывод: Рассмотрим плагины более подробно. Этот (сценарий оболоч­
htmldir /var/www/munin ки) отслеживает размер очереди Sendmail:
# Здесь будут находиться файлы журналов munin: MSP_QUEUE=/var/spool/mqueue­client
logdir /var/log/munin MTA_QUEUE=/var/spool/mqueue
# Далее определяются узлы, подлежащие мониторингу: if [ “$mspqueue” ]; then MSP_QUEUE=$mspqueue ; fi
[server1.example.com] if [ “$mtaqueue” ]; then MTA_QUEUE=$mspqueue ; fi
address 192.168.1.71 if [ “$1” = “autoconf” ]; then
[server2.example.com] if [ ­d ${MSP_QUEUE} ­a ­d ${MTA_QUEUE} ] ; then
address 192.168.1.73 echo yes
Для переименования графиков или объединения графиков exit 0
с разных клиентов есть и более причуд ливые конструкции. else
На клиентских компьютерах программа munin­node слушает echo no
соединения на порту 4949 и собирает данные с помощью набо­ exit 1
ра плагинов – скриптов в ката логе /usr/share/munin/plugins. Боль­ fi
шинство из них написаны на Perl, есть и сценарии оболочки; во­ fi
обще они могут быть написаны на любом языке, позволяющем if [ “$1” = “config” ]; then
отправлять данные в стандартный вывод. Munin поставляется echo ‘graph_title Sendmail queued mails’
с большим набором модулей (почти 90 в моем Ubuntu, хотя толь­ echo ‘graph_order mails’
ко около два дцати ак тивированы по умолчанию), а на «бирже пла­ echo ‘graph_vlabel mails in queue’
гинов» Munin по адресу http://muninexchange.projects.llnpro.no echo ‘graph_category sendmail’
доступно еще больше. echo ‘mails.label mails’
exit 0
Розыск в сети fi
На «бирже» есть поиск по категории, от Amavis (почтовый анти­ mspmails=`find ${MSP_QUEUE} ­type f ­name ‘[qQ]*’ 2>/
вирус) до Yum (менед жер пакетов). Статистику можно собирать dev/null | wc ­l`
на самых различных данных, включающих (навскидку) свободное mtamails=`find ${MTA_QUEUE} ­type f ­name ‘[qQ]*’ 2>/dev/
место на диске, уровень заряда батареи ноутбука, частоту оши­ null | wc ­l`
бочных HTTP­ответов, температуру процессора, число ак тивных echo “mails.value `expr ${mspmails} + ${mtamails}`”
подключений к серверу LDAP, число запросов к серверу DNS в се­ Главное, что нужно отметить – модуль, вызванный с аргументом
кунду и многое другое. config, выводит текстовое описание графика, с помощью которо­
го внутренняя утилита rrdtool построит его. Если он вызывается
без аргумента, то выводит строку вида
На ушко… mails.value 47
Взглянув на три последние строки скрипта, вы увидите, что он
Просто если вы подзабыли скандинавскую мифологию, напомню, вычис ляет результат, просто подсчитывая количество фай­
что Хугин и Мунин – это два ворона: первый – мысль, а второй – па­ лов в очередях в ката логах /var/spool/mqueue-client и /var/
мять. На рассвете они вылета ли, пу тешествова ли по миру, узнавая, spool/mqueue. Руководство по написанию и ус тановке моду­
что происходит на свете, а вечером возвраща лись, са дились на пле­
лей можно найти по ад ресу http://muninprojects.llnpro.no/wiki/
чи верховному богу Одину и шепта ли ему на ушко новости.
HowToWritePlugins.

Июль 2009 Linux Format 45


Рецепты доктора Брауна

открываем DHCP
DHCP В руководстве «назад к основам» этого месяца мы поговорим о DHCP
и узнаем, откуда ваш ноутбук, по всей вероятности, получил свой IP­адрес.

D
HCP – сокращение от Dynamic Host Configuration Proto­ в Бобруйске, на денек подключает ноутбук к вашей сети, а потом
col (протокол динамической настройки хостов). Эта тех­ едет обратно в Бобруйск.
нология позволяет назначать компьютерам сетевую кон­ Тем не менее, DHCP­серверы стараются выдавать тот же са­
фигурацию «на лету» вместо того, чтобы жестко прописывать мый IP­адрес и те же настройки, которые были назначены в про­
ее в статических параметрах машины. Эти настройки назначают­ шлый раз, клиенту, который периодически возникает в сети. Для
ся в процессе загрузки клиента, а точнее, в момент запуска его се­ этого они записывают сроки аренды в файл, где они привязыва­
тевых интерфейсов. Наверное, самая очевидная из них – это IP­ ются к MAC­адресам клиентов.
адрес, но DHCP может предоставить и другие, например, маску Все это напоминает мне студенческие годы, когда книг в биб­
подсети и шлюз по умолчанию, и многие настройки уровня прило­ лиотеке было гораздо меньше, чем студентов. Однако взять все­
жений, такие как адреса первичного и вторичного DNS­серверов, гда было что, при достаточно быстром обороте.
серверы времени NTP и серверы TFTP для загрузки PXE. Ес ли взглянуть на это с клиентской стороны, то у разъезд­
DHCP­сервер не назначает настройки навсегда, а сдает ного сотрудника офиса появляется еще более удобный спо­
их в аренду на определенный срок. Клиент указывает этот срок соб использования DHCP. Он просто включает свой компьютер
в запросе, но максимальное время аренды в настройках сервера в ту сеть, рядом с которой ока зывается, и полу чает под ходя­
может быть меньше запрошенного клиентом. При желании про­ щие настройки для работы в ней. Ему не нуж но возиться с диа­
должить пользоваться настройками, клиент должен повторно от­ логами, чтобы ввести под ходящие IP­ад рес, адрес сервера DNS
править запрос до того, как его время истечет. Ес ли клиент этого и так да лее.
не сделал, сервер по истечении срока аренды вправе назначить
его IP­адрес друго­ Сперва найдем свой сервер
«В былые времена му клиенту, хотя
передача ранее на­
На рисунке внизу слева показан типичный DHCP­обмен при за­
пуске сетевого интерфейса. Клиент начинает с отправки пакета
IP-адреса могли значенного адре­
са – вещь не столь
DHCPDISCOVER. Этот пакет широковещательный, так как клиент
не знает адреса DHCP­сервера (он да же собственного адре­
быть дефицитом.» простая. Снача­ са не знает!). DHCP­сервер по адресу 192.168.0.1 отвечает, пред­
ла сервер прове­ лагая срок аренды, и клиент отправляет второй пакет, с запро­
рит, не используется ли этот адрес кем­то другим. Клиент так же сом на аренду. Наконец, сервер отвечает пакетом DHCPACK,
может явно отказаться от аренды DHCP и должен это cделать, предоставляя клиенту адрес 192.168.0.3, который затем связыва­
если его сетевые интерфейсы корректно остановлены. ется с сетевым интерфейсом (в данном слу чае, eth2):
В былые времена, до появления NAT и использования про­ $ sudo ifup eth2
странства приватных IP­адресов 192.168.0.0/24 во внутренних се­ Internet Systems Consortium DHCP Client V3.0.4
тях, IP­адреса могли быть дефицитным ресурсом, и установка ко­ Copyright 2004­2006 Internet Systems Consortium.
роткого срока аренды (например, час или 10 минут) означа ло, что All rights reserved.
сеть могла растягивать свои скудные запасы IP­адресов, назна­ For info, please visit http://www.isc.org/sw/dhcp/
чая их только компьютерам, ак тивным в данный момент. Сейчас Listening on LPF/eth2/00:10:60:60:3e:8e
это меньшая проблема, и вы скорее увидите сроки аренды в день Sending on LPF/eth2/00:10:60:60:3e:8e
или да же неделю; тем не менее, этот механизм остается удобным Sending on Socket/fallback
для повторного использования адресов выключенных компьюте­ DHCPDISCOVER on eth2 to 255.255.255.255 port 67
ров. Классический сценарий – приходит человек из вашего офиса interval 5
DHCPOFFER from 192.168.0.1
DHCPREQUEST on eth2 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.3 ­­ renewal in 97583 seconds.
На рисунке вверху справа показан этот обмен, а на экранном
снимке Wireshark пакет разобран детально. Кто хочет рассмотреть

Провайдер Dynamic DNS


Это немного не в тему, но ес ли ваш провайдер на значает видимые
Разбор пакета извне IP­ад реса по DHCP, то нет гаран тии, что ад рес ка ж дый раз бу­
DHCPDISCOVER� дет одним и тем же, поэтому вы не можете зарегист рировать в DNS
Обратите внима- статическую запись. Некоторые провайдеры предос тавят вам ста­
тический ад рес (обычно за дополни тельную плату); или мож но вос­
ние на широко-
поль зоваться ус лу гами провайдера Dynamic DNS (например, www.
вещательный
dyndns.com), чтобы зарегист рировать имя компьютера, которое
адрес назначения
будет постоянным всегда, да же ес ли ваш IP­ад рес изменился. Для
(255�255�255�255) этого на компьютер потребуется ус тановить клиен т DDNS, напри­
и список парамет- мер, ddclient.
ров запроса�

46 Linux Format Июль 2009


Рецепты доктора Брауна

Поправка LTSP Сервер определяет


конфигурацию
Сервер назначает
конфигурацию
Аренда
прекращена

В LXF117 я писал о Linux Terminal Server Project и упоминал Atlan­ Сервер


(выбран)
ta Public Schools как пользователя этой технологии, назвав цифру
в 2200 клиентов. Мы полу чили письмо от Джеймса Швайцера [James
Schweitzer] с новыми данными – теперь у них 12 000 тонких клиен­ DHCPDISCOVER DHCPREQUEST
тов, обслу живаемых 150 серверами в 54 школах. Да же если не брать
DHCPOFFER DHCPPACK DHCPRELEASE
во внимание сами цифры, число клиентов на сервер меня впечатля­
ет. Спасибо, Джеймс! Клиент

Клиент Инициализация Клиент


запускает DHCPOFFER завершена останавливает
DHCP­обмен более подробно, обратите внимание на dhcpdump, интерфейс Клиент интерфейс
утилиту пост­обработки вывода tcpdump для ана лиза перехва­ DHCPDISCOVER выбирает
сервер
DHCPREQUEST
ченных DHCP­пакетов.
Сервер
(не выбран)
Конфигурация сервера
Программа dhcp3 (версия 3 реа лизации DHCP от Internet Software Время
Consortium) – широко используемый сервер DHCP. Рассмотрим
самые важные фрагменты его конфигурационного файла (скорее
Временная диаграмма обмена пакетами DHCP� В этом примере два сервера DHCP
всего, /etc/dhcp3/dhcpd�conf). В нача ле мы видим глобальные оп­
предлагают аренду, и клиент выбирает первый отозвавшийся�
ределения, применяемые ко всем подсетям, которые обслу жива­
ет сервер:
option domain­name “example.com”; ddns­domainname “example.com”;
option domain­name­servers 192.168.122.1; ddns­rev­domainname “in­addr.arpa”;
default­lease­time 600; update­static­leases on;
max­lease­time 7200; zone example.com. {
Эти строки определяют, какую информацию сервер передаст кли­ primary 192.168.122.6; #update the local server
енту в DHCPACK, тут все понятно. }
Следующий фрагмент определяет одну подсеть, которую бу­ zone 122.168.192.in­addr.arpa. {
дет обслу живать сервер. Предполагается, что dhcp3 слушает порт primary 192.168.122.6; #same for reverse addresses
на интерфейсе, подключенном к сети 192.168.122.0: }
subnet 192.168.122.0 netmask 255.255.255.0 { Конечно, на стороне DNS­сервера для динамического обновления
range 192.168.122.20 192.168.122.190; нужно настроить еще кое­что, но здесь мы не будем в это углуб­
option broadcast­address 192.168.122.255; ляться.
option routers 192.168.122.1; Так как для поиска DHCP­сервера клиенты отправляют ши­
} роковещательные запросы, а широковещательные пакеты ско­
Здесь мы видим диапазон IP­адресов, назначаемых сервером, рее всего не пройдут через маршру тизаторы вашей сети, в ка ж­
а так же настройки подсети для широковещательного адреса дой подсети должен быть DHCP­сервер. Альтернатива – запустить
и шлюз по умолчанию, которые будут переданы клиентам этой в подсети DHCP­ретранслятор (dhcrelay). Он слушает DHCP­запро­
подсети. сы и перенаправляет их серверам DHCP из за данного списка. Так
Можно так же привязать настройки (включая имя хоста и фик­ с помощью одного DHCP­сервера обеспечивается выделение ад­
сированный IP­адрес) к за данному хосту по его MAC­адресу – ресов для всей сети.
фрагмент ниже показывает, как это сделать: Наконец, поскольку DHCP – критически важный сервис сети,
host lxfdesktop14 { вы можете за думаться о создании для него резервного. В слу­
hardware ethernet 52:54:00:12:34:56; чае с двумя серверами, адресные пространства которых не пе­
option host­name “lxfdesktop14”; рекрываются, это довольно просто, но конфигурация реальной
fixed­address 192.168.122.181; отработки отката с основного сервера на запасной, обраба­
next­server 192.168.122.1; тывающий тот же самый набор адресов, требует больше уси­
filename “webserver/pxelinux.0”; лий и предполагает специальную секцию в файле конфигура­
} ции обоих серверов. Под держка имеется только в третьей версии
Параметры next-server и filename нужны для загрузки клиента по DHCP. Документация не особенно хороша, но по адресу www.
сети (PXE). Они за дают IP­адрес TFTP­сервера и имя файла, кото­ madboa.com/geek/dhcp­failover есть неплохая статья. А если вам
рый будет с него запрошен. нужно официальное описание DHCP, прочтите RFC2131 (http://left.
org.rfc/rfc2131.txt).
Подружим DHCP и DNS
У DNS и DHCP непростые отношения. И проблема в том, что DNS
создавался из расчета, что IP­адрес компьютера остается посто­ Один – компания, два – толпа
янным достаточно долго (как минимум, несколько дней или не­
дель), а DHCP идет вразрез с данным предположением. Чтобы Два конфлик тующих DHCP­сервера в одной сети – это Плохая Идея: очевидно, что меж ду ни­
решить эту проблему, динамический DNS позволяет сообщить ми начнутся гонки. С годами я обнару жил, что установка неконтролируемых DHCP­серверов
связанному с ним DNS­серверу назначенный клиенту адрес. Этот (слу чайно или намеренно) в чу жой сети – отличный способ позлить системного администрато­
протокольный метод обновления DNS описан в RFC 2136. Вот ти­ ра. Чтобы заметить это, нужно время (должны истечь существующие сроки аренды или в сети
должен появиться новичок), но в конце концов администратор будет ходить вокруг с обижен­
пичный фрагмент конфигурационного файла DHCP, позволяюще­
ным видом, держа в руках свой ноутбук с обличительной трассировкой пакетов, и бормотать:
го реа лизовать такое обновление: «Кто полу чил 192.168.122.42?»
ddns­update­style interim;

Июль 2009 Linux Format 47


Учебник

Учебники
Наши эксперты помогут вам с любым приложением Linux!

еВГеНИй БАлДИН
Начинал с Агатов�
В этом выпуске...
Когда-то даже знал,
что такое Робик� Освободи Нарисуй мечту! ... 54
мышление ................. 50 О, кошмар! Взяв новенький план­
Долой бумажки­наклейки: Basket шет Wacom Bambo и GIMP, Майкл
Патенты – зло? и Энди Ченнел пред лагают куда как Дж� Хэммел недрогнувшей рукой
превращает цветущий город в ад­
лучший способ содержать мысли
в порядке. Плюс: управление струк­ ские руины.
Идея принять закон о том, что од­ турой документа в OpenOffice.org.
ни алгоритмы являются математикой,
а другие – нет, является абсурдной.
Программируем Ваша почта, сэр! 62
в облаках ................... 58 Считаете локальные почтовые кли­
Дональд Э. Кнут Вы просили – мы сдела ли. евгений енты пережитком эпохи Web 1.0?
Крестников нау чит вас, как управ­ Нейл Ботвик сделает их сетевыми

П
атент – охранный документ, лять документами в Google Docs че­ и доступными в браузере из любо­
удостоверяющий исключи рез Google Data API. го зава лящего интернет­кафе.

тельное право, авторство


и приоритет изобретения, полез­
Питонизируем Общаемся
Сеть ................................. 66 с VirtaulBox ............. 70
ной модели или промышленного об­ Свободный как Linux Ник Вейч и его ...но Python способен и на боль­
разца. Впервые был выдан в Вене ручной змей с легкостью заставят шее. Николай Игот ти применяет его
цианской Республике аж в XV веке, ваш рабочий стол соответствовать для автоматизированного управ­
с целью распространения техниче­ погоде за окном... ления виртуальными машинами.
ской информации, так как должен был
исчерпывающе описывать изобре­ Баг не пройдет! ..... 72 Графический
тение. Чтобы авторы не скрыва ли от об Отла живание – это, как известно, JavaFX ......................... 76
щества свои наработки, в патент было процесс избавления программы от... Пока что наша технология для соз­
ошибок. Андрей Боровский проде­ дания продвину тых интернет­при­
добавлено исключительное право
монстрирует его на примере GNU ложений выглядела не такой уж
на пользование изобретением в те­ Debugger и Cuneiform. продвину той. Антон Черноусов спе­
чение десяти лет. шит исправить этот недостаток.
В XV веке это был мощный тол­
чок, или даже пинок, к прогрессу, ибо
Интернет-
телефония ................. 80
цеховые тра диции дик това ли необхо­ Любите акронимы и не любите пла­
димость сокрытия всех новшеств от тить по счетам за телефон? У Майкла
постороннего взгляда. Внедрение па­ Брукса есть как раз то, что вам нуж­
тентов позволило сломать замкну тый но – PBX VoIP под названием Asterisk.
круг «вла дельцев» технологий, предо
ставив их всем желающим. Но в сред­
ние века все развива лось гораздо мед­ Совет месяца: Пожиратели трафика
леннее, чем сейчас, да и темп жизни
был совершенно другой. Каза лось бы,
Слу ча лось ли вам замечать, что интернет­соединение жений тоже может стать проблемой, если установить
для сохранения инварианта полезно­ ста ло мед ленным, хотя вы ничего не скачиваете? для ка ж дого из них ограничение в 90 % от ширины
сти следова ло значительно уменьшить Асимметричная природа беспроводных широко­ кана ла.
(не оставить неизменными, не увели­ полосных кана лов такова, что если вы занимаете всю Одним из решений является удобный сценарий
чить, а уменьшить!) сроки действия исходящую полосу, загрузить что­либо становится Wonder Shaper, использующий команду tc (traffic
патентов, но уже почти никто не дума­ нереальным. Причина кроется в способе управления control) для ограничения общей пропускной способ­
ет о том, ра ди чего все это затева лось, трафиком в вашем модеме или у интернет­провай­ ности на уровне чуть ниже максимального. Загру­
и из двигателя прогресса патенты пре­ дера. Да же самые нетребовательные и ма лоскорост­ зите его с http://lartc.org/wondershaper, поместите
вратились в могучий тормоз. ные операции, вроде уда ленной оболочки или DNS­ скрипт wshaper куда­то в пределах PATH – ска жем,
запросов, становятся невообразимо мед ленными или /usr/local/bin, и отредак тируйте системные параметры
P�S� Дональд Э. Кнут подал про­
завершаются по тайм­ау ту. Если вы используете что­ в нача ле. Установите значения DOWNLINK и UPLINK
шение в расширенную Комиссию по
то типа клиента BitTorrent, можно ограничить в нем чуть ниже максимума (в кбит/сек) и запустите
Апелляциям Европейской патентной скорость выгрузки и устранить проблему. Некоторые программу. Вы увидите, что операции вроде
организации против патентов на алго­ другие программы, например, rsync, тоже пред лагают выгрузки фотографий во Flickr больше не тормозят
ритмы. Видимо, доста ли... подобную функциональность, но многие ею не озабо­ систему. Подобрав желаемые настройки, добавьте
E.m.Baldin@inp.nsk.su чиваются. Одновременный запуск двух таких прило­ вызов wshaper при загрузке дистрибу тива.

Июль 2009 Linux Format 49


Первые шаги Серия
«Linux для новичков»

Basket: Соберем
Храните свои идеи в виде рощицы из стикеров? Тогда позвольте Энди Ченнелу
показать, как Basket Note Pads преобразит вашу жизнь...

Индивидуальные стили корзин помогут разграничить сферы


вашей жизни�

щелкните на них правой кнопкой мыши и уда лите, чтобы начать


с чистого листа. В конечном счете должна остаться только кор­
зина General [Общее]. Переименуйте ее – щелкните на ней правой
кнопкой мыши, выберите Properties [Свойства] и введите новое
имя; мы вписа ли Home. В этом диа логовом окне можно настро­
ить внешний вид, добавив столько колонок, сколько нужно, или
выбрав свободную форму – но учтите, тогда страницы получат­
ся не шибко упорядоченные. Еще можно определить цвет тек­
ста и фона корзины, а так же назначить комбинацию клавиш для

Ч
исло источников данных в мире все растет, и управление ее быстрого открытия.
своими собственными мыслями, плюс еще горы инфор­ Для нашего раздела Home мы выбра ли раскладку в две колон­
мации, становится неподъемным. К счастью, есть целый ки и вернулись в главное окно, где видна граница меж ду двумя
рой отличных приложений для заметок, способных хранить ваши этими столбцами. Границу можно взять и перетащить вправо или
сообра жения, идеи, списки и ссылки. влево, чтобы изменить ширину колонок.
Мы решили взять программу под названием Basket Note Теперь добавим вторую корзину, щелкнув в любом месте пане­
Pads. Это приложение KDE, но оно работает и в дистрибу тивах ли древа правой кнопкой мыши и выбрав New [Создать]. По умол­
Наш на базе Gnome. На данном уроке мы пока жем, как организовать чанию создается корзина первого уровня (корневая), но вы може­
эксперт корзину [не пу тайте с той корзиной, куда попа дают уда ленные те определить ей родительскую через выпа дающее меню внизу
Энди Ченнел файлы! – прим. ред.] и добавить в нее всевозможное содержи­ окна корзины, которое так же настраивает их раскладку.
Энди, видимо, бу­ мое, а завершим кратким обзором на дежности Basket.
дет делать Первые Для нача ла через менед жер пакетов Synaptic загрузим Basket
шаги в Linux вечно,
версии 1.0.2. После этого она ока жется в разделе Дополнитель­
а технологиями он
заинтересовался, ные в меню Приложения. Кроме того, запущенное приложение по­
открыв для себя местит иконку в системный лоток – щелкайте по ней, когда Basket
Dragon 32. вновь пона добится. Интерфейс программы состоит из трех час­
тей. У верхнего края – меню и панели инструментов; по левую
сторону размещается панель­древо для организации коллекции
корзин и подкорзин. И, наконец, главное окно – для управления
отдельными корзинами информации.

По корзинам
Начнем с создания небольшого набора корзин для различных
сфер вашей жизни, которые, возможно, ну ж даются в реорганиза­ Тэги — удобные индикаторы статуса задач, и пользы ради можно
ции. Несколько элементов в древе корзин уже имеется, поэтому добавлять более одного�

Месяц назад Мы созда ли слайд-шоу в Smile и поместили кое-что на YouTube.


50 Linux Format Июль 2009
Первые шаги Учебник

мысли в кучку
Наста ло время подумать, как разграничить вашу жизнь, и соз­ Экспорт в HTML —
дать корзину первого уровня для ка ж дой части. Возможно, вы за­ прекрасный способ
хотите за дать форматирование для ка ж дой из частей в отдель­ создания универ-
сальной копии
ности, чтобы выделить их. Если вы собираетесь использовать
ваших корзин�
несколько корзин, может так же потребоваться изменить свойства
ка ж дой из них (правый щелчок > Properties) и определить фоно­
вые цвета в тон и новые иконки (просто щелкните на пик тограмме
корзины рядом с именем).
Ка ж дую корзину можно населить подкорзинами (элементами
второго уровня), щелкнув на ее имени правой кнопкой мыши и вы­
брав New > New Sub­Basket [Создать > Новая подкорзина]. Подкор­
зины наследуют свойства родителей, и при разных оформлениях
у предков легко определить, где вы на ходитесь в данный момент. Кроме простейших заголовков, приличные списки за дач пре­
доставляют пользователям сведения о ходе выполнения отдель­
Что дальше ных пунк тов. Для присвоения индикаторов элементам списка,
Пора добавлять содержимое. Начнем с создания списка за­ щелкните на первом из них, затем выполните Shift+щелчок на по­
дач. Выберите корзину и щелкните где­нибудь в главной рабочей следнем элементе и выберите в выпа дающем списке пик тограмму Скорая
помощь
области – создастся контейнер. Введите заголовок, а затем щелк­ Priority [Приоритет]. Вам будет предоставлено три варианта на вы­
ните вне контейнера и вновь подведите курсор мыши к новому за­ бор – Low [Низкий], Medium [Средний] и High [Высокий]; их мож­ Используйте
головку. Элемент станет выделенным, и слева от вашего текста но установить правым щелчком на иконке рядом с именем ка ж до­ Ctrl+Y для быстрой
появится стрелочка. Щелкните на ней и выберите из доступных го элемента. Таким же образом добавляется индикатор прогресса вставки ссылки
в корзину.
пунк тов Title [Заголовок]. [Progress] (щелчок на нем увеличит его состояние), он позволяет
Теперь щелкните под заголовком и начинайте вводить первый визуально оценить процент готовности пунк та.
элемент списка ваших за дач. Вновь щелкните вне нового элемен­ Единственное важное упущение в этом разделе – поля даты
та и наведите на него курсор мыши, затем в выпа дающем меню или сроков; их придется добавить в заголовок.
выберите тэг To Do [Выполнить]. Рядом с элементом автоматиче­
ски появится фла жок. Щелчок на флажке отключит пункт и пере­ Упорядочиваем все
черкнет его. Щелкните еще раз и добавьте новые элементы списка Хотя списки за дач – это здорово, вы скоро осознаете, что с Basket
за дач под уже созданным. Заметьте, что приложение чутко реа­ Note Pads можно делать намного больше. Например, если в связи
гирует на расположение мыши: например, при щелчке чуть ниже с неким проек том вы регулярно посещаете несколько web­сайтов,
элемента списка за дач оно сочтет, что вы желаете добавить пункт их можно собрать отдельно в корзине проек та. Просто создайте
в список, и отформатирует его соответствующим образом безо заголовок (как указано выше) и в панели меню выберите Insert >
всяких усилий с вашей стороны. При щелчке подальше Basket ре­ Link [Вставка > Ссылка]. Теперь добавьте web­адрес и заголовок
шит, что вы перешли к другому действию, и создаст стандартную для ка ж дого сайта, который необходимо вставить. Сгруппируй­
область. те их вместе для упрощения организации, и у вас получится на­
После создания списка щелкните на элементе­заголовке, по­ стоящая система закла док, специфичная для за дачи. Ана логично
лученном ранее, а затем выполните Shift+щелчок на последнем можно добавлять изобра жения, длинные заметки и ссылки на при­
элементе списка. Щелкните правой кнопкой и выберите Group ложения. А те, кто занимается разработкой, могут добавлять к за­
[Группировать]. Это позволит перемещать весь список как единое меткам куски кода или создавать элементы, основанные на шест­
целое и, за держав мышь над заголовком, сворачивать его в од­ на дцатеричном цветокоде. Например, можно создать корзину для
ну строку. web­проек та и определить па литру сайта внутри нее. Эксперимен­
тируйте с базовыми темами, которые мы описа ли, и вы, несомнен­
но, скоро поймете, что Basket – ценнейший инструмент.

Резервируйте корзины
Чем дольше вы пользуетесь Basket, тем силь­ Если вы решили убрать старую корзину
нее желание обеспечить сохранность преды­ из древа – например, завершив проек т – мож­
дущих мыслей и идей, благодаря резервным но создать ее архив: Basket > Export > Basket
копиям. Для этого выберите в меню Basket > Archive [Корзина > Экспорт > Архив корзины].
Backup & Restore [Корзина > Сохранить или Альтернатива – экспорт корзины в виде HTML­
восстановить]. Выполнится именно то, чего страницы через Basket > Export > HTML Web
вы и жда ли: создание резервной копии или Page. При выборе последней опции создастся
восстановление из нее. Автоматического ре­ снимок корзины, с оформлением и ссылками,
зервирования нет, все это необходимо регу­ доступными для web­браузера. Превосходное
Создавайте ссылки на web-сайты, локальные файлы лярно проделывать вручную. решение для архивирования!
или даже приложения�

Июль 2009 Linux Format 51


Учебник Первые шаги

OpenOffice.org:
Не ограничивайтесь жесткой структурой – пусть Writer придаст вам свободы.

П
ланировщики обычно используются для создания
струк туры документа – будь это роман, отчет или пись­
мо – еще до его написания. Концентрируясь на струк­
туре, обдумывая процесс, писатель полу чает лучшее представ­
ление о развитии проек та, да и вообще это один из способов
борьбы с «синдромом белого листа», одолевающим многих ав­
торов. На нашем уроке мы созда дим струк туру в текстовом про­
цессоре OpenOffice.org Writer, затем применим приложение для
переупорядочивания элементов текста на различных уровнях,
и, наконец, экспортируем ее для использования в качестве осно­
вы презентации Impress.
OpenOffice.org установлен по умолчанию во многих настоль­
ных дистрибу тивах. Мы используем последнюю версию 3.х, но ин­
струмент создания струк тур в 2.х прак тически такой же. То есть
старая версия, вероятнее всего, позволит вам повторить все, что Планировщик использует Стили и Форматирование OOo,
мы здесь проделаем. и можно использовать ту же структуру
Инструмент Стили использует стили абзацев, уже имеющиеся для создания оглавления�
Скорая в Writer для определения иерархии документа. Определить свой
помощь
стиль и взять его за основу струк туры весьма просто, но будем уж глав, выделить их все и выбрать Заголовок 1 в выпа дающем спи­
При использова­ держаться того, что есть. Для нача ла заглянем в Сервис > Струк­ ске Стиль – он на ходится в верхней части окна слева (или в окне
нии Планировщи­ тура нумерации [Tools > Outline Numbering]. В левой части окна Стили, вызываемом выбором Формат > Стили).
ка остерегайтесь вы видите различные уровни. Выбор одного из этих чисел показы­ Применив тот же метод, но выбрав в качестве формата Заго­
ошибок в преем­
ственности эле­
вает стиль абзаца, связанного с ним. Например, Заголовок 1 – эле­ ловок 2, можно измельчить струк туру ка ж дой главы, вынося на­
ментов. Очень лег­ мент высшего уровня, и все, что отформатировано в этом стиле, ши мысли или идеи в отдельные строки. Под этими разделами
ко сбиться с пу ти так же становится заголовком высшего уровня. можно вводить заметки, диа логи или прозу, или добавлять цита­
по сюжету, когда При написании романа или эссе можно использовать этот ты и ссылки на источники в эссе.
все переплелось.
стиль абзаца в названиях глав. Для этого на до ввести заголовки
Пишем, чтобы править
Нужно принять решение о глубине струк туры, поскольку ка ж дый
элемент, который вы за хотите переместить позднее (мы здесь
не говорим об операциях «вырезать» и «вставить»), должен быть
отформатирован при помощи одного из ее стилей. Пусть, напри­
мер, отдельные сцены рассказа написаны и расположены под за­
головками с определенными стилями. Тогда потом вы сможете
изменить порядок сюжета, просто поменяв положение заголов­
ков сцен, поскольку при перемещении элемента струк туры его до­
черние элементы так же переносятся.
Вдобавок к возможности подправить струк туру проек та до от­
правки на печать, использование подобной иерархии разбивает
за дачу написания большого труда на более короткие куски, повы­
шая управляемость.
Упрощая написание, созданная в нача ле работы струк ту­
ра облегчит так же и улучшение внешнего вида документов, осо­
бенно благодаря тому, что стили заголовков и подзаголовков
можно редак тировать в окне Стили (для просмотра доступных
опций выполните правый щелчок на имени стиля и выберите Из­
менить). То есть важные стилистические изменения выполняются
с минимумом усилий. Другое достоинство хорошей струк туры –
Успешное создание структур в OOo зависит от стилей абзацев и Навигатора� простое создание оглавления готового документа: благодаря сти­
лям заголовки и подзаголовки легко распознать.

Не хотите пропустить номер? Подпишитесь на www.linuxformat.ru/subscribe/!


52 Linux Format Июль 2009
Первые шаги Учебник

Применим схемы
Шаг за шагом: Использование Навигатора

1 Просмотр заголовков 2 Уложим содержимое 3 Перетряхнем заголовки


Проще всего переупорядочить части струк ту­ Любой элемент, имеющий подчиненные (до­ В верхней строке панели инструментов Навигатора
ры документа с помощью Навигатора. Вызывает­ черние), так же имеет рядом с именем иконку +. расположены две кнопки для перемещения глав
ся он выбором Правка > Навигатор. Пункт в самом Щелкните на ней, чтобы увидеть все подпунк ты ро­ вниз и вверх. Они передвигают выбранные эле­
верху называется Заголовки, и если вы добавля­ дительской записи. Второй щелчок закроет стоп­ менты вверх или вниз по струк туре. Учтите, если
ли их в документ, то увидите небольшой знак + ря­ ку. Да же если вы закроете родительский элемент, вы переместите главу ниже последнего дочернего
дом с ним. Щелкните на нем, чтобы увидеть спи­ имеющий внуков (дочерние элементы дочерних), элемента родителя, она перейдет в нижележащий
сок заголовков. Writer будет помнить статус этих элементов. родительский элемент, и наоборот.

4 Упорядочиваем 5 Повышаем заголовки 6 Экспорт в Impress


Можно так же повышать элементы – ска жем, Если вы повысили уровень заголовка, то все его Если вы используете Writer для создания началь­
с уровня 3 до уровня 2 – или понижать их. Выбери­ бывшие соседи станут его дочерними элемента­ ной струк туры презентации, выберите Файл > От­
те элемент, а затем используйте кнопки Повысить ми. Это логично, но может привести к казусам. Ес­ править > Струк туру в презентацию, чтобы от­
уровень или Понизить уровень у правого края вто­ ли вы планируете повысить заголовок, но хотите, крыть струк туру в Impress. Заголовки уровня 1
рой строки панели инструментов. Отметим, что по­ чтобы все заголовки, расположенные ниже, оста­ станут заголовками слайдов, так что ка ж дый за­
нижение заголовка уровня 1 делает его дочерним лись при своих родителях, просто переместите его головок получит свой слайд, а дочерние элементы
элементом заголовка первого уровня, располо­ перед повышением к нижней границе списка. станут маркированными элементами списка ка ж­
женного выше. дого слайда.

Через месяц Изучаем Basket дальше и строим личный облачный сервер.


Июль 2009 Linux Format 53
GIMP Свободный графический редактор,
в который вы тоже можете вонзить зубы

GIMP: Упадок
Даже экспертам всегда есть чему поучиться. Майкл Дж� Хэммел
делится впечатлениями от работы в Gimp Paint Shop с планшетом Wacom.

Городская антиутопия
Мой эксперимент ставил две цели:
1 Узнать, что можно сделать с помощью планшета Bamboo.

2 Попробовать применить к нему ру ководство, написанное

для планшета подороже.


Здесь я обратился к статье Making of Urban, автор ко­
торой — француз Пьер Фабр [Pierre Fabre] (www.cgarena.
com/freestuff/tutorials/photoshop/urban/index.html). Смысл ее в том,
чтобы взять урбанистический пейзаж и довести его до экстре­
мально­упаднического вида, добавив стихии воды, огня и земли.
На уроке этого месяца я расска жу, как я научился пользовать­
ся планшетом Wacom Bamboo в Gimp Paint Shop и получил соб­
ственную GIMP­версию дизайна Making of Urban, которую я назвал
Decay («Распад»).
Для этой работы пона добилось пять стоковых изобра жений:
городской пейзаж, две фотографии воды, одна фотография жен­
щины и одна фотография вьющихся растений. Окончательная
версия состоит из 73 слоев (51 из них – с масками слоев) и трех
контуров. На всю работу ушло чуть больше 12 часов.
Основные усилия потребова лись для того, чтобы вручную за­
темнить окна в зданиях. Тут я и понял, что предустановленная
настройка Detail Brush для кисти и Digital Airbrush для аэрогра­
фа – это две полезнейшие настройки Gimp Paint Shop в проек тах
такого типа.

Wacom Bamboo, Linux и GIMP

Н
а прошлом уроке мы изу ча ли не слишком известную, Wacom Bamboo – ма ленький черный планшет с USB­разъемом, пе­
но мощную функцию GIMP под названием Tool Presets: ром и подставкой. У него есть четыре клавиши в верхней части
она дает пользователю возможность настроить GIMP и сенсорное кольцо меж ду ними. Ниже – рабочая область 5,8 × 3,7
на выполнение конкретных за дач, например, на имитацию рисо­ дюйма. Хотя с виду планшет и мал, его размер оказался вполне
вания пером или письма масляными красками. Применение Gimp достаточным для моих целей.
Наш Paint Shop, набора предустановленных настроек инструментов,
эксперт открывает эту классную возможность для более широкого кру­
Майкл га пользователей.
Дж. Хэммел Начинающие обычно рассматривают Gimp Paint Shop как ин­
Участник разра­
струмент для создания графических рисунков с нуля. Продви­
ботки GIMP и ав­
тор трех книг по ну тые же пользователи знают, что это – только верхушка айс­
данной тематике, берга. Предварительные настройки дают возможность делать
включая самую но­ в цифровом виде то, чем декораторы голливудских фильмов
вую – «Эффек ты
занимаются уже много лет: превращать обыденность в сказ­
в GIMP: руко­
водство для ку. При моей пытливости, я возжелал узнать, что еще можно де­
художников». лать с Gimp Paint Shop: работа мышью со спецнастройками по­
каза лась мне несколько пошлой, так что я прервал многолетнее
воздержание от покупки планшета и раскошелился на Bamboo
от Wacom (www.wacom.com/BambooTablet/bamboo.php). Это бюд­
жетная модель, и многого я от нее не ждал, но в итоге своих экспе­ Исходный городской пейзаж отыскался среди стоковых фото
риментов был очень и очень приятно удивлен. на iStockPhoto�com�

Месяц назад Мы открыли миру тайные сокровища Gimp Paint Shop.


54 Linux Format Июль 2009
GIMP Учебник

в городе Gimp Paint Shop

Wacom определяется из коробки сразу же после подключения


в большинстве современных дистрибу тивов; правда, не с полной
функциональностью. Работают только рисовальная сторона пера
и его клавиши. Чтобы заработа ла другая сторона пера (ластик),
а так же другие клавиши и сенсорное кольцо, нужно отредак ти­
ровать файл xorg�conf (подробности этих настроек можно найти
на LXFDVD). После редак тирования файла нужно будет переза­
пустить X­сервер. Если вы не умеете делать это вручную, просто
перезагрузите компьютер.
Настройка xorg�conf ак тивирует функции Bamboo (или
другого планшета от Wacom), но для их использования
в GIMP их следует связать с на жатиями клавиш при помощи Он невелик,
утилиты wacomcPl. В некоторых дистрибу тивах она включена но оказалось, что
больший размер
в пакет linuxwacom (его так же можно найти на http://linuxwacom.
и не нужен, даже
sourceforge.net), хотя в Fedora 10 такого пакета нет. В моем слу­ для очень тонкой
чае, поскольку я являюсь пользователем Fedora, пакет linuxwacom работы над
пришлось скачать и собрать из исходных текстов. деталями�

Шаг за шагом: Сотворим ад на земле!


1 Расчистим горизонт
Пора приступать к делу. Первая проблема, присутствую­ зданий, засияло небо. Весь процесс укорачивания зданий
щая на исходном фото – это нехватка фонового неба: и расширения неба потребовал пяти слоев. Так же исполь­
здания чересчур высоки, а посреди изобра жения слиш­ зование исходных кусочков неба для заплаток да лее
ком много переходов и частично видимых построек. облегчит выделение неба для маски.
Высота зданий легко настраивается с помощью выде­ Полу ченный набор слоев да лее был объединен,
ления их верхних частей, копирования и вставки в новый и полу чился новый городской пейзаж, без слоев. Отмечу,
слой. Затем этот новый слой перетаскивается вниз, чтобы что позже я добавил еще несколько ма леньких заплаток,
урезать воспринимаемую высоту зданий. С данным фото чтобы убрать плоские белые стены с правой стороны изо­
процесс был прост, поскольку нижняя часть выбранных бра жения.
зданий почти совпа дает с соответствующими верхними Нижняя часть выбранных зданий прекрасно умести­
частями, и шов не бросается в глаза. Фрагменты неба лась на новом месте. Для полу чения окончательной вер­
были скопированы и помещены над зданиями и пере­ сии с заплатками (см. справа внизу) пона добился еще
ходами в центре изобра жения. Благодаря этому в цен­ один набор заплаток, включая самые высокие здания
тральной части, освобож денной от загромож дающих вид слева.

2 Цветокоррекция зданий
Следующий шаг – цветовая коррекция изобра­ выставлен на значение «цвет». Результаты показаны
жений. В целом исходное изобра жение было слишком здесь. На печати они могут быть не столь явными, как
ярким, с непомерной контрастностью. Для его коррек­ на экране, но уменьшение контрастности выявило многие
ции я скопировал слой в новый пейзаж и уменьшил его дета ли в изобра жении.
насыщенность. Обратите внимание на беспорядочные и неправильно
Затем я прибегнул к помощи диа логов Уровни, Кривые расположенные лу чи фонарей справа. Это упущен­
и Тон­Насыщенность для регулировки этого слоя. Да лее ное мною последствие укорачивания зданий, которое
слой был передвинут под исходный пейзаж, а его режим я исправлю гораздо позже.

3 Зловещее небо но результат вышел слишком унылым. Тогда я взял


Почти однотонное небо было легко выделить с помощью другие стоковые фото облаков, зеркально перевернул
инструмента Выделение связанной области. Я добавил их (инструмент Зерка ло, Flip Tool) и исказил (фильтр Whirl
белую маску слоя к слою городского пейза жа и за лил and Pinch). Цвет я добавил в самом конце работы в каче­
выделение в маске черным цветом. Затем добавил стве финального штриха.
несколько слоев стоковых изобра жений облаков, распо­ Первый вариант окрашенного неба (слева) делать
ложив их так, чтобы они на ходились под слоем с пейза­ было интересно, и это помогло мне прочувствовать план­
жем. Сперва я пробовал окрасить фон неба при помощи шет, но то небо выглядело недостаточно угрожающе для
предустановленных настроек, идущих с Gimp Paint Shop, моей идеи.

Июль 2009 Linux Format 55


Учебник GIMP

4 Обветшание зданий 5 Земные элементы


Дальше пошла самая затратная по вре­ различных окон. Напомню, что с моей Затем нача лись эксперименты с расти­ посредине) я использовал для слоя
мени часть работы: добавление расти­ стороны это было чистым экспери­ тельностью, оплетающей здания. Я сде­ бетона на тротуаре и для некоторых
тельности стенам и разрушение окон ментом, поэтому я начал с наиболее лал выделение в стоковом изобра жении других зданий. Вставленное выделение
и стен. Я начал с добавления к маске уда ленных строений, делая мелкие плюща и вставил его в изобра жение как я так же уменьшил в размере, чтобы
неба слоя с городским пейза жем, ими­ затемнения, и все сработа ло доста­ новый слой, затем добавил маску слоя на уда ленных строениях растения
тируя повреж дение верхних частей точно хорошо для того, чтобы при­ и использовал Аэрограф для маски­ смотрелись как бы изда лека. В неко­
отда ленных зданий. Для этого я при­ менить это и на более близких зда­ ровки случайных фрагментов. Этот торых слу ча ях к вставленным выде­
менил инструмент Аэрограф с пред­ ниях. В некоторых частях, как показано слой я продублировал множество раз, лениям применялась Нерезкая маска.
установками Digital Airbrush из Gimp здесь, я полностью затемнил блок окон изменяя маску слоя и помещая ка ж дый Я расположил растительность
Paint Shop и варьировал давление и затем нарисовал висящие провода, слой все выше по высоте здания, тем только на трех зданиях, а так же
на перо планшета. металлические фрагменты и сломан­ самым получая все более обширную на цементном покрытии тротуара по
Повреж дения верхушек строений ные рамы с помощью предустановки замаскированную область, уменьшаю­ обеим сторонам изобра жения. Можно
на этом этапе были только доказатель­ Detail Brush и белого цвета переднего щую видимое разрастание плюща. было добавить больше, но я решил,
ством правильности концепции. Фак ти­ плана. Затем я еще раз прошелся по Другой фрагмент изобра жения что на некоторых зданиях плющу расти
чески повреж дения добавились позже, этим линиям этой же кистью, но дру­ с вьющимися растениями (вверху неудобно.
однако имеет смысл рассказать о них гими цветами. Режим Кисти был уста­
сейчас. Я грубо выделял ка ж дое стро­ новлен на Overlay.
ение, копировал его и вставлял выде­ Эти грубые затемнения смотрятся
ление как новый слой, затем уда лял лучше за плющом, который я добавлю
содержимое слоя. Так я полу чал слой в следующем разделе. Позже я вер­
с очерченными границами зданий, нулся к ним, воору женный предуста­
для которых я применял Кисть (пре­ новленной настройкой Detail Brush для
дустановленная настройка Detail Brush) отрисовки тонких линий, изобра жаю­
и Аэрограф (предустановка Digital щих трещины, сочетающиеся с полно­
Airbrush) для отрисовки затемнения стью выбитыми окнами.

7 Водяной поток
Эффект воды был создан в несколько нить воду и добавить побольше волн
приемов. Снача ла я сделал выделение и ряби, и тогда я понял, что скопировав
из стокового изобра жения с водой, саму дорогу и применив к ней фильтр
вставил его копию в рабочее окно Ripple, я частично избавлюсь от стек­
и расположил его как раз над слоем листости воды.
с городским пейза жем. Затем я разма­ Чтобы изобразить водяной поток,
зал его по вертика ли (фильтр motion­ нужно было добавить отблески
6 Починка blur), что в основном убра ло пену, на воде по сторонам дороги. Я сделал
фонарных столбов не тронув цвет струй. Этот слой был дополнительные копирования из стоко­
Следующим шагом было за латать в то время как область, к которой она очень большим, что позволило мне вого изобра жения воды, и затем вста­
фонарные столбы. Чтобы все полу­ прилага лась, поменяла окраску после с помощью инструмента Перспек тива вил, изменил размер и располо­
чилось как на до, я сделал подробное цветокоррекции зданий. Это было точно подогнать размазанную струю жил их в рабочем изобра жении. Это
выделение изобра жения­оригина ла поправлено позже, когда я покрыл эту к размерам улицы. Маска слоя под­ изменило вид воды, однако она выгля­
с помощью Быстрой Маски. Это заняло область плющом и чу ток подразрушил чистила слой, и зрительно он плотно дела еще недостаточно правильно.
очень много времени, и мне пришлось строения. совпал со сторонами улицы. В заклю­ Поэтому я добавил дополнитель­
увеличивать масштаб изобра жения, После размещения этой заплатки чение фильтр Ripple добавил воде ные штрихи белых брызг в разных
чтобы обеспечить точность выде­ была вставлена копия фонарного некоторое иска жение. местах на улице, которые я полу чил
ления. Нужно было поправить четыре столба с исходного изобра жения Вода выглядела стек листо, как из дополнительно скопированных
фонарных столба и уда лить остатки и перемещена в одну линию с первым замерзшая. Имелись хорошие отра­ выделений из стокового фото. Маски
еще одного, оставшегося после уко­ столбом справа. Маска слоя помогла жения (счастливый результат размазы­ помогли смешать их с водой, что
рачивания строений. Уда ление было соединить заплатку с изобра жением, вания, не имеющий отношения к город­ полностью убра ло ее стек листый
сделано пу тем выделения соот­ хотя цвета все еще выбиваются скому пейза жу), но дорога под водой вид. Несколько брызг по сторо­
ветствующей области, небольшого из общей гаммы. не была иска жена. нам улицы и несколько белых полос
перемещения выделения вверх на Слой заплатки фонарного столба Тот же процесс был повторен в середине превратили замерзший
изобра жении­оригина ле, и затем копи­ был скопирован и изменен в размерах несколько раз для того, чтобы затем­ пруд в бурлящую реку.
рованием и вставкой его как слоя­за­ еще три раза, по одному для ка ж дого
платки. Слой­заплатка затем переме­ оставшегося фонарного столба, кото­
щался вниз, перекрывая нехороший рый ну ж дался в заплатке. Ка ж дый
фонарный столб. Заплатка сохранила новый слой был перемещен в нужное
окраску оригинального изобра жения, положение и смешан с маской слоя.

56 Linux Format Июль 2009


GIMP Учебник

8 Настроение 9 Население
До этого момен та изо бра жение бы ло ра диальный гра диент до ба вил жел­ В проек те Making of Urban присутство­ исчез ли под робности, например,
немного темнова тым, но в общем тое за рево, пронизывающее все ва ла фигура мужчины, прогуливающе­ цвет ног.
не пере да ва ло ника кого настроения – изо бра жение. Я очень люб лю цве та гося с собакой. Но в стоковых архивах, Я скопировал этот слой и раз­
вспомните зе леные от тенки в «Мат­ осени. Вы най де те их во многих мо их которые я просмотрел, не нашлось мыл его, поместив копию над исход­
рице» или го лу бые в «Лю дях Икс». рабо тах. под ходящей картинки человека, иду­ ным слоем. Снова скопировал слой,
Снача ла я осветлил небо и во ду, Блики на воде (слева вверху) ста ли щего вдаль от камеры. но на этот раз уда лил содержимое слоя,
не трогая зданий. Для этого я ис поль­ более явными после добавления двух Я нашел изобра жение девушки, заменив его нарисованными от руки
зовал ра ди альный гра диент от бе лого слоев с белыми бликами (посредине но фото бы ло слишком ярким бликами, и расположил их в основном
к про зрачному, а так же за маскировал внизу). Но общее настроение за дает и не очень­то годилось. Я сде лал акку­ вдоль левого бока девушки.
здания. Поверх я до ба вил про зрач­ желтое свечение (справа вверху), соз­ ратное выде ление, снова прибегнул Последний кусочек человеческой
ный слой и на рисовал бе лые блики дающее ощущение, что солнце вот­вот к Быстрой Маске, скопировал, изме­ мозаики мы возьмем из двух слоев
на частях зданий. Так же, еще один сядет. нил масштаб и расположил девушку с водой. Первый – немного окрашенной
посредине улицы. Мне пришлось воды, которая придает девушке очень
поэкспериментировать с диа логами мягкую тень. Этот слой я поместил
Тон­Насыщенность, Яркость­Контраст, под слоем с девушкой. Над слоем
Уровни и Кривые и затемнить фигу ру с тенью я поместил копию всплеска
девушки так, чтобы не полностью от камня, брошенного в водоем.

Заключение
По окончании эксперимента я уже очень со скоррек тированным цветом. К счастью,
хорошо понимал, как нужно использовать эти проблемы с цветом укрылись под вью­
мой новый планшет Wacom Bamboo (а так­ щимися растениями и общим цветовым
же истинно полюбил ощущения от его ис­ настроением изобра жения.
пользования), плюс я гораздо лучше ра­ Другие проблемы касаются только
зобрался в применении многочисленных восприятия. Композиция изобра жения
готовых настроек, доступных в Gimp Paint и рядом не стоит с композицией моего ис­
Shop. Хотя я за действовал только часть точника вдохновения. Картинке не хва­
из них, я гораздо лучше оценил их общий тает глубины, которую в Making of Urban
потенциал. дает дорога, поворачивающая слева на­
Окончательное изобра жение было право. Ну и, конечно, выбитые взрывом ок­
хорошо принято теми, кому я его пока­ на не столь реа листичны.
зал, но я все еще вижу простор для улуч­ Тем не менее я вполне доволен резуль­
шений. Например, я теперь понимаю, что татом. Моя жена считает, что мне на до тор­
заплатки на до было вырезать из самого говать печатными изобра жениями вро­
лучшего источника. В основном я вырезал де этого, а я думаю – что только ни даст
их из исходного изобра жения, хотя вместо мне шанс поэкспериментировать с Bamboo
этого на до было брать их из копии зданий и GIMP, будет очень кстати.

Через месяц Пост-апока липтическое возрож дение, наподобие феникса из пепла!


Июль 2009 Linux Format 57
Google Data API Используйте службы поиско­
вого гиганта в собственных приложениях

GData: Курс
Давно перестали удивляться, увидев Карты Google на сайтах,
не имеющих отношения к Google? И правильно: никаких секретов здесь нет.
евгений Крестников научит вас легко проделывать такие трюки.

пример, в нашем поиске или Картах), мы пред лагаем разработчи­


кам использовать API AJAX».
На следующих четырех страницах мы да дим введение в API
данных Google, которое поможет вам понять основные принципы
работы с этим замечательным инструментарием. Мы не будем под­
Исходный текст робно описывать протоколы синдикации или способы установки
примера клиентских библиотек, предполагая, что вы – достаточно опытный
web­разработчик, знакомый с Linux и желающий освоить новую
технологию. А разобраться в дета лях вам поможет документация,
доступная по адресу http://code.google.com/intl/ru/apis/gdata/.

С чего начать?
Создатели Google Data API рекомендуют начинать его освоение
с основных принципов и понятий. Затем вам пред лагается оста­
новиться на одной из доступных на сайте клиентских библио­
тек (ее выбор зависит от используемого вами языка программи­
рования) или работать непосредственно с XML/HTTP. Последним
этапом станет выбор службы Google, с которой вы собираетесь
взаимодействовать, и чтение соответствующего раздела руковод­
ства. Это выглядит вполне разумным, так что на данном уроке
мы будем следовать методике, рекомендованной компанией.
Согласно определению Википедии, web­синдикация – одно­
временное распространение информации на различные страни­

В
LXF117 мы уже писа ли про онлайн­сервисы Google. Их воз­ цы или web­сайты. Основной принцип синдикации заключается
можности сегодня не ограничиваются поиском информа­ в передаче заголовков материа лов и ссылок на них (можно, на­
ции в Сети и доступом к элек тронной почте: пользователь пример, полу чить информацию о новых сообщениях на форуме).
может хранить на серверах Google свои документы и фотоальбо­ Первоначально технология использова лась на новостных ресур­
мы, работать с картами или вести свой блог. Популярный видео­ сах и в блогах, но постепенно сфера ее применения расшири­
сервис YouTube – это тоже Google. Но нас сегодня будут интересо­ лась. Сегодня существуют два формата оповещения об изменении
Наш вать не сами сервисы, а возможность вызывать и использовать существующих данных, появлении новых и ретрансляции ин­
эксперт их в своих собственных приложениях. Это реа лизуется посред­ формации в Сети: созданный компанией Netscape RSS и кон­
Евгений ством Google Data API (API данных Google, сокращенно – GData). курирующий стандарт Atom. Оба они основаны на XML. Google
Крестников Процитируем Майк ла «Chewy» Тревеллу [Michael Trewhella], кон­ Data API позволяет разработчику использовать RSS 2.0, Atom
Ежемесячно пе­
сультанта Google по вопросам разработок (LXF117): «Google 1.0 и Atom Publishing Protocol (AtomPub или APP). Формат Atom
рерывает пол­Ин­
тернета в поис­ Data API представляет со­ имеет ряд преимуществ пе­
ках информации
для Новостей LXF.
бой набор интерфейсов чте­
ния и записи данных для
«В Google решили ред RSS – он легко расширяет­
ся и обла дает большими воз­
API данных Google
делает его жизнь
широкого спек тра онлайн­
сервисов Google, использую­
использовать стан- можностями. С помощью APP
можно отправить HTTP­за­
не лег че, но инте­
реснее. щих единый протокол. С его дарт AtomPub.» прос GET к конкретному ресур­
помощью Google позволяет су (например, кана лу данных
сторонним разработчикам расширять функциональные возмож­ или отдельному сообщению). Ответ от сервера придет в форма­
ности своих продук тов. Вместо того, чтобы создать API, постро­ те синдикации Atom. Кроме того, APP позволяет создавать, ре­
енный на разрозненном наборе протоколов, мы решили исполь­ дак тировать и уда лять ресурсы, используя запросы типа POST,
зовать стандарт AtomPub, основанный на технологиях Atom/XML PUT или DELETE. К сожа лению, ни в одном из стандартов нет воз­
и HTTP. Это значительно упрощает процесс обу чения персона­ можности отправить серверу запрос на выборку данных по оп­
ла для сторонних разработчиков. С тех пор, как спецификации ределенному критерию и полу чить обратно ответ со списком со­
AtomPub были утверждены в RFC 5023, многие компании ста ли ответствующих результатов. Однако у Atom есть стандартный
создавать API, основанные на этом стандарте. В тех слу ча ях, ког­ механизм расширений, при помощи которого GData легко справ­
да использование подобных интерфейсов не имеет смысла (на­ ляется с подобными за дачами.

58 Linux Format Июль 2009


GData Учебник

молодого бойца
Кана лы GData позволяют работать с блогами, новостными лен­ gz) в один из ката логов жесткого диска. После этого вы увидите
тами, элек тронной почтой и другими сервисами Google. Отправ­ несколько подката логов:
лять запросы и получать их результаты можно через собственные demos – примеры приложений;
приложения, с помощью стандартных программ для чтения RSS documentation – документация по библиотеке;
или расширений браузера. Протокол GData нейтра лен к языкам library – исходные тексты;
программирования – вы можете написать клиент на любом языке, tests – файлы для автоматического тестирования.
который позволяет отправлять HTTP­запросы и принимать отве­ Кроме того, в корне архива есть несколько текстовых файлов –
ты на основе XML. Чтобы получить данные от службы, под держи­ в частности, инструкция по установке. Инсталляция библиотеки
вающей GData, вам нужно отправить запрос HTTP GET. При этом не должна вызывать затруднений у опытных пользователей Linux
служба выдаст результат в виде кана ла Atom или RSS. Она так­ (вам может потребоваться ак тивировать некоторые расширения
же может под держивать обновления данных при помощи запро­ PHP, в первую очередь, openssl и iconv, если вы этого еще не сде­
са HTTP PUT. Разумеется, сервис может предоставлять кана лы ла ли). Для нача ла работы достаточно добавить дирек торию биб­
только для чтения (например, канал результатов поиска) или для лиотеки (подката лог library из архива) в переменную PHP include_
чтения и записи (ска жем, Google Calendar). Есть только одно огра­ path. Это можно сделать через файл php�ini, конфигурационный
ничение: GData не позволяет создавать и уда лять кана лы – это мо­ файл Apache �htaccess или динамически, при помощи PHP­функ­
жет делать только служба. ции set_include_path() или ключа -d в командной строке.
Теперь нам необходимо проверить работоспособность уста­
Библиотеки и программирование новленного ПО. Для этого можно воспользоваться скриптом
Давайте сразу же договоримся, что мы не будем рассматривать demos/Zend/Gdata/InstallationChecker�php. Как и прочие примеры
вариант работы с XML/HTTP напрямую: он обла дает наиболь­ из ката лога demos/Zend/Gdata, он работает и как CGI­сценарий,
шей гибкостью (и трудоемкостью), но на Google Code есть ссылки и из командной строки. Если установка прошла успешно, вы уви­
на специа лизированные библиотеки прак тически для всех языков дите на экране результат, представленный на рисунке 1 (или ана­
программирования: Java, .NET, PHP, Python, Objective­C, JavaScript; логичный, но менее красочный вывод в консоли).
наиболее заметным исключением из этого списка является
Perl. Они значительно упрощают процесс разработки, предостав­ Выбираем сервис
ляя высокоуровневый интерфейс, позволяющий абстрагиро­ Мы уже достаточно поговорили о доступных стороннему разра­
ваться от дета лей. Подробное описание всех форматов и прото­ ботчику API данных Google в целом – теперь остановимся на них
колов на английском языке доступно на сайте http://code.google. подробнее. API данных служб Google может быть использован для
com/intl/ru/apis/gdata/docs/2.0/reference.html. управления доменами, а так же для интеграции решений Google
Помимо официально представленных на сайте Google, в Сети и существующей ИТ­инфраструк туры. Google Base – это масшта­
можно найти другие клиентские библиотеки GData. Разумеется, бируемая база данных, в которой пользователь может хранить об­
описать все средства разработчика мы не в состоянии (для этого щедоступную струк турированную информацию. В сущности, сер­
пришлось бы посвятить им весь номер), поэтому сосредоточимся вис можно рассматривать как еще один способ закачивать данные
на клиентской библиотеке PHP, поскольку многие динамические в базы данных Google. Здесь можно разместить весь контент, ко­
сайты в Сети разработаны с использованием именно этого язы­ торый Google будет хранить и индексировать для специа лизиро­
ка программирования. ванного интернет­поиска. В зависимости от релевантности, ваш
Клиентская библиотека для языка PHP предоставляется ком­ контент может так же быть включен и в главный поисковый ин­
панией Zend в рамках проек та Zend Framework, однако она мо­ декс, и в другие продук ты Google. API данных Google Base позво­
жет быть установ лена отдельно. Рассмотрим последний вари­ ляет разработчикам запрашивать информацию, а так же вводить Установка Zend
ант. Нам потребуется компьютер с Linux (дру гие операционные данные и управлять ими из своих программ. Framework прошла
успешно: ошибок
системы под держиваются тоже, но нас они интересовать не бу­ Blogger – сервис Google для создания блогов. С помощью
не найдено�
дут) и PHP5 версии не ниже чем 5.2.4. Приводить подробную ин­ API данных Blogger клиентские прило­
струкцию по установке PHP так же не станем: об этом написано жения могут добавлять, уда лять или из­
в соответствующем разделе документации вашего дистрибу ти­ менять записи, а так же производить поиск
ва (например, в Ubuntu достаточно набрать команду sudo apt-get по определенным критериям. Данные API
install php5). Вместо этого сразу перейдем к процессу инсталля­ позволяют добавить на сайт динамический
ции библиотеки. список записей и комментариев, создать
Для нача ла необходимо скачать ее последнюю версию со стра­ модуль расширения для публикации запи­
ницы http://framework.zend.com/ (на момент написания статьи бы­ сей или агрегатор блога.
ла доступна Zend Gdata 1.8.3, но к моменту, когда вы будете читать API данных Ка лендаря Google позволя­
эту статью, ситуация, естественно, может измениться) и рас­ ет создавать клиентские приложения для
паковать архивный файл (в нашем слу чае – ZendGdata-1�8�3�tar� просмотра и обновления событий ка лен­

Пропустили номер? Узнайте на с. 103, как получить его прямо сейчас.


Июль 2009 Linux Format 59
Учебник GData

даря в форме кана лов API данных Google. С их помощью можно,


например, разработать web­интерфейс для просмотра информа­
ции Ка лендаря Google через внешний сайт, включить напоминание
о предстоящих событиях, настроить синхронизацию Ка ленда­
ря Google с мобильным устройством и так да лее. Логически при­
мыкающие к нему API данных Контак тов Google дают клиентским
приложениям возможность просматривать и обновлять контакт­
ные данные. Если вы хотите, ска жем, настроить синхронизацию
списка контак тов мобильного устройства с Контак тами Google,
можете воспользоваться им.
API данных Блокнота Google, как нетрудно дога даться по его GData API позволяет легко прочесть названия имеющихся
названию, обеспечивает приложениям возможность доступа к со­ у нас документов�
держимому Блокнота Google. С его помощью программа­клиент
может запросить список общедоступных блокнотов пользователя шать основной цели – получению представления о Google Data
или содержание существующего блокнота. API, а наш сценарий, несмотря на ка жущуюся простоту, включает
API данных Таблиц Google предназначены для просмот­ все ключевые элементы «настоящей» программы: открытие сес­
ра и обновления содержания элек тронных таблиц в виде кана­ сии, чтение данных, предоставляемых службой Google, и их из­
лов GData. Клиентская программа может получить список таблиц менение. Говоря более конкретно, наша программа будет полу­
пользователя, а так же представлять, редак тировать или уда лять чать список документов, имеющихся у некоторого пользователя
содержание книги в существующей таблице. API данных Докумен­ в службе Google Docs, печатать их имена в стандартный вывод,
тов Google позволяет загру жать документы и сохранять их как а затем выгру жать на сервер новый файл.
кана лы API данных Google. Кроме того, можно запросить спи­ Большинство служб Google (и Документы – не исключение) тре­
сок документов пользователя, а так же изу чать содержание суще­ буют авторизации. Для этих целей в GData предусмотрено три ме­
ствующего документа. тода: ClientLogin, OAuth и AuthSub. Первый из них наиболее прост
API данных web­альбомов Picasa дает пользователю возмож­ в реа лизации и может быть рекомендован в тех случаях, когда ва­
ность работать с альбомами Picasa из клиентской программы: ша программа может напрямую запросить имя учетной записи
получать список альбомов, комментариев и тэгов пользователя, и пароль у пользователя. Если это по каким­либо причинам неже­
а так же просматривать, редак тировать и уда лять содержимое су­ лательно (что часто имеет место в случае web­приложений), можно
ществующей записи. С их помощью легко, например, добавить прибегнуть к услугам посредника, который выполнит за вас иден­
свои общедоступные фотографии на собственный сайт и дать по­ тификацию посетителя и сообщит, тот ли он, за кого себя выдает.
сетителям возможность комментировать их, сохраняя коммента­ 01: <?php
рии в альбомах Picasa. 02: require_once 'Zend/Loader.php';
API данных YouTube предоставляет доступ прак тически ко все­ 03: Zend_Loader::loadClass('Zend_Gdata_Docs');
му функциона лу сервиса. С его помощью вы можете добавлять 04: Zend_Loader::loadClass('Zend_Gdata_Docs_Query');
видео, изменять избранное, мета данные комментарии и настрой­ 05: Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
ки, а так же осуществлять поиск роликов по за данным критериям 06: $login = 'user.name@gmail.com';
и многое другое. 07: $password = 'password';
08: $srv = Zend_Gdata_Docs::AUTH_SERVICE_NAME;
Google Docs из PHP5 09: try {
Работу с онлайн­сервисами Google при помощи Zend Gdata 1.8.3 10: $client = Zend_Gdata_ClientLogin::getHttpClient($login,
мы рассмотрим на примере Google Docs. Искушенный web­раз­ $password, $srv);
работчик, пожа луй, назовет наш пример чересчур простым – и, 11: }
Наш тестовый возможно, он будет прав. Однако излишняя функциональность 12: catch (Zend_Gdata_App_Exception $e) {
пользователь хра- (а так же проверка возникающих ошибок, совершенно необхо­ 13: echo “Ошибка: $e­>getMessage()\n”;
нит в Google Docs димая при разработке реального приложения) будет только ме­ 14: exit(1);
два файла�
15: }
В строках 2–5 мы подключаем библиотеку и загру жаем из нее
необходимые нам классы: Zend_Gdata_Docs (работа с документа­
ми Google), Zend_Gdata_Docs_Query (поиск по запросу) и Zend_
Gdata_ClientLogin (авторизация пользователя по первому методу).
Реквизиты за даются в строках 6 и 7; переменная $login должна
содержать полный e­mail адрес пользователя. Переменная $srv,
определяемая в строке 8, за дает имя службы Google, в которой
вы хотите авторизоваться. Здесь оно представлено символь­
ной константой Zend_Gdata_Docs::AUTH_SERVICE_NAME, кото­
рая (на момент написания статьи) просто равна строке ‘writely’
(если вы забыли, откуда ведет свою родословную Google Docs,
спросите у Википедии: ru.wikipedia.org/wiki/Google_Docs, и этот
набор букв обретет смысл). Статический метод getHttpClient(),
вызываемый в строке 10, возвращает объект Zend_Gdata_
HttpClient, который используется для доступа к данным Google
Docs. Он может выбрасывать ряд исключений, в том числе Zend_

Не хотите пропустить номер? Подпишитесь на www.linuxformat.ru/subscribe/!


60 Linux Format Июль 2009
GData Учебник

Gdata_App_AuthException (ошибка авторизации) или Zend_Gdata_ $query = new Zend_Gdata_Docs_Query();


App_CaptchaRequiredException (для завершения процесса автори­ $query­>setTitle($googledoc);
зации пользователь должен ввести текст, указанный на картинке, $query­>setTitleExact(“true”);
дабы подтвердить свою человеческую природу). Здесь мы не де­ try {
лаем разницы меж ду этими (и другими) исключительными ситуа­ $doc = $mydocuments­>getDocumentListEntry($query);
циями, а просто пишем не слишком информативное сообщение $docExists = true;
об ошибке и выходим из программы. } catch (Exception $e) {
Да лее, давайте попробуем получить список документов учет­ $docExists = false;
ной записи. Для этого нам потребуется создать главный объ­ }
ект программы: Zend_Gdata_Docs (обратите внимание, что его if ($docExists) {
конструк тор принимает в качестве параметра ссылку на объект echo “Уда ляю предыду щую версию доку мен та $doc­>title\n”;
HTTP­клиента, полученную ранее). Для тестирования программы $doc­>delete();
мы созда ли специального пользователя – список его документов }
и вывод скрипта можно видеть на рисунках 2 и 3: Объект Zend_Gdata_Docs_Query представляет собой запрос
$mydocuments = new Zend_Gdata_Docs($client); к службе Google Docs. Запросы – это просто специально сформи­
$myfeed = $mydocuments­>getDocumentListFeed(); рованные URL (наш, например, будет иметь вид http://docs.google.
echo “Список доку мен тов ак каун та:\n”; com/feeds/documents/private/full?title=test.txt&title­exact=true),
foreach ($myfeed­>entries as $entry) но для удобства работы с ними мы вновь применяем высоко­
{ echo “­­> $entry­>title\n”; уровневый API. Метод setTitle() за дает название документа, кото­
} рый мы ищем, а setTitleExact() указывает, что нас интересует толь­
Здесь все просто: объект со списком документов возвращается ко точное соответствие, а не совпа дение с подстрокой.
методом getDocumentListFeed(). Его элементы (то есть отдельные Удивительно, но в случае отсутствия требуемого документа
документы) доступны как $myfeed->entries; $entry->title возвра­ метод getDocumentListEntry(), выполняющий поиск, не возвращает
щает название документа. null или пустой объект Zend_Gdata_Docs_DocumentListEntry, а вы­
Последнее, что мы сделаем – загрузим новый документ на сер­ брасывает исключение. Это не очень удобно, поэтому мы исполь­
вер; результат выполнения этой операции можно видеть на рисун­ зуем специальную логическую переменную $docExists, чтобы уда­
ках 4 и 5. лить старую версию файла с сервера, если она уже существует.
$localname=“/tmp/test.txt”;
$googledoc=“test.txt”; Что дальше?
$newdoc = $mydocuments­>uploadFile($localname, $googledoc, Вот так, вкратце, выглядят Google Data API. Если вас заинтересо­
null, Zend_Gdata_Docs::DOCUMENTS_LIST_FEED_URI); ва ли технологии Google, советуем вам изучить сайт http://code.
echo “Загру жен доку мент: $newdoc­>title\n”; google.com/ – там на ходится, пожа луй, самое полное руководство
?> по GData. Его посещение будет полезно не только начинающим
Мы берем локальный файл /tmp/test�txt (предполагается, что «гуглокодерам», но и знатокам, поскольку продук ты и сервисы по­
он существует) и выгру жаем его на сервер под именем test�txt. Два искового гиганта развиваются очень быстрыми темпами и, соот­
оставшихся аргумента метода uploadFile() за дают mime­тип вы­ ветственно, регулярно обновляется и API. Так, пока мы писа ли эту
гру жаемого файла и URI службы, которая принимает его (кон­ статью, компания анонсирова ла сразу два интересных проек та:
станта Zend_Gdata_Docs::DOCUMENTS_LIST_FEED_URI или, что Webelements и Wave. Первый имеет непосредственное отношение
то же самое, http://docs.google.com/feeds/documents/private/full). ко GData – пройдя по ссылке http://www.google.com/webelements/,
В такой форме наша программа имеет одну неприятную осо­ пользователь может выбрать интересующий его сервис (под дер­
бенность: после выполнения ее N раз подряд вы обнару жите живаются: Ка лендарь, Карты, Google Talk, поиск в Web, лента ново­
в своих Документах Google N штук файлов test�txt. Если это не то, стей, новости YouTube, а так же презентации и таблицы Google Docs)
чего вы желаете, перед выгрузкой документа на сервер следует и получить готовый код для своего сайта, позволяющий встро­
проверить на личие старой версии и, при необходимости, уда лить ить сервис Google в виде плавающего фрейма. В рамках второго
ее. Это делает следующий код (его нужно разместить сразу после планируется разработать альтернативный транспорт для обмена
объявления переменных $localname и $googledoc): сообщениями, который (по замыслу компании) заменит элек трон­
ную почту и сервисы IM (ICQ и иже с ними).
Так что держите руку на пульсе, а мы поста­
раемся в этом вам помочь, регулярно пуб­
ликуя обзоры новых возможностей откры­
того ПО.

Результат выгрузки файлов с точки зрения Google Docs��� …и нашей программы�

Июль 2009 Linux Format 61


Сети Свяжем ваши Linux­ПК,
и пускай они вас обслуживают

Web-приложения:
Часть 7: Нейл Ботвик узнает, что с настроенным и запущенным web­сервером
Apache можно добраться до приложений из любой точки земного шара.

SquirrelMail 1.4.18

Установка Gallery на первый взгляд довольно долгая,


но выполнить ее несложно, потому что она состоит из нескольких
небольших шагов�

Кроме PHP, имеется еще один компонент, исполь зуемый


многими web­при ложениями – сервер баз данных MySQL. Вме­
сте эти элементы обра зу ют классическую платформу LAMP
(Linux, Apache, MySQL, PHP), ставшую стандартом для пре­
достав ления динамического содержимого. Вероятно, пакет ный

М
ы нача ли эту серию уроков (давным­давно, менед жер вашего дистрибу тива добавил PHP заодно с Apache,
в LXF113/114, если вы его пропустили) с установки но на всякий слу чай убеди тесь в этом, преж де чем двинуться
и настройки мощного web­сервера Apache. Но в теку­ дальше. Ну, а MySQL – это пакет типа «поставил и забыл»: дан­
щем состоянии эта служба может только раздавать статические ные в нем хранят раз личные при ложения, но ба зовая настройка
web­страницы или, максимум, выполнять какие­нибудь доморо­ выполняется при инстал ляции, а затем ка ж дый отдельный па­
щенные скрипты. Однако возможности Apache, особенно вместе кет выполняет собственные настройки с помощью установоч­
Наш с PHP, гораздо шире. ных скриптов.
эксперт Видите ли, мы еще не приспособили Apache для запуска Подготовив платформу LAMP, установим два прило­
Нейл Ботвик скриптов, встраиваемых в web­страницы. Скрипты можно писать жения. Первое – SquirrelMail, популярный почтовый web­кли­
У Нейла Ботвика на разных языках, но PHP – один из самых популярных. Это зна­ ент, а второе – Gallery, онлайн­фотога лерея; возможностей
по компьютеру чит, что найдутся готовые сценарии для чего угодно, от простень­ у нее столько, что и личной жизни не хватит все их перепробо­
в каждой комнате. ких встроенных функций до полноценных web­приложений. Ес ли вать. Это типичные web­приложения, поэтому методы, исполь­
Но по соображени­
ям безопасности
вы не знакомы с данной концепцией, то по своим возможностям зуемые при работе с ними, справед ливы и для многих других
он никогда не ска­ они похожи на настольные приложения, только доступ к ним осу­ web­приложений.
жет вам, где цент­ ществляется через браузер. А зачем нам браузер вместо обыч­
ральный сервер. ной программы? Онлайн-фотогалерея
Доступ к данным можно получить из различных мест. Фотога лерей в Интернете множество, ну и зачем создавать свою?
С одной программой могут одновременно работать несколько Чтобы хранить все в одном домене.
пользователей. Чтобы хранить большие изобра жения, без ограничений на раз­
Программы выполняются в браузере и не зависят от операцион­ мер файлов.
ной системы клиента. Чтобы показывать фотографии без навязанной рек ламы – или
Для их работы не нужно устанавливать на компьютер никакое уж с рек ламой, за которую платят вам.
ПО, поэтому их можно запускать на общедоступной машине. А потому, что вам не слабо это сделать.

Месяц назад Мы влеза ли в свой компьютер отовсюду благодаря SSH и VNC.


62 Linux Format Июль 2009
Сети Учебник

Рулим контентом
Как мы уже бегло упомянули, Gallery – это онлайн­фото­
га лерея с открытым исходным кодом, имеющая модульную ар­ PHP
хитек туру, что упрощает добавление нового функциона ла. Gallery
написана на PHP, и можно установить ее прямо на web­сервер; Большинство web­приложений написано в ката логе /etc/apache дол жен быть похож
а если сделать это с помощью менед жера пакетов, вы полу чи­ на PHP, и Apache обычно справляется на этот:
те дополнительное преимущество в виде автоматических обнов­ с PHP­страницами и без дополнитель­ <IfModule mod_php5.c>
лений. Если так поступить нельзя (например, в качестве серве­ ных настроек. Однако в некоторых дист­ AddType application/x­httpd­php .php
рибу тивах PHP разбит на отдельные .phtml .php3
ра используется компьютер в сети, а не ваш собственный, или
пакеты – например, в Debian нужно устано­ AddType
нужна более свежая версия, чем та, что в дистрибу тиве), то возь­
вить libapache-mod-php5. application/x­httpd­php­source .phps
мите последний релиз с сайта http://gallery.menalto.com. На мо­ Для определения под ходящих паке­ </IfModule>
мент написания статьи это 2.3, хотя для любителей приключений тов и их статуса наберите «apache php» Может так же потребоваться изменить
есть и бета­релиз версии 3.0. Состав доступных пакетов разли­ в строке поиска менед жера пакетов. дирек тиву DirectoryIndex в настройках
чается. Как правило, достаточно версии Typical (обычная) – пакет Вы долж ны понимать, что ес ли PHP Apache. Она перечисляет файлы, которые
содержит ядро программы и наиболее популярные темы и моду­ в Apache сконфигу рирован непра­ попытается отобразить сервер, полу чив
ли. Full (полная версия) включает все темы и модули, и это, навер­ вильно, то могут возникнуть проблемы, запрос на обработку ката лога. Ка ж дый
ное, перебор для новичков, если только вы не маньяк­настрой­ хотя установка из пакетного менед жера из них пробуется по порядку, пока не будет
щик. В версии Minimal есть только базовые компоненты, и она долж на позаботиться о соответствующих найден под ходящий – обычно это нечто
настройках. Ес ли при попытке открыть вроде
предназначена для тех, кто хочет установить остальное выбороч­
PHP­страницу Apache пока зывает ее код, DirectoryIndex index.php index.html
но. Впрочем, с этим лучше не связываться, пока вы не наберетесь
измените параметры. Один из файлов возможно, и с другими вариантами.
опыта и не будете точно знать, чего хотите. То же касается и па­
кета Developer.
Ваш выбор гвоздями не прибит, и позже можно добавить mysql gallery2 ­uroot ­p ­e “GRANT ALL ON gallery2.*
и тем, и модулей. Так же можно выбрать меж ду сугубо англий­ To username@localhost IDENTIFIED BY ‘password’”
ской и многоязычной версией. Английским, слава богу, у нас Обе команды запросят у вас пароль, который был за дан для су­
не мудрено блеснуть, но мы все­таки российский LXF – так что перпользователя root при установке MySQL; он не обязан совпа­
возьмем многоязычный пакет версии Typical: gallery-2�3-typical� дать с паролем root для входа в систему. Если база данных бы­
tar�gz. ла установлена без пароля (не очень хорошая идея), уберите ключ
­p. Альтернатива – за дать пароль root командой
Настройка MySQL mysql ­u root ­e “set password = PASSWORD(‘mynew password’)”
Информацию о картинках Gallery хранит в базе данных, и MySQL – Во второй команде из нашего исходного набора создаваемому
лучший выбор. Если вы устанавлива ли Gallery через менед жер па­ пользователю MySQL, который будет применяться Gallery для со­
кетов, он должен был уже настроить базу данных. Если нет, вы­ единения с базой данных, назначаются имя и пароль. Пользова­
полните команды тели MySQL не имеют ничего общего с пользователями на вашем
mysqladmin ­uroot ­p create gallery2 компьютере. Если у вас уда ленный сервер, то имя пользователя
и пароль вам сообщат. Либо вы можете создать базу данных сами
и установить права доступа с помощью phpMyAdmin, но такое уже
за рамками нашего урока.

Запросы к каталогу
Теперь созда дим ката лог, где будут храниться фотографии;
он не должен на ходиться в корневом ката логе web­сервера. В пер­
вой статье этой серии мы решили использовать в качестве корнево­
го ката лога (DocumentRoot) Apache дирек торию /var/www/[имя_
хоста]/htdocs. Если вы последова ли этому примеру, создайте
рядом ката лог для данных:
mkdir /var/www/localhost/gallery/g2data
chmod 777 /var/www/localhost/gallery/g2data
Таким образом, к фотографиям нельзя будет обратиться напря­
мую по URL: это нарушило бы требования безопасности Gallery.
Распакуйте скачанный архив и скопируйте полу чивший­
ся ката лог gallery2 в ката лог htdocs web­сервера. Покон­
Установив Gallery, вы с необыкновенной легкостью поделитесь чив с подготовительными шагами по настройке базы данных
воспоминаниями с друзьями� и ката логов, запустите установку Gallery, открыв в браузере ад­

Июль 2009 Linux Format 63


Учебник Сети

и имя (остальные настройки можно не трогать, если вам не тер­


пится), затем кликните по ссылке Add Item [Добавить фотогра­
фию]. Здесь можно столкнуться с парой ограничений: может поя­
виться предупреж дение о невозможности создания миниатюр,
или что максимальный размер загру жаемого файла – 2 МБ. Чтобы
исправить первое, кликните по ссылке Site Admin [Администри­
рование сайта] и затем выберите Plugins [Модули]. Для создания
миниатюр из фотографий Gallery использует стороннюю утилиту,
и лучший выбор – ImageMagick. Кликните на ссылке Install [Уста­
новить], чтобы она заработа ла (это не совсем точное название: па­
кет­то уже установлен, просто не ак тивирован).
Максимальный размер загру жаемого файла – это настрой­
ка PHP, и, таким образом, исправить ситуацию можно по­разно­
му. Если вы передаете файл через Интернет на уда ленный сер­
вер, то, наверное, лучше изменить размер изобра жения до его
выгрузки. Если сервер локальный, просто увеличьте максималь­
ный размер файла: найдите файл php�ini где­то в /etc (обыч­
но в /etc/php/apache/) и измените параметр upload_max_filesize
на более под ходящее значение, ска жем, 5 МБ. После этого потре­
буется перезапустить Apache. Есть и третий вариант: выбрать дру­
гой метод загрузки. Это может быть особенно кстати, если у вас
много фотографий.
Если вы включили модуль Archive Upload [Загрузка архива],
то сможете загру жать zip­архив с изобра жениями вместо одной
Пусть SqurrelMail
рес http://ваш.хост/gallery2/install. Вы пройдете через несколько картинки. Выберите zip­файл, как если бы это была одна фотогра­
проверит текущую
конфигурацию страниц с настройками, на ка ж дой из которых будет собственная фия, Gallery распакует его и добавит содержимое в текущий аль­
после запуска справка и возможность прервать установку. Главное решение, ко­ бом. Если zip­файл содержит ката логи, для ка ж дого из них будет
скрипта настройки� торое нужно принять – это выбор меж ду стандартной и много­ создано по альбому.
сайтовой установкой. В последнем слу чае на один сервер мож­
но установить несколько экземпляров Gallery, что удобно, если Загрузка из локальных каталогов
нужно полу чить несколько независимых га лерей. Это так же от­ Ес ли у вас есть прямой доступ к серверу, то проще восполь­
лично под ходит для создания многопользовательской системы, зоваться модулем для загрузки снимков из локально­
поскольку в одной Gallery может быть несколько отдельных аль­ го ката лога. Он не входит в нашу версию Typical, поэто­
бомов с собственными правами доступа. Сейчас мы воспользуем­ му зайдите в Admin > Plugins [Администрирование > Модули]
ся стандартной установкой. и выберите вкладку Get More Plugins [Дополнительно]. Сле­
Дойдя до страницы с настройками базы данных, введите имя дуя подсказкам, загру зите модуль Add Item (и любые дру гие
пользователя и пароль, за данные вами ранее. Не под давайтесь модули, которые за хотите) в разделе Import [Импорт]. Теперь
искушению отделаться пользователем root и его паролем, да же пройдите по ссылке Web/Server [Web/Сервер] в нижней час­
если установщик пред лагает их по умолчанию, потому что у этого ти меню Admin и ука жите ката лог, предна значенный для вы­
Скорая пользователя есть права на изменение всех таблиц. Создание от­ грузки. Все его содержимое будет добав лено, но он должен на­
помощь
дельного пользователя – не только хорошая привычка, но и ме­ ходиться вне корневого ката лога сервера; например, неплохой
Не пытайтесь ра, позволяющая ограничить возможный ущерб в будущем, если выбор – /var/www/localhost/gallery2/uploads.
импортировать в Gallery будут найдены уязвимости. Скопируйте фотографии в этот ката лог командой scp, если они
все фотографии Пользователь­администратор, имя и пароль которого у вас на ходятся на другом компьютере. Кликнув по ссылке Add Items
сразу: вдруг вам
так же запросят, отличается от пользователя ба зы данных, имя в своем альбоме, вы увидите несколько новых закла док. На за­
за хочется изме­
нить настройки? и пароль которого мы только что ввели. В Gallery есть учетные кладке From Local Server [С локального сервера] ука жите ката лог
Снача ла добавьте записи (с паролями), определяющие, кому что разрешено де­ выгрузки, на жмите Find Files [Найти файлы] и отметьте файлы,
пару штук и по­ лать в ка ж дом альбоме. Администратор может делать все, и, которые намерены загрузить.
смотрите, как они конечно, будет лучше использовать для него менее очевид­
выглядят.
ное имя, чем «admin» (по умолчанию). Завершив эту скучную
часть, выбирайте модули для установки. Ес ли места на дис­ Другие языки
ке хватает, можно добавить их все. (А ес ли места ма ло, то куда
вы денете фотографии?) Модули и подключаются, и отключают­ Хотя многие web­при ложения написаны на PHP, это да леко
ся в административной панели Gallery, поэтому в из лишках нет не единственный язык. PHP был специально написан для
ничего страшного: наоборот, с ними будет немного проще экс­ встраивания в web­страницы, и это естественный выбор для
периментировать. Можно ак тивировать все установ ленные мо­ решения подобных за дач; но и у дру гих языков есть свои пре­
дули, но ес ли вы инсталлирова ли все подряд, то лучше ак тиви­ иму щества. На Perl писа ли web­скрипты еще до того, как поя­
ровать их по мере необходимости. Ес ли Gallery будет доступна вился PHP, и пишут до сих пор. Ruby, особенно с каркасом Ruby
через Интернет, почитайте ру ководство по безопасности и толь­ on Rails, так же популярен у некоторых разработ чиков. Дру гие
предпочитают Python, возмож но, с каркасом Django (LXF105–
ко потом завершите установку.
108). Во многом выбор языка зависит от предпочтений разра­

Добавим фотографии бот чика или разработ чиков, потому что для конечного поль зо­
вате ля разница неве лика. Впрочем, популярность PHP мож но
Пора загру жать фотографии. Можно сделать это с ходу, но, на­ объяснить и простотой, с которой он приспосабливается под
верное, лучше снача ла раскидать снимки по альбомам. Для этого ваши ну ж ды.
кликните по ссылке Add Album [Добавить альбом] и за дайте путь

64 Linux Format Июль 2009


Сети Учебник

Вам явно ни к чему ситуация, когда весь канал уходит на за­


грузку картинок, поэтому кликните по ссылке Edit Album [Редак­
тировать альбом] и установите один или несколько целевых
размеров. Это размер изобра жения, отправляемого в ответ на за­
прос загрузки. Gallery изменит размер изобра жений по запросу
и закэширует новые версии для увеличения производительности
в дальнейшем. В секции Maintenance [Сопровож дение] области
Admin есть функция моментального создания всех миниатюр
и изобра жений с измененным размером, что опять же экономит
вам несколько драгоценных секунд.
На самом деле мы здесь лишь поверхностно коснулись воз­
можностей Gallery. Следующей гаванью должна стать секция
Users, где можно определять пользователей или группы и управ­
лять доступом. Будьте поосторожнее с правами гостевых пользо­
вателей, если Gallery будет доступна через Интернет.
Затем одним глазком загляните в раздел Modules. Там масса
интересных опций, с которыми можно поиграть, особенно если
вы установили полный архив со всеми доступными модулями.

Ваша почта в сети


В первых двух частях этой серии мы настроили web­сервер и поч­
товый сервер IMAP, а теперь можем объединить их с помощью
почтового приложения. Вариантов полно; большинство написано
на PHP, но есть и на других языках, например, на Perl. Один из са­
мых распространенных почтовиков на PHP – SquirrelMail.
Как и все web­приложения, SquirrelMail можно установить с по­
мощью менед жера пакетов, если у вас есть доступ с правами root, Вся моя почта без почтового клиента в пределах видимости� Установка SquirrelMail
или из архива с сайта http://www.squirrelmail.org. Текущая версия – означает, что письма можно читать откуда угодно через Интернет�
1.4.18, поэтому скачайте с сайта архив squirrelmail-1�4�18�tar�gz. Па­
кет содержит подробные инструкции по установке, но для нача ла ютере, что и SquirrelMail, оставьте их в виде localhost, в противном
нужно создать два ката лога за пределами DocumentRoot. Их вла­ случае за дайте их согласно настройкам сети. Если вы не запусти­
дельцами должны быть поль­ ли собственный SMTP­сервер
зователь и группа, от имени
которых запущен сервер, по­
«Мы уже настроили (пока мы об этом не говори­
ли), возможно, придется ука­
этому установите пакет сле­
дующими командами, изменив
серверы почты и web; зать здесь сервер провайде­
ра. В секции General Options
пу ти в соответствии с вашей теперь соединим их.» [Общие настройки] приведите
установкой: настройки ката логов данных
mkdir ­p /var/www/localhost/mail/{data,attachments} и вложений в соответствие с созданными вами. Остальные пара­
chown apache: /var/www/localhost/mail/{data,attachments} метры пока оставьте как есть, сохраните свои настройки и вый­
chmod 730 /var/www/localhost/mail/attachments дите из скрипта. Затем откройте в браузере адрес http://ваш.
Теперь распакуйте архив SquirrelMail командами хост/mail/src/configtest.php. Так вы проверите, что настройки рабо­
tar xf squirrelmail­1.4.18.tar.gz ­C /var/www/localhost/htdocs тают; если есть ошибки, то запустите config/�conf�pl еще раз, что­
ln ­s squirrelmail­1.4.18 /var/www/localhost/htdocs/mail бы исправить их, а в случае проблем с PHP отредак тируйте файл
Вторая команда добавит дирек торию mail как символьную php�ini (configtest�php выдаст ошибку, если в php�ini включена лю­
ссылку на ката лог squirrelmail-x�y�z. Благодаря этому можно уста­ бая из опций magic_quotes).
новить более позднюю версию SquirrelMail вместе с более ранней
и переключить символьную ссылку, когда вы убедитесь, что новая Готово к работе
версия работает правильно. Тем самым уменьшается время про­ Теперь смело входите, кликнув по ссылке внизу тестовой стра­
стоя для пользователей. Другой вариант – создать под ходящий ницы или открыв в брау зере адрес http://ваш.хост/mail. Появит­
ката лог и перенести содержимое squirrelmail-x�y�z туда. Если этот ся страница входа в систему; введите имя пользователя и пароль
сервер предназначен только для web­почты, файлы можно по­ для почтового ящика. Ссылка Options [Параметры] в верхней
местить прямо в htdocs. Теперь в оболочке, а не в браузере нужно страницы позволяет изменять настройки пока за почты. Это оп­
запустить скрипт настройки. Под пользователем root выполните ции для отдельных пользователей; а ес ли вам нужны глобаль­
команды ные изменения, запустите скрипт config/conf�pl еще раз.
cd /var/www/localhost/htdocs/mail Теперь у нас есть web­браузер, умеющий показывать ваши
config/conf.pl фотографии и работать с почтой. Вы так же должны были полу­
На жмите D и выберите свой IMAP­сервер (у тех, кто следо­ чить основные навыки установки и настройки других web­при­
вал нашим предыдущим урокам, это Dovecot). Многие из этих на­ ложений, так что можете спокойно ударяться в безумные экспе­
строек можно оставить в покое, но нужно зайти в Server Settings рименты. Через месяц мы вставим последний кусочек мозаики
[Настройки сервера] и убедиться, что параметры серверов SMTP с почтой, настроив SMTP­сервер, способный фильтровать спам
и IMAP указаны верно. Если оба сервера работают на том же компь­ и вирусы.

Через месяц Установим SMTP-сервер для получения и сканирования почты.


Июль 2009 Linux Format 65
Python Заставим Web доставлять
нужное содержимое вам на блюдечке

Python: Сеть на
Часть 1: Недовольны, что контент раскидан где попало и как попало?
Ник Вейч приступает к объяснению, как подчинить сеть вашим целям.

Получить идентификатор вашей местности можно прямо


у онлайн-службы Yahoo, просто скопировав открытый ею URL�

цией – ну да, можно потратить время на распу тывание данных или


работы API, но зачем, если есть кому предоставить и данные, и ру­
ководство по их использованию?
Пошарив там и сям, мы решили, что нас устраивает служба по­
годы Yahoo. Она проста и обла дает достаточной документацией,
чтобы начать без особых усилий. Еще чу ток порывшись, мы об­
нару жили http://develoPer.yahoo.com/weather, где предоставлено
множество дета лей и пара примеров использования службы. Оч­

Ч
то бы вам ни за хотелось узнать, оно, вероятно, найдется ко в пользу Yahoo!
в Сети. Это зага дочное облако – иногда белое и пушистое, Метод Yahoo состоит в добавлении идентификатора местности
а иногда и полное грязных инсинуаций – содержит зна­ в конец URL. В ответ служба генерирует RSS­ленту данных о пого­
ния любого сорта, хотя до них на до еще докопаться. Готовы поспо­ де в указанном регионе. Это удобно во многих отношениях, по­
рить, что отыщется да же точная дата крещения «Наболиона Буо­ скольку означает, что да же код писать не придется. Идентифика­
напарте», если порыться старательно. тор местности найти легко – согласно документации, достаточно
Наш Но не вся информация в сети статична, соединена разум­ пройти на главную страницу Yahoo! Weather, ввести город, и URL
эксперт ным образом или вообще настолько хороша, насколько долж­ ваш (иногда, правда, при этом выскакивает название не города,
Ник Вейч но быть. Вот почему одним из заметных шагов пост­web 2.0 явля­ а ближайшей к нему метеостанции).
отныне не та­ ется мэшап [мэшап, mashup – технология построения web­сайта «St. Petersburg» даст нам http://weather.yahoo.com/forecast/
бельный номер с объединением возможностей группы сторонних web­прило­ RSXX0091.html – значит, код нашей местности RSXX0091. Теперь
(00147) – он воль­
жений, см. http://ru.wikipedia.org/wiki/Мэшап_(веб), – прим. пер.] – у нас есть информация о местоположении. Инструкция так же го­
ная птица! Веду­
щий свободный преобразование web­содержимого в новые удивительные фор­ ворит, что можно добавить параметр для выбора температуры по
Linux­журна лист, мы. Добро пожа ловать в мир панк­данных. Фаренгейту или по Цельсию, и мы добавили к URL опцию по Цель­
отличный рассказ­ сию u=c. Теперь протестируем URL, чтобы увидеть как он работает
чик и сторонник
Python, он так же
Куда дует ветер (о написании кода речи все еще нет).
Для нача ла нашего пу тешествия сделаем что­нибудь попро­ Приличный браузер, вроде Firefox, способен отобразить
более чем зна­
ком с изготовле­ ще, типа изменения фона рабочего стола в зависимости от по­ RSS­ленту в удобной форме – на до всего лишь ввести ее URL:
нием всяких мулек годы. Приложения и вид жеты, предоставляющие такой сервис, http://weather.yahooapis.com/forecastrss?p=RSXX0091&u=c.
на базе скриптов. уже имеются, а значит, данные должно быть легко добыть в Ин­
тернете. Быстрый поиск по словосочетанию «weather API data» Обработчик ленты
непременно выдаст множество ссылок. Наши критерии: API долж­ Теперь, зная, что нужная нам информация доступна в виде RSS­
ны быть понятны, охватывать как можно большую часть мира ленты, как заполучить ее в скрипт Python и декодировать? Ско­
и иметь приличную документацию. Под них подпа дает лишь па­ пировав указанный выше URL в Firefox и выбрав в меню Вид > Ис­
ра из пред ложенных источников, в основном в связи с документа­ ходный код, вы увидите кучу информации плюс всякие заголовки

66 Linux Format Июль 2009


Python Учебник

ваш вкус
и прочее. Можно создать обработчик, который возьмет эти сырые
данные и выудит из них соответствующие куски – но, как обычно Регулярные выражения
и бывает, кто­то его уже создал. Для Python имеется библиотеч­
ный модуль под названием Feedparser, создающий объект Python Регулярные выра жения заполонили все При создании шаблона лучше всего
из RSS­потока. Проще всего установить его через менед жер паке­ вокруг. Они бывают и простенькими, и дья­ воспользоваться инструментом, который
тов: другие способы ма лость утомительны. вольски сложными. Вкратце, регулярное поможет вам проверить его корректность –
После установки Feedparser наконец­то настает время кодиро­ выра жение – это группа знаков, опреде­ да же один неверный символ чреват ката­
вания. Снача ла запустите Python из командной строки, чтобы по­ ляющая некую конфигурацию символов строфой! Среди лучших подобных инстру­
нимать, с чем мы имеем дело. Вы ока жетесь в интерак тивной обо­ в строке. Имеются так же специальные ментов – онлайн­построитель регулярных
знаки, типа местозаполнителей, которые выра жений http://gskInner.com/RegExr/.
лочке Python, где мы и введем:
подразумевают любой символ. Кроме того, Вставьте в него пример текста и про­
>>> import feedparser
есть еще списки, группы и да же операторы тестируйте свои навыки создания шабло­
>>> url = “http://weather.yahooapis. для объединения соответствий – можно, нов. Не помешает и обратиться к докумен­
com/forecastrss?p=RSXX0091&u=c” например, создать регулярное выра жение, тации: http://docs.python.org/library/re.html.
>>> data = feedparser.parse(url) полностью описывающее все базы для
>>> data поиска.
Результатом действия последней строки будет выдача ве­
реницы символов, которая представляет собой ленту. К счастью,
хотя она и похожа на набор случайных данных, пронизанных entries
частоколом скобок, на деле это хорошо струк турированный объ­ Это цикл, пробегающий по всем объек там внутри data. Одно
ект. Чтобы убедиться в этом, попробуйте ввести в оболочке Python из замечательных свойств Python – легкость работы с объек­
следующее: тами, и да же возможность заставить их рассказать о себе. На­
>>>for x in data: пример, пусть мы хотим точно знать, с каким типом объек тов
... print x работаем:
... >>>type(data)
feed <class 'feedparser.FeedParserDict'>
status Ну, отчасти нам это помогло. Если вы уже сталкива лись
version с Python, то, вероятно, слыша ли про объек ты­словари (ассоциа­
encoding тивные массивы) – они просто хранят данные в виде пар ключ = Скорая
помощь
bozo значение. Объек ты, список которых мы только что выводили, яв­
headers ляются в данном слу чае ключами. Обратившись к документации Python требовате­
etag Feedparser, мы получим несколько более внятное представление, лен к синтаксису.
href что хранят такие ключи, поскольку они стандартны для объек­ Он требует вы­
делять отсту­
namespaces тов Feedparser. Из них для нас ва жен ключ entries. Он хранит объ­
пами блоки
ект­список отдельных записей RSS­ленты, которые и составляют многострочных
ее реальное содержимое. выра жений, функ­
Списки Python нумеруются с индекса 0, поэтому, чтобы со­ ций и условных
операторов. Ко­
слаться на объект первой записи, следует использовать:
личество пробе­
>>> data.entries[0] лов в отступе роли
{'updated': u'Thu, 28 May 2009 2:00 am MSD', 'yweather_ не играет: главное,
condition': u'', 'updated_parsed': ... чтобы оно сохра­
>>> for x in data.entries[0] нялось внутри
блока.
... print x
...
updated
yweather_condition
updated_parsed
links
title
Убедитесь, что передаваемый URL выдает RSS-ленту, summary_detail
через Firefox, который ее тут же отобразит� geo_lat

Пропустили номер? Узнайте на с. 103, как получить его прямо сейчас.


Июль 2009 Linux Format 67
Учебник Python

Кого же не согреет милый снегопад на SVG-обоях рабочего Сберегите свой рассудок — для написания кода Python
стола? Они могут быть вашими� пользуйтесь IDE; это сильно упрощает обнаружение ошибок�

summary ратитесь ко врезке Регулярные выра жения на стр. 67 или ста­


guidislink тье из LXF80: http://wiki.linuxformat.ru/index.php/LXF80:Регуляр­
title_detail ные_выра жения.
link Выра жением мы хотим охватить все, что обрамлено знаками
geo_long «больше» и «меньше», используемыми для обозначения HTML­
yweather_forecast тэгов. Это очень легко; выра жение будет выглядеть как <, за ко­
id торым следует шаблон любого символа, повторенный любое ко­
И вновь мы имеем объект­словарь с парами ключей личество раз, то есть �+? и в конце >. +? – то же, что и +, но это
и значений. На сей раз они определяются самой XML­струк­ «ленивое» соответствие: оно отвечает наикратчайшей корректной
турой ленты, поэтому для данного объек та нет модуля с голу­ строке. А нам того и на до – все, что на ходится меж ду <>; других
бой каемочкой; зато его элементы документированы на сайте вариантов нет.
Yahoo. После недолгого изучения становится ясно, что полезна >>>summary = data.entries[0].summary
нам будет сводка (summary) текущих погодных условий, включая >>>import re
температуру. >>>pattern = '<.+?>'
На лицо небольшая проблема: необходимые данные отнюдь >>>temp = re.sub(pattern,'',summary)
не сосредоточены в одном поле нам на ра дость. Эта часть ленты – >>>temp
HTML­код для отобра жения на web­странице, а нам ну жен толь­ u'\nCurrent Conditions:\nLight Rain Shower, 12 C\nForecast:\
ко текст. nThu – Partly Cloudy. High: 25 Low:12\nFri – Mostly Sunny. High:
19 Low:
Регулярные выражения 9\n\nFull Forecast at Yahoo! Weather\n(provided by The Weather
От регулярных выра жений (так же известных как «регекспы» Channel)’
[regex]) никуда не денешься – они будут все чаще встречаться Теперь текст очищен от тэгов HTML; но в нем оста лись пере­
на вашем пу ти переустройства мира. Регулярные выра жения – это воды строк. Вообще­то есть стандартный модуль для преобра­
просто способ выполнения поиска и замены, и хотя они сма хива­ зования такой строки в список, но у нас уже загру жен модуль re,
ют на криптограммы, разобраться в них не так уж трудно. В дан­ и мы вполне можем им обойтись. Для поиска символов новой
ном случае нам на до всего лишь избавиться от нудных HTML­ строки на до объяснить Python, что мы хотим использовать чистое
тэгов. Мы, вероятно, и без того извлек ли бы нужные данные, (raw) значение строки – поместив перед ней символ r.
но подобный опыт пригодится нам в будущем, если мы за хотим >>> temp = re.split(r'\n',temp)
приспособить наш скрипт к работе с различными источниками. >>> temp
Мы импортируем Python­модуль re (он включен в качестве [u'', u'Current Conditions:', u'Light Rain Shower, 12 C', u'Forecast:',
одной из стандартных библиотек, так что ничего загру жать u'Thu – Partly Cloudy. High: 25 Low: 12', u'Fri – Mostly
и устанавливать не придется) и привлечем его к работе с этим Sunny. High:
текстом. На нашем уроке нет места на детальное объяснение 19 Low: 9', u'', u'Full Forecast at Yahoo! Weather', u'(provided by
работы регулярных выра жений, а за краткими сведениями об­ The Weather Channel)']
>>>temp[2]
u'Light Rain Shower, 12 C'
Почему Python? Как видите, мы предположили, что необходимую строку со­
держит третий элемент полученного списка. Чтобы добыть из не­
го температуру, воспользуемся другим регулярным выра жением,
Можно, естественно, писать скрипты и прило­ прекрасными возможностями для работы
отбирающим из строки исключительно цифры.
жения для обработки web­данных на любом с текстом (которым по большей части и явля­
другом языке; так почему же мы выбрали ются наши данные), он кросс­платформен­ >>>temp = re.findall(u'[0­9]+',temp[2])[0]
Python, а не C#, например? На то есть веские ный и снабжен бездной полезных библиотек >>>temp
причины. Python – язык простой и понятный, для web­служб и протоколов. Используя u'12'
код на нем легко пишется и (что, вероятно, Python и пару библиотек, можно мигом соз­ >>>>>> temp = int(temp)
еще важнее) легко читается. Он обладает дать рабочее приложение или скрипт. >>> temp
12

68 Linux Format Июль 2009


Python Учебник

Финальный шаг – употребить встроенное в Python преобразо­


вание типов, превратив строку со значением температуры в целое Форматы web-данных
число: числа проще сравнивать. (В реальном скрипте мы можем,
эффек тивности ра ди, объединить некоторые из приведенных эта­ Мы осозна ли, что есть масса web­приложений, способных дос­
пов, но это не даст большого выигрыша для приложения, а яс­ тавить нам данные. Но вы ведь не жда ли, что все будет просто,
ность пошаговой записи будет утрачена.) Оста лось только соз­ не так ли? Протоколов или способов предоставления данных
дать то, что мы посулили в нача ле урока: обои рабочего стола, нема ло, и некоторые сайты (например, Flickr) да же предусмат­
ривают более одного варианта. Еще одно неудобство – разнобой
меняющиеся в зависимости от погоды.
в их использовании на сайтах. В нашей серии уроков мы посте­

Перемена погоды пенно все это рассмотрим.

Как переделать обои? А для этого в Python есть вызов внешних ко­
манд. В Gnome можно изменить заставку командой gconftool-2, >>> if (temp <0):
устанавливающей переменную окру жения, в которой хранится раз­ ... change_wallpaper('/home/evilnick/weather/freezing.svg')
мещение и имя файла обоев. Оно бы и достаточно. Но поскольку ... elif (temp<9):
у нас возможны варианты, лучше оформить это в виде функции. ... change_wallpaper('/home/evilnick/weather/snow.svg')
Несложная функция не особо напряжет вам мозг. Python обла­ ... elif (temp<16):
дает простой конструкцией: описание функции и ее параметров, ... change_wallpaper('/home/evilnick/weather/mild.svg')
за которым следует текст с отступом. Ее да же можно создать в ин­ ... elif (temp<26):
терак тивной оболочке: ... change_wallpaper('/home/evilnick/weather/warm.svg')
>>> def change_wallpaper(filename): ... else:
... cmd = string.join([“gconftool­2 ­s ... change_wallpaper('/home/evilnick/weather/hot.svg')
/desktop/gnome/background/picture_filename ­t string ...
\””,filename,”\””],'') Объединив все это в один скрипт, мы получим нечто подобное
... os.system(cmd) следующему (остается только разжиться изобра жениями):
... #!/usr/bin/python
>>> change_wallpaper('plop.jpg') # ­*­ coding: utf­8 ­*­
Первая строка функции создает команду оболочки, а вызов import feedparser,re,os,string
os�system выполняет ее. Вызов функции меняет переменную ок­ def change_wallpaper(filename):
ру жения, и загру жается новое изобра жение. Подставленное нами cmd = string.join([“gconftool­2 ­s /desktop/gnome/
имя файла filename – просто параметр; в реальности, хорошо бы background/picture_filename ­t string \””,filename,”\””],'')
хранить ваши изобра жения где­нибудь внутри вашего домашнего os.system(cmd)
ката лога, допустим, в подката логе с именем weather, и называть url = “http://weather.yahooapis.com/
их согласно погодным условиям. forecastrss?p=RSXX0091&u=c”
Сейчас Gnome допускает в качестве обоев SVG­изобра жения, data = feedparser.parse(url)
и вы можете создать этакую изысканную масштабируемую карти­ # extract the summary from the data
ну для вашего рабочего стола. summary = data.entries[0].summary
Не знаем, как по­вашему, но мы думаем, что здесь должно temp = re.split(r'\n',re.sub('<.+?>','',summary))
быть пять изобра жений: freezing [мороз], cold [холод], mild [сред­ temp = int(re.findall('[0­9]+',temp[2])[0])
не], warmish [тепло] и hot [жарко]. Диапазоны температур выби­ if (temp <0):
райте в соответствии с вашим климатом, а мы присвоим следую­ change_wallpaper('/home/evilnick/weather/freezing.svg')
щие: ниже 0°C – мороз, 0–8 – холод, 9–15 – средне, 16–25 – тепло, elif (temp<9):
выше – жарко. В некоторых языках для реа лизации проверки пре­ change_wallpaper('/home/evilnick/weather/snow.svg')
дусмотрена конструкция case/switch. В Python ее нет, и мы нагоро­ elif (temp<16):
дим огород из конструкций if/elif/else, вот так: change_wallpaper('/home/evilnick/weather/mild.svg')
elif (temp<26):
change_wallpaper('/home/evilnick/weather/warm.svg')
else:
change_wallpaper('/home/evilnick/weather/hot.svg')
Конечно, да же при буйном вообра жении это не полноценное
приложение, а небольшой сценарий, но его вполне можно взять
за основу. На данном уроке мы взяли данные из сети и автома­
тически совместили их с контекстом рабочего стола. Мы увиде­
ли, как просто выглядят RSS­ленты и как работать с объек тами
в Python; постигли ужасы регулярных выра жений; и рассмотрели
совершение из Python системных вызовов для выполнения вне­
шних команд. Вот так мы и можем, исследуя сервисы всемирной
пау тины, брать что угодно и ставить себе на службу.
Скрипт легко расширить (например, позволив пользователям
выбирать местоположение) или преобразовать его в апплет. По­
камест он завершился бы с ошибкой при отсутствии подключения
Регулярные выражения не всякому по плечу; нам поможет к Интернету, что не есть хорошо, но на следующих уроках мы изу­
служба http://gskinner�com/RegExr/�� чим, как с этим справиться. Оставайтесь с нами!

Через месяц Создайте себе чат-бота, чтобы разыграть друзей.


Июль 2009 Linux Format 69
Виртуальные машины Автоматизируем ру­
тинные операции через сценарии на Python

VirtualBox: Python
Графический интерфейс и диалоговые окна – далеко не единственный способ
взаимодействия с виртуальными машинами VirtualBox. Николай Иготти покажет,
как делать это из программ на Python.

В
широком спек тре доступных решений для виртуа лизации ница в инициа лизационном коде (vboxshell�py), который отличается
продукт VirtualBox (www.virtualbox.org) от Sun Microsystems для COM, XPCOM и режима web­сервиса (SOAP). Если вы работаете
занимает достойное место. Это высокопроизводительное в Linux или Solaris, перед использованием необходимо установить
решение с открытым кодом, работающее на Linux, Windows, Mac переменную VBOX_PROGRAM_PATH следующим образом:
OS X, Solaris и FreeBSD, позволяет запускать самые различные export VBOX_PROGRAM_PATH=/opt/VirtualBox
гостевые ОС со скоростью, близкой к скорости реального обору­ Здесь /opt/VirtualBox – это название дирек тории, в которую
Наш дования. Одним из интересных свойств данного продук та явля­ установлен VirtualBox в вашей системе. Так же, если SDK на ходит­
эксперт ется полная открытость всех интерфейсов, то есть возможность ся в /opt/VirtualBox-sdk, переменная PYTHONPATH должна быть
Николай иготти взаимодействовать с VirtualBox из приложений, написанных на по­ установлена как
разрабатывает пулярных языках программирования. Официально под держива­ export PYTHONPATH=/opt/VirtualBox­sdk/bindings/xpcom/
VirtualBox
ются C, C++, Java, Perl и Python, но можно использовать и любой python:$VBOX_PROGRAM_PATH
в компании Sun
Microsystems, другой язык, для которого реа лизован вызов SOAP­методов. чтобы Python мог найти необходимые модули. После настройки
а в свободное вре­ Я разрабатывал под держку Python в VirtualBox, и хотел бы по­ окру жения можно просто запустить оболочку командой
мя разбирается, подробнее рассказать о различных тонких моментах и интересных python /opt/VirtualBox­sdk/bindings/xpcom/python/samples/
почему в нем не
элементах функциональности. Чтобы разговор был более пред­ vboxshell.py
запускается какая­
нибудь экзотиче­ метным, рекомендую скачать последнюю версию VirtualBox 2.2 и вы увидите приглашение, как на рисунке. Чтобы получить спи­
ская ОС. для вашей операционной системы, а так же SDK VirtualBox с www. сок команд, известных оболочке, наберите help. Можете поэкспе­
virtualbox.org/wiki/Downloads (требуется бесплатная регистрация). риментировать в свое удовольствие.
Желательно так же установить хотя бы одну виртуальную машину,
чтобы нам было чем управлять. Расширяем оболочку
Как можно видеть, сама по себе оболочка достаточно функцио­
Как это работает нальна и полезна, но нам сейчас будет интересна возможность
Внешние интерфейсы VirtualBox описаны в документации к SDK ее расширения. Предположим, к примеру, что вам необходимо
(на английском языке), а XML­файл bindings/VirtualBox�xidl пре­ написать команду, которая создает виртуальную машину со смон­
доставляет полную информацию об устройстве API. Кроме этого, тированным ISO­образом и запускает ее (ска жем, для целей авто­
может быть интересно исследовать исходные коды примеров, по­ матизированного тестирования какого­нибудь дистрибу тива). На­
ставляемые с SDK. зовем эту команду makevm.
Доступ к внешним интерфейсам технически осуществляется Откроем shellcommon�py в редак торе и добавим строчку
двумя способами: через непосредственный вызов методов COM, 'makevm':['Make VM with given ISO image', makevmCmd],
XPCOM (компонентной технологии, происходящей от Mozilla) или к массиву commands. Она просто зарегистрирует нашу команду
через SOAP (то есть специально сформированные HTTP­запросы, в списке известных оболочке.
обрабатываемые сервером vboxwebsrv). Первый вариант гораздо Теперь на до реа лизовать действия, выполняемые при вызове
быстрее, и предоставляет доступ к более широкой функциональ­ makevm, то есть написать тело функции makevmCmd(), на которую
ности: например, уведомлениям об изменении состояния. К сожа­ мы ссылаемся выше.
Оболочка лению, он требует, чтобы вызывающий процесс и VirtualBox выпол­ def makevmCmd(ctx, args):
VirtualBox: нялись на одной машине, что может быть не всегда удобно. Второй # Имя новой машины
с виду невзрачная, способ позволяет использовать удаленные сервера, но имеет огра­ name=args[1]
но мы дополним ничения по функциональности и производительности, а так же тре­ # Путь к фай лу образа (мож но сде лать частью команды)
ее новыми возмож-
бует запуска специального приложения на ка ж дом из серверов. hddPath= “/tmp/MyUbuntu/hdd.vdi”
ностями�
Интерфейсы для Python разрабатыва­ # Путь к обра зу ISO содержащему дистрибу тив
лись таким образом, чтобы по возможно­ isoPath=args[2]
сти скрыть это различие и использовать Переменная ctx содержит контекст исполнения, откуда мож­
один и тот же код для различных сценариев но получить объек ты класса VirtualBox и Session, а так же доступ
доступа. Тем не менее, данная статья будет к константам. Пример использования контекста можно найти в ко­
в основном посвящена Python и XPCOM. де shellcommon�py. Для команды makevm нам на до получить до­
В качестве примера нетривиаль­ ступ к объек ту vb, представляющему собой экземпляр запущен­
ного приложения, использующего ной виртуальной машины VirtualBox.
VirtualBox из Python, рассмотрим ин­ vb=ctx['vb']
терак тивную оболочку, поставляемую Да лее следует найти или создать подключить к VirtualBox ISO­
в комплек те с SDK. Один и тот же сценарий образ, а так же определить (или, при необходимости, создать) вир­
(shellcommon�py) может работать как через туальный жесткий диск, на который мы будем устанавливать на­
SOAP, так и на локальной машине. Вся раз­ шу гипотетическую систему:

70 Linux Format Июль 2009


VirtualBox Учебник

управляет
isoImg=vb.findDVDImage(isoPath) progress = vb.openRemoteSession(session,
if not isoImg: id, “gui”, “”)
isoImg=vb.openDVDImage(isoPath, None) progress.waitForCompletion(­1)
hddImg=vb.findHardDisk(hddPath) session.close()
if not hddImg: return 0
hddImg=createHardDisk(“VDI”, hddPath) Последняя строка уведомляет оболоч­
progress=hddImg.createBaseStorage(4*1024, ку, что по завершении команды ей необхо­
ctx['ifaces'].HardDiskVariant.Standard) димо продолжить свою работу. На первый
progress.waitForCompletion(­1) взгляд выглядит непросто, но если вду­
hddImg=vb.openHardDisk(hddPath, маться, мы только что написа ли код, ко­
ctx['ifaces'].AccessMode.ReadWrite) торый создает виртуальную машину, вир­
Как можно видеть, генерация образа жесткого диска происхо­ туальный жесткий диск, монтирует образ
Готовая вир-
дит в несколько этапов: снача ла мы создаем устройство вызовом DVD и запускает ее. И все это – примерно 20 строчек.
туальная маши-
createHardDisk(), указав желаемый тип (VDI, родной для VirtualBox на с Ubuntu —
формат) и путь в файловой системе хост­ОС, затем выделяем И много чего еще одной командой:
под него 4 ГБ методом createBaseStorage() и ждем завершения Давайте протестируем созданную нами команду. Запустите обо­ при желании мож-
этой операции. Наконец, винчестер регистрируется в системе ме­ лочку и введите но даже на Enter
тодом openHardDisk(). vbox> makevm Test /ISO/Linux/Ubuntu/ubuntu­8.10­desktop­i386. не нажимать�
iso
Ключ на старт! Вы увидите виртуальную машину, готовую установить новую
Давайте будем для определенности считать, что мы тестируем ОС. Более того, мы можем использовать команду оболочки guest
сборки Ubuntu. Виртуальные машины с предустановками для этого и начать инсталляцию, не переключая окна.
дистрибу тива будем создавать в ката логе /tmp/MyUbuntu. Для этих vbox> guest Test console.keyboard.putScancodes([0x5a,0x1c,
целей нам потребуется сессионный объект – Session. 0x5a,0x1c])
session = ctx['mgr'].getSessionObject(vb) Здесь мы эмулируем двойное на жатие на клавишу Enter пу тем
mach = vb.createMachine(name, “Ubuntu”, “/tmp/MyUbuntu”,“”) отправки гостевой системе соответствующих скан­кодов. Под­
vb.registerMachine(mach) робнее про скан­коды клавиатуры можно прочесть по адресу:
# Запоминть уникальный иден тификатор машины http://www.quadibloc.com/comp/scan.htm. Домашнее за дание: из­
id=mach.id мените команду так, чтобы перед установкой автоматически вы­
print “created machine with UUID”,id бирался русский язык.
Этот код не должен вызывать затруднений. Мы получаем сес­ Вы так же можете эмулировать любые движения мыши;
сионный объект через контекст, создаем виртуальную машину, например,
расположенную в /tmp/MyUbuntu, с указанным пользователем vbox> guest Test console.mouse.putMouseEvent(20,20,0,0)
именем и типом гостевой ОС ‘Ubuntu’, и регистрируем ее. Наконец, сдвинет мышь на 20 пикселей вправо и вниз. Полный список мето­
мы запоминаем уникальный идентификатор машины и выводим дов взаимодействия с гостевой ОС можно получить в документа­
его на консоль. ции к интерфейсу IСonsole, идущей в комплек те с SDK VirtualBox.
Полученная нами виртуальная машина не имеет нужной пе­ Но и это еще не все. Оболочка позволяет выполнить любой код
риферии – исправим этот факт, смонтировав наш DVD­образ Python, использующий API VirtualBox: для этих целей предназна­
и подключив к ней жесткий диск. Обратите внимание на первую чена команда eval. Например,
строку – перед изменением виртуальной машины необходимо по­ eval for m in getMachines(ctx):
лучить на нее блокировку, чтобы исключить конфлик ты одновре­ print
менного обращения. m.name,m.getNetworkAdapter(0).MACAddress
# Полу чить блокировку на дос туп к машине напечатает MAC­адреса первой сетевой карты всех виртуальных
vb.openSession(session, id) машин.
mach=session.machine Как можно видеть, достаточно простые и интуитивно понятные
mach.DVDDrive.mountImage(isoImg.id) вызовы функций позволяют выполнять весьма сложные операции
mach.attachHardDisk(hddImg.id, “IDE”, 0, 0) над виртуальными машинами, и использовать все мощь VirtualBox.
# Сохранить внесенные изменения На текущий момент управление VirtualBox из Python возможно
mach.saveSettings() на хостах Linux, Solaris и Mac OS X; начиная с 3.0, будет реа лизо­
# Закрыть сессию вана под держка Windows. Еще раз обращаю ваше внимание на то,
session.close() что ана логичные интерфейсы можно использовать через SOAP
В данном слу чае мы подсоединяем жесткий диск к виртуально­ на всех платформах, которые под держиваются VirtualBox.
му контроллеру IDE. Можете выбрать SATA или SCSI – это неприн­ Полный код примера в формате патча для shellcommon�py
ципиально. вы найдете на прилагаемом к журна лу диске. В заключение хо­
Теперь все готово к работе – оста лось только запустить вир­ чу сообщить, что на все вопросы, связанные с использованием
туальную машину, терпеливо дож даться ее остановки и завер­ VirtualBox (и, в частности, API Python) вам с удовольствием ответят
шить сеанс. на форуме forums.virtualbox.org.

Июль 2009 Linux Format 71


Отладчик GNU Идейно выдержанное средство
поиска ошибок в ваших приложениях

GDB: Избавимся
Один из основных принципов открытого ПО – «больше глаз – меньше ошибок»;
так чего же вы ждете? Андрей Боровский познакомит вас с необходимым
инструментарием.

П
ри первом знакомстве отладчик GNU Debugger (GDB) мо­ зывать его, чтобы отличать команды интерактивного режима отлад­
жет напугать программистов, привыкших к встроенным чика от других. Интерактивный режим GDB похож на таковой в ко­
отладчикам графических интегрированных сред разра­ мандной оболочке Bash. Более того, в GDB задействованы многие
ботки. На самом деле все не так страшно. Выучив несколько про­ полезные функции командной оболочки: например, автоматиче­
стых команд, вы сможете сделать с помощью отладчика GNU все, ское завершение команды с помощью клавиши табуляции, преоб­
что вы могли бы сделать в плане отладки в средах Microsoft или разование символа ~ и история команд. Есть даже свой аналог сце­
Borland. Выучив еще несколько команд, вы сможете делать та­ нариев оболочки. Для выхода из GDB служит команда quit.
Наш кое, что пользователям графических IDE и не снилось. И хотя в на­ Мы должны указать отладчику имя программы, которую соби­
эксперт ше время безалкогольного шампанского и бескофеинового кофе раемся отлаживать. Это можно сделать во время запуска GDB:
Андрей в Linux появились свои графические IDE со встроенными функ­ $ gdb cuneiform
Боровский
циями отладки (Eclipse, Qt Creator), изучение возможностей GDB А можно и после запуска Cuneiform с помощью команды exec-file:
Программирует
для Linux уже при­ все равно будет вам полезно, поскольку «за кулисами» указанные (gdb) exec­file cuneiform
мерно 2920 дней, среды вызывают именно его. В любом случае, GDB лишь подготовит среду для отладки про­
1460 из которых он Выдумывать специальные примеры для отладки – дело не­ граммы, но не запустит ее на выполнение. Вообще, следует пом­
провел, не покидая
благодарное, поэтому мы рассмотрим этот процесс на приме­ нить, что отладчик всегда находится в одном из трех режимов:
командной строки
GDB. ре программы Cuneiform, «доводкой» которой я занимаюсь уже отлаживаемая программа работает, отлаживаемая программа
некоторое время (LXF118).. Не пугайтесь, вам не придется вни­ приостановлена и программа не выполняется. Большую часть ко­
кать в логику работы Cuneiform. Все выбранные нами примеры манд отладчика можно вводить в последних двух режимах. Для
самоочевидны. запуска программы служит команда run:
(gdb) run rf2.bmp ­l rus_fra ­o out.txt
Приступаем к отладке Все аргументы, которые мы указываем в команде run, переда­
Чтобы извлечь из GDB максимум, программу, предназначенную ются непосредственно программе, запускаемой на отладку. После
для отладки, следует скомпилировать с дополнительной отла­ ввода приведенной выше команды мы увидим:
дочной информацией. Ее добавлением управляет ключ -g команд Starting program: /usr/local/bin/cuneiform rf2.bmp ­l rus_fra ­o
gcc и g++. Файл программы или библиотеки, скомпилированный out.txt
с добавлением отладочной информации, занимает больше места, Cuneiform for Linux 0.7.0 (multilang)
чем обычный, однако вам вовсе не обязательно перекомпилиро­ Program exited normally.
вать модуль по окончании отладки. Удалить отладочную инфор­ Текст, появляющийся между строками «Starting program:...»
мацию из исполняемого файла можно в любой момент с помо­ и «Program exited normally.», представляет собой консольный вы­
щью утилиты strip. вод отлаживаемой программы. Пока что отладчик не сообщил нам
Подготовив двоичные модули Cuneiform, мы запускаем отлад­ каких­либо полезных сведений о ней, но даже от запуска прило­
чик с помощью команды gdb. Перед нами появляется приглашение жения в этом режиме может быть толк. Если во время выполне­
командной строки: (gdb). Далее в примерах команд мы будем ука­ ния произойдет ошибка сегментации, отладчик, помимо прочего,

Помощь придет
Для получения справки по работе с GDB вовсе не обя­ Для удобства навигации в справочной системе GDB они stack – команды, управляющие просмотром стека
зательно выходить из интерактивного режима – до­ сгруппированы по нескольким разделам: status – команды (тысячи, тысячи их), которые сооб­
статочно ввести команду help или help имя_команды. aliases – псевдонимы других команд щают различные сведения об отлаживаемой програм­
Например, breakpoints – команды, управляющие точками ме, отладчике и системе
(gdb) help exec­file останова support – разные полезные команды, управляющие
распечатает справочную информацию о команде exec- data – команды, позволяющие манипулировать отладчиком
file. Получать справку о конкретной команде имеет данными программы в процессе отладки tracepoints – команды, которые управляют
смысл, если вы знаете, что именно вам нужно. Если же files – команды для работы с файлами трассировкой
вы – новичок в работе с отладчиком, вам прежде все­ internals – внутренние команды GDB user-defined – команды, определенные
го понадобится информация о том, какие вообще ко­ obscure – команды для продвинутых пользователем.
манды существуют в системе. В интерактивном режиме пользователей Например, для того, чтобы получить сведения о ко­
отладчика GNU программисту доступны сотни команд running – команды, управляющие запуском мандах, управляющих точками останова, введите:
(большая часть которых никогда ему не понадобится). отлаживаемой программы (gdb) help breakpoints

Пропустили номер? Узнайте на с. 103, как получить его прямо сейчас.


72 Linux Format Июль 2009
GDB Учебник

от ошибок
покажет нам состояние стека процедур на момент ее возникнове­ Запуск
ния. Также, если программа зависнет и мы завершим ее выполне­ программы
ние с помощью Ctrl+C, нам будут выданы сведения о том, в каком из-под отладчика
и Ctrl-C позволяют
месте программы была прервана ее работа, например:
получить о ней
Program received signal SIGINT, Interrupt. море полезной
0xb7d8c8b4 информации, даже
in IntervalsBuild (y=979) at /home/andrei/bazaar/cuneiform­ если вы ни о чем
multilang/cuneiform_src/Kern/rblock/sources/c/ltexcomp.c:144 не спрашиваете�
144 while (x < nWidth && (pLine [x] & BlackMask) == 0)
Здесь мы видим имя функции, во время выполнения которой
была прервана работа программы (то есть IntervalsBuild), значе­
ние параметров, с которыми она была вызвана (в нашем случае –
один параметр, y, со значением 979), имя файла и номер строки
исходного текста, соответствующего прерванному фрагменту,
и саму строку кода. появится следующее сообщение:
Очень часто даже этой информации достаточно для того, что­ Breakpoint 1, copy_text (word=0x9452338) at
бы вызвать озарение у программиста, ищущего ошибку. Но GDB /home/andrei/bazaar/cuneiform­multilang/cuneiform_
способен показать нам гораздо больше. Мы можем просмотреть src/Kern/puma/c/spcheck.cpp:85
значения переменных, доступных нам в данном контексте (как ми­ 85 word­>text = (Word8 *) malloc((word­>wlen +
нимум, это x, nWidth, pLine, и BlackMask). Для этого воспользуем­ 1)*sizeof(Word8));
ся командой print: Current language: auto; currently c++
(gdb) print x Мы снова видим имя функции, выполнение которой было при­
Результат: остановлено, имя и значение переданного ей параметра и строку
$1 = 681 исходного текста, которая будет выполнена далее. Команда
Команда: (gdb) ptype word
(gdb) print pLine[x] сообщает нам нам следующее:
Результат: type = struct _SPWord {
$2 = 0 '\0' Bool32 is_latin;
Таким образом мы узнаем, что на момент прерывания пере­ CSTR_rast begin;
менная x содержала значение 681, а элемент массива pLine[681] – CSTR_rast end;
символ '\0' . Если мы забыли или не знали, какой тип имеет пере­ Word8 *text;
менная pLine, мы можем узнать это, не заглядывая в исходники: int wlen; Скорая
помощь
(gdb) ptype pLine }*
type = unsigned char * Мы видим, что переменная word представляет собой указатель Собирая програм­
Но и это еще не все. Можно изменить значение переменной: на экземпляр структуры _SPWord. Чтобы узнать значения полей му с отладоч­
ной информаци­
(gdb) set x=0 структуры, наберите
ей, не забудьте
а затем возобновить выполнение программы с помощью коман­ (gdb) output * word отключить и оп­
ды continue. Команда output делает то же, что и команда print, но при этом тимизацию (-O0).
не утруждает себя излишним форматированием. Результат вы­ Код оптимизиро­
Точки останова полнения команды выглядит так: ванной програм­
мы не совсем
Поскольку современные микропроцессоры работают очень быс­ {is_latin = 1, begin = 0x93e7008, end = 0x93c2a20, text =
похож на ваши ис­
тро, комбинация клавиш Ctrl+C далеко не всегда останавливает 0x1cc08f3f <Address 0x1cc08f3f out of bounds>, wlen = 6} ходники, и это
программу именно там, где нам нужно. Как правило, мы хотим, Обратите внимание, что отладчик любезно сообщил нам о том, что может привести
чтобы ее выполнение было прервано в заранее определенном поле text указывает на невыделенную область памяти. Эта инфор­ к трудноразреши­
мым проблемам.
месте. Для этого и служат точки останова (breakpoint). Наберите мация может очень пригодиться при поиске ошибок, но не в дан­
(gdb)break copy_text ном случае. Поле text просто еще не инициализировано (это про­
Эта команда создает точку останова в начале функции copy_ изойдет в следующей строке).
text (ленивые могут ввести просто b copy_text). В ответ на ввод ко­ Если вам хочется изучить работу программы подробнее, начи­
манды GDB скажет: ная с этого момента, к вашим услугам команды step и next. Они
Breakpoint 1 at 0xb7f57f35: file /home/andrei/bazaar/cuneiform­ выполняют операции, соответствующие одной строке исходного
multilang/cuneiform_src/Kern/puma/c/spcheck.cpp, line 85. текста (когда это возможно), и снова приостанавливают выполне­
Это значит, что отладчик нашел интересующую нас функцию ние программы. Серия вызовов step или next позволяет вам про­
и строку кода, соответствующую точке останова. Теперь мы сно­ изводить отладку построчно. В нашем примере, в результате вы­
ва запускаем программу Cuneiform на выполнение с помощью ко­ полнения команды
манды run. Когда процессор достигнет точки останова (если это (gdb) step
случится), выполнение программы будет прервано, и на экране мы переходим к следующей строке:

Июль 2009 Linux Format 73


Учебник GDB

86 CSTR_rast rast = word­>begin; условие. Им может быть любое выражение, возвращающее значе­
Разница между командами step и next заключается в том, что step ние, приводимое к типу int и действительное в контексте данного
«заходит» в каждую функцию, вызов которой встречается у нее кадра отладки. Вы можете создать несколько точек останова в од­
на пути, и проходит ее построчно, тогда как next «перепрыгивает» ной строке (это имеет смысл для условных точек останова).
вызов функции, выполняя его за один шаг. Команда step по смыс­ Если вы не хотите больше прерывать выполнение програм­
лу соответствует командам Trace into/Step into интегрированных мы на текущей точке останова, очистите ее с помощью команды
отладчиков Borland и Microsoft, тогда как команда next соответ­ clear. Любую точку останова можно удалить с помощью команды
ствует их командам Step tep over. Запуск приостановленной програм­ delete, указав в качестве аргумента номер точки останова (он при­
мы осуществляется командой continue. Вместо полных имен ко­ сваивается автоматически при выполнении команды break). Если
манд step, next и continue можно использовать их однобуквенные вы заранее уверены, что точка останова понадобится вам только
псевдонимы – s, n и c соответственно. Если вы хотите, чтобы про­ один раз, создайте однократную точку останова с помощью ко­
грамма сделала сразу 5 шагов, можете просто скомандовать манды tbreak (ее синтаксис такой же, как и у break).
(gdb) s 5
Если же построчной отладки вам недостаточно, перейдите на уро­ Предъявите ваши данные
вень отслеживания выполнения отдельных инструкций процессо­ С некоторыми командами, позволяющими заглянуть в содер­
ра с помощью команд stepi и nexti. жимое переменных отлаживаемой программы, мы уже знако­
Точки останова не обязательно должны располагаться в нача­ мы. Когда выполнение программы приостановлено, мы можем
ле функций. Например, если мы скомандуем просмотреть содержимое любой переменной, доступной в дан­
(gdb) break 97 ном контексте. Очень часто в процессе отладки бывает необходи­
следующая точка останова будет создана в строке 97 мо отследить, как меняется значение некоторой переменной по
файла /home/andrei/bazaar/cuneiform-multilang/cuneiform_src/ ходу выполнения программы. Чтобы не вызывать каждый раз ко­
Kern/puma/c/spcheck�cpp (поскольку он является текущим). Ес­ манду print, мы можем создать контрольную точку доступа к дан­
ли вы хотите создать точку останова на заданной строке в другом ным (watch).
исходном файле, команда должна выглядеть так: Рассмотрим практический пример. В программе Cuneiform
(gdb) break имя_файла:номер_строки есть функция make_tokens, которая в ходе своей работы пере­
Можно также указывать для точки останова определенный адрес. бирает элементы некоего связного списка. Указатель на текущий
Следует, однако, учитывать, что не каждой строке текста про­ элемент списка хранится в локальной переменной rast. В ходе от­
граммы соответствуют операции микропроцессора. Если мы по­ ладки программы мне требовалось посмотреть, как меняются
пытаемся создать точку останова в строке, для которой отлад­ значения rast, для чего я решил создать контрольную точку досту­
чик не может найти исполняемый код, она будет создана на одной па к данным. Такие точки осуществляют мониторинг обращения
из следующих строк, иногда в довольно неожиданном месте. На­ к определенному адресу памяти на аппаратном уровне. Это озна­
пример, если мы попытаемся создать точку останова в строке 155 чает, между прочим, что контрольную точку доступа нельзя опре­
в следующем фрагменте: делить до тех пор, пока наблюдаемая переменная не будет созда­
151 if (!strchr(“,.():;!?\» «» %”, nxt­>vers­>Alt[0].Code[0])) { на, то есть, в нашем примере, до тех пор, пока не будет вызвана
152 rast­>vers­>Alt[0].Code[0] = ' '; функция make_tokens. Таким образом, прежде чем устанавливать
153 rast­>vers­>Alt[0].Code[1] = 0; контрольную точку доступа, мне необходимо остановить про­
154 rast = CSTR_GetPrev(rast); грамму в начале вызова make_tokens:
155 continue; (gdb) break make_tokens
156 } else{ (gdb) c
157 i++ ... } Breakpoint 16, make_tokens (line=0x957a108, words=0xbf867b98)
отладчик разместит ее в строке 157. Дело в том, что строке 155 at /home/andrei/bazaar/cuneiform­multilang/cuneiform_
(как и строке 156) нельзя сопоставить машинный код. Первая src/Kern/puma/c/spcheck.cpp:140
строка после строки 155, для которой это можно сделать – стро­ 140 CSTR_rast rast=CSTR_GetFirstRaster(line);
ка 157, но она находится в другом логическом блоке. Очевидно, Теперь можно установить контрольную точку доступа к пере­
что это совсем не то, чего мы хотели. Самое неприятное заключа­ менной rast:
ется в том, что отладчик не покажет нам номер строки, на которой (gdb) watch rast
на самом деле была создана точка останова, до тех пор, пока эта Hardware watchpoint 17: rast
точка не будет вызвана. Правильным решением может быть созда­ Обратите внимание, что значение rast изменяется в той са­
ние новой точки останова в строке 154, но в этом случае програм­ мой строке (140), на которой было приостановлено выполнение
ма будет приостановлена до вызова функции CSTR_GetPrev(). Ес­ программы. Это значит, что уже следующий вызов next приведет
ли нам нужно отследить результат выполнения CSTR_GetPrev(), к изменению содержимого переменной:
точку останова сле­ (gdb) n
дует создавать Hardware watchpoint 17: rast
Назад, в будущее! внутри этой функ­ Old value = (CSTR_rast) 0x0
ции (можно, конеч­ New value = (CSTR_rast) 0x957a19c
В ряде случаев бывает удобным стью обладает отладчик UndoDB но, остановиться Отладчик сообщает нам, что значение rast изменилось с 0x0
проходить программу не только (www.undodb.com). Увы, это до вызова CSTR_ на 0x957a19c. Ниже показан дальнейший результат пошагового
в прямом порядке, но и в обрат­ не свободное ПО, но если вы ра­ GetPrev(), а затем выполнения функции:
ном, «оборачивая время вспять». ботаете над открытым проектом,
Некоторые ошибки очень слож­ то сможете получить лицензию
пройтись по функ­ 142 bool wb = true;
но вызвать, и если она все же бесплатно. Приятнее всего то, ции серией команд (gdb) n
случилась, появляется большое что UndoDB является надстрой­ step). 143 int wc = 0;
желание развернуть ход выпол­ кой над GDB и просто добавля­ Помимо лока­ (gdb) n
нения программы в обратном ет новые команды, не изменяя
ций, команда break 144 for(rast =
направлении и поглядеть, что же старые, так что вам не придется
к ней привело. Такой возможно­ переучиваться. позволяет задать CSTR_GetNext(rast);rast;rast=CSTR_GetNext(rast))
для точки останова (gdb) n

74 Linux Format Июль 2009


GDB Учебник

Hardware watchpoint 17: rast


Old value = (CSTR_rast) 0x957a19c
New value = (CSTR_rast) 0x95776d0
Мы видим, что при входе в цикл for значение rast (которая является
его управляющей переменной) тоже изменилось. Если бы значение
rast было случайно перезаписано где­то между двумя явными об­
ращениями к переменной, отладчик сообщил бы нам об этом.
Установленная нами контрольная точка существует столь­
ко же, сколько и переменная rast, то есть до выхода из функции
make_tokens: при следующем вызове make_tokens ее придется
создавать снова. Для удаления контрольных точек доступа слу­
жит уже известная нам команда delete.
Отслеживать изменение содержимого переменной с помощью
комбинации команд watch и step/next не очень­то удобно. У от­
ладчика GNU есть другой, лучший способ. Команда awatch будет
останавливать выполнение программы всякий раз, когда значе­
ние заданной переменной считывается или записывается. Так же,
как и watch, команда awatch стремится использовать аппаратные
ловушки для перехвата обращений к конкретному адресу и может
выявлять неявные обращения к нему.
Qt Creator (мы говорили о нем в LXF119) — отладка доверена GDB� Обратите внимание,
Как я сюда попала? где расположена точка останова и где программа остановилась на самом деле�

Иногда программисты тоже пытаются найти ответ на этот сакра­


ментальный вопрос. Если в программе во время отладки происхо­ #6 0x0804ad18 in?? ()
дит нечто, требующее вашего внимания, вам может понадобится #7 0xb7463685 in __libc_start_main () from
не только информация о функции, при вызове которой случилось /lib/tls/i686/cmov/libc.so.6
страшное, но и сведения о полном состоянии стека вызовов. Ко­ #8 0x08049fb1 in?? ()
манда backtrace позволяет узнать, какими путями программа по­ В переводе на русский язык сказанное отладчиком звучит
пала в данную точку. Посмотрим результат ее выполнения для так: «Функция PUMA_XFinalRecognition (), вызванная из функции
многострадальной функции copy_text (предполагается, что вы­ верхнего уровня, вызвала функцию Recognize (), которая вызвала
полнение программы Cuneiform приостановлено в ее начале): функцию MultilangRecognizeStringsPass1 (), которая вызвала функ­
(gdb) backtrace цию mix_lines (), которая вызвала функцию make_tokens (), которая
#0 copy_text (word=0x983d348) at и вызвала функцию copy_text()». Но это не все. Благодаря команде
/home/andrei/bazaar/cuneiform­multilang/cuneiform_ backtrace мы можем узнать не только адреса функций и значения
src/Kern/puma/c/spcheck.cpp:85 их параметров (они приведены в скобках), но и локации вызовов
#1 0xb7f213ff in make_tokens (line=0x9789278, в исходных текстах программы (copy_text вызывается в нескольких
words=0xbff78a88) at /home/andrei/bazaar/cuneiform­ разных местах функции make_tokens(), и нам, разумеется, полезно
multilang/cuneiform_src/Kern/puma/c/spcheck.cpp:172 знать, из какого именно места она была вызвана на этот раз). Не мо­
#2 0xb7f2158e in mix_lines (ruseng=0x9789278, local=0x97af118, гу не отметить, что команда backtrace помогает не только при от­
rus=0x9794578) at /home/andrei/bazaar/cuneiform­ ладке кода, но и при изучении работы программы, написанной дру­
multilang/cuneiform_src/Kern/puma/c/spcheck.cpp:369 гими людьми. Фактически у нас перед глазами «живая» цепочка
#3 0xb7f1eeaf in MultilangRecognizeStringsPass1 () at вызовов функций в сложной программе, снабженная значениями
/home/andrei/bazaar/cuneiform­multilang/cuneiform_ их аргументов и другими полезными сведениями.
src/Kern/puma/c/partrecog.cpp:425
#4 0xb7f1fb55 in Recognize () at /home/andrei/bazaar/cuneiform­ Графический отладчик DDD Отладчик DDD —
multilang/cuneiform_src/Kern/puma/c/partrecog.cpp:798 Из всех графических отладчиков, использующих GDB, мы рас­ тонкий слой
графики поверх
#5 0xb7f226f7 in PUMA_XFinalRecognition () at смотрим только DDD. Такая честь выпала ему потому, что этот
GDB�
/home/andrei/bazaar/cuneiform­multilang/cuneiform_ отладчик наиболее прозрач­
src/Kern/puma/main/puma.cpp:600 но интегрирован с GDB. Ос­
новные команды графической
оболочки соответствуют ко­
мандам GDB, а в нижней части
главного окна DDD мы видим
фрагмент консоли GDB, в ко­
торой отображаются вывод от­
ладчика GNU и его командная
строка. Таким образом, если
возможностей DDD вам не хва­
тает, вы всегда можете обра­
титься к отладчику GDB напря­
мую. Но главное преимущество
DDD по сравнению с «чистым»
GDB – это возможность легко
Заглядываем в машинный код� А вы знаете, как выполняются ориентироваться в исходных
системные вызовы в вашей системе? текстах программы.

Июль 2009 Linux Format 75


JavaFX Создавайте продвинутые интернет­
приложения (и не только) без лишних усилий

JavaFX: Добавим
Часть 2: На одном только языке далеко не уедешь. Антон Черноусов
познакомит вас с объектами, из которых строятся настоящие приложения
с графическим интерфейсом.

Рис� 1� Работа
со свойством
opacity у объекта
Stage�

Вы можете подключить как весь пакет с помощью символа *,


так и отдельные классы – указанием их канонического имени, ска­
жем, javafx�stage�Stage. Следующий простой сценарий (файл
FirstStage�fx в примерах на диске) создает пустое окно прило­
жения и выводит его в конкретную позицию на экране:
Stage {
title: “This is Stage”
x : 100 // Start point to Stage
y : 200
width: 300 // The width and height
height: 400
}
В этом листинге при создании объек та Stage устанавливается
заголовок title, позиции по горизонта ли и вертика ли x, y, а так же

Н
а предыдущем уроке мы подробно рассмотрели базовые ширина и высота width, height.
механизмы языка сценариев JavaFX Script, а сегодня со­ Однако при таком за дании параметров главного окна програм­
средоточимся на возможностях JavaFX в области соз­ мы будет невозможно обратиться к его свойствам во время вы­
дания графического интерфейса пользователя. После прочтения полнения приложения. Для решения этой проблемы достаточ­
этой статьи вы разберетесь с объек тами­примитивами и при­ но присвоить объект Stage некой переменной, как, например, это
Наш менением эффек тов, а так же, в заключение, узнаете про обработ­ сделано в сценарии OpacityStage�fx:
эксперт ку событий, генерируемых пользователем. var s : Stage = Stage {...}
Антон Черноусов Мы не будем приводить полные исходные тексты учебных при­ API объек та Stage достаточно скуден по своим возможностям,
Самый голодный
меров, ограничившись лишь интересующими нас частями. Как но, внимательно изу чив его (документацию на английском языке
Java­разработчик
города Иркутска. и в прошлый раз, вы сможете найти все обсу ж даемые программы можно найти по адресу http://java.sun.com/javafx/1/docs/api), легко
Обожает опасные на LFXDVD: советую вам прямо сейчас распаковать архив с дис­ обнару жить замечательное свойство opacity, которое варьирует­
бритвы. ка, чтобы было удобнее следить за мыслью. Готовы? Тогда при­ ся в пределах от 0.0 до 1.0 и за дает прозрачность окна. Например,
ступим. значение opacity, равное 0.5, создает приятный полупрозрачный
эффект, который можно видеть на рис. 1. К сожа лению, возмож­
Stage — основа GUI ности загрузить API для локального просмотра нет, и мне ка жет­
Главный объект, с которого начинается создание пользователь­ ся, что с точки зрения Java­разработчика новый способ пред­
ского интерфейса – это Stage. Для работы с ним в вашем сцена­ ставления документации значительно уступает проверенному
рии JavaFX Script необходимо подключить библиотеку javafx�stage временем JavaDoc.
с помощью ключевого слова import сразу после объявления паке­ При загрузке приложения можно выполнить некоторые
та – например, так: подготовительные операции и лишь потом отобразить интер­
package ru.golodnyj.lxf.fx; фейс. В этом вам поможет свойство visible объек та Stage, делаю­
import javafx.stage.*; щее его видимым или невидимым.

Месяц назад Мы знакомились с синтаксисом JavaFX Script и узна ли о связывании.


76 Linux Format Июль 2009
JavaFX Учебник

красок! NetBeans IDE 6.5.1


для JavaFX 1.2
JavaFX 1.2 SDK
Код примеров
статьи

Графические примитивы В качестве примера рас­


Безусловно, само по себе пустое окно никому не интересно. Фак­ смотрим создание неслож­
тически, все компоненты пользовательского интерфейса в JavaFX ной картинки, представлен­
представляют из себя «узлы» – Node, то есть являются некоторым ной на рис. 3. Для отрисовки
расширением класса javafx�scene�Node. Существует несколько ти­ такого изобра жения необхо­
пов узлов: димо два элемента: это пря­
примитивы; моугольник с закруглен­
текст; ными краями (Rectangle)
изобра жения; и текст (Text). Несколько за­
медиа­контент; бегая вперед, отметим, что
Swing­компоненты. текст выводится с помощью
Узлы размещаются в корневой области, которая называется объек та Text, который так же
«сценой» и представлена объек том Scene. Объект Scene содержит является наследником Node.
переменную content, в которую и помещаются узлы, как, напри­ Как видно из приведен­
мер, в сценарии FirstScene�fx: ного ниже кода FirstGroup�fx,
var scane1 : Scene = Scene { Node­объек ты перечисля­
Рис� 2� Различные
content: [a, b, c] ются через запятую, то есть заносятся в последовательность
типы узлов, создан-
} content, а доступ к ним можно получить через переменную d. ные нами в сцена-
var d: Group = Group { рии FirstScene�fx�
var s : Stage = Stage { content: [
scene: scane1 Rectangle {
…} x: 30; y: 15; width: 150; height: 20;
arcWidth: 20; arcHeight: 20; stroke: Color.GRAY;
function run(){ fill: LinearGradient {
println(“Start the App”); startX: 0.0, startY: 0.0, endX: 0.0, endY: 1.0,
s.visible = true; // make the Stage visible proportional: true
s.toFront(); stops: [
} Stop {offset: 0.0 color: Color.WHITE},
Результат работы программы можно видеть на рис. 2. В FirstScene� Stop {offset: 1.0 color: Color.GRAY}
fx создаются три графических объек та a, b и c: это прямоугольник ]}},
(Rectangle), окружность (Circle) и дуга (Arc). Все три наших объ­ Text {…}]}
ек та унаследованы от Node и являются графическими примити­
вами. Для работы с ними необходимо подключить пакет javafx� Градиенты
scene�shape�*;. Наибольший интерес в приведенном выше фрагменте представ­
Пакет shape содержит всевозможные графические примити­ ляет свойство fill (за ливка), а точнее, использованный для нее объ­
вы, ка ж дый из которых имеет очень богатый API. Например, если ект LinearGradient, который (кто бы мог подумать?) представля­
мы рассмотрим уже созданный нами объект Arc, то среди его ат­ ет собой линейный гра диент. Переменные объек та LinearGradient:
рибу тов можно найти поле type, которое определяет внешний вид startX, startY, endX и endY определяют координаты начальной
примитива и может принимать три различных значения: и конечной точек гра диента, и таким образом за дают его направ­
ArcType�ROUND – окружность с центральным углом как на ри­ ление и размер охватываемой им области. Гра диент можно разме­
сунке 2 (по­моему, здесь есть что­то знакомое... да это же щать в любом направлении.
Пэкмен!); Хитрая переменная proportional при установке ее значения
ArcType�CHORD – вместо «скушанного» сек тора будет хорда; в true масштабирует переменные startX, startY, endX и endY отно­
ArcType�OPEN – выглядит как ArcType�CHORD, но без линии хор­ сительно объек та, на который накла дывается гра диент (при этом
ды, соединяющей края центрального угла. значения координат должны на ходиться в диапазоне от 0,0 до 1,0).
Конечно, создавать отдельные фигуры хорошо, но гораз­ При установке proportional в false величины startX, startY, endX
до удобнее использовать их в совокупности и управлять ими и endY имеют смысл абсолютных значений в пикселях.
как группой элементов: в JavaFX предусмотрен и такой сцена­ Последовательность stops – это совокупность объек тов Stop
Рис� 3� Наша
рий. Существует специальный объект Group, который является уз­ (опорных точек), за дающих распределение цветов вдоль гра диен­
«почти кнопка»
лом и позволяет хранить в себе другие объек ты Node. Group пре­ та. Таких точек может быть больше двух. Поле offset объек та Stop на самом деле
доставляет специальный атрибут – последовательность content, определяет точку, где гра диент будет иметь некий за данный цвет, собрана из двух
предназначенный, как и у Scene, для хранения Node­объек тов. как число в диапазоне от 0,0 до 1,0 (то есть в долях от протяжен­ примитивов�

Июль 2009 Linux Format 77


Учебник JavaFX

ности гра диента). Цвет точек гра­ Эффектная трансформация


диента определяется значением Помимо прочего, графические объек ты JavaFX под держивают са­
атрибу та color. Кроме пред­ мые различные эффек ты и преобразования (трансформации).
определенных цветов, можно за­ Что скрывается за этими словами? Ответ на этот вопрос понятен
дать свой от тенок в стандартной любому, кто работал с графическими редак торами, такими как
шестна дцатеричной нотации – GIMP или Adobe Photoshop. Эффект – это визуальное изменение,
это делается с помощью мето­ которое строится на базе текущего представления объек та на сце­
да web объек та Color, как в при­ не. Для за дания эффек та у объек тов типа Node существует специ­
мере ниже: альный атрибут effect.
stops: [ Преж де чем использовать эффек ты, необходимо подклю­
Stop {offset: 0.0 color: Color. чить пакет javafx�scene�effect. Классическим эффек том явля­
WHITE}, ется отбрасываемая от объек та тень, словно он является трех­
Рис� 4� Варианты
Stop {offset: 0.5 color: Color.DARKBLUE}, мерным и действительно может заслонять собой па дающий
радиальной залив-
ки: без повторения Stop {offset: 1.0 color: Color.web(«#ffffff»)} свет. Тень может быть реа лизована с помощью объек та DropShadow
(слева), стандарт- ] или InnerShadow. Например, если вы внимательно просматрива­
ная периодическая Фак тически существует три вида гра диентов: Solid (сплошная ли исходные тексты сценария FirstGroup�fx, упоминавшегося на­
(справа) и зеркаль- за ливка одним цветом), LinearGradient (линейный) и RadialGradient ми ранее, то могли заметить внутри объек та Group пару закоммен­
ная (на переднем (ра диальный). У последних двух типов есть возможность ука­ тированных строк:
плане)�
зать периодичность за ливки с помощью свойства cycleMethod: effect: DropShadow{offsetX:5 offsetY:5 color: Color.DARKGRAY}
без повторения (CycleMethod�NO_CYCLE), прямой цикл гра диента effect: InnerShadow{offsetX:5 offsetY:5 color: Color.DARKGRAY}
(CycleMethod�REPEAT), прямой­обратный (CycleMethod�REFLECT). effect: Blend{
Какой смысл скрывается за этими значениями, можно видеть topInput: DropShadow {
на рис. 4. offsetX: 4 offsetY: 4 radius: 6
color: Color.DARKGRAY}
Работа с текстом bottomInput: DropShadow {
В целом, графических возможностей JavaFX с лихвой хвата­ offsetX: ­4 offsetY: 4 radius: 6
ет для реа лизации любого способа представления информации, color: Color.DARKGRAY}
но вернемся к отобра жению текста. Как уже было отмечено ранее, }
Text – это объект типа Node, что позволяет работать с ним так же, Первая строка накладывает на объект Group эффект отбрасы­
как и с другими графическими объек тами. Однако работу с его со­ ваемой нару жу тени, в основе которой лежит цвет Color�DARKGRAY
держимым (то есть собственно текстом – буквами, знаками пре­ (темно­серый). Если оставить только вторую строку, то с помощью
пинания и так да лее) иногда следует отделять от отобра жения, что объек та InnerShadow будет создана тень, отбрасываемая внутрь
демонстрируется в сценарии TextEffect�fx и на рис. 5 (определение объек та – иллюзия вдавленной под поверхность кнопки. Механизм
графа любезно предоставлено Википедией: ru.wikipedia.org): эффек тов реа лизован очень просто, и JavaFX да же позволяет ком­
var text = «В математической теории графов и информатике\n бинировать несколько эффек тов – как, например, в последнем
граф –»; случае с Blend. Визуальный эффект от него интереснее, чем от двух
Stage { предыдущих – скомпилируйте и запустите скрипт FirstGroup�fx,
title: “TextEffect.fx” width: 200 height: 230 visible: true предварительно раскомментировав соответствующие строки.
scene: Scene{ Эффек ты не ограничены только работой с тенями. Есть, на­
fill: Color.WHITE пример, любопытный эффект Reflection, который позволяет соз­
content:[ дать отра жение (ну не могла же Sun Microsystems обойтись без не­
VBox{ spacing: 10 content:[ го в JavaFX, ведь этот эффект у всех ассоциируется с Web 2.0!).
Text{y: 35 x: 10 content: “Граф” font: Font{size: 30}}, Можно сделать небезосновательное предположение, что число
Text{y: 15 x: 10 content: text font: Font{oblique: true}}, доступных эффек тов в следующих версиях JavaFX будет увели­
Text{y: 5 x: 30 content: чиваться.
“это совокупность объек тов со связями В отличие от эффек тов, возможностей преобразования гра­
меж ду ними.” fill: Color.GREEN}, фических объек тов с помощью трансформаций наверняка боль­
]} ше не станет, так как уже реа лизованы следующие:
]} перенос (Translate);
} вращение (Rotate);
Основными атрибу тами для объек та Text являются его поло­ масштабирование (Scaling) – пропорциональное изменение
жение x, y и содержание content. С помощью атрибу та font можно размеров;
в значительной степени повлиять на внешний вид текста. Объект деформация (Shear) – эффект от применения похож на сдвиг
Font определяет харак теристики надписи: размер шрифта size, рисунка по осям – например, наклон, как в наклонном тексте.
начертание oblique (наклонное), цвет за ливки fill, имя гарнитуры Помимо перечисленных, в JavaFX есть и другие преобразо­
name и так да лее. вания, но мы сейчас не будем останавливаться на них подробно.

События
Если вернуться к нашей «кнопке», то сразу станет понятна ее непол­
ноценность. Для создания настоящего элемента управления необ­
ходимо реа лизовать обработку событий. На мой взгляд, по срав­
нению с объек тами Swing в Java, сделать это в JavaFX значительно
проще. У объек тов Node заранее определено более десятка все­
Рис� 5� Расшифровка терминов средствами JavaFX выполняется возможных событий, которые обрабатываются в том случае, если
не хуже, чем в настоящем электронном словаре� написана соответствующая функция.

78 Linux Format Июль 2009


JavaFX Учебник

Для примера рассмотрим скрипт FirstGroup2�fx, который явля­


ется небольшой модификацией FirstGroup�fx. Разница заключается Онлайн-магазины
в том, что объект Group содержит следующий дополнительный код:
effect: DropShadow{offsetX:5 offsetY:5 color: Color.DARKGRAY} Оглушительный успех iTunes App Store как вла дельцы телефонов Nokia уже попробова­
onMousePressed: function( e: MouseEvent ):Void { магазина приложений заставил крупных по­ ли его в действии.
ставщиков взглянуть на это направление как Неза долго до открытия сервиса Ovi
e.node.effect = InnerShadow{offsetX:5 offsetY:5 color: Color.
на новую возможность распространения сво­ Джонатан Шварц [Jonathan Schwartz], ис­
DARKGRAY} их продук тов и удержания клиентов. полнительный дирек тор компании Sun
} Еще в мае был открыт магазин прило­ Microsystems, анонсировал запуск Java
onMouseReleased: function( e: MouseEvent ):Void { жений Ovi (https://store.ovi.com/), разработан­ App Store: видеообращение по этому пово­
e.node.effect = DropShadow{offsetX:5 offsetY:5 color: Color. ный Nokia. Доступ к ресурсу осуществляется ду можно посмотреть в официальном блоге
прямо с мобильных телефонов Nokia. Так же, http://blogs.sun.com/jonathan/entry/will_java_
DARKGRAY} как и iTunes Store, сервис от финской ком­ be_the_world. Сервис будет предоставлять
} пании позволяет загру жать приложения, иг­ возможность распространения ПО, написан­
onMouseClicked: function( e: MouseEvent ):Void { ры, видеоролики, подкасты. ного с помощью Java и JavaFX, как для мо­
numOfClick++; Отметим, что сервис Ovi был русифици­ бильной платформы, так и для обыкновенных
рован и стал доступен российским пользо­ ПК. Официальное открытие магазина состоя­
}
вателям без за держек, а наиболее ак тивные лось на конференции JavaOne 2009.
Кроме того, в теле скрипта определены еще две переменные:
var numOfClick = 0;
var a : Text = Text { И напоследок…
content: bind numOfClick.toString(); На данном уроке мы познакомились с некоторыми возможно­
x: 30; стями JavaFX по части пользовательского интерфейса: созда­
y: 80; ли графический объект и реа лизова ли обработку событий для
} него. Этого вполне достаточно для несложных приложений,
Фак тически, для нашей кнопки назначен эффект па дающей но в более серьезных слу ча ях бывает необходимо применять
тени и определены функции для обработки трех событий: на