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

OpenOffice.

org GP2X Сети LXFDVD

LXF121
Linux Mint 7
Mandriva Powerpack Ubuntu на новом уровне:

LXF Август 2009


полная версия
ПЛЮС: RFRemix 11

2009.1 Spring
Ulteo 1.0 EduMandriva

Дистри бу тив Mandriva 2009.1 Powerpack включает в се бя набор офисных


и серверных приложений, и под ходит для установки на офисной или домашней
рабочей станции и на сервере. Mandriva 2009.1 Powerpack является отличным
Главное в мире Linux
вариантом для миграции на GNU/Linux новых пользователей, и в то же время
удовлетворяет запросы опыт ных пользователей и админист раторов.
Август 2009 № 8 (121)

Мегасравнение нетбуков
Выбираем
Совместимость с 1С
Входящий в дистрибу тив wine@etersoft local дает возмож ность работы с популярными
отечественными бизнес-приложениями (1С, «Гарант», «Консультант» и т. д.), так же
дистрибу тив совместим с серверными версиями 1С для GNU/Linux.

лучший
Офисные приложения
В дист рибу тив входит OpenOffice.org, ин тернет-приложения, графические,
мульти медийные при ложения, ПО для верст ки и дру гие офисные приложения.

Служба ката логов

нетбук

Профилирование
Кроме тра диционных серверных при ложений, в Mandriva Powerpack входит продукт
Mandriva Directory Server (ана лог кон трол лера домена Windows NT4) — простой в исполь-
зовании инст ру мент для ведения ката лога поль зователей и прав досту па к общим ресур-
сам локальной сети предприятия и управ ления сетевыми сервисами (сервера DNS, DHCP,
SAMBA, Proxy, Mail и др.).

Корпоративные продукты Сертифицировано ФСТЭК


Недорогие, небольшие,

Sox
Mandriva Directory Server Mandriva 2008 Spring Powerpack
8 с Linux — найдите тот,

Xmpppy
38
Mandriva Directory Server (MDS) — это простой в исполь зовании инст- Дист рибу тив пред назначен для рабочей станции или небольшого
ру мент для цен тра лизованного управ ления учет ными записями и кон- сервера, включает необходимые офисные, графические, мульти-
фигу рацией таких служб, как элек тронная почта, прокси сервер, медийные, интернет-при ложения и серверное ПО.
служба доменных имен. MDS яв ляется основой для системы управ-
ления идентификацией поль зователей, разграничения досту па поль- Mandriva Corporate Server 4 Update 3 что подойдет вам

Сети
зователей к ин тернет ресурсам, квоти рования почтовых ящиков, пол-
ностью за меняет Microsoft Windows NT4, IIS, m-Daemon, работает
Дист рибу тив Mandriva Corporate Server предназначен для соз дания
корпоративного сервера, на базе продук та мож но соз дать интернет- страниц
с Windows, Linux и Mac. сервер, веб-сервер, поч товый, сервер печати, сервер баз данных, учебников
для всех!

ELinks, Alpine, Finch


сервер при ложений и др.
Linbox Rescue Server
Linbox Rescue Server (LRS) — пакет программ, предоставляющий функ- Mandriva Flash
ции локального и уда ленного управления ИТ-инфраструктурой предпри-
ятия. LRS включает функции инвентаризации программного и аппарат-
ного обеспечения, уда ленного управления компьютерами и серверами,
Mandriva Flash — дист рибу тив GNU/Linux, загру жающийся и рабо-
тающий прямо с USB-носи теля. Дист рибу тив включает необходимый
набор офисных при ложений и допускает обнов ление и установку
Git для /etc
а так же резервного копирования. Администратор может управлять ИТ- новых при ложений, представ ляя собой полноценное мобильное Машина времени для
инфраструктурой через веб-браузер с любого локального или уда лен-
ного компьютера.
рабочее место для работы на любом компьютере, под держивающем
загрузку с USB-уст ройства. системных настроек с. 28

Наименование Код Linuxcenter.Ru Цена, руб. MANDRIVA LINUX ЯВЛЯЕТСЯ OpenOffice.org Интернет из консоли
ОДНИМ ИЗ ПОПУЛЯРНЕЙШИХ
Для рабочей станции
Mandriva 2009.1 Spring PowerPack (DVD-box, техническая поддержка 12 месяцев) lc4942 1900
МИРОВЫХ ДИСТРИБУ ТИВОВ
ОПЕРАЦИОННОЙ СИСТЕМЫ
Бороздите просторы Сети,
Mandriva 2009.1 Spring PowerPack (DVD-box, техническая поддержка 6 месяцев) lc4923 1300 GNU/LINUX
не запуская X-сервер с. 30
Les Trophées du Libre 2009

Мобильное рабочее место Главные преимущества дистрибу-


тивов Mandriva — дру желюбный ин-
Mandriva Flash 2008.1 (Mandriva Linux на 8 Гб USB накопителе) lc3215 1875
терфейс, простота настройки, воз-
Корпоративные продукты можность легкого перехода поль-
LRS Сервер (Linbox Rescue Server, платформы Linux/Windows) зователей с Windows на GNU/Linux,
(лицензии на рабочие станции приобретаются отдельно)
Техническая поддержка на Mandriva Directory Server на 1 год
lc2856

lc3560
1690

5550
совмес тимость с широким спек тром
аппаратного обеспечения.
Дистрибу тивы Mandriva Linux сер-
Вещайте музыку Поговорим? Защита серверов
Лицензия и техническая поддержка
на Mandriva Linux Powerpack 2009 на 50 компьютеров lc3342 18 750 тифицированы по требованиям
ФСТЭК по 5 классу для СВТ и 4 уров-
Медиа-сервер для вашей Хитроумный Jabber- Nessus, Tripwire и Iptables
Пакет начальной поддержки Linbox Rescue Server
Сертифицированные ФСТЭК продукты
lc2821 99 000 ню контроля НДВ, что дает возмож-
ность использовать их при работе
домашней сети с. 46 бот на Python с. 66 обезопасят от угроз с. 80
Сертифицированный ФСТЭК 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 В каталоге агентства «Роспечать» — подписной индекс 20882
Linux на серверах и рабочих станциях. В каталоге «Пресса России» — подписной индекс 87974
С вопросами по продуктам Mandriva
вы можете обращаться в Mandriva.Ru
Также в Mandriva.Ru доступны:
� литература по Mandriva Linux;
Среди них: Правительство Москов-
ской облас ти, администрация Черни-
говского района Приморского края,
себя Левенгук, впервые
Тел.: (812) 309-06-86, (499) 271-49-55
Электронная почта: info@mandriva.ru
www.mandriva.ru
� услуги по установке, настройке и тех нической
под держ ке корпоративных продуктов
Mandriva.
Министерство финансов республики
Са ха (Яку тия), группа компаний ИМАГ
и многие другие.
заглянув в микроскоп.
Крис Браун недаром имеет ученую степень с. 42
Приветствие

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

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

Кто мы
После ярмарки нетбуков на странице 16, у нас остался только
один вопрос к команде LXF: если бы вы могли добавить един­
ственную функцию к нетбуку всех времен и народов, то что бы
это было?
Такие маленькие
ноутбуки
Нейл Ботвик
Полтора­два года назад нетбуки каза лись той па лочкой­выруча лоч­
Грэм Моррисон Майк Сондерс
Я бы заменил Этаноловые батареи Cберег бы ресурсы, кой, которая вынесет Linux в массы. Все мы помним восторги по поводу
web­камеру устрой­ с пивными элемен­ позволяя запускать Eee PC, ра дость по случаю появления ана логичных моделей у других
ством, определяю­ тами питания. Одну – не больше 3­х про­
щим невольное тебе, одну – мне... грамм сразу. Можно производителей... Увы, чуда снова не произошло. Да, про Linux узна ло больше
расширение радужки запатентовать идею? людей, но количество не перешло в качество – по крайней мере, в то качество,
глаза. которого можно было бы ожидать.
Кто­то ска жет, что все дело в неудачном выборе дистрибу тивов, но мне ка­
жется, причина в не оправдавшей себя бизнес­модели. Производители виде­
ли в нетбуках термина лы для мобильного доступа в Интернет, большие MID’ы,
где Linux (от Android до Maemo) действительно чувствует себя весьма уверенно.
Потребители же разглядели в них ма ленькие ноутбуки, которые легко носить
Эфраин Эндрю Грегори Энди Ченнел с собой для эпизодического решения стандартных за дач. Ответ: «В нем нельзя
Эрнандес-Мендоса Апплет, измеряющий, Я бы ничего не добав­
Фазированная плаз­ сколько вы выпили, лял, а просто взял
запускать ваши программы» на с. 20 все объясняет: если кто­то не хотел видеть
менная 40­ваттная и вычисляющий, имечко позвучнее, Linux на своем ПК, он вряд ли будет пользоваться им на нетбуке.
винтовка. Дробовик много ли теперь потре­ вроде «дешевый Проиграл ли Linux очередную битву? Пока что нет. Его преимущества для
с лазерным прице­ буется закуски. маленький ноутбук».
лом. 9­мм «Узи». компьютеров «одной за дачи» (хотя бы и работы в Интернете) по­прежнему
в силе, и Google уже готовится нанести новый удар, занимаясь разработ­
кой Chrome OS. Другая область, где свободное ПО готово показать себя – это
устройства на базе ARM, в каком­то смысле стирающие грань меж ду нетбу­
ком и тра диционным планшетом. Да и Windows, как известно, там запустить
не так­то просто.
Энди Хадсон Ник Вейч В общем, будущее обещает быть не безоблачным, но интересным.
Дэвид Картрайт
Распознавание Радиомаяк, чтобы Быстронадуваемый
отпечатков паль­ можно было найти стул/кресло/табурет, Валентин Синицын, главный редактор
цев. Не получится – нетбук после того, для этих бесконечных
тогда лазер с акулой когда моя ненагляд­ ожиданий в аэро­ info@linuxformat.ru
на голове. ная его «приберет». портах.

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


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

Август 2009 Linux Format 1


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

Обзоры Мегатест
GP2X Wiz ������������������������������� 8
Вторая попытка создать открытую игровую
консоль: наше мнение. нетбуков
Kdenlive ��������������������������������� 9
Редак тирование видеофайлов долгое время
остава лось больным местом свободного ПО,
но его, наконец, вылечили.
Мы взяли
Ulteo OVD ����������������������������� 10 восемь
Вы, наверное, слыша ли об онлайн­дистри­
бу тивах и, может быть, да же счита ли это популярных
бредом. Но Гаэль Дюваль рассудил иначе...
моделей
и мучили их,
пока они
не задымились
с. 16
Wiz — вторая крупная попытка создать
карманную игровую приставку, предпри­
нятая в Gamepark�
Что за штука... Профилирование с. 34
Jets’n’Guns ��������������������������� 11 APML
Стреляйте, стреляйте и еще раз стреляйте. Сообщите web-сайтам,
Если в этом достойном, кхм, продолжателе что вам интересно,
R-Type и есть какой­то сюжет – он вам и не читайте ерунду с. 38
не ну жен.

Заставьте код выполняться быстрее,


но сделайте это правильно�
Вернемся в старые добрые деньки:
суббота, парк, игровые автоматы, R-Type
и ZX­Spectrum внутри���� Люди говорят
OpenOffice�org 3�1 ����������������� 12
Выглядит лучше и имеет больше функций, Конечно, главный
но чуда не свершилось: он все еще ползает,
как улитка в сиропе. рецепт победы –
EnergyXT 2�5 ������������������������ 14 это делать хорошие
До MP3 были MOD’ы, и теперь вы снова
можете нарезать по ударным и всякое такое. проекты.
Алексей Балакин раскрывает
секрет успеха на Les Trophées du Libre с� 26

2 Linux Format Август 2009


Linux Mint 7
Свежее веяние в мире Ubuntu
Ulteo Дружелюбные к пользователю системы
выходят на новый уровень
Russian Fedora Remix 11 Fedora для отечественных пользователей
EduMandriva 2009 Spring LXDE Образовательный LiveCD
со скромными требованиями к ресурсам
...и много чего еще! с. 96

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


Начинающим

VCS для сисадмина ������ � � � � � � � � � � � � � � � � � 28 Basket и Sockso �������������������� 46


Не дайте идее создания собственного
Как Восстановление системы в Windows, только лучше: музыкального сервера сгинуть в пу чине
забвения: зафиксируйте и реа лизуйте ее.
храните конфигурационные файлы Linux­приложений в Git! GIMP
Она вся горит! ���������������������� 50

Интернет из консоли ���� � � � � � � � � � � � � � � � � � � 30


Накатил приступ вдохновения? За жгите им
какую­нибудь красотку в GIMP!

Просматривайте web­страницы в ELinks, читайте почту в Alpine, OOo Writer


Тесты по шаблону ���������������� 54
общайтесь с друзьями в Finch и забудьте про KDE 4! Факт: вопросы с несколькими вариантами
ответа можно генерировать в OpenOffice.org
на лету. Узнайте, как.

Звуковой редактор Sox � � � � � � � � � � � � � � � � � � 32 OOo Math


Кодируем формулы ������������� 58
Представьте себе ImageMagick, только для музыки: обрабатывайте Набор математических выра жений
аудиофайлы, как вам будет угодно, прямо из консоли. в OpenOffice.org совсем не похож на таковой
в Microsoft Equation, и от этого более мощен.
Узнайте, почему.
Сети

ПоДПиШиСь
Блокируем спам ������������������� 62
Пуленепробиваемые фильтры нежелательной
корреспонденции – лишний повод запустить
свой собственный сервер Postfix.

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


Создадим Jabber­бота ��������� 66
PDF­версию журнала в подарок! Разберитесь, как запрограммировать автоот­
ветчик, который будет говорить за вас: «при­
www.linuxformat.ru/subscribe/ вет», «нормально», «работаю» и «фотки нет».
Inotify
Iwatch и Incron ��������������������� 70
Постоянные рубрики Обилие букв ‘i’ вовсе не означает, что
мы пересели на Mac: просто мы решили
расставить все точки над событиями
Новости ������������������������ 4 Ответы ����������������������� 84 Через месяц ������������� 104 файловой системы.
События мира Linux глазами наших Проблемы Linux решены: файловые LXF122 будет у вас в руках раньше, TCP/IP
экспертов. системы для SSD­накопителей, чем выйдет Ubuntu 9.10.
резервное копирование,
Пишем Ping �������������������������� 72
Речь, конечно, не о том, чтобы набрать четыре
Les Trophées du Libre ��� 26 USB­модемы, awk, sed и ALSA.
буквы – мы затронем низкоуровневое сетевое
Побеседуем с создателем MathGL,
программирование в Linux и созда дим ана лог
победителем конкурса в категории Hotpicks ���������������������� 90
известной утилиты.
Sciences. Лучшие в мире программы
с открытым кодом. Программирование
Что за штука �������������� 38 Советы, часть 2 ������������������� 76
Сообщать ка ж дому сайту о том, Диск Linux Format � ������� 96 Продолжая череду ма леньких трюков
что вам интересно? Зву чит как Содержимое двустороннего и хитростей, мы рассмотрим выполнение
угроза приватности, но приглядитесь DVD под микроскопом. за дач от имени root и вывод на консоль
поближе, и вам, возможно, цветного текста.
понравится. Пропустили номер? ��� 103
Желаете знать, с чего нача лась Hardcore Linux
Рубрика сисадмина ����� 40 заинтересовавшая вас Сервер в безопасности �������� 80
Легкий путь к включению Linux­ серия статей? Вам сюда! Nessuss, Tripwire и другие: эта команда
машины в домен Active Directory, превратит ваш сервер в неприступный
укрепление SSH­сервера и ана лиз Наша команда всегда бастион.
сетевого трафика с Wireshark. рада подписать вас на LXF.
Электронная версия в подарок!

Август 2009 Linux Format 3


Новости

Новости
ГЛАВНОе: Нетбуки на ARM и мобильный Linux Mono: за и против
PostgreSQL 8�4 и VirtualBox 3�0

Нетбуки: Будет ARM –


будет Linux Рубрику ведет
еВГеНИй КРеСТНИКОВ

Наверное, кое­кому тема «мобильного» Linux слегка поднадоела.


Но что делать, если это сейчас одно из основных направлений развития
свободного ПО и уж точно – самое заметное для простых пользователей.

A
ndroid, Moblin, Maemo, Ubuntu ся в прода же. Разумеется, работать маши­ выпускает интернет­планшеты, и подоб­
Netbook Remix (список мож­ ны будут под управлением Linux. Разра­ ное расширение линейки продук тов ком­
но продолжить) – еще недав­ ботчики ПО готовятся к этому событию, пании выглядит логично, особенно если
но эти названия ма ло кто знал, не считая и сейчас ак тивно идет процесс перено­ учесть недавние инициативы Nokia в об­
некоторого количества энтузиастов. Сей­ са популярных дистрибу тивов на ARM ласти открытого ПО. Есть и не очень ра­
час реа лизации встраиваемого Linux у всех (мы уже писа ли о сборке Ubuntu; кро­ достные события: представители ASUS
на слу ху. Но речь пойдет не о них. Что ка­ ме того, есть информация о портиро­ заявили о планируемом прекращении по­
сается ПО – я хочу отметить только тен­ вании Android, а так же недавно была ставок нетбуков с предустановленным
денцию к универса лизации встраиваемых выпущена сборка Slackware для ARM). Linux. Естественно, что ожидаемый многи­
систем на основе GNU/Linux. Разработ­ Кстати, говоря о нетбуках на ARM, ми Eee PC на ARM пока выпускаться не бу­
ки, изначально предназначенные для те­ стоит отметить платформу NVIDIA дет. Но все не так страшно – поклонники
лефонов, пытаются адаптировать для Tegra 600. Она относится к так назы­ Eee PC всегда смогут установить на свои
нетбуков, интернет­планшетов и дру­ ваемым «системам­на­кристалле» машины Linux самостоятельно. А если
гих гад жетов. За примерами да леко хо­ (System­on­Chip, SoC) и содержит учесть недавно появившуюся у ASUS про­
дить не на до – нетбуки под управлением ядро ARM­11, графический контрол­ цедуру возврата денег за предустановлен­
Android должны появиться на рынке уже лер и периферию. Разработана Tegra ную версию ОС Windows, платить «на лог
в этом году (кстати, Android LiveCD для в основном для интернет­планшетов, Microsoft» им, скорее всего, не придется.
Asus EeePC можно скачать уже сейчас). однако первый нетбук на ее основе должен Вообще, если говорить о продвижении
NVIDIA Tegra
В общем, не нужно быть пророком, чтобы появиться уже в сентябре (выпустит его Linux в сегмент нетбуков, стоит признать,
серии 600
понять: скоро два направления сольются, работает на уровне компания MobInnova). Судя по пресс­ре­ что оно идет не так быстро, как ожида­
и мы получим универсальные встраивае­ продвинутых лизу, за $200 покупатель получит устрой­ лось – многие пользователи предпочитают
мые ОС для любого типа мобильных уст­ настольных ство с диагона лью матрицы 8,9”, оснащен­ покупать машины с Windows XP либо уда­
ройств. Собственно о программном обес­ компьютеров� ное адаптерами Wi­Fi и 3G. За явленное лять Linux и устанавливать Windows само­
печении более говорить нечего – стоит время работы аккумуляторов – 5–10 ча­ стоятельно. Перспек тивы, конечно, ра дуж­
упомянуть только о грядущем переходе сов в режиме просмотра HD­видео, либо ные, но с прода жами пока туговато. А еще
платформы Maemo с GTK+ на Qt, но эта но­ до 24­х дней воспроизведения аудиокон­ стоит учесть приближающееся нача ло
вость ожидаемая, если учесть что разра­ тента при закрытом экране. продаж Windows 7. Наверняка Microsoft
боткой Qt сейчас занимается Nokia. Еще одно интересное событие (не отно­ выпустит редакцию новой ОС, предназна­
Перейдем к «железу». Интересных но­ сящееся к ARM) – компания Nokia планиру­ ченную для нетбуков – они не за хотят те­
востей о Linux­телефонах пока нет (выпуск ет начать выпуск нетбуков. Подробности рять этот рынок. Разумеется, «семерка»
новых моделей не в счет – по ним уже «от­ пока неизвестны, однако этот ход впол­ потеснит Linux куда сильнее, чем устарев­
стрелялись» новостные порта лы). Сего­ не ожидаем – финский гигант уже давно шая Windows XP. Так что на деж ды на серь­
дня мы поговорим о нетбуках. В последнее езное продвижение свободных ОС в этом
время производители часто ра дуют сто­
ронников альтернативных ОС. Во­пер­
«Идет процесс сегменте я связываю только с платформой
ARM – других вариантов нет. Пред лагаю
вых, стоит отметить большое количество
анонсов нетбуков на основе архитек туры
переноса дистри- дож даться конца года и посмотреть, как
будут развиваться события; пока делать
ARM – к концу 2009 г. они должны появить­ бутивов на ARM.» прогнозы рановато.

4 Linux Format Август 2009


Новости

Mono: Быть или не быть?


Вопросы рисков, связанных с использованием Mono,
обсуждаются столько лет, сколько существует этот проект.

Н
едавно спор вновь перешел (которой не так давно присвоили офи­
в ак тивную фазу. Сложно ска­ циальное кодовое имя Constantine) будет
зать, что ста ло тому причиной – исключена базирующаяся на.NET/C# про­
ситуация вокруг патентов на использован­ грамма Tomboy (ее заменят на Gnote). Та­
ные в Mono технологии не изменилась. Тем ким образом, Mono будет полностью уда­
не менее, интернет­издание iTWire (www. лен из состава установочного LiveCD
itwire.com) опубликова ло критическую Fedora; правда, в репозиториях дистрибу­
статью, речь в которой шла о невозмож­ тива Tomboy и Mono останутся. В Debian
ности получения лицензий на использо­ Team придерживаются сходной полити­
вание запатентованных технологий. Более ки. Недавно представители проек та опуб­
того, до сих пор достоверно неизвестно, ликова ли официальный ответ на заяв­
существуют ли какие­либо патенты на C# ление Столлмена, в котором сообщили,
и CLI. По крайней мере, корреспондент что Debian не будет включать Mono и осно­
iTWire не смог получить ответа на свои во­ ванные на нем программы в установку по
просы ни в ECMA, ни в Microsoft. Журна­ умолчанию. На данный момент в Debian Ричард Столлмен долго хранил молчание
листы предполагают, что патенты все же есть три метапакета, определяющих со­ по поводу Mono, но его позиция не стала
существуют, но в Microsoft сознательно став среды GNOME: gnome-core, gnome- сюрпризом�
затягивают предоставление информации desktop и gnome – минимальная, базовая
по ним, поскольку позиция компании по и полная комплек тации. Mono и завися­ безболезненно убраны из окру жения ра­
этому вопросу еще не выработана. Есте­ щие от него приложения будут включены бочего стола, но есть шанс, что делать это
ственно, после такой публикации возник только в последнюю. Официальная пози­ и не придется. Пока верстался номер, ком­
очередной «спор на пустом месте». Ри­ ция Технического совета Ubuntu (Ubuntu пания Microsoft заявила, что стандарты C#
чард Столлмен [Richard Stallman], до это­ Technical Board) совершенно другая – Mono и CLI (ECMA 334 и ECMA 335) теперь под­
го никак не обозначавший свое отношение па дают под действие Community Promise
к проек ту, под лил масла в огонь, высту­
пив с предостережением против исполь­
«Позиция практиков (Обещание Сообществу), имеющего юри­
дическую силу. Таким образом, корпора­
зования Mono для разработки свободного
ПО. Позицию основателя FSF можно выра­
отличается от мнения ция добровольно отказа лась от патентного
преследования разработчиков. Вопросы,
зить примерно так: «В системе GNU есть аналитиков.» связанные с реа лизацией прочих запатен­
место для всех языков программирования, тованных технологий (таких как ASP.NET,
но следует избегать зависимости свобод­ и базирующиеся на нем программы входят ADO.NET и Windows Forms) пока остаются
ных программ от потенциально опасных во многие редакции дистрибу тива (в том нерешенными, но они применяются в сво­
технологий». Впрочем, едва ли это ста ло числе базовую). Исключать из­за гипоте­ бодном ПО в очень ограниченных объемах.
для кого­то сюрпризом. тических патентных проблем (опасность Заявление Microsoft ста ло ответом
Гораздо интереснее реакция разра­ которых, по мнению членов Технического на запрос вице­президента Novell и веду­
ботчиков нескольких ведущих дистри­ совета, сильно преувеличена) полезное ПО щего разработчика Mono Мигеля де Ика­
бу тивов. В рассылке fedora­desktop­list из Ubuntu никто не собирается. сы [Miguel de Icaza], который в свете но­
появилась информация, что из Fedora 12 Обратите внимание, как отличается по­ вых обстоятельств заявил о разделении
зиция прак тиков от мнения ана литиков: проек та на две ветки: реа лизующую стан­
здесь вопрос о возможности использо­ дарты ECMA и свободную от патентных ог­
вания Mono вообще не возникает – речь раничений, а так же «несвободную». Это
идет только о включении Mono­прило­ еще не полная победа, но теперь у про­
жений в установку по умолчанию. И это, тивников Mono будет меньше аргументов.
на мой взгляд, правильно – зачем отказы­ Кстати, да леко не все эксперты счита­
ваться от хорошего инструментария, да же ют опасность Mono серьезной. Джо Шилдз
если правовая ситуация вокруг него не оп­ [Jo Shields], участник Debian Mono Group,
ределена? В случае появления патентных Debian CLI Applications Team, и Debian CLI
претензий выбросить спорные пакеты Libraries Team, написал статью, в которой
из дистрибу тива никогда не поздно. С дру­ попытался дать разверну тый ответ про­
гой стороны, эта правовая неопределен­ тивникам Mono и рассказать о технических
ность мешает развитию проек та – исполь­ преимуществах этой платформы. Несмот­
зовать Mono для разработки критически ря на то, что г­н Шилдс говорил от своего
Мигель де Икаса
важных приложений не рискуют да же имени, его точка зрения совпа ла с точкой
решил раздвоить
Mono: теперь в команде GNOME. зрения Технического совета Ubuntu [Шилдс
его можно будет На сегодняшний день все Mono­зависи­ около года занимается под держкой Mono
называть Стерео� мые приложения могут быть относительно в этом дистрибу тиве, – прим. авт.].

Август 2009 Linux Format 5


Новости

открытое По:
Новости
короткой строкой
Компания Google анонсирова ла

Вести с полей
Google Chrome OS – открытую
легковесную операционную систему
на базе Linux и новой оконной среды,
предназначенную для работы с web­
приложениями в Google Chrome. Изна­
чально Chrome OS будет нацелена

Обычно мы не освещаем в Новостях выход новых на нетбуки архитек тур x86/ARM. Про­
ект независим от Android; первые
версий программных продуктов: соревноваться устройства ожидаются во второй поло­

с онлайн­изданиями – занятие бессмысленное, вине 2010 года.

а для углубленного изучения есть Обзоры. Запущен ELRepo – репозиторий

Однако пройти мимо «большого» релиза одной с драйверами различных уст­


ройств для RHEL и совместимых дист­
из самых популярных СУБД с открытым кодом рибу тивов. Цель проек та – продви­
было невозможно. Итак, встречайте: PostgreSQL 8.4. жение RHEL/Fedora на рабочие станции
и настольные компьютеры.

В
ыпуск состоялся после 16 меся­ о тенденциях развития продук та. Судя по Стартовал сервис Ksplice Uptrack,
цев разработки. Согласно офици­ реа лизуемому функциона лу, разработчи­ который позволит обновлять
альному пресс­релизу, в новую ки PostgreSQL явно ориентируются на кор­ ядро Ubuntu 9.04 без перезагрузки
версию вошло 293 улучшения и новых поративный рынок. И с такими темпами системы.
функции. Свои усилия разработчики со­ развития они скоро смогут на равных по­
средоточили на оптимизации работы сер­ Opera Software открыла спе­
вера, а так же на упрощении процесса ад­
министрирования баз данных, написания
«Возможностей тонкого цификацию Scope Transfer
Protocol. Он используется для взаимо­
запросов и программирования. Наконец­
то появилась возможность многопоточ­
администрирования действия средства отладки Dragonfly
с браузером.
ного восстановления данных, благодаря очень много.»
чему скорость развертывания резервных Нача лись прода жи Mandriva Linux
копий БД увеличилась в 8 раз. Кроме того, спорить с коммерческими СУБД. Соб­ Powerpack 2009.1, выпущенного
администратор теперь сможет назначать ственно, PostgreSQL успешно конкурирует специально для российского рынка.
права доступа на столбцы таблиц и раз­ с ними уже сейчас – в качестве приме­
личные лока лизации для баз данных. ра использования открытого SQL­серве­ Открыт доступ к основной ветке
В общем, новых возможностей «тон­ ра на высоконагру женных системах мож­ разработки KDE 4.4. Приме­
кого» администрирования и монито­ но привести Skype. Серверы баз данных чательно, что это произошло еще
ринга очень много; поговорим лучше последнего, рассчитанные на миллиард до выхода KDE 4.3.
пользователей,обслу жи­
вают 350 млн абонентов, Исходные тексты Palm WebOS
из которых 10–15 млн по­ опубликованы по лицензии GPl.
стоянно работают в ре­
жиме онлайн. Десятки Проект Sourceforge кардинально
терабайт информации изменил дизайн порта ла.
и более 20 тысяч запросов в секун­
ду… если это не enterprise­уровень,
то я не знаю, что такое «enterprise».
Еще можно рассказать о компании
Yahoo, представители которой ут­
верждают, что они созда ли са­ шений множество, но мы отметим толь­
мую большую базу данных в ми­ ко появление Direct3D 8/9 для гостевых
ре – ее объем составляет около двух Windows­систем, под держку OpenGL 2.0
петабайт, а число событий в су тки до­ для Windows­, Linux­ и Solaris­гостей, а так­
ходит до 24 миллиардов. Если ве­ же возможность использования до 32­х
рить этому за явлению, полу чается, виртуальных CPU в гостевом SMP (только
что база данных Yahoo не только для процессоров, под держивающих тех­
самая большая на Земле, но и са­ нологии VT­x или AMD­v). Еще одна при­
мая высоконагру женная. Разумеет­ ятная новость – VirtualBox появился в кол­
Этот слоник
ворочает базой ся, компания использует PostgreSQL – лекции портов FreeBSD; правда, на момент
данных Yahoo – правда, модифицированный. написания заметки там была только вер­
чуть ли не самой Следует упомянуть и еще об одном сия 2.2.51, но перенос третьей версии – во­
большой на Земле� «крупном» релизе – VirtualBox 3.0.0. Улуч­ прос времени.

6 Linux Format Август 2009


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

Сегодня мы рассматриваем:
АЛеКСей ФеДОРЧуК
его слабости — mass
storage, разметка
диска и файловые
системы�
GP2X Wiz ....................................................... 8 Jets’n’Guns ................................................. 11
Второе пришествие открытой игровой консоли, на кото­ Те из вас, кто считал лучшими играми R-Type, Nemesis
рой можно запускать все что угодно: от эмуляторов дру­ и Side Arms – ликуйте! Стрелялки с боковой прокруткой
NILFS выходит гих приставок до XBill 2.1. Поможет ли оно поднять оцен­ снова в моде, благодаря стараниям ребят из Linux Games
из тени ку, которую мы да ли ее предшественнице? Publishing.

Kdenlive 0.7.4 ............................................. 9 OpenOffice.org 3.1 ................................ 12

Я
дро Linux версии 2.6.30 пора­
Одни программы достигают версии 5.0, не умея толком «...И зашел у них спор, кто быстрее. Братец Кролик гово­
дова ло нас, в числе прочих да же проработать без Segmentation fault, а другие лихо рит, что обгонит Братца Черепа ху, а... тот об заклад готов
новшеств, под держкой NILFS справляются со своими за дачами, имея номер меньше биться, что обгонит Братца Кролика». Конец истории пом­
(New Implementation of a Log­Structured единицы. Этот видеоредак тор – явно из последних. нят все, так действительно ли скорость – это главное?
File System) – Новой реа лизации жур­
нально­струк турированной файловой
Ulteo OVD ................................................... 10 EnergyXT 2.5 ............................................. 14
Если ваши друзья никак не решаются установить Linux Возможно, лучшее интегрированное средство для
системы. И действительно, среди дру­ по­настоящему, последний релиз от команды Гаэля Дю­ создания элек тронной музыки из всех, имеющихся
гих ФС последнего поколения, таких ва ля поможет им приобщиться к миру свободного ПО, в Linux. Под завязку набито функциями, новыми эффек­
как более известные ext4 или btrfs, открывая полноценный рабочий стол Linux в браузере. тами и звуками.
она выделяется рядом особенностей.
Во­первых, журна лирование осу­
ществляется по принципу log­файлов, GP2X Wiz c. 8 Jets’n’Guns c. 11
то есть без перезаписи изменений,
а лишь с дополнением журна ла
изменения состояния файловой
системы.
Во­вторых, имеется возможность
непрерывного создания снимков,
которые могут быть примонтированы
в контрольных точках параллельно
основной файловой системе – для ис­
правления как системных сбоев, так
Неудобный джойстик прежнего GP2X сменился Готовьтесь: когда Большой адронный коллайдер
и пользовательских ошибок.
на дирекционную площадку� наконец­то починят и запустят, мир может потерять
В­третьих, снимки создаются одно измерение�
не пу тем полного резервирования
файловой системы, а лишь записью
ее изменений в свободные блоки.
Все эти особенности должны спо­
Наш вердикт: Пояснение
собствовать повышению как на деж­
ности, так и производительности. Все попавшие Выдающиеся
О первой говорить еще рано: в обзор продукты
оцениваются
решения могут
получить престиж­
Вердикт
NILFS пока что имеет статус экспе­ по одиннадцати­ ную награду «Top
риментальной системы и не реко­ балльной шкале Stuff». Номинан­
Google Earth
Разработчики: Google
мендуется для повсеместного ис­ (0 – низшая оцен­ тами становятся
Сайт: http://earth.google.com
пользования. Но ее быстродействие ка, 10 – высшая). лучшие из луч­
Цена: Бесплатно по закрытой лицензии
Как правило, ших – просто высо­
оказывается вполне на уровне Функциональность 10/10
учитываются кой оценки здесь
подруг­конкуренток – ext4 и btrfs. функциональ­ недостаточно. Производительность 9/10
С прикидочными результатами ность, производительность, Рассматривая свободное Простота использования 9/10
простота использования и цена, ПО, мы обычно указываем Оправданность цены 9/10
можно ознакомиться на моем web­
а для бесплатных программ – предпочтительный дистрибу­ Если весь мир – сцена, то Google
сайте: http://alv.me. Earth – театр. Простая в использова-
еще и документация. Кроме тив. Иногда это означает ком­
того, мы всегда выставляем пиляцию из исходных текстов, нии, захватывающая и ободряюще
alv@posix.ru общую оценку, демонстри­ но если разработчики рекомен­ практичная программа.
рующую наше отношение
к продукту.
дуют Autopackage, мы следуем
этому совету. Рейтинг 9/10

Август 2009 Linux Format 7


Обзоры Игровая консоль

GP2X Wiz
Взор Саймона Пикстока туманится от ностальгии при виде портативной
игровой платформы – эмулятора аркад.

В
се любят порой обратиться к рет­
Вкратце ро, и GP2X Wiz поможет вспом­
нить былое. Это модифициро­
Портативное ванная GP2, оснащенная сенсорным
игровое уст­ экраном под стилус, процессором ARM
ройство на базе на 533 Мгц и слотом для карты памяти
Linux и откры­
того ПО для с играми. Но самое главное – устройство
ненаигравшихся работает на Linux. Wiz соединяется с ком­
взрослых� пьютером через USB­кабель (приобрета­
ется отдельно), который, помимо прочего,
слу жит для подзарядки. После подклю­
чения вас спросят о том, какую память ис­
Спецификация
пользовать для передачи: встроенную или
Процессор SSD­карту. Выбранное хранилище поме­
533 МГц щается на рабочий стол в виде съемно­
Экран OLED го накопителя, что обеспечивает обмен Как приятно вспомнить детство, вновь окунувшись в атмосферу любимой игры…
ОЗу 1 ГБ файлами. только, пожалуйста, не нарушайте закон!
Поддерживае­
OLED­экран устройства чистый и яр­
мые форматы
кий, а интерфейс состоит всего из шес­ бы «достучаться» до него, придется ткнуть вить работать, а затем отыскать ROM для
MPEG4, DIVX,
XVID, JPEG, BMP, ти значков: SD­карта, встроенные игры, не раз. В итоге консоль установила наш загрузки – тяжелое испытание. Wiz яв­
GIF, PNG, WAV, флэш­игры, развлечения, модуль запуска «умственный возраст» как 61 год – ну и ну! но рассчитан на старые консольные игры,
OGG, TXT, и настройка. Встроенные игры – просто Углубленное исследование показа ло, что но ведь ROM защищены авторскими пра­
Flash 8.0 клоны старой классики типа Snake, Tower на экране сбито расположение ак тивных вами, поэтому добыть их да леко не просто
Defence и т. п. Есть пять флэш­игр, но, зон. Повторной ка либровкой мы снизи­ (да и легальность применения сомнитель­
за незнанием корейского, нам не уда лось ли одрях ление ума сразу на 20 лет – этак­ на). Короче, наше пу тешествие по аллее
то лучше! воспоминаний больше напомина ло штурм

«Wiz задевает в вас Ностальгия


Эвереста по северной стене, чем обещан­
ную прогулку в парке.
все струнки перво- На Wiz уже портировано несколько кон­
сольных эмуляторов – например, Megadrive
Wiz за девает в вас все струнки пер­
вобытного хакера, хотя и через хромые
бытного хакера.» (Genesis) и SNES; вскорости ожидается кнопки, и это отличная игрушка для лю­
портирование Mame и пр. Однако обрести бителей полного контроля над игровым
расшифровать их названия. Впрочем, бе­ их не удастся без розыскных мероприятий: процессом без перепрошивки стандарт­
да невелика: это игры для тренировки на английском сайте Wiz пока нет рабочих ной консоли. Если же вы игрок от слу чая
мозга, и в них нужно сопоставлять сим­ ссылок. Материа лы содержатся в основ­ к случаю и не намерены тратить полжизни
волы или заниматься простой арифме­ ном на форумах, требующих регистрации, на поиски левого контента, сидите­ка луч­
тикой. В разделе развлечений можно а так же на сайтах фанатов. ше со своей PSP или DS.
запускать аудио­ и видеофайлы и про­ К счастью, у Майка уцелела коллек­
сматривать изобра жения. ция ROM, и вскоре мы уже от тягива лись

GP2X Wiz поме­


Игры требуют пользования сенсор­ с Sonic the Hedgehog и Road Rash на эму­ Вердикт
ным экраном и стилусом. Правда, чув­ ляторе Genesis. Ка­айф… Правда, тут вы­
щается в кар­ ствительность экрана недостаточна: что­ явился еще один просчет дизайна: левый
мане брюк —
манипулятор имеет тра диционную конст­
GP2X Wiz
но не забудьте
вынуть оттуда рукцию, а правый представляет собой че­ Разработчик: Green Park Holdings
тыре отдельных кнопки, расположенные Сайт: www.globalgph.com
ключи, а потом уж
Цена: около $250
садитесь� крестом. Так вот, эти кнопки слишком ма­
лы и слишком притисну ты друг к дру­ Функциональность 8/10
Производительность 8/10
гу, очень неудобно. Кроме того, при за­
Простота использования 7/10
грузке ка ж дого нового уровня громкость Оправданность цены 8/10
звучания выставляется на максимум: это
неприятно, если вы на ходитесь в обще­ Чтобы добиться оптимальных
результатов, придется изрядно
ственном месте (а при использовании на­ попотеть.
ушников еще и больно).
Отметим так же, что найти нужный эму­
лятор, скопировать его куда на до, заста­
Рейтинг 7/10
8 Linux Format Август 2009
Редактор видео Обзоры

Kdenlive 0.7.3
В наше время не иметь редактора видео – дурной тон. Энди Ченнел
проверяет, как смотрится Linux на фоне iMovie и Windows Movie Maker…

В
идео всё глубже проникает в нашу
Вкратце жизнь, а вот видеоредак торы для
Linux, похоже, отстают от подобных
Комплект для приложений для других ОС. Бесспорно,
традиционно­ Kino хорош – но освоить его не так­то лег­
го нелинейно­ ко, а PiTiVi еще сыроват для постоянно­
го редак тирова­
ния видео/аудио� го использования. И тут, словно луч света
См� так же: PiTiVi в темном царстве, появляется Kdenlive –
и Kino� отважный новичок с претензиями на попу­
лярность Final Cut и Premiere.
Kdenlive – это нелинейный видеоре­
дак тор, использующий знакомый под ход
к работе с видеоизобра жением: времен­
ную шка лу. Добавление и подрезка клипов
тоже знакомо по другим приложениям, как
и управление медиа­контентом.
При первом запуске экран перегру жен
элементами, но их можно закрывать, от­
крывать и масштабировать, в соответствии
с выполняемой работой. Например, при за­
хвате видео мы закрыли окна эффек тов,
переходов и временной шка лы и сконцен­ Kdenlive справится со всеми аудио­ и видеодорожками, которые «вывезут»
трирова лись на самом процессе; затем, ваши процессор, память и диски�
в ходе грубой подгонки, вернули времен­
ную шка лу с монитором клипов назад. в таком режиме (да же на одном мониторе) экранной графики, и т. д. Все эти эффек­
в ходе наших тестов программа постоянно ты можно применять к ключевым кадрам,

«При такой гибкости «сыпалась». В остальном приложение бы­


ло на удивление стабильно.
получая весьма изощренные компози­
ции. Непосредственный рендеринг эф­
легко сосредоточиться Кадры решают все
фек тов, включая сгруппированные, рабо­
тает безупречно.
на конкретной задаче.» После импорта клипов работа с филь­ Короче, блестящее приложение для ра­
мом сводится к перетаскиванию отрывков боты с видео. Освоить его недолго, пользо­
При подобной гибкости, особенно на временную шка лу и подгонке их инстру­ ваться несложно, и программа необычайно
в сочетании с полноэкранным режимом ментом Razor [Лезвие]. Процесс интуитивно мощная. Отличный выбор и для профес­
(Ctrl+Shift+F), легко полностью сосредото­ ясен; отдельного упоминания стоит ползу­ сионального видеомонта жера, и для лю­
читься на конкретной за даче. Логично бы­ нок Zoom [Масштабирование], облегчаю­ бителя, записывающего домашнее видео
ло бы предположить пригодность Kdenlive щий переход меж ду общим и детальным на DVD.
к работе на нескольких мониторах. Однако видами. Удобно и контекстное меню по пра­
вому щелчку: обращаться к основной стро­
ке меню приходится довольно редко. Вердикт
Свойства навскидку Подогнав клипы к временной шка ле,
оформляйте фильм встроенными эффек­
тами. Они тоже добавляются на временную
Kdenlive 0�7�3
шка лу перетаскиванием, а объединить их Разработчик: Kdenlive Team
или перетасовать их порядок поможет ок­ Сайт: www.kdenlive.org
Цена: бесплатно под GPL
но Effects Stack [Группировка эффек тов].
Эффек ты логично подразделяются на ви­ Функциональность 9/10
Производительность 9/10
део, аудио и «особые», причем для ка ж до­
Простота использования 7/10
го предусмотрена группа настраиваемых Документация 9/10
параметров. Типов перехода всего четы­
ре – вроде и немного; но, например, пе­ Мощный, удобный и понятный –
Простой интерфейс Форматы файлов программы начального уровня
Редактирование аудио Среди вариантов вывода реходы типа Luma снабжены массой раз­ для прочих платформ отдыхают.
и видео интуитивно понят- можно обнаружить едва личных режимов растворения, зату хания
но, и не ценой производи-
тельности.
ли не любой из известных
форматов.
или вытеснения; тип Compositor обеспе­
чивает разделение кадров, добавление
Рейтинг 8/10
Август 2009 Linux Format 9
Обзоры Тонкий клиент

Ulteo OVD 1.0


Очередное детище Гаэля Дюваля, Open Virtual Desktop –
виртуальный рабочий стол прямо в браузере. Маянк Шарма проверяет,
достоин ли новый «член семьи» своей родословной.

Г
аэль Дюваль [Gael Duval] всегда
Вкратце был трудягой. Человек, подарив­
ший нам дру желюбный дистрибу­
Виртуальный тив Mandrake (позже – Mandriva), был уво­
рабочий стол, лен из основанной им самим компании
поддерживаю­ в 2006 году, и сразу же занялся проек том
щий и Linux­, под названием Ulteo.
и Windows­прило­
жения� Среди про­ Сейчас перед нами первый стабиль­
приетарных аль­ ный продукт семейства Ulteo. Open Virtual
тернатив—VMware Desktop (OVD) – это система, исполь­
View и Sun VDI� зующая одну или две серверных маши­
ны (одна для Linux­, другая для Windows­
приложений), чтобы обслу жить несколь­
ко тонких клиентов через виртуальный
рабочий стол в окне браузера. Осо­
бая кру тизна в том, что работать можно
на любой системе­хосте.
По су ти, OVD не такая уж революция – OVD безопасно доставляет приложения через SSH­туннели и умеет, согласно документа­
система построена на базе инфраструк ту­ ции, обслуживать одновременно 20 пользователей на 1­ГБ ОЗу многоядерной машины�
ры Virtual Desktop Infrastructure (VDI); это
просто вывод сугубо промышленной тех­ но догадаться) обслу живает Linux­прило­ Администрирование так же осуществ­
нологии «в массы». Примерно то же Гаэль жения. Windows­приложения обслу жива­ ляется с помощью менед жера сеансов,
в своё время проделал с Mandrake Linux. ются Windows­агентом; его надо устано­ давая возможность устанавливать тайм­
вить на отдельный экземпляр Windows ау ты, скрывать или отобра жать значки ра­
Развяжем рюкзачок Server 2003 с настроенной службой терми­ бочего стола, переназначать клавиши и за­
Два основных компонента, составляю­ на лов. давать язык интерфейса.
щих Linux­половину OVD – сервер прило­ Звучит пугающе, но на прак тике всё В ходе наших тестов приложение
жений и менед жер сеансов; оба откры­ просто. Для основных Linux­компонен­ без труда справлялось с обслу живанием
тов есть двоичные пакеты, а процесс ус­ двоих пользователей на виртуальной ма­

«OVD несет сугубо тановки хорошо документирован. Сервер


и менед жер сеансов можно поставить
шине со 128 МБ виртуа лизированного ОЗУ
(двухъядерный хост).
промышленные на одну и ту же машину, а специальный
DVD позволит установить весь комплект
В буду щем разработ чики Ulteo обеща­
ют функ цию запуска при ложений по на­
технологии в массы». на измененную копию Ubuntu. Windows­ жатию гиперссылки, без разворачивания
половина устанавливается по желанию. всего рабочего стола. Пока же остаётся
ты и бесплатны. Менед жер сеансов – это Замечательно то, что OVD можно сцепить наблюдать, потянутся ли к OVD поль зо­
web­консоль для настройки клиентских с сервером службы ката логов – под дер­ вате ли.
машин, а сервер приложений (как нетруд­ живаются и Active Directory, и LDAP. Вся ра­
бота делается через серверы приложений,
и OVD можно применить в системе «тонких Вердикт
Свойства навскидку клиентов», храня файлы на сервере CIFS.

Интерфейс Ulteo Open Virtual Desktop


OVD поставляется с пакетом готовых Разработчик: Ulteo
Linux­приложений, включая OpenOffice. Сайт: www.ulteo.com
Цена: бесплатно под GPL
org, Firefox, Adobe Reader и GIMP. Можно
установить и другое ПО, указав название Функциональность 9/10
Производительность 9/10
в менед жере сеансов: необходимая про­
Простота использования 9/10
грамма будет получена из специального Документация 8/10
репозитория через apt-get. Приложения
можно закреплять за отдельными поль­ OVD от Ulteo – система тонких кли-
Всё схвачено Коллективизм ентов, идеальная для корпоративной
Встроенный распределитель Органы управления обес- зователями, а так же объединять по груп­ работы при смешении платформ.
нагрузки позволяет выбрать печивают кол лективное со- пам. Перечень Windows­приложений кон­
лучший из нескольких серве-
ров приложений.
трудничество на общем ра-
бочем столе.
тролируется через службы термина лов
из­под Windows Server.
Рейтинг 10/10
10 Linux Format Август 2009
Стрелялка Обзоры

Jets’n’Guns Gold
Быстрее ударь, срочно прокачайся – и снова бей, бомби, круши! Ник Вейч
снимает стресс от супермаркета при помощи старомодного развлечения.

П
ри мыслях об играх, которые
Вкратце непременно следует портировать
на Linux, стрелялки с боковой
Стрелялка прокруткой приходят на ум да леко не пер­
с бесподобной выми. Они достигли вершин в R-Type, за­
графикой� См�
так же: Project тмившей арка ды конца 80­х, и хотя были
Starfighter� ориентированы на ящики, глотающие мо­
неты в обмен на адрена лин, всё же манят
и игроков с настольными ПК. Преж де чем
браться за их доработку, неплохо бы вы­
брать наилучший вариант.
В Jets’n’Guns на лицо все классиче­
ские элементы жанра: бодрящий саунд­
трек, настраивающий на агрессивный
лад; простая система управления; эле­
мент стратегии (ну, или тень намека на не­
го); невообразимый арсенал воору жения,
а так же отличная, сверхнасыщенная гра­
фика. Да же сюжет есть!.. Ну, это я пого­
рячился, но оформленные в умеренно­
комическом стиле панели в переходах
меж ду уровнями придают игре известную
Потом придется освоить модифицированный биплан и стрелять� Много стрелять�
связность.
Стреляя во всё, что шевелится, зара­
батывайте деньги и покупайте еще более Можно составлять комплек ты воору­ обстоит дело и с некоторыми другими кла­
разрушительное ору жие – вот и вся сказ­ жения, сохранять их и переключаться ме­ вишами. Пользователям Fedora, чтобы за­
ка. Кстати, вам дается несколько единиц ж ду разными комплек тами во время иг­ ставить игру работать, придется шаманить
ры – приятное добавление. Да и полезное, с командной строкой, так как программа

«На 42-х уровнях если приходится иметь дело то с наземны­


ми целями, то с эскадрильями самолетов,
едва ли сможет сама найти библиотеки
OpenGL (хотя под Ubuntu на тех же маши­
немало тактических то с бронетехникой. нах всё идет как на до!).
Трехчасовой (как минимум) блестящий
вариаций.» Идем вразнос спек такль, щедро пересыпанный юмором,
На 42­х уровнях разрушения нема ло так ти­ по стандартам коммерческих игр впол­
ору жия – и это один из шагов J’n’G впе­ ческих вариаций, но все они сводятся к по­ не стоит запрошенных денег. Да, вы уже
ред по сравнению с прототипами. Пуш­ вышению эффек тивности стрельбы. Из­ видели все это раньше – но, наверное,
ки это, ракеты или бомбы, зависит от ти­ редка попа даются несложные загадки, не на столь высоком уровне.
па носителя (его тоже можно обновить). связанные со вскрытием ору жейных скла­
дов: секреты, которые нужно разга дывать,
бонусные уровни, которые нужно вскры­ Вердикт
вать, кровавые сцены, на которые сто­
ит посмотреть – и всё это на фоне одно­
го из лучших визуальных оформлений
Jets’n’Guns Gold
для Linux (необходима видеокарта с под­ Разработчик: Rake in Grass/ LGP
держкой OpenGL). Несмотря на скромное Сайт: www.linuxgamepublishing.com
Цена: £15
разрешение (всего 800 × 600), графика
впечатляет. Функциональность 6/10
Производительность 7/10
Единственное реальное неудобство
Простота использования 7/10
(кроме скуки, усиливающейся с ростом Оправданность цены 5/10
воору женности) – это управление. Реакция
мыши отнюдь не мгновенная, а попытки Экстремально крутая стрелялка
настроить кнопки на геймпа де оказа лись с боковой прокруткой.
бесплодными, так как ввод направления

Арсенал набит оружием, и на раскачку времени нет�


не воспринимался (конечно, джойстики
в Linux – это отдельная песня); не лучше
Рейтинг 7/10
Август 2009 Linux Format 11
Обзоры OpenOffice.org 3.1

OpenOffice.org 3.1
Несмотря на туманность будущего, настоящее известного офисного пакета
выглядит весьма неплохо. Энди Ченнел оценивает его недавние достижения…

П
резрев слу хи о своей кончине, за­
Вкратце бурлившие, когда Oracle приоб­
рела Sun, проект OpenOffice.org
Флагманский выпустил версию 3.1 одноименного офис­
офисный пакет ного пакета. Уда лось, наконец, повысить
для Linux�
плавность отрисовки и немного, но чув­
См� так же: KOffice,
Abiword/Gnumeric ствительно сократить время загрузки.
и Google Docs� Мед ленный старт был слабым местом
проек та с момента его основания, и данная
версия не исправила положение. В наших
тестах OOo Writer – избранный за особую
востребованность пользователями – стар­
товал из «холодного» состояния чуть бы­
стрее семи секунд на машине с 3­гига­
герцевым Pentium 4 и 1,5 ГБ ОЗУ. Вроде
и неплохо, но Word XP (на той же машине
под Wine) на две секунды его опере­
дил. При повторной загрузке счет был че­
тыре и две секунды соответственно: опять
пора жение OOo. Обоих, правда, послал Вероятно, обычных пользователей сильнее всего впечатлит улучшенное, сглаженное
в нок даун AbiWord, вынырнувший из «хо­ отображение графики (например, схем и шрифтов)�
лодного» состояния всего за 1,43 секун­
ды. Впрочем, на более мощных машинах до интереснее поведение приложения за лись зазубренными, то теперь век торные
в работе. Запущенный OOo занимает около рисунки, созданные в OOo, отобра жаются

«Не было задержек при 19,5 МБ памяти, хотя этот объем неизбеж­
но растет при работе с документами. Для
аккуратно, невзирая на их масштаб. Это
здорово помогает при работе со шриф­
выделении, редактиро- проверки в условиях интенсивной нагруз­
ки мы загрузили крупный документ Word
товыми эффек тами (они же Fontwork)
во Writer или при «выдавливании»
вании и перемещении.» с несколькими иллюстрациями высокого в Impress для придания объек там глуби­
разрешения, а так же комментариями и ис­ ны. Разумеется, качество растровой гра­
разрыв меж ду OOo и MS Office гораз­ правлениями от разных авторов. Прило­ фики от этого не изменилось, но если
до меньше, и обе программы запуска­ жение держа лось стойко – не было за дер­ вы работаете в OOo с презентациями или
ются из исходного положения секунды жек ни при выделении и редак тировании простым дизайном, то визуально ваша
за четыре. текста, ни при перемещении иллюстрации работа заметно выиграет. Качество схем
в пределах страницы, а панорамирование и графиков, полу чаемых с помощью Calc,
Что новенького? и масштабирование проходили как по мас­ тоже повысилось: теперь они выглядят
Сокращение времени загрузки, конеч­ лу. Использование памяти увеличилось превосходно.
но, уже повод для хвастовства, но гораз­ до 75 МБ, но загрузка процессора остава­
лась весьма умеренной, достигая макси­ Добавьте контент
мума в 10 % при копировании и вставке Кроме общего визуального улучшения,
Свойства навскидку больших объемов текста. переработано перемещение объек тов
Для слабых машин загрузка процес­ в реальном времени, что упрощает ком­
сора и использование памяти при рабо­ поновку документов – теперь рисун­
те с крупными документами, возможно, ки и иллюстрации прорисовываются
станут проблемой, но теперь, по крайней во время «перетаскивания» непрерывно,
мере, нет гнетущих пауз меж ду исчезно­ а не обозначаются пунк тирными линия­
вением объек та из одного места и появ­ ми. Изменение не ра дикальное, но пора­
лением его в другом – а это явное улуч­ дует любителей точности – да и выглядит
шение по сравнению с предыдущими приятно.
версиями. Версия, которую мы загрузили для
Гладкая графика Дадим отпор В результате упорной работы поя­ Ubuntu, снабжена неплохим набором шаб­
Благодаря встроенному сгла- Новая система работы с ком- вилось еще одно изменение, влияющее лонов для презентаций. Они, конечно,
живанию краев объектов ментариями превращает на весь пакет: сгла живание контуров объ­ уступают по качеству ана логам из Keynote
они выглядят более четко – просмотр документа в плодо-
ек тов, добавляемых на страницы. Если от Apple или PowerPoint 2007, но как от­
отлично для презентаций. творное обсуждение.
в прежних версиях края изобра жений ка­ правная точка вполне годятся; к тому же,

12 Linux Format Август 2009


OpenOffice.org 3.1 Обзоры

если «штатный» набор недостаточен, в Ин­ лать шаг вперед и вдохнуть


тернете можно найти нема ло шаблонов, новую жизнь в разработку
созданных пользователями. Impress на­ OpenOffice.org.
конец­то обзавелся ползунком масштаби­ Впереди возможны и ос­
рования (у Writer он появился в версии 3), ложнения, но OpenOffice.
что упрощает навигацию по сложным, на­ org – знамя открытого ПО,
сыщенным слайдам. и весьма сомнительно, что
крупные игроки допустят
Работай играючи его исчезновение. А ес ли
OpenOffice.org всегда предоставлял свой­ процесс разработки замед­
ства документа, через которые можно лится из­за новой волны
было внедрять в файл различные строки согласований, на это вре­
текста. Версия 3.1 пошла дальше: в ней мя мы, по крайней мере,
появилась функция Custom Properties уже обзавелись высоко­
[Специальные свойства]. Она позволя­ качественным ПО.
ет добавлять к документу мета данные,
значительно облегчающие обращение Все­таки № 1
с документом. Например, при подготов­ Новая версия предоставляет симпатичные шаблоны, вдобавок ничто не мешает Итак, пускай с AbiWord эко­
ке документов для нескольких заказчи­ создать свой собственный� номится пара секунд на за­
ков в Custom Properties можно внести све­ грузке, а с KOffice ощущает­
дения о клиентах, об ответственных лицах, ровок. Если один из составителей взял­ ся причастность к общему делу – в поисках
о сроках и порядке сдачи работы. Система ся за документ, другие пользователи открытого пакета для офисной работы
оснащена готовым набором полей, но для не смогут открыть и изменить файл да­ вы первым делом обратитесь к OpenOffice.
добавления собственного поля достаточ­ же по сети. Раньше данная функция дей­ org. Его тра диционно сильные стороны –
но написать название свойства, опреде­ ствова ла только при работе всех поль­ совместимость с форматами фак тиче­
лить тип контента (текст, число, дата и т. п.) зователей на одинаковых ОС; теперь ского лидера MS Office и высокое качество
и ввести необходимые данные. Новшество документы на дежно блокируются на лю­ получаемых документов. Мы приветствуем
пригодится не всем, но для тех, кто изда­ Грэм бых платформах. увеличение скорости, улучшения в области
ет множество документов или работает
сказал... С ка ж дой версией OOo импорт и экс­ работы с графикой, инструменты совмест­
в коллек тиве, это очень удобно. «Я не особо порт файлов популярных форматов, ти­ ной работы, обновление системы отсле­
Усовершенствованы и другие инст­ в вос торге па DOC и XLS, постоянно совершенству­ живания комментариев и правок – все это
рументы совместной работы. В версии 3 от последней ется. В русле этой тенденции, OOo 3.1 облегчает пользователям OOo взаимодей­
версии. По­мо­
Writer получил систему заметок на полях, ему, прогресс
улучшил под держку новейших форматов ствие друг с другом и с пользователями
подобную используемой в Word. Теперь OOo слишком на основе XML, хотя она покамест да лека других пакетов.
можно комментировать комментарии – это долго ограни­ от совершенства. В ходе наших тестов от­ Самое слабое место офиса – база дан­
позволяет составителям документа «па­ чивался поту­ крытие большинства файлов DOCX, XLSX ных: ее стабильность оставляет желать
гами догнать
рировать» замечания коллег, превращая и PPTX приводило либо к зависанию, ли­ лучшего. Она выполняет полезную рабо­
MS Office.»
процесс подготовки документа в подобие бо к неполному отобра жению данных. Од­ ту – предоставляет источники данных для
дискуссии. В наших тестах OOo исправно нако файлы почти всех «старых» форма­ других компонентов пакета; но сама база,
импортировал комментарии и отслежи­ тов открываются без проблем – в общем, пожа луй, чересчур сложна для обычного
вал изменения в документах Word, а потом если вы взаимодействуете с пользо­ пользователя.
и экспортировал их. вателями MSO, посоветуйте им быть Наконец, единство функционально­
Те, кому часто приходится работать «консервативнее». сти, обеспечиваемое OOo на трех основных
над документами совместно, оценят так­ платформах, обеспечивает безболезнен­
же преимущества новой системы блоки­ Что в будущем? ный переход с Windows на Linux, ведь свой­
После поглощения Sun грома дой Oracle ства ПО при смене ОС не меняются. В итоге,
возник ло подозрение, что дни OpenOffice. OOo 3.1 настоятельно рекомендуется.
org сочтены. Бесспорно, проект многим
обязан массовому участию программи­
стов Sun, но такая под держка предпола­ Вердикт
гает неминуемое замед ление процесса
разработки – оборотная сторона корпора­
тивности. Короче, еще неизвестно, кому
OpenOffice�org 3�1
повезло. Разработчик: Проект OpenOffice.org
Майкл Микс [Michael Meeks] из Novell Сайт: www.openoffice.org
Цена: LGPL v3.0
и другие программисты годами твердили
о том, что короткий поводок Sun тянет про­ Функциональность 9/10
Производительность 8/10
ект назад, а новые полезные функции или
Простота использования 8/10
поправки вязнут в череде согласований Документация 7/10
и устаревают, так и не попав в стабиль­
ный вариант пакета. Если этот «ошейник» Воплощение успеха идей открытого
ПО; обязательная загрузка для всех
ослабнет – откроется прекрасная возмож­ линуксоидов.
ность для Red Hat, Novell, Canonical, IBM
Цветное выделение удобнее и выглядит куда лучше,
чем прежний инверсный эффект�
(в успехе проек та кровно заинтересова­
ны все) и для «домашних хакеров» сде­
Рейтинг 8/10
Август 2009 Linux Format 13
Обзоры Цифровая звуковая станция

EnergyXT 2.5
Модульная музыкальная композиция – оправдание записи сразу по нескольку
треков для серийного музыкального маньяка Грэма Моррисона.

В
обзоре EnergyXT (LXF94) мы восхи­
Вкратце ща лись мощным потенциа лом это­
го кросс­платформенного комплек­
Модульное са с модульной архитек турой. Посудите
музыкальное сами: вместо подра жания стандартным ок­
приложение
нам микшерного пульта и аранжировки,
с поударной раз­
бивкой, эффек­ EnergyXT позволяет удобным для вас обра­
тами реального зом связать композиционные инструмен­
времени и вир­ ты, звуковые генераторы, аудиоэффек ты
туальными син­ и модули записи.
тезаторами� См�
Версия 2.5 построена на том же прин­
так же: Ardour,
Renoise 2.0 или ципе, но позаботилась о ряде удобств.
Rosegarden� В комплект входят MIDI­секвенсор, много­
дорожечный рекордер и гитарный проект,
поэтому необходимость в «грязной» рабо­
те при создании или записи мелодии от­ Плавная прокрутка, увеличение, копирование блоков и редактирование — все это умеет
па дает. Например, по щелчку на шаблоне всеобъемлющее окно секвенсора EnergyXT.
Drum And Bass [Барабаны и бас] загрузит­
ся проект с комплек том ударных инстру­ ана логия: при смене темпа возможна авто­ сический звук, хотя автоматизация рабо­
ментов и басовым синтезатором (по умол­ матическая нарезка и растяжка музыкаль­ ты с параметрами вроде частоты отсечки
ных цик лов в реальном времени. Сэмплы, фильтра в окне секвенсора малоудобна:

«Нарезка и растяжка MIDI­фразы и барабанные пасса жи запро­


сто перетаскиваются в окно секвенсора
снача ла нужно назначить отсечку как
управляющий параметр MIDI, а затем ре­
музыкальных циклов – и да же накла дываются друг на друга, об­
разуя в итоге затейливые музыкальные
дак тировать его в окне секвенсора двой­
ным щелчком на ка ж дом уровне кван­
автоматом на лету.» узоры. Блоки нот можно сдвигать вправо тования в последовательности. Было бы
и влево, а так же виртуально переносить гораздо проще выбирать параметр из вы­
чанию – с окнами нотной записи для обоих меж ду различными модулями – быстро па дающего списка, а затем редак тировать
источников звука). После этого остается и эффек тивно. инструментом Pencil [Карандаш]. Новый
лишь щелкать по нотам да на жимать кноп­ синтезатор и сэмплер ударных развора­
ку Play [Играть] – трек лепится за сущие Полоса информации чивает запись звуков в окне, а если у вас
секунды. Информационная полоска окна микшера установлены библиотеки Lame, то можно
Теперь можно вообще обойтись («Channel strip») теперь отобра жается еще смикшировать проект в MP3. И, несмот­
без ручной компоновки в окне модулиро­ и рядом с дорожками, что позволяет кор­ ря на досадные пробелы в под держке эф­
вания. Эффек ты, источники звука и да же рек тировать спектр и добавлять эффек­ фек тов и инструментов, трудно назвать
секвенсоры перетаскиваются с панели ре­ ты. Правда, не все работает безупречно. На­ приложение для Linux, столь же гибкое
сурсов в главное окно – примерно так, как пример, если перетащить модуль Arpeggio и эффек тивное в использовании.
в Ableton Live на OS X и Windows. Еще одна на дорожку синтезатора, модуль­то доба­
вится, а вот увязывать ноты меж ду секвен­
сором и синтезатором придется вручную. Вердикт
Свойства навскидку Однако более всего приложению
недостает под держки LADSPA и DSSI для
«родных» аудиоэффек тов и виртуальных
EnergyXT 2�5
инструментов Linux. Вместо этого вы ог­ Разработчик: XT Software
раничены набором эффек тов, входящих Сайт: www.energy-xt.com
Цена: €59
в комплект поставки (хотя заставить рабо­
тать парочку бесплатных VST­инструмен­ Функциональность 8/10
Производительность 9/10
тов, скомпилированных для Linux, все­таки
Простота использования 7/10
можно). Смягчают горе несколько новых Оправданность цены 9/10
эффек тов, разработанных для версии 2.5 Быстрый, мощный и эффективный.
(например, Bit Crusher с ретро­звучанием, С поддержкой «родных» эффектов
Поударная разбивка Окно микширования фантастический многорежимный фильтр, и синтезаторов Linux станет еще
Цикл можно динамически Новый «пульт микширова- интереснее.
подогнать под темп канала, ния» позволит перетащить компрессор и гитарный усилитель).
не меняя тональности. эффекты на каждый канал. Встроенный синтезатор звучит пре­
восходно и способен создать любой клас­
Рейтинг 8/10
14 Linux Format Август 2009
Нетбуки

Выбираем
идеальный
нетбук
Мы заперли Майка Сондерса
в комнате с восемью нетбуками,
недельным пайком кислорода
и заданием: найти идеальную
машину для каждой категории
пользователей�

З
десь, в Linux Format, нет упертых ненавистников
Microsoft, но мы всегда хихикаем, вспоминая прогноз
Билла Гейтса [Bill Gates] о планшетных компьюте­
рах, сделанный им на Comdex в 2001 году� «Предска­
зываю, что в течение следующих пяти лет они станут самыми
популярными видами ПК, продаваемыми в Америке», заявил
тогда самый знаменитый миллиардер в мире ИТ, и здорово
промахнулся� Планшеты все еще считаются экзотикой и ог­
раничены несколькими нишевыми сегментами рынка�
Зато растущий рынок нетбуков преподнес всем сюр­
приз. Когда Asus выпустил Eee PC 701, многие пуристы со­
чли его детской игрушкой, однако его скудного оборудования
оказа лось с лихвой достаточно для за дач нашей повседнев­
ной жизни. Беглый обзор web, офисная работа, пасьянсик
в поезде – Eee делал свою работу хорошо, особенно при це­
новой отметке в несколько сот долларов, и после него пошли удобство Это самый важный момент. Неважно, насколько
модели с большими экранами и клавиатурами, дабы умерить хорошо выглядит нетбук, если его клавиатура очень тесная
жа лобы на неудобства первой версии. или сенсорная площадка никуда не годится.
Крупные игроки, такие как Dell, Lenovo и Toshiba, тоже Качество сборки Нетбук не для того, чтобы держать его
ввяза лись в гонку, и хотя их компьютеры в общем ук ла дыва­ в вате. Его таскают в сумке и используют где попа ло, не боясь
ются в низкобюд жетную категорию (менее $500), тем, у ко­ стукнуть раз­другой.
го на счету ка ж дая копейка, ва жен выбор правильного эк­ Мы знаем, что многие постоянные пользователи Linux
земпляра. Все они предоставляют доступ к Интернет через предпочитают устанавливать собственный дистрибу тив,
Wi­Fi и выполняют офисные за дачи, но, как мы увидим, могут и чтобы наши испытания были справед ливыми, мы постави­
сильно отличаться в ключевых аспек тах. ли Ubuntu 9.04 Netbook Remix на ка ж дую машину, под держи­
вающую его. А затем нача лось...
Наши критерии оценок
Мы сгребли все нетбуки, которые смогли достать, чтобы тест
был всеобъемлющим. Мы рассматрива ли: Содержание
Производительность Все нетбуки, кроме одного, основа­
ны на 1,6­ГГц CPU Intel Atom и графическом чипе 945GME. Од­ Обзоры:
Acer Aspire One ................... с. 17 Lenovo IdeaPad .................... с. 21
нако другие компоненты, особенно устройства хранения дан­
ASUS Eee 1000 .................... с. 18 LG X110 ................................. с. 19
ных и беспроводные сетевые карты, тоже играют важную
Dell Mini 9 ............................. с. 19 MSI Wind U100 .................... с. 22
роль. Мы обраща ли внимание и на эти аспек ты. Elonex ONEt .......................... с. 20 Toshiba NB100 ..................... с. 23

16 Linux Format Август 2009


Нетбуки

Acer Aspire One A110


Цена: 11 690 руб. (Яндекс Маркет)
Сайт: www.acer.ru
Рекомендуется: Ищущим дешевый ноутбук, только для Интернета
Противопоказан: Для игр, ресурсоемких за дач

З
а исключением серии Eee, нетбуки Aspire One от Acer –
самые известные на рынке. На данный момент доступны
две модели линейки 110: одна использует флэш­память
(SSD), а на другой стоит тра диционный жесткий диск. Здесь
мы рассмотрели модель с 8­ГБ SSD, которая уже опустилась
до весьма заманчивой стоимости – поискав в сети, вы можете
найти ее за сущие копейки.
По части косметики, Acer хорошо поработа ла над фор­
мой Aspire One. Крышка и корпус плотно со­
прикасаются, и при открытии машины вас
встретит выпук лая колобашка под экра­
ном с индикаторами статуса и батареи. Ме­
ж ду шарнирами, скрепляющими экран и корпус,
просматривается зазор, наводя иллюзию их слабо­
сти. Однако в целом Aspire One очень прочен, только экран
слегка прогибается.
Модель с жест­
А экран глянцевый. Кое для кого это фак тор выбора, но есть
ким диском немно­
и пользователи, люто ненавидящие такие экраны. Если сесть го толще и намного
под неправильным углом к свету, экран бликует, затрудняя про­ дороже протестиро­
смотр. Дома или в офисе это несложно поправить, а вот на улице ванной SSD­версии�
не очень­то избавишься от большого небесного фонаря. С другой клавиши по сторонам. Для работы с площадкой вам придется за­
стороны, цвета сочные и яркие, и это отличный дисплей при та­ ново тренировать моторику; мы бы предпочли обычный расклад.
кой цене. Программно, Aspire One укомплек тован Linpus Linux Lite – это
дистрибу тив на базе Fedora, снабженный всем, что полагается:
Пиршество портов Firefox, OpenOffice.org и т. д. Приличный дистрибу тив, с достой­
Слева на ходятся слот для SD­карты, порты для USB и Ethernet, ным временем загрузки (22 секунды), однако немного тормо­
выход VGA, а справа – добавочная пара USB­портов, еще один зит, да и устарел; многие пользователи меняют его на «полно­
слот для SD­карты, гнездо для кенсинг тонского замка и порты мерные» варианты. Хорошо работает
для наушников/микрофона. Клавиатура отличная – клавиши пра­
вильного размера, кнопка Enter широкая, и общее впечатление хо­
Ubuntu 9.04 Netbook Remix, где Wi­Fi,
web­камера и звук оживают сразу по­
«Acer хорошо
рошее. Клавиши курсора ма ловаты, но зато есть отдельные кноп­
ки Page Up/Down. Сенсорная площадка нас не воодушевила: уж
сле установки.
Еще одно разочарование – скорость
поработала
очень ма ла, и для экономии места дизайнеры Acer расположили SSD. Иногда он еле ползает, в особен­ над формой.»
ности при записи данных. Linux (как
и любая современная ОС) копит операции записи файлов для вы­
полнения пакетом, а на Aspire One это проявляется в виде неприят­
Linpus Linux, ОС
ных запинок. Простое переключение меж ду категориями в Ubuntu
по умолчанию,
прячет от поль­ Netbook одна ж ды заняло 11 секунд, так как в это время SSD за­
зователя часть вершал очередную работу.
функций� Вообще говоря, это не грозная пробле­
ма, если ваша стихия – в основном онлайн:
машина превосходна для web­серфинга Вердикт
и легко справляется с YouTube. Частень­
ко включается кулер, а колонки крошеч­
Производительность 5/10
ные; ну да при такой цене роскоши нече­ Удобство 7/10
го и ждать. Если вы планируете работать Качество сборки 8/10
или играть в игры в пу ти, поведение
Приятная цена и удобство для
SSD будет вас раздра жать, а модель мобильного Интернета, но медленный
с жестким диском стоит заметно до­ SSD-накопитель ужасно бесит.
роже. Тогда вам лучше взглянуть на дру­
гие тестированные нами модели, напри­
мер, Eee PC.
Рейтинг 7/10
Август 2009 Linux Format 17
Нетбуки

Asus Eee PC 1000


Цена: 14 300 руб (Яндекс Маркет)
Сайт: ru.asus.com
Рекомендуется: Ищущим прак тичности, близкой к ноутбуку
Противопоказаны: Фанатам портативности

кнопка Enter и полномерные курсорные клавиши. Единственный


недостаток – ма ленькая и скрипучая правая клавиша Shift.
Прото­нетбук все еще С такими размерами машины в Asus смогли запихнуть сен­
силен, и теперь постав­ сорную площадку сносного размера, притом с большими кноп­
ляется в нескольких ками. В дистрибу тиве Xandros Linux, стоящем по умолчанию, она
разновидностях�
ведет себя довольно странно; указатель курсора «плавает», сме­
щаясь на несколько пикселей уже после того, как вы отпустили
па лец. У наших коллег из PC Format было то же самое, так что это
не дефект экземпляра, взятого для обзора.

Обычные подозреваемые
Слева на ходится кенсинг тонский замок, разъем Ethernet, возду хо­
заборник, порт USB и гнезда для наушников/микрофона, а спра­
ва – вход для шнура питания, слот для SD/MMC карты, выход
VGA и еще два USB­порта. Как уже упомина лось, Eee поставляет­
ся с Xandros Linux, с четкими и массивными значками на рабочем
столе. Это весьма дру жественный дистрибу тив для новичков, од­
нако набор приложений жутко устарел (Firefox 2?!), а менед жер
обновлений презабавно слетал, когда мы пыта лись проверить,

В
елик, в обоих смыслах этого слова. Не только потому, нет ли чего новенького.
что Asus – самая известная марка в мире нетбуков, с ог­ Как и ожида лось, Ubuntu запустился прекрасно, хоть
ромным диапазоном моделей, но так же потому, что Eee и не распознал наш модуль Bluetooth. 40­ГБ SSD­носитель
1000 стал самой большой машиной в нашем тесте. По размерам на нашей машине был разбит на два диска, один на 8 ГБ, дру­
он неда лек от обыч­ гой на 32 ГБ. На 8­ГБ мы поставили Ubuntu для наших испы­

«Цвета живые, ного ноутбука, и до­


вольно тяжел, почти
таний. При таких размерах Eee мы ожида ли, что места хватит для
хорошей вентиляции CPU, но увы! Во время тестов кулер вклю­
а края изображений 1,3 кг. То есть основ­
ная мысль здесь та­
чался на ка ж дом шагу, причем с изрядным шумом. Немного до­
садно, но в остальном было неплохо.
очень четкие.» кая: если вы требуете
от нетбука максимум
портативности, то Eee 1000 не для вас – сразу переходите к обзо­ Дистрибутивы для нетбуков
рам моделей Toshiba и Dell Mini.
Благодаря массивности, Eee убедительно­прочен. Пластмас­ Ubuntu Netbook Remix –
са не трещит при на давливании, экран твердый и почти не гнет­ выдающийся дистрибу тив
ся, а клавиатура не стучит. Первая модель Asus 701 могла запро­ для нетбуков, но он не оди­
сто выдержать несколько ударов, и мы ра ды видеть, что компания нок. В последних релизах
не изменила солидному дизайну. Часть веса обусловлена мощной Mandriva прина легла на
совместимость с нетбуками,
стандартной 6­элементной батареей, которая заодно повышает
а Debian сделал заначку
толщину модели – Asus заявляет о времени автономной работы Интерфейс Foresight Linux
на http://wiki.debian.org/
в семь часов, а мы добавим, что это неда­
DebianEeePC. Есть и другие: Mobile такой же, как у UNR�
леко от истины, особенно если вы не силь­ Easy Peasy Ответвление Ubuntu с проприетарными
Вердикт но прессуете CPU. дополнениями, а именно Flash и Skype.
Ненавистники глянцевых экранов, ли­ www.geteasypeasy.com
куйте: экран у Eee PC 1000 матовый. Тем CrunchEee Другая производная от Ubuntu, для более опытных
Производительность 8/10
Удобство 9/10 не менее, цвета живые, края изобра жений пользователей.
Качество сборки 9/10 четкие – это один из лучших экранов в на­ www.crunchbanglinux.org
шем тесте. Встроена 1,3­МПикс web­каме­ Foresight Linux Mobile Использует уникальную систему
Большой и тяжелый, хотя цена управления пакетами Conary.
хорошая; емкая батарея, ра, а вверху клавиатуры есть кнопки для
www.foresightlinux.org/mobile.html
а по удобству близко к ноутбуку. переключения видеорежимов (то есть
Pupeee Легковесный дистрибу тив, хорошо под ходящий для
на отдельный дисплей), запуска Skype
слабосильных устройств, типа Asus Eee 701.
Рейтинг 9/10 и изменения уровня производительно­
сти. Восхищает клавиатура – огромная
www.puppylinux.org/wikka/Pupeee

18 Linux Format Август 2009


Нетбуки

Dell Mini 9
Цена: $249 (Google Product Search)
Сайт: www.dell.com
Рекомендуется: Любителям портативности и тишины
Противопоказан: Тем, кто не желает идти поперек привычной
моторики Mini 9 очень
портативен, прав­
да, за счет тесной
клавиатуры�

Б
ывают ли по­настоящему тихие нетбуки? Вот у Mini 9 нет
жесткого диска, а ох ла ж дается он полностью пассив­
но. Достижение серьезное: ведь у него такой же CPU, как
у Eee 1000, а тот – зверюга не из молча ливых. Но все имеет оборот­
ную сторону: низ машины сильно греется при нагрузке на CPU.
Mini 9 не украшен всякими металлическими ободками, как Eee что и у Toshiba NB100, но чуть повыше и от этого намного удоб­
или Aspire One. Поверхность крышки ласкает подушечки пальцев, нее. Сенсорная площадка, сделанная впритык к клавиатуре, тоже
но экран – глянцевый, и вдобавок отра жает, что может печа лить неплоха.
при работе на улице. Слева на ходятся гнезда для кенсинг тонско­ Dell поставляет Mini 9 с Ubuntu 8.04 LTS,
го замка и шнура питания, два порта USB и слот для SD/MMC кар­ и Netbook Remix 9.04 работает на этой ма­ Вердикт
ты; справа – разъемы наушников/микрофона, еще один USB­порт, шине с блеском, а быстрая SSD­память
на диво ма ленький возду хозаборник, выход VGA и Ethernet. выводит его на второе место по скорости
Производительность 8/10
Dell пошла здесь на несколько смелых решений; самое замет­ загрузки. Удобство 6/10
ное из них – устранение функциональных клавиш с их привыч­ Время работы батареи тоже достой­ Качество сборки 9/10
ного места вверху клавиатуры. Вместо этого нужно на жимать ное; а по приему Wi­Fi тест дал второе ме­
Тихая машина с хорошим дизайном
Fn+A к клавише точка с запятой на клавиатуре, что требует неко­ сто с конца, док ла дывая только 41 % силу и быстрым SSD, но с плохим приемом
торой переподготовки сознания. сигна ла, в то время как другие показыва­ Wi-Fi и тесной клавиатурой.
Другая причуда – сдвиг правой клавиши Shift на две кнопки вле­ ли до 70 %. Но это неплохое приобретение
во, сразу за обратным штрихом (`) и стрелкой вверх. Но в осталь­
ном клавиатура спокойная и крепкая; клавиши того же размера,
для цены $249, хотя за модель с web­каме­
рой придется чуть­чуть доплатить.
Рейтинг 8/10

LG X110
Цена: 13 799 руб (Яндекс Маркет) Только Windows!
Сайт: http://ru.lge.com
Мы бы сменили
Рекомендуется: Опытным пользователям, при двойной загруз­ батарею, а в ос­
ке с Windows тальном LG X110
Противопоказан: Тем, кому жалко денег на Microsoft работает хорошо�

М
ногие машины этого теста предпочли убогонькие чер­
ные и синие тона для своих корпусов и клавиатур,
но в этом LG смешиваются мягкие от тенки белого
и серебристого. Крышка очень недооценена: она почти вся белая,
кроме ма ленького логотипа LG наверху. показа ла плохие харак теристики (см. сводные результаты) – ре­
По части оборудования, сразу видно, что X110 – тот же MSI комендуем потратить лишние пару тысяч рублей и взять версию
Wind (мы рассмотрим его ниже), с таким же расположением пор­ с 6­элементной батареей.
тов и таким же громадным возду хозаборником слева. Однако При всей схожести в оборудовании,
здесь позаботились о внешности: в Wind разъемы для наушников на X110 стоит другой беспроводной Вердикт
и микрофона отмечены привычными зеленым и красным обод­ чип и нет Bluetooth. Однако мы не ста­
ками, а у X110 они сохраняют цвет корпуса. Вдобавок, порт VGA нем засиживаться на этой машине – про­
Производительность 8/10
в X110 черный, а не синий, что придает модели профессиональ­ сто потому, что она поставляется только Удобство 9/10
ный вид. с Windows. Если вы регулярно пользуе­ Качество сборки 9/10
Главная разница X110 и Wind – в качестве клавиатуры и сбор­ тесь ОС от Microsoft и хотите иметь нетбук
Привлекательная, мощная, тихая
ки. В X110 они супер: тишина, все клавиши на привычных местах… с двойной загрузкой, он прекрасен – хо­ и прочная машина, если вам нужна
хотя курсорные все­таки не полномерные. Шарниры в X110 немно­ рошо спроек тирован и прекрасно работа­ двойная загрузка с Microsoft Windows.
го слабее, чем, ска жем, в Eee или IdeaPad, но все остальное сдела­ ет. Если вам нечего делать с Windows, но по
но очень хорошо, и выбор материа лов лучше, чем в Wind. Наше­
му обзору подвергся экземпляр с 3­элементной батареей, которая
душе харак теристики машины, обратитесь
к похожему Wind.
Рейтинг 8/10
Август 2009 Linux Format 19
Нетбуки

Elonex ONEt
Цена: £119 (Elonex)
Сайт: www.elonex.com
Рекомендуется: Детям и хакерам, ненавидящим x86
Противопоказан: Всем остальным

для ПК с ONEt работать не будут, что от толкнет часть покупателей.


Однако куда больше проблем доставляет мощность процессора.
Чипу Xburst элементарно не хватает силенок на нетривиальные
интернет­за дачи: он му чительно заикается на сайтах типа BBC
News, а с тяжелым JavaScript (как в Google Mail) вообще виснет.

Хромые приложения
Приложения не спасают ситуацию. На ONEt ставится сделанный
под заказ дистрибу тив CELinux. Он включает Firefox 2 и, следова­
тельно, мед ленный JavaScript’овский движок, и из­за ядра MIPS
здесь не применим официальный Flash. Интерфейс со вклад­
ками дает доступ к AbiWord, Gnumeric, четырем играм (вклю­
чая Pengupop) и файловому менед жеру с блокировкой, кото­
рая запрещает вам соваться куда бы то ни было вне домашнего
ката лога.
Есть еще и медиа­плейер, при запуске которого любезно
ONEt выжимает

Д
а же если вы раньше никогда не слыша ли о Elonex ONEt, предъявляются максимально допустимые параметры видео (раз­
все соки из 2­эле­
ментной батареи� вы, наверно, видели его в других ипостасях. Види­ решение 350 × 288 при 128 kbps). Управление питанием отсутству­
те ли, в Китае есть огромный завод, штампующий нетбу­ ет почти напрочь – есть показатель состояния «ботореи», а под­
ки с вариациями дизайна, но с одинаковой начинкой: 400­Мгц светка экрана не выключается, когда вы закрываете крышку.
CPU, 128­MБ ОЗУ и 1 или 2 ГБ пространства на флэш­носите­ На www.littlelinuxlaptop.com есть несколько дополнений, а так­
ле. В Maplin они означены как Minibook, а в других местах – как же дистрибу тив 3MX, созданный сообществом – он весьма неплох
Skytone Alpha 400. для технарей, однако для просмотра web все равно придется за­
Elonex пред лагает ONEt в трех цветах – черном, зеленом и розо­ пускать Dillo. Тем не менее, 3MX – это правильный Linux, и он дает
вом – и едва взяв его в руки, вы понимаете, что он прочный. Твер­ вам чувство контроля.
дая основа и тол­ Итого, ONEt совершенно непригоден для категории «мобиль­

«Едва взяв его стая пластмасса


создают ощущение
ного образа жизни»: он реально пасует при обзоре Интернета. Ес­
ли Elonex снизит цену долларов до ста и добавит образователь­
в руки, вы видите, стойкости ONEt. Это
самый крошечный
ные программы типа GCompris и KGeography, он подойдет для
детей. Однако он слишком ма ломощен и неэффек тивен по цене,
что он прочный.» нетбук в нашем если только вам не загорелось поба ловаться с портативным уст­
тесте. Он чуть уже, ройством на базе MIPS.
чем Toshiba, и это приводит к проблемам с клавиатурой (особен­
но с крошечными курсорными клавишами) и с наноскопической
сенсорной площадкой. Для экономии места ее кнопки разнесены Доля MS на рынке
по сторонам, а­ля Acer Aspire One.
Справа имеется пара USB­портов, а слева – слот для SD­кар­
В нача ле апреля Microsoft гордо провозгласила в своем Windows
ты, разъем для наушников и порт для микрофона. Сза ди – дру­ Blog, что за хватила 96% рынка ОС для нетбуков. (http://tinyurl.
гой USB­порт, разъем Ethernet и гнездо питания; неплохой ассор­ com/msnetbookshare). Нас, фанатов Linux, это слегка обеспо­
тимент при ма лой цене. коило – Canonical опубликова ла достойный ответ (http://blog.
Так что экипировка приличная; а как canonical.com/?p=151), но несомненно, что Linux ма лость от тес­
Вердикт там с приложениями? ONEt уника лен в на­ нен в некоторых частях рынка, как видно по ряду нетбуков только
шем обзоре тем, что его CPU не является для Windows в нашем тесте.
x86­совместимым. На всех других нетбу­ Один отважный участник команды LXF пару месяцев назад
Производительность 2/10 зашел в PC World и услыхал, как продавщица говорила супру же­
Удобство 3/10 ках теоретически можно запустить ОС
ской паре, пришедшей за нетбуком: «Это не для вас, потому что
Качество сборки 9/10 от Windows 3.1 до Fedora 11, а ONEt и его
это Linux, и в нем нельзя запускать ваши программы». Возможно,
собратья используют CPU на основе архи­
они сразу и просили нетбук с Windows, и такой совет бил в точку.
Сойдет для детей, или уж добавьте тек туры Xburst. Это вариант MIPS, семей­ Однако нас удивляет, почему магазины и центры продаж по всему
денег на Aspire One – он того стоит.
ства процессоров, широко применяемых миру да же не дают Linux настоящего шанса – ну да, конечно, про­
SGI в упитанных рабочих станциях Indy давая нетбуки с Windows, можно заодно всу чить «пакеты безо­
Рейтинг 3/10 и Octane. Таким образом, типовые дист­
рибу тивы Linux и операционные системы
пасности» и все прочие дополнения…

20 Linux Format Август 2009


Нетбуки

Lenovo IdeaPad S10e


Цена: 15 000 руб (Яндекс Маркет)
Сайт: www.lenovo.com/ru/ru
Рекомендуется: Опытным пользователям, которым
ну жен слот ExpressCard
Противопоказан: Работающим в тихой обстановке,
из­за ультрагремучих кнопок сенсорной площадки!

Н
азвание Lenovo не часто увидишь на домашних ком­
пьютерах, однако в бизнес­кругах компания ува жае­
ма за свою крепкую линейку ноутбуков ThinkPad (ра­
нее выпускаемых IBM). Следовательно, на ее нетбуках IdeaPad
вы не встретите ни Ubuntu, ни Mandriva – только SUSE Linux
Enterprise Desktop. Lenovo присла ла наш тестовый экзем­
пляр с Windows XP, но, к счастью, Splashtop затеял пока­
зать миру, как силен Linux, и мы сразу установили Ubuntu
Netbook Remix.
С точки зрения внешности, IdeaPad напоминает обыч­
ный ноутбук для бизнеса, на который глядят через переверну­
тый бинокль. Нельзя сказать, что он плохо смотрится – вовсе
нет. Но у него нет плавных изгибов, как у прочих нетбуков наше­ Вот что бывает,
когда бизнес­
го теста, и выглядит он весьма сурово. И мы не в восторге от прак­
машина сбегает
тичности. Правда, клавиши курсора полномерные, но клавиату­ с работы, снимает
ра изрядно дребезжит, а правая кнопка Shift того же размера, что слот для SD­карты и порт USB. Нас обра дова ла забота о вентиля­ очки и ослабляет
и остальные – работать неудобно (в особенности после огромных ции – при большой загрузке CPU машина настолько раска ляется, галстук� Наверно�
клавиш на Aspire One и MSI Wind). что к днищу не притронуться.

Не туда Трубчатый выступ


Вдобавок клавиша Fn на ходится на клавиатуре слева внизу, Lenovo нашего теста поставлялся с 6­элементной батаре­
там, где обычно ожидается клавиша Ctrl. Не так уж трудно бы­ ей, образующей трубчатый выступ вдоль задней части маши­
ло бы поменять местами клавиши Ctrl и Fn, чтобы раскладка ста­ ны; представьте себе пару склеенных скотчем упаковок Mentos,
ла более привычной, как сделано во многих других моделях теста. и вы поймете, о чем
Что касается сенсорной площадки, она ма ла. Реально ма ла. Кноп­
ки твердые, но и гремучие. Эта не катастрофа для прак тичности,
речь. Результаты
наших испытаний
«В нашем тесте
но ма лость порочит во всем остальном идеально собранную ма­
шину, хотя ее глянцевый экран чуть прогибается.
были впечатляю­
щими: при интен­
батарея протянула
IdeaPad – единственный нетбук в нашем тесте, имеющий слот сивном тесте бата­ 4 часа 16 минут.»
ExpressCard. Он на ходится справа, наряду с разъемами для на­ рея работа ла 4 часа
ушников/микрофона, порта USB, Ethernet и гнездом для кенсинг 16 минут. При неинтенсивном использовании ее хватает на рабо­
тонского замка (встроено в шарнир). Левая сторона содержит чий день, и зарядное устройство можно с собой не таскать.
убедительных размеров возду хозаборник, а так же выход VGA, В плане приложений, Ubuntu Netbook Remix работает пре­
красно, а 160­ГБ жесткий диск производит операции быстро, ес­
ли сравнивать с виденными нами вялыми SSD. Довольно хороши
Приводы за большие деньги басы колонок, расположенных на устройстве спереди. В общем,
Lenovo – неплохая машина, однако есть несколько мелочей, кото­
За SSD (Solid State Drives – они же твердотельные накопители и рые способны испортить вам жизнь.
флэш­диски) определенно стоит будущее, и мы ожидаем, что
они за следующие несколько лет постепенно вытеснят магнит­
ные винчестеры. Однако емкие и быстрые диски сейчас довольно Вердикт
дороги. Мы остановились на OCZ Vertex 120GB SSD, который про­
дается примерно за 20 000 рублей, и поставили его на MSI Wind.
Вот результаты испытаний: Производительность 8/10
Удобство 6/10
MSI Wind (обычный) 56 с Качество сборки 7/10
MSI Wind (с приводом OCZ) 41 с Приличная, многосторонняя модель,
но… Lenovo, пожалуйста, переставь
Разница невелика. Запись 100­МБ файла заняла две секунды, что, не­ клавиши Fn и Ctrl и отведи больше
сомненно, неплохо для SSD, но не особо опережает жесткие диски. места сенсорной площадке!
Пока эти устройства не упа дут в цене, мы не станем рекомендовать их Вот самый яркий индикатор активности
для нетбуков: это перебор. жесткого диска в мире нетбуков� Иногда
он отвлекает�
Рейтинг 7/10
Август 2009 Linux Format 21
Нетбуки

MSI Wind U100


Цена: 14 500 рублей (Яндекс Маркет)
Сайт: http://ru.msi.com
Рекомендуется: Опытным пользователям
Противопоказан: Для грубого обращения

Shift – слева от курсорной клавиши вверх, что нормально для на­


стольных компьютеров, но необычно для нетбуков. В остальном
клавиатура отличная. Сенсорная площадка достаточно глубо­
ка, ее кнопки почти упираются в край – хотя на фотографии они
выглядят как одна кнопка, их на самом деле две. Хорошо бы MSI
сделал сенсорную площадку пошире; места хватит.

Вкл питания
MSI снабдила наш Wind 6­элементной батареей (плюс 3 500 руб­
лей), которая выпирает снизу на 1 см и добавляет веса, при­
ближая нетбук по параметрам к Eee 1000. Однако у нас
есть замечания по качеству сборки. Оно непло­
хое – нетбук отнюдь не выглядит способным
разва литься у вас в руках. Но пластик тре­
щит при на жатии, и шарниры не так проч­
ны, как хотелось бы. Корпус хороший,
и у аккуратных вла дельцев проблем, навер­
ное, не будет, но нам было спокойнее с главным кон­
курентом в этом классе, Asus Eee PC 1000.

В наших испыта­ Распознавание оборудования


ниях MSI Wind U100 Wind – один из немногих нетбуков в нашем обзоре, где есть
показывал хорошие Bluetooth, и Ubuntu Netbook Remix настроил его прямо из короб­
результаты�
ки. Правда, web­камера не распозна лась. Что касается приема
беспроводного сигна ла, времени загрузки и общей производи­

Н
азвание MSI (Micro­Star International) тоже нечасто встре­ тельности, здесь Wind играет почти на равных с Asus Eee PC, хотя
тишь в доме: тайваньская фирма в основном перепрода­ SSD в Eee мед леннее, чем жесткий диск Wind.
ет свои компьютеры другим поставщикам, а те добавля­ Если вам ну жен нетбук побольше, почти ноутбучного размера,
ют свои логотипы и названия. Мы уже видели такое на примере и с огромной батареей, два варианта для вас – Wind и Eee. С точ­
LG X110, однако иногда MSI хочется работать в одиночку, и, как ки зрения производительности сложно отдать кому­нибудь из них
следствие, появилась серия нетбуков предпочтение, однако у Eee клавиатура лучше, корпус крепче и це­

«UNR настроил Wind. (У MSI есть еще и линейка на­


стольных компьютеров под названием
на чуть ниже, так что мы порекомендуем его. MSI, впрочем, тоже
показал себя неплохо.
Bluetooth прямо Wind.)
По корпусу U100 с ходу видно:
из коробки.» он буквально притягивает отпечатки
пальцев. Не то что их сложно стереть
тряпкой, но на косо па дающем свету пятна отчетливо заметны,
и ваша элек троника выглядит неопрятно. Слева расположены ог­
ромный возду хозаборник, гнездо для кен­
синг тонского замка, разъем для питания
Вердикт и два USB­порта. Справа будет другой порт
USB, слот для карты SD/MMC, разъемы
для микрофона и наушников, VGA­выход
Производительность 9/10
Удобство 7/10 и Ethernet.
Качество сборки 6/10 Под исключительно крепким экра­
ном расположена тугая, не клацаю­
Хороший работник – не такой шум-
ный, как Asus Eee PC, но и не такой щая клавиатура, которая, подобно
прочный. Lenovo IdeaPad, имеет клавишу Fn
в левом нижнем углу, на месте Ctrl,

Рейтинг 9/10 и если вы используете эту кнопку часто,


потребуется время на привыкание. Правый

22 Linux Format Август 2009


Нетбуки

Toshiba NB100 11R


Цена: 14 400 руб (Яндекс Маркет)
Сайт: http://www.toshiba­russia.com
Рекомендуется: Бизнесменам, которым ну жен максимум
портативности
Противопоказаны: Людям с крупными пальцами

Т
еперь мы угодили в страну лилипу тов. Когда в наши ру­
ки впервые попал самый первый Eee 701, его клавиатура
показа лась нам тесноватой, но годной для печати буква
за буквой. Затем, по мере роста рынка нетбуков, экраны с диаго­
на лью девять дюймов ста ли нормой, и все поняли, что увеличение
длины клавиатуры на какую­то пару сантиметров может стать ре­
шающим. А здесь не та ситуация. Клавиатура Toshiba NB100 ана­
логична Eee 701, хотя сильнее сту чит и клацает, и если у вас боль­
шие руки, машинка пока жется вам неудобной по сравнению
с другими.
Но не считайте это ошибкой Toshiba: компания бо­
рется за портативность. По ма лой ширине это второй
нетбук (после ONEt) из нашего теста, с отрывом от Dell
Mini 9 на целый сантиметр. Он чуть повыше, чем Dell, хо­
тя в основном из­за необычной батареи, которая выпирает с ты­
ла (об этом чуть позже). Внешне NB100 очень похож на IdeaPad – Крошечная кла­
он тоже выглядит как уменьшенный ноутбук. Однако экран у него виатура осложня­
глянцевый, который хорошо выглядит под определенными угла­ ет использование
NB100 11R взрос­
ми, а под другими ужасно бликует.
лыми людьми�
В плане размещения портов Toshiba проявила больше креа­
тивности, чем ее соперники. Разъемы под микрофон и наушники и они тоже выпирают! Да только у NB100 батарея 4­элементная,
на ходятся спереди машины, слева расположены один USB­порт и выдается она, потому что узкая. Например, у Aspire One бата­
и гнездо кенсинг тонского замка, справа – пара дополнительных рея тянется примерно на 90 % ширины машины; в NB100 параметр
портов USB и слот для SD/MMC, а Ethernet, питание и VGA – сза­ близок к 60 %. Ди­
ди. Качество сборки первоклассное, если не считать шумную кла­
виатуру: все твердое и прочное.
зайнеры Toshiba
действительно хо­
«Toshiba хорошо
Теперь про батарею���
рошо поработа ли,
чтобы втиснуть по­
поработала, чтобы
Батарея торчит из корпуса примерно на сантиметр. Не такая уж больше в ма лый втиснуть побольше.»
беда, верно? В других нетбуках тоже есть 6­элементные батареи, объем, но мы пола­
гаем, что широкая батарея, вписывающая под заднюю часть, луч­
ше, чем более узкая, которая создает выступ.
Moblin и SUSE Переходим к производительности. С ней не без проблем. Ско­
рость загрузки не самая лучшая, а качество приема беспровод­
Moblin, мобильная ОС от Intel ного сигна ла варьируется около критического уровня, да же ког­
на базе Linux OS (см. Что за да нетбук на ходится в покое, что приводит к слабым результатам
штука в LXF118 и материал по беспроводной части в таблице на с. 24. Работа в Ubuntu Netbook
в LXF119), полу чила добрый Remix показа лась сбивчивой – видеофильмы спотыка лись, и за­
толчок в плечо, благодаря
держки при открытии файлов превысили ожидания. Это не де­
помощи команды Novell SUSE.
лает машину непригодной, однако может
Пока мы писа ли эту статью,
Novell готовилась продемонстрировать свое «внедрение Moblin
раздра жать.
в кодовую базу OpenSUSE», как сказал нам Хольгер Дюрофф С учетом всего этого, Toshiba NB100 11R Вердикт
[Holger Dyroff] из подразделения Business Development. будет трудно выдержать конкуренцию
Теперь SUSE поставляется с десятком нетбуков от MSI и HP. в тестовой группе. Он очень компак тен
Производительность 5/10
Улучшив версию Moblin, Novell на деется за хватить больше рынка, и имеет солидный, деловитый фасад, так Удобство 5/10
в особенности деловой сегмент. «Предприятия могут рассмат­ что если вам нужно прихватить что­ни­ Качество сборки 8/10
ривать нетбуки как замену тонких клиентов», сказал Дюрофф, будь на деловую встречу и сделать кое­ка­
а компания имеет «большой интерес сделать на этом бизнес». кую офисную работу, это прочная и тихая Подходит для бизнеса, одна-
Станет ли он очередным соперником для Ubuntu Netbook ко производительность не очень
машинка. Но большинству пользователей и клавиатура маловата.
Remix? Пока вы читаете эти строки, Novell должна выложить
мы рекомендуем пожертвовать портатив­
свою работу в открытый доступ на http://en.opensuse.org/Moblin
– зайдите и посмотрите.
ностью – всего дюймом ширины – ра ди
удобства работы.
Рейтинг 6/10
Август 2009 Linux Format 23
Нетбуки

Кто лучше? Кто лучший?


П
очти все наши нетбуки основаны на одинаковых чипах шо разработанная и сконструированная
Intel, и тем не менее разнообразны по размеру, весу, ка­ машина. Если стерпите что­нибудь бо­
честву сборки, скорости диска и цены. Если не учитывать лее громоздкое и шумное, возьмите Eee
слабый CPU у Elonex ONEt и летаргический SSD у Aspire One, они 1000 – хороший, универсальный нетбук.
не сильно отличаются по производительности; все, кроме ONEt, Дороже Нам очень понравился LG
пригодны для обзора Интернета, YouTube и офисной работы, и да­ X110; жаль, что он доступен только
же позволяют программировать на ходу, если только вы не проек­ с Windows. Если вы соблазнились, следи­
тируете чрезмерно ресурсоемкое 3D­приложение. те за онлайн­новостями: вдруг LG расширит
В ка ж дом обзоре мы рассматрива ли машину с точки зрения возможности и начнет пред лагать Linux­вер­
определенного типа пользователя для ка ж дой модели, и вы, на­ сию, тут уж его нельзя не купить. Иначе доволь­
верное, уже поняли, что подойдет лично вам. Если вас интересует ствуйтесь более слабым, но все равно неплохим
исключительно финансовая сторона, вот наши рекомендации: MSI Wind.
Дешево Aspire One. Без вариантов. Да же если вы увидите ONEt Конечно, если у вас уже есть какой­то из рас­
(или другой нетбук с той же начинкой) еще дешевле, пройдите ми­ смотренных здесь нетбуков, мы будем ра ды услышать
мо. Экономия денег не восполнят стра даний от мед ленного web­ ваше мнение! Зайдите на наши форумы на www.linuxforum.ru
серфинга, многие сайты останутся вне досягаемости. и поделитесь опытом – какую конкретную модель вы полюбили?
Средне Если решающую роль играет портативность, выбирайте Вам нравится ра дуга цветов в ONEt? Сумели заставить работать
Dell Mini 9. Придется помучиться с клавиатурой, однако это хоро­ в Mini 9 функциональные клавиши? Дайте нам знать!

Время загрузки Срок работы от батареи Скорость записи носителя Беспроводной прием
Измерялось от на жатия кнопки питания Мерился при отключенном энергосбере­ Определялась пу тем локальной записи Показания качества сигна ла из состоя­
до появления рабочего стола и прекра­ жении, полной яркости экрана, подклю­ 100­MБ файла и последующим выполне­ ния апплета NetworkManager (на Elonex
щения ак тивности диска. Все проверя­ чении к Wi­Fi и зацик ленном воспроизве­ нием sync для сброса изменений на диск. ONEt – команда iwlist). Точка доступа
лось на UNR 9.04, кроме Elonex ONEt. дении видео с локального диска. Усреднена по трем опытам. на ходилась в шести метрах, за кирпич­
ной стеной.

Acer Aspire One 78 с Acer Aspire One 1 час 43 мин� Acer Aspire One 27 с Acer Aspire One 48
Asus Eee 1000 43 с Asus Eee 1000 3 часа 42 мин� Asus Eee 1000 8с Asus Eee 1000 72
Dell Mini 9 42 с Dell Mini 9 2 часа 52 мин� Dell Mini 9 6с Dell Mini 9 40
Elonex ONEt 33 с Elonex ONEt 3 часа 7 мин� Elonex ONEt 73 с Elonex ONEt 86
Lenovo IdeaPad 54 с Lenovo IdeaPad 4 часа 16 мин� Lenovo IdeaPad 4с Lenovo IdeaPad 70
LG X110 56 с LG X110 1 час 32 мин� LG X110 3с LG X110 68
MSI Wind U100 56 с MSI Wind U100 3 часа 21 мин� MSI Wind U100 3с MSI Wind U100 74
Toshiba NB100 63 с Toshiba NB100 3 часа 5 мин� Toshiba NB100 3с Toshiba NB100 38

Acer Aspire Asus Eee PC Lenovo MSI Wind Toshiba NB100


Название Dell Mini 9 Elonex ONEt LG X110
One A110 1000 IdeaPad S10e U100 11R
Цена 11 690 руб. 14 300 руб. $249 £119 15 000 руб. 13 799 руб. 14 500 руб. 14 400 руб.
Размер, мм 248 × 170 × 32 266 × 190 × 38 233 × 168 × 33 213 × 143 × 32 250 × 184 × 34 261 × 181 × 35 258 × 182 × 40 224 × 190 × 37
Масса, г* 910 1290 1000 610 1050 1150 1225 1020
Дисплей 8,9”, 1024 × 600 10”, 1024 × 600 9”, 1024 × 600 7”, 800 × 480 10,1”, 1024 × 576 10”, 1024 × 600 10,2”, 1024 × 600 8,9”, 1024 × 600
Видео Intel 945GME Intel 945GME Intel 945GME JzSOC чип Intel 945GME Intel 945GME Intel 945GME Intel 945GME
1,6 ГГЦ Intel Atom 1,6 ГГЦ Intel Atom 1,6 ГГЦ Intel Atom 1,6 ГГЦ Intel Atom 1,6 ГГЦ Intel Atom 1,6 ГГЦ Intel Atom 1,6 ГГЦ Intel Atom
CPU N270 N270 N270
400 MГц XBurst
N270 N270 N270 N270
ОЗу 512 MБ 1 ГБ 1 ГБ 128 MБ 1 ГБ 1 ГБ 1 ГБ 512 MБ
Диск, ГБ 8, SSD 40, SSD 8, SSD 2, SSD 160, НD 160, НD 80, НD 80, НD
3 элемента, 6 элементов, 4 элемента, 2 элемента, 6 элементов, 3 элемента, 6 элементов, 4 элемента,
Батарея 2200 мАч 6600 мАч 2200 мАч 2100 мАч 4360 мАч 2200 мАч 5200 мАч 3800 мАч
3×USB, 1×SD, 3×USB, 1×SD/MMC, 2×USB, SD/MMC,
3×USB, SD, 3×USB, SD, 3×USB, SD/MMC, 3×USB, SD/MMC, 3×USB, SD/MMC,
Порты 1×SD/MMC, Ethernet,
Ethernet, VGA Ethernet
VGA, Ethernet,
Ethernet, VGA Ethernet, VGA VGA, Ethernet
Ethernet, VGA VGA ExpressCard/34
Web­камера 0,3 MP 1,3 MP 1,3 MP Нет 1,3 MP 1,3 MP 1,3 MP 0,3 MP
Беспроводная Atheros AR242x RaLink RT2860 Broadcom BCM4312 ZyDAS ZD1211B Broadcom BCM4312 Realtek RTL8187SE RaLink RT2860 Atheros AR242x
связь
Есть, Нет
Bluetooth Нет но не распознава­ (приобретается Нет Нет** Нет Есть Нет
лась Ubuntu отдельно)
SUSE Linux SUSE Linux
Дистрибу тив, осно­
ОС Linpus Linux Lite Xandros Linux Ubuntu 8.04
ванный на CELinux
Enterprise Windows Enterprise Ubuntu 8.04
Desktop Desktop

* С батареей ** Только на Windows­версии

24 Linux Format Август 2009


Как новый клиент, вы можете
сэкономить 390 рублей на первом
платеже за любой из рекламируемых
здесь продуктов. Просто используйте
код ваучера 031108 при совершении
заказа. Предложение действительно
до 17 сентября 2009 года.
Les Trophées du Libre 2009

MathGL:
Данные тоже нуждаются
в представлении
Данные могут быть прекрасны не только с точки зрения исследователя.
Для этого их следует хорошенько подготовить, и MathGL поможет здесь даже
самому взыскательному эстету. Этот довольно очевидный факт теперь признали
и во Франции. евгений Балдин беседует c Алексеем Балакиным, победителем
Les Trophées du Libre 2009.
Первая идея о том, что следует напи­
сать нечто вроде MathGL, посетила КТО Алексей Антонович Ба лакин,
кандидат физ.­мат. наук, старший
Интервью меня в районе 2003 года, когда мне научный сотрудник Институ та
впервые пришлось столкнуться с круп­ прикладной физики Российской
ными (трехмерными) массивами данных ака демии наук (ИПФ РАН).
и я осознал все проблемы, связанные ОТКуДА Родился, живет и работает
с их визуализацией� На тот момент един­ преимущественно в Нижнем
ственным пригодным инструментом являлся MATLAB… но и у не­ Новгороде. Закончил Нижегородский
государственный университет.
го была, да и до сих пор остается куча недостатков: нестабиль­
ПРОеКТ MathGL (mathgl.sf.net).
ная работа с большими массивами, высокие накладные расходы
при рисовании графиков (памяти надо много больше, чем занима­ РеЗуЛьТАТ Первое место на Les
Trophées du Libre 2009 в категории
ет исходный массив) и, естественно, высокая цена (хотя тогда Sciences.
для меня это было не критично, так как все ПО было закуплено
работодателем)�
Еще одна причина, подвигнувшая меня на написание MathGL, После того как предметные требования к программе были
была опять же связана с расчетами. Полу чающиеся в результа­ сформулированы, наста ло «дело техники». В 2005–2006 годах
те них многогигабайтные файлы было очень неудобно переда­ была написана первая версия для личного использования. Кстати,
вать по сети (с кластера на локальную машину) только для того, именно она применялась при подготовке важнейшего результата
чтобы отрисовать несколько картинок. Из­за этого неудобства РАН в 2006 году («Исследование струк турных особенностей ди­
возника ло естественное желание строить графики и считать намики самофокусировки сверхкоротких импульсов с шириной
данные в одном месте. спек тра порядка центральной частоты»). В 2007 MathGL слегка
Собственно, ориентация на большие массивы данных (в том расширилась и ста ла публичной. С тех пор идет постоянное улуч­
числе, и высокой размерности), а так же возможность построения шение (добавление новых типов графиков, возможностей, и т. д.,
картинки в любом окру жении и легли в основу MathGL. и т. п.), основанное преимущественно на пред ложениях пользова­
телей. На данный момент в MathGL только базовых типов графи­
ков насчитывается более 50 штук (!).
Что за штука MathGL? Из того, чем ста ла сейчас MathGL, довольно весомая часть
принад лежит и сообществу. Оно не только выдает пред ложения
MathGL – это библиотека, предназначенная о новых возможностях и док ла дывает об имеющихся ошибках,
для построения широкого спек тра высоко­ но и вносит непосредственный вклад в сам открытый код. Напри­
качественных научных графиков (кривых, по­
мер, Михаил Видасов добавил возможность для экспорта гра­
верхностей, поверхностей уровня и так да лее).
Библиотека является кросс­платформенной. фики в формат U3D (Universal 3D). При включении U3D­графика
Источник: mathgl.sf.net

MathGL предоставляет возможность экспор­ в PDF, Adobe Reader (начиная с версии 8.1) позволяет мышью вра­
та графиков в растровые (PNG, JPEG) или щать, приближать и менять прочие его параметры прямо в фай­
век торные (EPS, SVG, IDTF) форматы и опти­ ле, что увеличивает интерак тивность элек тронных документов
мизирована для работы с большими мас­
сивами данных. Сайт проек та: http://mathgl.
и презентаций.
sourceforge.net/. MathGL изначально за думыва лась как кросс­платформен­
«Сферических в вакууме» пользователей ная библиотека, так как мне на до было строить графики непо­
может заинтересовать созданная с исполь­ средственно на сервере/кластере, которые все (по крайней мере,
зованием MathGL программа построения гра­
за границей) работают под управлением Linux [и не за границей
фиков и изобра жений UDAV. Ее можно найти Задача MathGL — строить высоко­
по адресу http://udav.sourceforge.net/. качественные графики� тоже, – прим. ред.]. В то же время схожий функционал был мне
необходим и под Windows на локальной машине/ноутбуке.

26 Linux Format Август 2009


Les Trophées du Libre 2009

С Unix­подобными системами я познакомился на первых


курсах университета (1992 год), потом были расчеты на класте­
рах под Linux. В качестве настольной системы я попробовал его
в 2003 году, когда начал за думываться о MathGL. Однако окон­
чательный переход под Linux у меня произошел довольно позд­
но (два года назад) и поспособствова ла этому, как ни странно,
Microsoft. На очередном ноутбуке стояла Vista, которая была на­
столько «глючной» (особенно при разработке программ) и про­
жорливой по ресурсам, что, помучившись с ней месяц, я ее снес
и поставил Debian (хотя на тот момент полная под держка все­
го оборудования отсутствова ла). С тех пор не испытываю ника­
ких проблем с безопасностью, стабильностью и прочим, и только
«посмеиваюсь» различным вирусным атакам и мучениям с соз­
данием программ для Windows. Кстати, сдать Vista назад мне так
и не уда лось – правда, я не сильно и старался.

Путь к славе
Про Les Trophées du Libre узнал из новости на LOR (www.linux.
org.ru). Подумал, почему бы не попробовать… C визой проблем
не было, так как пару раз в год бываю за границей, и билеты они
оплачивают, да и язык прилично знаю. Единственная сложность –
Игорь Новиков
это подга дать рабочую поездку и поездку на конкурс. Якшина (LXF119) и GSQL Тараса Халтурина. Очень хорошие про­
(слева) и Алексей
Финал конкурса проходил в Суассоне [Soissons] – ма леньком, ек ты, за которые не стыдно. Дерзайте! Балакин (справа)
но довольно приятном городке в 90 километрах к северо­запа ду с наградами
от Парижа. Франция мне понравилась, так как это первая европей­ Советы номинантам за первые места
ская страна (не считая чисто туристических Праги и прочих), на ар­ Если у вас есть желание поучаствовать и выиграть в конкурсе в бу­ в своих категориях�
хитек туру которой можно посмотреть с удовольствием. И первая, дущем, то преж де всего следует тщательно подготовить презен­
в которой есть нормальные леса (а не лесопарки; по крайней мере, тацию. А лучше иметь их две­три: одну – краткую и яркую – для
мне так показа лось). К сожа лению, график был слишком плотный, публики, и одну большую – для интересующихся. В «большой»
и побродить мне не уда лось… презентации можно предста­
может быть, в следующий раз, о роЛи реДМоНДа: вить и историю, и струк ту­
благо победителей приглаша­
ют в жюри [улыбается].
«Моему переходу ру программы, и математиче­
скую модель, и прочее. А вот
Французы очень веж ли­
вые и да леко не столь «педан­
на Linux поспособст- в краткой должны быть толь­
ко картинки и результаты
тичные», как немцы (правила вовала Microsoft.» (плюс слайд, поясняющий, за­
на дороге нарушают, хотя бы чем это нужно). Учтите, что
и по мелочи). Хорошие люди. А вот по­английски говорят да леко в реальности времени будет ма ло (оно тратится на переключение
не все, что может создать проблемы, особенно если вы селитесь с компьютера на компьютер, на то, чтобы собраться с мыслями,
в не слишком дорогой гостинице или берете такси (лучше напи­ и прочее), и жюри не очень­то интересно слушать проек ты не по
сать, куда вам нужно попасть, на бумажке). Но говорящих по­анг­ профилю. Ваша за дача – «зацепить» человека, и лучше это сде­
лийски (хотя и с сильным акцентом) много, так что на улице не за­ лать первыми слайдами. А уж все дета ли – потом, так как время
блудитесь. для вопросов – это уже время сверх вашего док ла да. Еще одно
Сам конкурс в целом прошел хорошо, хотя были и досадные замечание: не на дейтесь показать работу программы жюри, так
накладки: все­таки не хватает опыта организации крупных меро­ как времени не будет, да и не оценят. Лучше делать презентацию
приятий. Были довольно интересные проек ты. Из того, что осо­ (можно с анимацией) и хорошо ее проговорить.
бенно понравилось – это игра Neverball (neverball.org). Интересно Ну и помните про формальные критерии. Это функциональ­
и необычно, рекомендую. Честно говоря, совершенно не понимаю, ность (возможности проек та должны удовлетворять широкий
почему ей не да ли первое место [она заняла второе, – прим. ред.] круг пользователей), стабильность и утилитарность (проек том
в категории Hobbies. должно быть удобно пользоваться, и хорошо бы без Segmentation
В моей категории (Sciences) у MathGL почти не было конкурен­ fault), новизна и документация («перепевы» на старую тему
тов. Один проект относился скорее к мультимедиа, а второй был не приветствуются, и вообще, на до еще разобраться, как проек­
слишком узкоспециа лизированным (да и мне ка жется, что сход­ том пользоваться).
ные инструменты есть почти в ка ж дом университете – правда, как Насчет документации: она должна быть, и она должна
правило, закрытые). быть на английском! Да, тратится много времени, ну и просто
Судейство было вполне приличным, хотя многое, естественно, лень. Но вы уверены, что в вашей безусловно замечательной про­
зависело от предварительного впечатления и от презентации (это грамме можно разобраться с наскока? Есть сомнения? Тогда пи­
важно!). Предвзятый человек вполне может увидеть некоторое шите документацию. И вообще, это сэкономит время в будущем,
«перетягивание одеяла» на французские проек ты, так как им по­ так как всегда можно послать человека читать ее, если вам лень
зволяли говорить чуть подольше, да и рассказыва ли иногда по­ отвечать на вопросы [улыбается]. Наконец, когда пишешь доку­
французски. Но если проект качественный и есть опыт док ла дов, ментацию (обычно после создания каркаса), то еще раз прохо­
как, например, у меня [улыбается], то выиграть можно. дишь по проек ту свежим взглядом и выявляешь «нелогичные»
Отдельно хотелось бы отметить, что на конкурсе было, поми­ и неудобные места, которые следует поправить.
мо моего, еще четыре проек та, выполненных русскоязычными ав­ Ну и, конечно, главный рецепт победы – это делать хорошие
торами: UniConvertor Игоря Новикова (LXF111), Inquisitor Михаила проек ты. Больше свободных проек тов, хороших и разных!

Август 2009 Linux Format 27


Управление настройками

Git: /etc под


контролем
Хороший администратор всегда сохранит резервную копию конфигурационного
файла, прежде чем внести в него изменения. Оказывается, это можно делать
автоматически, поясняет евгений Зобнин.

Л
юбой, кто не брезгует редак тированием системных кон­ граммистам. Сегодня же VCS используют многие: от писателей
фигурационных файлов вручную, наверняка сталкивал­ и журна листов, следящих с ее помощью за своими текстами,
ся с ситуацией, когда после очередного подкручивания до системных администраторов, использующих VCS для контро­
настроек программа или да же вся система начина ли вести себя ля над конфигурационными файлами.
некорректно. Обычно проблему легко решить, просто вернув кон­
фигурацию в первоначальное состояние, но что если изменения Приступаем
Наш были произведены уже давно и вы не помните, что и где испра­ В качестве VCS мы будем использовать Git, созданную самим Ли­
эксперт вили, а странности в поведении системы заметили только сей­ нусом Торвальдсом [Linus Torvalds] – мы говорили о ней в LXF116
евгений Зобнин час? А если вы новичок и отредак тирова ли целую пачку файлов и 120. Она быстра, удобна и, что самое важное, не требует соз­
Ежедневно борет­ вслепую, следуя какому­то устаревшему HowTo и не до конца по­ дания выделенного репозитория: он может храниться прямо в ра­
ся с ха латностью
нимая все тонкости настройки Linux? Системным администрато­ бочем ката логе, в нашем случае – /etc. Чтобы установить Git, про­
коллег­админист­
раторов и вырабо­ рам в этом плане еще сложнее: нужный конфигурационный файл сто найдите его в графическом менед жере пакетов и на жмите
тал комплексную мог быть исправлен другим человеком, который да же и не поду­ кнопку Install [Установить] или воспользуйтесь командой apt­get
методику для при­ мал сообщить о произведенных изменениях. Борьба с ошибка­ install git­core (Debian/Ubuntu) или yum install git (Fedora/Red Hat).
ну ж дения к журна­ ми настройки может стать настоящей мукой для неподготовлен­ Перевести ката лог конфигурационных файлов на исполь­
лированию дейст­
ного пользователя, а для некоторых выливается в полную пере­ зование Git очень просто: достаточно создать новый репозито­
вий и объяснения
причин изменений установку операционной системы. рий и добавить в него все содержимое /etc (то есть сделать пер­
в конфигурации. Существует несколько способов борьбы с описанной про­ вый снимок). Первая операция выполняется с помощью двух
блемой, самый эффек тивный из которых – перевести ката­ простых команд:
лог /etc, содержащий основные конфигурационные файлы, # cd /etc
под управление системы контроля версий. Да­да, именно той, # git init
которую используют программисты для фиксации изменений Чтобы никто, кроме root, не смог заглянуть в наш репозиторий
в коде. Система контроля версий позволит оставлять коммента­ и выудить из него ценную информацию (пользовательские паро­
рий для ка ж дого действия, произведенного над ката логом /etc, и ли, содержимое файла /etc/sudoers и т. д.), лишим всех сторонних
вести историю всех изменений; она обеспечит возможность бы­ пользователей любых прав в отношении хранилища:
строго отката любого количества правок; она легка в установке # chmod og­rwx .git
и проста в использовании. Теперь мы должны добавить в репозиторий конфигурацион­
ные файлы, но в ката логе /etc всегда имеется несколько файлов,
Машина времени для ваших файлов которые генерируются динамически или создаются для времен­
Система контроля версий (Version Control System, VCS) работа­ ных целей. Это может быть, например, файл /etc/mtab, содержа­
ет по принципу моментальных снимков. Вы вносите некоторое щий список всех смонтированных в данный момент файловых
Git легко подсве­ количество изменений в свои файлы, а затем просто вызываете систем, /etc/motd («сообщение дня»), обновляемый во многих
тит изменения, вне­ команду, которая «приказывает» VCS сделать снимок рабочего системах в процессе загрузки, или кэш /etc/blkid�tab, исполь­
сенные в конфигу­ ката лога и поместить его в специальное хранилище, называемое зуемый одноименной командой. В Debian/Ubuntu это еще и все
рационные файлы репозиторием. Если в будущем вы поймете, что совершили ошиб­ файлы с расширением.dpkg­new и.dpkg­old. Такие файлы могут
вами или кем­то ку, и прошлый вариант был лучше текущего, VCS позволит вер­ создать (и обязательно созда дут) большую пу таницу меж ду со­
еще�
нуть файлы к тому состоянию, держимым репозитория и ак туальным состоянием ката лога /etc,
в котором они на ходились поэтому мы добавим их имена в «список игнорирования» Git:
на момент «фотографирования». # cat > .gitignore << EOF
Пользуясь ею, вы будете увере­ *~
ны, что непоправимых ошибок *.dpkg­new
не бывает и любой, да же уда лен­ *.dpkg­old
ный, файл до сих пор существует blkid.tab
в репозитории. mtab
Изначально VCS применя­ motd
лась только программистами ld.so.cache
для совместной работы над про­ asound.state
ек том, и да же сама идея кон­ adjtime
троля версий принад лежит про­ EOF

28 Linux Format Август 2009


Управление настройками

Теперь можно зафиксировать содержимое /etc в хранилище: совсем небольшой скрипт, который бу­
# git add . дет запускаться демоном cron:
# git commit ­a ­m «Первый снимок» #!/bin/sh
Вот и все: конфигурационные файлы теперь на ходятся в репо­ cd /etc
зитории, так что после редак тирования одного из них необходимо git add .
будет обновить и его. Делается это с помощью одной­единствен­ git commit ­m “Автоматический сни­
ной команды, независимо от того, какой конкретно файл был из­ мок от: `date`”
менен: Поместите его в файл /etc/cron�hourly/
# git commit ­a ­m «Описание внесенных изменений» etc­git, установите бит исполнения
Внеся несколько изменений, вы сможете посмотреть их спи­ (chown a+x /etc/cron�hourly/etc­git), и вы
сок с помощью команды log: будете получать новый снимок систем­
# git log ных конфигурационных файлов ка ж­
Для отмены внесенных изменений воспользуйтесь командой git дый час.
checkout, которая вернет состояние ката лога к указанной точке:
# git checkout «@{30 minutes ago}» Другие решения
Вы можете за дать так же и абсолютное время или конкретный Идея хранения истории изменений кон­
снимок, ключ которого можно выудить из строчки commit выво­ фигурационных файлов да леко не но­
Всегда оставляй­
да команды git log. Главное, не забудьте после этого синхронизи­ ва. Множество разработчиков в разные времена пред лага ли свои
те осмысленные
ровать состояние ката лога с репозиторием с помощью команды варианты ее реа лизации. Еще до появления децентра лизованных комментарии —
git commit. систем управления версиями файлы /etc было принято хранить потом будет легче
Остальные команды, под держиваемые Git, вам, скорее все­ в CVS, что создава ло некоторое неудобство ввиду ее требований вспомнить, что
го, никогда не пона добятся, ведь все изменения, производимые к выделенному репозиторию. Не меньшей популярностью поль­ именно вы делали�
пользователем над ката логом /etc, сводятся к простому редак ти­ зова лись решения, основанные на файловых системах с функ­
рованию файлов. Другое дело – пакетные менед жеры, которые цией снимков состояния, таких как backupfs (http://sourceforge.
могут добавить в систему конфигурационный файл устанавли­ net/projects/backupfs). Сегодня некоторые разработчики и да же
ваемой программы или уда лить уже существующий. Чтобы избе­ компании пред лагают комплексные решения по управлению кон­
жать описанных выше проблем с несоответствием репозитория фигурацией серверов, среди которых можно выделить Puppet
реальному содержимому ката лога /etc, последний придется об­ (http://reductivelabs.com/products/puppet/) – мощную, но сложную
новлять ка ж дый раз после установки нового пакета: систему для управления конфигурациями, и IsiSetup (http://www.
# apt­get install tuxracer isisetup.ch/) – обертку для системы контроля версий Subversion
# cd /etc (о которой мы говорили в LXF118 и 120), упрощающую многие за­
# git add . дачи под держания репозитория в ак туальном состоянии. Несмот­
# git commit ­a ­m “Изменения внесены пакетом tuxracer” ря на все это, большинство продвину тых пользователей предпо­
Утомительно и неудобно, не спорю. К счастью, есть способ читают использовать для ведения истории конфигурационных Помимо консоль­
получше. файлов именно Git. ной, у Git есть и гра­
фическая ипостась�

Используем etckeeper
Набор скриптов под названием etckeeper («хранитель etc») создан
с целью избавить пользователей от необходимости обновлять
репозиторий /etc после ка ж дой установки, уда ления или обнов­
ления пакетов. Он интегрируется с системами управления паке­
тами дистрибу тивов Debian/Ubuntu, Fedora/Red Hat, Arch Linux
и выполняет все необходимые действия автоматически.
Пакет etckeeper уже доступен для Debian и Ubuntu, поэтому,
чтобы начать использовать его в этих дистрибу тивах, достаточно
выполнить следующую последовательность действий:
# apt­get install etckeeper
# etckeeper init
# cd /etc
# git commit ­m “Первый снимок”
Теперь вы сможете спокойно работать с ката логом /etc. После
внесения изменений в конфигурационные файлы по­прежнему
придется обновлять репозиторий, но установка и уда ление паке­
тов не потребуют каких­либо дополнительных действий: все из­
менения будут фиксироваться автоматически.
Если в один прекрасный день вы поймете, что контроль версий
конфигурационных файлов вам не ну жен, просто перейдите в ка­ Памятка пользователя Git
та лог /etc и выполните команду etckeeper uninit, и репозиторий Git
исчезнет с вашего диска. Иногда возникает необходимость не про­ git diff HEAD^ – различия межу рабочим
сто восстановить конфигурационный файл, ката логом и репозиторием;
Снимки по расписанию но и узнать, какие изменения привели к неже­ git diff “@{2009­05­05 9:00:00}” – все из­
лательным для системы последствиям. В этом менения, произошедшие с определенного
Если же необходимость запуска специальных команд после ка­
вам помогут следующие несколько команд: момента времени;
ж дого редак тирования конфигурационных файлов вас пугает, git whatchanged ­5 – кратко о последних пя­ git diff “@{12 hours ago}” – что изменилось
то вы можете настроить систему на создание ежечасных снимков ти изменениях; за последние 12 часов.
ката лога /etc. Сделать это просто – достаточно только написать

Август 2009 Linux Format 29


Elinks, Alpine и Finch

В Интернет
из консоли
Современные web­сайты радуют глаз визуальными эффектами,
но основную смысловую нагрузку в Сети по­прежнему несет текст.
Игорь Штомпель представит его без лишнего лоска.

Н
а первый взгляд, идея неграфического рабочего сто­ dpkg ­i elinks­data_0.12~pre2.dfsg0­1_all.deb &&
ла может показаться безумием, каковым в свое время, elinks_0.12~pre2.dfsg0­1_i386.deb
наверное, выглядел оконный интерфейс Xerox на фоне и введите:
привычных текстовых термина лов. А как же посещать любимые elinks
сайты, вести переписку по элек тронной почте, болтать с друзья­ Программа пред ложит указать URL необходимого вам ресурса.
ми, рисовать, наконец? Ну, с последним, действительно, ничего Но для нача ла на до произвести предварительные настройки,
Наш не поделаешь (если только вы не вла деете в совершенстве маги­ поэтому на жимаем Esc для закрытия окна Go to URL [Открыть
эксперт ей ImageMagick – кстати, мы писа ли о нем в LXF116 и 117), зато URL]. Кстати, в дальнейшем для его вызова можно использовать
игорь Штомпель первые три за дачи вполне решаемы. В этом нам помогут три про­ клавишу G.
Ка ж дый день от­
граммы: текстовый web­браузер ELinks, почтовый клиент Alpine Чтобы настроить ELinks, на жмите клавишу O: это приведет
крывает в Linux
что­то новое, и ис­ и программа обмена мгновенными сообщениями Finch. Мы будем к появлению окна Option Manager [Менед жер опций]. Навигация
пользует его где использовать Debian 5.0 Lenny, но все эти приложения наверняка осуществляется курсорными клавишами, для раскрытия списка
только возмож­ отыщутся в репозиториях и вашего дистрибу тива. используется пробел. Переместитесь на список Document [Доку­
но. Кстати, кто­ Преж де чем мы приступим к изложению, а наши читатели­ мент] и откройте его, затем перейдите в Charset [Кодировка]. Вы­
нибудь устано­
ветераны – к написанию недовольных писем в редакцию, сдела­ берите Default codepage [Кодировка по умолчанию], на жмите кла­
вил gNewSense
на FreeRunner? ем одно замечание: как обычно и бывает в Linux, перечисленные вишу E для редак тирования и в поле Value [Значение] ука жите
наименования не являются единственно верными. Кто­то может koi8­r для корректного отобра жения русских букв. Перейдите кла­
предпочесть связку Lynx+Mutt+CenterICQ, кому­то по душе ори­ вишей Tab на кнопку OK и на жмите Enter. Да лее перейдите к спи­
гинальный Pine. В общем, если вас что­то разочарует в указан­ ску User Interface [Интерфейс пользователя] и раскройте его. Вы­
ных программах, но понравится сама идея, знайте: альтернати­ берите Language [Язык] и в поле Value [Значение] ука жите Russian
вы есть. [Русский]. Затем на жмите кнопку OK, а в окне Option Manager
[Менед жер опций] кнопку Save [Сохранить]. Теперь изменения со­
ELinks: окно в Web хранены, и отдельные элементы интерфейса ELinks будут переве­
ELinks представляет собой текстовый web­браузер, под держи­ дены на русский язык.
вающий протоколы HTTP/HTTPS, FTP, SMB и Finger, а так же ра­ Рассмотрим приемы работы с ELinks. Введите в адресной
боту с локальными файлами. Прокси, cookie, таблицы, фреймы, строке www.linuxformat.ru. Откроется главная страница сай­
вкладки, цвета и да же JavaScript – все это по плечу ELinks. Его так­ та. Навигация осуществляется так: прокрутка страницы – PgUp
же можно расширить сценариями на Perl, Lua и Guile. и PgDn; перемещение по ссылкам – стрелки вверх и вниз; пере­
Версия ELinks, входящая в основной репозиторий Debian 5.0 – ход по ссылке – Enter. На жатие клавиши t приведет к запросу URL
0.11.4­3, увы, имеет ряд проблем с русификацией интерфейса, хотя и открытию сайта на новой вкладке (их «корешки» располагаются
страницы отобра жаются нормально. Поэтому мы воспользуемся внизу экрана). Закрыть ак тивную вкладку можно клавишей C.
«нестабильным» ELinks 0.12 – его можно загрузить с официально­ При работе в Сети часто возникает необходимость добавить ту
го сайта (elinks.or.cz) или взять из репозиториев Squeeze. Скачай­ или иную страницу в закладки. В ELinks это можно сделать с помо­
те пакеты elinks_0�12 и elinks­data_0�12, а затем скомандуйте: щью клавиши A. Для поиска по странице на жмите / (ELinks ищет
подстроку, так что при вводе «сервер» будут выделены и «серве­
ры»). Ну, а если вам интересен исходный код страницы, просмот­
реть его можно клавишей \.

Alpine: электронная почта


Alpine – это консольный почтовый и новостной клиент, осно­
ванный на Pine. Он под держивает протоколы POP3/IMAP, SMTP
и NNTP. В Lenny доступна версия 1.10, и чтобы установить ее,
ELinks предо­
достаточно набрать:
ставляет множест­
во параметров для apt­get install alpine
настройки своего Почтовый клиент готов к работе. Войдите в систему как обычный
поведения� пользователь и дайте команду:

30 Linux Format Август 2009


Elinks, Alpine и Finch

Установить и запустить Finch можно стандартной парой


команд:
apt­get install finch
finch
После этого клиент пред ложит добавить учет ную запись;
рассмотрим данный процесс на примере ICQ. Выбери те про­
токол с помощью курсорных клавиш и перейди те (с помощью
Tab) к полю Имя поль зовате ля: в нем следует ука зать ваш но­
мер ICQ. В поле Пароль на до ввести пароль. Поле Псев доним,
естественно, позволяет добавить псев доним для учет ной запи­
си. Ес ли вы хоти те, чтобы Finch запомнил ваш пароль, перейди­
Alpine приветствует нового пользователя: горячие клавиши те к Запомнить пароль и клавишей пробел установи те символ
приведены внизу окна� X в квад рат ных скобках; проде лай те то же самое в следующем
поле, ес ли хоти те полу чать уведом ления о новой поч те. Поля
alpine Сервер и Порт оставьте без изменений, а в поле Кодировка ука­
При первом старте программы будет показано приветствие. Чтобы жи те CP1251. Кроме того, ес ли вам необходимо всегда исполь­
попасть в главное меню, на жмите E. Для навигации можно поль­ зовать прокси­сервер ICQ для передачи фай лов и прямого со­
зоваться контекстными клавишами – они отобра жаются внизу единения, установи те символ X в соответствующем поле. Для
экрана. Для главного меню это: вывести справку [HELP] –?, соз­ сохранения изменений перейди те на кнопку Сохранить и на­
дать сообщение [COMPOSE MESSAGE] – С, просмотреть пись­ жми те Enter.
ма в текущей папке [MESSAGE INDEX] – I, выбрать папку для про­ Программа выведет окно Учетные записи, которое позво­
смотра [FOLDER LIST] – L, адресная книга [ADDRESS BOOK] – A, ляет включать/выключать их. Включите только что добав лен­
настроить программу [SETUP] – S, выйти [QUIT] – Q. Тра дицион­ ную и на жмите Alt+C, чтобы закрыть окно. Вы увидите Спи­
ный способ – курсорные клавиши и Enter – можно применять в ка­ сок собеседников. Чтобы добавить в него запись, на жмите F11
честве альтернативы там, где это доступно. (вызов контекстного меню) и выберите Добавить собеседника.
Для нача ла настройки учетной записи на жмите клавиши S В появившемся окне можно ввести номер ICQ (имя пользова­
и C. Да лее в Personal Name [Личное имя] наберите ваше имя (на­ теля) и псевдоним, а так же поместить собеседника в группу.
пример, nameuser), а в User Domain [Домен пользователя] – имя Ес ли вы используете несколько учетных записей, ука жите,
почтового сервера (например, mail.ru). В поле SMTP Server (for для какой добав ляется контакт, и на жмите кнопку Добавить.
sending) [Сервер SMTP (для отправки)] ука жите имя сервера для Ес ли новый собеседник не появился в списке, на жмите F10
отправки элек тронной почты (ска жем, smtp.mail.ru). В Inbox Path и перейдите в Параметры, а затем выберите Пока зывать >
[Путь к входящим] необходимо прописать путь к «папке» пользо­ Пустые группы и Пока зывать > Собеседники не в сети.
вателя на почтовом сервере (например, pop.yandex.ru/user=ваше_ Перемещаться меж ду контак тами в списке можно с исполь­
имя@yandex.ru/pop3/). Поле Incoming Archive Folders [Папки архи­ зованием курсорных клавиш, а открытие окна диа лога с тем или
ва входящих] дает возможность за дать путь к ката логу, где будет иным собеседником осуществляется клавишей Enter. Навигация
храниться почта (например, ~/my_email). Этих настроек достаточ­ меж ду окнами чата осуществляется комбинацией клавиш Alt+W
но, чтобы начать работать с элек тронной почтой. или Alt+N (перейти на следующее окно) и Alt+P (перейти на преды­
Из главного меню переходим в FOLDER LIST [Список папок]. дущее окно), закрытие окон – Alt+C.
Программа запросит у вас пароль для указанной в настройках На жатие Alt+A выведет окно Actions [Действия], которое дает
учетной записи, после ввода которого клиент проверит на личие возможность настроить учетные записи, перейти в список собе­
на сервере новой почты. Затем ее можно будет просмотреть – седников, загрузить/выгрузить дополнительные модули, осуще­
папка INBOX [Входящие] в FOLDER LIST [Список папок]. Чтобы от­ ствить передачу файлов, настроить звуки и так да лее.
крыть сообщение, перейдите на него и на жмите Enter. Для возвра­ На этом мы и закончим наше повествование. Конечно,
та к списку сообщений используйте <. Сохранить сообщение для мы затронули лишь базовые возможности указанных программ,
локального хранения (ката лог, указанный в настройках в Incoming но и из них понятно: консольные интернет­приложения обла дают
Archive Folders [Папки архива входящих]) можно, на жав S, а если гибкими настройками и богатой функциональностью. Они впол­
требуется сохранить несколько сообщений за один раз, то на жми­ не могут стать заменой своих графических ана логов для тех,
те ; для отбора писем, а затем A (отобрать все письма). Выделен­ кто предпочитает работать в термина ле, или когда нет возмож­
ные сообщения будут помечены X. Да лее – A, и чтобы сохранить ности запустить X­сервер.
письма, которые были выделены – S.
Для создания нового сообщения на жмите C в главном ме­
ню. Заполните все необходимые поля (To [Кому], Cc – копия,
Attchmnt [Вложение; гласные, видимо, опустили для краткости],
Subject [Тема]) и тело сообщения. Если требуется приложить
к письму какой­либо файл, то для этого на до, на ходясь в заголов­
ке сообщения, на жать комбинацию клавиш Ctrl+J и указать путь
к нему внизу экрана в поле File to attach [Файл для вложения]. На­
жав Ctrl+X, вы отправите письмо (потребуется ввести имя пользо­
вателя и пароль).

Finch: обмен сообщениями Finch предостав­


ляет вам на выбор
Finch – это консольная версия Pidgin. Раннее программа была из­
объемный список
вестна как gaim-text, и получила свое новое имя при переимено­ протоколов���
вании Gaim. Finch – мультипротокольный пейджер, под держиваю­ Кто­нибудь
щий (в числе прочего) ICQ, XMPP/Jabber и IRC. пользуется QQ?

Август 2009 Linux Format 31


Sox

Sox 14.3.0

Sox:
Sweep 0.9.3
Audacity 1.2.6

Вскроем
аудиофайлы
Шашанк Шарма препарирует имеющиеся у вас композиции
с помощью Sox, универсального процессора командной строки.

К
ак ни глупо это звучит, впервые я применил Sound Затем перейдите на страницу проек та по адресу http://sox.
Exchange (Sox) для вырезания кусочка из саунд­ sourceforge.net и скачайте последний tar­архив. Все верно, это
трека к фильму, чтобы сделать себе из него ринг­ не пре­компилированные бинарники. Теперь запустите команду:
Наш тон� А ведь Sox способен на большее, чем простое на­ tar zxvf sox­14.3.0.tar.gz
эксперт резание аудиофайлов� Простейшие операции, выполняемые с по­ для получения ката лога sox­14�3�0.
Шашанк Шарма мощью программы — проигрывание музыки или преобразование Если вы хотите, чтобы Sox под держивал MP3, добавьте
Соавтор Beginning форматов, но сложных функций для управления файлами в Sox перед его установкой библиотеки libmad и Lame. По ходу, так­
Fedora, и уже лет просто бездна� же установитe libmad-level и lame-level. Они обычно представле­
пять пишет о сво­
бодном ПО. Он так­
Sox устанавливается по умолчанию в большинстве дистри­ ны в репозиториях большинства дистрибу тивов, поэтому у вас
же участвовал бу тивов, но там может быть не самая свежая версия программы. не должно возникнуть проблем с их поиском. После установки,
в Linux.com. Текущий релиз – 14.3.0, и если ваша версия отлична от этой, перейдите в только что распакованный ката лог sox­14�3�0 и за­
первым делом уда лите ее и установите последнюю. Избавиться пустите./configure, а затем make и make install.
от Sox можно при помощи графического менед жера пакетов ва­ Теперь на вашем компьютере есть последняя версия Sox,
шего дистрибу тива, или Yum и apt-get, если вы фанат командной с под держкой MP3, и все довольны – ну, разве что на дулись фа­
строки. Пользователи Fedora могут уда лить Sox командой наты OGG. Вы можете их утихомирить, отконвертировав вашу кол­
su ­c “yum remove sox” лекцию MP3 в формат OGG командой
sox soundtrack.mp3 appeased.ogg
Вы можете проигрывать любой из этих форматов с помощью
play appeased�ogg.

Выполнение операции
Продолжитель­ Теперь время перейти к более сложным за дачам – а что может
ность затухания
быть полезнее создания ринг тона? Воспользуемся опцией trim
звука по умолча­
нию равна про­ для уда ления из за данного аудиофайла всего ненужного, но сна­
должительности ча ла найдем «подопытного кролика», а затем применим к нему
нарастания� soxi. Эта команда читает заголовок выбранного файла и выво­

32 Linux Format Август 2009


Sox

дит на экран полезные сведения. При использовании без клю­


чей soxi выводит всю информацию, найденную в заголовке, а раз­
личными ключами вывод можно ограничить. К примеру, команда
soxi ­d Titoli�wav выведет длительность Titoli�wav в формате
ЧЧ:мм:СС, а команда soxi ­r Titoli�wav – частоту дискретизации.
[linuxlala@localhost ~]$ soxi Music/Titoli.wav
Input File : ‘Titoli.wav’
Channels : 2
Sample Rate : 44100
Precision : 16­bit
Duration : 00:02:50.99 = 7540736 samples =
12824.4 CDDA sectors
Sample Encoding : 16­bit Signed Integer PCM
Для функции обрезки необходимо знать только Длительность;
она выра жается в формате ЧЧ:ММ:СС или в количестве звуковых
отсчетов. Если вам интересны только начальные 40 секунд фай­ Sweep — еще одна графическая альтернатива Sox; его GUI позволяет выполнять
ла, выполните следующую команду: сложные операции со звуком на разных частях аудиофайла одновременно�
sox Titoli.wav 40_seconds.wav trim 0 40
Для опции trim необходимы два параметра: start [начало] В Sox легко добавлять к аудиофайлам эхо­эффек ты. При ра­
и length [длина]. Соответственно, 0 и 40 означают начальную по­ боте с ними нужно за дать команде Sox четыре значения: gain­in, Скорая
зицию и продолжительность. В этом случае, мы берем первые gain­out, delay и decay. Delay – это разница во времени меж ду ис­ помощь
40 секунд от нача ла. Если вам ну жен кусок с середины файла, за­ ходным аудио и эхо­эффек том, который так же называется отра­
В основном функ­
мените 0 на соответствующее значение и ука жите необходимую жением, а decay определяет громкость отра жаемого звука по от­ циональность Sox
длину. Например, файл middle�wav изготовлен при помощи сле­ ношению к gain­in. Delay и decay указываются в миллисекундах осуществляется
дующей команды: (ms), а gain­in и gain­out описывают уровень громкости. через команду
Sox Titoli.wav middle.wav trim 130 150 sox, но команды
Она создает 20­секундный клип, обрезая нача ло и конец исход­ Ответь мне, эхо play и rec можно
выполнять сами
ного файла. Кроме стандартного эхо­эффек та, в Sox так же существует по себе.
функция echos. В ней исходный звук используется для создания
Затухание звука начального отра жения; это отра жение и исходный звук затем ис­
Различают два типа меломанов: одни любят зату хание и на­ пользуются для создания второго отра жения, и т. д. Струк тура
растание звука, а другие – нет. Если вы из лагеря первых, добавь­ команды почти идентична основной команде echo: вы просто соз­
те эффект постепенного на­ даете больше пар delay/decay.
растания звука с помощью
sox song.mp3 fade_in.mp3
«В Sox очень легко Теперь, пока вы не искази­
ли свои аудиофайлы эхо­эф­
fade 5 170
Здесь 5 – это длина на­
добавить эхо-эффекты фек тами до неузнаваемости,
вспомним команду play, о кото­
растания, а 170 – время оста­ к аудиофайлам.» рой шла речь до этого. Вы мо­
новки (продолжительность жете применить следующую
Audacity — куда
песни) в секундах. Вы так же можете на ложить эффек ты за­ команду: более сложный ре­
ту хания и нарастания звука одной командой, согласно такому play Titoli.mp3 echos 0.8 0.7 500 0.5 600 0.8 дактор аудиофай­
синтаксису: для прослушивания эффек тов без изменения самого файла. лов: он микширует
sox song.mp3 fade_in_out.mp3 fade fade­in­length [stoptime В этой статье мы остановились только на базовых командах, треки и добавляет
[fade­out­length]] выполняемых с помощью Sox, но рекомендуем так же обратить всевозможные эф­
фекты через эле­
Таким образом, для создания пятисекундного эффек та на­ внимание на графического конкурента Sox – Audacity.
гантный GUI�
растания и 10­секундного эффек та зату хания подойдет следую­
щая команда:
sox song.mp3 fade_in_out.mp3 fade 5 170 10
Зату хание звука нельзя добавить к файлу, не указав время оста­
новки, но его можно и не за давать, если вам ну жен только эф­
фект нарастания звука.

Отсчеты как мера длины


Если вам не под ходит формат ЧЧ:ММ:СС, за дайте время останов­
ки числом отсчетов звука. В файле Titoli�wav например, содержит­
ся 7540736 отсчетов. Это число может быть использовано в коман­
де так:
sox Titoli.wav fade_in.mp3 fade 5 7540736s
Буква s, приписанная к номеру отсчетов, очень важна: она сооб­
щает Sox, что длина указана как число отсчетов, а не время окончания
файла. Заметим, что можно использовать опцию ­s с soxi для опре­
деления числа отсчетов в вашем файле. Разделив число отсчетов
на частоту дискретизации файла, вы полу чите продолжительность
трека в секундах.

Август 2009 Linux Format 33


Оценка быстродействия и профилирование

#!/usr/bin/perl -w
use strict;
use Benchmark qw (:timethis);
my $count = 10;
timethis( $count, sub { `/path/to/myprogram` } );
#!/usr/bin/perl -w
use strict;
use Benchmark qw (:all);
cmpthese( 10, { print time_print . “\n”;
a => sub { `/path/to/oldcode` },
sub printtime {
b => sub { `/path/to/newcode` },
my ($t1, $t2) =
} ); Time::HiRes::gettimeofday;
use Benchmark qw (:hireswallclock); my $time = “$t1.” . sprintf(“%05d”,
#!/usr/bin/perl -w $t2/10);
use strict; return “$time”;
use Time::HiRes; }
use strict;
sub time_print;
print time_print . “:”; my $datafile = “testout.txt”;
# code here my @timearray;
print time_print . “:”; my $count = 0;

Оценка быстродействия
и профилирование
Бывает, что код до ужаса тормозит. Джульетта Кемп покажет,
зачем использовать черную магию тестирования производительности.

Р
аботаете ли вы с оборудованием или с программ­
Наш ным продук том, на каком­то этапе скорость обя­
эксперт зательно станет проблемой� Задача это обширная,
Джульетта Кемп и мы ограничимся ситуацией, когда медленно работа­
весьма ленива на­ ет код, и рассмотрим, как его ускорить� Меры могут быть разны­
счет оптимизации ми, от переписывания программы до покупки нового компьюте­
кода, и предпочи­
ра, но прежде всего необходимо найти основную причину и узкое
тает действовать
направленно. Вот место� Тут­то и пригодится тестирование производительности —
почему она любит и весьма важно сделать его правильно, прежде чем переходить
профилирование. к реформам� При сравнении различных участков кода этот про­
цесс так же иногда называют профилированием�
Тестирование производительности важно рассматривать
как часть процесса усовершенствования кода. Для нача ла соз­
дайте код и убедитесь, что он правильно работает – а уж потом
оценивайте, достаточно ли он быстр. В конце концов, нет особо­
го смысла ускорять код, если он и так справляется: вашу энергию
Вывод скрипта­обертки, использующей Benchmark.pm�
можно употребить на другие дела.

34 Linux Format Август 2009


Оценка быстродействия и профилирование

Повторяющийся процесс
А вот если ваш код тормозит, пора заняться тестированием. Затем
используйте результаты (вместе с ана лизом и профилированием)
для определения наилучшей точки приложения усилий. Реа лизо­
вав исправления, тестируйте снова, чтобы увидеть, достаточно ли
принятых мер. Если нет, переходите к следующей области и про­
должайте работу.
Важно убедиться, что ваши числа состоятельны (то есть
вы понимаете, что получили) и сосредоточить усилия на том уча­
стке, где эффект будет максима лен. Явно не стоит двое су ток
биться над алгоритмом, если за держка обусловлена записью
на диск.

Начальная оценка
Первым делом протестируйте код в его текущем состоянии. Прак­
тически всегда желательно запустить программу несколько раз
подряд, чтобы выборка был репрезентативной. Это позволит
усреднить длительность прогона, которая может меняться
в зависимости от нагрузки процессора. Лучше всего применить
скрипт­обертку, вроде такого: Первый результат содержит стандартные времена Benchmark, а во втором
#!/usr/bin/perl ­w используется hireswallclock� Отличие — в единицах измерения: hireswallclock
use strict; выдает результаты в микросекундах, а не в секундах�
use Benchmark qw (:timethis);
my $count = 10; Учтите, что, приступая к редак тированию, всегда следует дер­
timethis($count, sub {`/путь/к/программе`}); жать под рукой копию старого кода. Это позволит выполнить Скорая
Он написан на Perl, но поскольку для вызова тестируемого ко­ сравнение (как показано выше) и проверить, каких результатов помощь
да используются обратные апострофы (`), его можно использо­ вы достигли, поскольку при оптимизации всегда можно внести Да же если у вас
вать для хронометра жа программы на любом языке, запускаемой ошибку. К тому же это будет той стра ховочной сеткой, что спасет в данный момент
из командной строки. В тексте скрипта вы заметите $count – это вас, если вместо улучшения все рухнет. Вообще­то не мешает ис­ нет проблем с бы­
стродействием,
количество итераций. Другой формат – знак минус и минималь­ пользовать систему контроля версий и регулярно фиксировать желательно вы­
ное число секунд времени процессора на прогон: например, ввод в ней изменения: эти усилия окупаются сторицей благодаря воз­ полнить пару тес­
­5 приведет к запуску как ми­ можности отката на заведомо тов производи­
тельности для
нимум на 5 секунд процессор­
ного времени.
«Потом Benchmark.pm работоспособную версию, ког­
да что­то идет не так.
выявления сред­
них значений.
Benchmark.pm, использо­
ванный выше модуль Perl, удо­
сообщит, насколько Итак, наста л момент за­
пуска первого набора простых
Затем, если вам
пока жется, что
бен так же и для тестирования ускорился код.» тестов. Помните, что во время работа ста ла мед­
леннее, чем рань­
производительности программ тестирования не следует за­
ше, вы сможете
не на Perl: просто применяйте апострофы для вызова кода пускать другие за дачи, иначе результаты собьют вас с толку. По сравнить данные
из Perl­скрипта, как было сделано выше. Benchmark.pm обычно возможности следует так же выполнить скрипт­обертку, сам даю­ и понять, так ли
поставляется с достаточно свежей версией Perl, но может быть щий усредненные результаты, несколько раз, и усреднить еще это, или просто
установлен и через CPAN. Подправив код, снова воспользуйтесь и их, добиваясь более показательного значения. Убедитесь, что вы ста ли менее
терпеливы.
Benchmark.pm, чтобы выяснить, намного ли код стал быстрее: ничего не загру жаете: это может сказаться на скорости обработ­
#!/usr/bin/perl ­w ки или ввода/вывода. Желательно выполнить столько прогонов,
use strict; на сколько у вас хватит времени или терпения: чем больше прого­
use Benchmark qw (:all); нов, тем точнее будет результат.
cmpthese( 10, {
a => sub {`/путь/к/старому коду`}, Профилирование: расчленяем код
a => sub {`/путь/к/новому коду`}, По получении оценки, следующий шаг – логическое деление ко­
}) да. Просмотрите его и выделите разделы, на которые его можно
Отметим, что cmpthese сравнивает количество прогонов кода разбить. Вот некоторые пред ложения:
в секунду, а не время выполнения. Однако это может быть по­ раздел работы с диском (например, чтение или запись);
лезнее, чем абсолютное время, на которое влияет планировщик создание и/или заполнение струк тур данных;
ядра и другие системные функции. Скрипт­обертка так же подав­ алгоритмы и вычисления;
ляет любой вывод исследуемого кода в stdout. По умолчанию, какая­либо работа с сетью (но, вероятно, здесь ускорение будет
cmpthese работает до ближайшего целого числа секунд, но мож­ вне вашего контроля).
но включить высокоточный таймер при помощи На данном этапе для компилируемых языков следует, веро­
use Benchmark qw (:hireswallclock); ятно, слегка переделать ваш код или разбить его на части.
чтобы получать значения времен в микросекундах. Вывод на диск убрать довольно просто – для этого иногда доста­
точно пару раз что­то закомментировать; но ввод с диска выки­
Ведем записи нуть сложнее, поскольку для получения результата алгоритму
Обертки выводят все полученные значения времени на консоль, нужны данные. Вместо этого можно поступить наоборот, убрав
но вывод можно перенаправить в файл (используйте wrapPer�pl все, кроме чтения; вычтите среднее время таких прогонов из сред­
>> benchmark�txt, чтобы результаты ка ж дого прогона добавлялись него времени работы полной версии, и получите среднее время
к нему, не перезаписывая старых), для отслеживания прогресса. работы алгоритма.

Август 2009 Linux Format 35


Оценка быстродействия и профилирование

Для примера допустим, что имеется три основных раздела ко­


да: чтение данных, проведение вычислений и запись новых дан­ Вычисление времени
ных. Создайте три версии вашего кода:
A: Полная версия
Альтернативой для хронометра жа при использовании Perl и Benchmark
B: Только чтение данных (без расчетов и вывода). является вычисление разности времен при помощи
C: Чтение данных и вычисления (без вывода). my $t1 = new Benchmark;
Пусть тестирование трех этих версий да ло следующее: версия # code
my $t2 = new Benchmark;
А выполняется 4 секунды, B – 1 секунду и C – 3,5 секунды. То есть
my $td = timediff($t1, $t2);
чтение данных занимает 1 секунду (из B). Вывод данных занимает print “Первый раз дел потребовал $td \n”;
0,5 секунды (раз­ Однако такой результат труднее обрабатывать автоматически.

«Весьма важно ность меж ду А и С).


И, следовательно,
найти узкое место вычисления идут
2,5 секунды. Вы мо­ Обработка данных
вашего кода.» жете найти это по Выполните код несколько раз, перенаправляя вывод в файл,
формуле A – B – вы­ а затем воспользуйтесь следующим скриптом Perl для его
вод данных = время работы (в нашем случае 4 – 1 – 0,5 = 2,5). обработки:
Вот время, требуемое для работы без ввода и вывода данных. #!/usr/bin/perl ­w
Вы можете использовать данный метод при хронометра же use strict;
других участков кода, которые трудно отделить.
Альтернатива – выводить в контрольных точках систем­ my $datafile = “testout.txt”;
ное время. Скрипт Perl, приведенный ниже, cгенерирует при за­ my @timearray;
пуске по одной строке на прогон кода: my $count = 0;
#!/usr/bin/perl ­w
use strict; open DATA, $datafile;
use Time::HiRes; while (<DATA>){
sub time_print; my @time = split /:/;
print time_print . “:”; push @{ $timearray[$count] }, @time;
# здесь код $count++;
print time_print . “:”; }
# еще код close DATA;
print time_print . “\n”;
my @result;
sub printtime { for my $rowref ( @timearray ) {
my ($t1,$t2) = Time::HiRes::gettimeofday; my @row = @$rowref;
my $time = “$t1.” . sprintf(“%05d”,$t2/10); for my $i ( 0 .. ($#row – 1) ) {
return “$time”; $result[$i] += $row[$i+1] – $row[$i];
и выдаст нечто подобное: }
1240905933.05204:1240905934.05249:1240905935.05264:1240 }
905936.05312
Значения в этих парах разделяются точками, а пары отделе­ for my $i ( 0 .. $#result ) {
ны двоеточием. Значения в паре – в секундах, прошедших с на­ print “Section “ . ($i+1) . “ average = “ . $result[$i] / $count . “\n”;
ча ла эпохи, и в микросекундах; первое – время запуска скрипта, }
а второе – время завершения. Использование модуля Time::HiRes Это приведет к выводу результата (как показано на экранном
позволяет выполнять подсчет в микросекундах, а не в целых снимке внизу слева), но учтите, что скрипт­тест выполнялся три
секундах. раза, а этого ма ло для правильного профилирования.
Теперь вы должны иметь представление о длительности
выполнения вашего кода в целом, а так же его отдельных частей.
Следующий шаг – ускорение.

Решение проблем
Как указыва лось выше, важно найти в вашем коде узкое место,
чтобы сосредоточить усилия там, где от этого будет больше все­
го пользы. Не исключено, что вы распознаете проблемный кусок
кода, просто поглядев на цифры; а если не получится, постройте
графики с помощью OOo, KChart, Guppi или Graphviz. Кто предпо­
читает работать в консоли, может взять gnuplot.
Если ваш код полон операций ввода/вывода, весьма вероятно,
что они­то и есть узкое место. Скорость можно увеличить при по­
мощи следующих шагов:
Обеспечьте работу локально, а не в сети. Завершив работу
с файлами, перекинуть их на уда ленные диски вы всегда успеете.
Приобретите новую периферию. Возможно, ваша старая про­
Запуск обработчика вывода для выполнения базового профилирования участков кода� сто уже не на высоте. Вы можете бросить ее на те участки, где ско­
рость менее важна.

36 Linux Format Август 2009


Оценка быстродействия и профилирование

Выполняйте операции ввода/вывода пакетно. Например, счи­


тайте данные все разом, а затем уже обрабатывайте их в памя­ Параллельная обработка
ти. Если код выполняется несколько раз, то создайте процедуру
чтения данных один раз в самом нача ле. Ес ли алгоритм больше уже не улучшается, ву ют друг с дру гом, попы тай тесь запус тить
Понизьте «уступчивость» (nice­значение) своего процесса. попробуй те распарал ле лить обработку. Воз­ один и тот же алгоритм сра зу на нескольких
Для просмотра текущих параметров диска можно применить мож но, для этого придется изменить под ход машинах, с разными час тями данных. В дан­
hdparm (например, hdparm ­v /dev/hda). Можно увеличить ско­ к написанию кода, развет вив свои дейст вия ной статье нет мес та для детального рас­
на несколько парал лельных потоков. Напри­ смотрения, но начать мож но с учебников,
рость работы накопителя лобовой атакой – включить прямой до­
мер, при выполнении ана лиза объемного на­ имеющихся в сети. Увы, не все за дачи распа­
ступ к памяти (Direct Memory Access, DMA) (hdparm ­d1 /dev/hda); бора данных, час ти которого не взаимодейст­ рал ле ливаются!
затем вновь оцените быстродействие и посмотрите, сработа ло ли
это. Так же можно изменить значение под держки ввода/вывода
(I/O support) опцией ­c3, это так же способно слегка улучшить бы­ Если вы решили купить новое оборудование, то преж де чем
стродействие. Поэкспериментируйте с другими значениями тратить деньги, попробуйте одолжить на время чью­нибудь ма­
hdparm, но будьте осторожны: некоторые из них могут быть шину с искомыми харак теристиками и провести несколько тес­
опасны. Перед выполнением действий почитайте man­страни­ тов производительности приложения. Лучше знать заранее, чего
цу. При желании сохранить произведенные изменения, выполните вы добьетесь.
hdparm ­k /dev/hda. Если узкое место – ваш алгоритм, то имеется много ресурсов
для их ана лиза. Например, хорошо изучены алгоритмы сортиров­ Скорая
Подгонка файловой системы ки, что позволяет выбрать из них оптимальный для ваших данных – помощь
Вы можете ускорить доступ к файлам, отключив ведение времен­ например, сортировка при помощи двоичного дерева в общем слу­
Опция relatime –
ных отметок при ка ж дом обращении к ним – то есть не делая за­ чае лучше, чем пузырьковая. Впрочем, это выходит за рамки данной это улучшенная
пись в ката лог при ка ж дом открытии файла. Для этого отредак­ статьи – в сети есть множество информации для исследования. версия noatime;
тируйте /etc/fstab, добавив noatime к списку опций в четвертом Имейте в виду, что оптимизация алгоритма – работа крайне если вы исполь­
зуете Ubuntu,
столбце для ка ж дой ФС, которую вы хотите изменить, а потом все тяжелая, и следует убедиться, что итогом потраченного времени
не мешает
перемонтируйте командой mount ­a. Однако отсутствие записей не будет жалкая мелочевка. Но иногда правильный выбор алго­ ее попробовать.
о доступе к файлу способно вызвать проблемы в некоторых про­ ритма приводит к ра дикальным переменам.
граммах: почтовых или резервного копирования. Хотя можно соз­
дать для своего приложения отдельный раздел и использовать Заключение
noatime только в нем. Для получения более подробной информации о том, где тормо­
зит ваш Perl­код, можно запустить Devel::NYTProf или его пред­
шественника Devel::DProf – это всеобъемлющие профилировщи­
Strace и ltrace ки с хорошей документацией. Используя данные инструменты,
вы сможете найти проблемные места конкретных модулей и об­
Strace выводит список системных вызовов, выполненных програм­ думать пу ти их исправления. Не забудьте потом опять выполнить
мой. Обычно для тестирования это перебор, но тут есть пара полезных профилирование, чтобы проверить, есть ли сдвиг.
опций. Например, ­c записывает время ка ж дого системного вызова, Если вы используете Perl или другой скриптовый язык, и спо­
­r выводит относительное время ка ж дого системного вызова, а ­t –
собов ускорения кода не обнару живается, а быстродействие со­
абсолютное (для включения микросекунд используйте ­tt). ­T выво­
дит время, потраченное на системный вызов. С опцией ­e будут отсле­ вершено неприемлемо, то, возможно, на до перейти на ком­
живаться только определенные наборы системных вызовов. пилируемый язык – типа C, C++ или Java. Однако, преж де чем
ltrace выполняет то же самое, но для библиотечных вызовов. погрузиться в это и полностью переделать код, следует хоро­
И вновь ­c посчитает время вызовов и возвратит сводку, а ­t и ­tt пока­ шенько убедиться, что это действительно стоит вашего времени
жут время су ток при запуске ка ж дой строки.
и затраты усилий. Еще раз рассмотрите результаты тестирования
и убедитесь, что сдела ли все возможное для ускорения и дальше
здесь ехать некуда.
По завершении оптимизации выбранного раздела кода весь­
ма важно проверить, что ваш новый код работает так же, как
старый. Лучший способ сделать это – модульные тесты, и это
еще один повод сохранить старый код, чтобы сравнить две вер­
сии. Во время оптимизации вполне вероятно насажать ошибок.
Делайте заметки обо всех изменениях, чтобы не повторять оши­
бок в будущем и не забыть, что вы дела ли, на случай выполнения
схожих операций.
На данном этапе на до снова протестировать производитель­
ность! Выясните, сколько времени вы сэкономили (не позабыв от­
метить, сколько рабочего времени ушло на поправки) и нельзя ли
выиграть еще. Если нужно избавиться еще от пары секунд, по­
смотрите, может ли помочь еще что­то? Или необходимо переде­
лывать весь код заново?
Процесс тестирования производительности и оптимизации
кода – весьма увлекательное занятие, если приступать к не­
му с ясным представлением о цели. Однако это может стать ис­
точником доса ды, если вы поленитесь сперва все тщательно об­
думать. Убедитесь, что ваш случай – первый, и насла ж дайтесь
Strace, выполняемый для одного из скриптов­примеров
переработкой своих алгоритмов и перерасходом на сверкающее
на Perl�
новое оборудование.

Август 2009 Linux Format 37


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

Что за штука…

APML?
Марко Фиорет ти расска жет, как «объяснить» web­сайту, что вас интересует.
ура — еще одну аббревиатуру… web­сайты, категории в вашем блоге или А что с интернет­поиском?
забуду! Что она означает­то? учетной записи на Flickr; темы на форумах, Если вы войдете в поисковую ма­
Attention Profiling Markup Language («Язык которые вы просматриваете чаще всего; шину или базу данных библиотеки, при­
систематизации объек тов внимания»), объек ты ваших поисков и т. д. менив APML, то его данные, как и слова,
он позволяет web­службам отслеживать введенные в строке поиска, будут исполь­
интересы и выявлять потребности пользо­ И что APML сделает с этими зованы для получения более под ходящих
вателей. данными? результатов.
Зная ваши интересы, любой посещае­
Это насчет онлайн­рек ламы? Она мый вами сайт уже не подсунет вам то, что Теперь о технических деталях�
меня не волнует — я ее фильтрую� вы наверняка проигнорируете. APML пред­ Как работает APML?
Подавление web­рек ламы – верный спо­ лагает метод сбора и систематизации по­ Если коротко, то ваши Attention Data
соб пройти мимо web­сайта с уникаль­ добных сведений – в полуавтоматическом («Данные об интересах») сохраняются
но интересным для вас контентом. Вам режиме под вашим контролем – в форме, в вашем личном Attention Profile («Профи­
это на до? К тому же рек лама – лишь од­ ясной и понятной всем сайтам. ле интересов»).
на из областей, которые способен преоб­
разить APML. Намекаете, что APML создан Яснее не стало� Что такое Attention
не только для рек ламы? Data?
Хм… Ну и что еще преображает APML – это универсальный способ «объ­ Это набор переменных, описывающих ва­
APML? яснить» уда ленному компьютеру, что шу онлайн­ак тивность на основе све­
Представьте себе Интернет в виде ярмар­ именно вас интересует. А затем этот ком­ дений о часто посещаемых вами сайтах,
ки, где ка ж дый продавец забегает перед пьютер распорядится полученной инфор­ RSS­лентах, блогах или постах, заклад­
вами и кричит: «Взгляните на меня, купите мацией в соответствии с за ложенной про­ ках, фотографиях или видеозаписях, ко­
мой товар, купите, купите, купите!» граммой. Нетрудно дога даться, что польза торые вы просматриваете или публикуе­
такого под хода не ограничивается пер­ те на Flickr или YouTube, музыке, которую

«Зная ваши интересы, сона лизированной рек ламой. Например,


можно повысить эффек тивность про­
слушаете на Last.fm, и т. д., и т. п.

сайт не всучит вам то, смотра новостей, онлайн­шопинга и ин­


тернет­поиска.
А что такое Attention Profile?
Это систематизированная коллекция
что вы игнорируете.» данных об интересах, ка ж дому разделу ко­
Давайте начнем с шопинга� торой присваивается рейтинг – числовое
Представить нетрудно — потому­то Давайте. Ска жем, Пол обожает ску­ значение – и временная метка. Порядок,
я и поставил фильтр… теры фирмы Vespa: он набил свой брау­ в котором ваши интересы регистрируют­
Понимаю. Тогда вообразите, что у вас при зер закладками на страницы с любыми ся в данном профиле, позволяет сайту
себе плакат с надписью: «Да же не смотрите упоминаниями о Vespa, ак тивно участву­ «понять», что вам в данный момент нужно
в мою сторону, если только вы не продае­ ет в форумах фанатов Vespa, и так да­ больше всего.
те китовый ус – сегодня мне только он и ну­ лее. И вот он за ходит на сайт дилера по­
жен». А потом напрягитесь и вообразите, держанных ску теров. Если на нем заранее Каков формат файла APML?
что все торговцы повинуются надписи! узнают о пристрастии Пола к Vespa, то со­ XML. Когда вы обращаетесь к служ­
ответствующие сведения всплывут на пер­ бе или приложению, под держивающему
Вот уж чудо из чудес! Неу жели вые же строки домашней страницы. APML, происходит создание или обнов­
APML это удастся? ление XML­файла формата APML. Затем
Да, APML обещает стандартный, в значи­ Кру то� Вы сказали, с новостями вы передаете его web­сайту для повы­
тельной мере автоматизированный способ так тоже можно? шения качества обслу живания.
«дать понять» при входе на сайт, что имен­ Конечно. Вы сами выбираете ленты RSS
но вы предпочитаете. для загрузки, но выну ж дены скачивать Вроде начинаю понимать� Что же
их целиком, да же если отслеживаете по­ конкретно находится внутри
Откуда же APML про это узнает? стоянно всего одну­две темы. Используя APML­файла?
Будут отбираться подсказки, пре­ APML, любой RSS­клиент или новостной Сводка ваших скрытых и явно выра жен­
доставляемые вашими пу тешествиями по портал выдаст волнующие вас сообщения ных интересов, их источники и авторы,
Интернету: закладки; часто посещаемые в первых строках списка. а также численные значения рейтинга

38 Linux Format Август 2009


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

этих интересов (в виде процентов). И еще Есть порта лы, например www.particls.com, языке – вы в любом случае не контроли­
временные отметки для ка ж дого поля. http://engagd.com и www.cluztr.com, специ­ руете действия получателя, включая мо­
ально созданные для использования и об­ шенничество с вашими данными. Кроме
Не слишком ли это статично? мена данными Attention Data. того, сайтам, которые запрашивают APML­
Я не всегда покупаю одно и то же� файлы, ничто не мешает добывать све­
Так для этого и нужны временные отмет­ А я и не знал об этом ничего��� дения о вашей личности и другими спосо­
ки и рейтинги! Если вы за дума ли сменить Как думаете, станет ли APML бами. Тут уж семь бед – один ответ.
автомобиль, то перед покупкой нового вы, всеобщим стандартом, или ему су ждено
вероятно, накинетесь на соответствую­ раствориться в безвестности? есть ли другие проблемы?
щие сайты. В этот период значение, при­ Интересный вопрос – сейчас на него от­ Да. APML – это один из способов ви­
своенное вашим интересам по части при­ ветить непросто. Много шума вокруг деть только то, что нам необходимо. Иг­
обретения автомобилей, будет постоянно APML было в конце 2007 – нача ле 2008 го­ норировать то, что нас в данный момент
расти, а временные отметки в этом раз­ да. Потом наста ло затишье. Это может оз­ не интересует, чертовски удобно, но не все­
деле будут обновляться по несколько раз начать и то, что механизм вполне готов гда умно. Например, из­за фильтрации но­
в день. Высокие рейтинги и свежие вре­ к использованию, и то, что часть планов востей вы можете пропустить важные
менные отметки – явное свидетельство, забуксова ла. изменения в мире, и выпа дете из реаль­
для любой web­службы, резкого повы­ ности. Короче, должен быть компромисс,
шения интереса к данной сфере, и повод Но что могло пойти не так? и ка ж дый выбирает его сам.
для направления в ваш адрес соответ­ Чтобы APML реально заработал,
ствующего контента. он должен быть целостным, ак туаль­ Кто занимается разработкой APML?
ным и почти невидимым для конечно­ Могу ли я помочь?
Допустим, я уже купил автомобиль… го пользователя. Эти цели противоречи­ Адрес рабочей группы APML– www.apml.
Скорее всего, вы прекратите посе­ вы, их трудно достичь одновременно. Еще org. Кроме Википедии, группа пред­
щение сайтов автодилеров. Временные один аспект – конфиденциальность ин­ ставлена на Facebook и в Google Groups
отметки начнут устаревать, а рейтинг со­ формации. (ht tp://groups.google.com/group/apml­
ответствующего раздела будет снижать­ public/topics).
ся – в результате APML­службы переста­ Да, о ней мы как­то забыли�
нут направлять вам «автомобильную» Может ли APML нарушить ее? Где можно прочесть побольше?
информацию. Ну, если вы завсегдатай социальных се­ Ответы на часто за даваемые вопро­
тей или постоянный пользователь служб сы можно найти на http://groups.google.
Насколько распространена эта web­почты (Google, Hotmail, Yahoo…), com /group/apml­public/web/apml­faq,
штука? Многие ли онлайн­службы то не все ли равно, в каком формате хра­ а спецификация APML на ходится по ад­
уже используют APML? нятся всем известные данные? Проблемы ресу http://apml.pbworks.com. Ес ли же вы
В число web­сайтов, использующих с конфиденциальностью зависят от ис­ просто хотите под робнее узнать о целях
APML или заявивших о его использо­ пользования сведений их получателями – и за дачах APML, то стоит прочесть сле­
вании, входят Google, Digg, Bloglines, неважно, с APML или без. дующие статьи: http://tinyurl.com/3d2h9d,
NewsGator, LastFM и Delicious. Существуют w w w.cleverclogs.org / 20 07/10/ basics­
модули WordPress, позволяющие сфор­ А если поподробнее? of­atten.html и http://eliasbizannes.com/
мировать файл APML из любого блога Заявляя о себе – будь то через файл blog/2007/10/explaining­apml­what­it­is­
(http://wordpress.org/extend/plugins/apml). APML или через резюме на клингонском why­you­want­it. LXF

Август 2009 Linux Format 39


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

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

Байтом меньше
в глобальном потеплении

Б
удучи читателем этого журна ла, вы,
конечно, знаете, что нужно заботить­
ся о нашей чудесной голубой плане­
те, повторно перерабатывая от ходы. Один
из аспек тов этой заботы, который давно ме­

Простая интеграция ПК
ня беспокоит – это биты информации, кото­
рые мы выбрасываем за нена добностью.
И я рад сообщить о новой инициативе по
уменьшению объема цифровых от ходов. Со­
гласно принятым мерам, к 2015 г. мы смо­ Likewise Open Забудьте о проблемах подключения
жем достичь его снижения на 75 %, несмотря сервера Linux к домену Active Directory.
на текущие темпы развития цифрового рын­

М
ка. Например, с 1 апреля 2012 года уже нель­ ир интеграции многим обязан коман­
зя будет создать новый TCP, UDP или IP­заго­ де разработчиков Samba. Однако на­ Прежние годы
ловок. Нужно будет повторно использовать строить Winbind, Samba и PAM на ком­
старые протоколы, соответствующим обра­ пьютере с Linux, чтобы подключить его к домену Много лет назад я пытался читать курс лекций
зом изменив поля. Active Directory, все еще непросто. Если вы думае­ по интеграции Unix и Windows NT. Он явно опере­
Для этого местные власти установят те заняться этим, обратите внимание на продук­ жал свое время – тогда не существова ло хороших
решений для разделения ресурсов или SSO в сме­
в вашем кварта ле серверы переработки. ты от Likewise. Простой вариант для начинающих
шанной среде Unix, Linux и Windows.
Потребители обязаны будут делить свой называется Likewise Open и позволяет подклю­
цифровой мусор на отдельные файлы – чить компьютер с Linux к домену за один шаг
кадры Ethernet, всевозможные заголовки из командной строки или через графический ин­ ry. Имя пользователя нужно будет ввести в фор­
протоколов, публичные ключи SSH, истек­ терфейс. Программа выполняет все необходи­ мате ‘domain\username’, например
шие сертификаты X590 и т.д – и они бу­ мые настройки для того, чтобы под держиваю­ ssh ‘example\chris’@hostname
дут отправляться на переработку. Все, что щие PAM службы хоста могли ау тентифицировать Likewise Open не требует расширений для схе­
не попа дает в определенную категорию, пользователей домена Active Directory, учитывая мы Active Directory. Linux­часть подключается
будет рассортировываться на единицы и ну­ их членство в группах AD. к библиотекам resolver и PAM, а Windows­часть
ли и так же перерабатываться. действует как клиент Kerberos 5 и LDAP для ау тен­
Если этого не сделать, биты будут по­ Ослабьте привязь тификации и авторизации соответственно.
степенно исчерпаны, и дойдя до последней Добавив компьютер в домен, вы сможете войти Потенциальная проблема Winbind состоит
единицы, цифровой мир резко встанет. в систему как любой пользователь Active Directo­ в автоматическом назначении идентификато­
А может, последним будет ноль – сказать ров пользователя и группы Linux
трудно. (UID и GID) пользователям Active
Маркетологи, несомненно, попробуют Резольвер, Directory. При желании управлять
например,
вскочить на подножку уходящего эко­ getpwnam() этим, воспользуйтесь Likewise
поезда, и мы увидим в магазинах короб­ UID-GID Module (он не бесплатен).
Переключатель
ки с приложениями, снабженными зеленой службы имен
Имя
Реквизиты Данный модуль расширяет Active
наклейкой в углу и надписью «Эта про­ пользователя Winbind (Microsoft RPC) Directory, так что пользователям
грамма на 90 % состоит из повторно исполь­ libnss_winbind Linux UID SID и группам Linux можно на зна­
Microsoft
зуемых битов». Active Directory чать идентификаторы по своему
PAM­модуль
Славные перемены, что и говорить. Winbind усмотрению.
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ Более подробную информацию
PAM
В данной колонке 12 536 бит, и это 15 % ищите на www.likewise.com.
от рекомендованного норматива дневного Постоянный кэш соответствий
username/SID/Linux UID
потребления. PAM­приложения
Winbind «перекидывает мостик»
между Linux и Active Directory�

40 Linux Format Август 2009


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

реально безопасная оболочка


SSH Напуганы записями о неудачных попытках входа в систему по SSH,
кишащими в файлах журналов? Задрайте люки по плану о шести пунктах.

Е
сли ваш SSH­сервер или компьютер открыт для доступа личный/приватный ключ, запустите ssh­keygen, чтобы создать ее,
через Интернет, то число неудачных попыток входа в систе­ за дайте парольную фразу и воспользуйтесь ssh­copy­id, чтобы
му будет достигать сотен и тысяч в день. Феноменально? скопировать публичный ключ в файл authorized_keys на сервере.
Кто не верит, загляните в файлы журна лов. И что тут можно пред­ Это в самом деле эффек тивная защита, но если вы регулярно
принять, кроме как струхнуть? Рассмотрим шесть способов повы­ входите в систему с разных компьютеров, на до носить закрытый
сить защищенность входа в систему через SSH. ключ с собой.

1 Надежные пароли 4 Запустим SSH на нетипичном порту


На дежные пароли – первый рубеж обороны. Изу чите критерии на­ Порт, который слушает sshd, можно изменить, установив пара­
дежности пароля (и обучите своих пользователей, если они у вас метр Port в конфигурационном файле сервера. Измените его но­
есть). В Интернете можно найти массу материа лов, но по су ти, на­ мер на «случайный» и большой. Конечно, его нужно будет указы­
дежные пароли должны быть достаточно длинными, содержать вать при подключении:
смесь букв, цифр и спецсимволов, и не походить на слова из сло­ $ ssh ­p 22550 chris@myserver.example.com
варя. Если у вас есть пользователи, которым разрешено брать Как вариант, можно так же настроить это на ка ж дом хосте,
себе пароли самостоятельно, воспользуйтесь модулями PAM, в конфигурационном файле клиента SSH (/etc/ssh/ssh_config).
например, pam_cracklib или pam_passwdqc, для принудительной Пуристы в информационной безопасности ука жут мне, что
проверки стойкости. полной безопасности нельзя добиться, только пустив пыль в гла­
за. Если вы твердо решите взломать мой компьютер, то без труда
2 Запретим вход как root определите порт, который слушает sshd, с помощью сканера пор­
Если установить параметр PermitRootLogin в файле конфигура­ тов nmap. Но в большинстве атак на SSH методом перебора ис­
ции sshd в no, то вход в систему от имени root будет запрещен. пользуется только порт 22. Могу предположить (хотя это только
Это усложнит за дачу злоумышленника: снача ла ему придется уга­ предположение), что перемещение SSH с порта 22 уменьшит чис­
дать имя обычного пользователя и его пароль, а потом – пароль ло атак на добрых 90 %. Обеспечит ли это безопасность компью­
суперпользователя root. Такая защита по умолчанию включена тера? Не абсолютно. Снизит ли риск? Да. Так или иначе, это, види­
в Ubuntu, хотя и по другой причине – пароль root там заблокиро­ мо, самая слабая мера из здесь приведенных.
ван. Однако это не особо удобно и для клиентов, которым нужно
войти в систему как root, потому что им снача ла нужно будет сде­ 5 Гоним нарушителей­рецидивистов
лать это под обычным пользователем, а потом – под root. Недавно мне попа лась программа fail2ban, которая блокиру­
ет сайты, неудачные попытки входа в систему с которых повто­
3 уберем подключение с паролем ряются. Ее идея очень проста. Время от времени она заглядыва­
Хотя SSH под держивает несколько механизмов ау тентифика­ ет в журна лы, на ходит сообщения о неудачных попытках входа
ции, по умолчанию обычно ак тивны только два – парольная ау­ в систему (с помощью регулярных выра жений) и извлекает IP­ад­
тентификация и ау тентификация с публичным/приватным клю­ рес нарушителя. По превышении определенного порогового зна­
чом RSA. Установив параметр PasswordAuthentication в файле чения (его можно за дать), fail2ban меняет правила брандмауэра
конфигурации sshd в no, вы заставите sshd использовать ау тенти­ Iptables таким образом, что IP­адреса нарушителей полностью
фикацию RSA. Перед этим, впрочем, нужно скопировать публич­ блокируются. Запрет может быть постоянным или сниматься
ный ключ на сервер. Это нетрудно: если у вас еще нет пары пуб­ по истечении определенного времени.

6 Ограничим частоту подключений


Идея здесь состоит в том, чтобы ограничить частоту, с которой
можно устанавливать новые SSH­соединения с одного IP­адре­
са. Если она превышена, поместите IP­адрес в черный спи­
сок (предполагая, что это злоумышленник)
и отбрасывайте (DROP) все со­
единения с данного адреса час
или около того. Все это умеет
делать новый модуль Iptables.
Обратите внимание, что дан­
ное решение работает только
на IP­уровне, и отличить удачный вход
в систему от неудачного невозможно –
ограничивается только число попыток. Хоро­
шее обсу ж дение данной технологии имеется на сай­
те www.sollers.ca/blog/2008/iptables_recent.

если вы хотите узнать об SSH больше,


материалов очень много��

Август 2009 Linux Format 41


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

Wireshark
Wireshark Интересно, что на самом деле происходит в вашей
сети? Wireshark поможет это выяснить. Wireshark 1.0.8

W
ireshark – одна из моих любимых утилит. Думаю, по­ нув в микроскоп и увидев то, чего не видел до него ни один чело­
тому, что с ней можно делать открытия. Я еще пом­ век. Пожа луй, я немного отвлекся, но Wireshark – это, несомнен­
ню то удивление, которое испытал, когда попробовал но, и удобное средство диагностики, и увлекательный инструмент
ее в первый раз (в те времена она называ лась Ethereal). Наверное, для изучения того, как все работает.
так же чувствовал себя Антоний ван Левенгук, впервые загля­ Wireshark – это утилита, перехватывающая сетевой трафик
с одного или нескольких сетевых интерфейсов. Можно за дать
набор правил, определяющих интересующие вас пакеты. Затем
Фильтры захвата эти пакеты откла дываются в сторонку (точнее сказать, в буфер)
и всесторонне ана лизируются. Перехваченные пакеты можно так­
же сохранить в файл и загрузить из него. Обычно Wireshark пе­
Чтобы захватить��� ���используйте фильтр
реводит сетевой интерфейс в так называемый «неразборчивый»
Только трафик, идущий от или к за данному IP host 192.168.1.44 режим (promiscuous mode) и принимает все пакеты, а не только
Только трафик, идущий от или к за данной подсети net 192.168.1.0/24 адресованные вашему компьютеру. Для перевода в «неразбор­
чивый» режим нужны привилегии суперпользователя, поэтому
Только DNS­трафик (порт 53) port 53
Wireshark обычно запускается от имени root.
Все, кроме ARP и DNS port not 53 and not arp Начнем с простого примера работы Wireshark: рассмотрим
результат обращения к web­странице на сервере 192.168.1.67
из браузера на клиенте 192.168.1.69. В верхней части изобра жения
(выделена зеленым на рисунке внизу) показан весь обмен паке­
Фильтры отображения тами. Ка ж дая строка – это один пакет. Пакеты с первого по тре­
тий – открытие TCP­соединения, четвертый – запрос HTTP GET,
а шестой – ответ на него. Пакеты 7–10 показывают завершение
Чтобы увидеть��� ���используйте фильтр соединения на обоих концах. В колонке Time [Время] показа­
Только трафик меж ду машинами ip.src==192.168.0.0/16 and но время, прошедшее с за хвата первого пакета в секундах. Оно
в локальной подсети ip.dst==192.168.0.0/16 пригодится, например, для ана лиза за держек из­за тайм­ау тов
Только трафик от MAC­адресов устройств Dell eth.addr[0:3]==00:06:5B DNS. В нашем слу чае на это понадобилось менее 3 мс.
Четвертый пакет на рисунке выделен для подробного ана ли­
Только HTTP­запросы с URI, заканчивающи­
http.request.uri matches “foo$” за. В средней панели мы видим общую информацию о заголов­
мися на foo
ках внутри него для ка ж дого уровня стека протоколов. С помо­
Трафик, имеющий отношение к Windows smb || nbns || dcerpc || nbss || dns щью ма леньких стрелок слева можно раскрыть любой уровень,
показав его более подробно. Мы сдела ли это с заголовком
уровня приложения – в данном слу чае это HTTP­пакет. Теперь
мы видим, что это запрос HTTP GET, и видим поля заголовка
HTTP­запроса.
В нижней части панели отобра жается содержимое пакета,
байт за байтом, в шестна дцатеричном формате и в ASCII. Под­
свеченная часть показывает поле заголовка HTTP, выделенное
выше – в данном слу чае, поле Host:.

Фильтры
Фильтры – одна из самых мощных возможностей Wireshark.
Фильтр – это один или несколько тестов содержимого пакета, по­
зволяющих понять, интересен ли он вам. Фильтрация выполня­
ется в две ста дии. Фильтры за хвата определяют пакеты, кото­
рые будут удержаны в буфере за хвата, а фильтры отобра жения
определяют, какие пакеты будут показываться. Язык фильт­
ров богат, и фильтровать можно прак тически по любому полю

Спросите разрешения!
Если вы хотите запустить Wireshark в своей корпоративной сети
или сети провайдера, наверное, стоит снача ла спросить разреше­
ния. Хотя это совершенно пассивная и никуда не вторгающаяся ути­
лита (и в большинстве сетей все равно пока жет только «ваши» па­
кеты), корпоративная политика может запрещать применение таких
Главное окно Wireshark� Все, что вы хотели знать о своей сети, в приятной средств. Я вас предупредил!
цветовой гамме �

42 Linux Format Август 2009


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

Цветовое правило
За кадром связывает выраже­
ние фильтра с ото­
бражаемым цве­
За ка дром Wireshark всю работу делает программа Dumpcap, которая, том� Цвет каждого
в свою очередь, использует библиотеку за хвата и фильтрации паке­ пакета определя­
тов Libpcap, где и на ходится настоящий движок Wireshark. ется первым соот­
Эта библиотека используется и другими утилитами перехвата ветствующим ему
сетевого трафика: например, Tcpdump, утилитой сканирования пор­ правилом�
тов Nmap, системой обнару жения вторжений Snort и Tshark – собра­
том Wireshark, работающим с командной строки.

любого из протоколов, что позволяет сконцентрироваться на тра­ Wireshark. Редак тор цветовых правил поможет создать новые
фике, который вам интересен. правила (используя тот же синтаксис, что и у фильтров) и цве­
Наблюдательные читатели могли заметить, какой фильтр та для них, а так же импортировать или экспортировать набор
использовался в последнем примере. Он состоит из простого цветовых правил. Так же можно применять пользовательские
правила not arp и используется, чтобы подавить ARP­болтовню цветовые правила для подсветки пакетов на фоне другого тра­
с моего широкополосного маршру тизатора. фика. На сайте www.wireshark.org есть набор готовых цветовых
Фильтры могут оперировать с за данными протоколами, та­ правил, с которых можно начать.
кими как IP, TCP, UDP, ARP и т. д. Они могут выполнять сравнение А в окне параметров за хвата можно за дать – не ждите при­
на равенство и неравенство и числовое сравнение значений по­ зов за отгадку – параметры за хвата. Здесь можно указать ин­
лей. Для полей со строковыми значениями можно ана лизировать терфейс, пакеты с которого будут за хватываться, переключить
подстроки с помощью оператора contains и проверять их на со­ его в «неразборчивый» режим, за дать фильтр за хвата и уста­
ответствие регулярным выра жениям оператором matches. Мож­ новить предельные значения для числа пакетов, объема данных
но да же сравнить содержимое за данной части пакета с помощью или времени.
синтаксиса [смещение:длина]. Отдельные условия можно объе­
динить операторами and, not и or. Все это образует универсаль­ Делаем это с командной строки
ный и мощный язык фильтров. Пакеты можно перехватывать и из командной строки с помощью
В Wireshark есть графическая утилита, помогающая соз­ Tshark. Например, опишем перехват ста пакетов с интерфейса
давать фильтры отобра жения. Чтобы запустить ее, на жми­ eth0 в файл /tmp/shark�out, с фильтрацией ARP­трафика:
те на кнопку Expression [Выражение] на панели инструмен­ $ sudo tshark ­i eth0 ­c 100 ­w /tmp/shark.out not arp
тов Filter [Фильтр] главного окна. На рисунке ниже с его (Фильтры Tshark ана логичны фильтрам Wireshark.) Потом можно
помощью определяется фильтр для отобра жения только тех па­ отобразить трафик, прочитав его командой
кетов, которые содержат код ответа HTTP 404 («Файл не найден»). $ tshark ­r /tmp/shark.out
Результирующее правило фильтрации: http�response�code == 404. На рисунке ниже показан фрагмент этого вывода. Тот же файл
Полей, по которым можно фильтровать, полным­полно; а как можно загрузить в Wireshark, чтобы просмотреть его в графи­
узнать их имена? Ну, при перемещении по пакету в главном окне ческом виде.
Wireshark имя поля выбранного элемента отобра жается в стро­
ке состояния. Имена полей можно использовать в выра жениях
фильтров. Вглядевшись в строку состояния первого экранно­
го снимка, вы увидите, что выбранному на панели выше полю
соответствует http�host. Полный список имеется на сайте www.
wireshark.org/docs/dfref.
В двух таблицах на предыдущей странице показано несколь­
ко примеров фильтров за хвата и отобра жения, способных
дать представление об их возможностях. Преж де чем покон­
чить с фильтрами, ска жу пару слов о последнем классе, о ко­
тором нужно знать: он позволяет за дать цветовые правила для

у утилиты командной строки Tshark те же возможностями по перехвату и фильтрации


пакетов, что и у Wireshark, но выглядит она далеко не так приятно�

Где узнать больше


Официальное описание синтаксиса фильт­ примеры цветовых правил и правил фильт­
ров можно найти на man­странице Tcpdump. рации, а слишком уж подробное руководство
На сайте wiki.wireshark.com так же имеется ру­ по фильтрам есть на сайте www.wireshark.org/
Редактор выражений фильтров поможет просмотреть доступные ководство пользователя Wireshark, HOWTO, docs/man­pages/wireshark­filter.html.
поля и построить выражения фильтров �

Август 2009 Linux Format 43


GNU/Linux 2009
Решите проблемы лицензирования ПО
и поддержки компьютерной сети
с помощью профессионалов!
Операционная система GNU/Linux поможет вам с минимальными затратами
решить проблему лицензирования программного обеспечения, навсегда избавиться
от компьютерных вирусов и повысить надежность вашей компьютерной сети.
Компания ГНУ/Линуксцентр предлагает вам внедрение наиболее дружественных
вариантов ОС GNU/Linux, обучение ваших сотрудников и абонентскую поддержку
вашей сети.

С нашей помощью вы сможете:


• сконцентрироваться на своем бизнесе, не отвлекаясь на вопросы поддержки своей
компьютерной сети, лицензирования ПО и борьбы с вирусами;
• забыть о вирусах, угрозах безопасности и необходимости лицензирования
программного обеспечения;
• оптимизировать затраты на лицензирование ПО за счет максимально возможного
использования свободного ПО.

Типовые проекты
• Миграция с Microsoft Windows на GNU/Linux.
• Установка 1С на серверах и рабочих станциях под управлением GNU/Linux.
• Миграция с Microsoft Windows Active Directory на Mandriva Directory Server.

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


различного профиля поможет выбрать оптимальное сочетание свободного
и коммерческого программного обеспечения, подходящее именно для вашей
организации, а также поможет избежать проблем при внедрении свободного ПО.

Департамент внедрений компании ГНУ/Линуксцентр


Москва: (499) 271-49-54, Санкт-Петербург: (812) 309-06-86
e-mail: service@linuxcenter.ru

www.linuxcenter.ru
Учебник

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

еВГеНИй БАЛДИН
В этом месяце вы научитесь...
Начинал с Агатов�
Вещать по сети .... 46 Играть с огнем .... 50
Когда­то даже знал,
Вам незачем копировать свои OGG Не в смысле под жигательства –
что такое Робик�
и MP3 на ка ж дый компьютер или но Майкл Дж Хэммел подробно
носить их на USB­брелке: Энди Чен­ объяснит, как украсить ваши про­
Каждой программе – нел и Socks обеспечат доступ к фо­ изведения пламенным эффек том
нотеке из любой точки квартиры. в GIMP.
по своей ОС
Все компании, занимающиеся Автоматизи- Набирать
операционными системами, ровать офис ............ 54 формулы .................... 58
стремятся предложить Создайте пачку счетов одним щелч­ Если же тира жирование – не то, что
ком мыши! Марко Фиорет ти заста­ нужно, и ваше революционное от­
конкурентоспособную поддержку
вит OpenOffice.org работать на вас, крытие существует пока только
доступа в Интернет. а не наоборот. в рукописи, Дмитрий Смирнов по­
Уильям Генри Гейтс III может оформить его в OOo Math.

Избавляться Писать

К
огда вы будете читать эти
от спама ..................... 62 чат-ботов .................. 66
строки, то нижесказанное Непрошеная корреспонденция заби­ Гуру Python Ник Вейч больше
для вас уже не будет ново­ вает почтовый ящик, и вам по бара­ не снизойдет до общения с про­
стью. Но так как произошедшее со­ бану часы ROL3X? Нейл Ботвик от­ стыми смертными: написанный
бытие является довольно знаковым, гонит нахалов на ранних подступах им Jabber­робот – самый увлека­
благодаря Postfix и Dspam. тельный собеседник в мире!
то нельзя его не прокомментиро­
вать. О чем это я? Компания Google Следить Работать в сети .. 72
заявила, что в ее недрах создает­ за файлами .............. 70 Да, мы знаем, что вы это уже умее­
ся Google Chrome OS. Я пока знаю Создание, изменение, уда ление те, но Артем Коротченко пока жет,
файлов и ката логов – все это собы­ как нау чить этому компьютер. На­
только то, что интерфейсом ко всему
тия Inotify, и с ними можно связать пишите с ним свою собственную
будет Chrome и что в качестве ядра полезные действия. Николай Кузне­ версию Ping!
будет использоваться Linux. Кстати, цов назовет пару примеров.
о последнем говорится несколько
вскользь, и какой процент там оста­
Использовать Защищать
PAM и консоль ....... 76 серверы ..................... 80
нется от GNU – не очень понятно Нет такого Unix­приложения, кото­ Остудите пыл взломщиков: за­
(у вас сейчас уже должно быть рое нельзя было бы усовершенство­ кройте лишние порты и разверните
больше информации). Но в любом вать! От имени root Андрей Боров­ систему обнару жения вторжений.
случае, очевидно, польза будет всем. ский выполнит за дание и выведет Эти и другие вопросы осветит Мар­
цветной текст без Ncurses. тин Мередит.
Драйверов для Linux тоже должно
прибавиться.
Лично меня такое развитие си­
туации совершенно не удивило. Совет месяца: Woof
Linux давно показал, что он являет­
ся идеальной платформой для соз­
Обмен файлами через NFS или Samba прост, когда доступным для скачивания командой:
дания готового решения, а сер­ они уже настроены на обоих компьютерах, но что если ./woof /путь/к/фай лу
висам Google оказа лось нужно та­ вам нужно по­быстрому перекинуть файл с машины Вам будет выдан URL, который нужно ввести
ковое. Эти две технологии просто на машину, не связыва ясь со сложным ПО? Если в браузере на другом компьютере в сети – никакое
нашли друг друга. файл достаточно мал, его можно отправить по элек­ специальное ПО не требуется. По запросу, Woof пере­
Примерно то же самое уже случи­ тронной почте. Если компьютеры на ходятся в одной даст файл и спокойно завершит свою работу (чтобы
лось с домашними и не очень марш­ комнате и USB­порты на них не закрыты, поможет разрешить несколько загрузок одного и того же
ру тизаторами, дисковыми сетевыми флэш­брелок. А есть и еще один интересный метод. файла, используйте опцию ­c). Woof может обслу жи­
хранилищами и точками доступа. Woof – сценарий Python, который будет работать вать и целый ката лог, например:
в любой Linux­ (или схожей) системе. Его имя озна­ ./woof ­z /путь/к/ка та логу
Теперь пришло время браузеров.
чает Web Offer One File [Web­пред ложение на один В данном слу чае он передаст сжатый gzip tar­архив
P.S. Добрый человек пообе­
файл], и он представляет собой «одноразовый» web­ содержимого указанной дирек тории; измените ключ
щал за июль «допилить» Вангеров сервер. Устанавливать ничего не нужно: просто ска­ на ­j или ­u, чтобы использовать bzip2 или отключить
под Linux. Успехов ему и безоблачной чайте программу с домашней страницы по адресу сжатие. Если вам понравился Woof и вы хотите поде­
погоды. www.home.unix­ag.org/simon/woof.html, пометьте сце­ литься им с друзьями, раздавайте копии с помощью
E.m.Baldin@inp.nsk.su нарий как исполняемый и сделайте требуемый файл ./woof ­s

Август 2009 Linux Format 45


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

Sockso: Соберем
Устали переписывать музыку с компьютера на компьютер? Энди Ченнел
создаст вам личный музыкальный сервер, чтобы вы могли слушать
свои мелодии отовсюду.

Создайте ваши плей­листы на сервере, перетаскивая треки


из дерева файлов в окно списка воспроизведения�

Приложение, которым мы воспользуемся, называется


Sockso; свежая версия, 11.8 имеется на сайте http://sockso.pu­gh.
com� Sockso работает под Linux, Mac и Windows и не требует уста­
новки как таковой. Вместо этого распакуйте дистрибутив в подхо­
дящую директорию и запустите файл sockso�jar или скрипт linux�
sh двойным щелчком. Файл JAR означает, что Sockso – это ПО
на основе Java, и если Java у вас пока нет, найдите и установите
версию 1.6 Java Runtime через ваш менеджер пакетов.
При первом запуске Sockso вы увидите главный интер­
фейс. В нем находятся серии вкладок вверху, сообщение о вашем

М
ы любим музыку и любим компьютеры. Совместим IP­адресе
­адресе внизу и двухпанельная секция между ними. В дальней­
и то, и другое – и получится идеальная комбина­ шем это пригодится для доступа к вашей библиотеке и для созда­
ция. Нет, не Kraftwerk,, а сервер, способный проигры­ ния плей­листов, но сейчас они выглядят чуточку одиноко. Нужно
вать ваши MP33 с любого компьютера. На данном уроке мы ска­ добавить немного музыки.
чаем и установим открытый медиа­сервер, настроим его для
проигрывания нашей коллекции, создадим плей­листы и обес­ Эй, диджей, поставь мой диск
Наш печим виртуальный доступ к ним по локальной сети. Мы также Начнем с добавления треков: выберите вкладку Collection [Коллек­
эксперт рассмотрим возможность доступа к вашей фонотеке за преде­ ция] в окне вверху. Появится большой диалог и пара кнопок, нуж­
Энди Ченнел лами домашней сети. ных для добавления и удаления папок из вашей коллекции. Этот
Энди, видимо, бу­ инструмент импортирует подпапки, поэтому не нужно перечис­
дет делать Первые лять альбомы по отдельности – просто выберите общий каталог
шаги в Linux вечно,
с музыкой, и все подкаталоги будут добавлены на сервер. Ссылки
а технологиями он
заинтересовался, на треки создаются внутри базы данных программы – сами фай­
открыв для себя лы в новое местоположение не копируются.
Dragon 32. Мы добавили папку ~/home/user/Music (здесь user – имя адми­
нистратора сервера), и на внесение в базу данных 3600 песен у нас
ушло около трех минут. Возможно, этот процесс займет больше
времени, если ваша коллекция крупнее, посему вы можете про­
пустить эти первые шаги и установить Sockso с движком MySQL,
оптимизированным для работы с большими фонотеками.
По умолчанию Sockso просматривает все добавленные папки
раз в пять минут, отыскивая новые треки. Если для вас это слиш­
ком часто, можете изменить сканирование на ежечасное, перей­
Вы можете обращаться к своей музыке через удобный сайт� дя на вкладку General [Общее] и установив Scan Interval [Интервал

Месяц назад Мы организовали работу с Basket Note Pads и схемами Ooo.


46 Linux Format Август 2009
Первые шаги Учебник

аудиосервер Sockso 1.1.8

сканирования] в 60. Если вы добавили треки и хотите сразу об­ Вы можете


новить коллекцию, перейдите в Collection [Коллекция] и выберите запретить
Scan Now [Сканировать сейчас]. А пока вы находитесь во вкладке скачивание,
чтобы копии
General, почему бы не дать вашему серверу звучное новое имя –
ваших композиций
например, Неукротимая Музыкальная Машина LXF? не сохранялись
Теперь неплохо бы протестировать сервер, поэтому запусти­ повсеместно�
те свой браузер и наберите http://localhost:4444 в адресной стро­
ке. Если все настроено правильно, вы увидите стандартный ин­
терфейс Sockso: множество ссылок под ярким заголовком
и полоса алфавита с правой стороны окна. Выбор буквы при­
ведет вас к списку исполнителей, имена которых начинаются
с нее – справа у каждого имени исполнителя значится количе­
ство доступных альбомов, а слева располагаются три иконки.
Первая проигрывает все треки этого исполнителя, вторая добав­
ляет треки в плей­лист, а третья скачивает композиции (на нее User Playlists [Плей­листы пользователей], которые позволяют
нажимать не нужно, поскольку вы запустили сервер локально). другим пользователям создавать собственные плей­листы через
Щелчок на имени исполнителя выведет список альбомов, web­интерфейс.
а по выбору альбома отображаются отдельные треки. Их плей­листы будут отображаться в интерфейсе адми­
Панель поиска поможет найти определенного исполнителя нистрирования во вкладке Playlists, и если некий пользователь
или песню, в динамике: список доступных треков будет сокра­ создаст замечательный плей­лист, вы можете скопировать его
щаться по мере набора букв. себе. Просто перетащите его в окно Playlist (справа), сделайте Скорая
помощь
изменения и затем сохраните его под новым именем.
Создание плей­листов
Вот бы иметь доступ к плей­листам со всего дома! А с Sockso Доступ по сети Если вы склонны
покопаться в ко­
это легко. Перейдите на вкладку Music [Музыка], и слева Теперь представьте, что в вашем доме четыре пользователя, де, то вся инфор­
вы увидите вашу музыку. Для отображения альбомов нажми­ желающие иметь доступ к серверу. Правду сказать, каждый че­ мация по архи­
те на иконку разворачивания (+) рядом с каждым исполни­ ловек может вводить локальный IP­адрес сервера в браузере, тектуре Sockso
найдется в пап­
телем, а затем пиктограмму рядом с альбомом для отображения но он скорее всего будет не тем, что указан в Sockso. Вы можете
ке application/
треков. Теперь можно перетащить их в окно справа. Порядок пе­ выяснить адрес компьютера в терминале, набрав ifconfig� Введите resources�
сен можно изменить, перетаскивая их вверх или вниз по списку, его в браузере, добавив :4444 – порт нашего сервера.
а удаление выполняется кнопкой Delete. Позаботимся, чтобы каждый из наших пользователей ре­
Получив подходящий вариант списка, нажмите Save Playlist гистрировался для доступа к музыке, и ограничим скачивание.
[Сохранить плей­лист] и введите название. Для просмотра плей­ Для этого перейдите во вкладку Users [Пользователи]
листов, нажмите на вкладку Playlist [Плей­лист] вверху дерева и нажмите кнопку Create User [Новый пользователь]. Укажите
файлов. Для редактирования одного их них, щелкните и перета­ имя пользователя, пароль (дважды) и адрес электронной
щите его в правую панель. Внеся изменения, нажмите Save Playlist почты, затем нажмите на Create User. Перед выходом из этого
снова и введите название нового плей­листа. раздела нажмите на кнопку Require Log In [Требовать регистра­
Вернитесь к серверу и нажмите на ссылку Playlist [Плей­ ции]. Завершите процесс, вернувшись во вкладку General и вы­
лист]. Созданные вами плей­листы будут отображены в раз­ брав Disable Downloads [Запретить скачивание]. Ваша домашняя
деле Site Playlists [Плей­листы на сайте], а справа вы увидите радиостанция готова. Блестяще!

Воспроизведение
По умолчанию все плей­листы и файлы, вы­ есть и альтернативные возможности: напри­
бранные для проигрывания, открываются мер, передача на другие приложения, типа
во всплывающем Flash-плейере. Это работа­ iTunes или Windows Media Player, или исполь­
ло на всех машинах, которые мы настраива­ зование встроенного плейера.
ли, независимо от ОС, а также позволяет за­ Flash отображает плей­лист для выбора
пустить длинный плей­лист и затем закрыть треков для воспроизведения, набор инстру­
web­интерфейс Sockso, не теряя музыки. Од­ ментов навигации и обложку альбома, трек
нако если у вас возникают проблемы с Flash, из которого играет в данный момент.
Всплывающий плейер функционален без примитива�

Август 2009 Linux Format 47


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

Basket: Порядок
Basket не только хранит списки задач – это идеальный инструмент
исследователя.

В
прошлом месяце мы создали базовую систему Basket для
работы со списками задач и простыми заметками. Теперь
рассмотрим другие способы применения этого мощного
приложения для организации, управления и совместного использо­
вания информации. А именно, применим его как утилиту для иссле­
дования, полезную при написании романа, приготовлении доклада,
создании презентации или планировании дел по дому. Мы также
рассмотрим создание, редактирование и организацию заметок, им­
порт информации из различных источников, совместное использо­
вание сведений с друзьями и коллегами и применение Basket Note
Pads для представления вашего исследования другим.

Подготовим приложение
Сначала создайте новую корзину: это делается щелчком пра­ умение Basket работать с web­контентом и другими приложе­
вой кнопки мыши на списке Корзин [Baskets] или нажатием ниями делает его полезным инструментом для исследований�
Ctrl+N.
+N.
N.. Модифицируйте ее с помощью различных опций (мы ос­
тановились на корзине свободной формы), укажите имя и нажми­ ную корзину При этом вам будет задан вопрос, хотите ли вы ско­
Скорая те ОК. Пространство справа станет активной корзиной, настраива­ пировать или переместить изображение. Перемещение удалит
помощь
емой щелчком на названии правой кнопкой и выбором Properties изображение из исходного местоположения, и вы скорее все­
[Свойства]. Мы можем дать корзине имя, щелкнув правой кноп­ го предпочтете копирование. Изображение, попавшее в корзи­
Сохраните ваш
файл Basket в пап­ кой в любом месте и выбрав пункт Text [Текст]. Появится поле, где ну, можно перемещать, как и другие элементы. Мы дали картин­
ке Dropbox (www. можно набрать текст и отредактировать его, используя инстру­ ке имя, а затем сгруппировали два элемента вместе – это делается
getdropbox.com), менты вверху окна. либо нажатием сначала на первом, а затем – с клавишей Shift –
чтобы иметь до­
Также можно добавить списки (см. LFX120 для более под­ на втором, плюс щелчок по иконке скрепки в панели инструмен­
ступ к нему с лю­
бого компьютера. робной информации), сгруппировать их вместе для облегче­ тов, либо перетаскиванием одного из элементов так, чтобы он
ния управлением корзиной и создать дополнительные тексто­ прикрепился к другому (вы увидите появляющуюся толстую чер­
вые элементы. Собрав в окне несколько объектов, неплохо будет ную линию под исходным объектом). С помощью второго мето­
попрактиковаться в их перемещении: то, что передвигается, зави­ да также возможно, например, убрать изображение под его заго­
сит от того, где вы взялись перемещать элемент. Например, если ловок, нажав на иконку со знаком минус. Таким образом можно
вы сгруппировали несколько элементов вместе, можно удалить создать сложные блоки упорядоченной информации и затем од­
объект из группы, наведя курсор мыши рядом с его именем (го­ ним щелчком скрыть их за названиями.
лубое выделение покроет только этот элемент) и перетащив его.
Таким же способом можно менять порядок элементов в стеке. Визуально
Передвиньте мышь немного влево, и выделение должно покрыть При желании исправить изображение, сделайте на нем двойной
всю группу, которую также можно переместить. щелчок, и оно откроется в соответствующем редакторе. После за­
Следующая вещь, которую мы хотим добавить – изображение; вершения, ваши изменения автоматически сохранятся в версии
это можно сделать, перетащив его файл из любой папки в актив­ Baskets, благодаря чему не нужно импортировать изображение
дважды.
успешное созда­ Можно также создать на ваше изображение ассоциативные
ние структур в OOo ссылки (или куски текста): сначала выберите его (выделите, по­
зависит от стилей водив около него курсором, пока не появится граница, и нажми­
абзацев и Навига­
те на нем), затем перейдите в Insert > Link [Вставить > Ссылка]
тора�
и введите необходимую информацию. Ссылка дополнит исходный
текст или изображение, а при нажатии на иконку минуса оно, как
и раньше, свернется. В нашей исследовательской корзине, мы со­
здали раздел под названием «Web­ссылки» для размещения кол­
лекции ссылок, связанных с проектом.
Однако тщательное исследование основывается на сборе ин­
формации из различных источников, поэтому просмотрите поша­
говое руководство для более детальной информации об интегра­
ции Baskets с другими Linux приложениями и Firefox.

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


48 Linux Format Август 2009
Первые шаги Учебник

в исследованиях
Шаг за шагом: Создание исследования

1 Перенос ссылки 2 Взять текст в Интернете 3 Сделайте снимок экрана


Для архивирования полезных ссылок, найденных Найдя интересный кусок текста в Интернете, вы­ Проблема ссылок заключается в том, что они
в Интернете, перейдите по адресу, который вы хо­ делите его и перетащите из вашего web­браузера со временем устаревают, или текст может изме­
тите сохранить, выберите маленькую иконку [fav­
fav­ (или приложения) в свою корзину, где он появится ниться. Решить ее можно, сделав снимок экра­
icon] в адресной строке и перетащите ее в свою как новый элемент. Учтите, такой текст не сохра­ на. Щелкните правой кнопкой в любом месте кор­
корзину. Ссылка будет отформатирована с назва­ няет информацию об источнике, и, возможно, по­ зины и выберите Grab Screen Zone [Захватить
нием страницы, и ее можно перемещать, как и дру­ лезно будет добавить ссылку на последний. Этот участок экрана]. Basket свернется, а курсор пре­
гие элементы Basket Note Pads. текст можно редактировать обычным способом. вратится в крестик. Выберите кусок, который хо­
тите сохранить, и он будет вставлен в корзину.

4 Экспорт HTML­страницы 5 Создание палитры цветов 6 Создайте кнопку запуска


HTML – отличный способ сделать резервную ко­ Если вы используете это приложение для управ­ Наконец, с исследованием можно связать при­
пию корзины или разрешить к ней совместный ления дизайном проекта, можно создать палит­ ложения – например, CeltXP пригодится при ра­
доступ друзьям или коллегам, не владеющим ру цветов с экрана. Например, откройте логотип боте над сценарием. Для этого щелкните правой
Basket. Перейдите в File > Export > HTML Page [Файл на вашем рабочем столе в GIMP, выберите Insert > кнопкой и выберите Launch [Запуск]. Укажите ва­
> Экспорт > HTML­страница] и выберите местопо­ Colour From Screen [Вставка > Цвет с экрана] и ис­ ше приложение в списке или перейдите к нему, ис­
ложение файла. Создастся отдельный HTML­файл пользуйте пипетку для выбора цвета. В результате пользуя иконку (...). Теперь нажмите ОК – создаст­
и папка со связанными с ним элементами. Ссылки вы получите образчик оттенка вместе с его шест­ ся кнопка запуска вашего приложения.
в корзине остаются активными, делая Basket хоро­ надцатеричным кодом.
шим, хотя и простеньким, web­редактором.

Август 2009 Linux Format 49


GIMP Свободный графический редактор,
в который вы тоже можете вонзить зубы

GIMP: Создаем
Майкл Дж� Хэммел в этом месяце продолжает полет на хрупких крыльях
вдохновения. Запускайте GIMP и присоединяйтесь к его путешествию!

Берем из стока
Основное изображение
Девушка с развевающимися волосами:
bigstockphoto.com/photo/view/1921777
Декоративные рамы с орнаментом
Позолоченная рама для картины: istockphoto.com/stock­
photo­1710947­golden­picture­frame.php
Старинная позолоченная рама: istockphoto.com/stock­photo­
4930364­vintage­gold­frame.php
Пламя
Были использованы фотографии:
sxc.hu/browse.phtml?f=view&id=1093986
sxc.hu/browse.phtml?f=view&id=1099709
sxc.hu/browse.phtml?f=view&id=1104673
sxc.hu/browse.phtml?f=view&id=1143736

но воспроизвести в GIMP, но отсутствие ана лога инструмента


Transform осложняет процесс, хотя и не делает его невозможным.
Идеи обоих статей дополняют друг друга и зовут к экспери­
ментам. При желании в точности повторить слияние этих двух ра­
бот, обзаведитесь стоковыми изобра жениями – их можно полу­

П
осле почти тридцати лет создания ПО и работы с ним чить бесплатно или по скромной цене из фотобанков (см. врезку
мне иногда бывает трудно найти тему для проек та, ко­ вверху «Берем из стока»). Пакет Gimp Paint Shop, который мы ис­
торая бы меня за хватила. То же относится к моим гра­ пользова ли на уроках последние пару месяцев, здесь не обязате­
фическим произведениям; и, наткнувшись на нечто вдохновляю­ лен, но его присутствие предоставит вам больше удобства.
щее, я набрасываюсь на это, как какой­нибудь исполнительный Я создал изобра жение размером 2350 × 2033, но если на до со­
дирек тор на фонд финансовой помощи. Вдохновение – это ва лю­ кратить требования к памяти и ресурсам процессора – преж де чем
Наш та, и тратить ее на до быстро, не то курс упа дет. приступать, уменьшите масштаб стоковых изобра жений вдвое.
эксперт Поэтому прошу у моих дорогих читателей прощения: мой энту­
Майкл зиазм разгорелся под влиянием еще одного проек та профессио­
Дж. Хэммел нального уровня. Как и в прошлом месяце, этот учебник скорее
Участник разра­
нацелит подающих на деж ды в GIMP на поиск и комбинирование
ботки GIMP и ав­
тор трех книг по идей, чем откроет секреты реа лизации какой­то конкретной за да­
данной тематике, чи, хотя сам процесс я тоже освещу.
включая самую но­
вую – «Эффек ты
в GIMP: руко­
Возродим отгоревшее творчество
водство для Эта работа, которую я назвал «Богиня Огня», основана
художников». на двух интернет­руководствах, которые я объединил в одно.
Первая вдохновившая меня статья, Mystic (http://psdtuts.
com/designingtutorials/the­making­of­mystic), описывает создание
в Photoshop того, что я могу приблизительно описать как боже­
ство древних майя. Процесс полностью воспроизводится в GIMP,
но я не сумел найти под ходящие фрагменты с орнаментом.
Второй источник моего вдохновения – другое руководство
для Photoshop, где создается изобра жение женщины, объятой
пламенем: http://psd.tutsplus.com/tutorials/tutorials­effects/how­
to­create­a­flaming­photo­manipulation. Эту работу так же мож­ Результат ваших тяжких усилий — вот эта огненная красотка�

Месяц назад GIMP в союзе с графическим планшетом разрушил город.


50 Linux Format Август 2009
GIMP Учебник

богиню огня
Шаг за шагом: Гори весь мир огнем!
1 Простые действия
Сравним изобра жение­оригинал и законченную работу. скопируем и вставим языки пламени (без черного фона)
Отличий у них хватает, но главных перемен две: во­пер­ из исходных изобра жений.
вых, я уда лил волосы девушки, а во­вторых, окрасил изо­ В итоге процесс создания Богини Огня разбивается
бра жение в цвета огня. на несколько основных этапов:
Богиня лишена волос, потому что сперва я планиро­ 1 Отделение девушки от фона.

вал как можно ближе следовать руководству по созданию 2 Определение границ головы и создание несколь­

пылающей девушки и, соответственно, выбрал базовое ких соответствующих слоев для полу чения точного
изобра жение с волосами, которые в GIMP легко было бы выделения.
превратить в пламя. Но поскольку в этом процессе при­ 3 Добав ление украшений.

менялась функция Photoshop, которую довольно трудно 4 Уда ление более тонких лишних дета лей.

воспроизвести в GIMP (а именно, Warp Transform), 5 Окраска изобра жения огнем.

то я изменил проект, и волосы ста ли не нужны. 6 Создание огненной короны.

По мере продвижения вы заметите, что пламя 7 Добав ление фоновой эмблемы.

не только является компонентом изобра жения, но так же Имейте в виду, что да же при буквальном следовании
используется для окраски. Простой способ окрасить слой уроку точно такое же изобра жение, как у меня, у вас
огнем – это убрать насыщенность слоя, под лежащего не полу чится. Перечисленные шаги дают массу вариаций,
окраске, расположить над ним слой с огнем и выставить особенно при создании огненной короны. И не огорчай­
для него под ходящий режим. Но если вы расположите тесь, если первые попытки будут да леки от идеа ла. Я сде­
что­либо под этим слоем, черная область вокруг огня лал семь различных вариантов, преж де чем набить руку
сделает изобра жение невидимым. Чтобы этого избе­ в этом процессе, и первые четыре или пять, честно говоря,
жать, применим для слоев с огнем маски или же просто я бы не показал никому.

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

3 Обстригаем волосы
В исходном слое (который по умолчанию называется бра жений, и я очень советую не пренебрегать им. В данном
«Фон»), я с помощью Ctrl+A выделил весь слой целиком, случае я добавляю к изобра жению белую маску слоя. Начав
а затем перетащил черный цвет фона на холст, чтобы с большой кисти и по мере продвижения работы переклю­
полностью заполнить слой черным. чаясь на меньшие размеры, я крашу черным поверх волос
Пора избавить девушку от волос. Как и в большинстве девушки до тех пор, пока большая часть волос не будет
операций, включающих манипуляции с частями изобра­ уда лена. Я оставляю часть волос незакрашенными, потому
жения, я на самом деле не хочу уда лять волосы из самого что собираюсь потом использовать фильтры определения
слоя – лучше сохранить их, прикрыв маской, потому, что краев и знаю, что после их применения линии в волосах
позже, возможно, мне за хочется опять включить эту часть дадут еще одну визуальную черту. После этого я отключаю
(в нашем случае, волосы) в изобра жение. Эта гибкость – видимость слоя с девушкой, чтобы он не отвлекал меня
большое преимущество цифрового редак тирования изо­ на следующих этапах работы.

Август 2009 Linux Format 51


Учебник GIMP

4 Определяем границы 5 Введем украшения


Следующий шаг проек та – создание просмотра: Прюитт обеспечил самые Теперь принарядим нашу богиню. поверх стопки слоев. Назовем его
детального контура девушки с помо­ подробные дета ли. Примените фильтр Лучше всего поискать необходимые «На лобное украшение» и убедимся,
щью двух фильтров выделения краев: к слою, затем установите режим слоя орнаменты среди архитек турных укра­ что режим слоя установлен на «Нор­
Край (Фильтры > Выделение края > на «Экран». шений или рам для картин. В данном мальный».
Край) и Неон (Фильтры > Выделение Дублируем слой с девушкой снова; проек те используются только рамы: Сделав это, масштабируем и повер­
края > Неон). Они выдают прак тиче­ на этот раз назовем копию «Неон». хороших фото вик торианской архитек­ нем слой с на лобным украшением над
ски ана логичные результаты, и позже Передвинем ее на вершину стопки туры мне найти не уда лось. лицом девушки. Используем маску
я использую их в сочетании с режи­ слоев и инвертируем (Цвет > Инвер­ Я добавлю украшения на лоб слоя, чтобы уда лить правый и левый
мами слоев. тировать), а затем применим фильтр и на место соединения головы и шеи, края рамы, а так же нижнюю часть.
Для нача ла я дублирую слой выделения края «Неон». Выставим а из еще одного орнамента полу чится Скопируем слой и выставим режим
с девушкой и называю копию «Края». режим слоя «Экран» и, наконец, ско­ ожерелье. Первые два элемента взяты слоя­оригина ла на Осветление. Освет­
Затем открываю фильтры выделения пируем этот слой, что в итоге даст из прямоугольной рамы, а третий – ление копии слоя над обесцвеченным
края и выбираю алгоритм По Прю­ нам три слоя, предназначенные из овальной. слоем в нормальном режиме увеличи­
ит ту. Я делаю это на основании пред­ для выделения края и расположен­ Начнем с прямоугольной рамы; вает контраст (что придаст украшению
ные над слоем девушки. Увеличи­ обесцветим ее. Рама целиком распола­ заметно больше блеска).
ваем масштаб и видим пряди волос, гается на однотонном фоне, и содер­
которые не уда лось замаскиро­ жит внутри однотонную область,
вать. Их можно оставить – или убрать поэтому выделить ее проще всего
с помощью ластика. Во втором слу чае будет инструментом Выделение свя­
ластик, возможно, придется исполь­ занной области, с порогом 50. Один
зовать на одном и том же участке щелчок снару жи рамы и один – внутри
ка ж дого из трех слоев с выделенным да дут нам выделение фона. Увеличьте
краем. Их трудно разглядеть на печати, выделение на 1 пиксель (я почти все­
поэтому я их тут не показываю. В своей гда так делаю, чтобы не оставлять
работе, тем не менее, я стер лишние более светлых точек вдоль границы
пряди волос – я скрупулезен в работе выделенного объек та) и инвертируйте
с дета лями. выделение. Скопируйте и вставьте
раму в рабочий холст как новый слой

6 Наряжаем богиню дальше


Нашейное украшение полу чается были гораздо меньше, чем главное 7 удаление лишних деталей
таким же способом, только с новой окно изобра жения и девушки. Их нужно Украшения закрывают не столь Wacom. Стоит заметить, что пока у меня
копией рамы. Она нужна потому, что увеличить. Увеличение масштаба чре­ обширную область волос девушки, не было ну ж ды прибегать к планшету,
угол поворота, размер и положение вато проблемой: при этом изобра жение как я ожидал, и чтобы избавить нашу но на данном этапе он оказался очень
будут отличаться от версии для лба, скоро пойдет квадратами. Но в нашем богиню от этих неприглядных дефек­ кстати. Если у вас нет графического
не говоря уже о том, что и маска будет случае этот эффект почти не заметен, тов, обратимся к инструментам Ластик планшета, просто используйте кисть
другая. В этом слое мы сохраним благодаря сливающимся контурам и Па лец. меньшего размера и изменяйте про­
нижнюю часть рамы, а остальные – частей украшения. С помощью режи­ Можно применить Па лец со слоями, цент непрозрачности вручную.
замаскируем. мов растворения слоев так же можно определяющими край (белый и черный Теперь применим ластик по оче­
Точно так же получим ожере­ частично скрыть эффект пикселиза­ цвета вместе дают от тенки серого), реди к ка ж дому из слоев, определяю­
лье из элементов овальной рамы. ции, а наш метод окраски спрячет его но я скорее бы оставил некоторые щих край. Я слегка поправляю один
На сей раз, преж де чем повернуть еще лучше. Однако на больших отпе­ линии на лице. Для этого используем слой, затем перехожу к следующему,
раму и изменить ее размер и поло­ чатках эффект разложения на пиксели Ластик с кистью Grunge и выстав­ а затем снова повторяю процедуру
жение, отразим ее зеркально по вер­ скорее всего будет виден. Поэтому, если ляем динамику кисти на увеличение с ка ж дым слоем. Цель – оставить как
тика ли. Наконец, сделаем маску, оста­ вы собра лись печатать копии изобра­ непрозрачности, жесткости и размера можно больше дета лей, уда ляя замет­
вив видимой только нижнюю часть жения, не делайте их больше страницы при на давливании на мой планшет ные линии прядей волос.
рамы. Заметьте, что изобра жения рам журна ла. (Удобная мерка, правда?)

52 Linux Format Август 2009


GIMP Учебник

8 Смажем остатки волос 9 Красим в цвет пламени


Переход к уда лению волос озна­ протаскивая к более темным областям Раскрашивание – следующий шаг. на направленный свет (Hard Light).
чает, что слой «Девушка» снова на до (волосы). Подобным образом обраба­ Снача ла окрасим девушку, про­ В результате кадрирования слой
делать видимым. Отключим види­ тываем шею и одеж ду. сто применяя функцию Тонировать может не полностью покрыть ширину
мость всех трех слоев, определяю­ При включенной опции Запе­ со значениями тона, насыщенности изобра жения, и будет видна белая
щих край, и включим видимость слоя реть нечего беспокоиться, что и освещенности, установленными полоса. Тогда выберите Выделение
с девушкой. Отметим га лочкой опцию мы «заедем» за границу контура на 30, 90 и ­30 соответственно. Да лее связанной области и щелкните по поло­
Запереть для слоя с девушкой и при­ девушки. Хотя в данной работе я того скопируем изобра жение пылающего се, увеличьте на 1 пиксель и за лейте
меним Па лец с любой под ходящей и добивался, вы можете дать волю пламени (огонь и черный фон) и доба­ выделение черным цветом.
кистью, чтобы убрать остатки волос творчеству, отключив опцию Запереть вим как новый слой поверх стопки Сейчас языки пламени скрывают
из слоя. Постарайтесь выдержать для слоя и работая по всей поверхно­ слоев. Он масштабирован так, чтобы лицо девушки, и у нас есть две воз­
мягкое освещение по всей поверхно­ сти. Не забудьте только позже окрасить пламя полностью заслонило девушку, можности: оставить их или применить
сти щеки, щелкая снача ла по более эти области огнем. Закончив, снова а затем обрезан по размеру изобра­ к слою с языками пламени Па лец,
светлым поверхностям (щека), а затем сделаем слои контуров видимыми. жения (Слой > Слой к размеру изо­ чтобы лицо и орнамент проглядыва ло
бра жения). Установим режим слоя сквозь них. Я выбрал второй вариант.

10 Создаем огненную корону


Вот мы и добра лись до по­настоящему к размеру изобра жения). Теперь основа
интересной, творческой части. Процесс для короны пристроена, и вокруг есть
создания огненной короны необычайно место для создания вихрей пламени.
прост, но чтобы полу чить правиль­ Для создания вихрей пламени при­
ный результат, скорее всего, пона до­ бегнем к фильтру интерак тивного иска­
бится не одна попытка. Начать лучше жения (iWarp). Здесь начинаются слож­
с изобра жения, подобного показан­ ности. Вихри на левой стороне короны
ному внизу – просто огонь, а не пылаю­ сделаем при помощи режима Swirl CW
щее пламя. Скопируем один огонь [вихрь по часовой стрелке], а на пра­
(без фона) в рабочее окно и назовем вой – при помощи режима Swirl CCW 11 Рисуем фоновую эмблему
новый слой «Огненная корона». Мас­ [против]. Для данного конкретного пла­
Последний шаг крайне прост. Чтобы племени майя, я выбрал кисть Mandala
штабируем его так, чтобы он ук ла ды­ мени я выбрал два боковых всполоха –
привнести в работу немного колорита [Нимб] из набора Gimp Paint Shop и уве­
вался вдоль лба девушки, и растянем из них выйдут отличные вихри. Щелч­
личивал ее размер до тех пор, пока
до верхней границы изобра жения. ками (но не протаскиванием) по разным
нимб не закрыл примерно три четверти
Скопируем слой, зеркально отразим точкам в окне предварительного про­
окна изобра жения. Тогда я добавил
его по горизонта ли и поместим рядом смотра я смог сделать два почти оди­
прозрачный слой над фоном, сделал
с исходным изобра жением. При необ­ наковых завихрения. Щелчки и удер­
цвет переднего плана белым и один
ходимости используйте маску, чтобы живания тоже под ходят, но удерживать
раз щелкнул по этому новому слою.
собрать языки пламени вместе. Затем мышь нужно недолго, иначе завиток
Над нимбом в новом слое я опять
объединим оба слоя, выделив верхний будет чересчур велик.
поместил изобра жение пылающего
слой и выбрав в меню Слой > Объе­ Стоит так же перепробовать разные
пламени. Изменив размер так, чтобы
динить с предыдущим. Передвинем настройки Ра диуса и Степени деформа­
он покрыл большую часть отпечатка,
объединенный слой к середине окна ции и точки выполнения щелчков в окне
я выставил режим слоя на Умноже­
изобра жения и приведем его размер предпросмотра. Если предпросмотр вас
ние. Вот и все.
к размеру изобра жения (Слой > Слой разочаровал, на жмите на кнопку Reset
[Сбросить] и попробуйте снова. Потре­
буется терпение, но в итоге вы получите
приемлемый результат. Заключение
Применив настройки иска же­ Ранее я упоминал о том, что поду­
ния к слою пламени, расположим мывал уда лить девушку из изобра­
и повернем нужным образом корону жения. Это не дава ло особого визу­
над головой девушки. Выставим ального эффек та, пока я не добавил
режим слоя на «Экран» и добавим над слой с нимбом и не окрасил его пла­
ним еще одну копию пылающего пла­ менем. Теперь после уда ления слоя
мени, изменив размеры так, чтобы оно с девушкой, нимб стал виден насквозь
целиком уместилось внутри короны. и смотрится очень хорошо. Почему бы
Установим режим слоя для пылающего не взять это за основу для дальнейших
пламени в «Экран» и с помощью маски экспериментов? Скоро у вас полу чится
слоя мягко добавим его к короне. дивная вариация на эту тему.

Через месяц За жжем кристаллы дилития и имитируем быстрое движение.


Август 2009 Linux Format 53
OpenDocument Раскрываем
потенциал OpenOffice.org

OOo: Работаем
Марко Фиоретти автоматически создает уйму счетов и тестовых заданий
с вариантами ответов в формате OpenDocument, избегая рутинной работы.

что тест содержит всего один вопрос и представляет собой доку­


мент, содержащий название теста, его описание, вопрос и три ва­
рианта ответа, ка ж дый со своей картинкой и подписью. Его файл
(да дим ему имя sample_multiple_choice�odt) будет нашим исход­
ным шаблоном. Чтобы использовать файл для генерации нашего
теста в формате OpenDocument, снача ла на до записать все стро­
ки, которое войдут в тест, в файле формата ASCII (назовем его
my_test_data_1) следующим образом:
marco => cat my_test_data_1
TEST_NAME=’Тест на совмес тимость с GNU/Linux’
DESCRIPTION=‘Это весьма научный тест, выяв ляющий скры тые
от тенки вашего отношения к свободному ПО'
QUESTION_NAME='Какой дист рибу тив GNU/Linux вы предпо­
чи таете?’
FIRST_CAPTION='Это Ubuntu?'
SECOND_CAPTION='...или Mandriva?'
THIRD_CAPTION=”А может, вы поклонник Fedor’ы?”
Формат данного файла достаточно прост, но есть пара момен­
тов, которые следует отметить: во­первых, это вполне корректный
синтаксис команд оболочки. Ка ж дая строка этого файла присваи­
вает значение некоторой переменной среды, которая будет ис­
пользоваться в основном скрипте. Во­вторых, хотя общих правил
нет, будьте аккуратны в использовании кавычек. Например, в по­

М
ы часто применяем компьютер для создания несколь­ следней строке нужно использовать двойные кавычки, поскольку
Наш ких разных версий одного и того же документа, в тексте вопроса уже встречается одинарная [или ее необходимо
эксперт но ручные обновления ваших файлов имеют смысл, экранировать, заменив на \', – прим. ред.].
Марко Фиоретти только если они редки. Ведь имеется множество способов
автор книги The сэкономить драгоценные секунды – как мы показа ли в LXF119
Family Guide to при рассмотрении автоматического обновления элек тронных
Digital Freedom,
а к тому же ак ти­
таблиц. А на данном уроке мы займемся более объемной за да­
вист свободного чей: перенесем набор «сырых» данных в какой­либо полезный
ПО и программист. документ с минимумом усилий. Вдобавок мы избежим открытия
OpenOffice.org (ну, почти), благодаря свойствам его стандартного
формата файлов: OpenDocument, или ODF.
Документ ODF – просто zip­архив, с картинками и макроса­
ми в собственных ката логах, а сам текст – записанный в форма­
те XML – на ходится в файле с именем content�xml. Для создания
новой версии документа следует открыть архив, изменить текст
в content�xml, поместить несколько новых картинок в их ката лог
и запаковать вновь. Здесь мы пока жем, как выполнить это с по­
мощью текстовых документов ODF и действительно простых сце­
нариев оболочки. Благодаря ODF
можно создавать
Тесты с выбором ответа в ODF документы
и без OpenOffice.org,
Давайте начнем с прак тической за дачи: создания форматиро­ но OOo все же нужен
ванного теста с выбором из нескольких вариантов ответа и слу­ для написания
чайно генерируемыми вопросами. Ра ди простоты предположим, исходного шаблона�

Месяц назад Мы научились генерировать автоматические слайд-шоу.


54 Linux Format Август 2009
Обработка документов Учебник

автоматом Исходный текст


примера

marco => cat my_holyday_data_1


TEST_NAME=’Тест на предпоч тения в отды хе’
DESCRIPTION=’Выясняет, как вам лучше провес ти отпуск’
QUESTION_NAME=’Какое из пред ложенных мест вы бы посети­
ли в первую очередь?’
FIRST_CAPTION=’Дикие горы?’
SECOND_CAPTION=’Солнечные тропические пля жи?’
THIRD_CAPTION=”Или ис торические мес та?”
Закончите процесс запуском:
marco => test_generator.sh sample_multiple_choice.odt my_
holyday_data_1 Holiday_Pictures/*
Разве не кру то? Теперь, чтобы сгенерировать 1000 подобных
файлов, оста лось только запустить приведенный ниже скрипт
в цик ле.
В файлах OpenDocument секретов нет: когда вы их распакуете, Лис тинг 1: test_generator.sh
текст, метаданные и картинки будут сразу видны� 1 WORK_DIR=odt_test_generator_temp_dir
2
3 rm ­rf $WORK_DIR
Подготовка картинок 4 mkdir $WORK_DIR
Кроме строк, необходимо так же припасти три картинки – в том 5 FILENAME=`basename $1 .odt`
порядке, в каком они появятся в документе. В нашем приме­ 6
ре они на ходятся в ката логе Linux_Test_Pictures, и мы назва ли 7 cp $1 $WORK_DIR/my_template.odt
их 01_ubuntu_logo�png, 02_mandriva_logo�png и 03_fedora_logo�png 8 cp $2 $WORK_DIR/my_data.sh
соответственно. Нумерация необходима для гарантии их ис­ 9 shift # уда ляем $1 из списка аргу мен тов
пользования в правильном порядке. Пристроив все по местам, 10 shift # уда ляем $2 из списка аргу мен тов
выполните следующую команду: 11
marco => test_generator.sh sample_multiple_choice.odt my_test_ 12 ## копируем все картинки в рабочий ката лог
data_1 Linux_Test_Pictures/* 13 touch $WORK_DIR/new_pictures_list
для завершения вашего первого теста. 14 for VAR in “$@”
15 do
употребим скрипт иначе 16 CURRENT_FIG=`basename $VAR`
Лучшее в этом процессе то, что метод применим для всех слу­ 17 cp $VAR $WORK_DIR/
чаев, пока струк тура документа неизменна. В качестве доказа­ 18 echo “cp ../$CURRENT_FIG “ >> $WORK_DIR/new_pictures_list
тельства, разместим три соответствующие картинки (первая – 19 done
горы, вторая – пляж, третья – исторические места) в ката логе 20
Holiday_Pictures и добавим следующий ASCII­текст в файл с име­ 21 ## подготовка
нем my_holiday_data_1: 22 cd $WORK_DIR
23 mkdir work
24 mv my_template.odt work
25 cd work
26 source ../my_data.sh
27 unzip my_template.odt > /dev/null
28 rm my_template.odt
29
Вот результат 30 ## заменяем текстовые строки
перезапуска 31 sed “s|Test Name|$TEST_NAME|” content.xml \
нашего простого 32 | sed “s|Question|$QUESTION_NAME|” \
скрипта обработ­ 33 | sed “s|Test description and general
ки OpenDocument: conditions|$DESCRIPTION|” \
первоначальный
34 | sed “s|first caption|$FIRST_CAPTION|” \
шаблон заполнен
динамическими 35 | sed “s|second caption|$SECOND_CAPTION|” \
данными, и все это 36 | sed “s|third caption|$THIRD_CAPTION|” \
без OpenOffice.org� 37 > custom_content.xml

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


Август 2009 Linux Format 55
Учебник Обработка документов

38 mv custom_content.xml content.xml на ODT. В порядке второго примера давайте рассмотрим, как соз­
39 давать счета в формате ODF. О том, как это сделать, статей уже
40 ## полу чаем имена внедренных картинок и заменяем их полно, но во всех требуют запуска OOo и ручной правки. А мы хо­
41 tr “>” “\012” < content.xml | grep 'draw:image xlink:href' | cut тим, чтобы компьютер выполнял всю работу за нас. Процедура по­
'­d”' ­f2 > ../pictures_list хожа на уже обсу ж денную, только проще, потому что нет карти­
42 paste ../new_pictures_list ../pictures_list > ../copy_pictures нок. Для нача ла настройте шаблон, а затем создайте такой файл
43 source ../copy_pictures с данными:
44 marco => cat my_invoice_data_file
45 ## архивируем все, переименовываем в файл .odt и очи­ INVOICE_DATE='2009/03/20'
щаем VENDOR_CODE='007'
46 find . ­type f ­print0 | xargs ­0 zip ../$FILENAME > /dev/null PO_NUMBER='LXF 10541'
47 cd .. TOTAL=100
48 mv $FILENAME.zip ../new_$FILENAME.odt ISSUE=150
49 cd .. DESCRIPTION=’Не иначе как за лучший из учебников Linux
50 rm ­rf $WORK_DIR Format!’
Скрипт test_generator�sh принимает в качестве аргумента шаб­ для преобразования шаблона в счет.
лон в ODF, ASCII­файл, содержащий текстовые строки, и все изо­ Теперь запустите скрипт, приведенный ниже – он получен
бра жения, которые следует поместить в новый документ. Первые из сценария оболочки test_generator�sh, рассмотренного в пер­
10 строк определяют временный ката лог и копируют в него все вом примере:
необходимые файлы. Команды shift в строках 9 и 10 уда ляют шаб­ Лис тинг 2:
лон ODF и файл с данными из переменной, хранящей список ар­ 1 WORK_DIR=odt_invoice_generator_temp_dir
гументов, $@. Это необходимо для создания цик ла в строках с 14 2
по 19, обрабатывающих только графические файлы. Здесь соз­ 3 rm ­rf $WORK_DIR
дается локальная копия ка ж дой картинки, но более важная часть 4 mkdir $WORK_DIR
на ходится в строке 18: она генерирует файл new_pictures_list, 5 FILENAME=`basename $1 .odt`
имеющий вид наподобие 6
marco => cat new_pictures_list 7 cp $1 $WORK_DIR/my_template.odt
cp ../01_ubuntu_logo.png 8 cp $2 $WORK_DIR/my_data.sh
cp ../02_mandriva_logo.png 9
cp ../03_fedora_logo.png 10 ## Подготовка
Скоро вы узнаете, зачем нужно создавать такой файл, а по­ 11 cd $WORK_DIR
ка вернемся к коду. Строки с 22 по 28 перемещают нас в ката лог 12 mkdir work
work, загру жают набор переменных из файла данных (строка 26), 13 mv my_template.odt work
распаковывают шаблон, а затем, наконец­то, мы можем присту­ 14 cd work
пить к генерации нового ODF­файла. 15 source ../my_data.sh
Обратите внимание на раздел замены текстовых строк (стро­ 16 unzip my_template.odt > /dev/null
ки с 30 по 38), состоящий из нескольких команд sed, соединен­ 17 rm my_template.odt
ных конвейером. Ка ж дый вызов sed заменяет одну строку текста­ 18
местозаполнителя в файле content�xml содержимым одной 19 ## заменяем текстовые строки
из переменных, входящих в набор, определенный в файле 20 sed “s|__INVOICE_DATE|$INVOICE_DATE|” content.xml \
my_test_data_1. Если вы позднее за хотите приспособить данный 21 | sed “s|__VENDOR_CODE|$VENDOR_CODE|” \
скрипт для создания других документов, то это именно тот раздел 22 | sed “s|__PO_NUMBER|$PO_NUMBER|” \
кода и файл с данными, которые следует изменять.
После создания нового файла content�xml исходные картинки
заменяются на те, которые мы хотим поместить в шаблон. Это де­
лается за два шага. Строка 41 использует команды tr и grep для из­
влечения и записи имен всех картинок в файл pictures_list. Имена
содержатся в XML­атрибу те xlink внутри content�xml, и в результа­
те должно получиться нечто вроде
marco => cat pictures_list
Pictures/100000000000008F0000008A1DC84E9A.png
Pictures/10000000000000910000008EDC1B9151.png
Pictures/10000000000000810000008C06E4E423.png
После этого остается лишь склеить new_pictures_list и picture_
list вместе, строка за строкой (строки с 42 по 43), чтобы получить
командный файл, формируемый в строке 43:
marco => cat copy_pictures
cp ../01_ubuntu_logo.png Pictures/100000000000008F0000008A
1DC84E9A.png
cp ../02_mandriva_logo.png Pictures/1000000000000091000000
8EDC1B9151.png
cp ../03_fedora_logo.png Pictures/10000000000000810000008C
06E4E423.png
Теперь все части готовы. В остатке скрипта все просто запа­ Задачи разные, решение одно: простой шаблон — все, что нужно
ковывается, а расширение результирующего файла меняется для генерации счетов компьютером�

56 Linux Format Август 2009


Обработка документов Учебник

нативный макрос генерации PDF имеется на сайте http://linux.


derkeiler.com/Mailing­Lists/Fedora/2008­06/msg00561.html.
Чтобы распечатать PDF­файл из скрипта, его можно просто
«скормить» команде lPr. Использование OpenOffice.org в команд­
ной строке описано в http://tinyurl.com/rybr9d, но я, так и быть, по­
кажу вам корректный синтаксис:
soffice ­invisible macro://путь­к­мак росу($FILE)
Опция ­invisible заставляет OpenOffice.org запускаться без гра­
фического интерфейса. Обрабатываемый файл должен переда­
ваться как аргумент ($FILE) макроса.

Что мы узнали?
На данном уроке мы изучили метод автоматизации повторяю­
щихся за дач с документами, имеющий несколько важных пре­
имуществ. Преж де всего, он работает без запуска OpenOffice.org
(за исключением печати), то есть его можно выполнять на серве­
ре. Метод так же не опирается ни на какие реляционные базы дан­
ных; а кроме этого, весьма прост! Во многих случаях, когда XML­
инструменты (вроде описанных во врезке Ресурсы внизу) слишком
сложны для изучения и установки, использование приведенных
Результат ваших трудов: счет, готовый к печати или отсылке здесь уловок поможет хотя бы избежать потери времени на повто­
электронной почтой� ряющееся редак тирование. По су ти, кто угодно, имея начальный
уровень знаний о сценариях оболочки, может генерировать, изме­
23 | sed “s|__TOTAL|$TOTAL|g” \ нять и ана лизировать сотни текстовых ODF­документов, покоди­
24 | sed “s|__ISSUE_NUMBER|$ISSUE|” \ ровав пару минут.
25 | sed “s|__DESCRIPTION|$DESCRIPTION|” \ Но приведенный процесс привлекателен не только благодаря
26 > custom_content.xml легкости использования. Во­первых, основы данного процесса по
27 mv custom_content.xml content.xml идее достаточно хорошо вам знакомы. Мы считаем, что большин­
28 ство пользователей Linux комфортнее чувствуют себя со скрип­
29 ## запаковываем все, меняем у полу ченного фай ла расши­ тами Bash, чем в StarBasic – языке написания макросов OOo. Что
рение на .odt и очищаем приводит нас к основной причине, по которой мы избегаем макро­
30 find . ­type f ­print0 | xargs ­0 zip ../$FILENAME > /dev/null сов OOo: реа лизация логики решения вне OpenOffice.org придает
31 cd .. намного большую силу, гибкость и потенциал интеграции с други­
32 mv $FILENAME.zip ../new_$FILENAME.odt ми инструментами, от за даний Cron до массовых рассылок и об­
33 cd .. работки графики. Например, можно запросто добавить в первый
34 rm ­rf $WORK_DIR скрипт инструменты ImageMagick (LXF116–117) и масштабиро­
Многое из этого должно быть вам знакомо по описанию вать и кадрировать изобра жения, преж де чем помещать их в ODF­
Листинга 1, но приглядимся к строкам с 19 по 25. Как уже упоми­ документ!
на лось, при изменении шаблона на до добавить команду sed для Понятно, два представленных скрипта не идеальны. Они
ка ж дой заменяемой строки. Если одна и та же строка встречает­ не особо гибкие или расширяемые, и в данном виде не совсем
ся несколько раз, как это имеет место для нашей итоговой суммы, на дежны. Преж де всего, здесь нет обработки ошибок: если один
не забудьте добавить к sed опцию g (глобальный), в противном из файлов отсутствует, или генератору тестов выдано боль­
случае будет заменено только первое вхож дение данной строки ше картинок, чем имеется в исходном шаблоне, то все пойдет
(см. строку 23). наперекосяк, без всякого сообщения о случившемся.
Вы, конечно, можете улучшить их, но цель данной серии
А что с версиями MS Office? не в разработке промышленных решений. Преж де всего, наш урок
В идеальном мире все перейдут на OpenDocument и безбумажные доказывает, что OpenDocument не имеет скрытых глубин: ODF­
офисы, и в этом раю не на до будет вникать в форматы файлов, ис­ файл – обычный zip­архив, содержащий простой текст и изобра­
пользуемых другими людьми, или в лицензии, разрешающие от­ жения, совместимые с любыми программами. Храните свои дан­
крытие таких документов. Но пока эти деньки не наступили (эх…), ные в формате ODF, и их будет легко восстановить, да же если
не обойтись без распечатки файлов или их конвертирования для завтра OpenOffice.org исчезнет с лица земли. Во­вторых, что бо­
бедолаг, прикованных к приложениям, которые понимают только лее важно, мы показа ли вам: ODF можно быстро и легко подстро­
форматы Microsoft Office. ить под ваши ну ж ды, и с ним можно экспериментировать.
К счастью, и конвертировать, и печатать можно авто­
матически. Однако, в отличие от генерации ODF­файлов,
на этом шаге необходим OpenOffice.org. Требуется добавить Ресурсы
к вашему скрипту строку, которая будет запускать OpenOffice.
org без графического интерфейса, затем выполнять макрос OOo Если вы намерены серьезно изу чить обра­ Айзенберга [J David Eisenberg] OpenDocument
для конвертирования ODF­файла в форматы PDF (для печа­ ботку ODF, трюков данного учебника для ва­ Essentials: ее можно купить по адресу www.
ших нужд будет недостаточно. В этом слу чае lulu.com/content/207835 или прочесть онлайн
ти) или DOC. Для достижения этой цели имеется несколько мак­
обратитесь к XML­инструментам типа Odfpy на http://develop.opendocumentfellowship.com/
росов; два лучших – SaveAsPDF и SaveAsDoc, с сайта www.xml. (http://odfpy.forge.osor.eu) или к книге Дэвида book.
com/pub/a/2006/01/11/from­microsoftto­openoffice.html. Альтер­

Через месяц Мы рассмотрим обработку данных в ODF-файлах.


Август 2009 Linux Format 57
OpenOffice.org Используем открытый офисный
пакет для верстки математических текстов

OOo: Вам Math,


Настоящие ученые используют LaTeX, но если вы не в восторге от его синтакси­
са, то будете рады узнать, что в OpenOffice.org можно делать почти то же самое.
Дмитрий Смирнов расскажет, как именно.

Н
а этом уроке мы займемся, пожа луй, самым ма лоосве­ терфейсе разработчики придумывать не ста ли. Все те же меню
щенным в широкой прессе компонентом OpenOffice. и панели инструментов. Разница лишь в рабочей области, кото­
org – программой для набора математических формул рая состоит из поля отобра жения формул (вверху) и поля ввода
OpenOffice.org Math. Она не является насущной необходимос­ команд (внизу). В поле ввода команд осуществляется ввод вы­
тью для всех и каждого; ее пользователи – люди, имеющие де­ ра жений на языке разметки Math, а в поле отобра жения формул
Наш ло с документами, где применяются математические формулы появляется математическое выра жение, соответствующее вве­
эксперт и выра жения: студенты, профессора, технические специа листы, денным командам. При желании, их можно так же называть про­
Дмитрий инженеры. граммистским термином «код».
Смирнов OOo Math (или просто Math) может работать как отдельное В процессе освоения редак тора формул можно запускать Math
Член русскоязыч­
приложение, но на прак тике его используют для вставки формул как отдельное приложение, однако набирать в нем текстовые до­
ного сообщества
OpenOffice.org, во внешние документы. В этой статье мы рассмотрим ввод фор­ кументы не рекомендуется. В большинстве случаев Math ис­
соавтор пере­ мул, а так же затронем вопросы их вставки в OOo Writer. пользуется для создания и редак тирования математических вы­
водного издания ра жений во внешний программах (преимущественно OOo Writer,
книги «Руковод­
ство пользова­
Мама, что это? с которым имеется тесная связь). Впрочем, используя Math авто­
теля OpenOffice. Именно такой реакции следует ожидать от человека, знакомого номно, вы сможете сохранять набираемые формулы, создавая
org 2», а так же с Microsoft Office и впервые решившего вставить формулу Math тем самым их личную библиотеку.
«OpenOffice.org pro в текстовый документ Writer. И действительно: вместо привыч­ Существуют два под хода ко вводу формул: с помощью шабло­
для профессиона­ ного ввода символов непосредственно в конкретное место доку­ нов команд (кода) и вручную. Как правило, первый используется
ла» и «OpenOffice.
мента создается какая­то рамочка, а внизу появляется еще какое­ при ознакомлении с Math, а так же при поиске команд, вид которых
org. Теория
и прак тика». то поле ввода. Пользователь инстинк тивно на жимает на кнопки неизвестен. После обучения пользователь чаще всего переходит
с шаблонами формул, но вместо привычного появления символов на ручной ввод команд, поскольку это позволяет работать, не от­
видит какие­то квадратики, да еще и в нижнем поле ввода печата­ влекаясь на панели инструментов и меню. Шаблоны команд мож­
ются какие­то непонятные буковки. И что с этим делать? но получить, щелкнув на нужную кнопку в панели инструментов
А ларчик открывается просто: Math использует командный Выбор или из контекстного меню поля ввода команд. Чтобы ото­
ввод формул, то есть пользователь набирает их с клавиатуры, как бразить или скрыть панель Выбор, найдите в главном меню Math
в языке программирования. Привычное щелканье мышью по па­ пункт Вид > Выбор; чтобы отобразить контекстное меню поля вво­
нели Выбор всего лишь вставляет шаблон желаемой формулы да команд, щелкните по полю правой кнопкой мыши.
в поле ввода. Так что пользователю MSO, привыкшему к Equation Таким образом, оба под хода образуют три способа ввода
и MathType, придется учиться заново, так же как и новичку. Поль­ формул:
зователям LaTeX будет проще. 1 с помощью панели инстру ментов Выбор (или, что то же самое,

Когда необходимость обучения «с нуля» становится ясна (а это окна Выбор);


происходит почти сразу после попытки набрать первую формулу),
в голову приходят мысли: «А зачем это надо?» и «Почему не сде­
ла ли как в Word?» Пользователя можно понять: на обучение надо
тратить силы и время. Однако в данном случае эти затраты могут
с лихвой окупиться в будущем. За счет чего? По сравнению с «обыч­
ным» методом, используемым в Equation, командный имеет одно
важное преимущество: по окончании обучения можно будет вво­
дить формулы, прак тически не используя мышь, с помощью одной
клавиатуры! Представьте себе, что вам больше не понадобится по­
стоянно отвлекаться на панель символов, дабы ввести греческую
букву или особенный знак. Так что, может быть, стоит потратить
немного времени сейчас, чтобы экономить его потом?
Уговорил? Ну тогда поеха ли!

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

58 Linux Format Август 2009


OOo Math Учебник

коллега!
2 с помощью контекстного меню поля ввода команд; Представим себе такую ситуацию: вы хотите набрать формулу
3 вручную. с помощью слов. Вы дик туете некоторый текст – а он превращает­
Рассмотрим использование всех трех способов на простых ся в формулу. Важное замечание: на до проговаривать этот текст
примерах. Допустим, на до ввести выра жение «a плюс b». После­ подробно. Например, если учитель математики говорит: «Запиши­
довательность действий: те функцию: эф от икс равно икс­квадрат плюс два икс плюс один»,
1 В верхней половине окна Выбор щелкаем на кнопке Унарные/би­ то вы, записывая ее к себе в тетрадь, мыслите примерно так: «Эф,
нарные операторы, а в нижней половине – на кнопке Сложение +. открывающая круглая скобка, икс, закрывающая круглая скоб­
В поле ввода команд появляется текст <?> + <?>. Заменяем пер­ ка, равно, икс, степень – два, плюс два икс плюс один». При этом
вый набор символов <?> на a, а второй – на b. вы пишете нужные символы один за другим, особо не за думыва­
2 Из контекстного меню поля ввода команд выбираем Унар­ ясь. Возможно, вы думаете иначе, например: «Эф, парные скобки,
ные/бинарные операторы – a + b. Как и в предыдущем случае, в по­ внутри икс...» Это – с лингвистической точки зрения. Панель Выбор:
ле ввода команд появляется текст <?> + <?>. Ана логично заменя­ Команды Math можно вводить похожим образом, как бы пе­ отсюда можно
ем первый <?> на a, а второй – на b. реводя их с русского языка на язык разметки Math. Если рассмот­ вводить шаблоны
3 Печатаем a+b в поле ввода команд.
команд�
реть указанный выше пример, то перевод можно осуществить
Заметим, что пробелы, окаймляющие с двух сторон знак +, по такой логике:
необязательны. эф – f
Вы ска жете, что про знак «плюс» можно было бы и дога дать­ открывающая круглая скобка – (
ся. А как поступить в случае, когда ответ не столь интуитивен – икс – x
например, «а умножить на b»? Ведь ни точки по центру строки, закрывающая круглая скобка – )
ни крестика на клавиатуре нет, звездочкой принято обозначать равно – =
свертку, а буква x – неадекватная замена крестику. В таком слу­ степень – ^
чае, мы ищем под ходящий внешний вид формулы в панели Вы­ плюс – +
бор. После на жатия на соответствующие кнопки, в поле ввода ко­ Соединив эти команды воедино, получим: f(x)=x^2+2 x+3 (спра­
манд появятся шаблоны <?> cdot <?> для точки и <?> times <?> ва – код, слева – результат):
для крестика. Как и в ранее описанном случае, <?> на до заменить 2
на нужные символы.
f  x=x 2 x3 f(x)=x^2+2 x+3

После ряда подобных действий вы станете все реже обращать­ Пробел перед x ну жен в силу особенностей языка разметки,
ся к окну Выбор – ведь это увеличивает время ввода формулы – но во многих случаях вы вольны расставлять пробелы по соб­
и будете чаще набирать формулы «от руки» в поле ввода команд. ственному желанию. Можно записать, например, так: f(x) = x^2 +
2 x + 3, f(x) = x^2+2 x+3 и так да лее.
Вербальная логика Поговорим теперь о перестановке слов в языке или о переста­
Когда человек сталкивается с чем­то новым, он часто ищет ана­ новке слов в мыслях. Когда вы записываете дробь, вы можете ду­
логии; случай с Math – не исключение. Так на что похож редак тор мать: «Числитель, горизонтальная черта, знаменатель» или «Го­
формул Math? Пользователь Linux ска жет – на командную стро­ ризонтальная черта, вверху – числитель, внизу – знаменатель».
ку, программист – на язык программирования, лингвист – на из­ В Math можно реа лизовать оба под хода. Рассмотрим простой
мененный английский язык с другим применением, наборщик – пример:
на комбинацию цифр и букв. И все они правы. Но важно то, что
1
у метода набора формул в Math есть логика. 2
Когда я изу чал программирование, то встречал фразы Первая логика: «Один, горизонтальная черта, два». Или «Еди­
вроде «сравните … с английским языком». Давайте посмот­ ница над двойкой».
рим, насколько Math может быть сравним с тем же английским? «Перевод» первой логики: один – 1, горизонтальная черта –
А поскольку английский язык является для нас иностранным, over, два – 2. Вместе: 1 over 2. Вводятся все символы этой стро­
то будем проводить ана логии и с русским языком. ки команды подряд.
Вторая логика: «Горизонтальная черта, сверху – 1, снизу – 2».
«Перевод»: 1 over 2. Да, в этом случае итоговая строка коман­
ды одна и та же. Но прелесть в том, что можно снача ла написать
over, затем написать слева от over единичку, а справа – двойку, или
наоборот. Нет жестких правил порядка ввода команд, ва жен лишь
их итоговый порядок!
Чем это удобно? Если я ввожу длинное выра жение в скобках,
то мне удобно снача ла поставить обе скобки, а затем – вставить
нужное выра жение меж ду ними. Но я могу сделать и по­другому:
Контекстное меню ввести все подряд, а не расставлять скобки в самом нача ле. Кому
поля ввода команд� как удобнее. Появляется большая свобода ввода.

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


Август 2009 Linux Format 59
Учебник OOo Math

Итак, я уже указал на то, что Math устроен логично. Помимо сиона ла», выпущенной издательством «ДМК Пресс» в 2008 году.
этого, Math гибок и универса лен. Некоторые конструкции похожи Там же описаны и другие интересные приемы, обеспечивающие
друг на друга, сами команды у близких операций схожи меж ду со­ эффек тивность работы в OpenOffice.org Math и демонстрирующие
бой, а за ложенные возможности форматирования позволяют соз­ гибкость приложения.
давать красиво оформленные формулы средствами самого ре­
дак тора. Околосимвольные элементы
Math обла дает широким спек тром околосимвольных элементов.
Использование скобок К таковым можно отнести индексы, стрелки и точки над симво­
С некоторыми простыми выра жениями мы познакомились, теперь лами и так да лее. Запомнить команды легко. Например, lsub, csub
усложним за дачу. Снова обратимся к лингвистической стороне и rsub можно расшифровать как «left subindex», «central subindex»
вопроса. Рассмотрим более сложный пример – «дробь: в числи­ и «right subindex» соответственно. Кстати, и со скобками можно
теле 1, в знаменателе 2+3». В этом случае ход мыслей такой: «еди­ провести ана логию.
ница над двойкой плюс три». Но если записать 1 over 2+3, то по­ Средствами Math можно создавать различные индексы, вклю­
лучится так: чая вложенные. Пользователю так же предоставляется широ­
1 кий набор надсимвольных элементов: разной длины стрелки, ли­
3
2 нии, точки, «крышка» и так да лее. Приведу несколько примеров:
А это совсем не то, что нам нужно! Для таких случаев использу­ вы легко разберетесь в них самостоятельно.
ют операторные (групповые) скобки. В Math это фигурные скоб­ b
a c
ки { и }. Тогда ход мыслей может быть, например, такой: «единица X X lsup a csup b rsup c lsub d csub e rsub f
d f
над двойкой­плюс­тройкой». Своего рода логическое разделение e
одной части фразы от другой. Правильная запись: 1 over {2+3}.
b – то же самое,
Операторные скобки можно использовать не только по их пря­ a c но запись
мому назначению, но и «для себя»: дабы не запу таться в слож­ d X f немного X lsup a csup b^c lsub d csub e_f
ном выра жении, можно «обернуть» в них его части. При этом
e короче
главное – не нарушить вид вашей формулы, и количество откры­
– почувствуйте
вающих операторных скобок должно быть равно количеству за­  
a abc abc разницу vec a vec abc widevec abc
крывающих. Впрочем, это касается всех скобок: круглых – (),
квадратных – [], треугольных (угловых) – <> и так да лее. – век торная dot vec a
Кстати о вводе скобок. Если круглые и квадратные скобки вво­ ̇a производная
дятся с клавиатуры на жатием соответствующих клавиш, то тре­
угольные, фигурные и другие виды реа лизуются с помощью спе­ Более сложные операторы
циальных команд. Например: Рассмотрим несколько операторов, в которых могут исполь­
зоваться три операнда. Вы можете увидеть соответствующие
[ ]〈 〉{} () [] langle rangle lbrace rbrace
им конструкции, на жав на кнопку Операторы в верхней части окна
Важный момент: скобки обязательно должны быть парны­ Выбор. С помощью этих операторов можно создавать формулы,
ми. Если вам нужна одиночная скобка – вставьте ее как текст, за­ содержащие пределы, интегра лы, суммы и произведения.
ключив в двойные кавычки. Так, ввод ( приведет к ошибке, а “(“ Общий синтаксис всех этих операторов выглядит так:
отобразит открывающую фигурную скобку в формате, указанном на звание_оператора from нижний_предел to верхний_предел
для текста (настроить форматирование формул можно, выбрав выра жение
нужные пунк ты из меню Формат). Нижний и верхний пределы являются необязательными и мо­
Помимо простых скобок, в Math есть еще и масштабируе­ гут существовать отдельно друг от друга. Проиллюстрирую это
мые. Обычные скобки превращаются в масштабируемые пу­ на примере.
тем приписывания ключевых слов left и right к соответствующим
командам. Например:
∫ f  x dx – неопределенный
интеграл
int f(x)dx
a – немасштабируемые
〚 〛 скобки ldbracket a over b rdbracket
b – интеграл с нижним
пределом. Использу­
∫ f  x dx ется, например, при int from a f(x)dx

〚〛
записи интегрирова­
a – масштабируемые left ldbracket a over b right
a
ния по площа ди
скобки rdbracket
b b – интеграл с верхним
пределом. Не имеет
А как поступить, если на до поставить одиночную масштабируе­
∫ f  x dx математического
смысла
int to b f(x)dx

мую скобку? Ведь необходимо же соблюсти парность! Разработ­


b
чики предусмотрели эту возможность, введя «невидимую» скоб­
ку, описываемую ключевым словом none. ∫ f  x dx – определенный
интеграл int from a to b f(x)dx
a

{ a
b
– масштабируемые
скобки left lbrace a over b right none
В слу чае, когда на месте верхнего и нижнего пределов ис­
пользуются выра жения, не забывайте про операторные скобки,
Этот «фокус» можно использовать при записи систем урав­ иначе может получиться не то, что вы хотите. Сравните следую­
нений. Подробности можно прочитать в моей статье «Сложная щие записи:
разметка и хитрости в OpenOffice.org Math» (http://i­rs.ru/Stat­i/ 4
Konkurs­2007/konkursnye­raboty­53/Slozhnaya­razmetka­i­hitrosti­
v­OpenOffice.org­Math) или в книге «OpenOffice.org pro для профес­
∫ b7 x 2 dx int from {2 a+5} to 4 b+7 x^2 dx
2 a5

60 Linux Format Август 2009


OOo Math Учебник

4 b7
Как я говорил раньше, матрицы можно использовать не по
– определенный int from {2 a+5} to
∫ x 2 dx интеграл {4 b+7} x^2 dx прямому назначению. Одним из красивых примеров, наглядно
2 a5 иллюстрирующим такую возможность, является запись вида
«сложение уравнений в системе».
∫ a 2 x 2 dx int from 2 a^2 x^2 dx “+”
left lbrace alignr matrix{
2
x#+10 y#alignl {}=31##

∫ x 2 dx int from {2 a^2} x^2 dx


+
{ x 10 y =31
−x 4 y =11
­x#+4 y#alignl {}=11}
right none newline
alignr overstrike phantom {matrix{
2
2a x#+101 y#alignl {}=15qq}} newline
14 y =42 alignl phantom{“+” left lbrace right none}
Вместо ключевых слов from и to можно использовать уже зна­ {alignr matrix {phantom ­x#~14 y#alignl
{``}=42}}
комые надсимвольные индексы csub и csup соответственно.
Похожий на этот и другие примеры описаны в уже упомяну той
Матрицы статье «Сложная разметка и хитрости в OpenOffice.org Math».
На матрицах мы остановимся отдельно. Во­первых, у них доволь­
но сложный синтаксис. А во­вторых, конструкцию, которая соз­ Вставка в текст
дается кодом матрицы, можно использовать не по прямому на­ На первый взгляд, в этом нет ничего необычного. Однако есть неко­
значению. Это позволяет создавать эффектные формульные торые тонкости, которые бывает полезно учитывать при работе.
конструкции и лишний раз показывает гибкость Math. Но давай­ Для вставки формулы выберите Вставка > Объект > Форму­
те по порядку. ла в главном меню Writer. Вставленная формула является объек­
Матрица представляет собой прямоугольный математический том Math, поэтому она имеет те же свойства, что и другие объек ты:
объект, в котором данные размещены в строках и столбцах. Неко­ обтекание, расположение, привязка, обрамление. При этом стиль
торые могут назвать матрицу таблицей, а некоторые таблицы (на­ Формула, который соответствует формулам Math, является сти­
пример, в экономике) ста ли называть матрицами. Действительно, лем врезок.
у матриц и таблиц есть много схожего, но есть и отличия. Важ­ Один из часто за даваемых вопросов зву чит примерно так:
ное свойство матрицы состоит в том, что количество элементов «Как убрать отступы слева и справа от формулы?» Эта проблема
в строках (столбцах) матрицы одинаково в любой строке (столб­ решается просто: из контекстного меню для формулы выбираем
це). Для таблиц это выполняется не всегда, поскольку в них могут Объект, идем на вкладку Обтекание и выставляем нулевые отсту­
на ходиться объединенные ячейки. пы. Более того, это можно сделать сразу для всех формул в до­
Человек читает матрицу слева направо. Это отра жено и в ма­ кументе. Для этого на до открыть окно Стили и форматирование
тематической форме, когда при ссылке на элемент матрицы сна­ (Формат > Стили или F11), перейти на стили врезок, щелкнуть пра­
ча ла говорится номер строки, а затем – столбца. Кроме того, вой кнопкой на стиле Формула, выбрать из контекстного меню Из­
в большинстве стран мира (в том числе и в России) чтение идет менить и выставить нулевые отступы на вкладке Обтекание.
сверху вниз. Ввод матрицы в Math реа лизован соответствующим Еще одним важный моментом является размещение формулы
образом. в тексте. По умолчанию объект выравнивается по высоте относи­
тельно центра. Это может привести к тому, что вставленная фор­
a 11 a 12 a 13 matrix{a_11 # a_12 # a_13 ## мула будет некрасиво смотреться в тексте.
a 21 a 22 a 23 a_21 # a_22 # a_23} Исправить это можно простым смещением формулы по вер­
тика ли, либо с помощью мыши, либо установкой нужных пара­
Сопоставив код результату, легко понять, что элементы одной метров в секции Положение на вкладке Тип диа логового окна
строки разделяются меж ду собой решеткой, а сами строки – дву­ Объект (вызывается из контекстного меню формулы, либо Фор­
мя решетками. мат > Врезка).
Обычно матрицу записывают в круглых или квадратных скоб­
ках. Для корректной записи необходимо использовать масштаби­ Вопросы совместимости
руемые скобки. Часто можно слышать вопрос: «Совместимы ли Microsoft Equation
и OpenOffice.org Math?» Если отвечать кратко, то нет. Это разные
редак торы, результатом работы в которых являются разные объек­

[ a 11 a 12 a 13
a 21 a 22 a 23 ] left [ matrix{a_11 # a_12 # a_13 ## a_21 #
a_22 # a_23} right ]
ты. Поэтому при открытии документов Word в Writer, как и при от­
крытии в Word документов, созданных в Writer и конвертированных
в формат Word, при отобра жении формул часто возникают ошиб­
Допустим, на до ввести век тор – матрицу­столбец. Есть два ки. По су ти, нельзя без проблем «перескочить» с одного редак тора
способа сделать это. Первый – использовать уже знакомую на другой, потому что многие формулы придется вводить заново.
команду matrix, а второй – взять специальную команду stack. Про­ Многие издательства принимают документы, содержащие
сто сравните: формулы, только в формате Microsoft Equation. А что делать тем,
кто работал в OpenOffice.org? К сожа лению, им придется наби­

[]
a 11 рать формулы заново. Либо попытаться договориться с издатель­
left [ matrix{a_11 ## a_12 ## a_13} right ] ством об использовании Math.
a 12
a 13 «Некрасивая»
формула: lim как бы
вылез из текста�

[]
a 11
«Красивая» фор­
a 12 left [ stack{a_11 # a_12 # a_13} right ] мула: все слова на­
a 13 ходятся на одной
линии�

Август 2009 Linux Format 61


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

Сервер почты:
Часть 8: Нейл Ботвик завершает установку почтового сервера с Postfix,
а заодно учит избавляться от спама и вирусов..

Основной конфигурационный файл Postfix великоват, но там


много комментариев, и значения по умолчанию разумные�

от MTA к MDA ее можно отправить в спам­фильтр, потом в антиви­


рус, и, наконец, в Procmail для доставки пользователю. Тогда все
письма перед доставкой будут полностью проверены на нежела­
тельное содержимое и соответствующим образом помечены или

Е
ще в LXF115 мы настроили почтовый сервер IMAP, и можем отфильтрованы как­то еще.
читать почту откуда угодно. В прошлом месяце мы добави­ Для Linux существует несколько популярных почтовых сер­
ли web­интерфейс, но почта по­прежнему сперва поступа­ веров, в том числе Postfix, Sendmail и Exim. И Sendmail, и Exim –
ет к провайдеру или на другой почтовый сервис, а потом вытяги­ достаточно продвину тые программы; правда, синтаксис конфигу­
вается от туда с помощью Fetchmail. Пора замкнуть круг, добавив рационного файла Sendmail так сложен, что мог бы посоперничать
SMTP­сервер, который позволит доставлять почту прямо на IMAP­ с проек том SETI. Но мы в итоге остановились на Postfix версии
сервер. Это означает, что ее можно будет отфильтровать на ви­ 2.5.6: эта версия вышла в нача ле текущего года, и ее легко до­
Наш русы и спам перед доставкой. По существу, SMTP устанавлива­ стать. Если она еще не установлена, добавьте ее обычным обра­
эксперт ет правила, определяющие, как почта будет передаваться меж ду зом с помощью менед жера пакетов.
Нейл Ботвик компьютерами.
У Нейла Ботвика Основной компонент в этом процессе – MTA (Mail Transport Настройка Postfix
по компьютеру Agent – Агент передачи почты); он отвечает за получение почтовых В Postfix есть несколько больших, хорошо откомментированных
в каждой комнате. сообщений с одного компьютера и передачу их на другой. Так же конфигурационных файлов в /etc/postfix, но в установке по умол­
Но по соображени­
ям безопасности
можно встретить сокращения MUA и MDA. MUA (Mail User Agent, чанию нужно изменить совсем немного. Основной файл конфи­
он никогда не ска­ Пользовательский почтовый агент) – это программа, используе­ гурации – /etc/postfix/main�cf, и преж де чем что­то менять в нем,
жет вам, где цент­ мая для управления сообщениями, а MDA (Mail Delivery Agent, прочтите комментарии. Теперь, предполагая, что ваш домен –
ральный сервер. Агент доставки почты) отвечает за получение почты с сервера mydomain�ru и нужно обрабатывать почту так же с mydomain�com
и доставку писем в ящики пользователей. Большинство MTA мо­ и example�com, изменим файл конфигурации. Начнем со строки
гут выступать как MDA, но в общем случае применяется отдель­ proxy_interfaces = 192.168.1.1 # optional
ная, более продвину тая программа. При сборе почты с Fetchmail Менять proxy_interfaces не обязательно, но это защищает от поч­
в качестве MDA мы использова ли Procmail, с ней и продолжим ра­ товых «петель» (mail loops). Пропустите эту строку, если у вас пря­
ботать. мое соединение без маршру тизатора или NAT; в противном случае
У отдельного MDA есть еще одно преимущество: программы подставьте IP­адрес своего интернет­шлюза. Теперь установите
можно объединять в цепочки. Вместо прямой передачи почты параметр

Месяц назад Мы добавили к нашему Apache web-приложения.


62 Linux Format Август 2009
Сети Учебник

Долой спам! Postfix 2.6.1


Dspam 3.8.0

myhostname = mydomain.ru Это не опции


Это имя вашего хоста и имя, которое будет использовать Postfix настройки Postfix,
при подключении к другим серверам. Оно должно разрешать­ а группы этих
опций: есть из чего
ся на внешний IP­адрес, иначе некоторые серверы могут отка­
выбрать при необ­
зать в соединении как потенциальному спамеру. Затем измените ходимости�
mydestination следующим образом:
mydestination = mydomain.ru,mydomain.com,example.com
Здесь мы указа ли разделенный запятыми список доменов, почту
с которых будет обрабатывать сервер – получив сообщение с до­
мена, отсутствующего в этом списке, он попробует отправить его
серверу, который сможет его обработать. Теперь запишем
в myorigin адрес вашего домена:
myorigin = mydomain.ru
Обратите внимание, что теперь вся почта с этого сервера
будет выглядеть как почта с этого домена. Домен так же добавится
ко всем адресам без доменной части (локальная почта).
Сообщения от несуществующих пользователей обычно от­
клоняются. Параметр luser_relay определяет получателя по умол­
чанию для этих писем. Если вы хотите получать сообщения и для
несуществующих пользователей, установите его в значение добавьте для Procmail в /etc/procmailrc следующие строки:
luser_relay = имя_пользователя # optional MAILDIR=/var/spool/mail
Тогда можно использовать разные имена пользователей для раз­ DEFAULT=$MAILDIR/$LOGNAME/
ных целей, но возрастет объем спама, так как пользователям LOGFILE=/var/log/procmail
со случайно сгенерированными именами спам отправляется После этого запустите (или перезапустите) сервис Postfix, на­
в колоссальном количестве. стройте свой почтовый клиент на сервер localhost (или имя хоста Скорая
помощь
При отправке почты Postfix обычно пытается соединиться компьютера, на котором работает Postfix, если это другая маши­
с почтовым сервером получателя напрямую. Если ваш провайдер на вашей сети) и порт 25 и отправьте самому себе тестовое сооб­
Все эти програм­
не разрешает такие подключения или диапазон IP­адресов про­ щение. Перед отправкой выполните в термина ле команду мы – демоны,
вайдера на ходится в «черном списке» как спамерский, можно sudo tail ­f /var/log/messages | grep postfix и обычно ничего
сделать так, чтобы почта проходила сквозь почтовый сервер ва­ Она профильтрует все новые данные, записанные в файл систем­ не выводят на тер­
минал, на кото­
шего провайдера. Для этого установите параметр: ного журна ла, и выведет на экран то, что относится к Postfix.
ром запущены.
relayhost = smtp.myisp.ru # optional При отправке письма вы должны увидеть несколько строк вывода Весь полезный
Не исключено, что этот сервер уже указан как SMTP­сервер в на­ с сообщением, что соединение с почтовым клиентом было уста­ вывод отправля­
стройках вашего почтового клиента. Наконец, установите пара­ новлено, сообщение получено и доставлено Procmail. Если вы ви­ ется в файл жур­
метр: дите сообщение об ошибке, оно должно ссылаться на настройку, на ла: либо их соб­
ственный, либо
mailbox_command = /usr/bin/procmail под лежащую исправлению. Если ошибки нет, а почта не достав­
через syslog. Для
Postfix может доставлять почту в ящики пользователей напря­ лена, вероятно, она успешно попа ла к Procmail, но не сработа ла просмотра содер­
мую, используя параметр home_mailbox или mail_spool_directory, доставка. Загляните в файл журна ла /var/log/procmail. жимого журна ла
но может и работать с внешним агентом доставки почты, что су­ в реальном вре­
щественно добавляет гибкости. Так как в LXF115 мы настроили Авторизованный доступ мени при настрой­
ке используйте
Procmail для работы с Fetchmail, остановимся на этом варианте В былые времена, когда обитателями киберпространства были команду tail ­f.
(по крайней мере, пока). Если этого номера нет у вас под рукой, одни ученые да технари, почтовые серверы сотруднича ли очень
дру желюбно. Любой сервер переслал бы полученное сообщение
должному адресату или ближайшему к нему серверу. Все закон­
Настройка роутера чилось, когда Сэнфорд «Спамфорд» Уоллес [Sanford ‘Spamford’
Wallace] и его коллеги сообразили, что это отличный метод мас­
Чтобы полу чать почту извне, вам потребуется статический IP­адрес, совой рассылки незваных сообщений. Теперь пересылку в поч­
который предоставляют многие провайдеры (хотя иногда за допол­ товых серверах отключают. Это означает, что сервер принимает
нительную плату). Пона добится так же DNS­запись MX для ваше­ и доставляет только почту, удовлетворяющую одному из трех кри­
го домена: она ска жет другим почтовым серверам, куда доставлять териев:
почту для вас. Ее можно полу чить там же, где вы регистрирова ли
Сообщение предназначено для одного из адресатов в списке
свое доменное имя. SMTP работает через порт 25, и его нужно от­
крыть на маршру тизаторе (он же роутер) и перенаправить на сервер. доменов сервера.
Сообщение отправлено с компьютера в списке доменов сервера.

Август 2009 Linux Format 63


Учебник Сети

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


почту, порож дая за держки. Теперь у вас есть альтернатива:
пусть почтовый сервер сканирует приходящие сообщения, рабо­
тая в фоновом режиме! Тогда при запуске клиента нужно будет
только загрузить проверенную почту. Выбор здесь богатый: Spam
Assassin (http://spamassassin.apache.org), Bogofilter (http://bogofilter.
sourceforge.net)… ну, а мы возьмем Dspam с сайта http://dspam.
nuclearelephant.com. Все эти программы есть в большинстве
репозиториев, и все они используют метод поиска спама
под названием «байесовский ана лиз» (Bayesian analysis), рас­
сматривающий частоту различных слов в сообщениях.
Есть несколько способов вызова Dspam из Postfix – как
фильтр содержимого, как транспорт или как команда почто­
вого ящика. Воспользуемся последним вариантом: он, может,
и не самый эффек тивный, зато самый простой в настройке.
Когда фильтрация заработает как нужно, всегда можно занять­
Следите за жур­
Пользователь, отправляющий сообщение, ау тентифицировал­ ся и дру гими методами.
налами при провер­
ке новых возмож­ ся перед отправкой почты. Postfix может вызывать Dspam напрямую для ка ж дого письма,
ностей — ошибки Первые два пунк та настроены по умолчанию в любом нор­ но это неэффек тивно; лучше воспользоваться демоном Dspam,
обычно бросаются мальном MTA, то есть почта принимается, только если получатель запускаемым как сервис при загрузке системы. Postfix вызыва­
в глаза� или источник на ходится в сети сервера. Поэтому может пона до­ ет dspamc, который использует демона вместо запуска отдельно­
биться изменить адрес SMTP­сервера в почтовом клиенте при пе­ го экземпляра Dspam. Первый шаг – отредак тировать файл /etc/
реключении из одной сети в другую, так как вы выну ж дены ис­ dspam�conf (он может на ходиться в подката логе /etc) и убедить­
пользовать сервер этой сети. ся, что данные параметры установлены:
Однако ау тентификация помогает избежать этой пробле­ TrustedDeliveryAgent “/usr/bin/procmail”
мы, потому что она означает, что пользователь «правильный», UntrustedDeliveryAgent “/usr/bin/procmail ­d %u”
и сервер перенаправит сообщение ему. На собственном сервере Preference “signatureLocation=headers”
это нужно, если вы хотите иметь возможность отправлять поч­ ServerMode dspam
ту откуда угодно: из локальной сети, через беспроводное под­ ServerPass.Relay1 “secret”
ключение в кафе или через 3G USB­модем. Для ау тентификации ClientIdent “secret@Relay1”
Postfix использует Cyrus SASL, поэтому убедитесь, что он установ­ Первые две строки велят Dspam пользоваться Procmail для достав­
лен, а сервис saslauthd запускается при загрузке. Теперь добавь­ ки почты всем пользователям. Опция signatureLocation предписы­
те такие строки в конец файла /etc/postfix/main�cf: вает Dspam хранить сигнатуру сообщения в заголовках, а не в те­
smtpd_sasl_auth_enable = yes ле письма. Dspam добавляет сигнатуру в ка ж дое обрабатываемое
smtpd_sasl_security_options = noanonymous сообщение, и поэтому не будет просматривать одно и то же пись­
smtpd_sasl_local_domain = $myhostname мо два ж ды. Последние три опции разрешают клиенту dspamc
broken_sasl_auth_clients = yes # optional взаимодействовать с демоном. Убедитесь, что демон Dspam на­
Скорая smtpd_recipient_restrictions = permit_sasl_ строен на запуск при загрузке системы с помощью программы на­
помощь
authenticated,permit_mynetworks,check_relay_domains стройки сервисов своего дистрибу тива, и перезапустите его после
Строка, отмеченная как опционная, нужна только для неко­ изменения файла конфигурации.
Попробуйте вно­
сить небольшие торых версий Outlook Express и Microsoft Exchange. Перезагрузив Затем откройте файл /etc/postfix/main�cf и установите пара­
изменения в кон­ конфигурацию, по локальной сети вы все еще сможете отправ­ метры
фигурационные лять почту с почтового клиента без ау тентификации. У вас так же mailbox_command = /usr/bin/dspamc ­­client ­­mode=teft
файлы и прове­
должна быть возможность получать и пересылать почту при под­ ­­deliver=innocent,spam ­­feature=noise,whitelist ­­user
рять их после ка­
ж дой правки. Так ключении извне, если почтовый клиент настроен на ау тентифи­ $USER ­­ ­d %u
будет гораздо кацию при отправке (с теми же именем пользователя и паролем, которые ска жут Postfix, соответственно, использовать dspamc
проще отследить которые используются для по­ для доставки почты, обучаться
ошибку. Здравая
стра ховочная по­
лучения почты; это справед­
ливо по умолчанию для боль­
«Байесовские спам- в зависимости от вашего выбо­
ра (mode=teft), доставлять как
литика – созда­
вать резервные
копии файлов пе­
шинства клиентов). Подробное
руководство имеется по адре­
фильтры обучаются нормальные сообщения, так
и спам, и от имени какого поль­
ред ка ж дым изме­
нением, для этого
су http://postfix.state­of­mind. на вашей почте.» зователя доставлять почту.
de/patrick.koet ter/smtpauth; Dspam может обрабатывать
подойдет Subver-
sion или Git. из него так же можно узнать, как зашифровать трафик с помо­ спам двумя способами: изолировать его в карантине (который
щью TLS. Это важно при подключении извне: в противном слу чае можно просмотреть через web­браузер и найти письма, признан­
ваши пароли можно будет перехватить. ные спамом ошибочно, а остальное уда лить), или доставлять всю
почту, но помечать спам как спам. Это дело вкуса, но я бы пред­
Фильтрация спама почел последний вариант: при этом сообщения все еще доступны
Тихо ли вы презираете спам или люто его ненавидите, но счи­ с любого почтового клиента и уже помещены в отдельную почто­
таться с ним приходится всем. Обычно есть два варианта: ли­ вую папку. Отфильтровать сообщения можно по заголовку
бо фильтруйте почту с помощью спам­фильтров провайдера X­DSPAM­Result:
или почтового сервиса, с риском потерять нормальные письма который содержит Innocent или Spam.
из­за ложных срабатываний (письма, ошибочно признанные спа­ Изменив конфигурационный файл, перезапустите Postfix или
мом), либо пользуйтесь локальным спам­фильтром. Послед­ заставьте его перечитать настройки командой
няя опция предоставляет больший контроль, но при ка ж дом за­ postfix reload

64 Linux Format Август 2009


Сети Учебник

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


мо из вашей почты. Они особо удобны благодаря отсутствию за­ Журналы Postfix
данного набора правил и приспосабливаются к вашим потребно­
стям. Недостаток, правда, в том, что их нужно обучать. Обучение Postfix записывает все в syslog и может зава лить вас высылаемой ин­
происходит в двух направлениях. Во­первых, нужно дать формацией. Обычно лучше всего приказать вашей службе журна­
им на пробу множество сообщений, и спама, и полезных (их иног­ лирования отправлять эти сообщения в отдельный файл. Если вы
пользуетесь syslog­ng (как в большинстве дистрибу тивов), добавьте
да называют «хамом» – «ham»), чтобы они поняли, какие вам нуж­ в файл /etc/syslogng/syslog­ng�conf такие строки:
ны, а какие не нужны. Поэтому до установки Dspam не уда ляйте #Postfix logging
спам, просто поместите его в отдельную папку. Потом можно про­ destination mail { file(“/var/log/mail.log”); };
вести первичное обучение с помощью команды dspam_train, на­ filter f_mail { facility(mail); };
filter f_notmail { not facility(mail); };
пример, таким образом:
log { source(src); filter(f_mail); destination(mail); };
dspam_train username spam_dir ham_dir
Dspam фильтрует спам отдельно для ка ж дого пользователя,
и у ка ж дого своя база данных классификации. Остальные два ар­ не загру жается, и Dspam не должен ее обрабатывать. Некоторые
гумента – пу ти к ката логам со спам­ и хам­сообщениями, ка ж дое из этих типов некорректных сообщений можно отклонить, доба­
в отдельном файле. Так как здесь используется стандартный фор­ вив строки в файл /etc/postfix/main�cf:
мат почтового ката лога IMAP­серверов, можно просто указать пу­ # HELO restrictions
ти к папкам «входящие» и «спам» своего сервера, например: smtpd_delay_reject = yes
dspam_train arthur /var/spool/mail/arthur/.INBOX.spam/cur smtpd_helo_required = yes
/var/spool/mail/arthur/cur smtpd_helo_restrictions =
Нужно так же провести обучение «в деле», особенно в первое permit_mynetworks,
время. Оно включает информирование Dspam при ка ж дом невер­ reject_non_fqdn_hostname,
ном определении спам­сообщения. Добросовестное отношение reject_invalid_hostname,
к этому внача ле – за лог успеха в будущем, потому что Dspam permit
предполагает, что все неисправленные классификации верны, # Sender restrictions
и принимает это к сведению. Простейший способ информировать smtpd_sender_restrictions =
Dspam о ложных тревогах и просчетах – напрямую из почтового permit_sasl_authenticated,
клиента, за дав несколько почтовых псевдонимов (алиасов). Они permit_mynetworks,
определяются в файле /etc/mail/aliases, который уже содержит reject_non_fqdn_sender,
несколько стандартных псевдонимов, поэтому откройте его на ре­ reject_unknown_sender_domain,
дак тирование от имени root и добавьте туда две строки: permit
dspam­spam: “|/usr/bin/dspam ­­user nobody ­­source=error # Recipient restrictions
­­class=spam” smtpd_recipient_restrictions =
dspam­notspam: “|/usr/bin/dspam ­­user nobody ­­source=error reject_unauth_pipelining,
­­class=innocent” reject_non_fqdn_recipient,
Определение псевдонима состоит из имени, двоеточия и поля на­ reject_unknown_recipient_domain,
значения. Это может быть другой пользователь, полный почто­ permit_mynetworks,
вый адрес или любая их последовательность, разделенная запя­ permit_sasl_authenticated,
тыми. Это может быть и команда, предваряемая символом |. Она reject_unauth_destination,
запустит программу и передаст ей содержимое сообщения в стан­ permit
дартный поток ввода. Теперь можно сообщить о ложных сраба­ Здесь нет места на углубление в дета ли работы этого кода, но ес­
тываниях и пропущенном спаме, просто перенаправив сообще­ ли вы хотите узнать побольше, зайдите на сайт www.postfix.org.
ния на dspam­notspam@your.domain или dspam­spam@your.
domain соответственно. Если ваш почтовый клиент под держи­ Сканирование на вирусы
вает макросы, можно связать эти действия с комбинацией кла­ Если с сервера будут загру жать почту пользователи Windows, гу­
виш или пунк том меню, значительно упростив процесс обу чения манно было бы проверить ее на вирусы. Dspam может это сде­
Dspam. Мы сдела ли этот псевдоним общим, применив пользо­ лать с помощью ClamAV. Во­первых, убедитесь, что ClamAV уста­
вателя ‘nobody’, но можно было бы за дать отдельную пару псев­ новлен, а сервис clamd запущен, потом откройте файл dspam�conf
донимов и для ка ж дого из пользователей. После изменения фай­ и раскомментируйте следующие настройки ClamAV:
ла aliases потребуется выполнить команду ClamAVPort 3310
newaliases ClamAVHost 127.0.0.1
чтобы добавить изменения в базу данных псевдонимов Postfix. ClamAVResponse spam
Первые две строки, скорее всего, менять не на до, а третья говорит
Ранняя фильтрация спама Dspam, что делать с почтой, если ClamAV найдет вирус – reject от­
Dspam хорошо обнару живает спам, но часть спама проще обрабо­ бросит сообщение и возвратит ошибку, accept примет сообщение
тать из Postfix. Спамеров не волнуют тонкости почтового обмена, и потом молча от него избавится, а spam велит Dspam считать
поэтому неудивительно, что они почти не вникают в обычные пра­ сообщение спамом и изолировать или пометить его.
вила передачи почты. Стараясь отправить побольше сообщений, Теперь у вас должна быть полная почтовая система для SMTP,
они идут кратчайшим пу тем, опуская или под делывая информа­ IMAP и web­почты. Программы, рассмотренные здесь, очень гиб­
цию, отличающую настоящее письмо. Поэтому огромное количе­ кие, и мы охватили только их базовые возможности, поэтому за­
ство спама можно отпихнуть на начальной ста дии SMTP­обмена, сучите рукава, прочтите документацию и настраивайте ПО в соот­
отклонив соединение. При этом экономится трафик, так как почта ветствии с вашими ну ж дами.

Через месяц Расширим охват сетью через Virtual Private Networking.


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

Python: Создаем
Часть 2: Думаете, жизнь может быть лучше? Она и станет лучше, если вы,
следуя Нику Вейчу, создадите себе бота – чтоб вкалывал за вас.

Я Xmpppy
Протокол Jabber/XMPP отлично поддерживается Python. Он реали­
зован в рамках всеобъемлющего сетевого модуля Twisted, но есть
и более легковесная версия, подходящая для наших нужд, по име­
ни Xmpppy. В вашем дистрибутиве наверняка имеется этот пакет,
Код примеров но можно скачать код Python с сайта http://xmpppy.sourceforge.
статьи net.
Чтобы разобраться в Xmpppy, начнем с примеров командной
строки. Но сперва обзаведемся тестовой учетной записью: разве
ваш бот не заслужил собственного имени пользователя в Google?
Для тестирования вам понадобятся как минимум два идентифика­
тора Jabber ID. Итак, мы зарегистрировали учетную запись Gmail
специально для бота, вошли через web­браузер и пригласили дру­
гого пользователя Gmail в чат. Можно было бы настроить все это
в самом Xmpppy, но так будет сложнее: для первичного тестиро­
вания лучше иметь две учетных записи, которые могут общаться
друг с другом. После этого наберите в оболочке python для досту­
па к интерактивной командной строке Python:
>>> import xmpp
>>> jid=xmpp.protocol.JID(“botaddress@gmail.com”)

П
редставьте, как упростилась бы наша жизнь при нали­
чии оравы слуг, готовых выполнять наши приказы: они
приносили бы почту, чистили клетку с гиппогрифом, пи­
нали Майка… ну, всякое такое. Увы, мы живем в слишком ран­
нем историческом периоде, когда еще не внедрены дешевые, эф­
Наш фективные и послушные роботы­слуги, и приходится все делать
эксперт самим. Другой способ отлынивать от работы – завести виртуаль­
Ник Вейч ную прислугу. О да, под это определение может попасть практиче­
Ник Вейч запустил ски любое ПО, но я­то имею в виду простой и удобный интерфейс,
Linux Format способный выполнять полезные задачи и сообщать вам то, что
и редактировал
его первые восемь
вы хотите знать. Если он сумеет ставить в тупик ваших друзей
лет. А потом устал и убеждать ваших врагов пересмотреть свою матрицу враждеб­
и ушел. ности, тем лучше.
Нечасто используемым, но удобным способом общения с по­
добными существами является чат. Стоит ли связываться с хит­
роумными SSH­туннелями или нудными сервисами на базе web,
если можно легко общаться с помощью средства, из которого
вы и так не вылезаете? В свете вышесказанного, наш маленький
подручный будет чат­ботом: пусть сидит на канале чата и ждет,
когда хозяин подаст голос; или, допустим, при случае проявляет­ Под нашим чутким руководством, ваш чат­бот скоро будет готов
ся и сообщает вам о чем­нибудь. к злодеяниям�

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


66 Linux Format Август 2009
Python Учебник

говорящего бота
Это мы установили ID Jabber. Он сильно смахивает на ад­
рес электронной почты, потому что мы для целей нашего уро­ Даешь Disco
ка взяли учетную запись Google; однако любой другой Jabber ID
тоже подойдет. Он состоит из двух частей (а может и из трех, XMPP включает структуру модулей расши­ му боту – например, превратить его в храни­
но об этом потом): имя пользователя и домен. Домен – это место, рения под названием Disco. Они обогащают лище файлов или чтеца новостей?
где Xmpppy будет искать сервер. протокол другими типами сообщений, вклю­ К счастью, Google расширил свою реали­
чая SIP (голосовые) и передачу файлов, и все­ зацию XMPP некоторыми дополнительными
Создав пользователя, надо создать и экземпляр клиента. Кли­
ми мыслимыми возможностями, для которых функциями, подробную информацию о ко­
ент в Xmpppy – это объект, который контролирует соединение, применяется сеть «точка–точка». Так почему торых вы найдете на сайте http://code.google.
обрабатывает сообщения и вообще взаимодействует с серве­ бы не прибавить функциональности и наше­ com/apis/talk/jep_extensions/extensions.html.
ром. Клиент и его подключение создаются за несколько шагов:
сначала нужно создать экземпляр клиента (в качестве аргумента
потребуется Jabber ID), а затем мы попробуем соединиться с сер­ Создание соединения
вером. Установив соединение, нужно аутентифицироваться для После установки уровня отладки мы создали соединение (пароль
выполнение дальнейших действий. тут подставьте ваш собственный) и получили ответный резуль­
>>> myclient=xmpp.Client(jid.getDomain(),debug=[]) тат tls, который означает, что с сервером установлено безопасное
>>> myclient.connect() соединение – вы можете также увидеть tcp для стандартного се­
‘tls’ тевого соединения, или пустую строку, если в соединении было Скорая
помощь
>>> myclient.auth(jid.getNode(),’botpasswd’) отказано.
‘sasl’ При малой прыткости ваших пальцев и в зависимости от ваше­
Безопасность ва­
Здесь нужно обратить внимание на пару моментов. Сперва го сервера, следующий шаг может не сработать: серверы Google шего бота лег­
мы создали экземпляр клиента и вызвали метод jid�getDomain ожидают от вас быстрой аутентификации соединения, в против­ ко укрепить, огра­
для получения имени сервера из созданного нами объекта jid. ном случае оно оборвется, оставив вас скрести в затылке и раз­ ничив ему прием
команд только
Далее, вас просят еще указать уровень отладки, определяющий думывать, что за беда тут стряслась. Вам дается всего несколько
одним конкрет­
качество обратной связи, которую вы получаете. Мы установи­ секунд, и вы, возможно, захотите объединить следующие стро­ ным ID.
ли свой на пустой список, но если вам охота завалить себе экран ки вместе:
сообщениями, добавьте в него строку always. Впрочем, при нали­ >>> myclient.connect() ; myclient.auth(jid.
чии проблем сообщения могут и пригодиться. getNode(),’botpasswd’)
‘tls’
‘sasl’
Результат sasl говорит о том,, что соединение аутентифициро­
вано с использованием SASL (Simple Authentification and Security
Layer, Простая аутентификация и слой безопасности) посредством
вашего пароля.. Последний шаг установки соединения – объявле­
ние вашего статуса. Как вы знаете, в Google Chat и других сервисах
Jabber существует несколько различных уровней статусов клиен­
тов (например, Доступен или Занят). Кроме всего прочего, они ис­
пользуются сервером для составления списков доступных кон­
тактов, а в Xmpppy для этого существует специальный метод:
myclient.sendInitPresence()
Учтите, что некоторые серверы не дадут вам и шагу ступить, пока
вы не укажете это правильным образом.

Послание в бутылке
Ура, есть контакт! Теперь, прежде чем заняться скучными веща­
ми, давайте составим и отправим сообщение нашему оппоненту
(хороший кандидат – ваш собственный адрес Google). Однако сна­
чала нужно обзавестись адресом, куда требуется доставить сооб­
щение, и его текстом. После этого создадим сообщение и отпра­
Протокол XMPP/Jabber широко распространен, и с ботом можно вим его
соединяться через разные клиенты, включая Pidgin� mymsg=xmpp.protocol.Message(“evilbot.1@gmail.

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


Август 2009 Linux Format 67
Учебник Python

Страница проекта
Xmpppy не богата
документацией,
но справочник
по API внятно
объясняет, как
работает модуль�

com”,”hello”, “chat”) Прослушивание


myclient.send(mymsg) От хорошего бота также нужно получать входящие сообще­
Если вы справились с приглашением и разрешением на чат от учет­ ния. Среда Xmpppy принимает весточки, отправленные на со­
ной записи вашего бота, вы должны получить приятный сюрприз. зданный вами клиентский объект, и сохраняет их в стеке для об­
Одна штука может вас озадачить: а как установить свое ста­ работки. А какой? Xmpppy использует концепцию обработчиков
тусное сообщение? Сервер отображает только статус и соответ­ [handler]: сперва вы определяете функцию или метод, который бу­
ствующее сообщение, переданные клиентом. дет действовать как получатель информации. Затем, при готов­
На сервере Google это означает, что вы можете иметь статус ности обработать сообщения из стека, вы просто вызываете метод
Не на месте, Невидим, Отсутствую, Не беспокоить или На месте, Process() объекта клиента. Звучит это сложнее, чем есть на самом
а также в форме текстового сообщения. А вот и разгадка: ваш ста­ деле – другими словами, вы сообщаете клиенту, где нарыть со­
тус задается отправкой специального сообщения XMPP, которое общений, затем велите ему пропустить их через функцию. Конеч­
идет прямо на сервер. Оно включает ваш статус и текст статусного но, это можно сделать и через командную строку Python, но тог­
сообщения. Не зная этого, самому догадаться сложно, но смысл да будет сложнее: нужно написать функцию обработчика, а затем,
тут есть: XMPP как раз предназначен для отправки сообщений, обычным порядком, запустить бесконечный цикл для обработки
так зачем же заводить отдельные протоколы только для отправ­ сообщений по мере их прибытия.
ки сообщений про статус? Сервер отвечает за обновление статуса Мы покажем соответствующий код в командной стро­
для всех, кто соединен с вами. Кстати говоря, протокол XMPP ке, но разумнее будет встроить его в собственный класс (как
позволяет отправлять контактам явные сообщения о статусе, но, мы увидим далее). В данном примере, мы также отправим со­
хотя тут и есть с чем порезвиться, обычно мы перекладываем эту общение самим себе для тестирования, а вы можете сделать
заботу на сервер: это через Gmail:
>>> presence = xmpp.Presence(status = “Ready!”, show = >>> def msgparser(instance, message):
“chat”, priority = ‘1’) ... print “new message!”
>>> myclient.send(presence) ... print “from: “ + str(message.getFrom())
Модуль Xmpppy работает с сообщениями о статусе иначе, ... print “msg: “ + str(message.getBody())
чем с обычными, потому что они используют другие аргументы, ...
но механизм отправки тот же самый. >>> myclient.RegisterHandler(‘message’, msgparser)
>>> mymsg=xmpp.protocol.Message(“evilbot@gmail.
com”,”hello”, “chat”)
Почему Python? >>> myclient.send(mymsg)
‘5’
Можно, естественно, писать скрипты Он обла дает прекрасными возможностями >>> myclient.Process(1)
и приложения для обработки web­данных для работы с текстом (которым по большей new message!
на любом другом языке; так почему же части и являются наши данные), он кросс­ from: evilbot@gmail.com
мы выбра ли Python, а не C#, например? платформенный и снабжен бездной полез­ msg: hello
На то есть веские причины. Python – язык ных библиотек для web­служб и протоко­
1493
простой и понятный, код на нем легко лов. Используя Python и пару библиотек,
>>>
пишется и (что, вероятно, еще важнее) можно мигом создать рабочее приложение
легко читается. или скрипт.
Как видите, анализирующая функция msgparser() проста. Она
использует доступные методы getFrom() и getBody() во входящем

68 Linux Format Август 2009


Python Учебник

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


соль. Для реального бота надо еще записать отправителя в пере­ Редакторы Python
менную (чтобы ему отвечать), а может быть, разобрать сообщение
глубже, чтобы сгенерировать ответ. Python строг насчет синтаксиса. Это не так
плохо, но чревато проблемами, если вы
Помощь по Python пишете код в неподходящем редакторе.
Мы использовали Vim и Kate – оба име­
Если вы новичок в Python, но имеете опыт программирования
ют выделение синтаксиса и другие функ­
на других языках, трудностей у вас возникнуть не должно: глав­ ции для облегчения задачи создания рабо­
ное – помните, что надо правильно делать отступы. На основном тающего скрипта на Python. Годится также
сайте Python имеется масса документации по особенностям язы­ Eric, IDE на базе Python, куда включено мно­
ка и синтаксису, а также по использованию стандартных модулей, го других возможностей, специфичных для
этого языка. Она доступна в большинстве
поставляемых вместе с Python. дистрибутивов, и ее можно скачать с сай­ Используйте редактор, умеющий
та http://eric­ide.python­projects.org/eric4­ подсвечивать синтаксис для Python,
Командный голос download.html. или специальный, из IDE Eric�
Для нашего простенького бота мы примем такой синтаксис: спе­
циальные команды будут начинаться с символа #. Получив сооб­
щение, начинающееся с #, мы попытаемся сделать что­нибудь; но импортировать модуль random; random�choice случайным обра­
а в противном случае вернем произвольный ответ из припасен­ зом выбирает элемент из тех, что ему подсунули.
ного списка. Обработчик команд может быть таким:
Добавление обработчика команд сделало бы код громозд­ def uptime(self, sender):
ким. Ради экономии места и умственных усилий применим трюк: import subprocess
используя конструкцию eval языка Python, мы создадим функ­ p=subprocess.Popen([“uptime”], stdout=subprocess.PIPE)
цию, вызывающую метод в нашем классе с тем же именем, что r=p.communicate()[0]
и команда, которая была нам передана. Это, конечно, отчасти хал­ self.client.send((xmpp.protocol.Message(sender,r)))
тура, но экономит место и облегчает добавление команд – вам Объясним его, потому что он работает с запуском команд ло­
останется только определить новый метод. Для бота более про­ кально, на компьютере, где выполняется бот. Сначала идет опре­
двинутого вы, возможно, захотите вставить механизм обработчи­ деление, которое принимает экземпляр объекта self (это требова­
ков, чтобы к экземплярам класса можно было добавлять свои ко­ ние Python) и информацию об отправителе сообщения, добытую
манды, но ниже показано, как работает метод попроще (заметим, обработчиком. А потом мы импортируем subprocess из стандарт­
что данный код – это метод класса) ных библиотек Python, для запуска локальной команды.
def messageparse(self, instance, message): Кроме того, мы использовали метод под названием Popen
m = message.getBody() (см. строку, начинающуюся с p=subprocess�Popen), который
sender=message.getFrom() задокументирован и объяснен по адресу http://docs.python.
if (m[0]==’#’): org/library/subprocess.html. Вкратце, мы передаем команду для
self.log(‘command received’) выполнения и требуем, чтобы стандартный вывод отсылался в оп­
#специальный случай ределенное место. Тогда мы можем связаться с этим выводом, ис­
#просто команда – подразумеваем, что пользуя метод communicate экземпляра Popen, и получить резуль­
метод существует, как и id отправителя тат команды. Последняя строка запаковывает его и отправляет
try: в виде чат­сообщения. Теперь вы можете делать запросы к ваше­
eval(‘self.’+m[1:]+’(sender)’) му серверу через чат­клиент и заставлять его злодействовать!
except:
self.client.send((xmpp.protocol.Message(sender, ‘Sorry Идем дальше
Dave, I can\’t do that...’))) Полный код с комментариями для класса нашего чат­бота вклю­
else: чен на LFXDVD. Если вы собираетесь запустить его, подставь­
#полагаю, надо сказать что­нибудь, из вежливости те данные учетной записи вашего бота. А если вы импортируете
self.client.send((xmpp.protocol.Message(sender, random. его в качестве модуля, можете ввести данные об учетной запи­
choice(self.responses)))) си и пароле просто через конструктор. Код нашего примера дол­
Как видите, сообщение проверяется на наличие символа #, жен предоставить вам достаточно информации, поясняющей, как
и если он есть, мы создаем вызов метода по остатку строки, вклю­ он работает.
чая ID отправителя, и пытаемся выполнить его. Конструкции try Возможно, вам захочется добавить к классу собственные ме­
и execept отлавливают исключения – например, несуществующий тоды для задания других команд: автоматизировать какие­нибудь
метод. Если команды нет, мы просто отправляем случайный ответ, задания или обратиться к внешним ресурсам – например, создать
выбрав его из списка responses. На самом деле, для этого нуж­ систему напоминаний, использующую онлайн­календарь. Или,
почему бы не приткнуть вашего чат­бота к сервису переводов –
включить его в беседу и заставить переводить все, что вы скаже­
Версии Python те, на другой язык?
Чат­бот – всего лишь перевалочный пункт: легкий в использо­
Python 3.0 уже доступен, но по­ пользовать в обозримом буду­ вании интерфейс, позволяющий обращаться к скрипту. Как вы тру­
скольку его код несовместим щем) версии 2.х. Поэтому весь доустроите своего чат­бота, зависит от вас, от того, на что вы его
с прежними версиями, многие наш код в этой серии уроков сов­
запрограммируете. Если придумаете другие способы его приме­
дистрибутивы по умолчанию местим с 2.x, для удобства боль­
все еще используют (и будут ис­ шинства читателей. нения, пожалуйста, напишите нам; а если вы чего­то недопоняли –
не забудьте просмотреть полный код на DVD.

Через месяц Twitter… Научим Python слать 140-символьные сообщения.


Август 2009 Linux Format 69
Inotify Отслеживаем изменения
в файловой системе Linux-компьютера

Inotify: Действия
Создание, изменение и удаление файлов и каталогов – это вещи, происходящие
в вашей системе по тысяче раз на дню. Их можно отследить и применить
для вашего удобства, утверждает Николай Кузнецов.

Д
ля нача ла – немного теории. Inotify – это подсистема яд­ [15/Jun/2009 14:10:06] IN_MOVED_FROM /etc/passwd.
ра Linux, позволяющая отслеживать события в файло­ tmpZRwKCR
вой системе. Причем происходит это в так называемом [15/Jun/2009 14:10:06] IN_MOVED_TO /etc/passwd
«реак тивном режиме» (то есть по событию), в отличие от режи­ [15/Jun/2009 14:10:06] * /etc/passwd.tmpZRwKCR is moved to /
ма «ак тивного» – постоянного сканирования изменений. Это пре­ etc/passwd
доставляет нам достаточно эффек тивный механизм для самых [15/Jun/2009 14:10:06] IN_CREATE /etc/shadow.tmpCsjybQ
Наш различных нужд. И хоть появилась эта функция сравнительно [15/Jun/2009 14:10:06] IN_CLOSE_WRITE /etc/shadow.tmpCsjybQ
эксперт недавно (начиная с ядра версии 2.6.13­rc3), ее рож дение повлек­ [15/Jun/2009 14:10:06] IN_DELETE /etc/shadow.old
Николай ло за собой значительные и не очень улучшения в различных про­ [15/Jun/2009 14:10:06] * /etc/shadow.old is deleted
Кузнецов граммах, таких как: Beagle (система индексации и быстрого по­ [15/Jun/2009 14:10:06] IN_CREATE /etc/shadow.old
Ведет курсы
иска файлов на рабочем столе), auditd (служба аудита), Brasero [15/Jun/2009 14:10:06] IN_MOVED_FROM /etc/shadow.tmpCsjybQ
по Linux уже более
пяти лет. Из обу­ (программа записи CD/DVD в GNOME), tailf (эффек тивный ана­ [15/Jun/2009 14:10:06] IN_MOVED_TO /etc/shadow
ченных им за это лог команды tail ­f), udevd (подсистема работы с устройствами) [15/Jun/2009 14:10:06] * /etc/shadow.tmpCsjybQ is moved to /etc/
время полу чился и многие другие. Мы же продемонстрируем возможности Inotify shadow
бы ударный полк на примере двух утилит: iwatch и incron. На данном уроке будет [15/Jun/2009 14:10:06] IN_CREATE /etc/group.tmpfr7KLO
линуксоидов.
использоваться SUSE 11, но все действия будут ана логичными [15/Jun/2009 14:10:06] IN_CLOSE_WRITE /etc/group.tmpfr7KLO
и в других дистрибу тивах. Если же вы предпочтете SUSE, то смо­ [15/Jun/2009 14:10:06] IN_DELETE /etc/group.old
жете найти все указанные пакеты при помощи поиска на сайте [15/Jun/2009 14:10:06] * /etc/group.old is deleted
http://software.opensuse.org/search. [15/Jun/2009 14:10:06] IN_CREATE /etc/group.old
[15/Jun/2009 14:10:06] IN_MOVED_FROM /etc/group.tmpfr7KLO
iПосмотрим: iwatch [15/Jun/2009 14:10:06] IN_MOVED_TO /etc/group
С помощью iwatch можно легко наблюдать, какие изменения [15/Jun/2009 14:10:06] * /etc/group.tmpfr7KLO is moved to /etc/
происходят в определенной части дерева ката логов файловой group
системы. Для примера, запустим следующую команду: [15/Jun/2009 14:10:06] IN_CREATE /etc/group.tmpwsLtmN
# iwatch ­v ­r /etc/ [15/Jun/2009 14:10:06] IN_CLOSE_WRITE /etc/group.tmpwsLtmN
Она будет подробно (­v) сообщать обо всем, что происходит в ди­ [15/Jun/2009 14:10:06] IN_DELETE /etc/group.old
рек тории /etc и во всех ее под дирек ториях (­r). Теперь можно от­ [15/Jun/2009 14:10:06] * /etc/group.old is deleted
крыть вашу любимую графическую программу для настройки [15/Jun/2009 14:10:06] IN_CREATE /etc/group.old
чего­нибудь (в SUSE попробуйте YaST, в Fedora – утилиты system- [15/Jun/2009 14:10:06] IN_MOVED_FROM /etc/group.tmpwsLtmN
config-...) и посмотреть, какие изменения она вносит в обще­ [15/Jun/2009 14:10:06] IN_MOVED_TO /etc/group
системные конфигурационные файлы. [15/Jun/2009 14:10:06] * /etc/group.tmpwsLtmN is moved to /etc/
Давайте переключимся на другой терминал и выполним: group
# touch /etc/issue [15/Jun/2009 14:10:06] IN_CLOSE_WRITE /etc/.pwd.lock
Мы использовали В результате на консоли с iwatch можно будет увидеть [15/Jun/2009 14:10:06] * /etc/.pwd.lock is closed
сценарий на Bash, следующее: В листинге видны следующие inotify­события:
но подойдет и лю­ [15/Jun/2009 14:08:02] IN_CLOSE_WRITE /etc/issue IN_CREATE – был создан файл или дирек тория;
бой другой язык [15/Jun/2009 14:08:02] * /etc/issue is closed IN_MOVED_FROM\IN_MOVED_TO – файл перемещался (откуда
программирования: Рассмотрим более сложный пример: разберемся, что происхо­ и куда),
Python, Perl дит при создании нового пользователя командой IN_DELETE – файл был уда лен,
и даже C�
# useradd testuser IN_CLOSE_WRITE – файл был закрыт после открытия в режи­
Вывод iwatch здесь будет куда более ме для записи.
многословным: Из вывода iwatch становится ясно, какие файлы создава лись/
[15/Jun/2009 14:10:06] IN_CREATE /etc/ перемеща лись/уда лялись во время выполнения команды useradd.
passwd.tmpZRwKCR В целом, картина известная: изменяются файлы /etc/passwd,
[15/Jun/2009 14:10:06] IN_CLOSE_WRITE / /etc/shadow и /etc/group, а их старые копии сохраняются в /etc/
etc/passwd.tmpZRwKCR passwd�old, /etc/shadow�old и /etc/group�old, соответственно. А вот
[15/Jun/2009 14:10:06] IN_DELETE /etc/ про существование файла /etc/�pwd�lock я, например, не знал.
passwd.old Кстати, обратите внимание, как происходит изменение фай­
[15/Jun/2009 14:10:06] * /etc/passwd.old лов. Содержимое не перезаписывается: вместо этого создает­
is deleted ся новый временный файл, в который вносятся все необходимые
[15/Jun/2009 14:10:06] IN_CREATE /etc/ строки, после чего он переименовывается. Помните споры во­
passwd.old круг проблем с отложенной записью в ext4? Отрадно понимать,

70 Linux Format Август 2009


iwatch и incron Учебник

по событиям
что useradd (как, впрочем, и все грамотно написанные приложе­ неизвестных форматов остаются
ния Unix) этой проблеме не подвержен. на рабочем столе. Кроме этого,
Получив представление о событиях Inotify, приступим к на­ результат и ошибки обработки
стройке службы incron. последнего файла сохраняют­
ся в /tmp/Download_Sort�log для
inПопланируем: incron проверки и тестирования рабо­
Что же такое incron? Это – вариация службы Сron, выполняющая ты скрипта. Сообщения служ­
за дания по событиям Inotify, а не по таймеру. Давайте реа лизуем бы incrond можно так же про­
при его помощи автоматическую сортировку по типам для фай­ смотреть в системном журна ле
лов, сбрасываемых на рабочий стол пользователя testuser: музы­ (/var/log/messages или ана ло­
ка – в один ката лог, фотоснимки – в другой, и так да лее. гичном). Они имеют стандарт­
Для этого создаем правило incron, запустив следующую ный вид:
Аккуратный рабо­
команду: Jun 15 14:36:11 hostname incrond[4728]: (root) CMD (/usr/local/
чий стол — не глав­
# incrontab ­e bin/Download_Sort.sh Pinguins.zip) ное в этом примере�
и набрав такую строку: Теперь созда дим /home/testuser/Desktop/Downloads и соответ­ Главное — возмож­
/home/testuser/Desktop IN_CREATE /usr/local/bin/Download_ ствующие под дирек тории для разных типов файлов: ность автоматизи­
Sort.sh $# mkdir ­p /home/testuser/Desktop/ ровать рутинные
Таким образом, мы будем отслеживать событие In_CREATE Downloads/_{Video,Pics,eBooks,ZIPs} задачи�
(появление нового файла или дирек тории) в ката логе /home/ Установим права, необходимые для запуска скрипта и для нор­
testuser/Desktop, и в случае, если оно произойдет, запускать мальной работы пользователя с его ката логами:
скрипт /usr/local/bin/Download_Sort�sh, передавая ему в качестве chmod a+rx /usr/local/bin/Download_Sort.sh
аргумента имя созданного файла (оно, согласно документации chown ­R testuser /home/testuser/Desktop/Downloads
incron, хранится в переменной $#). И, наконец, запустим службу, которая будет отслеживать для
Да лее, создаем сам сценарий /usr/local/bin/Download_Sort�sh: нас события: Скорая
помощь
#!/bin/bash /etc/init.d/incron start
DIR=/home/testuser/Desktop Ее можно добавить и в автозапуск, если вы хотите, чтобы она са­ Вместо редак­
{ мостоятельно стартова ла после перезагрузки компьютера: тора по умолча­
echo “File: $i” chkconfig incron on нию (Vim) правила
incron можно вво­
case “$1” in Вот и всё: теперь можно сбрасывать на рабочий стол (в ката лог
дить при помощи
*.avi|*.flv|*.vob) /home/testuser/Desktop) различные файлы и смотреть, что с ни­ любого другого,
mv ­v “$DIR/$1” $DIR/Downloads/_Video ми происходит. предварительно
;; Для наглядности, здесь приведен достаточно простой вариант выполнив коман­
ду вроде export
*.png|*.gif|*.jpg) скрипта. Желающие могут написать свой или расширить пред­
EDITOR=gedit
mv ­v “$DIR/$1” $DIR/Downloads/_Pics ложенный: например, добавив действия для RPM (установка или или export
;; прописывание в локальный репозиторий), JAR (перенос на смарт­ EDITOR=mcedit.,
*.pdf|*.djvu) фон), EXE (проверка антивирусом), WAR (их – Tomcat’у), FLV (пере­ то есть установив
mv ­v “$DIR/$1” $DIR/Downloads/_eBooks кодирование в AVI), MP3 (в Ogg) и т. д., и т. п. переменную окру­
жения $EDITOR.
;; Кроме того, с помощью incron можно легко реа лизовать сле­
*.zip) дующие идеи:
newDIR=”$DIR/Downloads/_ZIPs/${1%.*}” Забыть про перезапуск сервисов после правки файлов конфи­
mkdir “$newDIR” гурации– этим займется incron, следящий за их изменением.
sleep 20; while [ ­f “$DIR/$1.part” ]; do Реа лизовать свою достаточно гибкую службу квот и аудита.
sleep 5; done Автоматически добавлять в свою web­галерею папку с картин­
unzip “$DIR/$1” ­d “$newDIR/” ками при копировании, например, в /srv/www/htdocs/images.
mv ­v “$DIR/$1” “$newDIR/” Уверен, вы сможете придумать и свои собственные способы
chown ­R testuser “$newDIR” для удобного использования данного инструмента.
;;
*)
echo “ ­ None” Выбор есть всегда
;;
esac Ра зу меется, ваше взаимодействие с Inotify Inotify2, web­программистам – php5-inotify...
} &> /tmp/Download_Sort.log не ог раничивается iwatch с incron: в Linux есть модуль Inotify есть да же в Compiz! В скрип­
Принцип его работы очень прост: файлы распознаются по весь необходимый инст ру ментарий. Про­ тах удобно поль зоваться ути ли той inotifywait
расширениям (при желании сделать скрипт более «интеллек­ граммистам на C обычно достаточно под­ из пакета inotify-tools – как следует из на зва­
ключить заголовочный файл <linux/inotify� ния, она позволяет приос тановить сценарий
туальным» можно использовать команду file). Видеоролики пе­ h>, разработ чикам на Perl и Python приго­ в ожидании какого­либо собы тия фай ловой
ремещаются в папку _Video, картинки – в _Pics, документы PDF дятся пакеты python-pyinotify и perl-Linux- сис темы.
и DjVu – в _eBooks, Zip­архивы распаковываются в _ZIPs, файлы

Август 2009 Linux Format 71


Ping Создадим собственный клон самой
популярной диагностической утилиты

Linux: Сетевой
Изобретать велосипед – задача неблагодарная, а вот разбирая готовый велоси­
пед, можно узнать много нового и полезного. Артем Коротченко напишет для вас
утилиту Ping.

Д
авайте вспомним самое нача ло истории нашей люби­ случая (TCP/IP) они объединены в четыре. Ка ж дому уровню со­
мой операционной системы. В 1991 году один простой, ответствуют протоколы – языки, благодаря которым узлы сети
но весьма смышленый финский студент опубликовал понимают друг друга.
исходные коды первой версии ядра своей собственной ОС. Тогда В самом простом смысле взаимодействие двух систем пред­
она была еще неработоспособной и не особо полезной на прак­ ставляет собой чередование элек трических импульсов; для Wi­
тике, однако эксперимент по созданию первого свободного Unix Fi — передачу модулированного ра диосигна ла. Но могут быть
Наш заинтересовал определенные круги программистов. да же механические/акустические вибрации: во всех трех случа­
эксперт Удивительно, что все нача лось не с закрытой разработки ка­ ях речь идет об уровне доступа к сети (Network Interface Layer).
артем кой­нибудь коммерческой организации, а с сообщения в пуб­ О связанной с ним информации говорится как о наборе кадров;
Коротченко личной телеконференции Usenet. Само по себе это уже является в качестве протоколов здесь фигурируют Ethernet, PPP.
Интересуется низ­
коуровневым про­ нонсенсом в индустрии программного обеспечения нача ла девя­ Физические сигна лы несут в себе некие потоки данных (элек­
граммированием, ностых. Однако я назвал Linux сетевым проек том да же не пото­ тронное письмо, закачка файлов по FTP, онлайн­телевидение),
встраиваемыми му, что он – дитя Интернета. К настоящему времени Linux прошел суть которых второму хосту разобрать пока что нереально. А глав­
системами, а так­ огромный путь, но до сих пор является плодом труда тысяч ха­ ное, неизвестно, кому они адресованы. Ведь очевидно, что меж­
же приспособ­
керов­энтузиастов. До сих пор его разработка не центра лизова­ ду обменивающимися системами всегда будут единицы, десятки
лением для них
свободных ОС. на (не имеет лидера), из чего следует второй смысл утверждения, и сотни посредников; не будет их только в соединении напрямую.
вынесенного в заголовок: Linux – сетевой, в смысле децентра ли­ Поэтому кадры сопровож даются адресами: исходным и полу­
зованный, проект. чателя. Тогда говорится уже о втором, межсетевом уровне (Internet
Итак, Сеть объединила самых та лантливых людей со всего ми­ Layer), за дача которого заключается в маршру тизации передавае­
ра в работе над одним общим делом, с великой и благородной це­ мых данных до точки назначения. Об информационных потоках
лью. Естественно, первокласс­ теперь говорится не как о по­
ная под держка Интернета
и сетевого взаимодействия
«Обмен информацией следовательности битов, а как
о датаграммах. Протокол, при­
в такой системе должна была
стать одной из важнейших
между хостами – званный распознавать адре­
са в любых датаграммах – IP
ее особенностей. Понять, на­ сложный процесс.» (по правде сказать, есть еще
сколько верно это предполо­ MAC­адреса в Ethernet­заго­
жение, можно, оценив лишь тот факт, что многие (если не боль­ ловке, но сегодня они нас не интересуют). ICMP­протокол (диа­
шинство) серверы в Интернете работают под управлением Linux. гностические сообщения, ошибки) так же относится к межсете­
Сетевая суть Linux отразилось и на писавшемся для него при­ вому уровню.
кладном ПО. Да же те игровые серверы, клиентские части кото­ Да лее производится проверка. Если адрес стороны, получив­
рых рассчитаны на Windows, в большинстве своем написаны для шей пакет, не совпа дает с адресом назначения, система передает
Linux. Нет сомнений в изобилии серверов Web, почты, FTP, DNS... его дальше по сети. Таким образом, выше второго уровня чу жие
Количество клиентских приложений и вовсе неисчислимо. пакеты никогда не поднимаются. Если адреса совпа дают, то мож­
Рож денный в Сети, Linux моментально обзавелся собственной но уже думать, какому именно локальному сервису предназнача­
реа лизацией интернет­протоколов. Освоить программирование ется содержимое пакета. Для этого он поднимается на транспорт­
в Linux – это значит научиться писать для него сетевое ПО. ный уровень (Host­to­Host Layer). По IP­заголовку вычисляется
тип пакета (TCP или UDP), и соответствующая подсистема чита­
Сетевое взаимодействие ет из этих данных свою ключевую информацию – порты отправ­
Самая популярная сетевая программа – это, пожа луй, web­кли­ ляющей и принимающей стороны. TCP­заголовки содержат так же
ент� Поэтому я снача ла думал написать ма ленький web­брау­ флаги­параметры (запрос разрешения на установление сеанса,
зер. Но в таком случае программировать бы пришлось только подтверждение сеанса, завершение и другие). В UDP­взаимодей­
HTTP­протокол, не спускаясь на нижние уровни. ствии не происходит установления стабильного сеанса, поэтому
Поэтому я остановился на всем известной утилите ping. Она этот протокол является более быстродействующим, но менее на­
легко реа лизуема, проста по су ти и основана на протоколе низ­ дежным (и от того менее популярным) ана логом TCP. В общем,
кого уровня (ICMP), что делает ее идеальной для нача ла разбира­ связка TCP и IP – это основа функционирования Интернета.
тельства в сетевом программировании. Но что такое уровни про­ Допустим, контрольные суммы совпа ли, никаких проблем
токолов? Что такое протокол? Глубоко ознакомиться с этой темой не возник ло. Теперь данными занимается подсистема приклад­
можно в Интернете (например, почитать документы RFC); я лишь ного уровня (Application Layer). Пакеты с 80­м TCP­портом будут
затрону самое необходимое. отправлены Web­серверу, с 21­го их получит FTP, 25­м займется
Обмен информацией меж ду двумя хостами – сложный про­ SMTP. Конечно, это произойдет, если соответствующие демоны
цесс. Меж дународная организация по стандартизации применя­ запущены, работают и не перенастроены на нестандартные пор­
ет для его описания семь универсальных уровней OSI. Для нашего ты. Иначе говорится, что порт закрыт, и тогда отправленные ему

72 Linux Format Август 2009


Сетевое программирование Учебник

проект Исходные тексты


minimalping

пакеты отбрасываются. (Это для сервера, клиентской стороне setsockopt(sp, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
слушать порты обычно не нужно.) setsockopt(sp, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size));
Поскольку ка ж дый уровень перед отправкой данных наверх За данный во входных параметрах IP (хост) представляет со­
убирает свой заголовок, ни одна из сетевых подсистем не знает бой строку, массив переменных типа char. Но этого ма ло, и нуж­
предыстории пакетов. Прикладному уровню достаются чистые но использовать специальные адресные струк туры servaddr, кото­
данные. Например, все, что увидит Web­сервер – это запрос на рые будут содержать более полную информацию об адресате.
выдачу некой страницы, а Jabber­сервер получит XML­код вида: struct hostent *hp;
<iq type='get' id='auth_некий md5- struct sockaddr_out servaddr;
хэш'><query xmlns='jabber:iq:auth'> ...
<username>имя пользователя, под которым клиент собирается /* iparg – указатель на аргумент с адресом (arv[]) */
войти в систему</username> hp = gethostbyname(iparg);
</query></iq> ...
В соответствии с протоколом прикладного уровня Jabber (пра­ /* Обнуляем структуру */
вильнее сказать, XMPP) он сгенерирует XML­ответ с просьбой вве­ bzero(&servaddr_out, sizeof(servaddr_out));
сти пароль. И теперь пойдет обратный процесс – формирование servaddr_out.sin_family = AF_INET;
пакета. Это сообщение будет спускаться с верхнего уровня к ниж­ servaddr_out.sin_addr = *((struct in_addr *) hp­>h_addr);
нему, снабжаясь заголовками с IP­адресами, контрольными сум­ Для получения пакетов нам потом пона добится еще одна такая
мами и прочими атрибу тами, а затем уйдет в Сеть. струк тура – sockaddr_in.
В нашей программе будет два типа сигна лов: информирую­
Приступим к делу щий о необходимости послать новый пакет (генерируется ка ж­
Вся суть ping сводится к тому, чтобы посылать на адрес прове­ дую секунду) и завершающий (например, по Ctrl+C). Назначим им
ряемого хоста запросы ICMP Echo­Request и получать (или функции­обработчики, за да дим таймер:
не получать) от него ответы ICMP Echo­Reply. Кроме того, утилита struct itimerval tval;
должна учитывать время за держки пакетов в сети. ...
Наша реа лизация будет не ху же оригина ла, за тем лишь /* Обнуляем значение интервала */
исключением, что вместо десятков входных параметров она су­ timerclear(&tval.it_interval);
меет понимать лишь самые важные: ­­help, ­­version, ­c и, конечно, /* Устанавливаем значение интервала ­ 1 секунду */
IP­адрес исследуемой системы. Аргумент «c» отвечает за коли­ tval.it_interval.tv_sec = 1;
чество запросов, которые нужно отослать. Если он не будет за­ /* Обнуляем значение времени срабатывания */
дан, приложение будет работать до тех пор, пока его не завершат timerclear(&tval.it_value);
вручную. Обработка аргументов целиком реа лизуется с помощью /* Устанавливаем его в 1 микросекунду */
функции getopt_long(), подробнее о которой вы можете прочитать tval.it_value.tv_usec = 1;
в номере LXF112. /* Связываем сиг нал таймера с функ цией­обработ чиком */
Помимо основных заголовков, нам нужны библиотеки сетевых (void) signal(SIGALRM, handler);
функций и струк тур пакетов: /* Связываем сиг нал завершения с функцией­обработ чиком */
#include <netdb.h> (void) signal(SIGINT, handler);
#include <netinet/ip.h> /* Запускаем таймер */
#include <netinet/ip_icmp.h> (void) setitimer(ITIMER_REAL, &tval, NULL);
Теперь можно создать сокет:
int socket(int domain, int type, int protocol); Прием и передача
Первым аргументом этой функции обычно выбирается констан­ Это были подготовительные действия. Теперь нужно отправлять
та PF_INET, означающая, что мы желаем работать с протокола­ и принимать пакеты. Первое возлагается на обработчик handler():
ми IPv4. void handler(int signo)
Чтобы получить доступ к транспортному уровню, вторым аргу­ {
ментом указывается SOCK_STREAM для соединений TCP и SOCK_ int losscount;
DGRAM для UDP. Третий аргумент всегда равен 0. Но чтобы фор­ struct icmp *icmp;
мировать ICMP­пакеты, нам ну жен межсетевой уровень, поэтому
будем использовать так называемые «сырые» сокеты:
sp = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP);
Можно идти дальше и за давать сокеты для доступа к заголов­
кам физического уровня (например, для работы с ARP­пакета­
ми, выявляющими соответствие меж ду IP­ и Ethernet­адресами),
но нам пока это не требуется.
Наш клиент
Разрешим широковещательные сообщения и увеличим раз­
отправляет что­то
мер приемного буфера: серверу (четырех­
int on = 1, size = 61440; уровневая модель
… TCP/IP)�

Август 2009 Linux Format 73


Учебник Сетевое программирование

char sndbuf[BUFSIZE]; while(1) {


if(signo == SIGINT) { /* Получаем пакет */
/* … Вывес ти ре зультаты ­ код опу щен … */ rcvlen = recvfrom(sp, rcvbuf, sizeof(rcvbuf), 0, (struct sockaddr
exit(0); *)&servaddr_in, &servaddr_in_len);
} if(rcvlen < 0) {
if(signo == SIGALRM) { if(errno == EINTR)
icmp = (struct icmp *) sndbuf; continue;
icmp­>icmp_type = ICMP_ECHO; fprintf(stderr, “%s: recvfrom() failed: %s\n”, myname,
icmp­>icmp_code = 0; strerror(errno));
icmp­>icmp_id = pid; return 1;
icmp­>icmp_seq = ++sntcount; }
gettimeofday((struct timeval *) icmp­>icmp_data, NULL); ip_len = ip­>ip_hl << 2;
icmp­>icmp_cksum = in_cksum((unsigned short *) icmp, 64); icmp = (struct icmp *) (rcvbuf + ip_len); // ICMP­заголовок идет
if(sendto(sp,sndbuf,64,0,(struct sockaddr*)&servaddr_out, после IP­заголовка
sizeof(servaddr_out))<0){ icmp_len = rcvlen – ip_len;
fprintf(stderr, “%s: sendto failed: %s\n”, myname, /* Продолжаем, только если получили ICMP Echo Reply пакет,
strerror(errno)); который предназначается
exit(1); именно нашей программе */
} if(icmp­>icmp_type == ICMP_ECHOREPLY && icmp­>icmp_id ==
fflush(stdout); pid) {
} rcvcount++;
} tsnd = (struct timeval *) icmp­>icmp_data;
Как видно, вторая часть функции занимается сигна лами тай­ /* Посчи таем время оборота пакета пу тем вычи тания вре­
мера. Ка ж дую секунду некая область оперативной памяти ком­ мен полу чения
пьютера объявляется буфером sndbuf, и в его бессмысленном и отправки пакетов. Секунды и мик росекунды мож но пе­
наборе байтов происходит формирование пакета. С помощью ука­ ревес ти
зателя последовательно заполняются поля ICMP­заголовка: в мил лисекунды и сложить. */
Тип и код выбираются такими, чтобы полученный пакет пред­ gettimeofday(trcv, NULL);
ставлял собой именно Echo Request. time = (trcv­>tv_sec­tsnd­>tv_sec)*1000+(trcv­>tv_usec­tsnd­
Поле id выставляется по возвращаемому значению функции >tv_usec)/(float)1000;
getpid() (это нужно, чтобы потом игнорировать сообщения Echo /* ... Вывод результатов на экран – код опущен ... */
Reply, предназначенные другим процессам). /* Ес ли обработано за данное количест во пакетов, заверша­
sequence – порядковый номер отправляемого пакета. ем программу */
Контрольная сумма рассчитывается по алгоритму из RFC с ис­ if(sntcount == c && c)
пользованием популярной реа лизации in_cksum(). handler(SIGINT);
В данные пакета записывается текущее время. Поскольку в от­ }
ветах они будут дублироваться, мы сможем определять время от­ }
клика хоста. Нам не ну жен доступ к IP­заголовку, а потому его за­ Тут перед нами стоит противоположная за дача. В буфер rcvbuf
полнение доверяется системе. записываются принимаемые из Сети данные, и нужно выделить
Теперь, когда имеется открытый сокет, заполненная адресная в нем струк туры сетевых заголовков. Буфер начинается с IP­за­
струк тура и подготовленный пакет, функция sendto() отправляет головка, одно из полей которого харак теризует его размер. Об­
его в Сеть. ратившись к этому полю, легко определить, где кончается часть
Прием сообщений производится в бесконечном цик ле main(): IP и начинается заголовок ICMP. Длина последнего необходима
int rcvlen; для вывода строки результатов, определяется она еще проще –
int servaddr_in_len = sizeof(servaddr_in); до конца буфера.
/* Длины заголовков */ С определением нача ла ICMP­заголовка нам становятся
int ip_len, icmp_len; доступны его поля, которые мы сразу же и проверяем. Если все
/* Буфер для полученного пакета */ в порядке – получен пакет Echo Reply, притом предназначающий­
char rcvbuf[BUFSIZE]; ся нашему процессу – значит, счетчик полученных ответов мож­
/* Время оборота пакета в миллисекундах */ но увеличить на единицу. Обновляем статистику, и затем выводим
float time; промежу точные результаты. Все! Полные исходные коды ищите
/* Указатель на IP­заголовок */ на DVD.
struct ip *ip;
/* Указатель на ICMP­заголовок */ А если проще?
struct icmp *icmp; Написание сетевых приложений можно упростить, воспользо­
/* Структура времени получения пакетов */ вавшись популярными библиотеками libpcap и libnet (доступ­
struct timeval trcvbuf; ными, кстати, не только в Linux и Unix)� Первая предоставляет
/* Указатели на структуры времени получения и отправки простой интерфейс для обработки входящего трафика, вторая
пакетов */ предназначена для создания пакетов перед их последующей
struct timeval *trcv, *tsnd; отправкой.
struct itimerval tval; У такого под хода есть свои плюсы и минусы. С одной сторо­
... ны, мы теряем абсолютную свободу в программировании сети
trcv = &trcvbuf; и выну ж даем себя таскать эти библиотеки вместе с приложением,
/* Пакет начинается с IP­заголовка */ с другой – значительно облегчаем свою жизнь и уменьшаем веро­
ip = (struct ip *) rcvbuf; ятность допустить ошибку в коде.

74 Linux Format Август 2009


Сетевое программирование Учебник

Что касается ping, то пользы от переписывания этой утили­


ты «простым пу тем» прак тически нет. libpcap в цик ле main() об­ Прослушивание в Сети
рабатывал бы входящие эхо­ответы. Ра ди интереса посмотрим,
как libnet сформирует нам эхо­запрос. Добавим соответствующий Можно ли посмотреть внутреннее устрой­ с его MAC­адресами и указанием на то, что
заголовок: ство пакетов, «потрогать» их? Да, можно ана­ это IP­пакет. Как вы помните, мы не трога ли
#include <libnet.h> лизировать весь сетевой трафик, восполь­ физический уровень. Да лее идет IP­заголо­
зовавшись программой­сниффером. Таким вок, для которого мы выбира ли лишь IP­ад­
Все последующие изменения касаются обработчика handler(),
образом вы не только проверите все, о чем рес назначения. Последующий ICMP­заголо­
ведь именно он занимается отправлением пакетов. С помощью рассказывается в этой статье, но, возмож­ вок мы заполняли самостоятельно: тип, код,
функции libnet_init() производим инициа лизацию сеанса: но, к вам придет внезапное озарение вместе контрольная сумма, ID, Sequence. Знакомо?
libnet_t *l; с глубоким пониманием основ Интернета. Если разобраться с последними 56 байтами
l = libnet_init(LIBNET_RAW4, NULL, errbuf); Вероят но, в вашей системе уже есть собственно данных, увидим, что в них содер­
tcpdump и netstat — клас сические ути ли ты жится системное время – мы определяли его
if(l == NULL)
Unix. Послед няя, хоть и не яв ляется ана ли­ функцией gettimeofday().
{ за тором трафика, вы даст мас су по лезной Более подробную информацию о Wire-
fprintf(stderr, “%s: libnet_init() failed: %s\n”, myname, errbuf); информа ции обо всех входящих и исхо­ shark ищите на с. 42.
exit(1); дящих соединениях. Ес ли для вас ва жен
GUI, сле дует обра тить внимание на ettercap
}
и особенно на Wireshark (ранее на зывав­
Библиотека позволяет работать со всеми сетевыми уровнями шийся Ethereal).
и создавать любые заголовки. Мы просто за даем нужные в тэгах Давайте посмотрим на него побли­
протоколов и заполняем их поля: же. Установить программу можно через
libnet_ptag_t ip, icmp; менед жер пакетов вашего дистрибу тива. От­
кройте ее, настройте на прослушивание нуж­
u_char data[BUFSIZE]; // Буфер поля данных
ного интерфейса (в моем слу чае это wlan0).
char errbuf[LIBNET_ERRBUF_SIZE]; // Буфер ошибок Запустите наш ping – и, как ожида лось, в ок­
gettimeofday((struct timeval *) &data, NULL); // Записываем вре­ не перехваченного трафика можно будет уви­
мя в данные деть череду пакетов ICMP Echo­Request
и ICMP Echo­Reply.
icmp = libnet_build_icmpv4_echo(ICMP_ECHO, /* Тип */
В нижнем окошке показывается некая
0, /* Код */ последовательность байтов – это шестна д­
0, /* Кон трольная сумма */ цатиричное представление отправленного Wireshark может разобрать отправ­
pid, /* ID */ эхо­запроса; в среднем – она разбирается по ленный нашей программой пакет
++sntcount, /* Номер очереди */ протоколам. Первым идет Ethernet­заголовок «по косточкам»�
data, /* Ука затель на данные */
56, /* Длина данных */
l, /* Ука затель на libnet_t */ {/* Выдать ошибку */}
icmp); Пакет готов, его мож но от править, а сеанс завершить.
if(icmp == ­1) if(libnet_write(l) == ­1) {/* Выдать ошибку */}
{ libnet_destroy(l);
fprintf(stderr, “%s: can't build ICMP header: %s\n”, myname,
libnet_geterror(l)); Проверка боем
exit(1); Скомпилируем утилиту. Никаких специальных ключей (если,
} конечно, вы не используете libpcap или libnet) для этого не потре­
Как видно, выгода по сравнению с предыдущим под ходом все же буется. Просто наберите:
есть: теперь нам не нужно считать контрольную сумму, libnet зай­ gcc ­o minimalping minimalping.c
мется ею сам. Мы так же доверим ему заполнение IP­заголовка, Преж де чем выполнить полученный файл, запомните: созда­
самостоятельно указав лишь IP хоста. вать raw­сокеты могут только приложения, запущенные привиле­
ip4 = libnet_autobuild_ipv4(LIBNET_IPV4_H + LIBNET_ICMPV4_ гированным пользователем. Чтобы все остальные смогли поль­
ECHO_H + 56, /* Длина */ зоваться программой, необходимо выбрать ей вла дельца root,
IPPROTO_ICMP, /* Протокол */ а так же установить для нее SUID­ или SGID­бит. Теперь можно
destaddr, /* IP сравнить результаты работы с оригинальным ping (см. рисунок).
на значения */ Ну вот, а прошлая версия ping не отлича лась совсем! Дело
l); /* Ука за­ в том, что я перешел на Debian Lenny, и теперь для достижения
тель на libnet_t */ абсолютной идентичности придется вновь править код: добавить
if(ip4 == ­1) выходные параметры mdev и time. Оставляю вам это в качестве Штатная и разра­
{ домашнего за дания. ботанная нами ути­
fprintf(stderr, “%s: can't build IP header: %s\n”, myname, Мы затронули лишь частичку удивительного мира. Програм­ литы ping: найдите
одно отличие�
libnet_geterror(l)); мирование низких уровней сте­
exit(1); ка TCP/IP открывает в нем без­
} граничные возможности: черные
Кстати, IP­адрес назначения тоже обрабатывается из аргумен­ ходы, сканеры, черви, снифферы,
та немного легче, без заполнения струк туры hostent (а потом еще или, по другую сторону баррика­
и sockaddr_in – как это было раньше). ды, honeypot­системы, бранд­
u_long destaddr; мауэры и межсетевые экраны.
if((destaddr = libnet_name2addr4(l, iparg, LIBNET_RESOLVE)) == C, особенно в связке с Linux, дает
­1) доступ к этим уровням.

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


Август 2009 Linux Format 75
Хаки и трюки Несколько полезных приемов
улучшат ваши Linux-приложения

Кодируем: Цвета
В очередном выпуске сборника советов для программистов
Андрей Боровский затронет выполнение программ с правами root
и управляющие последовательности терминала.

Е
два ли в наших программистских (и администраторских) ем взаимодействии с системой программа будет использовать
рядах сыщется человек, незнакомый с командой su. Вопре­ права действительного вла дельца.
ки распространенному заблу ж дению, эта аббревиатура оз­ Проблема, которую нам предстоит решить, заключается в том,
начает не «super user» (что в английском языке вообще одно сло­ что мы хотим предоставлять право запуска программ с установ­
во), а «switch user», хотя используется данная утилита, в основном, ленным флагом setuid не ка ж дому пользователю, а только тому,
как раз для временного получения привилегий root. Но сегодня кто знает пароль root. Возникает вопрос: зачем такому пользо­
нас будет интересовать не этимология, а ее внутреннее устрой­ вателю вообще нужны setuid­программы, ведь он может просто
Наш ство: выполнение какой­либо операции «руками суперпользова­ зайти в систему как root? На самом деле, возможность запускать
эксперт теля» – столь распространенная за дача, что не грех научиться ре­ setuid­программу и удобна (не нужно специально ка ж дый раз ре­
андрей шать ее более­менее стандартным образом. гистрироваться в системе), и безопасна – пользователь проводит
Боровский Помимо безопасности и на дежности, наши приложения в режиме root минимум времени.
Программирует
(пусть да же консольные) должны быть по возможности краси­ Таким образом, классическая схема авторизации пользовате­
на Pascal с 14 лет,
разрабатывает ПО выми. В завершение этого урока мы еще раз коснемся вывода ля в setuid­программе выглядит так: приложение, запущенное не­
для Linux с 2001 на экран цветного текста, на сей раз – не используя ничего, кро­ ким пользователем с действительными правами root, запрашива­
года. Всегда готов ме чистого C. ет у пользователя пароль root. Если введен правильный пароль,
поделиться сво­
программа предоставляет пользователю возможность выполнить
им богатым опы­
том с читателя­ Как root требуемые действия, в противном случае ему пред лагается по­
ми LXF. Все вы, конечно, имели дело с программами, которые позволя­ вторить попытку ввода пароля. Как видим, программы, запраши­
ют полу чить доступ к некоторым возможностям root, не поки­ вающие у пользователя пароль root, не становятся программами
дая учетной записи обычного пользователя: взять ту же su. При­ суперпользователя в результате ввода пароля – они являются та­
мерами таких приложений могут так же слу жить утилиты для ковыми с самого нача ла. Поскольку пользователь, запустивший
настройки оборудования и установки программного обеспече­ программу с установленным флагом setuid root, уже фак тически
ния. Внешне все выглядит так, как будто пользователь запуска­ имеет те права, которые он хочет получить, программы, предна­
ет обычную программу, вводит пароль root и становится (внутри значенные для подобного применения, должны быть написаны
этой программы) суперпользователем. На самом деле, все обсто­ максимально аккуратно, чтобы запускающий их человек не мог
ит немного иначе. обойти механизм ау тентификации и получить привилегии root,
Вла дельцем любого процесса (экземпляра программы) по не зная пароля (см. врезку). Отметим так же, что новейшие сред­
умолчанию является запустивший его пользователь. Права про­ ства ау тентификации пользователей (PolicyKit) физически раз­
цесса на доступ к файлам, привилегированным функциям API деляют код, выполняющий ау тентификацию, и код, выполняю­
и другим объек там системы определяются правами вла дельца щий привилегированные действия. Впрочем, этот вопрос выходит
процесса. Соответственно, любая программа, запущенная поль­ за рамки данной статьи.
зователем root, получает максимальные полномочия. Разра­
ботчики Unix довольно быстро почувствова ли, что переходить
из одной учетной записи в другую ка ж дый раз, когда пользова­
телю требуется выполнить особые действия, неудобно, и приду­
ма ли расширенные флаги прав доступа setuid и setgid. Если эти
биты установлены, вла дельцем процесса считается вла делец
файла программы (а не пользователь, который запустил про­
цесс). Иначе говоря, если некий исполняемый файл принад лежит
пользователю root и для него установлен флаг setuid, то незави­
симо от того, какой пользователь создаст из этого исполняемо­
го файла процесс, он получит такие же права, как если бы его
запустил root. При этом система не забывает, кто запустил про­
цесс на самом деле. Для всех процессов система хранит два на­
бора идентификаторов пользователя и группы – действитель­
ные (effective) и фак тические (real). Если пользователь vpupkin
запустит программу с установленным битом setuid, причем вла­
дельцем файла программы является root, действительным хо­ Kdesu — еще один способ выполнить какую­либо задачу
зяином процесса ока жется root, а фак тическим – vpupkin. В сво­ от имени root, знакомый всем пользователям KDE�

Месяц назад Мы избавлялись от ошибок в программах, используя GNU Debugger.


76 Linux Format Август 2009
Советы программистам Учебник

для паролей Исходные тексты


рассмотренных
здесь программ

Время кодировать
За время существования Unix и Linux способов ау тентифика­ Пароль под контролем
ции пользователя было придумано нема ло, но в основе всего по­
прежнему лежит старый добрый файл зашифрованных паро­ Функция read_pwd() играет в нашей програм­ максимально ограничива ли свободу действий
лей. Именно с работы с ним мы и начнем. ме слу жебную роль; тем не менее, она го­ да же тех пользователей, которые прошли
Ниже приводится листинг программы goroot. Она запрашива­ раздо длиннее, чем auth_root(). Функция, процедуру ау тентификации. Разумеется, ог­
ет у пользователя, запустившего ее, пароль root, и если он пра­ пред лагающая ввести пароль, зачастую ста­ раничивать свободу действий пользователя,
новится первым объек том атаки злоумыш­ который действительно знает пароль root,
вильный, создает файл rootfile, вла дельцем которого будет root
ленников. Если взломщику удастся обма­ бессмысленно, но никогда не следует исклю­
(а не пользователь, запустивший программу). Потом програм­ нуть ее, он полу чит доступ к программе, чать возможность проникновения «пользова­
ма временно отказывается от прав root и создает файл userfile, не зная пароля. Ху же того, в некоторых слу­ теля с черного хода».
вла дельцем которого будет пользователь, запустивший програм­ ча ях взломщик, сломавший функцию ввода Функция read_pwd() делает все возможное
му (во всем этом можно убедиться с помощью команды ls ­al). пароля, может полу чить да же более широкие для того, чтобы пользователь не мог ее обой­
права, чем те, которые предоставляет данная ти. Сколько бы символов ни ввели с клавиату­
Затем программа возвращает себе полномочия root и создает программа по умолчанию: например, команд­ ры, буфер password будет заполнен не более
файл rootfile2, вла дельцем которого снова оказывается root. ную строку суперпользователя. По этой при­ чем buf_size символами. Вводимые символы,
#define _XOPEN_SOURCE чине очень важно, чтобы suid­программы естественно, не отобра жаются на экране.

#include <stdlib.h>
#include <stdio.h> {
#include <signal.h> char * epasswd;
#include <termios.h> struct spwd *spwd;
#include <unistd.h> spwd = getspnam(“root”);
#include <sys/types.h> epasswd = crypt(password, spwd­>sp_pwdp);
#include <shadow.h> return !strcmp(epasswd, spwd­>sp_pwdp);
#include <sys/types.h> }
#include <pwd.h>
#include <sys/stat.h> #define BUF_SIZE 16
#include <fcntl.h>
int main(void)
void read_pwd (char * password, int buf_size) {
{ char password[BUF_SIZE];
char ch; int result = 0;
int i; if (geteuid() != getuid()) {
if (!isatty(fileno(stdin))) { read_pwd(password, BUF_SIZE);
password[0] = 0; result = auth_root(password);
return; }
} else result = 1;
struct termios oldsettings, newsettings; if (result) {
tcgetattr(fileno(stdin), &oldsettings); int rootuid = geteuid();
newsettings = oldsettings; printf(“Теперь Вы root\n”);
newsettings.c_lflag &= ~(ECHO|ICANON|ISIG); open(“rootfile”, O_CREAT|O_EXCL);
newsettings.c_cc[VMIN] = 0; seteuid(getuid());
newsettings.c_cc[VTIME] = 0; setegid(getgid());
tcsetattr(fileno(stdin), TCSANOW, &newsettings); printf(“А теперь ­ нет\n”);
i = 0; open(“userfile”, O_CREAT|O_EXCL);
printf(“Введи те пароль\n”);
while((ch = getchar()) != '\n') {
if ((i<buf_size­1) && (ch != EOF)) {
password[i] = ch;
i++;
}
}
password[i] = 0; Наше первое при­
ложение� Смотреть
tcsetattr(fileno(stdin), TCSANOW, &oldsettings);
не на что, но так
} и задумано: кто же
выводит пароль
int auth_root(char * password) root на экран?

Август 2009 Linux Format 77


Учебник Советы программистам