) 6 2 0 с. 84 с. 8 0 (

2

8 т с № №8 (82) у г в а август 2006 DVD Сторона 1 SUSE 10.1 Сторона 2 OpenSource Format 5.0 БИТРИКС X6L.0.2 Kororaa СОЗДАЙ 3D-ИГРУ Напиши стрелялку на C++ – с этогоначни номера! на

c. 42 c. с. 69 с. 117 Железная безопасность

l

на SofTool/Linuxland – на SofTool/Linuxland - на LinuxWorld ПРИГЛАСИТЕЛЬНЫЕ БИЛЕТЫ ПРИГЛАСИТЕЛЬНЫЕ для читателей нашего журнала: • • c. 56 c. c. 38 c.

Полная версия Полная Мгновенный поиск

l

Тайных кладовТайных десятка о существовании приложений, Горячая и необходимости которых вы даже не догадывались! SUSE 10.1

ЧИТАЮТ ВСЕ ПОЛЬЗОВАТЕЛИ ВСЕ ПОЛЬЗОВАТЕЛИ ЧИТАЮТ

LXF ИНТЕРВЬЮ 3D-интерфейс Получите все заявленные функции Vista сегодня – в Linux! Чем Linux Vista круче Коэн Стюарт право защищает Торвальдса Линуса Шеф Microsoft присоединиться к OSDL 10 LXF8(82) Linux Format Август 2006 l LINUX ПРОТИВ VISTA l ТАЙНЫЕ КЛАДЫ l FREEBSD 6.1 l СРАВНЕНИЕ ТЕРМИНАЛОВ l GIMP ИЗНУТРИ l СТЮАРТ КОЭН l TENOR l SUBVERSION НА РАБОТЕ И ДОМА ПРИВЕТСТВИЕ

Microsoft, айда с нами!

Мы нечасто упоминаем Microsoft на страницах нашего журнала, и не К вашим услугам... потому, что находимся с ней в жесткой конфронтации – просто В этом месяце мы задали Команде LXF формат Linux Format и активное сообщество читателей не дают следующий вопрос: отвлекаться от основной темы. Однако, в текущем выпуске мы Каково, по-вашему, секретное оружие Linux в битве с Vista? решили нарушить эту традицию. И тому имеются веские причины. Во-первых, не за горами выход Windows Vista. Сложившаяся обстановка напоминает середину 90-х: в техническом плане Linux уже тогда был способен с конкурировать с однозадачным MS-DOS и Windows 3.1, однако, отсутствие поддержки со стороны крупных компаний вывело на первые позиции совсем другую систему. Сегодня мы имеем ту же ситуацию – разве что за Linux теперь Пол Хадсон Грэм Моррисон Ну, это просто. Крылья А зачем нам секретное стоят серьезные игроки. В том, что Linux в техническом смысле способен дать Тукса защищают не хуже оружие? Vista – по фору Vista, сомневаться не приходится, а если вас все же гложет неуверенность – стали определению, что-то далекое, что отодвигается прочитайте спецрепортаж этого номера. Подозреваю, что завидев его самый от нас по мере нашего приближения к нему. закоренелый хакер из застенков Microsoft может от огорчения съесть свою накладную бороду. Кстати, о застенках. Об интерьере зданий Microsoft ходят самые разные слухи. Поговаривают, что в комнатах для отдыха сотрудников там развешаны Эфрейн Эрнандес- Мендоса мишени дартс с портретом Линуса Торвальдса, а под потолком висят камеры Любовь... И гранатомет, нацеленный прямо в пингвинодетекторов. Со свойственной нам прямотой заявляем – либо эти слухи гордость Билла Гейтса Майк Сондерс не соответствуют действительности, либо система туксобезопасности Microsoft Я думаю, Linux упрощает основные парадигмы до сих пор работает под управлением Windows 95. Так или иначе, наш штатный электронной коммерции и обладает динамическим литературный редактор Елена Толстякова, гостившая в Редмонде по личным TCO делам, не только без проблем пронесла в здание Microsoft этот номер Linux Format, но даже отредактировала там большую часть материалов. Да, вы не

Ребекка Смолли ослышались – этот номер журнала был подготовлен к печати прямо под носом у Бизнесмены, готовые Билла Гейтса! И если это как-то отразилось на качестве материалов, то только в превратно истолковать MS: все эти фирмы, лучшую сторону. консультанты и прочие, Наконец, мы протянули руку помощи нашим товарищам, работающим в пытающиеся убедить Эндрью Грегори предприятия попробовать Да кому это надо? Ух, глубоком тылу врага. Не имея возможности показать свое истинное лицо, они FOSS вращающийся куб! Ах, дрожащие окна! Блеск! разрушают проприетарную систему изнутри, подсовывая закоренелым пользователям Windows открытые программы. Специально для них мы разместили на второй стороне DVD сборник открытого ПО для Windows – Open Source Format. Джоно Бэкон Таким образом, открыв августовский номер Прозрачность и тот факт, LXF, вы приобрели в свой арсенал мощное что у нас нет секретов. Марк Бейн Если бы они были, я бы ни Секретное оружие? Одно оружие. Используйте его по своему за что не сказал вам, что слово – Microsoft. Просто по выходным Пол откиньтесь на спинку рассмотрению и... пусть расцветают все цветы. превращается в Паулу. Ой! кресла и ждите еще одной волны переходов на Linux

С уважением, КАК С НАМИ СВЯЗАТЬСЯ ВАЛЕНТИН СИНИЦЫН Нейл Ботвик главный редактор LinuxFormat в России Vista – это узкий взгляд на Письма для публикации: проблему, так что Linux Энди Ченнел автоматически Доступность, [email protected] функциональность, цена, превращается в решение Подписка и предыдущие номера: для тех, кто не носит безопасность, приложения, наглазники. Не говоря уж о сообщество, LXF, толстый [email protected] том, что для Vista нужна пингвин, гибкость – я могу МИССИЯ ЖУРНАЛА Visa. говорить долго. Техническая поддержка: [email protected] • Пропаганда свободного ПО в России Проблемы с дисками: • Продвижение решений с открытым кодом в [email protected] бизнес-сообществе Общие вопросы: [email protected] • Поддержка российского Open Source Website: www.linuxformat.ru сообщества • Организация трибуны для разработчиков Адрес редакции: Россия, свободного ПО Санкт-Петербург, ул. Гончарная, 23, офис 54 • Обратная связь между разработчиками и Телефон редакции: (812) 717-00-37 потребителями ПО Дополнительная информация на стр.134

www.linuxformat.ru LXF8(82) АВГУСТ 2006 1 Содержание Добро пожаловать в LinuxFormat – ваш гид в мире Linux! LXF8(82) АВГУСТ 2006

ЧИТАЙТЕ В ЭТОМ ВЫПУСКЕ LINUX ПРОТИВ VISTA: НАШИ БЬЮТ! 42 Microsoft начала маркетинговую компанию... Но Linux уже далеко впереди! 48 Потрошим Gimp Исправления ошибок для начинающих: почему бы вам не помочь сообществу? 56 Тайные клады Самая секретная сокровищница Open Source 60 Жизнь в Subversion Получите максимум от своей домашней директории 84 Программирование 3D-игр Вам будет, за чем убить время в ближайшие несколько месяцев

38 Стюарт Коэн собственной персоной

«SymphonyOS, несомненно, «Оно не хотел говорить об этом. К самая оригинальная из ныне счастью, никто не может устоять существующих настольных перед LXF!» ОС.» ВСЛУХ МЫСЛИ

14 Заинтригованы? Переходите к рубрике 36 Вдвойне заинтригованы? Джоно Бэкон >> DistroWatch Ладислава Боднара расставит все по местам

2 LXF8(82) АВГУСТ 2006 www.linuxformat.ru На диске Целый DVD интересных программ 128

04 Новости 64 Человек ищущий Qt и NTFS Генеральный директор Webalta о своем поисковике 09 SlickEdit 11 Кодируйте с умом и за деньги 68 Третье измерение Несколько способов разнообразить 10 Noise Ninja 2.1 рабочий стол без помощи Xgl Чистка фотографий DVD! 72 Первые шаги 11 FreeBSD 6.1 Советы по экономии времени SUSE 10.1 Полная версия дистрибутива Обновление – это просто – установите ее на домашний компьютер, 76 Учебник Inkscape 12 Amanda 2.5 Визитка своими руками рабочую станцию или сервер Открытая система резервирования 80 Учебник OOo Basic УЧЕБНИКИ PHP 200 страниц руководств, 13 BakBone Netvault 7.4 Работаем с базой данных советов и прочего из LXF30-82. Панель настройки с 23 вкладками? Мама! 84 Программирование 3D-игр AMAROK 1.4 Управляйте своей Пальцы еще не устали? 14 Distrowatch аудиотекой вместе с новым Странный и прекрасный Linux 88 Учебник PHP музыкальным плеером для KDE Пол уходит красиво 16 Сравнение: X-терминалы SYLLABLE 0.6.1 Уникальная открытая Konsole, Gnome Terminal и другие 90 Hardcore Linux настольная ОС, быстрая и простая в Открытая УАТС 22 Обзор аудиоплейеров использовании – попробуйте! В чем слушать MP^W OGG? 94 Python для профессионалов Напишите свой собственный сервер MANIADRIVE 26 HotPicks Достойный Это надо видеть! 98 Qt/KDE Создаем офисное приложение продолжатель 32 Марк Шаттлворт традиций Stunt отчет о визите создателя Ubuntu 102 API Racer. Очереди сообщений и семафоры 36 Что за штука... Tenor? Попахивает жженой Ваш рабочий стол уже никогда 106 Учебник Maxima резиной! не будет прежним Операторы или функции? 38 Стюарт Коэн 112 Учебник PAW OSDL смещает центр тяжести Реальный пример анализа данных 42 Linux против Vista: наши бьют! 117 Дистрибутивы LINUX Ура разработчикам Open Source! Путеводитель от LinuxCenter.ru 48 Gimp изнутри 122 Вопрос? Ответ! Поможем графическому пакету Пингвин-логин 56 10 спрятанных жемчужин 128 Диск Linux Format У Майка есть кое-что для вас В этом месяце: SUSE 10.1

60 Домашний каталог 135 Подписка Перед использованием диска ознакомьтесь с инструкцией в Subversion Полная информация для жителей и вырежьте обложку своего DVD на стр. 131–132 Творческий подход к управлению России и СНГ версиями ПОДПИШИСЬ СЕГОДНЯ! LINUX FORMAT Подробности на сайте 10 Фото атакует 16 Лучший терминал www.linuxformat.ru

www.linuxformat.ru LXF8(82) АВГУСТ 2006 3 НОВОСТИ

Главные новости • Qt 4.2 TP 1 • NTFS на чтение и запись • Курсы Linux в двух столицах • Microsoft OpenDocument Format Qt 4.2 Technology Preview 1 Интеграция, интеграция и еще раз интеграция

Норвежская компания щений Glib, реализованная в Qt 4.2, поз- Trolltech (www.trolltech.com) волит например, использовать в приложе- объявила о выпуске Qt 4.2 ниях Qt «чужие» подключаемые модули, Technology Preview (TP) 1 – первой тесто- и наоборот – использовать подключаемые вой версии нового поколения популярной модули Qt в «чужих» приложениях. библиотеки для программирования GUI. По В то время, как рабочая группа про- сравнению со своими предшественницами, екта Portland только разрабатывает уни- Qt 4.2 содержит значительное количество версальный механизм открытия web-стра- улучшений, среди которых хочется особо ницы, запуска почтового клиента и так отметить работу в области интеграции. далее, Qt 4.2 уже предлагает готовый класс Как известно, одной из первоочеред- QDesktopServices, предоставляющий кросс- ных задач Qt является корректная эмуляция платформенный способ для показа различ- внешнего вида и поведения приложений, ных ресурсов, идентифицируемых по URL. принятого на той или иной платформе. Впрочем, межпроцессное взаимодейс- Если в отношении Windows или Mac OS твие никоим образом не ограничивается X вопросов не возникает, то в Linux дела запуском браузера с последующим пере- обстоит несколько иначе. В этой системе направлением пользователя по указанному Ubuntu? Нет, Qt 4.2! понятие «родное окружение» включает в адресу. В среде Linux все большую силу себя как построенную на Qt среду KDE, так набирает D-BUS (http://www.freedesktop. вниманию полностью переносимый класс окружения KDE4. Обозначенные выше фун- и использующий Gtk+ рабочий стол Gnome. org/wiki/Software/dbus) – средство для QSystemTrayIcon, который позволяет раз- кции позволяют надеяться, что как только Естественно, приложения Gtk+ и Qt выгля- обмена сообщениями, используемое HAL, местить иконку в трее способом, принятым это случится, разнородный рабочий стол дят и ведут себя несколько по-разному, NetworkManager и другими настольны- на целевой платформе. Linux займет свое почетное место в исто- однако, выход финальной Qt 4.2 может ми технологиями. Приложения Qt могли Пройдет не так много времени и нахо- рии этой ОС, уступив место крепко сбитому в значительной степени нивелировать это использовать D-BUS еще в третьей вер- дящаяся сейчас в стадии предварительной интегрированному рабочему окружению. отличие. сии библиотеки (правда, тогда речь шла версии Qt 4.2 ляжет в основу графического Начнем с того, что бросается в глаза – только об интеграции с циклом сообщений внешнего вида. Одним из возможных под- Qt – интерфейс D-BUS был выдержан в сти- C++ GUI PROGRAMMING WITH QT 4 ходов здесь является использование уни- ле C и не соответствовал «Qt way»), одна- В середине июля было официально объявлено о выходе в свет книги «C++ GUI версальных визуальных тем вроде QtCurve, ко, «привязки» D-BUS стали неотъемлемой Programming with Qt 4», получившей официальное одобрение Trolltech и написанной ее однако, Qt 4.2 предлагает альтернативный частью Qt только в версии 4.2. На сей раз в сотрудниками: Жасмин Бланшетт [Jasmin Blanchette] и Марком Соммерфильдом [Mark Summerfield], правда, последний некоторое время назад покинул компанию и основал вариант – встроенную тему Cleanlooks, распоряжение программиста предоставлен собственное дело. Книга, по сути, является расширенной версией «C++ GUI Programming эмулирующую де-факто стандартный вне- «правильный» C++ интерфейс в стиле Qt. with Qt 3», включенной в серию Bruce Perens Open Source Series (phptr.com/perens) и шний вид современных приложений Gnome. С учетом произошедшего несколько меся- изданной в России издательством «Кудиц-Образ». Текст не претерпел существенных Добавьте к этому родной порядок следо- цев назад портирования kdelibs с DCOP изменений – вы найдете здесь те же главы и примеры, что и в предыдущей версии вания кнопок в диалогах Gnome (благода- на D-BUS, можно с уверенностью утверж- учебника, адаптированные к Qt4. Существенно новыми являются пара глав, посвящен- ря соответствующему расширению класса дать, что это нововведение придется весь- ных ключевым нововведениям Qt4: MVC, Arthur, подключаемым модулям. Плюс это QDialogButtonBox) и вы едва ли сможете ма кстати. или минус, решайте сами. Интерес представляет также схема распространения книги. отличить Gtk+ от Qt «на глаз». Ну и наконец скажем пару слов о сис- Она не является частью Bruc Perens Open Source Series, однако, надпись на форзаце Впрочем, интеграция между двумя темном лотке (system tray). Классы для гласит, что ее текст распространяется на условиях Open Publication License, v1.0 или ведущими инструментариями имеет куда работы с ним существовали в KDE с начала выше. Найти электронную версию учебника в официальных источниках пока не уда- лось, возможно, она будет опубликована после продажи некоторого количества более глубокие корни. Теперь приложения времен, но, по вполне понятным причи- «бумажных» экземпляров. Gnome допущены в «святая святых» – цикл нам, область их применения была ограни- http://www.phptr.com/bookstore/product.asp?isbn=0131872494&rl=1 сообщений Qt. Интеграция с циклом сооб- чена рамками X. Qt 4.2 предлагает вашему

4 LXF8(82) АВГУСТ 2006 www.linuxformat.ru НОВОСТИ

NTFS на запись и на чтение В Linux наконец-то появился полноценный драйвер для файловой системы Windows XP

Похоже, что извечная про- Это программа, работающая в пространс- свободный Captive NTFS, так и коммерчес- ной версией программы ntfsmount, разраба- блема совместного использова- тве пользователя и предоставляющая свои кий Paragon NTFS и уступает только род- тываемой в рамках проекта Linux-NTFS. Он ния Windows и Linux на одном функции через FUSE. Впрочем, конечному ным для Linux JFS/ReiserFS (см. таблицу). не поддерживает доступ к зашифрованным компьютере – запись на разделы NTFS, пользователю до этого – какое дело? Ему И это, как говорится, не предел – разра- файлам, запись в сжатые файлы, а также наконец-то нашла свое решение. Сакашиц важно, что теперь нет никакой необходи- ботчики утверждают, что производитель- изменение имени владельца и прав досту- Шаболч [Szakacsits Szabolcs] анонсировал мости содержать FAT32-раздел с исклю- ность можно повысить аж в несколько раз. па. Исходные тексты -3g лицензированы выпуск бета-версии драйвера ntfs-3g, обес- чительной целью обмена данными между Стабильность работы ntfs-3g также на высо- под GPL и, на момент написания этих строк, печивающего устойчивую поддержку NTFS Windows и Linux. Кстати, производитель- те – драйвер был протестирован на более были доступны по адресу: в режиме чтения-записи. ность от использования FUSE отнюдь не чем 40 снимках реальных NTFS-разделов и http://mlf.linux.rulez.org/mlf/ezaz/ntfs- Строго говоря, ntfs-3g не является страдает – согласно проведенным автором ни разу не привел к краху ФС. 3g-20070714-BETA.tgz. драйвером в полном смысле этого слова. тестам, ntfs-3g существенно обгоняет как Технически, ntfs-3g является улучшен-

Усредненные данные по скорости создания, удаления и доступа к файлам получены с помощью ‘bonnie++ -s0’, запускаемой на различных ФС. Число файлов на каталог в каждом случае составляло 16 000

files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP reiserfs 16k 21459 99 +++++ +++ 17856 96 20172 98 +++++ +++ 16414 96 jfs 16k 7015 13 +++++ +++ 5868 10 3068 14 +++++ +++ 1075 3 ntfs-3g 16k 3021 99 14291 99 5226 99 3548 99 16149 99 5223 99 xfs 16k 2401 17 +++++ +++ 2095 15 2301 20 +++++ +++ 347 2 ext3 16k 1862 96 +++++ +++ +++++ +++ 1914 96 +++++ +++ 9695 98 minix 16k 1450 97 +++++ +++ 18148 94 1694 97 +++++ +++ 4847 98 fat32 16k 366 97 +++++ +++ 1809 97 428 97 +++++ +++ 1361 97 paragon ntfs 16k 58 98 1259 99 245 99 55 99 +++++ +++ 832 99 captive ntfs Microsoft Office становится ближе к ODF Корпорация Microsoft запустила открытый проект по созданию конвертера Open XML-ODF

Корпорация Microsoft, дол- дения) и запустила проект, целью которо- ствии с принципами Open Source на сайте приложения для Word 2007 уже опубли- гое время находившаяся в оппо- го будет создать инструмент для конвер- SourceForge.net. кован по адресу http://sourceforge.net/ зиции к OpenDocument и про- тации между Open XML и OpenDocument. Конвертер, получивший гордое назва- projects/odf-converter и распространя- двигающая собственный фор- Продукт будет бесплатным и доступным ние Open XML Translator, будет разра- ется по лицензии BSD. Финальная версия мат для офисных документов – Open XML, в качестве дополнения (add-in) для ста- батываться совместно с французской будет доступна к концу 2006 года, сообща- вняла просьбам своих клиентов (особенно рых версий Microsoft Office, более того, компанией Clever Age, а также Aztecsoft ет Microsoft. усердствовали правительственные учреж- его разработка будет вестись в соответ- (Индия) и Dialogika (Германия). Прототип

ЧТО БЫЛО выбраться из душного города на берега различных решений для этой ОС: Mandriva, Восьмой ежегодный фестиваль Linux живописной реки. В палатки. IBM, Novell, R-Style, HP, Oracle, ASPLinux, Летняя школа Linux в Обнинске в Калужской области Linux-Online (разработчик Linux XP), НПО 22-24 июля 2006 года, Обнинск 28-30 июля, р. Протва ЧТО БУДЕТ “Сеть” (разработчик MOPSLinux), Bitrix, В период с 22 по 24 июля в Обнинске Восьмой ежегодный фестиваль Linux ПРОМТ, Etersoft и Linuxcenter.ru, журнал (Калужская область) проходила «Летняя в Калужской области проходил в рам- LinuxLand / SofTool’2006 Linux Format, образовательный центр Lynx школа Linux», организаторами которой ках «Недели Линукс На Протве» с 28 по 26-29 сентября 2006 года, Москва Education Center и другие. Помимо выста- выступили компания ALT Linux и Интернет- 30 июля 2006 года в Боровском районе Компании ИТ-Экспо и LinuxCenter.Ru при- вочных стендов, на экспозиции традици- Университет Информационных Технологий. Калужской области. Фестиваль, как и его глашают вас принять участие в выставке онно будет расположена демо-зона, где В Школе можно было изучить основы предшественники, стал местом встре- информационных технологий SofTool’2006 посетители LinuxLand смогут вживую поз- Linux и познакомиться методикой его пре- чи единомышленников «под открытым (26-29 сентября 2006 года), где планирует- накомиться с предлагаемыми продуктами. подавания (на базе курса «Операционная небом». Команда LXF, занятая подготовкой ся собрать ведущие российские Linux-ком- В ходе выставки будут подведены итоги система Linux»). Кроме этого, в рамках этого номера к печати, была, к сожалению, пании в одном секторе выставочной пло- конкурса IBM WebSphere Community Edition Школы прошел семинар, посвященный вынуждена пропустить это мероприятие, щади LinuxLand. LinuxLand будет местом, Contest 2006. легальной миграции на Linux. но мы не теряем надежды когд-нибудь в котором соберутся поставщики Linux и www.linuxland.ru

www.linuxformat.ru LXF8(82) АВГУСТ 2006 5 НОВОСТИ

6 LXF8(82) АВГУСТ 2006 www.linuxformat.ru НОВОСТИ

Курсы Linux в двух столицах

Теперь пройти обучение по программе Linux Professional Institute стало возможным не только в Санкт-Петербурге, но и в Москве

География чтения авторизо- сертифицированным независимой орга- ванных курсов Linux Professional низацией – Linux Professional Institute. Institute (LPI) расширилась с Ранее подобные курсы читались только получением учебным центром R-Style на базе LYNX Education Center в городе (Москва) нового звания «Авторизованный Санкт-Петербурге. УЦ Mandriva Linux». Это позволит R-Style Особенность курсов LPI состоит в их проводить обучение по программам, раз- «нейтральности», то есть в отсутствии работанным специалистами Mandriva и ориентации на конкретный дистрибутив. Например, тот факт, что курсы, читае- мые в УЦ R-Style, разработаны компанией Mandriva, не означает, что их содержа- КОРОТКОЙ СТРОКОЙ ние будет сведено к фирменным инстру- ментам, предлагаемым именно этой орга- низацией. Напротив, слушатели получат • Вышла в свет финальная версия SUSE LINUX Enterprise Server/Desktop информацию об общем устройстве Linux, 10. не привязываясь к специфике конкретного поставщика. • Проект Freespire представил на суд Программа обучения LPI постро- общественности первую бета-версию ена таким образом, чтобы охватить все community-редакции Linspire на две недели раньше намеченного срока уровни начальной подготовки слушателей. Начинающий сможет поближе познакомить- • После продолжительного затишья ся с новой ОС, а опытный пользователь – и смены лидера проект SIM-IM повысить свой уровень. Предлагаемые кур- выпустил новую версию популярного IM-клиента: 0.9.4 сы включают в себя: • LNX70 – базовые концепции и методы • Корпорация IBM представила Linux- использования основных средств Linux; версию пакета Lotus Notes, • LPI101 – базовый курс по системному базирующуюся на Eclipse. администрированию, установке и управле- • В Алматы (Казахстан) открылся нию отдельной Linux-системой; собственный Open Source центр. • LPI201 – дополнительные вопросы сис- Проект нацелен на снижение уровня темного администрирования, установки и использования нелицензионного программного обеспечения и управления отдельной Linux-системой; популяризацию открытого ПО • LPI102 – расширенный курс по сис- темному администрированию, установке и • Проект KDE и компания Apple управлению отдельной Linux-системой; начали работу по синхронизации • LPI202 – дополнительные вопросы сете- WebKit и Konqueror, а компания Frologic выпустила бесплатную вого администрирования Linux-системы. версию тестера Squish для KDE- Со временем, авторизованные учебные приложений. центра Mandriva/LPI будут открыты и в дру- гих крупных городах России. LXF

LXF8(82) АВГУСТ 2006 7 Обзоры >> 12 Резервное копирование Новинки программного и аппаратного обеспечения в описании наших экспертов и даром, и задорого

СЕМЬ ШАГОВ ЧТО НОВОГО? LINUX- ДИСТРИБУЦИИ Первые дистрибутивы Linux, возникли из стремления избавиться от лишней ОС – ведь, чтобы сварить суп из курицы (Linux), следовало как минимум иметь кошку (MINIX). И, например, спа- Алексей Федорчук сение пользователей от ада Имеет собственное пакетных зависимостей ос- мнение насчет тавалось делом рук самих 09 SlickЕdit’ing финансирования пользователей – благо тако- OSS. выми в то время были почти исключительно разработчи- ки Linux’а же. Потом началась эпоха промышленного применения этой ОС – для начала в качест- ве сетевых узлов разного рода. И к пользо- вателям-разработчикам присоединились пользователи-администраторы, которые не имели времени на ручное разруливание 10 Легким движением руки... зависимостей – и для них были придуманы первые дистрибутивы с контролем оных 09 SLICKEDIT 11 11 FREEBSD 6.1 (Debian, Red Hat). Мы всегда с недоверием относились к тексто- Вы, возможно, читали введение во FreeBSD, кото- В 1998 году впервые заговорили о про- вым редакторам для программистов, особенно с рое Майк опубликовал в LXF76. Он снова с вами и движении Linux на пользовательские ком- номерами версий больше 10. Стоит ли он своих готов рассмотреть последнюю версию этой ОС! пьютеры. Итогом их стало появление денег? Mandrake – первого по-настоящему «юзе- 10 NOISE NINJA 2.1 рофильного» дистрибутива. 12 AMANDA 2.5 VS NETVAULT 7.4 Однако скоро пользователи осознали, Ненавидите шум, но любите ниндзя? Этот пре- что на своих рабочих столах они являются красный инструмент для фотографов теперь Бесплатное резервирование против платного – и также и администраторами, что вызвало имеет порт и для Linux! неожиданный результат. Смотрите сами! волну популярности дистрибутивов Source Based – и пальму первенства пользователь- ских симпатий завоевал Gentoo. Каковой тоже не стал панацеей от всех бед – потре- бовались системы, совмещающие возмож- ность полной пересборки с быстротой раз- вертывания и простотой обновления – квинтэссенцией этого направления стал НАШ ВЕРДИКТ: ПОЯСНЕНИЕ Archlinux. Все продукты оцениваются по 10-бал- Продукты, выделяющиеся из основной Все тесты выполняются под управлени- Дальнейшее стремление к упрощению льной шкале. 4 обычных параметра массы, получают престижную награду Linux ем Red Hat Enterprise Linux 3 AS на соот- жизни вернуло интерес к Debian и его мно- оценки: возможности, производи- Format Top Stuff Award. Выбираются самые- ветствующей платформе (x86, AMD64, гочисленным клонам, среди которых бес- тельность, простота использования самые – и только лишь высокая оценка Itanium). Код компилируется при помощи спорно первенствовал Ubuntu. и соотношение «цена/качество», но здесь еще ни о чем не говорит. GCC, если не указано иное. И, наконец, нынче намечается обраще- для свободного ПО последний пара- Для тестирования серверов использует- ние к истокам Linux-дистрибуции – в лице метр может быть заменен на оценку ся наша собственная разработка, LFXBench современных производных Slackware, в РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ документации. Независимо от набо- 2004, состоящая из 4 основных подсистем: первых рядах которых выступает ZenWalk – ра категорий, мы Multi CPU, Single CPU, RAM и Hard Disk. MULTI CPU 6.07 максимально компактный, но легко нара- 3 всегда вычисля- Оценки усредняются и дают общий рейтинг. SINGLE CPU щиваемый. RAM 2.17 ем общий рей- 1 очко означает, что тестовый компьютер Каким будет следующий виток пользова- HARD DISK 0.46 тинг, подводя- равен нашему эталону: Pentium 4 1,8ГГц, 512 тельских предпочтений? ОБЩИЙ РЕЙТИНГ 2.93 щий итог нашим Мб оперативной памяти и жесткий диск IDE. [email protected] 1234 высказываниям. 2 очка означает, что он вдвое быстрее.

8 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ОБЗОРЫ SlickEdit 11

ТЕКСТОВЫЙ РЕДАКТОР SlickEdit 11 Ник Вейч размышляет, стоит ли платить за право кодировать.

САМОЕ ГЛАВНОЕ Одно из замечательных нововведений – Очень гибкий редактор для новый, быстрый режим рефакторинга кода программистов с поддержкой нескольких (Quick Mode). Ранее эта система была очень языков программирования. Аналоги: устойчива и надежна, но уж больно мед- Kate, Emacs, а также среды разработки ленна – даже для обычной смены имени типа Eclipse. переменной или подобных простых вещей. • РАЗРАБОТЧИК: SlickEdit Новый режим обеспечивает замену имен с • САЙТ: www.slickedit.com помощью тэг-файла для поиска всех вхож- • ЦЕНА: $284 для одного пользователя, дений выделенного текста – версия 11 это $139 за обновление заметно ускорила, но требует известной Рефакторинг простых операторов стал быстрее – но будьте с ним поосторожнее! осторожности в сложных ситуациях, напри- мер, при потенциальном конфликте пере- Программисты в Linux избало- груженных операторов. Среди функций Для программистов ваны выбором. KDevelop, Anjuta, быстрого рефакторинга – Method Extract, Конечно, одна из причин выбора специ- ГРЭМ СЧИТАЕТ… Eclipse... множество сред разра- подсветка участка кода для автоматическо- ализированного редактора вроде этого – ботки для написания, компиляции и отлад- го выделения его как функции. Дополнения богатство инструментария. Подсветка син- «Мне нравится интерфейс ки вашего кода, и в основе каждой – тек- PHP 5 тоже пришлись ко двору, получить таксиса – такая же необходимость для пользователя, хоть он и съедает стовый редактор. Так зачем мучиться с бы только правильную подсветку новых сегодняшних профессиональных програм- многовато циклов процессора. обычным текстовым редактором, созда- вызовов, например, mysqli_connect(). мистов, как автозавершение кода (которое Однако всем этим функциям вая новейший алгоритмический шедевр, Контроль версий SlickEdit поддержива- всегда было проблемой для разработчи- далеко до дерева откатов Vim». если можно воспользоваться специально ет и Subversion, и CVS, и кучу других сис- ков). В этом отношении SlickEdit хорош, созданным инструментом? тем. По правде говоря, это просто ссыл- но при наборе участков кода постоянно Редакторов для программистов на све- ки на подготовленную командную строку, возникает легкая (и досадная) задержка те хватает: взять хотя бы Emacs, Kate, или но гибкость SlickEdit такова, что можно перед появлением окна автозавершения. Единственный, но жирный минус – JEdit – да мало ли добротных бесплатных создавать и свои собственные, назначе- Функция, однако, действует безупречно, а внешний вид программы. Понятно, что инструментов! Поэтому платная программа нием любых команд таким действиям, как «задумчивости» можно поубавить, ограни- вкусы программистов различаются, но должна обладать прямо-таки супер-качест- Check In и History. Эта гибкость харак- чив завершение только конкретными вида- интерфейс в стиле Motif с плоховаты- вом, чтобы ее вообще заметили. К счастью терна для всей программы. В десятках ми кода. ми элементами управления и неудобным для разработчиков, SlickEdit имеет солид- диалоговых окон настройки можно менять Есть и другие помощники. Если честно, основным окном изрядно затрудняет рабо- ную репутацию хорошо оснащенной про- сочетания клавиш (которые вам, вероятно, то встроенный калькулятор, хоть и пре- ту с несколькими файлами. Кое в чем граммы, и настоящая версия добилась еще захочется отредактировать, хотя по умол- красно интегрированный, малость неуклюж. SlickEdit отстает даже от более специа- больших успехов. чанию SlickEdit предлагает эмуляцию сти- А вот инструмент работы с регулярными лизированных сред разработки для Java. Со времени нашего последнего обраще- лей Vi, Emcs и др.), цвета кода, подсветку выражениями превосходен – помимо помо- Для обычного корпоративного програм- ния к SlickEdit включены некоторые новые синтаксиса, расширения файлов, отступы, щи в построении выражений, он поддержи- миста SlickEdit неплох, но учитывая его функции и, что не менее важно, усовер- шрифты и т.д. вает тестирование правильности их работы. цену, вы, вероятно, предпочтете програм- шенствованы старые. Наиболее заметные мировать в Kate или Emacs и выполнять из них – поддержка PHP 5, функция авто- рефакторинг вручную. LXF генерации для файлов Javadoc и XMLDoc, улучшенные инструменты регулярных выражений, поиска и замены, автозавер- шения кода и закладок. Подарок для Linux- версии – дополнительный пакет поддержки шрифтов Xft через fontconfig.

НЕ ЗАБУДЬТЕ О МОДУЛЕ ВЕРДИКТ LINUX FORMAT ФУНКЦИОНАЛЬНОСТЬ 9/10 Если вы Java-программист, то, вероятно, ПРОИЗВОДИТЕЛЬНОСТЬ 9/10 уже пользуетесь превосходной средой разработки Eclipse. Но SlickEdit (фирма) ПРОСТОТА ИСПОЛЬЗОВАНИЯ 7/10 разработала версию своей программы в ОПРАВДАННОСТЬ ЦЕНЫ 6/10 виде модуля для Eclipse, так что вы мо- жете получить функциональность Немного неказист, но хорошо оснащен для всех видов работ программиста. SlickEdit, интегрированную в вашу среду разработки, за более низкую цену ($199) РЕЙТИНГ 7/10 по сравнению с самостоятельной про- граммой. Автозавершение кода «тормозит», но действует безотказно.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 9 ОБЗОРЫ Noise Ninja 2.1

ИНСТРУМЕНТ ФОТОГРАФА Noise Ninja 2.1 Процесс профессиональной обработки фотографий стал чуточку ближе к Полу Хадсону.

САМОЕ ГЛАВНОЕ накладывать сглаживающие маски легким Удаляет помехи с цифровых движением руки, а программа сама испра- фотографий. Попытайте удачи также в вит ваши фотографии. Gimp. На Mac OS X и Windows есть выбор: • РАЗРАБОТЧИК: PictureCode можно приобрести программу как самосто- • САЙТ: www.picturecode.com ятельное приложение, так и в виде модуля • ЦЕНА: От $34,95 к Adobe Photoshop. А так как Photoshop для Linux не существует в принципе, то вариан- ты отсутствуют, вы можете получить только Фотография – не только искусст- самостоятельный продукт. Требовать моду- во, но и умение найти баланс тех- ля для Gimp преждевременно – вероятно, нических параметров. Например, это дело будущего. для повышения глубины резкости необ- Не имея функциональности модуля, ходимо выставить малую диафрагму и вы ограничены в выборе типов файлов. длительную выдержку – но увеличение Например, в Photoshop для OS X мож- выдержки обычно приводит к размыванию но загрузить и обработать фотографию изображения. Выдержку можно уменьшить в Noise Ninja в формате RAW, а на Linux вдвое с каждым очередным номиналом ISO- доступны лишь TIF и JPEG. Имеется под- Простой интерфейс наводит на мысль, что работать в Noise Ninja проще простого, но не ждите, что она совершит чудо со сложным изображением!

«МОЖНО УБРАТЬ ПОМЕХИ И Ползунки и кнопки процессе работы Noise Ninja подстроится Можно просматривать отдельные каналы автоматически. Владельцев мощных ком- НАЛОЖИТЬ МАСКУ ОДНИМ и определять, где сосредоточены основ- пьютеров ждет приятная новость: Noise ные помехи – особенно часто этим грешат Ninja полностью поддерживает многопро- ДВИЖЕНИЕМ.» каналы синего цвета. Если какие-то пятна цессорную и многоядерную архитектуры; вам захочется оставить, можно «нарисо- есть возможность размещения директории рейтинга (100, 200, 400 и т.д). Однако уве- держка 16-битных TIF (если вы приобрели вать» первоначальное изображение поверх с файлами на отдельном разделе для повы- личение рейтинга неминуемо увеличивает версию Pro за $70), но из Gimp они не отфильтрованной версии с помощью инс- шения производительности. электрический шум – разноцветные зерна и экспортируются, и большинство пользо- трумента Noise Brush (Шумовая Кисть). пятнышки, производимые фотоэлементом вателей будет довольствоваться 8-битным Он подойдет для восстановления мелких Чудо одним щелчком камеры. Изображение, прекрасно выгля- цветом. Зато добрые старые JPEG Noise деталей, которые Noise Ninja заутюжил Каждый фотограф сталкивался с пробле- дящее на ISO 100, на ISO 3200 покроется Ninja чистит отлично. чересчур агрессивно. мой помех, и Noise Ninja – именно то, что радужными разводами, сведя на нет все Базовые функции удаления помех А вот пакетный процесс – гениальная вам необходимо для решения этой про- труды по тщательной подборке баланса. хороши для новичков, но в арсенале Noise вещь, это автоматическая фоновая обра- блемы (пробная версия всегда наготове на На помощь приходит Noise Ninja: смело Ninja есть и более тонкие инструменты. Мы ботка целых директорий с фотография- сайте PictureCode). Нам она уже помогла повышайте ISO-рейтинг, помехи на ваших добились прекрасных результатов следую- ми. Поскольку удаление помех и фильтры спасти сотни фотографий, и, надеемся, в фотографиях ликвидируются цифровыми щим способом: до отказа выдвинули пол- настраиваются раздельно, резкость можно будущем спасет еще больше – она на это методами. зунки Smoothness и Strength (Гладкость и увеличить, скажем, в Gimp, а Noise Ninja способна. LXF Noise Ninja имеет опыт работы на Mac Интенсивность) и получили нереалистично поручить индивидуальную обработку помех OS X и Windows, но первый порт для Linux гладкое изображение. Затем постепенно для каждой фотографии. На практике это появился лишь в этой версии. Технология снижали уровни, пока зерна не появились означает, что вы можете одновременно отработана: можно избавляться от помех и снова. чистить фотографии ISO 100 и ISO 3200: в

ВЕРДИКТ LINUX FORMAT Простая в изучении, изощренная в работе – без такой вещи не обойтись любому серьезному фотографу. РЕЙТИНГ 9/10

До удаления помех (слева), зерна отчетливо видны; после удаления (справа) фотография заметно очистилась.

10 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ОБЗОРЫ FreeBSD 6.1

ОТКРЫТАЯ ОПЕРАЦИОННАЯ СИСТЕМА FreeBSD 6.1 Команда FreeBSD надеется вернуть своей ОС знаменитую стабильность. Майк Сондерс знакомится с новейшей версией.

САМОЕ ГЛАВНОЕ Вычищенную FreeBSD 6.0 приняли Открытая операционная система из доброжелательно, но многие продолжали семьи Berkeley Standard Distribution. ждать следующей точечной версии, наде- Аналоги – NetBSD, OpenBSD и, конечно ясь, что уж в ней-то FreeBSD точно «уста- же, Linux! канится». Поэтому 6.1 – эволюционная версия: в ней нет ни крупных перемен, • РАЗРАБОТЧИК: The FreeBSD Foundation • САЙТ: www.freebsd.org ни новых функций, только подчистка и • ЦЕНА: Бесплатно по лицензии GPL доводка. Написаны новые стресс-тесты для проверки стабильности штатной файловой системы FreeBSD, UFS, имеющей функ- Пользователи FreeBSD – публи- ции журналирования в лице SoftUpdates. ка консервативная. Они не любят Поддержка Bluetooth была усовершенство- скоропалительных, непродуман- вана автоматической настройкой многих ных добавок в исходные тексты каждой устройств, включение поддержки сетевых новой версии, как и вставок непроверен- карт Broadcom NetXtreme II, AMD Am7900 ного кода в основное дерево, заставляю- LANCE и Am79C9x расширило набор сете- щих пользователя тратить время на отлов вых драйверов. Текущая версия FreeBSD ошибок. работает на платформах x86 PC, AMD64, Поэтому выпуск версии 5.0 в 2003 г., Itanium и SPARC и занимает два диска – когда многие разработчики и пользователи первый несет собственно систему, а на Рабочие столы Linux и FreeBSD почти неотличимы – у них одинаковы основная сочли систему нестабильной, нанес репута- втором разместились настольные и сер- среда и большинство популярных приложений. ции FreeBSD ощутимый удар. Выпуск 5.0 верные пакеты. затянулся на годы, так что, казалось, вер- Хотите приятных известий? Наши тесты Рабочий стол FreeBSD 6.1 включает мельчайших ее деталей. [Похвала ничуть не сии 5.х мы не увидим никогда. Команда показали полный возврат 6.1 к уровню ста- X.org 6.9.0, Gnome 2.12.3 и KDE 3.5.1, с преувеличена, к тому же учебник доступен FreeBSD выпихнула новую версию, намере- бильности 4.х. Тяжелую нагрузку система серверной стороны – MySQL 5.0.18, Apache и в виде архива для автономного чтения, – ваясь доработать и стабилизировать буду- несет уверенно, оставаясь отзывчивой к 2.2.0, Sendmail 8.13.6 и Bind 9.3.2. прим. пер.] Эта версия будет поддержи- щие 5.х, но цели не достигла – пресловутая командам даже в периоды высокой актив- ваться как минимум 12 месяцев. 5.0 наложила отпечаток на все 5.х, и боль- ности процессора и жесткого диска. Итоги Если вы счастливый обладатель шинство FreeBSD-пользователей остались Одно из интересных для конечных Sysinstall, текстовый инсталлятор, не изме- 6.0, то рвануть на 6.1 особой нужды нет. на 4.х. пользователей новшеств – это Portsnap, нился по сравнению с 6.0. Конечно, с виду Изменения минимальны – как раз в стиле позволяющий скачивать сжатые сним- он не так изобретателен, как, например, пользователей FreeBSD. Если вы никогда ки дерева портов (система построения Anaconda или Yast, зато здорово ускоряет еще не пробовали FreeBSD, сейчас самое ПО FreeBSD, вдохновившая Portage под инсталляцию (меньше 10 минут для базо- время оценить ее непревзойденную ста- Gentoo). Это помогает держаться в курсе вой системы вместе с X на нашей 2 ГГц бильность, дружелюбный дизайн и перво- последних событий – ценное дополнение тестовой машине). Время загрузки тоже на классную документацию. А благодаря режи- для любителей новейших версий программ. шаг впереди большинства Linux-дистрибу- му совместимости с Linux большинство Пользователи FreeBSD обновляют свои тивов – 40 секунд до экрана входа в систе- бинарных дистрибутивов Linux-программ системы заплатками на исходный код из му против 73 для SUSE 10.1. прекрасно уживаются с FreeBSD, и вам Sysinstall на вид несколько староват, CVS; это медленнее бинарных обновлений Пользуетесь ли вы серверным или не придется жертвовать своей коллекцией зато инсталляция проходит со свистом. Debian, зато дает полный контроль над про- настольным вариантом – FreeBSD почти приложений. LXF цессом компиляции. неотличима от Linux. В коллекции Ports – свыше 14 000 программ (сравните с 15 500 ГДЕ РАБОТАЕТ FREEBSD? для Debian), среди которых найдется почти любое приложение, название которого вы только можете вспомнить. Раскладка фай- Linux, конечно, любимец компьютерной прессы, Настольный вариант FreeBSD нередко ВЕРДИКТ LINUX FORMAT ловой системы FreeBSD почти такая же, но FreeBSD достойно несет трудовую вахту на отстает от Linux в поддержке новейшего ФУНКЦИОНАЛЬНОСТЬ 8/10 многих ответственных постах. Например, Yahoo оборудования, а Ports, система построения ПО, как и в Linux, за исключением нескольких ПРОИЗВОДИТЕЛЬНОСТЬ 8/10 использует ее на большинстве своих серверов, утратила уникальность после выхода Gentoo. микроразличий – например, все основные Hotmail тоже была привержена FreeBSD до Однако это, быть может, удобнее, чем море загрузочные параметры собраны в /etc/ ПРОСТОТА ИСПОЛЬЗОВАНИЯ 7/10 вхождения в Microsoft. Именно на серверной дистрибутивов Linux – одна кодовая база, один rc.conf, а не разбросаны в разных местах, ДОКУМЕНТАЦИЯ 10/10 территории FreeBSD нашла себя: источник документации, одно централизованное как в Linux. Если вы попробуете установить администраторы ценят высочайшую хранилище ПО значительно упрощают жизнь FreeBSD с нуля, имея опыт работы в Linux, Серьезную причину для перехода с 6.0 на 6.1 стабильность и безопасность, предпочитая пользователей FreeBSD. Ведь куда проще найти трудно, но FreeBSD снова нерушима, как то вряд ли наткнетесь на какие-либо сюрп- скала. долговременную поддержку непрестанной сказать «У меня FreeBSD 6.1», чем «У меня ризы, но в случае затруднений всегда мож- изменчивости (пример – изменение FooLinux на ядре 2.6.12, Glibc 2.4.0 и X.org но обратиться к онлайн-учебнику FreeBSD РЕЙТИНГ 8/10 подсистемы виртуальной памяти посреди серии 7.0.0…» Handbook – блестяще написанному центра- Linux 2.4). лизованному ресурсу для всей FreeBSD, до

www.linuxformat.ru LXF8(82) АВГУСТ 2006 11 ОБЗОРЫ Amanda 2.5

СИСТЕМА РЕЗЕРВНОГО КОПИРОВАНИЯ

Amanda 2.5 НА ДИСКЕ На странице слева – Amanda, выдающаяся свободная система резервного копирования. Грэм Моррисон решил разобраться, так ли уж она хороша.

САМОЕ ГЛАВНОЕ Как и NetVault, Amanda работает по Резервирует данные от Linux-, Solaris- и принципу «клиент-сервер». Сервер – лен- Windows-клиентов на центральном точный хост (tape host), выдающий под- сервере. Аналоги: NetVault (страница ключения ленточным же клиентам (tape напротив) или Arkeia Smart Backup client). В случае необходимости Amanda (LXF78). может работать с сотнями клиентов, при- • РАЗРАБОТЧИК: Университет чем не только с другими Linux- и Solaris- Мериленда машинами, но и с компьютерами Windows • САЙТ: www.amanda.org (через Samba). • ЦЕНА: Бесплатно по лицензии GPL Нетрудно догадаться, что для резерв- ного копирования ленточному хосту нуж- Взгляните на экранный снимок ны ленточные накопители, но если у вас справа; теперь – на титульный под Linux уже работает такой накопи- лист. Знаем, о чем вы подума- тель, то с Amanda он уживется почти ли, и вы совершенно правы: интерфейс наверняка. Amanda пользуется собствен- Amanda красотой не блещет. В противопо- ными протоколами для клиент-серверно- ложность лощеному интерфейсу NetVault, го соединения, но работает на стандарт- внешность Amanda непритязательна: GUI ном Linux-оборудовании; правда, для него отсутствует, и никуда не денешься от необходимо будет составить определение. командной строки. Даже при установке Этот процесс способен занять от пяти до Смотреть не на что… Amanda – лабиринт файлов конфигурации и серия Amanda в виде RPM не обойтись без неко- восьми часов; в итоге Amanda определит командных строк, оттого и картинка скучная. торой возни с файлами конфигурации доступный объем хранилища и среднюю (потребуется известный опыт). Зато, как скорость передачи (хотя и в собственной только все «на мази», в командной строке базе данных Amanda заложены определе- работа клиентов) и аппаратным сжати- полной сохранности критически важных нужды уже нет – ну, разве что случится ния порядка 14 наиболее распространен- ем. Новшество настоящей версии – воз- данных очень украшает жизнь. Amanda – катастрофа… ных типов ленточных накопителей, среди можность назначения политики в зави- необычайно полезный инструмент в уме- Что необычно для открытого проек- них – обычные устройства от Quantum, симости от типов файлов, это сохраняет лых руках; и если ваши руки таковы, при- та – разработчики позаботились о вари- Sony и HP). Если ленточный накопитель уйму времени на попытках сжатия и без ложите их к делу и исключите малейший антах RPM не только для SUSE и Fedora, для вас избыточен, с помощью Amanda того сжатых файлов (некоторые аудио- и риск потерь! LXF но и для корпоративных версий обоих можно создать виртуальный ленточный фото-форматы). дистрибутивов. Amanda разработана в накопитель, а затем вписать его объем в Безопасность – еще одно важное Университете Мериленда, отсюда и назва- DVD или CD. Значительное преимущество достоинство программы. Безопасность ние – Advanced Maryland Automatic Network нынешней версии состоит в поддержке авторизации и передачи данных между Disk Archiver (Продвинутый Мерилендский многотомной резервной копии – системно- клиентом и сервером усилена поддержкой Автоматический Сетевой Дисковый му администратору больше не нужно вся- Kerberos 4/5 и OpenSSH. Последний вклю- Архиватор). кий раз соизмерять объем сохраняемых чается простым изменением строк ‘auth’ данных с размерами носителя. главного файла конфигурации, как на сер- Имеется поддержка смены лент, но верной, так и на клиентской стороне. Если чтобы ей воспользоваться, понадобит- Amanda найдет ключи SSH по умолчанию, ся известное умение: в Amanda включен то ими и воспользуется, но есть возмож- лишь простейший скрипт, который почти ность прямого ввода таких ключей в файле наверняка придется править. конфигурации клиента. Как вы уже заметили, мы часто упоми- Тонкая работа нали о необходимости правки файлов кон- Один из важнейших критериев оценки фигурации Amanda – зато других проблем ВЕРДИКТ LINUX FORMAT любой программы резервного копирова- просто нет. Это инструмент системного ния – возможная степень сжатия данных. администратора, а не игрушка для взрос- ФУНКЦИОНАЛЬНОСТЬ 9/10 В Amanda и это под контролем, но кое-что лых. Вот почему на сайте Amanda пред- ПРОИЗВОДИТЕЛЬНОСТЬ 7/10 зависит от инсталлированного ПО. Для ставлен столь внушительный список фирм ПРОСТОТА ИСПОЛЬЗОВАНИЯ 4/10 большинства пользователей хорош Gzip, и консультантов, всегда готовых помочь ДОКУМЕНТАЦИЯ 7/10 дающий даже большую степень сжатия, в настройке – или, по их выражению, чем аппаратное (обычно около 2:1). Есть «внедрению». Существует также корпо- Трудна в настройке, зато свободна и превосходно оснащена выбор между сжатием на стороне клиен- ративная версия от Zmanda, для платных Результаты каждого копирования, та (уменьшает нагрузку на сеть за счет подписчиков. включая отчет о занятой памяти, РЕЙТИНГ 7/10 высылаются на на e-mail использования клиентских процессоров), Решение недурное. Даже если в вашей администратора. сжатием на стороне сервера (облегчается системе все уже отлажено, уверенность в

12 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ОБЗОРЫ BakBone NetVault 7.4

СИСТЕМА РЕЗЕРВНОГО КОПИРОВАНИЯ BakBone NetVault 7.4 …а справа – необычная для нашего издания, весьма недешевая вещь. NetVault стоит кучу денег и может хранить терабайты информации, но Грэм Моррисон сомневается, что этого хватит для победы над чарами свободной Amanda.

хотя оно отделено от главной конфигура- САМОЕ ГЛАВНОЕ ционной панели, именно здесь происходит Клиент-серверная программа резервного каждодневная работа по добавлению новых копирования с графическим устройств и подключению клиентов, а также интерфейсом. Аналоги: Amanda 2.5 или просмотр журналов системы. Arkeia Backup. После инсталляции первым делом надо • РАЗРАБОТЧИК: BakBone Software добавить клиентов NetVault к серверу. Когда • САЙТ: www.bakbone.com программа установлена у клиента, доста- • ЦЕНА: $1300+НДС (пять клиентов с 12- точно будет просканировать сеть из Панели слотовым переключателем управления клиентами (Client Management накопителей и круглосуточная panel) на сервере – появятся все доступ- поддержка 24/7) ные клиенты, и для включения в список на резервное копирование нужно будет просто NetVault – ещё один тяжеловес щёлкнуть по ним мышью. Графический среди инструментов резервно- интерфейс скорее функционален, чем кра- го копирования, но отнюдь не сив, и больше похож на старые приложе- свободный. Он пользуется собственны- ния Motif, чем на новейший инструмент. ми протоколами и поддерживает гораз- Имеются также некоторые шероховатости: до более узкий диапазон устройств, чем возможно открытие нескольких одинако- Функциональный интерфейс пользователя позволяет просматривать папки, Amanda, зато прекрасно оснащён. Если вас вых окон сразу – такого мы не наблюдали файлы и даже устройства. В список архивации они добавляются одним щелчком не запугает 600-страничное руководство с конца 90-х. мыши. администратора, то уж 23 вкладки пане- Опознав клиентов, можно настраивать ли конфигурации запугают непременно; и носители архива. Выбор в NetVault беднее, действительно необходимые вещи, боль- восстановить самую первую копию, затем все-таки инсталлировать NetVault вовсе не чем в Amanda, но и здесь налицо десят- шинство же пользователей вполне устра- каждую успешную из серии последующих трудно, особенно в сравнении с Amanda 2.5. ки ленточных накопителей и NAS (network- ивают умолчания. Единственное исключе- инкрементальных. Эта задача решается Единственный скрипт позволяет установить attached storage, сетевых хранилищ), поэто- ние – для случая, когда необходимо копи- превосходным модулем, избавляющим вас любую клиент-серверную комбинацию или му проблемы вряд ли будут. Как и в Amanda, ровать базу данных без остановки её рабо- от мороки ручного восстановления. просто клиента. возможно сохранение в локальной фай- ты, тут уж понадобится доплата; имеются NetVault превосходно «упакован», и вы Системному администратору NetVault ловой системе, с помощью ‘virtual library’ – модули для работы с Oracle, PostgreSQL всегда чувствуете себя уверенно. Настройка в основном придётся работать с двумя «виртуальной библиотеки», по терминоло- и MySQL. конфигурации и управление копировани- приложениями. Первое – вышеупомянутая гии NetVault; можно даже назначить целый Важнейший из стандартных модулей ем с помощью консоли и GUI – это две 23-страничная конфигурационная панель, диск в качестве самостоятельного вирту- служит для прохода по клиентским фай- большие разницы; правда, не столько в именно отсюда настраиваются все низко- ального устройства. Настроив клиентов и ловым системам. Это больше, чем просто удобстве, сколько в наглядности. Гораздо уровневые параметры NetVault: конфигу- носители информации, смело приступайте навигация по файлам и каталогам клиент- легче понять суть своих действий, когда вы рация брандмауэра, установка и удаление к архивированию данных. ской машины: существуют специализирво- видите свой маршрут по файловой системе модулей, аудит и лицензирование. Второе – анные механизмы для каждого типа ФС. клиента, а задания добавляются в очередь GUI NetVault, известный в командной строке Иметь или не иметь? Так, если вы занялись файловой системой у вас на глазах. Опытного администратора под именем nvgui. Это приложение одина- NetVault почти везде использует систему Linux-клиента, модуль знает, как обращать- этой косметикой, конечно, не проймёшь, но ково как для клиента, так и для сервера, и модулей – то есть вы платите только за ся с особыми файлами из /proc или /dev. по крайней мере, в NetVault вы своими гла- Есть даже доступ к устройствам в /dev и зами видите, куда ушли ваши деньги. LXF ПОЧЕМУ ИМЕННО ЛЕНТА? просмотр оборудования по идентификато- ру – это удобно при архивировании диска Несмотря на DVD и винчестеры, ничего лучше ленты для резервных копий пока не придумано. целиком. Мы уже намекали, что другие ВЕРДИКТ LINUX FORMAT файловые системы поддерживаются тоже – Не думайте, что магнитофоны упоминаются лишь в исторических трактатах: лента и резервная значит, доступны и Windows-клиенты. С ФУНКЦИОНАЛЬНОСТЬ 9/10 копия – до сих пор синонимы. Хранить данные на ленте значительно дешевле, чем на любом помощью того же модуля вы получаете ПРОИЗВОДИТЕЛЬНОСТЬ 8/10 другом носителе, а содержать сотни гигабайт информации на одной магнитофонной катушке доступ и к реестру Windows, и к базе дан- ПРОСТОТА ИСПОЛЬЗОВАНИЯ 7/10 удобнее, чем на десятках DVD. Многие программы Linux специально созданы для прямой работы с ных классов COM+. Конечно, с файлами лентой, лучший пример – tar. Он хорошо знаком всем нам как распаковщик файлов из Интернета, ОПРАВДАННОСТЬ ЦЕНЫ 6/10 и папками можно работать и обычным но мало кто знает, что tar – сокращение от Tape Archiver (Ленточный Архиватор). Старые ленточные способом. Дорого, но по средствам тем, у кого размер накопители могли записывать данные блоками по 512 байт, отсюда и внутренний стандарт для tar. По умолчанию, резервное копирование жесткого диска соизмерим с размерами Amanda 2.5 использует tar для сжатия и конкатенации файлов в резервной копии, однако бюджета. вместимость ограничивается объёмом одной ленты. NetVault в этом отношении продвинулся делается инкрементально – иными слова- значительно дальше: он может использовать автоматические переключатели устройств – ёмкость ми, NetVault сохраняет лишь разницу между РЕЙТИНГ 8/10 хранилища становится почти неограниченной. последней и текущей копией. Для полного восстановления данных на диске нужно

www.linuxformat.ru LXF8(82) АВГУСТ 2006 13 DISTROWATCH Distrowatch Ежемесячная сводка новостей дистрибутивов Linux.

ВОСХОД SUSE

Когда Novell при- Неоконченная Симфония обрёл SUSE в Symphony OS – новый игрок на рынке настольных систем – достигла бета-статуса. ноябре 2003-го года, пользовате- ли забеспокои- После установки несколь- лись о будущем ких самых распространён- любимого дистри- ных дистрибутивов легко Ладислав Боднар бутива. Каковы заключить, что вы видели их все. Но Райан основатель, истинные намере- руководитель и Квинн [Ryan Quinn], создатель Symphony ния Novell? А сотрудник OS, знает непохожий. вдруг сетевой DistroWatch.com. На данный момент, Symphony OS – без гигант превратит сомнения, одна из самых необычных SUSE в эксклюзивную операционную систему для крупных корпораций и настольных ОС. Вместо копирования тради- проигнорирует домашних пользовате- ционного способа доступа к приложениям и лей? Или, чего доброго, прекратит утилитам через систему каскадных меню работу над дешёвым коробочным про- эта система использует так называемые дуктом и сфокусируется на гораздо десклеты – наборы многофункциональных более прибыльном серверном рынке? утилит для запуска программ, подключения к Интернет, поиска файлов и предоставле- «ОТКРЫТО МНОГОЕ ния всевозможной полезной информации. ИЗ КОДА SUSE И КОДА Десклеты специально спроектированы для САМОЙ ФИРМЫ NOVELL.» предоставления простого доступа ко всему, что может понадобиться большинству пользователей. К счастью, теперь мы знаем, что Mezzo, рабочий стол Symphony OS, легко конфигурируется через Desktop Фундаментальную часть Symphony OS этот пессимизм был необоснован. Manager. Видите минимизированную иконку Gimp? SUSE Linux по-прежнему продаётся в образует рабочий стол, носящий имя Mezzo. Европе и Северной Америке, причём Помимо вышеупомянутых десклетов, Mezzo Novell, для привлечения сторонних отличается от большинства традиционных четырёх углах экрана. Десклеты можно И даже если позже вы отбросите идею разработчиков, вообще открыла дист- рабочих столов тем, что у него нет панели настраивать, и по мере взросления проекта, перехода на Mezzo, вы, наверное, согласи- рибутив и предоставила к нему сво- задач: если приложение минимизировано скорее всего, созданные сообществом деск- тесь, что всем надо встать и поаплодиро- бодный доступ, как только вышла или потеряло фокус, оно становится либо леты покроют все мыслимые виды задач – вать разработчикам Symphony OS за сме- стабильная версия. Лучше того – боль- иконкой, либо миниатюрным окном в ниж- подобно расширениям Firefox. лость мыслить по-другому. шая часть кода SUSE и собственного кода Novell переведена под лицензию ней части экрана. Mezzo также предоставля- Хотя Symphony OS может использовать www.symphonyos.com GPL: приложения Yast, AppArmor и, ет четыре других виртуальных рабочих стола обычный набор утилит Debian для установ- совсем недавно, Xgl и Compiz. с добавочными десклетами. Все они доступ- ки программного обеспечения (система Пользователи Linux могут радовать- ны по щелчку на иконки, расположенные в построена на базе нестабильной ветки ся; однако инвесторы Novell скорее Debian), разработчики создали графичес- всего не так довольны. Компания пока кое приложение для установки дополни- не сумела превратить успех SUSE тельных программ и удаления ненужных Linux в источник дохода, и если ситуа- пакетов. One-Click Software (так называется ция вскорости не изменится, Novell это приложение) представляет собой web- окажется под давлением своих акцио- сервис, предоставляющий доступ к опре- ЗНАМЕНИТОСТИ MEZZO неров. Но есть и хорошие новости – делённому количеству категорий программ, Novell в ближайшие месяцы собирает- Идея новаторского рабочего стола ся выпустить два важных продукта: предназначенных для установки одним Mezzo пришла в голову Джейсону SUSE Linux Enterprise Server и SUSE щелчком, включая игры, Интернет, мульти- Списаку, он в данный момент является Linux Enterprise Desktop, которые медиа и офисные приложения. лидером проекта Symphony наравне с должны принести прибыль, достаточ- Непременно попробуйте эту систему в Райаном Квинном. Списак также – соос- ную для всеобщего счастья. Будем действии, и хотя её последняя версия (на нователь Lycoris и по совместительству надеяться, что эта стратегия принесёт момент написания статьи это 2006-05 beta) актёр, озвучивающий мультфильмы и успех. пока что не является полнофункциональной игры – он принимал участие в озвучива- и содержит изрядное количество очевид- нии сериала 2001-го года Transformers: Robots in Disguise. Создатель системы Райан Квинн – ных ошибок, она гарантирует вам несколько Perl-хакер, интересующийся часов интересного времяпрепровождения. дизайном GUI.

14 LXF8(82) АВГУСТ 2006 www.linuxformat.ru DISTROWATCH Разбиение – запросто! GParted Live CD – бесплатное приложение типа Live CD для разбиения жёсткого диска

GParted Live CD – не столь- работающий с компакт-диска. После пары- большинство типов файловых ко дистрибутив Linux в тройки вопросов о выборе языка и расклад- систем (кроме FAT16 и FAT32) привычном смысле этого ки клавиатуры, загружается GParted – гра- нельзя перемещать. Главное, слова, сколько утилита, предназначенная фический интерфейс к GNU Parted с подде- что уменьшение раздела NTFS для упрощения процедуры разбиения жёст- ржкой drag-and-drop. Он сканирует жёсткие (системы, используемой в кого диска. Эту программу можно считать диски, определяя их текущее разбиение. Windows XP) поддерживается аналогом Partition Magic в мире бесплатных GParted поддерживает большинство хорошо! программ; и действительно, Live CD разме- популярных файловых систем: Ext2, Ext3, Помимо очевидной способ- ром 31 МБ – не только великолепный инс- FAT16, FAT32, JFS, ReiserFS, Reiser4, NTFS, ности работать с разделами, трумент разбиения диска, но он также нахо- XFS и несколько других. Все эти файловые GParted также обучен копиро- дится в свободном доступе, его можно бес- системы могут быть созданы с помощью вать разделы и жёсткие диски, платно использовать, модифицировать и нескольких щелчков мыши, но изменение что делает его отличной утили- распространять. их размеров – задача более сложная: неко- той резервного копирования и GParted: и утилита разбиения Как следует из его имени, GParted Live торые системы, например, ReiserFS и восстановления. жёсткого диска, и информатор о CD – это дистрибутив, загружающийся и Reiser4, не могут менять свой размер, а gparted.sourceforge.net файловых системах.

ХИТ-ПАРАД ДИСТРИБУТИВОВ 10 самых посещаемых страниц на DistroWatch.com в мае Мал, но мил (среднее число визитов в день) Austrumi Live CD – лёгкий, быстрый и эффектный. 1 Ubuntu Linux 2,817 2 SUSE Linux 2,596 3 Fedora Core 1,259 При попытке ранжировать 4 Mepis Linux 1,047 Рабочий стол программные проекты по 5 Mandriva Linux 914 Austrumi – 6 Damn Small Linux 902 степени близости к ком- Enlightenment – 7 Debian GNU/Linux 745 пьютерному эквиваленту понятия нирваны куда красивее, 8 FreeBSD 735 Austrumi Live CD подберётся к самой вер- чем Fluxbox из Damn Small Linux. 9 PCLinux OS 646 шине списка. А как иначе описать систему, 10 Knoppix 624 которая умещается на мини-CD размером 50 МБ, работает с нечеловеческой скоро- DistroWatch.com отслеживает популяр- стью, отлично выглядит и включает столько ность дистрибутивов, основываясь на программ, что с трудом верится в её загруз- количестве посещений сайтов, посвя- щённых конкретным дистрибутивам. ку всего за несколько минут? Ну, а если вам больше пары секунд. Хотя эти цифры и не отражают настоя- и этого мало – она ещё и понимает Почему бы и вам щее количество инсталляций, они явля- ются индикатором популярности дист- по-латышски! не скачать последнюю рибутива на данный момент времени. Созданный Андреем Мейнертсом версию? Но учтите, как [Andrej Meinerts], этот дистрибутив – насто- только она окажется на ящее чудо среди других мини-дистрибути- литы конфигурирования и даже серверы. вашем компьютере, будет очень сложно вов Linux. Он загружается, целиком копируя Поскольку все эти программы уже загруже- вернуться к старому дистрибутиву. LXF себя в ОЗУ для более быстрого доступа к ны в память, запуск любой из них не займёт http://sourceforge.net/projects/austrumi приложениям и для высвобождения CD- привода под другие, более интересные ИНТЕРЕС К UBUNTU РАСТЁТ И РАСТЁТ задачи, вроде проигрывания видео. Он так- же сам опознаёт состав аппаратуры, и не В Google за последнее время создано много полезных инструмен- успеете вы опомниться, как окажетесь в тов; один из них – Google Trends (www.google.com/trends), бес- Enlightenment 17 – нестабильной версии платный сервис, позволяющий отследить тенденции поисков по прекрасного легковесного рабочего стола, ключевым словам на этой популярной поисковой машине. Какие славящегося необычными визуальными темы интересуют людей и как этот интерес менялся с течением времени? Google Trends всё это знает. эффектами. Мы приводим графики количества запросов на пять слов: Крошечный Austrumi включает в себя Ubuntu, SUSE, Fedora, Mandriva и Debian. Результат подтверждает почти все мыслимые типы приложений феноменальный рост популярности Ubuntu – кривая начинается с рабочего стола. Тут есть AbiWord и Gnumeric нулевого числа поисков в середине 2004-го и в итоге опережает для офисных задач, Bluefish для редакти- все прочие поисковые слова в мире Linux. Тенденции поиска по рования HTML, Gimp и Inkscape для редак- остальным большим дистрибутивам остаются на постоянном тирования графики, Firefox, XChat, GFTP и уровне, с пиками около моментов релизов. Исключение составля- Были уже и Google Maps и Google Fight, а теперь Google Linphone для Интернет, MPlayer для проиг- ет Mandriva, к ней интерес за последний год был очень ровным. Trends сообщает, что нынче в моде. рывания мультимедиа, несколько игр, ути-

www.linuxformat.ru LXF8(82) АВГУСТ 2006 15 CCравнениеСРАВНЕНИЕр X-ТЕРМИНАЛЫавнение Каждый месяц мы просматривает тонны ПО, чтобы вам не приходилось заниматься этим самостоятельно.

X-ТЕРМИНАЛЫ НА ДИСКЕ Ах, настоящая работа с компьютером! Нейл Ботвик ныряет в омут терминалов, предлагаемых Linux.

Большинство пользователей строки в окне на вашем рабочем столе тора терминала – процесс глубоко личный; Linux начинают с использова- – здесь-то и появляется X-терминал, или, здесь мы постарались вам дать представле- НАШ ВЫБОР ния графического интерфейса. полностью, эмулятор X-терминала (назва- ние о том, какие есть приложения и каковы ДЛЯ СРАВНЕНИЯ Основные дистрибутивы снабжены отлич- ние выдает, что воспроизводится тупой ста- их сравнительные достоинства и недостатки. ными инсталляторами и инструмента- рый терминал ПК прошлых лет). Терминалы тестировались в разных средах, Aterm ...... 20 ми конфигурации, с которыми вы могли Запуск терминала на рабочем столе в основном это был Athlon 64, с KDE под прохлаждаться в комфорте графического означает, что вы сможете прочитать инс- Gentoo, и iBook с Gentoo и Fluxbox. Eterm ...... 20 интерфейса пользователя (GUI), но рано трукции в графическом web-браузере или Чтобы вам помочь, мы сконцентрирова- Gnome Terminal...... 19 или поздно каждый из нас покидал его почтовой программе, перед тем как выпол- лись на разнице между ними. При этом рас- Konsole ...... 19 ради командной строки. К примеру, какое- нить их в терминале. Все терминалы, рас- сматривались: количество имеющихся функ- Mlterm ...... 20 то нужное вам приложение не поставляется смотренные здесь, позволяют также встав- ций, простота использования и модификации Rxvt ...... 18 в качестве пакета в вашем дистрибутиве и лять скопированный из другого окна текст, этих функций, влияние внешних украшений Wterm ...... 18 поэтому приходится устанавливать его из так что вам, возможно, даже не придется – например, прозрачности – на производи- исходных текстов. Или оказывается, что набирать его – только не вздумайте по тре- тельность терминала и программы: увеличи- Xterm ...... 18 единственные доступные инструкции для бованию какой-нибудь web-странички вста- вается она или, наоборот, снижается. Yakuake ...... 17 выполнения вашей задачи подразумевают вить rm -fr /* ! Производительность – у командной Yeahconsole ...... 17 использование оболочки (shell). оболочки? А почему бы и нет: разница в А еще уважительнее следующая при- Проверка скорости скорости, с которой эти программы выво- измеряла затраченное на это время. Если чина: вы уж так наслушались, что оболоч- Считается, что X-терминалы обладают лишь дят текст, огромна; на большинство опе- ваше отношение к Linux серьезно (а раз уж ка – это хорошо, что захотели сами в ней базовыми функциями, но в большинстве раций это, может быть, и не повлияет, вы читаете Linux Format, так оно, видимо, поработать. Можете нажать Ctrl+Alt+F1 и своем они имеют широкий выбор пользова- но иногда бывает важно. Мы измеряли и есть), вы проводите немало времени в выйти в чистую консоль Linux, но зачастую тельских опций или интегрированы с опреде- скорость с помощью программы, которая своем любимом терминале, так что читайте куда удобнее запустить сессию командной ленной средой рабочего стола. Выбор эмуля- выводила длинный текст в терминал и внимательно…

16 LXF8(82) АВГУСТ 2006 www.linuxformat.ru СРАВНЕНИЕ X-ТЕРМИНАЛЫ

Yakuake Quake знакомится с командной строкой

• ВЕРСИЯ: 2.7.5 • WEB: http://extragear.kde.org/apps/yakuake • ЦЕНА: Бесплатно по лицензии GPL

Yakuake – это ответвление Kuake, которая позволяет вам запускать команды, заброшенного больше двух лет назад. Это но не дает увидеть результат. терминал в стиле Quake, вываливающийся Yakuake основан на Konsole, и позаимс- из верхней части дисплея, когда вы нажи- твовал оттуда функции типа полос прокрут- маете клавишу. Если, по-вашему, эмулятор ки, настраиваемых вкладок и прозрачности. терминала на базе одной из функций стре- Yakuake даже медленнее, чем Konsole (см. лялки – это круто, берите его. Терминал стр. 35), но это не тот терминал, который Quake основан на предположении, что может стоит использовать для задач с большой потребоваться быстро показать и спрятать нагрузкой, требующих скорости. Yakuake может изменять внешний вид, его в любой момент игры; такой постулат Еще одно различие между Yakuake и и хотя поставляется только с одной «шкур- Yakuake – нетривиальная альтернатива можно применить и к использованию обыч- окном X-терминала – Yakuake открывает- кой», остальные можно найти на www.kde- стандартам Gnome и KDE, и его стоит ного рабочего стола – если вам надо выпол- ся на всех рабочих столах, поверх всех look.org, кроме того, там имеется подсказ- исследовать. нить пару командных строк, то не придется окон, благодаря чему его не потеряешь. ка по созданию собственного дизайна. открывать терминал, выполнять команды и Это отличное свойство в следующем рели- ТЕРМИНАЛЫ, закрывать его снова: просто нажмите горя- зе будет опциональным. Вы настраивае- ВЕРДИКТ LINUX FORMAT ОБОЛОЧКИ И чую клавишу – и терминал перед вами. те свойства Konsole обычным способом, Этот терминал скорее годится не для КОМАНДНЫЕ Yakuake сохраняет свое состояние меж- а собственные настройки Yakuake можно напряженных сессий оболочки, а для ду сессиями, и это куда полезнее, чем изменить, редактируя недокументирован- быстрых задач, но уж для них-то он СТРОКИ открытие нового окна всякий раз, как вам ный файл конфигурации на ~/.kde/share/ весьма полезен. понадобится командная строка. Это ста- config/Yakuakerc. Полезная информация РЕЙТИНГ 7/10 При описании среды командной строки на вит его где-то между постоянно открытым в этом файле позволит вам сэкономить терминалах используется целый ряд тер- окном X-терминала и мини-консолью KDE, немало времени. минов (извините за каламбур), порой вза- имозаменяемых. Мы попытаемся выло- вить рыбку смысла в этой мутной водице. Использование слова «терминал» вос- ходит к прошлому, ко временам больших Yeahconsole компьютеров, доступ к которым предо- ставлялся через отдельное устройство, называемое тупым терминалом (dumb Всплывающий терминал в стиле Quake terminal). Эмулятор X-терминала, рас- сматриваемый здесь – это программа, • ВЕРСИЯ: 0.3.4 • WEB: http://phrat.de/yeahtools.html выполняющая ту же функцию, но в окне, • ЦЕНА: Бесплатно по лицензии GPL расположенном на рабочем столе. Обычно терминал используется для пере- Yeahconsole – еще один терминал в Yeahconsole. По умол- дачи команд компьютеру, на котором он запущен, но можно соединить его окно и с стиле Quake, похожий на Yakuake. Различие чанию – Xterm, снаб- другим компьютером, через сеть. между ними в том, что Yakuake основан на женный лишь самым Консоль, или виртуальная консоль – Konsole, и поэтому для работы ему нужна необходимым, но это чисто текстовый интерфейс. Именно хотя бы часть KDE, тогда как Yeahconsole зато всегда имею- ее вы видите, когда загружаете Linux без использует свободный от зависимостей щийся под рукой. использования X: возникающая подсказ- Xterm. Можно также взять ка ввести учетную запись находится на Если вы нажмете нужное сочетание терминалы Urxvt или виртуальной консоли. Большинство дис- горячих клавиш, в верхней части экрана Urxvtc из ответвле- трибутивов Linux имеют шесть консолей, выплывет окно Yeahconsole. Оно появит- ния Rxvt с добавкой в которые можно выйти, нажав ся на всех ваших виртуальных рабочих Unicode. Ctrl+Alt+F1…6 (Ctrl+Alt+F7 обычно нажи- столах, поверх всех окон. У вас все время мают, чтобы выйти на рабочий стол). Оболочка – это программа, работаю- будет одна и та же сессия терминала – он Производительность Yeahconsole щая в терминале или виртуальной консо- просто либо прячется, либо показан, а не отнюдь не выдающаяся, особенно при ли. Оболочка – настоящий интерпретатор остановлен и перезапущен. Можно, прав- использовании Xterm, но дело не в этом. Yeahconsole предлагает мгновенный доступ к терминалу с оттенком легкой командной строки, который считывает да, настроить его и на старт сессии с нуля Yeahconsole предназначен не для труд- Quake-ностальгии. набираемые вами команды и выполняет при каждом появлении, но это не является ных терминальных задач, а для быстрого их. Существует несколько оболочек, но установкой по умолчанию и для большинс- выполнения случайных команд, не сходя с почти все дистрибутивы по умолчанию тва пользователей не особо удобно. рабочего стола, и с этой задачей справля- ВЕРДИКТ LINUX FORMAT используют Bash (Bourne Again Shell – Yeahconsole настраивается через файл ется очень хорошо. Он не обладает богатс- Далек от гибкости Yakuake, но зато «Возрожденная» оболочка, намек на пер- полегче и не зависит от рабочего стола. ~/.Xdefaults; можно задать размеры и твом функций Yakuake, но станет хорошим вичную оболочку Bourne в Unix), хотя положение окна, скорость всплывания дополнением рабочего стола для всех, кто РЕЙТИНГ 6/10 многие ругаются с компьютером через оболочку zsh с www.zsh.org. окна и горячие клавиши. Некоторый набор не работает в KDE. терминалов можно использовать и внутри

www.linuxformat.ru LXF8(82) АВГУСТ 2006 17 СРАВНЕНИЕ X-ТЕРМИНАЛЫ

Xterm Прототерминал: все еще скудный, все еще медленный

• ВЕРСИЯ: 212 • WEB: http://dickey.his.com/xterm • ЦЕНА: Бесплатно по лицензии MIT X11

Это самый первый X-терминал, но ветствующих меню (прочие установки ука- он все еще в активной разработке. В нем не зываются в командной строке), уж эти-то найдется ни вкладок, ни меню, ни прозрач- меню уникальны. Правда, они не позволяют ности, ни профилей, и вообще никаких осо- сохранить текущую настройку – редакти- бых свойств, отличающих другие термина- руйте файл ~/.Xresources. лы данного Сравнения. Вы можете поду- Кто-то, наверное, скажет, что Xterm не ВЕРДИКТ LINUX FORMAT мать, что он зато быстрый и эффективный – стоит выбрасывать на свалку, потому что Xterm самый медленный и бедный а вот и нет. На самом деле Xterm медленнее благодаря отсутствию зависимостей он Причины рекомендовать этот терминал терминал нашего обзора – но зато решительно отсутствуют – разве что зависимостей у него меньше всех. абсолютно всех рассмотренных терминалов, выручит в аварийной ситуации, но, если смутное желание эмулировать что-нибудь причем здорово медленнее. Шрифты, цве- одна из наших машин дойдет до жизни этакое. та и эмуляцию, а заодно и другие опции, такой, что на ней не заработает ни один из можно настраивать нажатием Ctrl и одной других описанных терминалов, мы уж луч- РЕЙТИНГ 3/10 из трех кнопок мыши для вызова трех соот- ше нажмем Ctrl+Alt+F1. Rxvt Функций – минимум, скорость – потрясающая

• ВЕРСИЯ: 2.7.10 • WEB: www.rxvt.org • ЦЕНА: Бесплатно по лицензии GPL

Rxvt («Наш виртуальный X-терми- ся через параметры командной строки, нал») вознамерился стать быстрой и лег- а также добавлением опций в ваш файл кой заменой для Xterm, отказавшись от ~/.Xresources, и настройки нельзя эмуляции Tektronix и меню, и достиг успе- менять, пока работает Rxvt. Единственная Недостаток свойств Rxvt искупает быстротой. Кому нужна версия ха: его скорость в 15 раз выше скорости уступка любителям красивостей – возмож- со вкладками, переходите на Mrxvt (не показан). Xterm. Достиг, однако, дорогой ценой: Rxvt ность поместить фоновый рисунок в окне лишь чуть получше простейшего терми- терминала. Некоторым это нравится, но по Вкладки – хорошее подспорье при работе ВЕРДИКТ LINUX FORMAT нала. Это вовсе не всегда плохо: базовые жизни приводит только к ухудшению чита- более чем в одной сессии оболочки одно- Rxvt имеет мало функций, использует свойства плюс быстрота и отсутствие изли- емости текста. временно. Если вам из всех дополнитель- мало ресурсов и очень быстр. шеств – многим пользователям именно это Если вам нужна функциональность ных функций, предоставляемых терминала- Попробуйте его на старых системах. и нужно. чуть пошире – попробуйте Mrxvt. По сути, ми, нужна только эта, Mrxvt может оказать- РЕЙТИНГ 6/10 Настройка Rxvt не особо дружествен- это Rxvt со вкладками, при той же скоро- ся лучшим выбором. ная. Вся конфигурация устанавливает- сти и почти таком же минимуме функций. Wterm Оптимизирован для WindowMaker и GNUstep

• ВЕРСИЯ: 6.2.9 • WEB: www.wterm.org • ЦЕНА: Бесплатно по лицензии GPL Будьте осторожны при Это – ответвление Rxvt: man-страни- а фича» (KDE отображает свой фоно- выборе цветов ца Wterm ссылается на него как на Rxvt, и вый рисунок поверх корневого окна X). для шрифтов большинство ранних комментариев к Rxvt Поскольку Wterm не заботится об уступках и фона. можно отнести и к Wterm. Основное раз- хорошему вкусу, будьте осторожны при личие – интеграция Wterm с WindowMaker, выборе цвета шрифта и фонового рисун- его скорость удовлетворит и взыскатель- ВЕРДИКТ LINUX FORMAT которая придает ему сходство с GNUStep. ка, если используете прозрачность, еще ных пользователей. Wterm также обладает настраивае- и потому, что великое множество цве- Wterm гармонично сочетается с Если вам не нужна интеграция с Window- Maker, то от Wterm вам ждать нечего. мой прозрачностью, превращающей текст тов используется для отображения фай- WindowMaker и/или GNUStep по внешне- в нечто невразумительное – по крайней лов разного типа. Терминал почти столь му виду; другие козыри против Rxvt у него РЕЙТИНГ 5/10 мере, при работе в Fluxbox. Это не рабо- же быстр, как Aterm и Eterm, то есть не вряд ли найдутся. тает в KDE, что, возможно, есть «не баг, настолько неприлично быстр, как Rxvt, но

18 LXF8(82) АВГУСТ 2006 www.linuxformat.ru СРАВНЕНИЕ X-ТЕРМИНАЛЫ

Konsole Прибамбасы-причиндалы… и звонки впридачу

• ВЕРСИЯ: 3.5.2 • WEB: www.kde.org • ЦЕНА: Бесплатно по лицензии GPL

Konsole — типичное приложение Terminal быстрее почти в два раза, а Rxvt KDE: в нем больше опций настройки, чем прокручивает текст в восемь раз быстрее. семечек в арбузе. Полосы прокрутки отоб- Главным образом, в этом повинно исполь- ражаются на любой из сторон окна либо зование в Konsole сглаженных шрифтов — не отображаются вообще. Вкладки могут запустите его с помощью опции --noxft, появляться вверху, внизу или вообще ниг- и скорость показа текста удвоится. де. Даже если они скрыты, Konsole умеет рулить несколькими терминалами в одном Сэкономить время окне, а для переключения с одного на дру- Если вы захотите войти в директории обще- гой используется клавиатура — чтобы го пользования, благодаря меню закладок вывести на экран максимальное количест- Konsole (Bookmarks) понадобится меньше во текста, войдите в полноэкранный режим, ручного набора; даже при наличии функ- скрывающий вкладки и меню. ции автодополнения те, кто медленно печа- Konsole способен сохранять варианты тает, согласятся, что это меню — самый настроек, включая текущую директорию быстрый способ навигации. Поскольку и команды, которые вы хотите запустить, Konsole — приложение KDE, почти каж- в профиле. Профиль текущей оболоч- дое действие можно привязать к горячим ки, в отличие от Gnome Terminal, сменить клавишам (shortcut), которые вы сами нельзя, но вы можете загрузить профиль назначаете. Терминал с невообразимым количеством функций. Konsole сделает все, что в другую вкладку, удерживая кнопку сле- Как и следовало ожидать, Konsole хоро- вообще можно сделать – разве что порой слегка подтормаживая. ва внизу окна. Имеется несколько предо- шо интегрирован с остальными програм- пределенных профилей, включая работу мами KDE. Перетащите файл из Konqueror тоже хороша и отлично интегрирована ВЕРДИКТ LINUX FORMAT в Midnight Commander. в Konsole – и у вас появится выбор: скопи- с Информационным Центром KDE (KDE Konsole – полнофункционален и всеобъ- Если у Konsole есть ахиллесова пята, ровать файл, или переместить его, или че- Help Centre). Есть и другие милые мелочи, емлющ, и делает работу в оболочке гораз- то это – скорость (точнее, ее отсутствие). рез cd забраться в его директорию. Причем например, функция уведомления о завер- до эффективнее. Но для увеличения ско- Возможно, для большинства пользователей это касается не только локальных фай- шении команды в одной из вкладок, то есть рости отключите сглаживание шрифтов. терминалов скорость не играет важной роли, лов: для загрузки в текущую директорию мирно работая на одной вкладке, вы узнае- РЕЙТИНГ 9/10 но в конфигурации по умолчанию Konsole Konsole вы можете перетащить даже ссыл- те, что завершилось выполнение команды, работает действительно медленно. Gnome ку с web-страницы. Документация у Konsole запущенной на другой. Превосходно. Gnome Terminal Богатый функциями терминал по умолчанию для Gnome

• ВЕРСИЯ: 2.14.4 • WEB: www.gnome.org • ЦЕНА: Бесплатно по лицензии GPL

Если вы используете дистрибутив на ный диапазон настроек, включая шрифты, основе Gnome, например, Fedora Core или цвета, положение полосы прокрутки (или ее Ubuntu, вы, наверное, и не знаете других отсутствие), цвет фона или прозрачность, а терминалов. И это не так уж плохо: Gnome также работает ли оболочка в режиме «login С украшательством или без, Terminal – программа добротная, с под- shell». Вы можете также задать команду, Gnome Terminal – программа, с держкой таких функций, как вкладки или которая будет запускаться вместо стандарт- которой легко работать. история прокрутки для помощи при работе ной оболочки, что позволяет создавать про- в оболочке. Пусть над ними глумятся кру- фили для отдельных приложений, напри- тые пользователи терминалов, но зато они мер, для Midnight Commander или Lynx. мещать огромные тексты на медленном ник, так что вы сможете извлечь максимум делают рабочий процесс более удобным и Благодаря профилям настраивать оборудовании: 12 000 строк в секунду на пользы из имеющихся функций. дружественным. Вкладки – тоже исключи- Gnome Terminal проще, чем любой другой Athlon 64 – это намного больше, чем может тельно полезное дополнение, позволяющее терминал из нашего Сравнения, но по прочесть большинство из нас. ВЕРДИКТ LINUX FORMAT открыть несколько оболочек или экранных умолчанию профили отсутствуют. Использование памяти зависит от сре- Легко настраиваемый, хотя сессий (screen sessions) в одном окне. Gnome Terminal работает медленнее, ды рабочего стола, в которой вы работаете: и обладающий меньшим количеством Gnome Terminal использует профи- чем большинство других терминалов в этот терминал рассчитан на работу с Gnome, опций, чем Konsole, Gnome Terminal успешно дополняет рабочий стол Gnome. ли для сохранения свих настроек, так что нашем Сравнении, тем не менее он почти тогда все соответствующие библиотеки переключение на совершенно непохожую в два раза быстрее Konsole (в режиме по будут загружены и использование ресур- РЕЙТИНГ 8/10 конфигурацию сводится к выбору нового умолчанию). Насколько эта быстрота важна сов будет минимальным. Кстати, у Gnome профиля из меню. Профиль содержит пол- для вас, зависит от того, нужно ли вам пере- Terminal есть еще очень удобный справоч-

www.linuxformat.ru LXF8(82) АВГУСТ 2006 19 СРАВНЕНИЕ X-ТЕРМИНАЛЫ

Eterm Терминал Enlightenment – быстр и привлекателен

• ВЕРСИЯ: 0.9.3 • WEB: www.eterm.org • ЦЕНА: Бесплатно по лицензии GPL

Eterm создан для интеграции со сре- Eterm имеет меню для настройки дой рабочего стола Enlightenment, но рабо- шрифтов, фона и прозрачности, так что нет тает с любым менеджером окон или с необходимости лазить по справке и затем Eterm: компромисс между любой другой средой рабочего стола. По перезапускать терминал для того, чтобы минимализмом и перебором.. части скорости Eterm занимает место где- все это изменить. Естественно, при жела- то посередине списка конкурсантов: впо- нии вы можете также указать эти опции в ВЕРДИКТ LINUX FORMAT ловину медленнее, чем Rxvt, но намного командной строке или в конфигурацион- Eterm находится ровнехонько посреди быстрее, чем Xterm или Konsole. В отноше- ном файле. пользователя над настройками темы, что ассортимента – отличный выбор для тех, кто любит минимальные, но нии функциональности он тоже занимает На сайте www.eterm.org/themes мно- позволяет просто взять существующую привлекательные среды рабочего стола. промежуточную позицию, чего и следует го тем для Eterm. Скачайте тему, распакуйте тему, поковыряться в опциях и затем сохра- ожидать от программы, разработанной для в $HOME/.Eterm/themes – и при запуске нить настройки пользователя, все из меню РЕЙТИНГ 7/10 Enlightenment, привлекательного и легкого Eterm сможете преобразить его внешний Eterm. Eterm быстр, мало весит и легко оконного менеджера. вид. Eterm отдает приоритет настройкам настраивается.

При всем блеске, Aterm – весьма Aterm обычный эмулятор терминала. Уж Командная строка, доселе невиданная извиняйте!

• ВЕРСИЯ: 1.0.0 • WEB: http://aterm.sourceforge.net • ЦЕНА: Бесплатно по лицензии GPL

Aterm являет собой развитие Rxvt, с своего босса, что не трудитесь в поте лица, упором на приятные для глаза визуальные а занимаетесь хакерством. эффекты. Эффектов навалом: фоновые Чтобы воспользоваться некоторыми читаемый текст на простом контрастном ВЕРДИКТ LINUX FORMAT рисунки, прозрачность, полупрозрачность с из этих функций, понадобится установить фоне, то прозрачность и фоновые рисун- Не более чем базовый терминал, разве что настраиваемой насыщенностью тона (чтобы оконный менеджер AfterStep. Выберете вы ки только увеличивают размер и снижают с чрезмерными визуальными эффектами. текст оставался читаемым). Можно даже эту программу или нет, будет зависеть от скорость работы программы, хотя Aterm РЕЙТИНГ 5/10 обесцветить текст, щелкнув вне окна – того, насколько для вас важна внешняя при- перелопачивает тексты большого объема во очень удобно, когда вы хотите скрыть от влекательность: если вам нравится простой вполне приличном темпе. Mlterm Исчерпывающая поддержка всех кодовых таблиц

• ВЕРСИЯ: 2.9.3 • WEB: http://mlterm.sourceforge.net • ЦЕНА: Бесплатно по лицензии BSD

На первый взгляд, Mlterm – выли- лы двойной ширины, подобные использу- тый Rxvt или Xterm, но нажмите и удержи- емым в восточно-азиатских языках, а еще те Ctrl и щелкните правой кнопкой мыши Mlterm работает с языками, где написание в окне – и р-раз! – он откроет конфигу- идет справа налево, например, с арабс- Если вы пишете иероглифами или справа налево, то Mlterm – терминал рационное окно GTK2. Число опций впе- ким и ивритом. Поддерживаются и индий- для вас. чатляет – здесь имеется обычный набор ские шрифты в кодировке ISCII, хотя авто- шрифтов, цветов и прозрачности, но ключ ры программы пока считают эту функцию ВЕРДИКТ LINUX FORMAT к главной функции Mlterm лежит во вклад- экспериментальной. Простая настройка и лучшая поддержка ке Кодировка (Encoding). Этот терми- Если вы не задали настройки сами, языков превращают этот ничем иным не нал – для тех, кто использует не латини- Mlterm автоматически выберет правильную примечательный терминал в идеальный цу, и само название Mlterm – сокращение кодировку на основе ваших локальных уста- выбор для работающих с языками Азии и Ближнего Востока. от «эмулятор многоязыкового терминала» новок. Естественно, вы сможете ее изме- и, очевидно, зависит от набора используе- (multi-lingual terminal emulator). Он имеет нить, если вам понадобится поработать с мых символов, но если вам надо писать и РЕЙТИНГ 6/10 полную поддержку Unicode, но это еще другим языком. Mlterm был написан с нуля. слева направо и справа налево, то выбор не все. Поддерживаются сложные симво- Производительность у него не выдающаяся у вас невелик.

20 LXF8(82) АВГУСТ 2006 www.linuxformat.ru СРАВНЕНИЕ X-ТЕРМИНАЛЫ

KONSOLE X-ТЕРМИНАЛЫ 9/10 ВЕРДИКТ

Если вы сразу открыли эту стра- ке, то лучше всего остановить- ницу, чтобы узнать, какой тер- ся на Eterm. Возможно, Eterm минал самый лучший, примите понравится тем, кто работа- наши извинения – жизнь не всегда столь ет с «минималистическими» прямолинейна. Выбор терминала зависит менеджерами окон, например, от ваших потребностей и, в какой-то сте- с Enlightenment, IceWM или пени, от среды рабочего стола, в которой одним из вариантов *box. вы работаете. Если желаете, чтобы фон Для пользователей рабо- рабочего стола сверкал сквозь текст, може- чих столов-тяжеловесов, те забраковать половину рассматриваемых Gnome и KDE, более знако- конкурентов. Так вышло, что ни одна из мыми, возможно, окажут- этих программ не может предложить вам ся собственные терминалы прозрачности в чистом виде: только псевдо- рабочего стола, которые и Все, что нужно от терминала, и кое-что еще. прозрачность, копирующую соответствую- станут для них наилучшим выбором. Да, у Победа была бы за Konsole уже благодаря щую часть фона рабочего стола в окне тер- Konsole намного больше опций, чем у Gnome одному только управлению сессиями. минала (на самом деле окон под термина- Terminal, но это иллюстрирует разницу меж- ДЛЯ ВАС Мы не включили лом увидеть нельзя). Эта функциональность ду философией KDE и Gnome. Те, кому нуж- в Сравнение вашу любимую прогр придет от Х и самих оконных менеджеров по на возможность дополнительных настроек Запустив парочку screen-сессий, каждую амму? Вам кажется, что сравнение мере того, как вещи вроде Compmgr станут Konsole, очевидно, уже работают в KDE. в отдельной вкладке, заодно с Midnight терминалов – лучшее, что было со стабильнее. Ладно, хватит топтаться на меже. Commander, причем кое-что из вышепере- времен последнего лучшего-чт было? Напишите нам об этом нао- Если вам нужен минималистский тер- Правила требуют, чтобы был назван победи- численного будет еще и работать на удален- letters@linuxformat. минал без всякого украшательства, то луч- тель, и им должен стать Konsole. Большой ном сервере через SSH, вы сможете оце- ru. шим выбором станет Rxvt. Если нужно нечто выбор опций и простота их использования нить мощь и гибкость, предлагаемые этой попривлекательнее и попроще в настрой- превращают его в выдающийся терминал. программой. LXF

ТАБЛИЦА СРАВНЕНИЯ ФУНКЦИЙ

Gnome Aterm Eterm Konsole Mlterm Rxvt Wterm Xterm Yakuake Yeahconsole Terminal

Скорость 4/5 4/5 2/5 2/5 2/5 5/5 3/5 1/5 2/5 1/5

Графический фон Прозрачный фон

Темы

Вкладки

Профили

Меню

Настройка через GUI Выбор горячих клавиш Текст, читаемый справа налево

(1) Воспользуйтесь Mrxvt, с сайта http://materm/sourceforge.net, для получения вкладок в Rxvt.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 21 ТРИ ПАТЕФОНА

ТТРИРИ ПАТЕФОНА Петр Семилетов представляет вашему вниманию обзор трех аудиоплейеров.

Лет сто тому назад, желая послу- торы. Музыкальные инструменты – в VST- Пользователь сам выбирает цвет «позоло- Gstreamer – в плейерах Gnome/GTK. Хотя, шать пение Федорова Ивановича плагины. Магнитофоны и проигрыватели ты»! А ручку завода крутит таймер операци- никто не мешает использовать Xine в про- Шаляпина на дому, человек шел компакт-дисков тоже перешли в цифровое онной системы. грамме на основе GTK, а Gstreamer – в в лавку и покупал блестящий, будто отпо- измерение. С момента появления XMMS прошло KDE, что некоторые плейеры и делают. лированный самовар, граммофон. Тогда В Linux первыми появились консоль- уже почти десять лет. За это время появи- Функциональность Xine и Gstreamer выхо- это было дорогое удовольствие – больше ные плейеры: cdp, mpg123. Справедливости лись десятки, если не сотни других плей- дит далеко за пределы воспроизведения полусотни рублей за штуку, да пластинки ради отметим, что занимают они куда мень- еров. Прежде чем приступить к обзору звуковых форматов – поддерживается еще по трешке. Дешевле было выучить ноты и ше места, нежели граммофон, да и лег- наиболее интересных (на мой взгляд) из и видео, однако это уже выходит на рамки играть на фортепиано, или на балалайке че его по весу. Но – не такие красивые. них, сделаю несколько предварительных нашей статьи. без всяких нот. Но – песни Шаляпина или Думается, поэтому возникли в Linux плейе- замечаний. Обычно «монолитные» плейеры отли- Вяльцевой, исходящие из волшебной тру- ры с графическим интерфейсом. Одним из В настоящее время среди плееров наме- чаются друг от друга только интерфейсом бы чудо-машины, оставались уделом арис- «первых ласточек» стал XMMS, созданный тились две основные архитектуры. Первая – и набором функций утилитного характера, тократии или купцов. Покрутил купец ручку по образу и подобию Winamp. В самом плейер на основе подключаемых моду- к воспроизведению музыки отношения не граммофона, сел за стол, узорчатой скатер- деле, зачем изобретать велосипед, если лей, «старая школа» а-ля XMMS. Ярким имеющего. Большинство таких плейеров тью крытый, и сидит слушает, чай из блюд- уже готовы его чертежи? представителем таких плейеров является оснащены мощными функциями ведения ца попивает. Сахарок – вприкус. А Федор Winamp предлагал удобную архитекту- Audacious, о котором мы поговорим ниже. коллекции композиций, хранящейся на жес- Иванович Шаляпин басит, басит... ру плейера. Распознавание форматов обес- Второй архитектурный подход – монолит- тком диске, и даже святая святых – окно Вечно только искусство, а не техничес- печивают подключаемые модули. Вывод ный плейер, использующий для ввода/ плейера с элементами управления – играет кие средства его передачи. Граммофоны звука на различные устройства – опять- вывода звуковых данных один из популяр- в них второстепенную роль. Списки песен, уступили место патефонам, а те – электро- таки посредством расширений. Визуальные ных мультимедийных движков. Речь идет о составленные по различным критериям, фонам. На пороге двадцать первого века эффекты – снова они. Наконец, механизм таких решениях, как Xine и Gstreamer. По быстрый поиск нужной композиции – вот наступила эпоха виртуализации. Печатные сменных «шкурок». Это же граммофон с моим наблюдениям, Xine более популярен конек «монолитных» плейеров. машинки превратились в текстовые редак- бесконечным набором иголок и мембран. в качестве движка в проектах KDE/Qt, а

22 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ТРИ ПАТЕФОНА

Audacious Представитель старой школы

• ВЕРСИЯ: 1.1 • WEB: http://audacious-media-player.org/ • Цена: лицензии GPL

Плейер XMMS, как известно, написан песен. Какие-либо функции по ведению под библиотеку GTK+1, то есть под «ста- коллекции песен и поиску в этой коллекции рую» GTK. Уже много лет как появилась отсутствуют. GTK+2, с измененной архитектурой и более Число модулей в дистрибутиве с отвечающая требованиям современности. исходными текстами достаточно вели- Но XMMS продолжал писаться под первую ко. Поддерживается MP3 (с алгоритмом GTK, а со временем вообще практически декодера от mpeg123), Ogg, WMA, WAV, перестал разрабатываться. трекерные форматы (посредством движ- Время от времени предпринимались ка Modplug), форматы музыки от игро- попытки портировать его на GTK+2, пока вых приставок Sega Genesis/Megadrive, за дело не взялась команда разработчиков, NES (известна у нас как Dendy), аудио поставившая себе цель создать на базе CD с цифровым считыванием, MIDI и кода XMMS новый плейер. Плейер этот некоторые другие форматы. Как видите, назывался Beep Media Player, который поз- Audacious построен по принципу «все свое же был переименован в краткое BMP. несу с собой». Вдоволь покритиковав код XMMS за Среди модулей, отличных от средств запутанность, команда BMP ударными тем- декодирования, хочется отметить Song пами начала портировать его на GTK+2. Change, при помощи которого можно Затем произошло вот что – разработчики направить данные о текущей песне (напри- BMP решили, что плейер надо радикально мер, ее название) во внешний файл. Также переделывать. Дескать, довольно таскать любопытен LADSPA host, который позволя- за собой звуковой движок, надо исполь- ет «навесить» на канал вывода один или зовать Xine или Gstreamer. Разработка несколько подключаемых модулей форма- BMP прекратилась, команда взялась за та LADSPA. Их разработано огромное коли- BMPx – вначале с движком Xine, затем – чество (только сотня штук лежит одним Gstreamer. BMPx имеет очень мало общего архивом на http://plugin.org.uk). Среди них кода с BMP. всё – и эквалайзеры, и нормализаторы Между тем, от «классического» BMP звука, и различные эффекты. Фактически, отпочковался проект, который получил при использовании пакета таких расши- название Audacious. Этот плейер в лучших рений у вас отпадает нужда в каких-либо традициях продолжает архитектуру XMMS, дополнительных средствах обработки звука то есть основан на подключаемых модулях: в Audacious. звукового сервера, активно использующе- отличие от аналогичной функции доступа к для ввода, вывода, визуальных эффектов. Кратко коснемся модулей вывода звука. гося в программах обработки звука и созда- CDDB в Amarok). Audacious можно расценивать как преем- Разумеется, в наличии и Disk Writer, поз- ния музыки. Однако, на момент написания этих ника XMMS. воляющий записывать воспроизводимый В плане «шкурок» Audacious совмес- строк, проект www.freedb.org остановлен Выглядит плейер традиционно – три звук в WAV-файл. А среди современных тим с Winamp 2, XMMS и BMP. Интерфейс из-за неких разногласий между его разра- плавающих, с возможностью «склейки», драйверов вывода, помимо ALSA, присут- большей частью русифицирован. А вот с ботчиками. Хотя база данных по-прежнему окошка – сам плейер, эквалайзер и список ствует также драйвер Jack – популярного поддержкой русских тэгов дело обстоит доступна, неизвестно, сколь долго это будет хуже. В версии 1.0 была нормально реа- продолжаться. В случае чего можете поп- лизована возможность выбрать кодировку робовать бета-версию нового сервиса на тэгов для MP3-файлов, и настраиваласьона основе старой FreeDB – freedb2.org (http:// в опциях декодера MP3. А в новой версии freedb2.org/~cddb/cddb.cgi). плейера, функцию выбора кодировки пере- Итак, Audacious – плейер для люби- несли на страницу «Список воспроизве- телей классического дизайна, подобного дения» окна настроек, и должен отметить, старому Winamp 2.x/XMMS, однако со мно- что задуманное разработчиками не работа- жеством новых функций. С другой стороны, ет (во всяком случае, на моем компьюте- плейер может разочаровать тех пользовате- ре). Прописываю нужную мне кодировку – лей, которые привыкли к тому, что их музы- все равно русские названия отображаются ка всегда под рукой в виде автоматически «крякозяблами». составленной коллекции. Именно для таких Модуль поддержки простых музыкаль- пользователей я могу посоветовать два ных CD в Audacious способен искать назва- следующих в нашем обзоре плейера. ния песен в базе данных CDDB (по умолча- нию это www.freedb.org). Скачав названия дорожек диска один раз, в следующий раз плейер прочитает их уже с локального дис- ка, то есть данные с CDDB кэшируются (в

www.linuxformat.ru LXF8(82) АВГУСТ 2006 23 ТРИ ПАТЕФОНА Gmusicbrowser Написан на Perl и гибок в настройке

• ВЕРСИЯ: 0.953 • WEB: http://squentin.free.fr/gmusicbrowser/gmusicbrowser.html • Цена: лицензия GPL

Сразу признаюсь, что это мой основной плейер. После долгих душев- ных терзаний я перешел на него с Amarok. Gmusicbrowser написан на языке Perl и в качестве звукового движка использует Gstreamer, а если по каким-либо причинам это невозможно, то Gmusicbrowser будет воспроизводить музыку через консольные плейеры mpg321, ogg123 и flac123 (разу- меется, консолей этих плейеров вы не уви- дите – все происходит скрытно, под сенью интерфейса на GTK+2). Обратите внима- ние на название первого плейера – именно mpg321, а не mpg123. mpg321 декодирует MP3, используя целочисленные алгорит- мы библиотеки MAD, которая обеспечивает отменное качество звука. Если сравнивать его с звучанием MP3 у движка Xine, то в MAD звук получается более сочным, более живым. А в сравнении с mpg123 у MAD звук более, я бы сказал, теплый. Кстати, Gstreamer тоже декодирует MP3 через MAD-плагин. У Gmusicbrowser на первый взгляд довольно неказистый интерфейс. Исключительно стандартные элементы управления GTK+2, никакой поддержки «шкурок». Есть несколько режимов внешне- го вида плейера – настраиваются они в окне настроек, на вкладке Misc – там есть опция Player windows layout со списком доступ- ние альбома, жанр, дата, каталог располо- ное окно», если в Gmusicbrowser применим Список песен оснащен удобным кон- ных значений. Лично мне более удобным жения и флаги. такой термин вообще. текстным меню, из которого можно удалять, кажется режим «with browser» (смотрите Что за флаги такие? В Gmusicbrowser После некоторых изысканий обнару- копировать, перемещать и переименовы- иллюстрацию). Кстати, интерфейс плейера вы можете помечать файлы разными живается, что плейер способен на многое. вать файлы, а также экспортировать их во ни капельки не русифицирован. флажками. Есть предустановленные фла- Например, он может отображать обложки к внешний файл формата m3u. Из того же Gmusicbrowser умеет воспроизводить ги – например, бутлег (редкая, чаще всего альбомам. Можете выбирать их сами из чис- меню можно вызвать мощный редактор только файлы, добавленные в его вирту- концертная запись, не попавшая в офици- ла локальных файлов, а можете скачать из тэгов. Кстати, с его помощью можно редак- альную библиотеку. Составляет он ее авто- альные альбомы). Можно создавать и свои Интернета. Если Amarok вытягивает изобра- тировать тэги не только одного, но и мно- матически – вам надо лишь указать, в каких собственные флаги – скажем, «Любимые жения обложек с Amazon, то Gmusicbrowser жества файлов одновременно. Кроме того, каталогах искать музыкальные файлы. При песни». Кроме того, каждой песне можно использует для тех же целей Google. если выделено два или более файлов, то этом скорость сканирования выше, нежели выставить рейтинг. Кроме того, есть функция, отсутству- в контекстном меню списка песен появит- у Amarok. Доступ к базе данных осущест- Над панелью списка песен расположе- ющая в Amarok – можно задать картинку ся пункт Mass rename, предназначенный вляется через достаточно сложную систему но поле быстрого поиска по нескольким не только для альбома, но и для группы/ для массового переименования файлов по списков. Ведутся динамические списки по десяткам критериев, причем в поиске мож- исполнителя. Далее, из пункта меню Main заданному образцу. И еще одно замечание таким категориям, как исполнитель, назва- но использовать регулярные выражения. > Open Context window можно вызывать о редакторе тэгов: разумеется, русские тэги В настоящий момент аналогичное средство контекстное меню, где, при условии, если у поддерживаются. поиска планируется и для панели со спис- вас включен подключаемый модуль Lyrics Выводы по Gmusicbrowser: из-за ками категорий. (входит к комплект плейера), будет отобра- довольно хаотичного интерфейса этот пле- В Gmusicbrowser очень много разных жаться скачиваемый из Сети текст текущей йер может отпугнуть часть пользователей. кнопок, контекстных меню и информацион- песни. К сожалению, текст этот не кэширу- Однако Gmusicbrowser понравится тем ных меток, которые разбросаны без какой- ется, то есть не сохраняется для повторного людям, которые любят настраивать каждую либо системы, а зачастую дублируют друг отображения. мелочь в программе – он предоставляет друга. Поэтому на изучение интерфейса В списке альбомов могут отображать- такую возможность в полной мере. Кроме надо потратить какое-то время, а говорить ся обложки. А таких списков – несколько того, если разобраться в этом плейере, то об интерфейсе трудно, потому что он у штук. Во-первых, один список есть на пане- вы обнаружите, что рабочие его качества – Gmusicbrowser многолик. Статично только ли категорий, а второй доступен под кнопкой на высоте, а в количестве функций (причем окно настроек, но тут надо отметить, что Choose album from this artist (которая полезных) Gmusicbrowser дает фору мно- многие настройки вынесены прямо в «глав- доступна не в каждом режиме интерфейса). гим другим плейерам.

24 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ТРИ ПАТЕФОНА Amarok Мы с ним уже где-то встречались...

• ВЕРСИЯ: 1.4.1 • WEB: http://amarok.kde.org • Цена: лицензия GPL

Этот самый многофункциональный и Мало было поддержки скриптов на Python? популярный плейер для KDE еще не входит Что такого не умеет Python, из-за чего надо в саму среду KDE по той причине, что цикл было привязывать плейер еще и к Ruby? разработки/выпусков у Amarok отличается Второй отрицательный факт. Кодировка от аналогичного цикла KDE. Вот такой тех- тэгов. Жил-был не тужил Amarok, можно нический момент. Разработчики обновляют было в нем выбирать кодировку. Был такой Amarok весьма часто, и не всегда новые список кодировок. И вот на каком-то эта- версии радуют пользователей – потому что пе этот список исчез. Хотите русские тэги добавляя новшества, разработчики почти в Amarok? Только UTF-8, причем в тэгах всегда убирают что-то полезное из старого. ID3V2. У вас есть коллекция музыки, где Кроме того, с каждой новой версией Amarok русские тэги в кодировке Windows 1251? Хотя я читал на форумах, что ситуация фейс для скачивания новых сценариев из все более зависим от внешних средств. Конвертируйте кодировку тэгов, с помощью «лечится» также патчем для Taglib, однако Сети. Например, в недавней версии 1.4.1 поя- чего-то вроде EasyTag. Если, конечно, вы я не пробовал. Я ведь на Gmusicbrowser Что еще умеет Amarok? Скачивать и вилась зависимость от интерпретатора Ruby. хотите видеть эти тэги нормально в Amarok. перешел. отображать тексты песен, обложки от аль- Но вернемся к Amarok. Amarok заве- бомов, информацию об исполнителе (из дует коллекцией музыки на вашем жест- Wikipedia). Умеет взаимодействовать с под- ком диске. Кроме того, из Amarok можно ключенными устройствами – например с открывать файлы с помощью встроенного iPod. Встроенный в Amarok десятиполос- менеджера файлов, а также воспроиз- ный, с предусилителем, эквалайзер помо- водить музыкальные CD (чего не уме- жет улучшить качество воспроизведения на ет делать GMusicbrowser). Amarok тесно старых звуковых картах. В Amarok можно интегрирован с «прожигателем» CD/DVD – задавать «глобальные» горячие клавиши – популярной программой K3b. то есть такие, которые действуют и когда Плейер может представлять коллекцию окно плейера не активно. в нескольких видах сортировки, а также В качестве звукового движка Amarok предоставляет довольно простой поиско- может использовать несколько библиотек – вик (с несколькими критериями поиска). По Xine, GStreamer 0.10, Helix. Если плейер сравнению с GMusicbrowser в этом плане у собран с несколькими движками, то они Amarok функций довольно мало. Есть, как становятся доступными в списке установ- и в Gmusicbrowser, динамические/умные ленных движков в настройках программы. списки песен – например, список самых Amarok – отличный плейер для тех новых песен или наиболее часто воспроиз- пользователей, у которых мощный совре- водимых. Можно создавать и свои «филь- менный компьютер и нет необходимости трующие» списки песен. видеть русские тэги во вменяемом виде. Я В начале я упоминал о скриптах. Да, еще не видел лучшего плейера для KDE. И в функциональность Amarok расширяется с отличие от того же GMusicbrowser, в Amarok помощью скриптов, причем плейер предо- можно работать с файлами, которые еще не ставляет встроенный графический интер- добавлены в коллекцию. АУДИОПЛЕЙЕРЫ ТАБЛИЦА СВОЙСТВ Audacious Gmusicbrowser Amarok ВЕРДИКТ Эквалайзер да нет да Визуализация да нет да Подведем итоги. В этой статье не описанные мною плейеры очень хороши я рассмотрел наиболее, на мой даже на такой относительно старой системе, Ведение коллекции нет да да взгляд, интересные и функци- как моя. Ведь, как известно, требования мно- Движок Встроенный Внешний Внешний ональные плейеры. Они не требуют каких- гих других плейеров к версиям библиотек В режиме либо экзотических библиотек. Все три плей- часто идут впереди тех версий, которые в «Шкурки» да нет браузера ера проверены беспроблемной сборкой из наличии в текущих выпусках больших дис- исходных текстов в системе Mandriva Linux трибутивов Linux, а обновление по принципу Скрипты нет нет да 2006 – насколько я помню, для сборки «не навреди» не всегда удается. Audacious, Плагины да да нет плейеров я обновлял лишь TagLib (того тре- Amarok и GMusicbrowser – стабильные, бовал Amarok), хотя не уверен. обстоятельные плейеры, каждый из которых Обложки нет да да Для меня важный критерий качества отлично справится с ответственной задачей Тексты песен нет да да кода – это легкость его сборки. В этом пла- быть «плейером по умолчанию». LXF

www.linuxformat.ru LXF8(82) АВГУСТ 2006 25 HOTPICKS

Hot Picks НА ДИСКЕ Лучшее на планете новинки открытого ПО!

УТИЛИТА СОЗДАНИЯ CD/DVD лов перетаскиванием их из окна Nautilus в Майк Сoндерс список главного окна. Если вы не пользова- его новехонький ноутбук с готовым Bonfire тель Gnome, можете призвать на помощь Ubuntu только что встроенный файловый навигатор. прибыл. Как на Список файлов отображает имена • • Рождество! ВЕРСИЯ 0.3.0 WEB http://perso.wanadoo.fr/bonfire вместе с размерами и типами – а также Здесь мы проводим обзор неко- полезный полосовой индикатор внизу, торых из наиболее популярных показывающий, какая часть диска уже программ в мире. занята. Bonfire позволяет выбрать между 4- Каждый месяц мы прочесыва- ГБ DVD и несколькими размерами для CD, ем тысячи проектов с открытым но в нем отсутствуют некоторые редко кодом и отбираем для вас самые используемые форматы, вроде двусторон- новые, самые изобретательные них DVD и микро-CD. и просто отличные. Большая часть программ, попавших в обзор, записана на прилагаемый Что будем делать к журналу диск, но мы также Итак, файлы для записи на диск подготов- предоставляем и web-ссылки, лены; щелчок по кнопке Burn вызовет диа- чтобы вы могли скачать новей- лог выбора устройства или имени файла шие версии. (если вы просто хотите сделать ISO-образ, Если у вас есть идеи о том, а записать его когда-нибудь потом). Выбор какие проекты с открытым на самом деле невелик, хотя можно указать, кодом нам стоит включить в закрыть ли диск или позволить многократ- обзор, пишите нам на адрес: ную запись. Но на этой стадии хотелось бы [email protected] видеть кое-что еще, в частности, опцию для Gnome для Bonfire дом родной, но встроенный файловый навигатор загрузочного файла. Это необходимо, если HOTPICKS уживается и с другими оконными менеджерами. вы создаете дистрибутивы или подготавли- ваете демо-диски Linux. В ЭТОМ РАЗДЕЛЕ Bonfire позволяет сохранять проекты (в AckerTodo ...... 31 Непросто сделать правильно работа- cd-burner, hal и gstreamer. При наличии формате XML) для дальнейшего использо- Avidemux ...... 31 ющее ПО для записи оптических дисков. Totem и Beagle вы сможете перед записью вания, чтобы вы могли создавать диски с Bonfire ...... 26 Нужно позаботиться о пользователях, дела- на диск просматривать видеофайлы и небольшими вариациями без необходи- ющих резервные копии, записывающих выполнять сложный поиск. мости каждый раз заново воссоздавать Byzanz ...... 30 аудиодиски и создающих загрузочные DVD, всю структуру. Это не самое гибкое прило- Goupil ...... 30 либо генерирующих диски, читаемые на Меню на выбор жение создания дисков, доступное на дан- Medit ...... 27 широком спектре устройств. С одного При каждом старте, перед тем как запус- ный момент, и ему еще нужно пройти нема- No Friction ...... 29 взгляда на страницы руководств Mkisofs и тить процесс создания диска, Bonfire пред- лый путь, прежде чем оно сможет соревно- Pipepanic ...... 29 CDRecord становится понятно, насколько ложит вам простое, ориентированное на ваться с такими асами, как K3b, но у него это сложная задача, а также почему пользо- выполнение конкретной задачи меню. Это уже есть продуманный дизайн и простой SVGpage ...... 27 ватели предпочитают данные утилиты гораздо более дружественный подход, чем подход, способный сделать это приложе- Visopsys ...... 28 командной строки приложениям с графи- предоставление пустого окна – вам не нуж- ние наилучшим выбором для Gnome. В ческим интерфейсом типа K3b и GnomeBaker. но продираться сквозь меню и справочные среде Gnome постоянно обсуждается воп- ОБРАТИТЕ ВНИМАНИЕ НА Bonfire – еще один игрок на поле инстру- страницы, чтобы суметь приступить к делу. рос, должны ли приложения Gnome вклю- ПОБЕДИТЕЛЯ HOTPICKS ментов создания дисков; его интерфейс Предлагаемый выбор – создание аудиодис- чать дополнительные опции или нужно Все, что попадает в раздел HotPicks, легко осваивается новичками и обладает ка, создание диска данных (например, бороться за простоту. В этом случае мы бы заслуживает самого пристального универсальностью командных утилит. резервной копии), копирование существую- выбрали первый вариант: функциональ- внимания. Однако каждый месяц мы выбираем всего Поскольку Bonfire – приложение для щего диска или запись ISO-образа. ности Bonfire достаточно для выполнения один самый Gnome, для сборки его из исходных текс- Когда выбор сделан, Bonfire снабдит базовых задач записи дисков, но он стал яркий проект. Побеждает тов потребуется набор зависимостей. вас небольшой подсказкой, описывающей, бы по-настоящему классным инструмен- лучший! Пользователей Gnome, у которых уже уста- что вам делать дальше – например, наки- том, если бы в нем были настройки для новлены пакеты для разработчиков, про- дать файлов из Nautilus. Превосходное продвинутых пользователей. блемы не ожидают. Если же у вас другой решение: вся информация налицо, и вас не рабочий стол или оконный менеджер, убе- осаждает толпа «мастеров установки». дитесь, что имеются gnome-cfs, nautilus- Простейший из методов – подготовка фай-

26 LXF8(82) АВГУСТ 2006 www.linuxformat.ru HOTPICKS

КОНВЕРТОР ИЗОБРАЖЕНИЙ SVGpage

• ВЕРСИЯ 0.4 • WEB www.gimphelp.org/svgpage.htm

SVG (Scalable Vector Graphics) быстро статический двоичный файл, без каких- становится стандартным форматом для либо зависимостей. Просто распакуйте векторной графики. Поддержка этого фор- SVGpage_bin_0.4.tar.bz2 и запустите мата в Linux достаточно сильна, в частнос- SVGpage из образовавшегося каталога. ти, благодаря первоклассному редактору Приложение откроется, показав изображе- Inkscape. Многие приложения добавляют ние, демонстрирующее процесс конверта- функциональность импорта/экспорта SVG. ции из растровой в векторную графику. Однако преобразование растровых изобра- Конвертация изображения очень про- жений в приемлемый векторный формат – ста: откройте файл с помощью меню File, а дело не простое, если только вы не конвер- затем щелкните Render As An SVG внизу тируете каждый пиксел в вектор, а это уж главного окна. Получившийся результат стрельба из пушек по воробьям. SVGpage может оказаться далеко не впечатляющим:

«КОНВЕРТАЦИЯ ИЗОБРАЖЕНИЙ Эти яркие цвета и четкие формы идеальны для векторного изображения. ПРОСТА.» вать; зато настроив эти параметры, вы местами они чересчур технические. Тем не получите для ваших изображений идеаль- менее любой человек, разбирающийся в выполняет преобразование в SVG гораздо иногда отсутствуют детали или возникают ную схему. компьютерной графике, должен без про- более гибким способом, позволяя пользо- чересчур яркие участки изображения. Но Особо стоит упомянуть документацию, блем с ними справиться. В целом, результа- вателю самому выбрать уровень именно здесь находит применение основ- которая хоть и не изобилует демонстраци- ты, полученные от SVGpage зависят от детализации. ная функциональность SVGpage, индивиду- онными изображениями, но предоставляет сложности вашего изображения и выбора Программа написана на Python с интер- альная настройка. Установить можно самые детальные описания различных опций. Эти настроек, но при создании векторной вер- фейсом на GTK, поэтому вам понадобится разные параметры: уровень очистки изоб- руководства позаимствованы у Autotrace сии логотипов и других четко прорисован- PyGTK, чтобы собрать ее из исходных текс- ражения, границы цветов, фильтры и мно- (который обеспечивает внутренности кон- ных изображений программа работает тов. К счастью, разработчики предоставили гое другое. Придется поэкспериментиро- вертации изображений в SVGpage), поэтому просто на ура.

ТЕКСТОВЫЙ РЕДАКТОР Medit

• ВЕРСИЯ 0.6.98 • WEB http://ggap.sourceforge.net/medit

Нужен ли миру лишний текстовый кой продуктивности. Основное окно цели- редактор? Для хакеров у нас есть Vim и ком отведено под редактор, с полезной Emacs, Leafpad и KEdit годятся для быст- терминальной панелью внизу экрана и со рых заметок, а GEdit и Kate занимают про- списком файлов справа. Раздражает межуточное положение, предлагая массу исчезновение этих панелей, как только вы полезных возможностей. Тем не менее начинаете набирать текст – мы бы пред- авторы Medit тоже включились в борьбу с почли сообщить лично, убирать их или нет. программой, которая изначально проек- Присутствуют все базовые операции, пола- тировалась как компонент GGAP (http:// гающиеся для редактора: вырезание, ggap.sourceforge.net). вставка, поиск, замена, откат и повтор. Medit задумывался как многоплат- В Medit немало возможностей для форменный (работающий под Windows и программистов. Главный компонент редак- У Medit – внушительный набор опций, к удовольствию продвинутых пользователей. Linux) инструмент, обладающий широким тирования включает подсветку синтаксиса, спектром настроек, расширяемый с помо- автоматическое выравнивание, а также но в остальном редактор в хорошей список клавиатурных комбинаций и широ- щью дополнительных модулей, и все это выравнивание и комментирование выбран- форме. кий спектр настроек, и Medit решительно с GTK-интерфейсом. Собрать и устано- ного фрагмента. Разработчики утвержда- Пока что это редактор как редактор, но вступает на территорию продвинутых вить его можно обычным набором ют, что не существует другого такого у него имеются скрытые достоинства. Вы пользователей. Сейчас у него кое-какие команд: ./configure, make и make «удобного компонента редактирования тек- можете создать модули на C или Python и мелкие проблемы со скоростью и вне- install (под суперпользователем). ста для GTK» (разработчики Scintilla и оби- расширить функциональность – причем шним видом, но есть и все необходимое Графический интерфейс Medit муд- деться могут!), и их работа заслуживает поставляется немало готовых модулей, для того, чтобы стать популярным уни- ро использует панели с варьируемым похвалы. Скорость, правда, не самая например, вышеупомянутая панель с тер- версальным редактором для хакеров. размером и всплывающие панели, не высокая, а разрекламированная функция миналом, и у него есть свой язык скриптов, Попробуйте его, если вы все еще в поис- загромождая экран и способствуя высо- завершения слов не работает как должно, MooScript. Добавьте сюда внушительный ках идеального инструмента.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 27 HOTPICKS

ОПЕРАЦИОННАЯ СИСТЕМА Visopsys

• ВЕРСИЯ 0.62 • WEB www.visopsys.org

Уже полтора года мы делаем обзоры ISO9660 (CD) и базовые сетевые возмож- тестовом компьютере с процессором 1 ГГц тить специальную версию Visopsys, назван- других ОС с открытым кодом. Мы рассмат- ности. Рассматривается реализация мно- запустились менее чем за секунду. Меню ную Partition Logic, полностью на ней фоку- ривали BSD-системы, Syllable и OpenSolaris, гопользовательского доступа. Для работы наверху предоставляет доступ к запущен- сирующуюся. Еще здесь есть редактор а в разделе HotPicks помещали ReactOS Visopsys требуется 64 МБ ОЗУ и процес- ным на данный момент программам (напо- конфигурации и утилита для установки (клон Windows) и BeOS-подобную систему сор типа Pentium или новее, а также мышь добие урезанной панели задач), а запуска- системы на жесткий диск. Помимо упомя- Haiku. Это самые известные альтернатив- PS/2 (USB-устройства не поддерживаются). ные системы, но на свете полно небольших Видео обеспечивается обычным драйве- проектов, проживающих на компьютерах ром VESA, поэтому графика не слишком умников из разных стран. быстрая, но зато совместимая с большинс- «ОТЛИЧНАЯ ОТПРАВНАЯ Один из наиболее впечатляющих – твом видеокарт. Visopsys, графическая ОС, написанная все- Для запуска Visopsys запишите образ ТОЧКА ДЛЯ СОЗДАНИЯ го одним человеком, Энди Маклафлином на CD-R и загрузите ваш ПК с этого CD. [Andy McLaughlin]. Хотя кодирование опе- Если у вас нет CD-привода, выбирайте СОБСТВЕННОЙ ОС.» рационной системы в одиночку нередко вариант с дискетой. После старта Visopsys встречалось в 8-битную эпоху, с тех пор спросит, хотите ли вы установить или прос- ются программы одним нажатием на иконку нутых программ, по большому счету смот- компьютеры сильно усложнились. Сегодня, то запустить систему – выберите последний на рабочем столе. Командная оболочка, реть не на что, однако по мере расширения чтобы написать многозадачную операцион- вариант, чтобы посмотреть, как она работа- несмотря на свою рудиментарность, поддер- API мы, без сомнения, увидим больше ную систему с поддержкой виртуальной ет без модификаций жесткого диска. живает завершение команд по таблице и приложений. памяти и графическим интерфейсом (или набор Unix-подобных команд (ls, uname, ...). выговорить эти слова вслух), требуется Легкий рабочий стол По сравнению с рабочими столами Linux Разработчик-одиночка много времени и таланта. По части визуального представления Visopsys выглядит по-спартански: освежаю- Почему же мы не слышали об этой системе Visopsys – графическая операционная Visopsys может предложить не слишком щая легкость и свобода от всякого мусора. раньше? Пусть ей недостает возможностей система, работающая с дискеты или с Live много – шрифты и иконки на рабочем столе А как насчет самих программ? В распространенных систем, но это же не CD (образы и того и другого записаны на не особо привлекательны. Возможно, вы Visopsys входит календарь, две простые уменьшает интерес, например, к Syllable и наш DVD). С момента ее первого релиза в ожидали чего-то более эстетичного от сис- игры и программа просмотра изображе- Haiku. Нет, вероятно, Visopsys потому пря- 1997-м году она превратилась в удобную темы с таким именем, но Visual здесь имеет ний – ничего выдающегося, но достаточно, чется в тени, что Маклафлин не ищет дру- (хотя и ограниченную) ОС со своим собст- тот смысл, что система с самого начала чтобы показать возможности графического гих разработчиков. Коль скоро это проект с венным ядром, библиотекой C, командной задумывалась графической, в отличие от инструментария. Больший интерес пред- открытым кодом, любой разработчик может строкой, оболочкой и графическим интер- DOS, нарастившей графический интерфейс ставляют утилиты администрирования, ответвить от него свой; однако пока фейсом. Она поддерживает вытесняющую уже поверх базовой системы. включающие умную утилитку разбиения Маклафлин хочет развивать проект в многозадачность и многопоточность, под- Загрузка впечатляет быстротой, а вхо- жесткого диска. Эту последнюю приняли направлении, нужном лично ему. Он с держку файловых систем FAT, ext2/3 и дящие в дистрибутив программы на нашем так хорошо, что Маклафлин решил выпус- радостью выслушает ваши идеи и примет ваши исправления, но выбор направления развития системы остается за ним. Мы считаем, что это мудрый путь, осо- бенно учитывая ситуацию с некоторыми проектами, открытыми всем и каждому и погрязнувшими в спорах и попытках отпоч- ковать новые ветки. Но когда время придет, хотелось бы увидеть в этом проекте боль- ше разработчиков. Сейчас Visopsys можно рассматривать как Minix 2006-го года: закрыта для масш- табных переделок чего ни попадя, но пре- красная стартовая площадка начинающего исследователя операционных систем. Linux и клоны BSD слишком сложны для изуче- ния системного проектирования, а компакт- ная база исходного кода Visopsys и простой дизайн делают ее отличной отправной точ- кой для создания собственной ОС. В самом деле, раз эта система распространяется под GPL, вы вполне можете взять ее за основу своего проекта. В любом случае это впечатляющий объем работы для одного человека, и про- ект имеет большой потенциал. За ним сто- ит понаблюдать. Не ласкает взор, как OS X, зато доморощенный графический интерфейс Visopsys молниеносен.

28 LXF8(82) АВГУСТ 2006 www.linuxformat.ru HOTPICKS

HOT G AM E ИГРА-ГОЛОВОЛОМКА S No Friction

• ВЕРСИЯ 0.1 • WEB http://remar.se/fames/games.html

Здесь в здании LXF Towers мы час- цвет может начать давить. Игроки с худо- тенько играли в Tetris DS. Поразительно, жественными способностями сумеют отре- что эта классическая игра до сих пор дактировать файлы с картинками самостоя- доставляет удовольствие и выглядит такой тельно – это обычные BMP-файлы, из ката- же свежей, как в начале 90-х – но это и лога gfx/, и их можно открыть в Gimp. есть признак подлинной классики. Ваша задача – катить шар по арене в Прочесывая сеть в поисках программ для направлении выхода, подбирая зеленые рубрики HotPicks, мы были счастливы комочки. Просто, не так ли? Но вас подсте- наткнуться на No Friction – простую на вид регает ловушка: начав передвигать шар, вы головоломку, которая все усложняется по не сможете его остановить, разве что он мере продвижения вперед. К счастью, упрется в стенку. Прибавьте к этому всевоз- игре не требуется ничего, кроме вездесу- можные шипы и другие пакости, разбросан- щего SDL, и, если пакеты разработчика ные по арене и смертельные для шара, и SDL у вас и вправду есть, можете просто вам придется тщательно планировать мар- Пойду вниз, налево, вверх, опять налево, опять вверх… набрать make и затем ./friction. шрут. Кажется, до зеленого комка рукой Черт, а где я был-то? Графика не блещет, как и следовало подать, но пока вы не подойдете к нему с ожидать от подобной игры – это просто правильной стороны, ваш шар будет упорно ции основного игрового процесса, напри- формат файла. В целом No Friction – симпа- дежурное блюдо: домодельные фигуры и натыкаться на шипы. мер, уровень, где вы контролируете сразу тичная небольшая игра-головоломка с примитивная анимация. С другой стороны, В игре 28 уровней, от начального уров- несколько шаров. Вы можете создать свои искусно спроектированными уровнями, прорисовка достаточно аккуратная, а ня сложности до довольно трудных арен, уровни в обычном текстовом редакторе: заставляющая пораскинуть серыми спрайты не сливаются с фоном, хотя пос- требующих серьезного продумывания пере- объекты обозначаются буквами, кроме того, клетками. ле длительной игры постоянный синий мещений. К счастью, в игре имеются вариа- существует спецификация, описывающая

ИГРА-ГОЛОВОЛОМКА Pipepanic

• ВЕРСИЯ 0.1.0 • WEB http://www.users.waitrose.com/~thunor/pipepanic

Что мы имеем из игр, посвященных вес ужасам с протекающими кранами, той Pipe Mania, и, кроме SDL, ей ничего ной и конечной труб прокладке труб? Вероятно, наиболее замороженными трубами и бравыми сан- не надо, так что на большинстве дист- нажимается кнопка известная игра такого жанра – Mario. техниками, заламывающими суперцены за рибутивов она соберется без проблем. Fill, и в трубу поступа- Затем была Pipe Mania, представитель погром у вас на кухне. Ну да в Pipepanic вы В Pipepanic ваша задача – соеди- ет вода. Если она классики всех времен. Возможно, эти уж покажете, кто в доме хозяин. Эта игра нить две трубы, используя доступные достигнет конца трубы – очки саги о водопроводах созданы в противо- создавалась под влиянием вышеупомяну- запчасти. Вы работаете на сетке разме- посыплются градом; если же обнару- ром 10x10, на которой вначале есть жится протечка, то игре конец. только зеленая стартовая труба и Чтобы заработать по-настоящему красная конечная. много очков, нужно не просто искать Вам также полагается набор раз- кратчайшее расстояние из точки A в личных фиттингов – горизонтальные, точку B, а использовать как можно вертикальные, Т-образные и другие – больше запчастей. Именно этому но они сваливаются к вам случайным свойству Pipepanic и аналогичные ей образом, как в Tetris. Так что нельзя прос- игры обязаны долгожительством – каж- то нарисовать прямую линию от начальной дая игра непохожа на предыдущую, а по до конечной точки, приходится оптималь- мере того как вы все чаще начинаете но использовать наличные куски. К счас- выигрывать не благодаря удаче, а благо- тью, игра показывает вам две следующие даря опыту, вы начинаете понимать, что находки, это помогает спланировать достигли определенного мастерства. стратегию. Отличная штука! Тут, однако, возникает другая пробле- ма. Соединяя начальную и конечную тру- бы, нельзя оставлять лишние отверстия, их нужно затыкать заглушками: если, например, в ваше сооружение добавляет- Так становятся специалистами по трубам… Сначала вроде все хорошо, но ся крестовина, заблокируйте неиспользо- скоро вас заваливает ненужными запчастями. ванные концы. После соединения началь-

www.linuxformat.ru LXF8(82) АВГУСТ 2006 29 HOTPICKS

МЕНЕДЖЕР ЧЛЕНСТВА В КЛУБЕ Goupil

• ВЕРСИЯ 0.1.0 • WEB http://goupil.tuxfamily.org

Goupil – приложение из категории, между просмотром контактов и инфор- до сих пор в HotPicks не затронутой: мации о членах организации. Прежде клубный менеджер. Такого рода програм- чем добавить в организацию нового чле- мы не столь широко распространены, как на, нужно добавить его в список контак- текстовые редакторы или игры, но тем не тов; путь обходной, но работает эффек- менее они важны, особенно для тех, кто тивно. Во время указания членства вы управляет клубом или сообществом. можете выбрать статус (для различных Возможно, вы решили организовать уровней членства), даты начала и конца группу поддержки, или создать сайт с действия «членской карточки», а также платным доступом, или что там еще тре- сумму денег, уплаченную за вступление. бует учета зарегистрированных пользо- Таким образом, в основе Goupil – вателей. Goupil спроектирован с целью простое управление людьми, пригодное Запись браузера, проигрывающего другую запись. Видите, размазано? максимально упростить учреждение клу- для небольшой группы членов (если ба или любого группового членства и организация насчитывает более 30 чле- ЗАПИСЬ ПРОИСХОДЯЩЕГО НА ЭКРАНЕ обойтись без сервера баз данных для нов, то программа, возможно, покажется хранения информации о членах. вам несколько ограниченной). Однако Byzanz Что ему нужно, так это привязки C++ имеются кое-какие бонусы: например, для различных библиотек Gnome. Если у возможность закачки контактов из • ВЕРСИЯ 0.1.1 • WEB http://people.freedesktop.org/~company/byzanz вас есть Gnome и установлены его паке- Evolution и генерация HTML-отчетов. В ты разработчика, то большая часть необ- качестве HTML-отчета создается базовая За несколько лет в HotPicks нам чий стол как обычно, демонстрируя прило- ходимых зависимостей у вас уже есть, но web-страница со списком членов и дан- встречались программы со странны- жение или показывая, как нужно делать то- помимо этого понадобятся libgtkmm, ными о каждом – функциональность не ми именами, и Byzanz – одно из самых то и то-то. Затем GIF-файл будет сохранен libglademm и libgnomevfsmm (вы можете архиважная, но полезная, если вы управ- странных. Что это имя означает? Нечто на диске, и вы сможете открыть его в окне взять эти библиотеки из директории с ляете онлайн-сообществом. связанное с дорийским царем Византом, браузера. Не понравился результат? зависимостями для Goupil на нашем Goupil пока довольно молодое при- Константинополем или православием? На Удалите и начните запись снова. DVD). ложение, и чтобы достичь версии 1.0, самом-то деле это программа для снятия Один из недостатков анимированных При первом запуске Goupil запросит предстоит сделать еще многое, но основ- экранных снимков рабочего стола и созда- GIF-файлов, в отличие от Flash-роликов у вас информацию о вашем клубе или ная функциональность есть, и программа ния анимационных GIF-файлов, отобража- (таким путем пошли некоторые аналогич- организации – название, адрес и валюта, уже может пригодиться небольшим орга- ющих динамику его изменений в связи с ные приложения) – их размер. Byzanz используемая для оплаты членства. низациям. Если вам нужен незатейливый вашей работой. Есть несколько причин, по использует расширение XDamage, поэтому После ввода этих данных вы попадаете в способ поддержки списка членов, попро- которым Byzanz может вам пригодиться: отслеживает только те части экрана, на главное окно, где можно переключаться буйте ее. надо сделать демо для разрабатываемой которых что-либо изменилось, но даже вами программы; или показать пользо- пяти секунд записи достаточно, чтобы вателям новые возможности программы; файл разбух до 700 КБ. Лучше всего уста- или создать пособие, обучающее пользо- новить однотонный фон и не совершать вателей правильной работе с программой действий, приводящих к радикальным (это лучше, чем пытаться воссоздать пове- изменениям на экране, например, сверты- дение программы по набору статических вание и развертывание окон. картинок). Другая потенциальная проблема – цвет Byzanz – это апплет для панели Gnome, у GIF-изображений 8-битовый, и, если вы но есть еще и утилита командной строки, демонстрируете приложение с широкой на случай, если вы пользуетесь другим цветовой гаммой, может наблюдаться рабочим столом или оконным менеджером. некрасивое размазывание картинки. Для сборки программы из исходных кодов Однако факт, что практически каждый бра- понадобится пакеты разработчика Gnome узер на планете дружит с анимированными 2.12 (или новее), а также XDamage, кото- GIF’ами, перевешивает эти проблемы – рый в зависимости от вашего дистрибути- вашей аудитории не потребуется устанав- ва может быть включен в стандартный ливать дополнительные программы для набор пакетов для X. А, например, в Ubuntu просмотра. его нужно установить отдельно из пакета libXDamage-dev. Пользоваться Byzanz так же просто, как набрать Byzanz- record в окне тер- минала; после чего начнется запись в указанный вами GIF- файл. Теперь, пока вы не нажме- HTML-экспорт из Goupil выглядит вполне опрятно. те Ctrl-C в окне терминала, можете использовать ваш рабо- Процесс записи запускается одним щелчком.

30 LXF8(82) АВГУСТ 2006 www.linuxformat.ru HOTPICKS

HOTPICKS ПОВТОРНЫЙ ВИЗИТ ТАКЖЕ ВЫПУЩЕНЫ РЕДАКТОР ВИДЕО Новые и обновленные программы, заслуживающие внимания…

Avidemux • SynchroEdit 0.3.9 Многопользовательский редактор www.synchroedit.com • ВЕРСИЯ 2.1.2 • WEB http://fixounet.free.fr/avidemux • SavIRC 2.0 Кроссплатформный IRC клиент www.savirc.com Если вы уже давно почитываете LXF, то, возможно, помните наш обзор Avidemux • KDiff3 0.9.90 Утилита сравнения файлов и из LXF40. Тогда это была версия 0.9rc2, каталогов http://kdiff3.sf.net теперь же перед нами версия 2.1.2, а версия • Monitorix 0.8.1 Легковесная утилита 2.2 стремительно надвигается. Имя системного мониторинга www.monitorix.org Avidemux – сокращение от AVI de/multiplexer: • ALE 0.8.4 Программа обработки программа принимает видеопотоки, добав- изображений ляет всякие фильтры, накладывает допол- http://auricle.dyndns.org/ALE нительные звуковые дорожки, а затем запи- • Outer Space 0.5.58 Онлайновая сывает результат. Вы можете вырезать, стратегическая игра www.ospace.net масштабировать, смазывать изображение или делать его более резким, а также вра- щать видео. Программа работает с различ- ными форматами, поддержка которых зави- держка импорта из PNG, мозаичные филь- Avidemux поставляется с сит от наличия установленных библиотек и тры и многое другое. Большая работа про- набором фильтров для обработки видеоряда. кодеков (типа MPlayer и DivX). делана над интерфейсом программы, кото- Как вы и ожидали, со времен версии 0.9 рый теперь написан с использованием GTK простыми задачами работы с домашним в программу добавилось огромное количес- 2 и лучше сочетается с современным рабо- видео, а отдают предпочтение наращива- тво новых функций: поддержка Ogg Vorbis, чим столом Gnome и Xfce. нию функциональности. • Katoob 0.3.9 Многоязычный текстовый дискретизация звука на любой частоте, под- В версии 0.9 больше всего претензий Знакомым с процессом редактиро- редактор http://tinyurl.com/jwjlb держка MMX/MMX2, улучшающая произво- вызывал интерфейс – он казался сложным вания видео, микшированием и кодека- • Calcurse 1.4 Текстовый персональный дительность, внутренний скриптовый дви- для новичков. С тех пор ситуация не сильно ми Avidemux предложит все, что нужно планировщик http://culot.org/calcurse жок, фильтр яркости, улучшающий видео- поменялась, однако стало очевидно, что для работы, и развивается этот проект в захват с VHS, поддержка drag & drop, под- разработчики не намерены ограничиться хорошем темпе. • Qore 0.5 Объектно-ориентированный язык программирования http://qore.sourceforge.net МЕНЕДЖЕР СПИСКА ДЕЛ • Task Coach 0.58 Менеджер списка дел http://taskcoach.sourceforge.net

• KPowersave 0.6.1 Управление и AckerTodo мониторинг ACPI http://sf.net/projects/powersave • ВЕРСИЯ 3.6 • WEB http://ackertodo.sourceforge.net • Nao Полноценный файловый менеджер, Мало кто из нас дисциплинирован грамм такого типа – AckerTodo, обзор модульная программа, позволяющая написанный с использованием Fox Toolkit http://nao.linux.pl настолько, чтобы отслеживать более одной которой мы не так давно делали в HotPicks самостоятельно добавлять и удалять задачи. Спасает только ведение записей на LXF64. Эта программа управления зада- функции; пользователям, имеющим сла- • BTG 0.3 Демон BitTorrent с текстовым и графическим GTK интерфейсом бумаге. Поэтому совершенно логично появ- чами использует web-интерфейс на базе бое представление о программировании, http://btg.berlios.de ление множества компьтеризированных PHP с MySQL для хранения данных. это стало проще делать, поскольку не версий списков дел, и в Linux такие про- Самое существенное изменение – требуется погружения в глубины кода. • Kamefu 0.1.1 Менеджер коллекции игр http://kamefu.pwsp.net граммы тоже есть. Одна из лучших про- AckerTodo теперь не неделимый код, а Введена поддержка региональных фор- матов дат, а также оповещение через • Tangerine 0.2.5 Музыкальный сервер на AIM об истечении срока исполнения. Вы основе DAAP www.snorp.net/log/tangerine также можете создавать задачи, повто- • bzr 0.8.2 Децентрализированная система ряющиеся с заданным периодом, а из контроля версий http://bazaar-vcs.org KDE позаимствована тема для иконок • stalonetray 0.4 WM-независимая Crystal. системная панель задач В AckerTodo соблюден отличный http://sf.net/projects/stalonetray баланс между функциональностью, простотой и визуальным стилем. Приложение хорошо работало уже в серии версий 1.x, а с новыми возмож- ностями это определенно лучший менеджер списков дел для web и для Linux. Если вам приходится жонглиро- вать напоминалками и программами ведения записей, то это приложение может решить ваши проблемы. LXF Демо AckerTodo можно посмотреть на сайте программы.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 31 РЕПОРТАЖ

ММАРКАРК ШШАТТЛВОРТАТТЛВОРТ В ПЕТЕРБУРГЕПЕТЕРБУРГЕ

1166 ИИЮНЯЮНЯ 22006006 ГГ..

Литературная обработка Алексея Федорчука ([email protected]) ВВСТУПЛЕНИЕСТУПЛЕНИЕ

Марк Шаттлворт (Mark распространение дистрибутива и его ком- круги представляет – московскими пользо- Теоретически для участия во встрече Shuttleworth) – один из немногих мерческую поддержку, а также ведет прочую вателями Ubuntu и Linux вообще, и с петер- требовалась предварительная регистра- разработчиков Linux, известный организационную работу. бургской LUG. ция. Однако на практике, к чести органи- за пределами мира Open Source. Во-первых, Надо сказать, что дистрибутивы семейс- Московская встреча состоялась 15 заторов, дело оказалось гораздо проще: его знают как удачливого интернет-пред- тва Ubuntu (кроме собственно Ubuntu, в июня в Институте философии РАН и орга- насколько я мог наблюдать, вход был принимателя, разбогатевшего на гребне его состав входят также Kubuntu, Xubuntu, низована была, насколько мне известно, свободный, никто ни с какими списками не волны «доткомов». Во-вторых, он стал вто- Nubuntu и Edubuntu) за короткое время компанией Altlinux. Однако на ней я не сверялся, и в итоге в зале оказались все, рым в истории Земли космическим турис- снискали себе немалую популярность. Не в присутствовал, и потому сказать ничего того пожелавшие. том. И в-третьих, Марк – учредитель ряда последнюю очередь – потому, что бесплат- определенного не могу. А вот на питерской – Надо отметить хорошее техничес- фондов помощи слаборазвитым странам, но рассылаются по всему миру, в том чис- побывать довелось, о чем и рапортую. кое обеспечение встречи. Аппаратура продвижения образовательных программ ле – даже в нашу страну. В результате чего Встреча с Петербургской LUG была «Феникса» позволила выполнить аудио- в странах третьего мира и тому подобных в России сложилось достаточно большое подготовлена Линуксцентром и учебным и звукозапись всей встречи – не только мероприятий. и весьма активное сообщество пользова- центром «Феникс». В зале последнего, выступления, но и вопросов, в том числе Однако в мире Open Source Марк извес- телей Ubuntu. расположенном на территории географи- и с места. Именно обработка аудиозаписи тен, разумеется, не этим. Здесь его знают Поэтому известие о визите Шаттлворта ческого факультета Санкт-Петербургского (смею надеяться, литературная) легла в как разработчика Debian – в прошлом, и как в Россию (Москву и Санкт-Петербург), про- Университета, она и происходила. основу данного материала – в связи с чем организатора разработки семейства дистри- ходившем 15–16 июня, заинтересовало в Программа мероприятия включала в себя выражаю свою признательность организа- бутивов Ubuntu – в настоящем. В этом своем основном широкие массы узкого круга, свя- три пункта: выступление Марка, ответы торам встречи. А фрагменты видеозаписи качестве он возглавляет фирму Canonical – занного с Unix, Linux и Open Source. Тем на вопросы участников и – какая встреча планируется в ближайшее время выло- именно она осуществляет финансирование более, что в программу посещения обоих юниксоидов обойдется без пива! – нечто жить на сайте Линуксцентра (http://www. разработки всего семейства, обеспечивает городов входила встреча с теми, кто эти вроде фуршета. linuxcenter.ru).

32 LXF8(82) АВГУСТ 2006 www.linuxformat.ru РЕПОРТАЖ

ВВЫСТУПЛЕНИЕЫСТУПЛЕНИЕ

Выступал Марк на английском об особенностях процесса его разработ- ми – такими, как команда разработчиков привлекает к сотрудничеству распределен- языке – он начал с заявления, ки. Здесь Марк подчеркнул, что одной из Fedora – с целью обмена модификациями ные фирмы из разных стран – в настоящее что по-русски говорит плохо целей дистрибутива было достижение гар- ядра и пакетов. время их более 300. Они и осуществляют (хотя, по агентурным данным, делает это монии между стабильностью и актуаль- Однако и тут Марк подчеркнул, что регионально-ориентированную поддержку. совершенно без акцента – да и сказанная ностью включенного в состав ПО. Первое связи, так сказать, вертикальные – с Маленькое отступление: как известно, по-русски вводная фраза это подтверж- достигается долговременной (трех- или разработчиками крупных программных Ubuntu оказался очень продуктивным кло- дала). Перевод выступления обеспечивал пятигодичной) поддержкой стабильных пакетов, таких, как Gnome, KDE, Apache, но-породителем. Помимо всего прочего, от Дмитрий Дмитриев из компании Linux Ink, релизов, выходящих через определенные MySQL, PostgreSQL, и многих, многих дру- него происходит несколько испанских вари- известный своими работами по русифика- промежутки времени (примерно полуго- гих – являются более важными. Потому антов дистрибутива, ориентированных на ции Red Hat/Fedora и разработкой русской дичные, хотя подготовка текущего релиза что в конечном счете именно их работа использование в провинциальных админис- версии Scientific Linux. Так что суть речи несколько затянулась). Второе же осущес- обеспечивает успех или неуспех любого трациях этой страны; создается впечатле- Марка была доступна даже тем, кто, подоб- твимо за счет регулярных промежуточных дистрибутива. ние, что скоро в Испании каждая провинция но вашему покорному слуге, английский на обновлений, предназначенных для поль- В этом контексте прозвучал и ответ на будет иметь свой вариант Ubuntu. Тонкий слух воспринимает с трудом. зователей, желающих работать с самыми вопрос, который меня интересовал с пер- намек: не пойти ли и нашей стране по этому Для начала Марк рассказал историю современными программами. вого дня знакомства с Ubuntu: почему для пути? В этом случае востребованной ока- своего приобщения к Linux, ставшую в Затем в выступлении прозвучала очень титульного дистрибутива семейства, ориен- жутся и услуги фирм, способных оказать анналах Open Source уже почти столь же интересная мысль. «Мы, дистростроите- тированного, в том числе, и на начинающе- квалифицированную поддержку... хрестоматийной, как история про принтер ли, – сказал Марк, – часто забываем, что го пользователя, в качестве пользователь- Наконец, речь дошла и до схемы раз- Ричарда Столлмэна или про терминаль- наша роль меньше, чем роль ребят, кото- ского окружения был выбран Gnome, хотя, работки открытого ПО вообще и дистрибу- ную программу Линуса Торвальдса. Один рые собственно и разрабатывают те паке- казалось бы, KDE справляется с этой ролью тива Ubuntu в особенности: о механизмах приятель дал Марку пачку дискет с дис- ты, что включаются в дистрибутивы. И мы как минимум не хуже. Марк объяснил сде- контроля версий и веток исходного кода, о трибутивом Slackware и шесть упаковок должны уважать их работу – в том числе и ланный выбор тем, что в момент создания методах совместной работы над докумен- пива, сказав, что это – все, что нужно для сообщениями об ошибках, извещением о Ubuntu Gnome был более простой в исполь- тацией и ее переводами на разные язы- освоения Linux. Правда, существует версия, новых возможностях, включаемых в свои зовании средой, нежели KDE. Когда же ки – например, на санскрит (да, товарищи, в что упаковка была одна – с шестью бутыл- продукты сборщиками дистрибутивов, и разработчики KDE, оценив концепцию дис- Ubuntu предусмотрена и такая локаль). Что, ками. Однако я более склонен доверять тому подобными способами.» трибутива, предложили вариант со своим как было убедительно продемонстрировано, переводу Дмитрия. Действительно, без Логическим продолжением этой мыс- рабочим столом – родился Kubuntu. действительно, оказывается нынче ключе- поллитры, говоря по-нашему, с Linux’ом ли было высказывание об аналогичных Зашла речь, конечно, и о бизнес-моде- вым моментом для любого проекта Open тогда, лет десять назад, разобраться было горизонтальных связях с другими дистрос- ли, призванной сделать разработку дистри- Source – как с технологической стороны, проблематично. Так что вряд ли Марк в троителями. В первую очередь речь зашла, бутива коммерчески выгодной. Здесь инте- так и со стороны, если так можно выразить- этом процессе обошелся даже шестью конечно, о взаимоотношениях с разработ- ресен следующий момент: вместо создания ся, социальной. Впрочем, для открытого исходными упаковками... чиками Debian – материнской по отноше- единой централизованной компании фирма ПО эти аспекты оказываются связанными Далее последовал рассказ о том, как нию к Ubuntu системы. Но не отвергается Canonical, обеспечивающая финансирова- практически неразрывно – и это тоже про- зародилась идея дистрибутива Ubuntu, и и сотрудничество с иными производителя- ние разработки Ubuntu и его поддержку, звучало в выступлении Марка. Действительно, ведь сам принцип раз- работки Open Source базируется на вовле- чении в процесс максимально широкого круга лиц, способных к ней в принципе – и это одна сторона вопроса. Другая же, обо- ротная, выливается в проблему эффектив- ности контроля над изменениями, которая может обеспечить целостность системы разработки и защиту ее от повреждения некорректно написанными фрагментами кода. То есть, попросту говоря, все сво- дится к тому, чтобы система была «дура- коустойчивой» – и чтобы при этом никто из разработчиков не ушел обиженным... Вопросы разработки тесно связаны с вопросами обучения. И в планы Canonical входит создание центров обучения, тести- рования и сертификации специалистов, в том числе и в России. Последняя часть доклада, как и поло- жено, была посвящена планам на буду- щее, то есть разработке следующего рели- за, носящего имя Edgy Eft, выход которого запланирован на ноябрь.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 33 РЕПОРТАЖ

ВВОПРОСЫОПРОСЫ И ООТВЕТЫТВЕТЫ

По окончании выступления последова- интерфейсов разработчика? сделает за вас. сообщество разработчиков вокруг ли многочисленные вопросы, на которые Разработчики Linux пошли довольно О портирования Linux на платформу давались весьма обстоятельные ответы. О трудной дорогой – заново изобрес- я читал блог разработчика ядра SPARC существовало долгое время, но оно Приведу их здесь, поскольку они по содер- ти велосипед. То есть установить новые В Red Hat, который сказал, что у не имело официальной поддержки. Однако жанию могут составить предмет весьма правила разработки, правила открытого них очень много жалоб на то, что это многие пользователи хотели иметь Linux развернутого интервью. Так сказать, в кол- и свободного программного обеспечения. работает в Ubuntu, но не работает в для Sparc. Так что мы сначала работали с лективном исполнении. Мы, конечно, не можем рассчитывать на Fedora. Он сравнил ядра этих дистри- этим сообществом, потом вышли на разра- поддержку и помощь со стороны тех людей, бутивов, чтобы посмотреть на разли- ботчиков собственно платформы. И теперь Мы видели очень интересный которых привлекают легкие правила. Если чия, и обнаружил в ядре Ubuntu много мы надеемся в скором времени включить В сервис для переводчиков, но Вы хотите добиться изменения ситуации, мелких дополнений, которые не были SPARC в список поддерживаемых плат- он был весь на английском языке. Вы должны убедить сообщество, что такие включены в главную ветку разработ- форм Ubuntu. Почему бы не сделать его мультия- вещи, как хорошая документация, краси- ки ядра. зычным? А то получается, что «сапож- вый дизайн, простота использования – это Ядро Ubuntu публикуется на сайте В настоящее время многие круп- ники без сапог». важные и нужные вещи. Я не думаю, что О kernel.org, так что для разработчи- В ные компании, в первую очередь Мы решили, что сам интерфейс не многое из того, что используется сейчас в ков ядра очень легко переносить из него Microsoft, стараются завоевывать О нужно переводить, но некоторые час- мире коммерческой разработки програм- все дополнения в главную ветку. Как прави- умы молодежи своими проектами по ти этой технологии имеет смысл локализо- много обеспечения будет портировано под ло, эти исправления переходят из версии в образованию, стажировке, трудоуст- вать. Например, это связано с обращения- Linux. В первую очередь мы увидим пере- версию, но не всегда добираются до новых ройству. Есть ли у Canonical что-ни- ми по поддержке. нос серверных приложений и приложений версий. Бывают, конечно, и случаи, что раз- будь подобное или будет ли? баз данных, таких, как Oracle, потому что на работчик торопится и просто забывает пере- Мне кажется, что такими вещами Многие компании сейчас завое- них есть реальный спрос. Настольные же слать свои исправления в главную ветку. О занимаются сообщества пользо- В вывают мир простыми средства- приложения, например, Photoshop, имеют вателей Linux вообще. Мы тоже считаем, ми разработки. На сегодняшний день в Linux свои аналоги, например, Gimp, и Можете ли Вы что-нибудь ска- что очень важно устанавливать контакты с под Linux нет простых средств разра- необходимости в их переносе нет. В любом В зать относительно планов порти- пользователями. Но для меня самое глав- ботки. Каково Ваше видение простых случае, не следует думать, что кто-то это рования Ubuntu на платформу SPARC? ное, чтобы контакты происходили с людь- ми, которые что-то понимают в этом (смех в зале). Я думаю, что люди, сидящие в этом зале, имеют гораздо большее влия- ние на развитие IT, чем просто некая масса пользователей. Мы отдаем себе отчет, что начинаем с очень маленького сообщества, но это – очень образованные люди и очень эффективные.

Планируете ли Вы включать в В релизы Ubuntu ПО, которое сде- лает его Enterprise Ready? В текущие релизы включаются про- О граммы, которые люди использу- ют в первую очередь – почта, Интернет, Apache и базы данных. В частности, про- грамма установки Ubuntu предусматривает инсталляцию готового Интернет-сервера. Тяжелые сервера приложений будут вклю- чаться в дистрибутив только в том случае, если это будет востребовано сообществом. Сообщество пока не нуждается в серверах приложений (гомерический смех в зале).

Не являясь разработчиком, я вы- В брал Ubuntu в качестве рабочего стола. Может быть, мой выбор непра- вилен, и надо было выбрать Xandros или Linspire? (смех в зале) Попробуйте их все – и решите, какой О лучше подходит (гомерический смех в зале, переходящий в овацию). Следует учитывать, что такие дистрибутивы, как Xandros, Linspire или, например, MEPIS включают в себя много коммерческого ПО, не распространяемого свободно. Ubuntu же

34 LXF8(82) АВГУСТ 2006 www.linuxformat.ru РЕПОРТАЖ

включает только свободное ПО и при этом редной релиз и у человека всегда будет крытого ПО? И есть ли какие-нибудь Я не думаю, что нужно убеждать работает из коробки на новом оборудова- выбор – обновлять существующую версию соображения по поводу BSD-лицензии, О пользователей Windows перейти на нии. Кроме того, у Ubuntu очень большое или перейти на новую. которая накладывает гораздо мень- Linux, но я ищу те самые моменты, которые сообщество разработчиков, благодаря чему ше ограничений в этом отношении? покажут им преимущества свободного ПО. ошибки исправляются быстро. Планируете ли Вы убеждать Если это Ваш проект, Вы може- В производителей устройств от- О те использовать модель двойного Планируются ли добавления В последней версии 6.06 есть крывать код их драйверов. И что Вы лицензирования, выпустив две версии – В в Launchpad специально для В прекрасная поддержка свежего предпочитаете – помогать компаниям одну под GPL, другую под коммерческой переводчиков? оборудования. Однако постоянно вы- писать драйвера под Linux или созда- лицензией. Совершенствуются средства сов- ходят новые устройства, видеокарты вать собственные? GPL более свободна, так как она защища- О местной работы переводчиков, и и так далее. В то же время для Ubuntu Наша позиция в том, что мы сможем ет свободу программы, предотвращая ее средства обсуждения новостей из пере- заявлена поддержка на три года для О лучше поддерживать продукты, если закрытие. Поэтому она предпочтительна водов, в частности, нечто вроде “заметок настольного варианта и пять лет для будет и поддержка со стороны производи- для больших проектов на полях”. серверного. Будет ли при этом обнов- теля. Как правило, поставщики заинтере- Если же Вы – разработчик небольшой про- Полетели бы Вы в космос на ко- ляться ядро для включения поддерж- сованы в открытии своих спецификаций, граммы и хотите наиболее широкого рас- В рабле, все бортовые компьюте- ки новых устройств? если они уверены в важности для них пространения своего кода, то BSD-лицен- ры которого работают под Ubuntu? Работа над текущим ядром будет данного рынка. Например, я и мои друзья зия может оказаться предпочтительней. Нет. (смех и бурные аплодисменты). О продолжаться, и драйверы устройств предпочитаем продукцию Intel, потому что О Знаете, какая система работает на из новых ядер будут по возможности пор- это открытая архитектура, для нее быстро Я поставил Ubuntu только для Союзе? Восьмибитный компьютер 70-х тироваться в текущее ядро. Однако понят- появляются драйверы. В того, чтобы отказаться от воро- годов, с программами непосредственно в но, что в какой-то момент обратное пор- ванного программного обеспечения. машинных кодах, с прямым программиро- тирование драйверов на ядро пятилетней Как Вы оцениваете взаимоот- Как мне объяснить это моим друзьям? ванием памяти, в котором нечему ломаться давности окажется невозможным. Поэтому В ношения между разработчиками (смех и аплодисменты) (бурные аплодисменты). через какое-то время мы выпустим оче- GPL-программ и разработчиками за- ИИНТЕРВЬЮНТЕРВЬЮ

В качестве завершающего штри- науке, образованию, искусству, в той или ха встречи планировалось, что иной форме дотироваться обществом? На Марк даст расширенное интер- что Марк неожиданно ответил вопросом: вью для журнала LinuxFormat. Однако на «А Вы как думаете?» большинство мыслимых вопросов ответы Будучи, некоторым образом, предста- были получены или из выступления, или в вителем науки, я, разумеется, ответил, что ходе последующего обсуждения, и застав- финансирование разработок Open Source лять Марка повторять это в очередной должно осуществляться по тем же моделям, раз было бы антигуманно. И потому все что и финансирование фундаментальной интервью свелось к обсуждению двух воп- науки – то есть дотационно. На что Марк росов, показавшимся, во-первых, наиболее сказал: «Предположим, Вы написали про- важными, а во-вторых, не прозвучавшим грамму чисто научного назначения. И Вам в основной части. В качестве интервьюера присылают к ней патч, никакого отноше- выступал ваш покорный слуга (хотя в ито- ния к науке не имеющий, но делающей эту ге получилось совсем не интервью), роль программу пригодной для коммерческого переводчика исполнял Павел Фролов – использования. Включите Вы его в свою генеральный директор Линуксцентра. программу или нет?» Сначала я поинтересовался мнением Вопрос почти поставил меня в тупик. Марка на счет того, с какого конца следует Чуть подумав, я ответил – почему бы и нет? подходить к пропаганде Open Source – сни- Ведь в сущности, наука для того и сущест- зу, со стороны пользователей-индивидуа- вует, чтобы ее результаты использовались. лов, в том числе домашних, или же сверху, В том числе и в интересах бизнеса. Важно от корпоративных потребителей IT. Иными только, чтобы сама наука не становилась словами, куда Linux придет раньше и с боль- при этом бизнесом. На чем и был достигнут шим успехом, в дома, или в офисы? Ответ почти что консенсус. был достаточно дипломатичным – «не сле- Вот такое странное интервью у нас дует пренебрегать ни теми, ни другими»; но получилось. в свете отмеченной ранее, во время ответов В заключение отмечу, что встреча про- на вопросы, ориентации на «квалифициро- шла, как говорится, в теплой и дружествен- ванное меньшинство», у меня сложилось ной, я бы сказал – неформальной, обста- впечатление, что Марк отдает предпочтение новке. Не обошлась она без «раздачи сло- решениям корпоративным. нов» – наклеек Ubuntu и последнего номера Второй же вопрос касался финансовой журнала Linux Format. А лично меня она стороны открытых проектов: должны ли навела на некоторые мысли, которыми я они стремиться к коммерческой самооку- надеюсь поделиться с читателями в самое паемости и прибыльности, или, подобно ближайшее время. LXF

www.linuxformat.ru LXF8(82) АВГУСТ 2006 35 ЧТО ТАКОЕ... Tenor Что такое... TENOR? Почему вы можете что угодно раскопать в Интернете, но не в курсе, что находится на вашем собственном диске? Может ли помочь Tenor? И даст ли Джоно Бэкон нам какую-нибдуь подсказку?

>> Будто я не знаю, что это – базе данных вместе с совокупностью свойств, в которой толстый дядька с тонким узлы (информация) соединены ребрами (связями). В голосом! структурные элементы встроено индексирование текста, и Нельзя же так легкомысленно отзываться о высоком Tenor готов к этой работе, но большинство более интерес- искусстве оперы! Вдобавок вы заблуждаетесь: Tenor – ных высокоуровневых вещей еще только планируется. довольно абстрактное понятие; в общем, это некая среда для создания контекстных сетей и построения приложений, >> Неплохая идея. А как она работающих с ними. появилась? Пару лет назад Скотт Вилер [Scott Wheeler], разработчик >> Чего-о? Tenor’а, обнаружил, что информацию гораздо легче найти в Я сказал, абстрактное понятие. Например, в сети, чем на рабочем столе. Он также пришел к выводу, что Интернете совокупность web-страниц, адресов электрон- весьма трудно объединить беспорядочные обрывки инфор- ной почты и файлов определенным образом объединена: мации в персональном компьютере. Обе эти задачи в сети допустим, существует связь между Mr Tambourine Man и решаются легко – можете привлечь свой любимый поиско- Бобом Диланом. Но имеет смысл также связать Mr вый сервер и найти нечто с желаемой степенью достовер- Tambourine Man и The Byrds. Tenor предоставляет вашей ности. А на рабочих столах таких средств нет. настольной системе место для размещения информации такого рода. >> Я где-то читал, что Tenor имеет какое-то отношение >> То есть он просто увязывает к KDE – он только под KDE и всякие там понятия? работает? В простейшем случае – да, но Tenor способен обеспечивать Tenor предусматривает несколько уровней (реа- более сложные отношения. Предположим, кто-то шлет вам лизован только первый). Самый низкий уро- письмо о сокращении среды обитания белого медведя в вень отвечает за управление связями графов (вспом- Канаде, с темой «Полярные медведи», и прикрепляет ните вышеприведенное бородатое объяснение из инфор- файл F12345.jpg – изображение здоровенной медведи- матики). Сюда включается создание вершин графов, их цы. Если вы не переименуете картинку сразу после получе- соединение, задание свойств и т.д. Он использует Qt – и ния (хоть оно и напрашивается, но про это легко забыть), весьма малую часть Qt, ее можно заменить без особых то впоследствии отыскать ее будет трудно, поскольку поиск проблем. На данной основе будет сделана надстройка по словосочетанию «полярные медведи» вряд ли обратит над KDE – средства облегчения работы с Tenor для внимание на файл с именем F12345.jpg (если, конечно, разработчиков приложений. Скотт Вилер сильно ваша система индексирования не отслеживает контекс- привержен ко KDE и, естественно, интегриру- тные связи – например, в данном случае это изображение ет эти элементы в среду KDE. Но он энергич- плюс электронное письмо, дата его отправки, размер фай- но подчеркивает, что ничто не мешает кому ла, тема и т.д.). Tenor – система построения подобных бы то ни было написать подобные надстройки для других сетей связанной информации и создания приложений, рабочих столов и программных оболочек. использующих эти возможности. Круто, правда? >> Ну хорошо, а что это даст лично >> Типа да, но позвольте мне мне? переодеться хакером Преимуществ несколько. Возможно, нечто вроде Kerry (фальшивая борода, сандалии и (KDE-надстройка для Beagle) будет переделано для работы широкие штаны) и попросить вас с Tenor и упростит поиск на компьютере. Но важнее то, что изложить эту идею в терминах выражается навязшим на зубах модным словом тэгирова- компьютерных наук. ние (навешивание ярлыков). В последнее время было мно- С точки зрения науки, это направленный граф, используе- го дискуссий о ярлыках и новом подходе к файловой нави- мый, говоря математическим языком, для отображения гации, с точки зрения управления содержимым. Примеры – связей между объектами. Данная структура хранится в динамические папки, создание ярлыков по технологии

36 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ЧТО ТАКОЕ... Tenor drag-and-drop, встроенный быстрый поиск и, теоретически, рам в Amazon.com скоро станет правилом, а основу для >> Beagle много кто хвалит, а Tenor файловая навигация по взаимосвязям, а не по простому этого закладывает Tenor. на него очень похож. В чем местоположению в иерархии. разница? >> Перейдем к деталям: что это Beagle – в большей степени классическая система индек- >> Стоп-стоп, я малость означает для моей конкретной сирования текста, Tenor решает другие задачи. Для сравне- запутался... KDE? ния представьте, что Tenor подобен PageRank от Google с Хороший пример – система навигации от Amazon.com, Да куча идей вокруг: например, прикреплять KNotes к спе- его системой оценки содержимого, а Beagle больше похож использующая немало того, что они называют увязкой кон- циальным ресурсам, а не разбрасывать на рабочем столе, на AltaVista или Lycos, их подход – «давайте просто проин- текста: информация о том, кто еще просматривал этот про- или отследить, что музыкальный файл в JuK или Amarok дексируем случайные ссылки». Без контекстных ссылок дукт и что он купил; рейтинги, категории; определяемые прислал ваш друг посредством Kopete; а как насчет вы не сможете осуществить поиск способом, реализован- пользователем тематические списки; комментарии, кото- использования меток DigiKam для облегчения поиска при- ным в большинстве современных алгоритмов. Другая ана- рые могут служить заметками по данному товару, и т.д. креплений в KMail? Список возможностей огромен, но логия, позволяющая понять разницу между ними – сравне- Если забыть о коммерческой части и думать только о кон- пока все это только идеи. Они должны превратиться в инс- ние предметного указателя в книге и гиперссылок в сети. тенте, то потенциал буквально завораживает. Менеджер трументы, чтобы стать реально полезными пользователям. Предметный указатель в книге решает некоторые задачи, и контента для просмотра данных по типу навигации по това- делает это достаточно хорошо. Гиперссылки – строитель- ные блоки для любых объектов, вы можете использовать их при создании поискового движка, напоминающего предметный указатель. >> Как продвигается разработка? Основные функции, для размещения объектов в графах, а также для переходов между графами и их опроса, уже в деле. Следующий шаг – создание таких функций, как поисковые классы для разработчиков, кото- рые могут быть подогнаны под определенные приложе- ния. Например, если вы пишете приложение для элект- ронной почты, то, возможно, захотите включить возможности поиска, специ- фичные для содержимого и в чем-то отличающиеся от используемых в гра- фическом редакторе. Существуют также приложения-помощники, без которых не обойтись. Один из примеров – диспет- чер ссылок с интерфейсом D-BUS. Используя технологию D-BUS от Freedesktop.org, это прило- жение позволит программе, затрагивающей часть информации в графе, вызвать другую программу для употребления найденной информации. Необходимо взаи- модействие различных приложений через посредство различных участков информации. Инструменты, которые облегчат внедрение Tenor в приложения, в настоящее время разрабатываются. Как только они будут готовы, настанет черед разработчиков использовать Tenor в сво- их приложениях. Это ожидается в серии релизов вет- ки KDE 4.0. >> Я практически ничего не слышал о Tenor, а выглядит-то он неплохо. Разработчики живут в пещере или где? Не в пещере, но Вилер предпочитает помалкивать о Tenor, пока не сможет продемонстрировать рабочую версию: ему надо заниматься разработкой Tenor, а не ответами на письма или дискуссиями о направлении развития неокон- ченной программы. Мы еле уговорили его высказаться для этой рубрики. К счастью, даже он не смог устоять перед LXF .

www.linuxformat.ru LXF8(82) АВГУСТ 2006 37 ИНТЕРВЬЮ Стюарт Коэн

LXF ИНТЕРВЬЮ

«И Microsoft запросто может вступить в OSDL?» « ААБСОЛЮТНО!БСОЛЮТНО! » Является ли Open Source Development Labs (Лаборатория Разработки Открытого Кода) цент- ром тяжести для Linux? Выходит ли из-под контроля процесс лицензирования открытого ПО? LXF встретился со Стюартом Коэном, руководителем OSDL, для выяснения…

38 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ИНТЕРВЬЮ Стюарт Коэн

адача Linux – добраться до LXF: Но OSDL позиционирует себя как самых разнообразных поль- «центр тяжести» для Linux. зователей: от крупных много- СК: Центр тяжести – любопытный термин. национальных корпораций до Когда я только начал работать, а фактичес- владельцев домашних ком- ки за пару недель до этого, Стив Балмер Зпьютеров, а это означает, что [Steve Ballmer, Microsoft] выступил и заявил, десятки непохожих группировок тянут его в что мы никогда не добьемся успеха по при- разные стороны. Залогом невозможности чине отсутствия центра тяжести. Мы под- монопольного захвата некой фирмой ядра хватили его фразу и сделали вроде расхо- Linux является работа создателя ядра, жего лозунга: «Мы станем этим центром Линуса Торвальдса [Linus Torvalds], в тяжести». некоммерческой организации, совместно На самом деле наша миссия в том, что- финансируемой многими спонсорами. бы стать местом, где могут собраться пос- Эта организация – The Open Source тавщики дистрибутивов, разработчики и Development Labs (OSDL): именно в ней тру- пользователи. Это по-настоящему ускоряет дится Торвальдс и несколько других знаме- темпы внедрения ПО с открытым кодом на нитых разработчиков, и это – гарантия, что корпоративный рынок. Определение «центр никто из поставщиков дистрибутивов не тяжести» было просто каламбуром в ответ сможет принудительно направлять разви- на заявление Балмера, пытавшегося коль- тие Linux в свое русло. OSDL также высту- нуть Linux. пает в роли центра, где обсуждаются стан- дарты, патентные реформы, лицензирова- LXF: Я как-то говорил с одним из ведущих том, что мы делаем с деловой точки зрения решениям, хранению данных, кластерингу и ние и другие темы, важные для всех проек- разработчиков ядра Linux, и тот сказал: и о том, что мы делаем в юридическом безопасности. Еще – на содержание обору- тов свободного ПО. «это не центр тяжести для Linux, это черная аспекте, и что мы делаем в отношении рын- дования, используемого открытым сооб- Пол Хадсон беседует со Стюартом дыра Linux». Они считают – по крайней ка, и в образовательном и промышленном ществом для работы над примерно 50–70 Коэном [Stuart Cohen], руководителем OSDL мере, между собой – что от крупных про- плане, и о нашей деятельности в плане проектами, которые постоянно крутятся в с 2003 года, о его взглядах на сотрудничес- мышленных предприятий поступает немало техническом. нашем информационном центре. тво OSDL с поставщиками дистрибутивов и средств, и эти средства исчезают где-то в с сообществом, а также на реформы в сфе- недрах OSDL, а наружу выходит малая ПРО OSDL ре предоставления патентов и лицензий… толика. Вы считаете, это правда? Linux Format: Думаю, многие могли бы СК: Я думаю, если бы вы спросили Линуса, «НАША МИССИЯ – СТАТЬ сказать, что OSDL тяготеет к крупным орга- или Эндрю Мортона [Andrew Morton], или низациям. По-вашему, это справедливо? Эндрю Триджелла [Andrew Tridgell], или МЕСТОМ ВСТРЕЧИ Стюарт Коэн (СК): Многие крупные орга- других разработчиков ядра, которых мы низации действительно являются членами поддерживаем или нанимаем на работу… ПОСТАВЩИКОВ, РАЗРАБОТ- OSDL. И немало крупных фирм-пользова- ведь они приносят немалую пользу, и все телей состоит в наших консультационных это исходит из OSDL, с этой точки зрения. ЧИКОВ И ПОЛЬЗОВАТЕЛЕЙ.” советах для потребителей. Мы работаем с Группа инженеров, работающих у нас крупными правительственными агентствами над этими проблемами, довольно мала, и по всему миру, например, с Министерством если представить массы людей, вовлечен- LXF: Куда попадает большая часть ваших Так что с инженерной точки зрения мы Информационной Индустрии в Китае, EЭС ных в проекты с открытым кодом или в раз- средств? занимаемся очень многим. А еще у нас есть в Европе, правительственными агентства- витие ядра, то выйдет, что только ничтож- СК: Наверное, больше чем куда-либо мы небольшая ИТ-группа, которая не только ми в США. ная их часть работает на нас. Но мы всегда направляем средства в разработку – боль- осуществляет поддержку нашей внутренней Да, если угодно, мы работаем с боль- стараемся внести достойный вклад – идет ше половины нашего бюджета. деятельности и поддержку проектов, свя- шим бизнесом, но не только с промышлен- ли речь о должном лидерстве или о вкладе занных с двумя нашими информационными ными предприятиями, но и с университета- в кодовую базу. LXF: Каков на сегодня ваш годовой центрами – один в Токио, один в Бивертоне, ми, и с государственными учреждениями. У нас есть люди, занимающиеся под- бюджет? но также вносит вклад в большое количест- В деятельности OSDL участвует немало держкой подсистем [ядра, – прим.ред.], у СК: Около 10 миллионов долларов. во всевозможных проектов с открытым молодых фирм и частных лиц, не только нас есть разработчики ядра, они работают у кодом. в рабочих группах, но и в консультаци- нас и играют ключевые роли, и уж для них- LXF: Тo есть $5 млн. в год уходит на онных советах – мы их называем LUAC, то, конечно, мы не черная дыра. разработку? LXF: И все-таки около половины приходит- Консультационные советы пользователей СК: Приблизительно. Они распределяются ся на инженерную часть? Linux (Linux User Advisory Councils), да еще LXF: Итак, у вас есть Линус, Эндрю, между разработчиками ядра и нашей испы- СК: Правильно. некоторые частные лица вносят средства в Триджелл, а Крис Райт [Chris Wright] тоже тательной группой, регрессионным тестиро- фонд юридической защиты. работает в OSDL? ванием и OSDL Working Set – открытым LXF: Сколько инженеров вы за последнее Хотя прежде всего мы концентрируемся СК: Да, и Стив Хеммингер [Steve проектом, размещенным на наш web-сайте, время уволили, если, конечно, увольняли? на компьютеризации предприятий, то есть Hemminger]. который следит за программами и библио- СК: Пару инженеров, когда мы увольняли на крупном бизнесе, государственных теками, которые люди запускают поверх несколько человек [летом 2005], чтобы учреждениях и университетах; я думаю, что LXF: Их число ограничено – человек десять ядра. Еще эти средства идут на финансиро- высвободить средства для областей, на по мере достижения успеха в этой сфере или около того. Так оправдывает ли объем вание рабочих групп, занимающихся теле- которых мы решили сконцентрировать вни-

Linux будет все больше проникать в средний работы, выполняемый OSDL, вкладывае- коммуникационными или настольными сис- мание – глобальная экспансия, IP-деятель- и малый бизнес. И это тоже будет играть мые средства? темами, или вычислительными центрами. А ность [IP – intellectual property – интеллекту- >> для нас важную роль. СК: Ну что ж, давайте еще раз поговорим о еще – тратятся на инициативы по сетевым альная собственность, – прим. ред.].

www.linuxformat.ru LXF8(82) АВГУСТ 2006 39 ИНТЕРВЬЮ Стюарт Коэн

>> >> Расширение происходит в сфере маркетин- торговой марки Linux и Linux Mark Institute, В свою очередь, мы тоже принимаем учас- LXF: Значит, инженерам пришлось уйти, га, развития бизнеса, ИТ, финансов… созданного Линусом много лет назад. тие в этой деятельности; плюс к тому, Эбен чтобы высвободить фонды. Вместе с Ларри Огастином [Larry Augustin] я собирается заниматься одним из принципи- СК: Повторяю еще раз, это было лишь LXF: Что вы называете «IP-деятельнос- вхожу в совет директоров Linux Mark альных моментов – пересмотром GPL. И несколько человек. тью»? Термин широк! Institute, мы следим за составлением субли- пока он осуществляет миграцию с GPL 2.0 СК: Например, сейчас ведется разнообраз- цензий торговой марки Linux, наша задача на 3.0 через фонд Free Software Foundation, LXF: Сколько инженеров у вас работает? ная деятельность в юридической области. – убедиться, что торговая марка сохраняет- нам надо обеспечивать существование СК: Всего у нас более 50 сотрудников. Имеются проблемы с авторским правом, ся и поддерживается и становится неотъем- Software Freedom Law Centre и его возмож- Несколько человек ушли, и у нас осталось явная проблема с иском SCO, а несколько лемой частью всего происходящего процес- ность этим заниматься. 40, и, как я уже сказал, это касалось всех лет назад мы объявили о фонде юридичес- са, словом, следить, чтобы торговая марка Это все только по поводу аспекта IP. Но наших подразделений. кой защиты для поддержки инженеров, к Linux было защищена. есть и еще одна сфера серьезного внима- которым предъявляет претензии SCO. ния – вопрос «Чем тормозится распростра- LXF: Поговорим о патентах. Это область, Менее чем за неделю мы собрали около $3 LXF: Но вы ведь создали Фонд Поддержки нение Linux?». Некоторые разработчики где OSDL стоит по обе стороны забора. млн. для содействия тем двум конечным IP (IP Support Fund)? могут сказать, что все дело в коде, но есть СК: Это как? пользователям, и это отлично сработало, СК: Да, мы собрали средства для двух многое и помимо кода, поскольку на данный поскольку SCO больше не преследует целей – для вопросов по патентам и ИТ, момент с технической стороны Linux доста- LXF: Ну, большая часть ваших средств пос- конечных пользователей, о чем заявлено решаемым у нас внутри, и для поддержки точно хорош для массового использования тупает от фирм-владельцев многих патен- публично. Software Freedom Law Centre, основанного по всему миру. Проблемы в основном лежат тов. Многие из них твердят: «Нам не нра- вятся патенты, надо бы их отменить, но мы ПРО МЕДЛЕННОЕ РАСПРОСТРАНЕНИЕ будем все равно их регистрировать». Например, IBM ежегодно регистрирует 3000 патентов, или похожее безумное число. Вы «Linux достаточно хорош технически для не думаете, что OSDL ведет себя противоречиво? использования по всему миру.» СК: Отнюдь. Я думаю, ваши слова отража- ют реальность. Посмотрите на патентные бюро по всему миру, будь то Китай, Япония, ЕЭС, США – все они ждут патентной Мы много делаем в области лицензиро- Эбеном Могленом [Eben Moglen], мы вло- как раз в сфере бизнеса, это проблемы, реформы. вания и в области переизбытка лицензий. жились в этот Центр. Вы могли видеть, что касающиеся совместной работы программ с Мы считаем патентную реформу непло- Как вам известно, на сегодняшний день за несколько лет мы выделили Эбену $4,2 открытым кодом в Linux, поскольку все это хой идеей, нам кажется, что патентов на ПО между FSF и OSI имеется более 60 откры- млн. на оказание юридических услуг откры- завязано на стандартизации дистрибутивов, слишком уж много. Многие из них недейс- тых лицензий, но мы полагаем, что боль- тым проектам, которые мы сочли ключевы- уверенности в их совместимости и надеж- твительны, многие просто не следовало шую часть необходимой работы вполне ми. Поскольку эти проекты включали в себя ности, как в США, так и во всем мире. выдавать. Но реальность такова, что пере- могут выполнять где-то полдюжины лицен- все больше и больше программ, которые ход из сегодняшней ситуации в такую ситу- зий. Так что мы очень серьезно этим использовались на крупных предприятиях, LXF: А вам не кажется, что, возможно, луч- ацию, когда вообще не будет патентов на занимаемся. в крупных университетах, крупных прави- ше оставить вопросы стандартизации на ПО, займет длительное время. И в течение Мы также занимаемся вопросами тор- тельственных учреждениях, мы хотели LSB [Linux Standard Base, База Стандартов этого переходного периода мы хотим быть говых марок, в частности, касающимися надежно укрепить их юридические позиции. Linux – прим. пер.], вопросы интеграции – уверенными в том, что ведется необходи- на поставщиков дистрибутивов, а OSDL мая деятельность, чтобы разработчики про- будет работать в тех областях, для которых должали работать, продолжали обновлять и предназначена? разрабатывать код, без всяких проблем, СК: Никоим образом. У нас есть совет связанных с патентами. директоров, у нас есть бизнес-план, у Пусть вы слышите о том, что Red Hat нас есть согласованная программа нашей предоставляет патенты [в свободный деятельности. Поэтому мы полагаем, что доступ, – прим.ред.], или НР извещает о LSB – это очень важный первый шаг, защите, или IBM “выкладывает” свои патен- но чтобы эффективно работать с дист- ты – а мы считаем, вот и хорошо. Возьмем рибутивами во всем мире, ей надо стать Sun: эта фирма выдала множество патен- намного сильнее. Когда вы рассматрива- тов, но только пользователям Solaris. Было ете деятельность, связанную с Asianux, бы очень хорошо, если бы существовало Mandriva и Debian, вы рассматриваете эта- широкое соглашение о патентах на откры- лонную архитектуру из Китая и проекты тый код, если угодно. Open Source Symposium из Китая, Японии и Кореи. Мы считаем LXF: Cоглашение о предоставлении патен- очень важной сильную сов- тов Nokia касалось только ядра. А у вас ведь местимость между Red Hat и Лаборатория Разработки Открытого Кода, а SUSE и основной массой дис- не Лаборатория Разработки Ядра (Kernel трибутивов из разных стран. Development Labs). Неужели вам этого Именно это увеличивает цен- хватает? ность и повышает доверие пот- СК: Нет, но еще раз повторяю – это лишь ребителей. Мы делаем намного больше, хороший первый шаг. Нельзя же ожидать, нежели простое написание кода. что все фирмы утром проснутся, соберут

40 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ИНТЕРВЬЮ Стюарт Коэн

ПРО ЧЛЕНСТВО В OSDL «Некоммерческой организации, нейтральной к поставщикам, нельзя быть разборчивой: кого принимать, а кого нет.»

свои патенты и отдадут их. Однако все эти отменить все патенты уже завтра, и потом их поддержать?». И если нам ответят «да» так же легко, но предъявить по нему иск фирмы пытаются работать с теми бизнес- весь остальной мир сообщит, что на это пот- – мы готовы принять их. уже труднее. Здорово, конечно, что IBM или моделями, которые сегодня актуальны. А ребуется 25 лет, а вы заявите: «Вот видите, кто другой под это подпадают, но от этого правительства пытаются реформировать OSDL ошиблась». LLXF: А если нет? мало прока с точки зрения радикальной патентную политику. Но быстро такие дела СК: Tогда они и вступать не будут. Но пре- отмены патентов на ПО. не делаются. LXF: Ну, я не этого добивался. Я просто пятствовать им мы не можем. Мы не можем СК: Да, могу еще раз сказать: я думаю, это Причем те же фирмы стараются убе- говорю, что вы верите, что в какой-то переписать закон. долгий процесс. Возьмите Бразилию, дить разработчиков всего мира, что их момент в будущем – необязательно завтра, Китай, Японию, ЕЭС и США – уж не будем патенты не будут использованы против них может быть, через 25, 30 лет – патенты на LXF: Значит, Microsoft запросто может рассматривать каждое патентное бюро в ни в каком виде или форме, и что у разра- ПО будут отменены, и вы этого хотите. вступить в OSDL. мире. Даже основные патентные бюро ботчиков есть полный доступ к этим патен- СК: Я думаю, что к этому движется весь СК: Абсолютно. У нас есть еще 70 фирм – занимают разные позиции по патентной там по части разработки ядра или мир, и мы это будем поддерживать. членов OSDL, и их количество, возможно, реформе. инноваций. перевалит за 100. Отстает ли правительство США? Да. Ну и что, значит, завтра все патенты LXF: А вы не рассматривали возможность Движутся ли они медленнее, чем некото- будут полностью отменены? Нет. И я не каких-либо санкций против тех членов, LXF: И сколько же этих фирм, по-вашему, рые другие патентные бюро? И это правда. знаю ни одного места в мире, где это в которые игнорируют эту позицию? будут конфликтовать с вашей точкой зрения Но мне думается, что в целом все двигают- самом деле может произойти – разве что у СК: Мы – некоммерческая организация, на патенты? ся в нужном общем направлении. LXF кого-то в воображении. нейтральная по отношению к поставщикам СК: Вероятно, подавляющее большинство дистрибутивов. Так что в какой-то степени из них работает над патентной реформой. LXF: Но вы же говорили, что большинство это трудно… Не думаю, что есть хоть одна фирма, кото- предоставленных патентов недействитель- рая бы не работала – хоть в какой-то степе- Читайте ны. Вы не сказали, что недействительны все LXF: Но это же не значит, что вы впустите к ни – над реформой патентов на ПО. Вопрос полную онлайн- патенты. То есть, на ваш взгляд, патенты на себе кого попало? только в темпе и степени, но в общем любая версию интервью на ПО выдавать можно, но только после тща- СК: На самом деле значит. По закону. фирма, вступавшая в OSDL, заявляла, что www.linuxformat.co.uk/ тельного изучения? патенты должны быть реформированы. cohen.html, где Стюарт СК: Вы говорите о разных вещах. Я дейс- LXF: По закону вы обязаны позволить всту- отвечает на вопросы о SCO, твительно верю, что через какое-то время пить в свою организацию любому? LXF: Я думаю, что в США патентная рефор- BitKeeper и сходстве с реформа патентов добьется полной отмена СК: Да. Неужели вы думаете, что можно ма отличается. Мне кажется, что некая раз- Coca-Cola. патентов на ПО. работать в некоммерческой организации, новидность патентной реформы происходит нейтрально относящейся к поставщикам, и прямо сейчас: это попытка уменьшить опас- LXF: Так вы этого хотите? при этом выбирать – кому позволить всту- ность судебных исков. Получить патент все СК: Да. Мы думаем, что именно так и про- пать в нее, а кому нет? изойдет. Но не сейчас. Если заглядывать вперед, то мы считаем патентную реформу LXF: Неужели нельзя? правильным направлением. Через много, СК: Вот именно, нельзя. много времени все правительства в мире коллективно придут к этой точке зрения. LXF: Ну хорошо, если бы вы работали в Но оглянитесь назад и посмотрите на благотворительном фонде Спасения Детей имеющиеся патенты на ПО: большинство из и в него захотела бы вступить некая органи- них было недействительно с самого начала. зация, являющаяся частью движения Называют разные цифры – треть, две тре- «Смерть детям», вы же не пустили бы их в ти, 80% – разные люди приводят разные ваш фонд. Вы могли бы им сказать: «Вы не данные по поводу их количества. То есть я разделяете наших взглядов». хочу подчеркнуть: задним числом самые СК: Дело в том, что есть законы, регулиру- разные люди вам скажут, что большинство ющие деятельность некоммерческих орга- патентов недействительно, и их не следова- низаций. И конечно же, мы не захотим, что- ло предоставлять вообще. бы членом OSDL стал тот, кто не разделяет наших взглядов на миссию, стратегию и LXF: Хочу уточнить: итак, точка зрения направление. OSDL на самом деле в том, что патенты на ПО выдавать не надо. LXF: Вот-вот. Значит, кому-то вы можете СК: Наша... Чтобы вам стало полностью запретить членство? ясно: патенты на ПО отживают свое, но они СК: Вопрос не в том, чтобы запретить, воп- отживают свое с течением времени. Я не рос звучит иначе: «Вот наша миссия, цели и собираюсь здесь провозглашать, что нужно задачи – согласны ли вы с ними и готовы ли

www.linuxformat.ru LXF8(82) АВГУСТ 2006 41 LINUX БЬЕТ VISTA Linux vs Vista: наши бьют!

IIt’sБлистательныйt’s thethe shiny,shiny, 3D-accelerated3D-a cрабочийcelerated столwwonderond eсr ddesktop3D-ускорениемesktop tthat’sбудетhat’s goingg oправитьing toto ruleru leмиром... tthehe wworldorld о – да, yyes,es ,это wwee проddoo mmean Linux.ean LLinux.Полinux Хадсон. PPaulaul HudsonHu dразбирается,son findsfinds outout whyw почемуhy LinuxLinux «Linuxvsvs VistaVista против iisVista»s a battlebat t–le этоwewe cancбитва,an winwin handshкоторуюands down.dow nмы. можем выиграть, даже ничего не делая.

indows Vista вно- у многих из них капают слюнки при мысли щую крутизну Linux и убедить ваших сит ясность в ваш о новом релизе Windows. использующих Windows друзей перейти на мир, чтобы вы Так что в этом выпуске мы предоставля- него. Все, кто объявлял Linux неподходя- НА ДИСКЕ могли безопасно ем вам оружие для проповедей, которое щим для настольных систем, убедятся в и легко выпол- поможет выигрышно показать ошеломляю- своей неправоте... • Beagle 0.2.6 нять повседнев- • Compiz • SuperKaramba 0.39 Wные задачи и немедленно находить, что • Xgl хотите, на своем ПК. По крайней мере, такую НАЗАД, В БУДУЩЕЕ установку Microsoft навязывает миру, и, если вы пользователь Windows, для вас это прав- Бывалые линуксоиды сразу узнают некоторые «новые» функции Vista: да – как минимум, отчасти. «Инновации» Vista Linix-эквивалент Но вы читаете этот журнал как раз потому, что вы – не Instant Search Beagle пользователь Windows, и не Интерфейс Aero Xgl удивитесь, узнав, что многие Виджеты рабочего стола SuperKaramba из «инноваций», которые Network Explorer Bonjour Microsoft заявляет для Vista, Встроенный брандмауэр Встроенный брандмауэр давно доступны в Linux. BitLocker Встроенное шифрование файловой Фактически, Linux даже обла- дает такими функциями, кото- Браузер IE7 со вкладками Браузер Firefox со вкладками рые не включили в Vista, побо- Графическая библиотека Avalon Графическая библиотека Cairo явшись сорвать сроки выхода! Графические интерфейсы на XAML Графические интерфейсы на XUL Выход Windows Vista ожидается в конце этого Все мы знаем людей, до сих Автоматические обновления Автоматические обновления года... после значительной задержки. пор зацикленных на Microsoft, и

42 LXF8(82) АВГУСТ 2006 www.linuxformat.ru LINUX БЬЕТ VISTA

Мгновенный поиск файлов

Пользователи, перешедшие с Windows сообщения, а также тема и информация об результаты поиска автоматически обновят- 2000 на Windows XP, пережили одно из отправителе и получателе. Иными словами, ся, если вновь созданный файл или посту- самых пессимистических обновлений за все Beagle извлекает из каждого файла наибо- пившее сообщение подпадут под критерии время: Microsoft переименовала меню лее полезные данные. поиска. «Найти» (Find) в «Поиск» (Search). Сочувствуем: попытка найти скачанные Всегда рядом файлы или установленные программы – Beagle установлен и доступен по умолча- «BEAGLE НАБЛЮДАЕТ ЗА ВСЕЙ непростая задача для многих операционных нию как в Fedora Core 5, так и в SUSE 10.1, систем, во многом из-за чрезмерно разрас- и многие другие дистрибутивы включают ФАЙЛОВОЙ СИСТЕМОЙ, тающихся жестких дисков. Но с выходом его как опцию. Еще более впечатляет факт, Vista Microsoft обещает прорыв: инструмент что Gnome 2.14 – окружение рабочего сто- ОБНАРУЖИВАЯ ИЗМЕНЕНИЯ.» Instant Search, «поиск, интегрированный в ла, стандарт трех самых популярных дист- рабочий стол». Знакомо, а? рибутивов – использует Beagle как низко- Сочтя, что результаты поиска в даль- В Linux мы привыкли к собственному уровневый поисковый механизм (back-end) нейшем вам пригодятся, можете сохранить инструменту настольного поиска – Beagle, для основного файлового менеджера их в виртуальной папке, а затем повторять который индексирует документы, электрон- Nautilus. поиск, просто дважды щелкнув по иконке ные письма, диалоги обмена мгновенными Эта новая версия Gnome уже пошла как сохраненного запроса – результат тут же сообщениями, изображения, звуковые и стандарт в Fedora 5 и Ubuntu 6.06, то есть вберет изменения вашей файловой систе-

видеофайлы, приложения... и даже вашу вы можете нажать Ctrl+F в любом окне мы. Это великолепно! Если вы раньше историю посещения web-страниц. Вся эта Nautilus (или на рабочем столе), и ваши никогда не пробовали Beagle в работе, >> информация немедленно отображается в файлы мгновенно найдутся. Более того, взгляните на врезку внизу... одном окне поиска. Beagle следит за всей вашей файловой системой и засекает, когда файлы измени- ВНАЧАЛЕ БЫЛ LINUX... BEAGLE лись. Несколько лет назад эту работу выполняла библиотека libfam (file alteration monitor, монитор изменения файлов), она бормотала себе под нос: «Хмм... что-нибудь поменялось в /usr? Нет? Ладно. А сейчас? Нет? Славненько», и так далее – она наблю- дала за каждым каталогом. Нетрудно догадаться, что libfam не отличалась бешеной скоростью, но теперь у нас есть решение: Inotify. Это компонент ядра Linux (которое, собственно, и выполня- ет запись данных на жесткий диск), сообща- ющий программам об изменении файлов. Процессор практически не нагружается, а Чудеса Beagle: мы пошарили по файлам в поисках слова Не закрывая окна поиска, мы скачали несколько рисунков Beagle полностью сканирует систему всего graham и нашли музыку, сочиненную Грэмом Моррисоном, Грэма из блога LXF. Beagle сразу же обнаружил их и добавил в один раз (во время первоначальной уста- плюс сайты, на которые мы заходили и где он упоминается. наши результаты. новки), после чего только делает обновле- ния по мере изменения файлов. Друг человека Магия Beagle [англ. «гончий пес», – прим. пер.] заключается не просто в поиске по именам файлов в соответствии с вашим запросом: интеллектуальные фильтры обрабатывают различные типы файлов индивидуально. Например, у документов OpenOffice.org или PDF Beagle читает содер- жимое (т.е. текст, набранный на странице, листе электронной таблицы или слайде). У звуковых файлов читается ID3-тэг, храня- Beagle с легкостью обеспечивает «прозрачный» поиск из Если какой-либо запрос выполняется довольно часто, щий сведения об исполнителе, название других мест вашего рабочего стола, например, из Nautilus. сохраните его как виртуальную папку и просматривайте его альбома и другую полезную информацию. результаты просто двойным щелчком. У электронной почты индексируется тело

www.linuxformat.ru LXF8(82) АВГУСТ 2006 43 LINUX БЬЕТ VISTA

Даешь шикарную графику!

Одно из самых разрекламированных ет рисовать отнюдь не одни прямоуголь- на грани куба, который можно вращать в нововведений Vista – новый графический нички и кружочки, так почему бы этим не реальном времени. Вы больше не увиди- интерфейс пользователя Aero, который воспользоваться? те «разрывов» графики при перемещении добавляет трехмерную оболочку к традици- Xgl натягивает каждое окно с ваше- окон по экрану; и можно даже добавить онному внешнему виду и ощущениям XP. го стола на многоугольник как текстуру, эффект тряски. Довольно мило – но ему далеко до аппарат- и затем помещает его в отдельном слое Никто – вот именно, никто – не сможет но ускоряемого интерфейса, включенного в поверх других в ОЗУ, применяя мягкие остаться равнодушным, увидев Xgl в дейст- Mac OS X несколько лет назад. тени, сглаживание пикселей и направлен- вии. Несмотря на молодость проекта, Xgl И даже взяв все лучшее от Vista и OS X, ное освещение. Каждый из ваших вирту- уже напичкан функциями больше, чем мод- вы и близко не подойдете к Linux, благода- альных рабочих столов затем проецируется ный сотовый телефон прямо из Японии. ря самому замечательному графическому нововведению на сегодняшний день – Xgl. 3D: Дождались Разработанный и переработанный за пос- ледние несколько лет, Xgl наконец-то выполнил обещание предоставить графи- «XGL РЕАЛЬНО ОБЕЩАЕТ АППАРАТНОЕ УСКОРЕНИЕ ГРАФИКИ.»

ку с настоящим аппаратным ускорением. Раньше прорисовка всех ваших окон была заботой процессора, и это отнимало весь- ма значительные ресурсы. С Xgl весь про- цесс прорисовки окон на экране выполня- ется вашей видеокартой, она делает это намного быстрее. Вдобавок открываются Xgl размещает виртуальные рабочие столы на гранях куба новые возможности: ваша видеокарта уме- (или восьмигранной призмы, если хотите), позволяя прокручивать его с помощью мыши. ВНАЧАЛЕ БЫЛ LINUX... XGL

Хотя настройка Xgl по умолчанию вели- • general > allscreens > options > texture_ • plugins > scale > screen0 > options > безумное зрелище, если распахнуть окно колепна сама по себе, есть десятки пара- filter – установите в Fast, если у вас медлен- corners – настройки эффекта Expos . По на весь экран). метров, с которыми можно поэкспери- ная видеокарта, или в Best в противном слу- умолчанию это TopLeft – если захотите, • plugins > zoom > screen0 > options > ментировать, добившись абсолютной чае. можете добавить более одного «горячего filter_linear – активируйте ее, и Xgl будет точности. Некоторые из них доступны в • general > allscreens > screen0 > options > угла» (это угол дисплея, куда надо подвести сглаживать экран при увеличении масш- диалоге Desktop Effects в Центре управ- lighting – когда эта опция включена, на ваш мышь, чтобы произошла активация этого таба, это выглядит намного приятнее! ления Gnome (если вы используете SUSE рабочий стол-куб падают лучи прямого света. эффект). Другая возможность – изменить 10.1 с нашего диска), но для Истинно • general > allscreens > screen0 > options значение initiate, для задания определенной Предельной Мощности потребуется Gconf. > size – число граней вашего трехмерного клавиши на клавиатуре. Вы можете запустить его, набрав gconf- рабочего стола. По умолчанию оно равно 4 • plugins > switcher > screen0 > options > editor в командной строке, или открыв (это куб, поскольку верхняя и нижняя грани saturation – здесь определяется цветность Applications > System > Configuration > не задействованы), но вы можете устано- фона, когда вы нажимаете Alt-Tab. По умол- Gnome Configuration Editor. вить что-нибудь до 32-х. чанию используется 100, но если вы изме- Как только Gconf загрузится, откройте • plugins > cube > screen0 > options > in – ните его на 0, цвет фона обернется черно- вкладку Apps и выберите Compiz. Там вы включив эту опцию, вы окажетесь не снаружи белой градиентной шкалой. увидите древовидные структуры General и вашего куба, а внутри. Внимание: эта опция не • plugins > water > screen0 > options > Plugins, в которые можно внести свои для подверженных клаустрофобии! rain_delay – установите это значение в 1 и изменения. Не забывайте, что в Gnome • plugins > cube > screen0 > options > нажмите Shift-F9, на экране возникнет Реформа Alt-Tab: встречайте живые любые изменения, сделанные в Gconf, при- skydome – укажите здесь файл PNG, нахо- настоящий муссон. миниатюры ваших окон, с альфа- меняются автоматически, без нажатия дящийся на вашем компьютере, чтобы Xgl • plugins > wobbly > screen0 > options > прозрачностью для подсветки кнопки Save. Вот несколько ключей, с кото- отображал изображение (видимое только во frection – установите в единицу, чтобы ваши вашего выбора. рыми вам, возможно, захочется поиграть: время его вращения) позади куба. окна колыхались как студень (совершенно

44 LXF8(82) АВГУСТ 2006 www.linuxformat.ru LINUX БЬЕТ VISTA

Эффекты Xgl нажмете Ctrl-Alt-Down («стрелка вниз»), Что же это за функции? Одни имеют реаль- Xgl покажет развертку куба, и вы увидите ную ценность для конечного пользователя, каждую грань; стрелками «Вправо» и другие – просто баловство; но впечатляюще «Влево» можно переключаться между выглядят все – и являются неотразимым гранями. аргументом против сидения сложа руки в • Экспозиция окон. Вы видели это в ожидании Windows Vista. OS X, теперь поглядите и в Linux: перемес- • Альфа-прозрачность и затуха- тите вашу мышь в верхний левый угол ние. Выберите любое окно, удерживая вашего экрана, и Xgl сожмет все ваши окна нажатой Alt, затем покрутите колесико так, чтобы они уместились на одном экране. мышки – прозрачность окна изменится. В Щелкните по любому из окон – оно будет некоторых других эффектах Xgl автомати- выбрано; или щелкните по обоям, чтобы чески затемняет окна; этот же просто позво- свернуть все окна. ляет вам форсировать настройки. • Переключатель задач. Нажмите • Куб рабочих столов. Виртуальные Alt-Tab, и Xgl затемнит фон и все ваши рабочие столы всегда с трудом воспринима- окна, затем отобразит миниатюру каждого лись новичками в Linux, а теперь эту кон- окна в центре экрана. При удержанной кла- цепцию можно объяснить наглядно – раз- више Alt, щелкая Tab, вы сможете цикли- Эффект струящейся воды демонстрирует гибкость и потенциал Xgl. местив каждый из рабочих столов на кубе, чески переключаться между окнами на который пользователь может вращать. вашем рабочем столе, и Xgl выведет их на указатель мыши, а удерживая Ctrl- Нажмите Ctrl-Alt и щелкните где-нибудь на передний план с эффектом наплыва. Windows, можно нарисовать мышью свои экране, затем перетащите мышь влево или • Вода. Ну вот и один из бесполезных, собственные волны. Забавно, да только вправо, чтобы повернуть куб. Другой спо- но прикольных эффектов – нажмите Shift- функции тут ни при чем! соб – щелкните на заголовке окна и перета- F9, и на ваш рабочий стол польет дождь, • Трясущиеся окна. Этот эффект, щите его за пределы экрана, чтобы пере- создавая эффекты текучей ряби. При нажа- как и Вода, не особо полезен, но на экране местить его на другую сторону. Если вы тии Ctrl-Windows капля воды упадет на смотрится просто изумительно. Когда вы перемещаете какое-нибудь окно (или увели- чиваете его размер), окно реагирует так, как будто сделано из желе – край, который вы тянете, не отстает от курсора мыши, а остальная часть окна медлит следовать за ним, отчего слегка растягивается и деформируется. • Масштаб. Удерживайте клавишу Windows и правую клавишу мыши, и Xgl перескочит на двукратное увеличение ваше- го рабочего стола. Прокрутите вперед коле- сико мыши – масштаб увеличится еще больше; и вы сможете перемещаться по рабочему столу, просто передвигая мышь.

Перетаскивание ваших окон временно их деформирует. Пользы никакой, но выглядит чертовски эффектно!

С одного щелчка ваши виртуальные рабочие столы выстроятся в одну линию, и вы сможете увидеть их все сразу. Перемещение влево и вправо – стрелками курсора.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 45 LINUX БЬЕТ VISTA

Виджеты наготове

В Vista обещана новая боковая панель Естественно, Linux уже долгие годы имеет виджетов означает, что каждому что-нибудь для управления виджетами – полезными все это в виде SuperKaramba – сверхгибкой да найдется – от удивительно полезного утилитками (калькуляторы, часы, заметки- системы виджетов с тысячами готовых тем, инструмента Liquid Weather (прогноз погоды приклейки, RSS-ридеры и многие другие). доступных для скачивания. Широкий выбор в вашем районе на следующую неделю) до восхитительно нелепого монитора процес- сора Doom, отображающего загрузку про- ВНАЧАЛЕ БЫЛ LINUX... SUPERKARAMBA цессора выражением лица героя из Doom. Когда нагрузка на систему возрастает, Установив SuperKaramba на свою машину, парень из Doom свирепеет на глазах. обзавестись новыми виджетами можно, Возможно, Microsoft ему не устрашить, но всего-навсего нажав кнопку New Stuff в есть дюжина-другая истинно полезных и главном диалоге SuperKaramba. При этом загрузится список популярных виджетов, бесплатных виджетов, обеспечивающих для и вы сможете установить любой из них, Linux устойчивое лидерство. выделив его и щелкнув Install. Чтобы Более того, уже ведутся работы по отобразить понравившийся виджет, выде- добавлению в KDE 4 совместимости с вид- лите его и щелкните на Add To Desktop. жетами OS X Dashboard, что принесет еще По умолчанию местоположение каждо- сотни виджетов в каталог SuperKaramba. го виджета зафиксировано, но вы можете щелкнуть на нем правой кнопкой мыши, Кстати, лучшее место для поиска вид- выбрать Toggle Locked Position и перемес- жетов – www.kde-look.org, там они пред- тить его вслед за мышью. Если виджетов ставлены в соответствии с рейтингом и час- явный перебор (а это может случиться тотой скачиваний, тысячи штук на выбор. очень легко, когда вы впервые дорветесь Но не хватите через край: слишком легко до этой «кондитерской» крутых наворо- переборщить и замусорить свой рабочий тов), щелкните Close This Theme в контекс- стол. тном меню виджета, который вам надоел. В SuperKaramba есть виджеты на любой вкус, упрощающие жизнь. Незамедлительная сеть

С Windows Vista установка сетевого Linux уже располагает простой сетевой Bonjour также популярен в мире обме- соединения между разнообразными ПК и функциональностью, использующей стан- на мгновенными сообщениями, посколь- устройствами проста и интуитивно понят- дарт Apple Bonjour (ранее известный как ку позволяет людям формировать сти- на? Хорошо, попробуем и это – и удержим- Rendezvous или ZeroConf). Это сетевая хийные (ad hoc) коммуникационные сети. ся во главе гонки, даже не запыхавшись. широковещательная система, которая рас- Например, если вы участник конференции, сылает общее “hello” всем устройствам в с терминала Wi-Fi вы можете подклю- сети и ждет ответа. Все другие устройства, читься и увидеть список других участни- на которых работает программа Bonjour ков, подсоединенных к сети в настоящий (включая машины с Mac и Linux), в ответ момент. Затем начинайте общение через сообщают о своем существовании, и внутреннюю сеть – с использованием либо устройства автоматически настраиваются мгновенных сообщений, либо голосового для общения друг с другом. или видео-чата. Поскольку на самом деле Bonjour – Используя Linux-программу iFolder, вы просто протокол опроса сети, он может можете предоставить свои файлы в общий работать со всеми типами приложений. доступ по сети другим людям, которых Сейчас наиболее популярное его примене- обнаружил Bonjour. Поскольку iFolder пре- ние – поиск общедоступной (shared) музыки доставляет общий доступ к папке на вашем в вашей сети. Если вы запустите iTunes на компьютере, как если бы она была локаль- Mac или Windows (iTunes совместим с ной, это означает, что если кто-то изменит Bonjour), то сможете выбрать Share My какие-то файлы в этой папке, изменения Music (Поделюсь музыкой). Каждый, кто будут автоматически скопированы всем, кто использует Linux-компьютер в этой сети, разделяет эту папку – превосходно для получит вашу музыку в свой проигрыватель групповой работы в сети. Установите флажок – и ваша музыка зазвучит в локальной сети. и сможет слушать ваши мелодии.

46 LXF8(82) АВГУСТ 2006 www.linuxformat.ru LINUX БЬЕТ VISTA

сделать машины Windows мало-мальски безопасными. Прочная защита Шифрование файловой системы в Vista, названное BitLocker, также едва ли ново: Linux поддерживает шифрование томов уже несколько лет. Если вы хотите Когда в октябре 2001 г. появилась которые делают ее даже более защищен- попробовать его прямо сейчас, восполь- Windows XP, Microsoft сулила пользова- ной, чем прежние клиентские операционные зуйтесь пошаговым руководством из LXF80 телям «возросшую надежность, удобс- системы Windows». После чудес, обещан- или просто отметьте флажок, как показано тво, функции безопасности и коммуника- ных на XP, не удивительно, что кое-кто уже справа, во время установки вашего дистри- ции». В августе 2004 г. Microsoft выпустила воспринимает такие объявления как заев- бутива – вот так все просто. «Windows XP Service Pack 2 с передовой шую пластинку. Но сейчас Microsoft вводит Следующий большой скачок на пути технологией безопасности», предоставляв- «инновации» в управлении пользователь- к безопасности пользователей Windows: ший «последние обновления безопаснос- скими учетными записями и шифровании Vista представляет им брандмауэр. А раз- Брандмауэр Linux – мощная броня, ти и нововведения от Microsoft», «силь- файловой системы. ве брандмауэра не было в XP? И да, и и настраивается он без проблем. ную безопасность по умолчанию» и «новые нет: быть-то он был, но фильтровал только Нам не дано понять, почему пользователи Windows только функции проактивной защиты». Как за каменной стеной входящий трафик. Если в вашей XP есть сейчас получают его как Несмотря на столь напористую рекламу, Многие машины с Windows XP позволя- уязвимость, которую можно атаковать уда- стандарт... многие люди до сих пор, похоже, страдают ют любому подключенному пользователю ленно, брандмауэр остановит хакеров и не от массовых атак шпионских и рекламных устанавливать или удалять программы, даст ею воспользоваться. Но он не остано- программ и вирусов и вынуждены искать или удалять файлы с жесткого диска. В вит исходящий трафик – шпионские и дру- защиты у таких производителей, как McAfee случае Vista это сможет сделать только гие злонамеренные программы прекрасно и Symantec. Так что, пока мы тут в LXF раду- пользователь с правами администратора, могут «стучать» на вас без вашего ведома. емся появлению двухядерных процессоров, а другие будут только запускать програм- Выходит, в Windows впервые появился при- ибо это означает, что мы сможем выделить мы и работать со своими файлами. Разве личный брандмауэр, блокирующий подоз- ядро для SETI@Home, наши коллеги из не великолепная идея? Великолепная – рительный трафик. Windows-журналов мечтают о двухядерных причем настолько, что Linux использует А вот Linux давным-давно имеет бранд- машинах только потому, что смогут одно ее с тех самых пор, как мелькнул ого- мауэр промышленного уровня, так что впол- ядро отдать антивирусной программе. нек в глазах Линуса. Короче, Vista доб- не простительно ваше недоумение: как же Microsoft объявил, что «Windows Vista лестно обзавелась системой пользовате- пользователи Windows столько лет жили включает встроенные функции защиты, лей в стиле Unix/Linux, чтобы наконец-то без него?

по смешной цене, удастся ли покончить с современным настольным Linux? Многие из Vista? Баста! инноваций Vista уже доступны в Linux, зачастую работают быстрее (Beagle), выгля- дят приятнее (Xgl) или лучше соображают Одну вещь мы пока не обсуждали: иметь Windows предустановленным, так что (Bonjour). Более того, можно ожидать, что цену. Vista появится в январе 2007 года, и «налог на Microsoft» не бросался в глаза. А мы увидим новые релизы SUSE, Fedora и миллионы людей, получивших новый ком- тут пользователям действительно придется Ubuntu, предоставляющие еще больше пьютер к Рождеству, неожиданно обнару- раскошелиться на обновление (в размере новых функций, в одно время с выходом жат, что «коробку» Windows надо еще заку- нескольких сот долларов) – и это серьез- Vista. пить – возможно, впервые. Привычно было ный расход. Но даже если продавать Vista Ясно как день: людям, критиковавшим НЕ ЗАБУДЬТЕ, ЧТО… настольные системы Linux в прошлом, при- дется пересмотреть свои позиции в свете Пользователи Linux давно привыкли новых функций Vista, потому что Linux уже ко множеству функций, аналоги на световые годы впереди. Современная которых только сейчас появляются в Vista. Просмотр во вкладках в Internet проблема Linux – отставание маркетинга: у Explorer? Используйте Firefox. Векторный Linux налицо все функции и простота рендеринг графического интерфейса? использования, требуемые от высококлас- В Gnome он появился несколько лет сной настольной системы, просто мы, назад, благодаря Cairo. Автоматическое нынешние линуксоиды, считаем это само обновление ОС? Стар – в Linux это собой разумеющимся. практикуется уже более пяти лет. Благодаря расширению рынка настоль- Есть масса функций Linux, которых в Vista нет вообще: файловая система, ных систем Linux мы абсолютно уверены, которая сама себя дефрагментирует без что Vista будет последней Windows, выпу- вмешательства пользователя (новички щенной при столь большой доле рынка. все не надивятся на этакий феномен); Следующему релизу Windows – который, вирусоустойчивые почтовые клиенты; по-видимому, состоится около 2012 года – встроенная виртуализация; выбор придется яростно сражаться, чтобы не стать окружения рабочего стола; и, конечно же, сотни гигабайт свободных программ, просто последним. LXF Рабочий Linux 2006: прочный как скала, с элегантной графикой и под которые идут вместе с дистрибутивами. завязку набитый программами для выполнения любых задач.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 47 ПОТРОШИМ GIMP Потрошим Gimp

Есть много способов участвовать в разработке открытого проекта – например, помогать в написании доку- ментации или непосредственно создавать код. Почему бы не начать с Gimp? Майкл Дж. Хэммел проведет вас через весь процесс исправления ошибок, который он припас заранее...

NU Image Manipulation на настольные системы. Но даже и проек- командой и рядом участников. Основная Program – более извес- ты-дедушки нуждаются в постоянной под- команда фактически состоит всего из двух НА ДИСКЕ тный как GIMP – дедуш- держке открытого сообщества: разработ- человек: Свена Ньюмена [Sven Neumann] и ка настольных прило- чиков, писателей, художников, журналис- Митча Неттерера [Mitch Natterer]. Ньюмен • Gimp 2.2.11 и 2.3.8 жений в мире открытых тов и пользователей. де факто является лидером проекта, одна- • Снимок GECL CVS Gпрограмм. Он вступил в ко проект структурирован не жестко, поэто- жизнь как Motif-приложение в 1995 г. и при- Как помочь му важные решения часто принимаются вел к созданию Gimp Toolkit (также известно- Разработка Gimp – как и многих других только после серьезного изучения откликов го как GTK) и рабочего стола Gnome. открытых проектов – целиком зависит от остальных членов команды. Хотя существуют настольные прило- информации от пользователей. Списки Активные участники – группа человек в жения и постарше, чем Gimp, ни одно из пожеланий и запросы на возможности 30, они работают над различными раздела- них не привлекло столько новых пользова- посылаются через Bugzilla – это web-систе- ми проекта, включая исходный код, доку- телей в мир Open Source или так повлияло ма, предназначенная для отслеживания ментацию и управление ресурсами типа статуса ошибок – и просматриваются репозитария CVS. Другие разработчики командой разработчиков Gimp. Принятые прошлого (включая автора этой статьи!) пожелания, а также набор требуемых размещены на вкладке окна About. исправлений, перебираются в грядущий Для помощи проекту вам не обязатель- релиз. Пока разработчики вгрызаются в но уметь кодировать, но вы должны быть новые возможности, ошибки и изменения хорошо знакомы с приложением Gimp с документации, пользователи тестируют точки зрения конечного пользователя. выпущенные версии. В конечном счете новый стабильный Ваша миссия релиз становится доступным в виде исход- В этой статье мы продемонстрируем два ных текстов. Поставщики Linux, такие, как лучших способа помочь проекту: охоту за Red Hat, Mandriva и Ubuntu, затем собирают ошибками и их исправление. новые версии и включают в свои Охота за ошибками может быть слу- дистрибутивы. чайной или целевой. Целевое тестирова- Версии Gimp: текущая стабильная (слева) и Разработка осуществляется двумя ние ставит своей задачей изолировать разрабатываемая (справа). Обе имеются на диске, и вы можете их исследовать. очень маленькими командами: основной проблему и описать ее более подробно –

48 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ПОТРОШИМ GIMP

РЕСУРСЫ УЧАСТНИКА

• http://developer.gimp.org если вы хотите реального взаимодействия с Информация для разработчиков Gimp другими участниками, то надо подключить- • www.gimp.org/bugs/howtos/bugzilla. ся к почтовым рассылкам и IRC-каналам: html Описание ошибок • www.gimp.org/mail_lists.html • www.gimp.org/bugs/howtos/submit- • Канал #gimp на irc.gimp.org patch.html О заплатках Существует много почтовых рассылок про- • www.le-hacker.org/papers/gobject екта. Основными являются рассылка для Объектная система GLib пользователей Gimp (по основным вопро- • http://developer.gimp.org/api/2.0/ сам использования) и для разработчиков index.html Документация по API Gimp Gimp (по основным вопросам разработки). • О стилях написания кода см. файл Живое обсуждение происходит на IRC- HACKING в исходном коде. каналах. Более подробную информацию Все это обязательно к прочтению. Однако см. в wiki на http://wiki.gimp.org/gimp/irc.

Элита команды Gimp: ведущие разработчики Митч Неттерер (третий слева внизу) и Свен Ньюман (четвертый слева в среднем ряду).

это особенно актуально для трудновоспро- ния для опытных пользователей Bugzilla, о требует лишь знания какого-либо тексто- изводимых ошибок. Охотники за ошибка- том как отыскать уже имеющиеся вого редактора, а работа над web-сайта- ми должны быть очень хорошо знакомы со сообщения. ми – знания XML и формата DocBook. стабильной версией Gimp, а целенаправ- Опытные программисты могут попро- ленные охотники – уметь компилировать C, Autoconf и другие бовать задуматься о расширении ключе- новые версии программы. Познакомьтесь инструменты вых возможностей. Общеизвестный при- также с Bugzilla, мы представим ее вам на Исходный код ядра Gimp использует набор мер – поддержка 16-битовых цветовых стр. 50. инструментов Autoconf (Autoconf, Automake, каналов. Потребность в ней назрела давно, Что касается исправления ошибок, то Libtool) для управления сборкой. Знание однако ее реализация потребовала неожи- ядро Gimp написано на С, но есть и много Autoconf желательно, но не обязательно. данно большого объема работ. В итоге дополнительных модулей на различных Зато важно умение программировать на С – запланирован пересмотр исходного кода языках скриптов: самые популярные – Perl, оно требуется для работы с ядром Gimp и Gimp: он будет использовать код вспомога- Gimp содержит много проектов, под Python и Script-Fu (вариация Scheme). Вы многими модулями. Для некоторых моду- тельного проекта под названием GEGL (см. управлением системы контроля исходного кода CVS. должны быть знакомы с созданием запла- лей необходимо знать Perl, Python и Script- врезку внизу). ток; инструкции можно найти на странице Fu, но для работы с кодом ядра эти языки В какой форме ни выразится ваше www.Gimp.org, но мы рассмотрим этот не потребуются. Пригодится знакомство с участие, Gimp представляет собой отлич- процесс более подробно на стр. 52. текстовым редактором и такими инструмен- ный старт, и мы надеемся, что опыт этой тами, как Cscope, Strace, GDB. Надо также захватывающей работы послужит вам хоро- Еще до начала... вникнуть в стиль программирования Gimp шей наградой. Прежде чем нырнуть в Если вы собираетесь порыться в исходном (снова, см. врезку Ресурсы участника). исходный код, взгляните на врезку Ресурсы коде, то прежде вам необходимо знать о участника, расположенную вверху. Если мы

нескольких инструментах. Не программист? вдохновили вас на поиск и исправление Прежде чем начать охоту за ошибками, ошибок, можете начинать – просто перевер- >> CVS кратко опишем другие способы помочь про- ните страничку! Каждый участник Gimp знаком с CVS, про- екту Gimp. граммным обеспечением, которое управля- Первый – поддержка пользователей. GEGL: БУДУЩЕЕ GIMP ет исходным кодом Gimp. Пользователи Команда разработчиков проводит большую получают код из CVS, производят измене- часть своего свободного времени за рабо- GEGL означает Generic Graphical Library; де пользователь также найдет их полезными. ния, создают заплатку и отправляют ее той над исходным кодом, поэтому у них факто это будущее проекта Gimp. Пока Так, механизм на основе направленного проект находится в процессе разработки, а графа позволяет хранить сложную после- команде разработчиков или участникам. мало времени на ответы новичкам. когда будет закончен, станет внутренней довательность шагов при создании изоб- Достаточно освоившись с программой, вы библиотекой обработки в Gimp. Кроме под- ражения, от добавления текста до приме- Bugzilla можете обеспечивать поддержку конечных держки 16-битовых цветовых каналов нения фильтров, и даже редактировать Bugzilla – web-система, используемая для пользователей посредством списков рассы- (одна из первоначальных целей), GEGL эти шаги. Допустим, вы изготовили в Gimp отслеживания изменений в проекте Gimp. лок, web-страниц и чатов. предоставит богатую функциональность логотип для web-странички и сохранили Это могут быть сообщения об ошибках, Такая помощь очень важна: ваша под- для обработки изображений, включая ваши действия в файле. Позже вы можете запросы на новые возможности или изме- держка – видимая часть проекта, обращен- управление цветом, редактирование цве- загрузить файл и создать, например, товых пространств CMYK (см. картинку логотип для рекламного плаката – указав нения в документации. С первого раза ная к публике. Поэтому обязательно надо вверху справа) и L*a*b, гибкие системы на другое разрешение или размер холста. Bugzilla немного ошеломляет, но команда полностью понимать, как пользоваться про- основе мозаики и многопоточную обра- Официальной даты вхождения GEGL в Gimp усердно поработала, чтобы облег- граммой, и вежливо реагировать даже на ботку изображений. Также он предоставит состав Gimp не существует, но есть надеж- чить вхождение в свой мир. На странице самую жесткую критику. механизм на основе направленного графа да увидеть его в очередной главной вер- Gimp вы найдете всю информацию об Также очень ценны переводы и доку- для запоминания серии манипуляций над сии после Gimp 2.4. А до тех пор проект использовании Bugzilla для сообщений об ментация. В переводе нуждается как доку- изображением. нуждается в разработчиках и тестировщи- Большинство этих возможностей требу- ках – и вы знаете, что делать. ошибках и их поиске; а на странице разра- ментация, так и интерфейс программы. Это ется профессиональным пользователям – www.gegl.org ботчиков Gimp (см. врезку Ресурсы участ- прекрасная возможность помочь проекту: видеоредакторам, например. Но и средний ника) содержатся более подробные указа- работа над большей частью документации

www.linuxformat.ru LXF8(82) АВГУСТ 2006 49 ПОТРОШИМ GIMP >> >> ЧЧастьасть 1 Выходим на охоту

Прежде чем исправлять ошибки, надо сначала о них узнать – поэтому заглянем в Bugzilla!

Лучший способ понять, что такое вообще, либо он есть, но спроектирован ности шагов, чтобы любой желающий смог работа над проектом – это исправить в нем нежелательным образом. прочесть ваше сообщение в Bugzilla. ошибку. Если ошибка обнаружена, очень важно База Bugzilla (http://bugzilla.gnome. С точки зрения вклада в проект Gimp, суметь ее снова воспроизвести, тут-то и org) служит для многих проектов, связанных ошибкой считается все, что существует в пригодится ваша помощь: просто играйте с с рабочей средой Gnome. Прежде чем искать исходном коде Gimp и работает не так, как программой, пока не сведете к минимуму в ней сообщения об ошибках, вам понадобит- должно – в отличие от запроса на возмож- число факторов, вызывающих ошибку. ся зарегистрироваться и получить ID. ность, для которой исходного кода либо нет Затем опишите их в виде последователь- Выбрав ошибку по вкусу, скачайте пос-

КАК НАЙТИ СООБЩЕНИЯ ОБ ОШИБКАХ В BUGZILLA

1 2

Войдите в базу данных Bugzilla и нажмите на ссылку Search вверху страницы, затем перейдите к Complicated Bug Search При поиске сообщений об ошибках надо обратить внимание на Form – Запросу на расширенный поиск. Для поиска ошибок вос- два момента. Первый –список продуктов. Листайте его до тех пользуемся специальным ключевым словом gnome-love, им пор, пока не наткнетесь на запись Gimp. Нажмите на нее. команда разработчиков Gimp помечает легко устранимые ошиб- Произойдет обновление других списков, но мы пока их ки, чтобы их можно было легко найти. проигнорируем.

3 4

Прокрутите экран до области, означенной как Advanced Нажмите кнопку Search (она находится прямо над списками, Searching Using Boolean Charts – Продвинутый Булев поиск. которые вы только что модифицировали). Просмотрите колонку Там есть два выпадающих списка. В первом списке выберите Summary – если какая-либо ошибка вам приглянется, нажмите Keywords (Ключевые слова), а во втором – Contains The на ее номер, чтобы узнать о ней больше (см. таблицу ниже). Мы String (Содержит строку). В текстовом поле рядом со списком выбрали ошибку #331839. наберите gnome-love. Поиск подготовлен.

Данная таблица информирует о выбран- 5 ID Sev Pri OS Product Status Resolution Summary ной ошибке Gimp. Во втором столбце

331839 enh Nor All Gimp NEW Clear (Степень серьезности ошибки) стоит keyboard shortcuts enh, сокращение от enhancement (улуч- шение), т.е. формально это не ошибка, а запрос на улучшение. (Таблицу заполняют разработчики, получив через Bugzilla извещение об ошибке.) В данном случае решено изменить диалог Preferences: добавить возможность очистить клавиши быстрого доступа без их сброса в первоначальное состоя- ние. Мы думаем, что сможем с этим справиться. Вот и попробуем.

50 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ПОТРОШИМ GIMP

леднюю копию Gimp из CVS. Чтобы она тель, поэтому у нас будут права только на Вот что мы хотим изменить: кнопки, заработала, понадобятся следующие чтение. Просто нажмите Enter (пароль вво- выделенные синим цветом, надо переделать на список опций. зависимости: дить не надо). Думаете, справимся? Конечно, • autoconf 2.54 или старше. Теперь скачайте исходный код Gimp: справимся! • automake 1.7 или старше. cvs -z3 checkout Gimp • libtool 1.4 или старше. Флаг -z3 говорит об использовании • gettext 0.13 или старше. сжатия, для ускорения передачи файлов [и • GTK 2.8.10 или старше. экономии трафика, – прим.ред.]. Возможно, первые четыре пакета у вас Готово? В вашем текущем каталоге дол- есть, но бьемся об заклад, что последнего жен появиться каталог gimp. Чтобы собрать нету. GTK имеет свои зависимости. код, наберите: Установить их легко, но надо позаботиться, cd Gimp чтобы они ничего не сломали в вашей ./autogen.sh --prefix=/usr/local/ системе. Gimp-2.3 g_signal_connect ( Итак, скачайте и распакуйте GTK. В make button2, “clicked”, любом современном дистрибутиве вам ско- sudo make install G_CALLBACK (prefs_menus_clear_ рее всего понадобятся последние GTK, Glib, Скрипт autogen.sh похож на скрипт callback), ATK, Pango и Cairo. Первые четыре доступ- configure, который вы запускали для GTK- Gimp); ны на сайте GTK (www.gtk.org/download). приложений, и теперь вы передаете опцию g_object_set_data ( Архив Cairo также содержится на сайте GTK, --prefix скрипту autogen.sh, а не configure G_OBJECT (button), но на другой странице (ftp://ftp.gtkK.org/ (заметим, что мы ставим Gimp в директо- “clear-button”, button2); pub/gtk/v2.8/dependencies). Важно соб- рию, отличную от GTK). Переменные PKG_ Ага, вызовы prefs_button_add() надо рать пакеты в правильном порядке: Cairo, CONFIG_PATH и LD_LIBRARY_PATH, заменить на один вызов функции gimp_ GLib, Pango, ATK, GTK. установленные перед сборкой GTK, укажут int_combo_box_new(), создающей вид- Перед сборкой скажем каждому пакету, системе сборки Gimp, где искать GTK. Мы жет меню – ее можно найти в документации где искать библиотеки и информацию о хотим поставить Gimp в отдельный каталог, по API Gimp (http://developer.Gimp.org/ конфигурации: чтобы потом мы смогли его удалить и соб- api/2.0/libGimpwidgets/ export PKG_CONFIG_PATH=/usr/ рать другую версию, не повредив GTK. GimpIntComboBox.html). Кроме того, local/gtk+-2.8/lib/pkgconfig:$PKG_ обратные вызовы для обеих кнопок надо CONFIG_PATH План атаки слить в один обратный вызов. export LD_LIBRARY_PATH=/usr/ Теперь мы можем осмотреть самую послед- Перечень мероприятий готов; присту- local/gtk+-2.8/lib:$LD_LIBRARY_ нюю версию диалога Preferences и соста- пим же к его выполнению. PATH вить план, как исправить наш досадный Установите эти переменные среды, ина- недочет. Интересующая нас область обве- че в сборку попадут старые версии, уже дена и выделена синим цветом на рисунке установленные на вашей системе. В дирек- (справа вверху) – это опции Keyboard тории каждого пакета наберите команды: Shortcuts. В сообщении говорилось, что тре- ./configure --prefix=/usr/local/gtk+- буется опция очистки горячих клавиш и что 2.8 существующие кнопки необходимо изме- make нить на меню опций, подобное меню sudo make install Navigation Preview Size. Мы тем самым указываем всем пакетам Очень хорошо... Поищем код, ответс-

устанавливаться в /usr/local/GTK+-2.8. твенный за создание этой части диалога Благодаря этому новые версии ПО не будут Preferences. В исходном коде Gimp находит- >> мешать старым. ся много каталогов, включая: • app код ядра Gimp. Сборка • data Кисти, градиенты и прочее. Установив зависимости GTK, соберите • plugins Фильтры и другие дополнитель- Gimp. Необходимо зайти на CVS-сервер и ные модули. скачать исходный код. Направьте вашу • po Переводы текстов в интерфейсе поль- машину на CVS-сервер Gimp: зователя, например, в меню. export CVSROOT=’:pserver: Нам требуется через каталог app доб- [email protected]:/cvs/ раться до каталога dialogs, а в нем найти gnome’ файл preferences-dialog.c. В файле пои- и зайдите: щите строку, которая находится на кнопке cvs login Reset,. Таким образом мы найдем код, с Вы получите примерно следующее помощью которого создается эта кнопка: сообщение: button2 = prefs_button_add ( ‘Logging in to :pserver: Gimp_STOCK_RESET, [email protected]. _(“_Reset Saved Keyboard Shortcuts org:2401/CVS/gnome to “ CVS password:’ “Default Values”), Мы заходим как анонимный пользова- GTK_BOX (vbox2)); Сообщение об ошибке может послать любой – только опишите ее поподробнее.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 51 ПОТРОШИМ GIMP >> >> ЧЧастьасть 2 Поправки и заплатки

Задача поставлена – давайте выполним ее и отошлем результат команде разработчиков на проверку....

После трудов по локализации ошибки gtk_box_pack_start (GTK_BOX определяемым значением (KBS_SAVE и исправление оказывается простейшей час- (hbox), label, FALSE, FALSE, 0); т.д.). Объединим их в перечисляемый тип и тью. Мы описали его здесь, и когда вы gtk_widget_show (label); добавим его в начале файла: будете исправлять другой код, шаги, кото- Затем добавим поле со списком из enum { рые мы предпримем, вам помогут. четырех записей. Первая запись – «пус- KBS_IGNORE, тышка»: она позволит сбросить меню после KBS_SAVE, Исправление каждого действия, чтобы пользователь в KBS_RESET, Добавим поле со списком прямо под сущес- любой момент смог перезапустить то же KBS_CLEAR твующими кнопками в app/dialogs/ самое действие. }; preferences-dialog.c. Чтобы пояснить, combo = Gimp_int_combo_box_new Теперь надо заменить обратные вызо- зачем это поле нужно, надпишем его (сле- ( вы функций для существующих кнопок ва). Все это требует GTK-виджета ‘hbox’: _(“Choose an Action”), одной функцией. Любые изменения в поле hbox = gtk_hbox_new (FALSE, 6); KBS_IGNORE, со списком должны осуществлять функ- gtk_box_pack_start (GTK_BOX _(“Save Now”), ции обратного вызова. Это просто. Новая (vbox2), hbox, FALSE, FALSE, 0); KBS_SAVE, функция будет просматривать поле со gtk_widget_show (hbox); _(“Reset to Default Values”), списком, определять, какой пункт меню label = gtk_label_new (_(“Keyboard KBS_RESET, был выбран, и использовать оператор Shortcut Status:”)); _(“Remove All Keyboard Shortcuts”), switch для выбора соответствующего KBS_CLEAR, действия. В двух случаях (KBS_SAVE и NULL); KBS_CLEAR) действие останется как у Gimp_int_combo_box_set_active прежних кнопок. Переключаясь на первый, ПИШЕМ ДОПОЛНИТЕЛЬНЫЙ МОДУЛЬ К GIMP (Gimp_INT_COMBO_BOX (combo), пустой пункт меню, не будем делать ниче- KBS_SAVE); го. Последний пункт «чистит» горячие кла- API libgimp. gtk_box_pack_start (GTK_BOX виши: проходится по списку и сбрасывает Чтобы написать модуль, нужно быть знакомым с PDB, Procedural Database [База (hbox), combo, FALSE, FALSE, 0); их. После этого новый список требуется Процедур], содержащей набор всех функ- gtk_widget_show (combo); сохранить – и он будет доступен в следую- ций, которые можно вызывать из модуля. g_signal_connect (combo, щий раз, когда пользователь запустит Просмотр PDB через осуществляется брау- “changed”, программу. зером Procedure Browser (Xtns > Procedure G_CALLBACK (prefs_menus_ static void Browser) из меню в Toolbox. Каждую фун- keyboard_shortcuts), prefs_menus_keyboard_ кцию можно искать по имени, причем Gimp) shortcuts(GtkWidget *combo, предоставляется краткое описание пара- метров. Способ вызова функций зависит Строка g_signal_connect() сообщает Gimp *Gimp) Модули на C, Python и Script-Fu: от языка, на котором написан модуль. В С программе, что когда пользователь изменя- { окна предпросмотра доступны вы можете сделать следующее: ет наше новое поле со списком, надо gint value; только для написанных на С. image_id = gimp_image_ вызвать функцию prefs_menus_ gint fd; new(width, height, type); keyboard_shortcuts(). Эта функция полу- GError *error = NULL; тогда как в Perl это может выглядеть Дополнительные модули – это небольшие чает ID виджета поля со списком (ID исполь- gchar *filename; программки, написанные на каком-либо так: зуется для обнаружения, какой пункт меню Gimp_int_combo_box_get_active языке программирования и расширяющие image_id = $image->new(width, возможности Gimp. Их часто называют height, type); был выбран) и структуру gimp. (Gimp_INT_COMBO_BOX (combo), фильтрами, просто потому, что большин- а на Python вот так: Каждый пункт меню в вызове gimp_ &value); ство из них находится в меню Filters. image_id = gimp.image(width, int_combo_box_new() описан рядом с switch(value) Однако модуль может вставить себя в height, type) любой пункт меню и осуществлять не Хороших руководств по написанию только обработку изображений, но также модулей немало. Для написания на С смот- генерировать логотипы, шаблоны, обеспе- рите серию руководств из трех частей на чивать ввод-вывод и даже действовать как сайте разработки Gimp, по адресу http:// сервер для внешних программ, чтобы developer.gimp.org/plug-ins.html. отображать изображения через Gimp. Отличное руководство для языка Python Модуль можно написать на С с исполь- доступно в сети на www.gimp.org/docs/ зованием библиотеки libgimp, или же на python/index.html. одном из поддерживаемых скриптовых Документация для Perl входит в состав языков: Script-Fu (подмножество языка пакета Gimp-Perl – ее можно прочесть, Scheme) и Python. Perl тоже поддержива- набрав perldoc Gimp или посетив страницу ется, но только как добавочный пакет. www.gimp.org/tutorials/Basic_Perl. Каждый из скриптовых языков связан с Желаем удачи!

52 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ПОТРОШИМ GIMP

Создание заплатки Изменения, значит, работают. Время БЛАГОДАРНОСТИ

создать заплатку и послать ее на суд поч- Эта статья основана на слайдах, пред- тенным разработчикам Gimp – так вы буде- ставленных Карин Делвер [Karine Delvare] те поступать и при самостоятельной работе на конференции Libre Graphics, прошед- над исправлениями. Из корня каталога шей ранее в этом году. Дополнительную исходного дерева Gimp наберите помощь оказали Кэрол Спирс [Carol Spears], Митч Неттерер [Mitch Natterer] и cvs diff -up > ../patchfile.patch Уильям Скэггс [William Skaggs]. Особая В каталоге, расположенном на один благодарность Карин Делвер (и ее мужу) уровень выше, чем текущий, в котором вы и Кэрол Спирс за предоставленные фото- работаете, создастся файл заплатки. графии разработчиков на встрече Libre Команда diff может проработать довольно Graphics. долго. Проверьте, что файл содержит толь- ко изменения, сделанные вами: команда способна протащить туда и постороннюю информацию. Внизу сообщения об ошибке в Bugzilla есть поле, содержащее информацию о про- деланной работе. Заполните секцию Комментарий и присоедините заплатку с помощью ссылки, расположенной ниже. Задача выполнена: можете самодовольно Наша обновленная панель Keyboard Shortcuts в диалоге Preferences; новое откинуться в кресле. меню отображается в правой нижней части окна. И последнее. Разработчики ответили, что наша реализация будет работать лучше, { } если вместо меню будет задействована тре- case KBS_IGNORE: static void тья кнопка. Так что мы опять взялись за break; menus_remove_actions (gpointer дело и написали код для третьей кнопки. case KBS_SAVE: data, После этого Митч Неттерер заплатку menus_save (Gimp, TRUE); const gchar *accel_path, принял. g_message (_(“Your keyboard guint accel_key, Теперь вы поняли: процесс абсолютно shortcuts have been saved.”)); GdkModifierType accel_mods, прямолинейный, поэтому изучайте, участ- break; gboolean changed) вуйте и создавайте! LXF case KBS_RESET: { menus_clear (Gimp, &error); gtk_accel_map_change_entry g_message (_(“Your keyboard (accel_path, 0, 0, TRUE); shortcuts will be reset to default “ } “values the next time you start Нужно также написать прототип функ- Gimp.”)); ции menus_remove() в заголовочном break; файле app/menus/menus.h, чтобы ее case KBS_CLEAR: можно было вызывать из preferences- menus_remove (Gimp); dialog.c. menus_save (Gimp, TRUE); КАКОВА СУДЬБА ИСПРАВЛЕНИЯ LXF? g_message (_(“Your keyboard Проводим тестирование В нашем исправлении кнопки располага- сональных конфигураций, оценят новую shortcuts will be cleared “ Тяжелая работа позади. Выполним пере- лись друг рядом с другом. Но из-за огра- возможность. “the next time you start Gimp.”)); компиляцию и переустановку – теперь мож- ничений на ширину текста разработчики В будущем можно добавить варианты break; но запустить приложение и проверить рабо- решили добавить еще одну кнопку пониже предустановок горячих клавиш: выбор } ту изменений. исходных. Обычному пользователю это конфигурации по умолчанию, как в может не пригодиться никогда, но про- Photoshop или как в Mac OS. Gimp_int_combo_box_set_active make двинутые пользователи, любители пер- (Gimp_INT_COMBO_BOX (combo), sudo make install KBS_IGNORE); /usr/local/Gimp-2.3/bin/Gimp-2.3 } Простейший способ проверить измене- Мы добавили две новых записи в файл ния – просмотреть в меню File. Прежде чем app/menus/menus.c и добавили функ- запускать новую опцию Remove All Keyboard цию menus_remove(), вызываемую из Shortcuts, обратите внимание, что к пунктам prefs_menus_keyboard_shortcuts(). меню File и Save приписаны горячие клави- Она производит сброс всех горячих клавиш ши. Когда мы запускаем новую опцию, эти в цикле. клавиши исчезают. Выйдем из программы void и запустим ее снова – увидим, что клавиш menus_remove (Gimp *Gimp) нет. Если затем в меню выбрать пункт Reset, { выйти и перезапустить Gimp, все горячие До (слева) и после (справа): в диалог Preferences добавилась новая gtk_accel_map_foreach(0,menus_ клавиши будут восстановлены по опция. Продвинутым пользователям она очень понравится. remove_actions); умолчанию.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 53 КОНКУРС WEBSPHERE COMMUNITY EDITION IIBMBMCONTEST 2006

омпания LinuxCenter.Ru мы приветствуем не только готовые при поддержке корпо- к использованию приложения, но и рации IBM представляет инструменты для интеграции WAS CE WAS CE – РУКОВОДСТВО вашему вниманию конкурс с другим свободным ПО (в первую IBM WebSphere Contest очередь, Eclipse), проверки компонен- К БЫСТРОМУ СТАРТУ 2006К! Это мероприятие нацелено на тов, шаблоны приложений WAS CE/ разработчиков, инструкторов, а также Geronimo и так далее. Конечно, ваш всех, кому интересны технологии Java творческий полет не ограничивается Для того, чтобы начать работу с текущей версией WAS CE (прежде всего, и Open Source. написанием кода – мы будем рады запустить этот сервер), необходимо: Что нужно для участия? В первую видеть методические материалы: серь- очередь – установить в своей систе- езные статьи, планы учебных курсов, >> Использовать одну из следующих операционных систем: ме IBM WebSphere Application Server технические задания для учебного про- • Red Hat Enterprise Linux 3/4 Community Edition (WAS CE). Если вы екта и так далее. • SUSE Linux Enterprise Server v9 регулярно читаете наш журнал, то уже Победители конкурса будут опреде- • Windows 2003 наверняка знакомы с этим открытым лены Экспертным советом, в который • Windows XP SP2 сертифицированным сервером J2EE- войдут представители ведущих соф- Это те системы, на которых WAS CE прошел сертификацию на соот- приложений, базирующемся на Apache тверных компаний. Подведение ито- ветствие спецификациям J2EE 1.4, хотя сервер может работать и на других Geronimo. Если же вы по каким-то при- гов конкурса и торжественная церемо- платформах. чинам пропустили апрельский номер – ния награждения победителей прой- >> Установить JDK 1.4.2_9 и старше, но не JDK 1.5. не отчаивайтесь: всю необходимую для дет на выставке LinuxLand/SofTool’06 Для запуска готовых приложений достаточно иметь Java Runtime быстрого старта информацию можно (Москва, ВВЦ, 26-29 сентября 2006 Environemnt (JRE). На компакт-диске Java Kick-start находится JRE 1.4.2 от найти по адресу http://www.linuxformat. года). Победители конкурса в каждой IBM, но можно использовать и JRE от Sun Microsystems. ru/contest/was2006.phtml#quickstart. из номинаций получат призы, предо- Для разработки приложений необходимо наличие JDK 1.4.2 любого из Дистрибутив IBM WebSphere Application ставленные компанией LinuxCenter.ru: вышеназванных производителей. Sun JDK (J2SE 1.4.2) можно бесплатно Server Community Edition можно найти • ноутбук загрузить по адресу на прилагаемом к LXF78 диске: Сторона • программное обеспечение, лите- http://java.sun.com/javase/downloads/index.html 2: Websphere CE/kick-start_ocd.iso или ратура и атрибутика от LinuxCenter.Ru После установки JDK имеет смысл добавить в переменную окружения бесплатно загрузить отсюда: http://www. • подписка на журнал Linux Format PATH каталог /bin. ibm.com/developerworks/downloads/ от редакции журнала. ws/wasce/?S_TACT=105AGX28&S_ Статьи и другие методические рабо- Хотя это и не относится непосредственно к WAS CE, многие Java-прило- CMP=DLMAIN. Перед установкой серве- ты лауреатов конкурса будут опублико- жения используют переменную окружения JAVA_HOME. Ей можно присво- ра данный ISO-образ необходимо пред- ваны на сайте IBM developerWorks и на ить значение в виде имени каталога установки JDK. варительно записать на CD. страницах генерального информацион- Теперь можно приступать к установке сервера с диска Java Kick-start. Основная задача конкурса – попу- ного спонсора – журнала Linux Format. Последнюю версию WAS CE можно также загрузить с сайта IBM по ляризация IBM WebSphere Application Впереди – целое лето, а как пока- адресу: Server Community Edition/Apache зывает опыт программы Google http://www.ibm.com/developerworks/downloads/ws/wasce/?S_ Geronimo как открытого и эффектив- Summer of Code, за это время можно TACT=105AGX28&S_CMP=DLMAIN ного средства для решения широко- успеть многое. Желаем удачи в ваших Разработчики могут обращаться к документации как по WAS СЕ (вхо- го круга различных задач, поэтому начинаниях! дит в состав дистрибутива), так и по Geronimo. Документация по Geronimo доступна по адресу http://geronimo.apache.org/. Статьи на русском языке, объясняющие различные аспекты установки и использования Geronimo, можно найти также по адресу: http://www-128.ibm.com/developerworks/ru/

54 LXF 8(82) АВГУСТ 2006 www.linuxformat.ru КОНКУРС WEBSPHERE COMMUNITY EDITION CONTEST 2006

УСЛОВИЯ КОНКУРСА

ОБЩИЕ ПОЛОЖЕНИЯ особенностей WAS CE версии 1.0 и выше; план разработках, должен быть представлен в форме, 1. Участвовать в конкурсе «IBM WebSphere Contest учебного курса с учебными примерами и удобной для проверки его работоспособности и 2006» может любой человек, ознакомившийся с системой контроля усвояемости материала; эффективности, то есть в виде полных исходных настоящими условиями и согласный с ними, за грамотное техническое задание для учебного текстов и сценариев для сборки. исключением сотрудников IBM, LinuxCenter.Ru, проекта: проработанная структура сайта на эту 3. Работы, представленные в номинациях II и III, журнала Linux Format и членов их семей. тему и т.п. должны распространяться на условиях, 2. Учредителями конкурса выступают корпорация II. Инструментарий одобренных Open Source Initiative, то есть по IBM и компания LinuxCenter.Ru, генеральным Это могут быть расширения для Eclipse, какой-либо открытой лицензии. Распространение информационным спонсором – журнал Linux облегчающие работу с WAS CE, утилиты для кода на тех же условиях, что и WAS CE/Geronimo – Format. проверки компонентов, перекодировки приветствуется. 3. Конкурс проводится в период с 10 мая по 10 дескрипторов для перехода на WAS CE с других 4. Конкурсные работы следует высылать на адрес сентября 2006 года. Поведение итогов конкурса и J2EE-серверов, шаблоны (templates) для электронной почты: [email protected] церемония награждения победителей состоится разработки приложений с использованием WAS Допускается (а в случае с работами, попадающими в ходе выставки LinuxLand/Softool’2006 (Москва, CE. в номинации II и III – приветствуется) публикация ВВЦ, 26-29 сентября 2006 года). Итоги конкурса III. Решения. конкурсных материалах на web-сайтах, не будут также опубликованы в ноябрьском номере Это готовые приложения, компоненты и любые ограничивающих имущественные права автора журнала Linux Format. законченные и готовые для использования (SourceForge.net, домашние страницы авторов и 4. Победители конкурса в каждой из номинация фрагменты кода, устанавливаемые на серверах т.п.). В этом случае на адрес [email protected] определяются Экспертной комиссией, состав WAS CE/Geronimo. следует выслать лишь ссылку на такой сайт с которой утверждается Учредителями конкурса. кратким описанием представляемой работы. Решение Экспертной комиссии является 2. Имущественные авторские права на работы, окончательным. Денежный эквивалент призов не представленные в номинации I, должны ПОРЯДОК КОНКУРСНОГО ОТБОРА выплачивается. принадлежать участнику конкурса. Это 1. Представленные на конкурс работы будут подразумевает, что статья или любая другая оцениваться по следующим критериям: ПОРЯДОК ПРЕДСТАВЛЕНИЯ РАБОТ методическая разработка не может быть 1. Присланные на конкурс работы должны попадать опубликована в печатных или сетевых изданиях • актуальность и востребованность (в том числе в одну из трех номинаций: (журналах, сборниках, сайтах и т.п.), потенциальная – по мнению экспертов); I. Методическое и информационное обеспечение. ограничивающих право автора на размещение • качество решения и его оформления, включая Это может быть большая, серьезная статья с материала в других источниках. Код, документацию; детальным рассмотрением конкретных содержащийся в статьях или методических • степень универсальности решения.

www.linuxformat.ru LXF 8(82) АВГУСТ 2006 55 СПРЯТАННЫЕ ЖЕМЧУЖИНЫ

ИЛЛЮСТРАЦИЯ: STUART HARRISON ТАЙНЫЕ КЛАДЫНА ДИСКЕ Сокровищницы приложений с открытым кодом ждут своего открытия. Поохотьтесь за ними вместе с Майком Сондерсом.

громный каталог при- репозиториях; но при огромном количестве Надеемся, вам понравятся наши ложений Freshmeat разрабатываемых приложений некоторые десять тайных кладов. Если содержит более 40 000 прекрасные (но малоизвестные) проекты вы хотите поделиться своими проектов, и почти все неизбежно остаются незамеченными. В находками, дайте нам знать они – Linux-приложения этом месяце мы просеяли Интернет в поис- [email protected]. Ос открытым кодом; но ке классных приложений, о которых вы ни все ли они стоят внимания? Издатели дис- разу не слышали, или вам некогда было трибутивов собирают сливки этого изоби- их опробовать. И, конечно же, вы найдете лия и размещают их на своих дисках или в их на DVD!!

56 LXF8(82) АВГУСТ 2006 www.linuxformat.ru СПРЯТАННЫЕ ЖЕМЧУЖИНЫ

RSS-GLX Удивите друзей роскошными хранителями экрана ИНФОРМАЦИЯ набор OpenGL-приложений, которые мож- /usr/lib/xscreensaver/ ЧТО: Коллекция хранителей экрана ГДЕ: http://rss-glx.sourceforge.net но запускать самостоятельно или вклю- cyclone --help ЗАЧЕМ: Разнообразьте свой рабочий стол. чить в Xscreensaver и превратить обычные Коллекция, понятное хранители экрана демонстрашками времен дело, требует от видеокар- Устанавливаемые версии Gnome и Speccy [ZX Spectrum, – прим. пер.] разме- ты поддержки 3D-ускоре- KDE содержат стандартный набор ром в 1 КБ. ния. Обязательно посмот- хранителей экрана, включая флаг, звезд- Установив RSS-GLX, вы обнаружите в рите Euphoria – заворажи- ное небо и квадриллион текстовых эффек- каталоге /usr/lib/xscreensaver 19 новых вающе-прекрасный водово- Лишь немногие из имеющихся тов в стиле Матрицы. Если вам повезет, вы двоичных файлов. Здорово, что ознако- рот эффектов освещения и прозрачности, а хранителей экрана. Посмотрите их в действии – обалдеете. также получите несколько 3D-хранителей миться с их эффектами можно, запустив их также Skyrocket – вихревое панорамное экрана, например, вращающийся текст и как обычные программы – в стандартном пиротехническое шоу. Если хранитель экра- тоннель. Но действительно впечатляющие окне приложения. Каждый хранитель экра- на превратит вашу машину в черепаху, про- вещи зарыты поглубже. Попробуйте кол- на имеет несколько опций для управления верьте настройки согласно описанной выше лекцию RSS-GLX – Really Slick Screensavers скоростью и сложностью. Любопытствуете, процедуре и отключите часть эффектов. (Реально Крутые Хранители Экрана). Это что умеет “Cyclone”? Введите INCOLLECTOR Информационный завал? Этот ловкий инструмент раскопает все ИНФОРМАЦИЯ но будет прекрасно работать и в любом (Заметки). Каждую запись ЧТО: Информационная коллекция ГДЕ: www.incollector.devnull.pl другом рабочем окружении или оконном можно также снабдить ком- ЗАЧЕМ: Упорядочить вашу жизнь. менеджере. ментарием и рейтингом. Запустите Incollector и введите свое По завершении вво- Бесчисленное множество Linux-при- имя – в главном окне возникнет пустой да ваша запись появится ложений управляет коллекциями лист. Щелкните на пункте Add Entry в главном списке. Чтобы книг, фильмов, музыки и игр. Но каждое (Добавить запись) на панели инструментов, облегчить организацию из них предназначено для объектов одного чтобы создать первую info-note (информа- записей, вы можете созда- типа, и это осложняет интеграцию храни- ционную запись). Появится выпадающий вать метки (см. панель сле- мой в них информации. Наша следующая список, предлагающий выбрать категорию ва), а потом щелкать по пункту Find (Найти) Щелкайте на звездах для оценки жемчужинка не такова. Incollector позволя- записи: web-адрес, перевод с другого язы- на панели инструментов и осуществлять по информации по степени важности. ет только сортировать информацию вроде ка, серийный номер или кусок исходного ним поиск. Полезна возможность держать на ежедневных заметок и памяток. Это хорошо кода. Если информация, которую вы хотите экране записи только за последние несколь- спроектированная и невероятно полезная сохранить, не подпала ни под одну готовую ко дней, это позволит избежать беспорядка программка, и хотя она создана под GTK, категорию, просто сохраните ее как Notes от накопления десятка-другого записей. EASYTAG Осточертели имена файлов вроде mus_0000025.mp3? Тогда прочитайте о... ИНФОРМАЦИЯ Трижды поприветствуем EasyTag, сберегаю- можно переименовать их ЧТО: Редактор тэгов музыкальных файлов щий дни путем предельной автоматизации en masse, взяв данные из ГДЕ: http://easytag.sourceforge.net процесса тэгирования файлов – независи- тэгов (по типу Автор-имя_ ЗАЧЕМ: Создание музыкальных меток без мо от размера вашей фонотеки. песни.mp3). усилий Например, EasyTag может обратиться к EasyTag поддержива- FreeDB – online-базе данных CD – для полу- ет ID3 тэги MP2 и MP3 Вы, вероятно, знаете, что MP3, OGG чения информации о песне и использовать файлов, а также Ogg Vorbis и файлы других музыкальных фор- ее для пометки файлов или заполнить поля, и FLAC. Чтобы улучшить матов содержат тэги – краткие сведения о проанализировав каталог расположения и восприятие имен файлов, песне (например, жанр и дата). Однако при имена музыкальных файлов. EasyTag даже можете преобразовать буквы в верхний или EasyTag осуществляет полный

контроль над тэгами.

конвертации музыки с CD эту информацию выполняет обратную операцию: если ваши нижний регистры; да еще можно проигры- обычно надо вводить вручную – занятие файлы снабжены тэгами, но имена фай- вать файлы прямо из приложения, любым >> нудное, и многие из нас им пренебрегают. лов бессмысленны (типа mus156.mp3), проигрывателем.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 57 СПРЯТАННЫЕ ЖЕМЧУЖИНЫ

>> >> TOMBOY Записная книжка на стероидах! ИНФОРМАЦИЯ ры. Немного погодя это выходит из под правой кнопкой мыши и ЧТО: Записная книжка в стиле wiki ГДЕ: www.beatniksoftware.com/ контроля – тут-то и нужен Tomboy. Этот выбрать Link To New Note tomboy инструмент для заметок связывает вместе (Ссылка на новую замет- ЗАЧЕМ: Создать свой собственный информацию и замечания подобно wiki, ку). Теперь магазин имеет частный wiki вместо сваливания всего в один большой свою собственную стра- файл. ницу. Пример простой, но Представьте, что вы сидите за ком- Откройте Tomboy, и вы увидите неболь- какого бы рода заметки вы пьютером, и кто-то присылает вам шое окно для заметок, в котором вы може- ни делали, вы поймете, что Tomboy имеет средства HTML- список полезных Linux web-серверов. Вы те немедля начать набирать. Сделайте пару такая система связей – прекрасный спо- экспорта для загрузки в сеть. перемещаете их в закладки, но хотите заметок, но не старайтесь разместить все соб отсортировать информацию быстро и добавить к ним кое-какие заметки – напри- в одном месте – вы можете использовать эффективно. мер, что они содержат и как часто обнов- связи (ссылки) для разбивки и системати- Tomboy также предоставляет функции ляются. Поэтому вы открываете Leafpad зации информации. Например, вы можете простого форматирования (шрифт, кегль Tomboy все еще не включен во многие или Emacs и начинаете набирать заметки, набрать В среду: сходить в магазин, затем и так далее) – лишний довод против обыч- дистрибутивы – вот уж вправду секретное пытаясь создать некое подобие структу- выделить слово магазин, щелкнуть на нем ных текстовых редакторов. К изумлению, оружие Linux... ION Используйте территорию экрана по максимуму ИНФОРМАЦИЯ свободно перемещать по рабочему столу, а Ion настраивается при ЧТО: Оконный менеджер ГДЕ: http://modeemi.cs.tut Ion использует мозаику окон – то есть окна помощи языка скриптов ЗАЧЕМ: Наконец-то – способ покончить на экране жестко закреплены и никогда не Lua и снабжен превосход- с хаосом на рабочем столе перекрываются. ной документацией (введи- Выглядит странно? Хорошо, представь- те man Ion). Рекомендуем Мы просто обязаны были включить те, что у вас открыт текстовый редактор всем пользователям Linux этот оконный менеджер: он дейс- вместе с Web-браузером и IRC клиентом. попробовать поработать в твительно может изменить стиль рабо- В традиционном оконном менеджере вы нем – возможно, он станет ты. Не при помощи украшательства или должны скакать с одного окна на другое для вас идеальным рабо- функций и настроек, которые вам никог- или вручную разместить их на экране так, чим окружением, особенно да не понадобятся, но применением при- чтобы все они были видны одновремен- если вы программист. Ion демонстрирует функцию мозаики – нципиально иного подхода к рабочему но. Ion делает это автоматически – что и перекрывающихся окон нет! столу. Большинство «нормальных» окон- означает термин «мозаика». Ваша мышь ных менеджеров помещают приложения вздохнет свободнее, тем более что в Ion во всплывающих окнах, которые можно есть и чисто клавиатурный режим. DESKBAR Поиск переходит на качественно новый уровень ИНФОРМАЦИЯ а дождавшись, выводит все хоть как-то с менты. Наилучшего результата ЧТО: Апплет строки поиска ГДЕ: http://raphael.slinckx.net/ этим вводом связанное. можно добиться при установ- deskbar К примеру, наберите тема – он выведет ленном Beagle. ЗАЧЕМ: Извлечь из поиска максимум. не только файлы, содержащие это сло- Deskbar также совершает во (еще пару лет назад вы другого и не поступки: наберите электрон- До появления Beagle поиск файлов в ждали бы), но и связанные с «темой» ный адрес, и он откроет окно Linux ограничивался сканированием программы – допустим, менеджер тем – редактора писем; введите URL, списка имен файлов, не вникая в их содер- наряду со ссылками, электронными пись- и он запустит браузер. Таким жиме. Теперь Beagle применяется доволь- мами, IM-сообщениями и многим другим. образом, он хорош для любых но широко, но он открыл дверь и другим Качество поиска зависит от установленно- «настольных» задач, доступ- инструментам поиска для ПК, например, го ПО: Deskbar использует встраиваемые ных из одного графического элемента с Deskbar – приложение для Gnome 2.14. Вот что вы получите при вводе Deskbar. Это небольшой апплет, который модули (plugins), написанные на Python, текстовым вводом. команды ‘net’. сидит в панели Gnome, дожидаясь ввода; чтобы привлечь дополнительные инстру-

58 LXF8(82) АВГУСТ 2006 www.linuxformat.ru СПРЯТАННЫЕ ЖЕМЧУЖИНЫ

SKIPPY MP3TOGO Панель задач – ну это же из 1990-х... Выжмите все из вашего портативного плейера ИНФОРМАЦИЯ ИНФОРМАЦИЯ ЧТО: Переключатель программ ЧТО: MP3-перекодировщик ГДЕ: http://thegraveyard.org/ ГДЕ: http://puddle.ca/mp3togo skippy.php ЗАЧЕМ: Больше песен в том же объеме. ЗАЧЕМ: Получить Exposé для компьютера с Linux Персональные MP3-плейеры ныне Как консольное приложение, Mp3togo не столь приятен на вид, но он невероятно дешевы – 50-60 долларов предоставляет полезную информацию, Если вам не доводилось видеть за 256-МБ устройство. А если ваш пле- показывая прогресс. Уменьшенные окна приложений в Exposé на Apple OS X, можете попро- йер имеет меньшую память или вы прос- Skippy упрощают переключения между бовать описываемое приложение – просто ними. то хотите втиснуть в него больше песен? зование 6-МБ mp3-файла в 3 МБ заняло в порядке опыта работы в другом стиле. Перекодировка музыки при более низком около 5 минут). Вот команда конвертации: OS X – рабочий стол, предмет имитации ние миниатюр работающих программ вы битрейте или большей степенью сжатия Mp3togo -o output-directory file1 file2 file3 для многих разработчиков, а Exposé – одна увидите мозаичное изображение ваших означает большие хлопоты. Но ваш тай- Замените output-directory именем из его наиболее известных функций: это окон, любое из которых можно выбрать ный друг Mp3togo автоматизирует этот про- каталога, куда следует поместить переко- инструмент переключения программ, пока- мышью и щелкнуть на нем. Skippy ужива- цесс – можете заняться другими делами, а дированные файлы, а file1, file2 и т.д. зывающий стартовавшие приложения в ется с большинством оконных менедже- затем вернуться и запихать 25-минутную – именами ваших mp3 (или используйте * виде миниатюр. Можете не рыться в панели ров, хотя некоторые могут перехватывать версию Blue Monday себе в плейер. для выбора всех файлов). задач, а просто вызвать Exposé и щелкнуть у него клавишу F11, тогда ее придется Установите Mp3togo, распаковав архив Программа преобразует файлы в WAV, на миниатюре необходимого приложения. переназначить. Mp3togo_0.4.0.tar.gz, зайдите в создан- нормализует их для лучшего качества зву- В Linux есть несколько реализаций этого Skippy не столь подвижен, как Exposé ный каталог и от имени суперпользовате- чания, перекодирует в Lame с большим инструмента, но Skippy делает все наилуч- в OS X; но зато не требует сложной проце- ля выполните команду python setup.py сжатием и заполнит тэги. Voilà – ваши шим образом. дуры установки или специального рабочего install. Теперь можно приступать к конвер- исходные музыкальные файлы почти упо- К счастью, для работы Skippy требуются стола, то есть вы можете использовать его тации ваших файлов – причем сколь угодно ловинились, лишь с небольшой потерей только библиотеки X11 и Imlib2. Запустите немедля! Мы были удивлены его малой большого числа, хотя если вы замахнетесь качества. И все готовы зазвучать! его из командной строки и нажмите клави- известностью – сейчас нечто подобное уме- на сотни файлов, то потребуется немало шу F11. После небольшой паузы на созда- ет делать только сходная функция в Compiz времени (у нас при частоте 1 ГГц преобра- LINKS TEA Web-серфинг без графического интерфейса? Свежая идея Поразительное число функций для обработки текста ИНФОРМАЦИЯ ИНФОРМАЦИЯ ЧТО: Web-браузер ЧТО: Текстовый редактор ГДЕ: http://links.sourceforge.net ГДЕ: http://tea.linux.kiev.ua ЗАЧЕМ: Быстрый, элегантный и не ЗАЧЕМ: НУИНУ текстовых редакторов требует X Мы рады, что осветили факелом LXF Не многие знают, что работать во это небольшое приложение. Если вы всемирной паутине можно и без гра- давний пользователь Linux, то, вероятно, фического интерфейса. А еще меньше Google News в Links. Длинные слышали о Emacs, Vim, Gedit, Kate и про- Если вас тянет на подвиги, откройте умеющих это делать. Однако разработчики страницы прорисовываются в Firefox в чих популярных текстовых редакторах. Но окно Prefs для продвинутой настройки. Links и его ответвлений, держась в сторон- четыре раза дольше, даже если бьемся об заклад, что вы, как и мы до отключить графику! ке, релиз за релизом делают web-серфинг недавнего времени, никогда не слыхивали HTML-конвертации, импорт OpenDocument, в текстовом режиме все удобнее. Но зачем значит, это прекрасное средство просмотра о Tea. Этот неброский редактор с Украины встроенный просмотрщик изображений, и же путешествовать в Интернет в текстовом Slashdot и других серверов новостей. вместил огромное количество функций в т.д., и т.п. Вы даже найдете (и мы не режиме? Links, а также его варианты ELinks обычном бинарном пакете размером менее шутим!) функцию преобразования сигналов Важнее всего то, что это может спасти и Links2, имеют примитивную поддержку 500 КБ [Особенно приятно отметить, что азбуки Морзе. ситуацию, если вдруг отказал запуск X-ов. JavaScript и cookies – просто удивительно, разработчик TEA Петр Семилетов является Во многих других приложениях все это Если вы просто обновляете свой дистри- сколь много сайтов можно просматривать одним из постоянных авторов нашего жур- выглядело бы как свалка функций, что вер- бутив и вам понадобился новый драйвер, без проблем, включая Gmail (HTML-режим) нала; читайте его обзор аудиоплейеров на но и здесь, и не все они будут полезны каж- можете использовать Links в текстовом и даже сайт LXF. После запуска Links в тер- стр.22, – прим. ред.]. дому. Но разработчики сумели упаковать терминале и скачать его с web-сайта изго- минале, нажмите F10 и попадете в главное Tea выглядит и ведет себя как обычный эти функции в значительно меньший объем товителя видеокарты. Или, если при стар- меню, а там все просто: стрелки курсора текстовый редактор GTK, но поройтесь в по сравнению с другими функциональными те X возникла неизвестная ошибка, зайти для перемещения и Enter для выбора. Вряд меню – и вы обнаружите штабеля вкус- редакторами, а это меняет угол зрения. Tea на Google и найти решение проблемы. И ли вы будете использовать Links постоян- ностей. Среди них: календарь, менеджер заслуживает большего внимания, чем ему потом, страницы отображаются молниенос- но, но обнаружите, что это лучший способ файлов, средства IDE, проверка орфогра- уделяется, и если вас тяготит размер Emacs но (благодаря игнорированию рисунков), а просматривать любимые сайты. фии, подсветка синтаксиса, инструменты и Vim, это первый кандидат на смену. LXF

www.linuxformat.ru LXF8(82) АВГУСТ 2006 59 SUBVERSION: КОНТРОЛЬ ДОМАШНЕГО ХОЗЯЙСТВА

Сохранить Добавить код к настройки в файле Linux-проекту конфигурации

Упорядочить Удалить плохую закладки в строку кода браузере

Выложить для Восстановить друзей свои файлы старого студенческие дистрибутива фотографии Жизнь надо прожить в SUBVERSION Однажды дождливой ночью Грэм Моррисон нечаянно скинул на сервер Subversion свой домашний каталог – и вдруг осознал всю полезность этой идеи. Вам тоже стоит так сделать.

зачем? Зачем вообще обеспечение, и установить его заново. Это изменения тут же попадают на все машины, использовать инстру- не сложнее, чем набрать команду. гарантируя однозначность копии /home. НА ДИСКЕ мент разработчиков для Для домашнего каталога это означает, Забавно также выкатить часть вашего репо- • Subversion 1.3.1 хранения собственных что всегда имеется его интеллектуальная зитария Subversion на публику, в форме • KDESvn 0.8.4 файлов? Вы, наверное, резервная копия. Можно не только спасти Linux-блоггинга. Азнаете, что Subversion случайно удаленные данные, но и выбрать Так что «субвертите» ваш домашний обеспечивает доставку актуальной копии возможность восстановления до предыду- каталог на здоровье, для этого не надо исходного кода совместно работающим над щего состояния; или удалить неудачный быть суперхакером. Все, кто не боятся ним через сеть программистам. Но лежа- вариант конфигурации; или посмотреть, как командной строки, могут попробовать, а мы щая под этим технология также полезна и выглядели закладки в браузере год назад. вам поможем. для других целей. Subversion – сервер, хра- Если вы работаете на нескольких машинах, нящий в репозитарии изменения, произве- то ваш домашний каталог синхронизирует- денные над группой файлов. Он позволяет ся с каждой из них – чем не изящное при- и удалить нежелательное программное менение Subversion? Любые сделанные

60 LXF8(82) АВГУСТ 2006 www.linuxformat.ru SUBVERSION: КОНТРОЛЬ ДОМАШНЕГО ХОЗЯЙСТВА Установим сервер Subversion

Говоря попросту, Subversion – подо- желание получать доступ к своему репози- бие умной базы данных, используемой про- тарию через сеть намного все усложнит. граммистами для отслеживания изменений О том, как установить собственный сер- в проекте на протяжении всего его сущест- вер, говорилось в LXF70, но вкратце опишем вования. Без Subversion группе разработчи- процесс, чтобы вы смогли начать. Каждый ков одного проекта приходилось бы посы- солидный дистрибутив включает пакет лать все изменения лидеру проекта, а он Subversion, который легко устанавливается затем вносил бы их в проект. Subversion с помощью менеджера пакетов. Войдите заменяет лидера проекта сервером, и изме- в менеджер пакетов вашего дистрибути- нения вносятся автоматически. ва, поищите пакет Subversion-server и Важно, что сервер Subversion хранит установите его. Если вы уже использовали только отличия между версиями, а каж- Subversion, можете установить дополни- дое подтвержденное изменение называется тельные модули Apache и получить доступ пересмотром (revision). Проходя по пере- к репозитарию через HTTP – ищите пакеты смотрам вперед и назад, можно раздобыть dav_svn и authz_svn. копию любой стадии проекта. Пользователей SUSE ждет пробле- Для Subversion безразлично, если ма: сервер не входит в поставку SUSE вместо исходного кода вы загрузите свой 10.0. Поэтому поищите пакет Subversion- домашний каталог; его дело – хранить server-1.2.3-2.i586.rpm в интернете изменения. Однако имеется несколько (или на диске к журналу) и установите загвоздок. Прежде всего, проблемы вызы- его от имени суперпользователя с помо- ваются большими двоичными файлами. Не щью команды rpm -Uvh *.rpm. Если вы дите строку, начинающуюся с ‘APACHE_ В SUSE возможен HTTP-доступ к репозитарию Subversion, если то чтобы Subversion их не поддерживал, но используете Apache, можете также сконфи- MODULES’, и позаботьтесь о следующем добавить модули при помощи Yast. они реально замедляют систему, так как гурировать его через Yast, выбрав Network порядке загрузки модулей: dav dav_svn Subversion вынужден их сравнивать, отсле- Srvices > HTTP Server и нажав на Modules. authz_svn. Теперь Apache перезапустится живая разницу. Возможно, стоит держать Add Module позволит вам установить оба без проблем. большие файлы вне репозитария. ‘svn’ модуля и модуль WebDav. Перезапустите Apache, набрав от Выбор протокола Руководство по лица root в командной строке /etc/init.d/ Доступ к репозитарию Subversion осущест- установке Apache2 restart. SUSE опять не повезло: вляется с помощью URL. Существует три Труднее всего установить Subverion и заста- возникает ошибка протокола доступа. Самый простой для кон- вить его работать в первый раз. Сервер не undefined symbol: dav_svn_split_uri фигурации – URL, начинающийся с ‘file:///’. самая простая вещь, но ничего невозмож- Все потому, что модули Apache должны По нему доступ осуществляется к репози- ного тут нет. Если ваш сервер располагается загружаться в правильной последователь- тарию, размещенному на вашей файловой на той же машине, что и домашний каталог, ности. Откройте /etc/sysconfig/Apache2 системе – просто проверьте, что слэшей то вряд ли понадобится настройка. Зато в любимом текстовом редакторе, най- три. Для такого доступа настройки вовсе не требуется. Установите Subvesion, и за работу! ...... Второй способ также легко реализовать, и он заключается в запуске отдельного TCP сервиса, для обслуживания запросов к серверу Subversion. Сложным это кажет- ...... ся только на первый взгляд. Проверьте, что установлена утилита Svnserve, создай- те пользователя и группу ‘svn’ командами useradd и groupadd; затем запустите сер- ...... вис Svnserve, набрав /etc/init.d/svnserve start. Под Mandriva и Red Hat он запускает- ся командой service svnserve start...... Третий способ – использование HTTP 1 2 3 4 через сервер Apache. Для ясности, мы в своих примерах будем использовать file:///,

Разработчики, использующие Subversion, могут работать над одним проектом а вы можете избрать способ доступа по одновременно. [1] Старая версия файла находится в репозитарии. своему вкусу. >> [2] Два разработчика скачивают один файл. [3] Оба работают параллельно над своими частями файла, добавляя в них свой код. [4] Когда они отошлют результаты обратно на сервер, произведенные изменения сольются в один файл.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 61 SUBVERSION: КОНТРОЛЬ ДОМАШНЕГО ХОЗЯЙСТВА

>> >> с команды add – она добавит файлы, кото- рые Subversion посчи- /home переезжает тает новыми (то есть все). После add исполь- зуем команду commit, После запуска сервера следующей которая проверит все задачей является заполнение репозитария изменения и загрузит их на данными из вашего домашнего каталога. сервер как неделимую ато- Для начала создайте репозитарий с помо- марную ревизию. На этом щью команды svnadmin, определив, где этапе вас попросят написать именно хранить данные. (Заметим, что в комментарий, описывающий последующих примерах мы проводим весь сделанные вами изменения. процесс для пользователя degsy.) Программисты используют svnadmin create /srv/degsy Опасаться нечего: в конце концов, мы всег- комментарии для описания сделанных Команда svnadmin не использует пре- да сможем вернуть наши данные из /foo. изменений. Комментарии пригодятся и для фикс протокола (file:///), потому что всегда Вам надо выполнять операции от лица вашего домашнего каталога, особенно если запускается на стороне сервера. суперпользователя, потому как только он перемены значительны: например, сменил- Теперь надо скачать репозитарий с сер- имеет права на проведение изменений в ся дистрибутив или оконный менеджер. вера, то есть просто создать локальную каталоге /home. Если вам необходимо вернуться к конфигу- копию данных, размещенных на сервере. Переименовав каталог, создайте копию рации до обновления, просто просмотрите На текущий момент на нашем новом серве- данных сервера Subversion, а заодно и фай- комментарий. ре никаких данных нет, но процедура скачи- лы конфигурации: Наберите svn add *, чтобы добавить вания создаст в вашем домашнем каталоге svn checkout file:///srv/degsy все файлы вашего домашнего каталога на временное хранилище для файлов конфи- Checked out revision 0. сервер Subversion: гурации, которые Subversion будет исполь- Каждый раз, когда вы производите svn add * зовать для отслеживания изменений в изменение в файлах, находящихся на сер- A bin ваших данных. вере Subversion, номер ревизии (пересмот- A Documents Приступим. Зайдите на вашу систему ра) увеличивается на единицу. Subversion A Documents/.directory как суперпользователь и перейдите в ката- использует атомарные изменения: неважно, A images лог /home. Далее переименуйте каталог сколько файлов успело поменяться в вашем A (bin) images/IMG_0192.JPG того пользователя, который собирается домашнем каталоге – когда репозитарий использовать Subversion. В нашем случае обновится, все изменения пройдут как один Двоичные файлы home/degsy станет home/foo. Изменение пересмотр. В показанном выше примере Subversion теперь переберет все файлы, имени необходимо, чтобы не произошло число пересмотров равно нулю, потому что добавляя каждый из них в список файлов, перезаписи данных, потому что, когда мы мы еще ничего не делали с репозитарием. которые необходимо закачать на сервер. выкачиваем домашний каталог из В /home вы увидите каталог с именем Двоичные и текстовые файлы обрабатыва- Subversion, он замещает исходный каталог. вашего пользователя (то есть /home/ ются различным способом. Вот почему degsy), и если вы поинтересуетесь содер- изображение в выше показанном примере жимым этого каталога, то обнаружите, что в помечено как bin. Изменения в двоичные нем содержится всего одна запись. Чтобы файлы вносятся иначе, чем в текстовые, просмотреть ее, наберите когда Subversion просто хранит прямые ls -al degsy изменения между одной версией и следую- и увидите следующее: щей. Символ A в начале каждой строки drwxr-xr-x 7 root root 4096 2006-05-11 означает, что каждый файл будет добавлен 20:30 .svn добавлен в репозитарий, но этого не про- Это скрытый каталог Subversion, где изойдет, пока вы не запустите команду будут храниться все изменения, а также commit, решившись принять изменения исходные версии всех файлов. Теперь надо окончательно. Также вас попросят написать скопировать этот каталог .svn в исходный комментарий, описывающий смысл домашний каталог – который теперь назы- изменений. вается /home/foo; именно он будет напол- Получится следующее: нять репозитарий Subversion. Далее, удали- svn commit те скачанный с сервера каталог и верните Adding Documents исходному домашнему каталогу его преды- Adding Documents/.directory дущее имя: Adding bin cp -rf degsy/.svn foo/ Adding images rm -rf degsy Adding (bin) images/IMG_0192.JPG mv foo degsy Transmitting file data. chown -R degsy:users degsy Committed revision 1. Теперь все на своих местах, и можно Время выполнения этого процесса зави- предпринять важный шаг загрузки домаш- сит от количества произведенных измене- Помните, что Subversion копирует все содержимое репозитария в скрытый каталог .svn, это удваивает требуемый объем дискового пространства. него каталога Subversion на сервер. Начнем ний и от скорости соединения с сервером

62 LXF8(82) АВГУСТ 2006 www.linuxformat.ru SUBVERSION: КОНТРОЛЬ ДОМАШНЕГО ХОЗЯЙСТВА

Subversion. Когда вы в первый раз под- Альтернатива – перемещение скрытых тверждаете изменения вашего домашнего каталогов (исключая .svn) в отдельный 10 ШАГОВ ПО ЖИЗНИ С SUBVERSION каталога, то наверняка потребуется значи- каталог и использовании простого скрипта Проект настолько разумно организован, что у тельное время для копирования всех ваших для воссоздания символьных ссылок. новичков просто нет шансов запутаться. Вот Проверьте, что в /home данных. Небольшой недостаток использования предпринятые нами действия, по шагам: создался новый каталог user, Вы, возможно, заметили, что есть одна Subversion состоит в том, что, когда вы включая скрытый каталог .svn жизненно важная группа файлов, которая добавляете и удаляете файлы и каталоги, Установите Subversion и не обновилась – а именно, скрытые файлы требуется повторять процесс для репозита- выберите протокол доступа. Скопируйте .svn в /home/foo (их имена начинаются с точки «.») вашего рия Subversion с помощью команд svn add домашнего каталога. Почему? Потому что для добавления и svn del для удаления, а Удалите вновь созданный это вызовет конфликт с собственным скры- затем выполнять commit для подтвержде- Создайте репозитарий Subversion каталог /home/user тым каталогом Subversion (.svn). Если вы ния изменений. Но трудно ли заменить эти для вашего домашнего каталога, знаете, какие каталоги вам нужны, добавьте команды скриптом? например, /srv/user Переименуйте /home/foo в их вручную. Следующая команда добавит, к исходный /home/user примеру, конфигурационные файлы Переименуйте домашний Gnome: каталог пользователя /home/ Загрузите /home/user в svn add .gnome2 user в /home/foo репозитарий Subversion A .gnome2 A .gnome2/accels Сделайте локальную копию Вручную добавьте скрытые svn commmit нового репозитария Subversion / srv/user файлы Committed revision 2

4 Спасение рядового проводить эту процедуру. Восстановление Приемы работы файла данных из резервной копии обеспечит сле- Еще одна привлекательная черта такого дующий трюк: репозитария – восстановление случайно svnadmin load /srv/degsy < svn_backup удаленных или потерянных данных. Если Итак, вы используете Subversion для верьте имя сервера и наберите вам требуется старая версия данных, то Что дальше? хранения домашнего каталога. Посмотрим, svn checkout svn+ssh://hostname/srv/degsy должна быть и возможность просмотреть На радость хакерам, существует много спо- что полезное можно сделать благодаря Эта команда создаст копию домашнего изменения. Этой цели служит команда diff, собов для написания собственных решений этому. каталога degsy в текущем местоположении. которая точно скажет, что и где изменилось в виде скриптов – например, по части хра- Любые изменения, сделанные вами на этой в файле. нения скрытых файлов и создания резерв- Защитить данные машине, надо отослать на сервер и под- Например, следующая команда в точ- ных копий. Subversion был задуман не для 1 Если вам надо получить доступ к твердить. По команде svn add * система ности отобразит изменения между 5 и 6 вашего домашнего каталога, но он неверо- домашнему каталогу через Интернет, то проигнорирует старые файлы и добавит ревизиями файла bookmarks.html: ятно гибок – так чего ж теряться? LXF использование протокола ‘svn://’ может только новые. svn diff -r 6:5 file:///srv/degsy/bookmarks. подвергнуть вас риску атаки прослушива- html ния, когда кто-то перехватывает ваши дан- 3 Плановые правки Существует несколько способов восста- ные во время их передачи. Решение состоит Обновление версии вручную – это новить файл с помощью этих данных, и в использовании безопасной оболочки SSH. фирменный рецепт, как лишиться файлов самый безопасный из них – сохранить ста- Просто замените ‘svn’ в URL на ‘svn+ssh’. или синхронизации каталогов. Как ни рую версию файла в новый каталог внутри Вам придется использовать учетную запись печально, простого способа синхронизиро- домашнего каталога. С помощью команды пользователя, существующую на сервере, а вать новые или удаленные папки и файлы в svn copy укажите номер ревизии и путь, также проверить, что этот пользователь автоматическом режиме не существует – куда копировать: имеет право на доступ к репозитарию. требуется все время набирать svn add и svn svn copy -r 6 file:///srv/degsy/bookmarks. Чтобы определить пользователя в URL, del; но самую длинную команду svn commit html new.html наберите: можно автоматизировать. 5 svn list svn+ssh://degsy@hostname/srv/ Добавьте команду commit в системную Резервное degsy. таблицу cron с помощью команды crontab. копирование Предварительно создайте таблицу для Грош цена вашему репозитарию, если дан- Везде как дома пользователя с помощью команды crontab ные вовремя не резервируются, особенно 2 Поместив свой домашний каталог -e, а затем можно добавить запись для если ваш домашний каталог всегда времен- на сервер Subversion, вы можете иметь те запуска команды commit: ный. Отличное решение – запуск на сервере же файлы и настройки на нескольких маши- 15 00 * * * svn commit -m команды svnadmin dump: она выводит нах хоть на другом краю Земли. Так как “Automated commit” все содержимое репозитария на экран, но машины синхронизируются с сервером, то Команда commit запустится в 00:15, а ведь вывод можно перенаправить и в вы можете быть уверенными, что использу- параметр -m говорит, что мы не хотим взаи- файл! ете актуальные файлы. Когда вы находи- модействовать с процессом для добавле- svnadmin dump >svn_backup KDESvn избавит вас от консоли при тесь в каталоге /home на новой машине и ния комментария к изменениям. Проверьте, что svn_backup хранится в работе с изменениями в хотите создать копию репозитария, то про- надежном месте, и не забывайте регулярно репозитарии.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 63 ИНТЕРВЬЮ Алексей Гурешов

LXF ИНТЕРВЬЮ

ААЛЕКСЕЙЛЕКСЕЙ ГГУРЕШОВ:УРЕШОВ: ЧЕЛОВЕК ИЩУЩИЙ

TD LXF Визитка Генеральный директор проекта Алексей Гурешов о своей поисковой машине ING MOVES UK L UK MOVES ING Генеральный директор го проекта многообещающе а на рынке LinuxFormat: Рынок поисковых серви- и им выгодно так утверждать. Послушайте, Webalta – нового игрок -поиска, собирающегося сов достаточно насыщен. В мире широко какие комментарии дают Яндекс, Rambler, интернет навести шороху в рядах известны MSN, Google. В России – Яндекс, Google и другие о насыщенности рынка. PS COURTESY: WINN COURTESY: PS ных фаворитов признан Rambler, Апорт, наконец. Как у вас роди- Понятно, что никто из них не хочет пускать 24 лась идея «втиснуться» в эту тесную ком- на этот рынок других конкурентов. TOP TRUM TOP ВОЗРАСТ + панию? Рассчитываете ли вы получить Но что касается качества поиска, то очень НАЦИОНАЛЬНОСТЬ 8 какую-то определенную долю рынка или многие недовольны текущими поискови- СТАЖ РАБОТЫ В LINUX читатель занять свою уникальную нишу? ками. Все заполонили дорвеи, и поиско- ЯЗЫКИ ПРОГРАММИРОВАНИЯ 2 Алексей Гурешов: Попробую объяснить. вый спам является достаточно серьезной КОЛИЧЕСТВО ПК ОФЕ чай В мире существует множество почтовых проблемой. И почему же в таком случае ДНЕВНАЯ НОРМА К ПАР САНДАЛИЙ 1 сервисов, Yahoo, Mail..ru и т.д. Но почему не попробовать свои силы и не создать вать все шансы.» ДЕВИС: «Использо в таком случае поисковиков должно быть достойного конкурента? Тем более, что уже всего два или три? Кто говорит, что этот есть серьезные наработки, которые пре- рынок насыщен? Об этом говорят сами доставили нам финансовые возможности поисковики, которые просто гребут деньги, для создания поисковой машины.

64 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ИНТЕРВЬЮ Алексей Гурешов

Я слышал такую идею, что в ближай- му, что собран этот дистрибутив на базе AMD Opteron. Так что сегодня мы практи- тает до определенной стадии, когда у тебя шие годы сможет выжить и укрепить свои Red Hat Linux. Если последний платный чески полностью перешли на Opteron. Как 20-30 узлов. Но когда их число доходит позиции тот, кто сделает не просто поиск и стоит немалых денег, то Scientific Linux нам кажется, по соотношению цена/качест- до сотни, возникают проблемы. Дальше по сайтам, так как этого уже недостаточно, распространяется совершенно свободно. во сегодня на рынке ничего лучше нет. Интернет будет нужно делить уже по сло- а тот, кто сможет предоставить резуль- Так как у нас довольно много серверов, то Тех серверов, которые у нас есть сейчас, вам. Списки определенных слов хранятся тат в комплексе. В частности, вы вводите приобретать для каждого лицензию на Red нам хватит, по крайней мере, до кон- на определенных серверах. Чтобы данная запрос «Владимир Путин», и вам сразу же Hat Linux было бы довольно накладно. ца года. Но уже осенью мы собираемся система устойчиво работала, нам как раз демонстрируется его портрет, показывает- индексировать Европу, поэтому расши- и потребуется собственная файловая сис- ся его биография и т.д. Мы как раз плани- LXF: Но ведь у Red Hat есть ряд преиму- рение технической базы неизбежно. Так тема. Сейчас мы ищем специалистов, спо- руем развиваться в эту сторону, и ведем ществ, например – сертификация Oracle. что уже осенью серверная база вырастет собных написать подобные вещи. Скорее активную работу в этом направлении. АГ: Нам это не нужно, так как мы исполь- втрое. всего, мы будем делать файловую сис- Второй момент – борьба с поисковым спа- зуем только Linux, и у нас нет ничего тему, которая сама бы нам раскладыва- мом. Проблема эта угрожающая, и если чужого, даже база данных у нас своя LXF: А кто поставляет вам серверы? ла информацию, да и не просто раскла- вы посмотрите статистику по тулбару собственная. Еще одна причина, по кото- АГ: Мы сотрудничаем с двумя компани- дывала, но и могла делать равномерное LiveInternet, которые считает переходы по рой мы выбрали Scientific Linux состоит в ями – Trinity Solutions и «Т-Платформы». дублирование по серверам. Это даст нам сайтам, программы-дорвеи имеют всего том, что компания Red Hat самостоятель- По качеству и по уровню сервиса эти ком- возможность использовать много малень- лишь вдвое меньше трафика, чем весь но обновляет ядро, пишет модификации, пании примерно равны. ких дешевых машин, когда у нас пойдет «Яндекс». Возьмем в качестве примера накладывает патчи, а в данном случае реальная нагрузка. всего два сайта – Блокнотик.ру и Поиск. мы сами берем ядро с Kernel..org и оно LXF: На каком языке написан основной В принципе, та система, которая у нас есть ру. Один имеет 23 процента, а другой 17 отлично работает. Возникала лишь про- компонент поисковой машины – «паук»? сейчас, выдерживает 20 миллионов запро- процентов, при этом 100 процентов имеет блема с драйверами, так как некоторые АГ: Вообще, у нас не только «паук», но сов. Если поставить вторую копию, это сам «Яндекс». Надеюсь, вы можете себе производители, в частности Adaptec, пре- вся система написана на С++. Реально у даст 40 миллионов. Для России этого хва- представить масштабы бедствия?! Просто доставляют драйверы в бинарном виде, нас просто установлен дистрибутив Linux, тит, но чтобы поддерживать 14–16 мил- об этом мало кто говорит, так как все это собранном исключительно под Red Hat.. поверх которого стоит собственная про- лиардов, нужно делить все по-другому. можно считать негативом, неким черным Но впоследствии мы эту проблему полно- грамма. Никакого Apache у нас также нет, Естественно, мы думали об этом с само- PR для поисковых машин. стью решили, и сейчас у нас все отлично мы используем собственный http-сервер. го начала, и перевести систему на новые работает. Поначалу мы хотели выбрать Вначале мы пробовали использовать MPI рельсы не составляет никакого труда. LXF: Сколько человек работает в вашей дистрибутив Fedora Core, но умные люди для коммуникации между серверами, компании? нас отговорили от его использования, так но как выяснилось, для наших целей он LXF: У каждой поисковой системы свой АГ: В данный момент у нас трудится поряд- как на нем Red Hat только тестирует и обка- совершенно не годился, так как постоянно собственный алгоритм. Кто разрабатывал ка 70 человек. И мы продолжаем искать тывает все нововведения. грузил процессор, туда-сюда гонял нуле- ваш алгоритм? талантливых людей. Например, поиск про- вые биты. АГ: Алгоритмы поиска, как таковые описа- граммистов, особенно толковых – очень LXF: Не было ли идеи использовать ны в учебниках. Эта информация сущест- большая проблема. Планируем также уве- Debian, который традиционно считается LXF: Насколько я знаю, вы отказались от вует уже давно и ничего принципиально личить операционный отдел с выводом в наиболее стабильным и консервативным использования файловых систем, и у вас нового здесь не придумано. Формула, свет контекстной рекламы. В мыслях раз- решением? осуществляется запись прямо на «голый» которую мы используем для расчета бли- вивать отдел PR и брендинга. АГ: Да, мы смотрели много дистрибути- раздел? зости, текста ссылок и т.д. – это наша вов. Нам еще очень понравился Gentoo.. АГ: Непосредственно в самих инвертиро- собственная разработка. Главная задача LXF: Сколько финансов было вложено в Но уж так исторически сложилось, что ванных списках так предполагалось пер- поисковых алгоритмов – тестирование развитие поисковой машины Webalta, и человек, который собирал нам весь клас- воначально. Это очень важно для ско- поисковой машины. Ведь Интернет сам сколько еще будет инвестировано? тер, нас убедил в том, что надо использо- рости и оптимизации, так как мы можем по себе далеко не идеальный, там полно АГ: У нашей компании есть уставной капи- вать именно Scientific Linux. Этот человек раскладывать данные на диск так, как это накрутчиков и множество сайтов, кото- тал в размере 20 миллионов рублей. На работает в довольно известном москов- нужно нам, а не файловой системе. У нас рые неправильно устроены, не соблюдают эти деньги сейчас выпущены акции. Наша ском учебном заведении и занимает там возникали проблемы с сервером, кото- стандарты и т.д. Одним словом, это боль- компания – это открытое акционерное серьезную должность, так что мы приняли рый содержит оригинальные документы, шая куча мусора, которую нужно как-то общество. На самом деле, вложений было его слова на веру. первоначально мы планировали склады- структурировать. Люди пишут в Title и на гораздо больше, так как мы брали займы у вать их на сервере с файловой системой страницы все, что хотят, а задача поис- частных лиц, учредителей. Разумеется, эти LXF: Вы упомянули о кластере. Интересно ReiserFS, однако подобная схема сразу ковика выбрать то, что нужно. Сейчас у средства планируется вернуть. В реаль- было бы узнать, сколько в нем узлов, же не сработала. Дело в том, что ReiserFS нас есть свыше двухсот настроек. Каждый ности сегодня только на основные средс- и какой объем трафика проходит через попросту не в состоянии записывать на коэффициент на что-то влияет. тва потрачено порядка 10 800 000 рублей него. диск 4000 мелких файлов в секунду. В Так, мы умеем определять содержание и до достижения самоокупаемости нам АГ: Узлов, то есть серверов сейчас око- результате нами создана собственная фай- страницы и т.д. Каждый коэффициент при придется еще достаточно вложить. У нас ло семидесяти. Трафик на самом деле ловая система, специально ориентирован- изменении улучшает или ухудшает пози- запланированы довольно большие затра- очень большой. Все узлы соединены через ная на подобные вещи. Сейчас это храни- цию страницы. Основная задача всех этих ты, например, на продвижение. Мы ведь гигабитный Ethernet. Вначале мы хотели лище у нас занимает примерно 12 тера- алгоритмов сводится именно к тестирова- планируем занимать долю на рынке. сделать все на основе Intel, но потом у байт, и его легко можно расширить до 96 нию. Ведь как раньше тестировали поиско- нас возникли проблемы. Так, нам потре- терабайт. Попросту возможности ReiserFS вики? В них загружали некую идеальную LXF: Хотелось бы перейти к техническим бовалось установить сервер с 16 гигабайт нам оказались не нужны. базу документов, после чего добавляли вопросам. Как Webalta устроена изнутри? ОЗУ. Для интеловских серверов требуется эталонную базу вопросов и ответов, и пос- Как я слышал, в ее основе лежат разработ- специальная память, которая стоит очень LXF: А вы не думали о реализации собс- ле этого выравнивали. Нам кажется, что

ки на основе Open Source? дорого. Получалось так, что эти 16 гига- твенной файловой системы в ядре? на текущий момент это уже устаревшая АГ: Да, в основе поисковой машины лежит байт стоили столько, сколько два анало- АГ: Хороший вопрос. Сейчас мы Интернет модель и тестировать надо непосредствен- >> Scientific Linux 4.2. Мы выбрали его пото- гичных сервера с 16 гигабайтами на базе делим по кускам, доменам. Это все рабо- но на Интернете. Мы уже создали эталон-

www.linuxformat.ru LXF8(82) АВГУСТ 2006 65 ИНТЕРВЬЮ Алексей Гурешов

ную базу вопросов и ответов, когда напри- получилось нечто среднее. Кроме того, Кстати, мы перешли на новое ядро и как раз планируем довести индекс до мил- >> >> мер, по слову «погода» в первой двадцат- мы добавили целый ряд своих нововведе- сбросили базу, теперь наращиваем ее. лиарда. Вообще, русских страниц не так уж ке должны оказаться одни результаты, на ний, в частности мы учитываем не только Далее займемся ее качественной отстрой- много, и довольно сложно бывает найти фразу «официальный дилер Mercedes» ссылки на доменах, но и дату регистрации кой. Хотелось бы довести качество поис- нужное количество страниц, с тем, чтобы другие и т.д. Подобных запросов сейчас этих доменов. Ведь даже если появился ка до нормального состояния, чтобы его построить самую большую базу. уже собрано около тысячи. У нас есть какой-то сайт, но он появился только вче- результаты были хотя бы сопоставимы с средство автоматической настройки, кото- ра и на него уже наставили кучу ссылок, «Яндексом«. LXF: Компания Google часть своего рое восстанавливает все коэффициенты с вероятность того, что он будет в первых Мы продолжаем разрабатывать новые кода распространяет по открытой лицен- целью получения наиболее точных резуль- результатах поиска довольно мала. Мы интересное направление, например, собст- зии. Планируется ли нечто подобное в татов. Но на основной базе мы его пока не это называем «уровнем доверия» к сай- венный тулбар. Фактически он уже сущест- Webalta? пробовали. ту. Помимо этого мы смотрим и на другие вует, и мы сейчас занимаемся шлифовкой АГ: Пока не планируем. Есть определен- На днях мы перешли на новое ядро, испра- параметры – WHOIS, DNS и т.д. Все это в мелких деталей. ные соображения, и отдавать какие-то про- вив тем самым множество критических той или иной мере необходимо для борьбы граммы мы, скорее всего, не будем. Но мы ошибок. Нам пришлось полностью обну- с поисковым спамом. Все-таки хочется эту LXF: Тулбар будет для всех браузеров? планируем создавать большое количест- лить базу, и теперь мы собираем ее зано- борьбу как-то автоматизировать, потому АГ: Нет, пока только для Internet Explorer. во API-интерфейсов, чтобы разработчики во. В последующие дни мы уже будем что сейчас в Рунете она как-то не слиш- Просто не все сразу. могли интегрировать свои программы с заниматься качеством. ком автоматизирована, по той причине, нашими. В частности, подобная система что поисковики борются с этим явлением LXF: Сегодня ваши поисковые базы сейчас разрабатывается для контекстной LXF: Какой принцип ранжирования стра- уже по принципу свершившегося факта. заполнены не до краев. Когда планируется рекламы. ниц вы считаете наиболее оптимальным? То есть, поисковые спамеры сделали что- завершить наполнение? АГ: Один из ключевых моментов при ран- то, их обнаружили и забанили. Конечно, АГ: Планируется, что к началу осени мы LXF: Какие дополнительные поисковые жировании – это ссылки. Все поисковики пытаются создавать специальных робо- будем иметь одну из самых больших баз по сервисы вы планируете реализовать в используют определенные условия и опре- тов, которые понимают Java Script и будут российским документам. Текущая скорость будущем? деленные функции для учета этих ссылок. ходить и детектировать все эти дорвеи, но индексации у нас составляет примерно сто АГ: Сервисов планируется выпустить «Яндекс» считает ссылки по доменам, это тупиковый вариант. Ведь тот же Java миллионов уникальных страниц в сутки. достаточно. Просто у нас пока еще не до Google по страницам, а у нас реализована Script можно закодировать так, что ни один Построить индекс по миллиарду страниц всего доходили руки. Например, мы пла- собственная модель, в результате которой робот его не сможет распознать. мы можем за десять дней. За август мы нируем осуществлять поиск и по картин-

66 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ИНТЕРВЬЮ Алексей Гурешов

кам, и по блогам. Собираемся выдавать руем. Собственно говоря, создаем еди- то система будет искать издание, стихи и относится к FireFox. Выставить Webalta пользователю комплексный результат, ный аккаунт для всех наших сервисов. Он имя поэта вместе, и пытаться это обрабо- в качестве основной поисковой машины который будет включать в себя все, что будет необходим, например, для унифи- тать. Ведь если еще несколько лет назад там невозможно, нужно писать специаль- может соответствовать данному понятию – кации денежных расчетов. Мы планируем люди вводили в строке поисковика все- ный плагин. сайты, блоги, карты, изображения и т.д. создать также собственную внутреннюю го одно слово, то сегодня уже два-три. Мы собираемся работать с теми браузера- платежную систему. Так платить за кон- Количество информации растет, да и уро- ми, которые уже существуют, и будет пре- LXF: Существует еще один интересный текстную рекламу можно будет из одного вень интернет-пользователей постоянно доставлять пользователям возможность и перспективный вид поиска – поиск по аккаунта. Сюда же будeт входить и еще увеличивается. Люди уже научились пра- установить наш поисковик в качестве исходным текстам открытого ПО. Будет ли многое другое. Кроме того, работаем над вильно составлять запросы, и мы видим основного. А что касается спонсирования, у вас нечто подобное создано? развлекательными сервисами и идем по свою задачу в том, чтобы обрабатывать то это слишком дорогое удовольствие поз- АГ: Вообще говоря, не составляет ника- абсолютно легальному пути, так как уве- не просто телеграфный текст или набор волить себе поддержать создание какого- кого труда научить нашу текущую систе- рены, что в конечном итоге все к этому ключевых слов, а вполне осмысленные то браузера. Возможно, в будущем это му искать по программным текстам. Но и придет. предложения. А для этого нужно научить- произойдет. насколько это нужно, сколько времени Если представить себе всю структуру ся разбирать эти предложения и понимать, потребует доработка и, главное – сколь- Webalta, то поисковик – это как бы некий какие слова важные, а какие нет. ко людей всем этим воспользуется, я не хребет, который обрастает всем осталь- знаю. У нас много предложений по созда- ным, в данном случае новыми сервисами. LXF: И последний вопрос Компания Google нию специализированных видов поиска – щедро спонсирует разработчиков браузе- например поиска по правительственным LXF: Для поиска очень большое значе- ров, за что последние зачастую вставля- документам. Как я уже говорил, создание ние имеет морфология. Морфологический ют их в качестве поисковой машины по их не представляет никакого труда, но нам модуль был разработан вашими специа- умолчанию. Были даже курьезные случаи, пока не хотелось бы распылять свои силы листами или приобретен? когда браузер FireFox называли Adware от на начальном этапе. АГ: Да, это приобретение. Мы взяли Google. Собирается ли Webalta оказывать чужую программу и практически пере- подобную поддержку? LXF: Любой мало-мальски уважающий писали ее. Вообще Webalta в русском и АГ: Я работаю на Маке и пользуюсь бра- себя поисковик рано или поздно обзаво- английском языке уже сейчас умеет выде- узером Safari. Там по умолчанию уста- дится собственным почтовым сервисом… лять генетивные пары. Каждый запрос новлен только Google, и заменить его АГ: А у нас почта уже есть и сейчас тес- подробно анализируется. Если вводится невозможно.. Нужно поверх устанавли- тируется. Она сделана на AJAX, и мы какой-то сложный запрос например стихи вать специальную программу, которая пока ею пользуемся сами, на себе тести- Александра Пушкина в таком-то издании, даст такую возможность. То же самое

www.linuxformat.ru LXF8(82) АВГУСТ 2006 67 ТРЕТЬЕ ИЗМЕРЕНИЕ

Рисунок 1. При помощи 3D-Desktop можно переключать виртуальные Третье рабочие столы. ИИЗМЕРЕНИЕЗМЕРЕНИЕ

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

перационная система GNU/ не сказывается на работе основной систе- цепцию рабочего окружения пользовате- Linux, построена по при- мы. Кроме того, существует несколько ее ля. Естественно, нашлись и такие проекты, нципу KISS (Keep It Simple вариантов, наиболее популярные из кото- которые уже сегодня смотрят в будущее, Stupid). В отличие от дру- рых XFree86 (http://www.xfree86.org/) и причем выбор здесь не ограничен извест- гих ОС, в ней не намешан X.Org (http://www.x.org/). Здесь работает ным XGL от Novell. Единственное ограниче- коктейль из приложе- тот же принцип, поэтому Х-Window так- ние- многие из разработок требуют наличия Оний, намертво «вшитых» друг в друга. же состоит из нескольких компонентов, хорошей видеокарты. Философия построения системы, напро- а клиент-серверная архитектура позволяет тив, состоит в использовании небольших устанавливать их вообще на разных ком- Переключатель рабочих по размеру приложений, которые работают пьютерах. Поэтому и оконных менеджеров столов 3D-Desktop независимо друг от друга. При необходи- и различных расширений в этой систе- Разработкой 3D-Desktop (См. врезку 1) мости совместного использования, их всег- ме столько, что вряд ли кто-то возьмется занимается фактически один человек: да можно объединить как непосредственно их пересчитать. Каждый проект выражает Брэд Вэссон (Brad Wasson). Эта програм- в командной строке, так и в скриптах при подход конкретного человека или группы ма, использующая OpenGL/Mesa, позволя- помощи графической оболочки. Кроме того, энтузиастов, поэтому нестандартных реше- ет переключать рабочие столы в наглядном любой из компонентов заменим на альтерна- ний здесь пруд пруди. Если Gnome, KDE, 3D-режиме. Выглядит это очень эффектно. тивный, при наличии такового. Графическая IceWM напоминают традиционный рабочий После активации пользователю показыва- подсистема X Window – яркий тому пример. стол, то Fluxbox довольно аскетичен по вне- ются трехмерно расположенные изобра- Она не интегрирована в систему, что позво- шнему виду, а разработчики Symphony OS жения всех виртуальных рабочих столов, ляет вообще ее не устанавливать в случае (http://www.symphonyos.com/) вообще которые можно вращать и просматривать. отсутствия необходимости, а ее сбой никак целиком и полностью пересмотрели кон- По щелчку на одном из изображений будет

68 LXF8(82) АВГУСТ 2006 www.linuxformat.ru Softool 2006ТРЕТЬЕ ИЗМЕРЕНИЕ

Приглашаем Вас посетить выставку SofTool, которая пройдет с 26 по 29 сентября 2006 года в Москве, в 69 павильоне ВВЦ. Выставка SofTool является самым крупным и представительным Российским форумом новейших разработок в области информационных технологий и их применения в осуществлен переход на выбранный вирту- priceisright, flip. Выбор варианта показа экономике страны. Данный пригласительный билет дает право на одно альный стол. осуществляется при помощи опции --mode. бесплатное посещение выставки в любой удобный день. Конструктивно 3D-Desktop состоит из $ 3ddesk --mode=linear двух программ: демона 3ddeskd и переклю- Все настройки оформлений сохранены Отрежьте пригласительный билет и приходите с ним на выставку ! чателя 3ddesk. Демон работает в фоновом в файле 3ddesktop.conf, который состоит и обеспечивает более быструю реакцию, а из нескольких секций описывающих назва- также кэширование информации об откры- ние и параметры вывода. Например: тых окнах на всех виртуальных столах. wm kde3 Запуск демона лучше произвести отдельно view default и с опцией --acquire, тогда будут собраны zoom on изображения со всех рабочих столов. show_digit on Дополнительно можно указать время digit_size 100 автоматического обновления (в миллисе- digit_color green кундах) этой информации. use_breathing false $ 3ddeskd --acquire=1000 view bigmoney ======mode priceisright 3ddesktop will be acquiring images in one depth 10 moment. Please wait... digit_color purple ======digit_size 150 Daemon started. Run 3ddesk to activate. Параметров много и показ рисунков В некоторых случаях для коррект- можно очень тонко настроить. Нужная сек- ной работы, возможно, потребуется при- ция выбирается при помощи опции --view с нудительно указать используемый окон- указанием имени. ный менеджер при помощи опции --wm. $ 3ddesk --view= bigmoney Поддерживаются следующие варианты: Для удобства запуска 3ddesk можно kde2, kde3, gnome1, gnome2, ewmh, создать ярлык на рабочем столе. Например, fluxbox, windowmaker, enlightenment, в KDE для этого достаточно щелкнуть правой sawfishonly и workspaces. Задача кнопкой мыши по пустому месту рабочего 3ddesk – активация сервера, если он еще не стола, выбрать «Создать»->«Ссылку на при- запущен и переход в режим переключения ложение». В появившемся окне, во вкладке рабочих столов. Для компиляции потребу- «Общие» нужно указывать название ярлыка, ются пакеты XFree86-devel или Imlib2-devel, в «Права» дать ему право на выполнение, и либо исходные тексты этих приложений. в «Приложение» в строке «Команда» запи- Для работы желательна аппаратная подде- сать строку запуска вида /usr/bin/3ddesk ржка 3D-ускорения. --view= bigmoney. Теперь по щелчку на Поддерживаются несколько вариантов ярлыке будет запускаться переключатель размещения и оформления окон. Внешний рабочих столов, при желании можно указать вид можно скорректировать по своему усмот- и комбинацию клавиш. рению. Так по умолчанию окна выводятся каруселью (carousel) (Рис. 1) и при просмот- Трехмерный рабочий ре поворачивается на 1800 в горизонталь- стол ной плоскости. Но можно указать и другие Metisse (Рис. 2) не является трехмерным варианты: linear, cylinder, viewmaster, рабочим столом в чистом виде. Задачи

Рисунок 2. Metisse обладает всем, что можно представить в трехмерном рабочем столе. ТРЕТЬЕ LinuxLandИЗМЕРЕНИЕ 2006

Компании ИТ-Экспо и Линуксцентр приглашают Вас посетить выставку- конференцию LinuxLand, которая пройдет в рамках SofTool-2006. На LinuxLand представлен весь спектр доступных в России Linux-решений. В течение всей выставки будут проходить мастер-классы с демонстрацией практической работы Linux-технологий. 26 сентября приглашаем Вас на конференцию “ИТО-2006: Технологии Linux и Open Source” .

Ждем Вас на LinuxLand ! Организатор Платиновый спонсор

Рисунок 3. Музыкальные файлы в TDFSB представлены в виде дисков.

этого проекта несколько шире и включают го университета Даниеля Ричарда (Daniel разработку и тестирование прогрессивных Richard) подтолкнул кадр из фильма методов и стандартов. Это, скорее, инстру- Стивена Спилберга «Парк Юрского перио- мент для создания новых рабочих сред. да», в котором была показана эксперимен- Золотой спонсор Одним из вариантов реализаций такой сре- тальная разработка компании SGI – 3D File ды и является 3D. Для установки, кроме System Navigator (http://www.sgi.com/fun/ самого Metisse, вам понадобится библио- freeware/3d_navigator.html) работающая тека Nucleo и WMI (Window Manager Icons). под Irix. В fsv каждый показанный объект Конструктивно Metisse состоит из вирту- будет выделен цветом и объемом в соответ- ального X-сервера Xwnc (содержащего код ствии со своими свойствами: размер, тип

Серебряный спонсор Xvnc и XDarwin), переработанной вер- (каталог, файл, сокет), временем модифи- сии FVWM (исполняемый файл называет- кации. Для установки потребуется наличие ся fvwmi), и модуля FVWM FvwmAmetista. gtk и gtkglarea. При помощи меню “Ametista Config” можно Другая подобная разработка TDFSB – настроить некоторое количество парамет- (3D – Filesystem Browser) показывает фай- ров, среди которых: изменение прозрачнос- ловую систему в виде трехмерного мира, ти окон в процессе перемещения, парамет- по которому можно перемещаться при ры кривизны относительно рабочего стола помощи мыши и клавиатуры. Чтобы зайти

26 сентября - 29 сентября 2006 года и его вид, панель, цвет, некоторые реакции внутрь каталога, достаточно щелкнуть по на события. Для более глобальных настроек нему мышкой. Музыкальные mp3-файлы потребуется отредактировать конфигураци- показаны как CD (Рис. 3), щелчок по «дис- онный файл. Здесь уже указываются при- ку» приведет к прослушиванию компози- ложения, значки которых будут выводиться ции, аналогичная реакция будет при щелчке в меню, используемые шрифты, количество по видео-файлу или изображению. Кроме виртуальных рабочих столов, стиль окна, Linux и FreeBSD TDFSB портирован также фоновое изображение. Настройке поддает- в BeOS и MorphOS. Текущая версия – 0.0.9, ся практически все. но она, несмотря на такой маленький номер, работает стабильно.

29.09 Вручение Сертификатов ЮНЕСКО / WDU 28.09. Тренинги технологий Linux - мастер-классы 27.09. Технологии Linux - презентации, мастер-классы IBM 26.09. мастер-классы Стенд LinuxLand мастер-классов D16, зал 26.09. Технологии Linux и Open Source в образовании Большой конференц зал ИТО-2006: Технологии Linux и Open Source Файловые менеджеры Немного по-другому выводит инфор- В GNU/Linux существует большое количес- мацию FileCityMap. В котором движение по тво файловых менеджеров, на любой вкус каталогам файловой системы, напомина- и цвет – от традиционных вроде Midnight ет путешествие по городу. Скрипты здесь Commander, до современных, обладающих выглядят знаками «Стоп», архивы – мусор- большим количеством опций Konqueror ными ящиками и т. д. True3D*Shell (см.

Москва, ВВЦ, павильон №69 Москва, ВВЦ, или Krusader. При желании можно доба- ссылку 11) так же является трехмерным

PCnews.ru, Lenta.ru, Linuxcenter.ru, Linux.ru, LinuxRSP.ru, OpenNet.ru журнал “Системный администратор”, IXBT.ru, 3DNews.ru, издательство “Открытые системы”, издательство “СК Пресс”, вить в них и третье измерение. Например, файловым менеджером и чем-то напомина- Информационная поддержка Информационная fsv (3D Visualizer) позволяет ет предыдущую разработку. Пользователь в более интуитивной и наглядной форме может просматривать как локальные, так показать пользователю содержимое фай- и доступные по сети файлы. Кроме того, ловой системы. Для этого он переводит имеется режим робота, позволяющий авто- некоторую информацию о файлах и ката- матизировать просмотр. логах (например, относительные размеры), Проект s3d (см. ссылку 10) представля- которые выводятся затем в 3D виде. На ет трехмерный сетевой дисплейный сервер, разработку fsv студента факультета инфо- рамтики Массачусетского технологическо- (окончание на стр. 111) ТРЕТЬЕ ИЗМЕРЕНИЕ Учебники >> Наши эксперты помогут вам с любым приложением Linux

ПОЧЕМУ GNU/LINUX В ЭТОМ ВЫПУСКЕ МЫ ИЗУЧИМ:

«Linux лучше, чем 72 ПЕРВЫЕ ШАГИ Windows? – Чем Энди Ченнел готов поделиться 84 Думай о главном лучше-то? – Чем- хитростями о том, как сделать чем: чем Windows!». вашу жизнь чуточку быстрее Собственно говоря, а действительно чем? 76 INKSCAPE Особенно в России. Оставьте свой след в истории.. Евгений Балдин Низкой, точнее, ну- переехал на своей визиткой под руководством левой стоимостью Linux и не Дмитрия Кирсанова никого не удивишь. думает возвращаться. Это не является до- 80 OOO BASIC стоинством. Те, кто Запросы к СУБД, отчеты и прочее ожидают увидеть толпу энтузиастов, ко- вместе с OpenOffice.org и Марком торые ринутся решать их проблемы за Бейном так, то есть на халяву, удивятся услышав, НОВАЯ что free значит free as speech (свобода 84 3D-ИГРЫ СЕРИЯ слова), а не free as beer (бесплатное Вначале Пол Хадсон создал небо пиво). Собственно говоря, вполне ожи- и землю. Теперь этому миру нуж- даемо, ведь закон халявы гласит, что её но оружие... не бывает. Так чем лучше? И передовых специфичных только 88 PHP для GNU/Linux исследований нигде не Самая длинная серия в истории ведётся. Информация о научных до- LXF подошла к своему фина- стижениях доступна всем одинаково. лу. Пол Хадсон дает последние Да и сами реализуемые концепции час- наставления то просто повторение уже имевшихся решений. Так чем же лучше? 90 HARDCORE LINUX GNU/Linux – это просто инструмент, Маленький проект: замена ком- 98 QT/KDE, ЧАСТЬ 5 106 MAXIMA, ЧАСТЬ 2 который более совершенен, чем другие мерческой УАТС на Asterisk. Под Андрей Боровский создает прило- Сегодня Тихон Тарнавский рас- имеющиеся на сегодня инструменты по руководством Дэвида Коулсона жение офисного типа. Для офис- скажет о функциях и операторах причине более продвинутой в социаль- 94 PYTHON ДЛЯ ных служащих, решающих офис- Maxima. Эй, не надо прятаться под ном плане модели разработки. Модель, ные задачи на офисных GR. партами! которая используется в GNU/Linux, ПРОФЕССИОНАЛОВ позволяет создавать не просто good Сергей Супрунов поможет вам 102 UNIX API, ЧАСТЬ 3 112 PAW, ЧАСТЬ 2 enough решения, а решения, совершен- написать свой собственный Очереди сообщений есть не толь- Настало время применить получен- ные настолько, насколько это возмож- сервер. ко у Qt и Glib! Андрей Боровский ные знания на практике. Евгений но в текущей ситуации. Здесь хотя бы продолжает изучение механизмов Балдин демонстрирует примене- есть шанс достичь совершенства. IPC в System V. ние PAW в боевых условиях. [email protected]@linuxformat.ru СОВЕТ МЕСЯЦА ЧЕРВОТОЧИНА Скромная команда mkfifo едва ли входит в то идея каналов наверняка покажется помощью mkfifo. всех поступающих в него данных: арсенал даже самых заядлых оболочкофи- вам знакомой. Они используются для Буквосочетание fifo в названии mkfifo fifo_pipe лов. Она создает канал для обмена данными передачи вывода одной команды на команды отражает природу создавае- tail -f fifo_pipe или связи двух различных утилит – своеоб- вход другой. Типичный случай – когда мого канала – «первым пришел – пер- Затем, действуя из другой консоли разную «червоточину» в командной строке команда выводит на экран слишком вым ушел» (first in – first out). Создать или учетной записи (если позволяют Unix. Информация, посылаемая в один много текстовой информации. Канал канал не сложнее, чем набрать mkfifo права доступа), пошлите в канал какие- конец, может быть считана из другого. – до less или до more – позволяет <имя_канала>. Для канала можно так- нибудь данные. Например, наберите Прежде чем мы приступим к ее вам получить эти данные в удобочита- же установить права доступа (параметр echo “This is a test” >> fifo_pipe практическому использованию, давай- емом виде: --mode), как для обычного файла. и переключитесь на прежнюю консоль. те обсудим, где вообще встречаются cat /var/log/messages | less После того, как канал создан, необ- Вы увидите строку «This is test» в выво- каналы. Если вы используете оболочку В данном случае, создается вре- ходимо обеспечить «закачку» данных. де команды tail. не только для того, чтобы пугать друзей менный канал, но ничто не мешает вам Приведем простой пример. Создадим выводом команды cat /dev/random, создать «постоянное соединение» с канал и используем tail -f для вывода

www.linuxformat.ru LXF8(82) АВГУСТ 2006 71 УЧЕБНИК Первые шаги. Экономим время

ПЕРВЫЕ ШАГИ. СЕРИЯ «LINUX ДЛЯ НОВИЧКОВ» Рабочие станции: экономим время Сочетания клавиш, файловые ассоциации и настройка автозагрузки могут сэкономить вам целых... пару минут каждый день. Не отмахивайтесь, утверждает Энди Ченнел, одно мгновенье – и вы уже не сможете жить без этих маленьких хитростей...

Если вы взялись за что-то стоящее, то это также стоит делать настройка ассоциаций для разных типов файлов, когда за определен- МЕСЯЦ быстрее. Или делать как следует. Мы, пользователи Linux, ный программой закреплен список открываемых по умолчанию типов можем разными способами повысить быстродействие ком- документов. Мы также установим формат, в котором OpenOffice.org НАЗАД пьютера; скажем, пересобрать ядро, докупить более мощный процес- сохраняет документы по умолчанию, так что вам не понадобится выби- сор или начать тормозить самим. Но мы не можем обойти вниманием рать его каждый раз. Наконец, можно настроить запуск программ так, Я дал вам несколько советов по небольшие изменения в настройках, которые экономят всего несколько что любимое приложение будет запускаться без дополнительных усилий. безопасной работе с Firefox. секунд, но за день, неделю или всю жизнь они сэкономят вам достаточ- Эти хитрости дают заметный результат и повышают ваши навыки вла- но лишнего времени для игры в Mario Kart: Double Dash или загорания. дения компьютером. Я считаю, что через некоторое время вы заметите В этой статье я расскажу вам о небольших приемах, таких как отдачу и начнете пользоваться ими ежедневно.

ЧАСТЬ 1 – ОТКРЫВАЕМ ДОКУМЕНТЫ

Разработчики KDE и GNOME любезно составили список типов по маленькой стрелке напротив имени группы и в появившемся списке файлов и связанных с ними приложений, которые мы используем в выберите AbiWord. В зависимости от настроек KDE, программа может Linux. Однако бывают случаи, когда вас не устраивают стандартные называться «Word Processor» (для того чтобы изменить отображаемое настройки. На наше счастье, обе графические среды позволяют внести имя, смотрите врезку «Быстрые подсказки» на последней странице ста- нужные исправления. тьи). По нажатию кнопки ОК документ будет открыт для редактирования Начнем с KDE. В этом примере у меня есть свежая установка SUSE в AbiWord. Linux с KDE 3.5, но какой-то умник забыл поставить во время установки Но не торопитесь! Нам нужно убедиться в том, что этот тип доку- офисные программы. Установка AbiWord решает эту проблему, и теперь мента всегда открывается в выбранном приложении. Поставьте флажок я вновь могу писать статью для LXF. Тем не менее, так как изначально в нижней части окна на пункте «Запомнить связь с приложением для в SUSE не было этой программы, для файлов документов не были уста- этого файла» и нажмите ОК. Только теперь AbiWord станет стандартным новлены и нужные ассоциации. Это легко проверить. приложением для этого типа файлов. Найдите какой-нибудь документ; мне, к примеру, нужно открыть Если вы закроете теперь AbiWord и щелкнете по файлу правой файл OOo Writer. Родные документы AbiWord – c расширениями .abw кнопкой мыши еще раз, вы заметите, что контекстно-зависимое меню и .abt – открываются простым двойным щелчком, однако другие типы «Открыть с помощью» пополнилось новым пунктом – «Открыть с помо- документов, включая .odt, еще не «привязаны» к нужной программе. щью AbiWord/Word processor». Так как этот пункт выбран по умолчанию, Чтобы исправить это, щелкнете правой кнопкой мыши по файлу и выбе- при двойном щелчке по файлу будет запускаться именно AbiWord. рите «Открыть в > Другое приложение», после чего появится диалог В какой-то момент вам может захотеться изменить привязку фай- выбора программ. В основной части окна будет список программ, соот- лов; например, если вы установили OpenOffice.org и пристрастились к ветствующий структуре К-меню в KDE. Найдите группу Офис, щелкнете работе с odt-файлами именно в нем.

72 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Первые шаги. Экономим время

нужный пункт при помощи кнопки-переключателя, я могу задать стан- дартную программу для открытия документов. Кроме этого, у вас имеется возможность редактировать состав списка программ при помощи кнопок «Добавить» (Add) и «Удалить» (Remove), которые располагаются в нижней части диалогового окна. Это может понадобиться в том случае, когда вы установили скачанную программу для просмотра графики вручную (а не через менеджер паке- тов Ubuntu) и захотели сделать ее стандартной для png-файлов. Для этого вам вначале понадобится включить эту программу в список стан- дартных приложений для графических файлов. Это можно сделать и через контекстное меню, вызываемое при правом щелчке мыши, выбрав пункт «Open With Other Application» (Открыть в другом приложе- нии). Найдите приложение в списке, или укажите путь к исполняемому файлу в браузере – теперь программа доступна в числе стандартных приложений. Прекрасно. В KDE реализован альтернативный способ редактирования файло- вых ассоциаций. Для этого можно открыть Центр управления и найти пункт «Компоненты KDE > Привязки файлов». Этот способ отнимет у вас чуть больше сил, потому что вам придется «прочесывать» весь гигантский список типов файлов, сгруппированных по тематическому принципу – Звук, Изображения, Текст. Найдите нужный тип и задайте команду, которая будет выполняться при двойном щелчке по файлу. Это делается так. Отыщите нужный шаблон расширения файла в Поставьте флажок, и AbiWord будет всегда запускаться при списке или добавьте его вручную при помощи кнопки «Добавить» щелчке по odt-документам (Add). Затем найдите в правой части окна раздел Application Preference Order (Порядок запускаемых приложений), нажмите В таком случае, повторите описанную выше процедуру, выбрав кнопку «Добавить» (Add) и введите команду, которая запустит нужную другую программу и не забыв отметить флажком постоянную привязку. программу. Добавленное приложение можно двигать вверх или вниз, Теперь документы будут открываться уже в новой программе. меняя его положение в списке. Как это делается в GNOME Учитывая схожесть разных графических оболочек, не удивляйтесь, что это действие будет выглядеть почти также в GNOME, хотя кое-что здесь реализовано более удобно (например, когда для открытия фай- ла доступны два приложения, правый щелчок мыши позволит вам выбрать сразу же одно из них), а кое-что – неуклюже (настроить прило- жение по умолчанию здесь не так просто, как в KDE). Приведем пример: допустим, что SUSE мне надоел и я решил поп- робовать Ubuntu. По умолчанию в состав Ubuntu Dapper Drake входит Gnome 2.14 и OpenOffice.org 2.0, который призван открывать разнооб- разные офисные документы. Тем не менее, привыкнув к AbiWord, я хочу сделать так, чтобы после его установки я мог бы щелкнуть в Nautilus правой кнопкой мыши по файлу и выбрать эту программу. Обратите внимание, что по двойному щелчку мой файл откроется в ООо, поэтому мне нужно именно контекстное меню с выбором приложений. Если мы откроем файл в AbiWord через контекстное меню, этот выбор не будет сохранен и файл откроется в данном приложении только в этот раз. Для того, чтобы назначить приложение по умолчанию, зай- дите в свойства файла (Options) и перейдите на вкладку «Открывать в...» (Open with...). Вы увидите список тех приложений, которые ассоциированы с данным типом файлов. В моем случае для файлов с расширением .doc имелось два приложения – AbiWord и OОo. Отметив Диалог выбора программ в GNOME опрятен и ничем не перегружен.

ЧАСТЬ 2 – ЗАПУСКАЕМ ПРОГРАММЫ

Большинство людей пользуется одними и теми же приложени- Hidden Files (Вид > Показывать скрытые файлы) или нажав Ctrl+H ями изо дня в день, поэтому было бы логичнее запускать их автоматичес- когда в Konqueror открыта ваша домашняя папка. ки при утренней загрузке компьютера, когда вы готовите себе кофе. Любое приложение или ссылка, помещенные в папку автозагруз- В KDE вам нужно будет отыскать папку Autostart, куда помещают- ки, будут автоматически запускаться при старте KDE, поэтому вам не ся все ссылки на автозагрузку. В большинстве дистрибутивов эта папка составит труда щелкнув по любому месту в папке правой кнопкой мыши, имеет адрес /home/имя_пользователя/.kde/Autostart. Вы навер- выбрать Create New > Link To Application (Создать > Ссылку на но уже заметили, что в вашей домашней директории не видно папки с приложение) и ввести команду запуска нужной программы. Если у

именем .kde. Это происходит из-за точки (.), стоящей в начале имени вас есть привычка посещать определенный сайт в начале работы, вы и означающей, что данная папка является скрытой. Вам понадобится также можете создать ссылку на URL сайта, выбрав пункт Create New >> включить отображение скрытых файлов, выбрав пункт View > Show > Link To Location (Создать > Ссылку на местоположение). Таким

www.linuxformat.ru LXF8(82) АВГУСТ 2006 73 УЧЕБНИК Первые шаги. Экономим время

образом Konqueror будет открывать нужный вам сайт при загрузке >> >> компьютера. Если по какой-то причине папки .kde/Autostart нет в вашей сис- теме, это означает, что ее расположение было изменено в настройках путей. Не беспокойтесь, все можно поправить. Откройте Центр управле- ния и перейдите в раздел System Administration > Paths (Системное администрирование > Пути). Здесь вы можете указать путь к папке автозагрузки или хотя бы выяснить, где она находится в данный момент. Если вам захочется упростить доступ к автозагрузке (и избавиться от воз- ни со скрытыми папками), вам достаточно создать ее в вашей домашней директории, к примеру, под именем Start Up, и прописать путь к ней в указанном разделе Центра управления. Теперь вы можете просто пере- таскивать ссылки из К-меню в окно автозагрузки и в появившемся окне Автозагрузка в GNOME может больше, чем кажется. Эта выбора указать Link To Application (Ссылка на приложение). команда запустит Firefox с двумя сайтами в разных вкладках. При следующем запуске KDE ваши программы из папки автозагруз- ки будут запущены автоматически [имейте в виду: каждое такое прило- жение увеличивает время запуска системы, – прим. ред.]. используйте такие сочетания клавиш, которые уже назначены действи- ям или командам в ОС. Например, если вы настроите запуск AbiWord Автоматический переход на web-адреса при нажатии Ctrl+C, то это заблокирует копирование выделенного Автозагрузка в GNOME реализована в виде небольшой программы, а фрагмента в буфер обмена. Более безопасными сочетаниями являются не папки, и вам будет несложно в ней разобраться. Эта утилита нахо- комбинации Alt/Ctrl с цифровыми клавишами, поэтому если вы обычно дится в System > Preferences > Sessions (Система > Параметры используете три программы – скажем, текстовый процессор, браузер и > Сеансы) на вкладке Start Up (Запуск при старте). Для того, чтобы почтовую программу, то есть смысл назначить им легко запоминаемые добавить в список, к примеру, Firefox, нажмите кнопку Add (Добавить) комбинации Ctrl+1, +2 и +3 соответственно. и наберите в появившемся окне команду firefox. Самое приятное состо- В KDE откройте Центр управления и перейдите в раздел Desktop ит в том, что вы можете указывать здесь совершенно любые команды. > Panels > Menu (Рабочий стол > Панели > Меню). Щелкнете по Если вы, например, хотите, чтобы Firefox открывал сайт LXF при каждой кнопке Edit K Menu (Редактировать К-меню) в низу раздела и найдите загрузке GNOME, вам понадобится всего одна команда: настройки клавиатурных комбинаций для запуска программ. После того, firefox “http://www.linuxformat.ru”. как вы все настроите, не забудьте сохраниться (File > Save), иначе изме- Более того, вы можете автоматически запускать Firefox с нескольки- нения будут потеряны. ми вкладками, указав несколько web-адресов подряд, каждый в отде- Редактировать меню в GNOME вы можете при помощи утили- льных кавычках. Да, и не забудьте поставить одинарный пробел между ты Alacarte Menu Editor, которую вы найдете в разделе Applications > закрывающей кавычкой одного и открывающей кавычкой другого сайта. Accessories (Приложения > Аксессуары). Однако разработчики похоже Следующая команда откроет Firefox с сайтом LXF Russia в первой вклад- не спешат разрешать пользователям создавать свои клавиатурные ке, и LXF UK во второй: сокращения. Конечно, это не значит, что их вовсе нельзя создавать, Firefox “http://www.linuxformat.ru” “ просто нужно немного поусердствовать. http://www.linuxformat.co.uk” Для того, чтобы настроить запуск AbiWord по нажатию Ctrl+1, нам понадобится Редактор Gconf (Gconf-Editor). Здесь вы можете поиг- Полезные сочетания клавиш рать с системными настройками GNOME, поэтому будьте осторожны. Вы можете запускать программы мгновенно, если привяжите их к Откройте терминал (Application > Accessories > Terminal) и наберите определенным клавиатурным комбинациям. Но будьте внимательны: не gconf-editor, после чего откроется окно редактора Gсonf. Используйте небольшие стрелки напротив разделов и разверните их дерево до пун- кта Apps > Metacity > Keybinding_command, после чего щелкнете два раза по Command_1. В качестве значения укажите команду, которая запускает вашу программу (ее можно выяснить, щелкнув правой кноп- кой мыши по ярлыку программы в Alacarte Menu Editor), и нажмите ОК. Не выходя из ветки Metacity, выделите пункт Global_keybindings и найдите в списке ключ Run_command_1. Щелкнете по нему два раза и в появившемся окне задайте комбинацию клавиш. Для Ctrl+1 необхо- димо набрать 1 именно так, в треугольных скобках, для того, чтобы компьютер воспринял это именно как специальную клавишу, а не слово “Control”. Теперь можно нажать ОК, закрыть GСоnf и проверить работу новой «горячей клавиши». Скопируйте приложения сюда для их ... или сделайте любую папку в вашем автозапуска... компьютере местом для автозагрузки.

ЧАСТЬ 3 – СОХРАНЯЕМ ДОКУМЕНТЫ

Нет сомнений, что OpenOffice.org входит в зенит своей славы никаких проблем, так как офисный пакет имеет хорошие фильтры для по мере того, как все большее число людей рассматривают его в роли обработки .doc, .xls, .ppt и других закрытых форматов. Другое дело с альтернативы дорогому MS Office, пользователи которого также обес- документами, созданными в ООо. Вы должны осознавать, что пользова- пекоены моральными и правовыми проблемами, связанными с пират- тель, который получит ваш ods-файл, может вообще не понять, что это ством. Но и в нашей бочке отборного меда закралась ложка дегтя: пока за спам он получил. что пользователей ООо еще слишком мало, и пересылаемые по почте Решение этой проблемы – выбрать более универсальный открытый документы часто приходится открывать сторонними программами. Для формат или, стиснув зубы, пойти «в массы» с проприетарным форма- пользователя ООо файл в «неродном» формате обычно не вызывает том. Для того, чтобы сэкономить время и не мучаться с выбором фор-

74 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Первые шаги. Экономим время

мата при каждом сохранении документа, мы можем заранее определить ООо может автоматически для каждого приложения тот формат, который будет использоваться по сохранять файлы в умолчанию. разнообразных форматах. Начните с окна настроек Tools > Options (Инструменты > Настройки) и перейдите в раздел Load/Save – General (Загрузка/Сохранение – Основные). В нижней части окна вы заметите пару выпадающих списков для выбора формата файлов по умолчанию. Список слева предлагает выбрать тип документа – текст, таблица, презентация и так далее, в то время как список справа является контекстно-зависимым и предлагает вам ряд соответствующих форматов. Если вы плотно общаетесь с пользователями Excel, то для электрон- ных таблиц есть смысл задать формат Microsoft Excel 2003 XML, кото- рый убережёт вас от проблем совместимости с коллегами. Выбираем формат файла Выбрать правильный формат для ваших документов очень важно. Варианты, о которых речь пойдет ниже, отражают моё личное мнение, • Презентации В ООо вы найдете всего два формата для презента- однако я постарался предложить альтернативы закрытым форматам ций: Impress или Powerpoint. Если вы не уверены в том, что на каждом везде, где это возможно. Тем не менее, иногда нам приходится отступать компьютере, где вы будете открывать свою презентацию, установлен от своих принципов и использовать проприетарные форматы в тех слу- OpenOffice.org, используйте формат РРТ. Тем не менее, если вам этот чаях, когда это требуется формой документа или, скажем, ВУЗом. формат вообще не нужен, не забывайте, что в Impress имеется впечат- • Текстовые документы ООо и AbiWord неплохо открывают doc-фай- ляющий набор фильтров для экспорта в HTML, Flash, PDF и стандартные лы, чего нельзя сказать о пакете KОffice, где все еще далеко от идеала. графические форматы. При экспорте в статические форматы, такие как Программы, работающие через web, такие как Writely (www.writely. JPEG вы потеряете эффекты перехода между слайдами, но зато сами com) и ThinkFree Office (www.thinkfree.com) тоже умеют открывать слайды будут гарантированно верно отображаться на любом компьюте- и сохранять файлы в формате DOC вполне прилично. В случае, когда ре [при этом слайды в формате JPEG могут выглядеть «неряшливо», так необоходимо гарантировать одинаковый внешний вид документа на как он предполагает сжатие с потерями, – прим.ред.]. разных компьютерах и заказчику не понадобится править файл, выби- • Фотоснимки Фотографии не вызывают таких проблем, как другие райте PDF. Тем не менее, наиболее универсальным выбором будет Rich типы документов из-за того, что вся отрасль цифровых камер и компью- Text Format (.rtf), который поддерживает несложные таблицы, цветовое теров договорилась о поддержке JPEG. Для лучшего качества вы также выделение, различные начертания шрифтов (полужирное, курсив) и можете использовать форматы PNG и TIFF, хотя tif-файлы будут очень выравнивание текста. Перечисленные форматы открываются в боль- большими по размеру. шинстве текстовых процессоров и имеют обычно меньший размер, чем • Рисунки и иллюстрации Большая часть приложений для работы с файлы других форматов. векторной графикой стандартно использует формат EPS, разработанный • Электронные таблицы Для тех счетоводов, которым важно компанией Adobe. Но времена меняются, и многие программы теперь наладить между собой общение, у нас есть пара форматов на выбор. поддерживают более современный стандарт SVG. Если вы пересылаете Первый предлагает вам воспользоваться одной из версий документа векторный рисунок для дальнейшей правки – нет ничего лучше EPS. Microsoft Excel, в то время как второй представляет собой текстовой Если же правка не требуется, вполне подойдёт и PDF. вариант CSV(Comma-Separated Values, значения, разделенные запяты- Как и большинство вещей в мире Linux, приложение и формат фай- ми). Последний вариант хорошо годится для простых числовых таблиц, лов, с которыми вы работаете, зависят от того, какие правила игры вы но как только ваш документ начнет усложняться – а вы ведь не можете установите и с кем будете иметь дело. Конечно, идеи и соображения в заставить коллег перейти на открытые программы – лучшим выбором этой статье не приведут к мировым волнениям, но зато сэкономленные оказывается формат Excel. несколько минут позволили мне успеть проиграть в Mario Kart. LXF

БЫСТРЫЕ ПОДСКАЗКИ

Многие поставщики KDE-дистрибутивов стараются, ради нашего с вами неры интерфейсов вообще оставляют одни описания. Этот подход удобства, сделать так, чтобы в К-меню отображались не просто назва- хорош до тех пор, пока у вас один текстовый процессор, один медиа- ния программ, которые могут ничего не говорить пользователю (что плейер и так далее, но когда вы устанавливаете дополнительные прило- такое amaroK, например?), но и их краткие описания. Некоторые дизай- жения со схожими функциями, описания становятся проблемой. Но выход есть! Найдите в К-меню Центр управления (у него, к счастью, имя и описа- ние совпадают) и перейдите в раздел Рабочий стол > Панели. В гори- зонтальном ряду вкладок выберите «Меню». В появившемся разделе будет много настроек, связанных с удобством использования, поэтому просмотрите их внимательно. В главном окне, к примеру, можно настроить быстрый доступ к закладкам в Konqueror, к недавним доку- ментам и сетевым папкам. В нижней части окна можно настроить ЧЕРЕЗ поведение К-меню, которое может запоминать либо наиболее часто запускаемые программы, либо недавно запущенные. МЕСЯЦ Нас, тем временем, интересует раздел Menu Item Format (Формат Дети и компьютеры: где найти панацею? элемента меню). Здесь вам предлагается четыре варианта: первые два Мы посмотрим, как обезопасить ребят и отдают приоритет названию программы (идеально, если вы ориентиру- технику друг от друга. етесь в них), а другие два – её описанию. Вы заметите, что для каждой программы уже имеются как название, так и описание; окно настройки лишь переключает отображаемые в меню элементы. KDE позволяет настроить главное меню на свой вкус.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 75 УЧЕБНИК Inkscape

ПРАКТИЧЕСКИЕ ЗАНЯТИЯ ВЕКТОРНАЯ ГРАФИКА Inkscape Создание визитки

ЧАСТЬ 2 Дмитрий Кирсанов представляет простой, но поучительный дизайнерский проект – создание визитной карточки!

При всем многообразии электронных способов коммуникации, замысловатыми кистями, а на куда более простые вещи – перемещение МЕСЯЦ изобретенных за последние 20 лет, визитная карточка по-пре- объектов, масштабирование, пробу различных шрифтов и расцветок жнему популярна. Это – ваше лицо, послание в бутылке, и т. д. Здесь-то и покажет себя Inkscape – со своим ненавязчивым НАЗАД маленькая презентация того, что вы сами считаете главным в себе. Не интерфейсом, многочисленными клавиатурными комбинациями и

Мы учились рисовать при удивительно, что оформлению крошечного картонного квадратика уде- общей предупредительностью. помощи инструмента ляется так много внимания. Как в японском трехстишии, здесь у вас «Каллиграфическое перо» крайне ограниченное пространство для самовыражения. Стань художником (Calligraphic pen). Учитывая все это – простоту, ограниченное пространство и необхо- Предлагаемое руководство описывает два разных способа оформления димость стильного оформления, – создание визитной карточки может карточек, но я не предлагаю вам идти за мной след в след (разве что стать превосходным экзаменом для векторного редактора. Inkscape для изучения технических тонкостей). Если вы планируете создать подойдет для этого как нельзя лучше. Единственное его слабое место – реальную визитную карточку, начните с того, чтобы найти и просмотреть это получение готовых к печати выходных файлов для сложных изобра- как можно больше примеров хорошо сделанных карточек. Затем открой- жений. Но и здесь есть некоторые обходные пути, которые мы с вами те Inkscape и поиграйте с формами, шрифтами и цветами, стараясь изучим на этом занятии. соединить лучшее из найденного с вашими собственными идеями. Inkscape пока не может соревноваться с лучшими коммерческими Я дизайнер, так что мои примеры могут показаться вам несколько редакторами вроде Adobe Illustrator или Corel Draw по количеству экстравагантными – вероятно, ваша карточка будет выглядеть более команд и инструментов. Но в повседневной дизайнерской работе основ- традиционно. Тем не менее, и эти примеры могут быть поучительны, ное время уходит не на отладку цветовых профилей или рисование если наблюдать весь процесс от начала до конца. Итак, приступим.

76 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Inkscape

1 2

Первые шаги Выбираем шрифт Создайте новый документ, выбрав шаблон под названием «Business Следующий логический шаг – выбор шрифта (шрифтов) для ваших тек- Card 90x50mm» в меню File > New (Файл > Создать) (А). Если вам стовых объектов. Выбранный шрифт сразу задаст общий стиль компо- необходим другой размер, то его всегда можно изменить в диалоговом зиции. После выбора шрифта для всех текстовых строк (А) попробуйте окне Document Preferences (Параметры документа) – Ctrl+Shift+D. изменить их относительные размеры (В) инструментом Selector. Затем переключитесь в инструмент Текст и создайте текстовые объекты Смотрятся ли рядом строки одного шрифта, но разных размеров? Если для каждого элемента – имя, должность, адрес, номер телефона и т.д. нет, можно попробовать разные шрифты (но в любом случае не стоит Все они должны быть независимыми объектами (щелкните и наберите использовать больше двух шрифтов на одной карточке). текст для каждой строки отдельно), потому что нам придется двигать и трансформировать их. 3 4

Выравниваем элементы Конструктивизм Создание визитной карточки для одного человека (а не шаблона для Давайте попробуем теперь выделить все (Ctrl+A) и немного повернуть многих карточек) хорошо тем, что можно размещать и выравнивать тек- (один раз нажав [). Намного лучше! Что же это мне напоминает? Здесь стовые объекты точно, не оставляя дополнительного места для имен и определенно есть что-то от конструктивизма – недолговечного, но вли- адресов разной длины. Я разложил компоненты адреса вокруг своего ятельного стиля, который был популярен в 1920-х годах. Конструктивисты имени, выровняв их по нескольким невидимым линиям. Получилась любили сыграть на контрасте шрифтов и пустить текст под углом.

асимметричная, но тесно увязанная композиция. Давайте завершим композицию тремя черными уголками и большим красным кругом в центре: конструктивисты любили простые геометри- >> ческие фигуры и сочетание черного с красным.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 77

УЧЕБНИК Inkscape >> 5 6

Другие источники вдохновения Иной подход Наша первая визитная карточка в основном готова. Так получилось, что Для второй карточки попробуем совсем другой подход: стилизованные ее оформление состоит по большей части из текстовых строк, а графи- инициалы. Инструментом Каллиграфическое перо (угол 90, фиксация ческие элементы послужили лишь дополнением к основному замыслу. 1.0) я нарисовал вензель из букв «D» и «K». Когда мне наконец удалось Но это не единственный возможный подход. Для создания корпоратив- придать буквам более-менее правильные очертания, результат выглядел ной визитной карточки естественной отправной точкой станет логотип неплохо, но довольно топорно (А). Чтобы пригладить рисунок, объеди- компании. Если вы хотите сделать карточку более индивидуальной, поп- ним все штрихи в один контур (Ctrl+K) и несколько раз применим упро- робуйте оттрассировать свою фотографию (Path > Trace Bitmap). щение (Ctrl+L), втяжку и растяжку (Alt+), Alt+() (В). Бесплатную графику можно также найти на http://openclipart.org.

7 8

Взлохмачиваем буквы Рассаживаемся по местам Теперь буквы выглядят более естественно – но их можно сделать еще Пожалуй, это произведение заслуживает центрального места на карто- интереснее. Я взял более тонкое перо, до отказа увеличил параметр чке, а все остальное можно симметрично расположить вокруг него (А). Я Tremor (Дрожь) – это новая функция в Inkscape 0.44 – и от души порез- взял простой курсивный, очень легкий шрифт без засечек, чтобы он не вился вокруг вензеля своим планшетным пером. Первый результат отвлекал внимания от вензеля в центре. Однако горизонтальное положе- выглядел не очень вдохновляюще (А) – но только потому, что я забыл ние в данном случае не лучший вариант – тексту в нем тесно. Поворот проделать обычные магические пассы «упрощение – втяжка – растяж- на 90 градусов (Ctrl+[) дает больше места для вензеля, если отбить имя ка» (В). и адрес к самому краю (В).

78 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Inkscape

9 10 ПОДСКАЗКИ • Чтобы Inkscape увидел новый шрифт, просто инсталлируйте этот шрифт в вашей ОС и пере- запустите Inkscape. Новый шрифт появится в диалоговом окне Text And Font (Текст и Шрифт). • Большинство текстовых объ- ектов можно улучшить настрой- кой трекинга (стандартного расстояния между буквами) и кернинга (расстояния между отдельными парами букв). В инструменте Текст нажимайте Alt+< и Alt+> для регулировки трекинга в выделении и Alt+стрелки для изменения кер- нинга под текстовым курсо- ром. • Если вы хотите конвертиро- вать растровый выходной файл в формат CMYK TIFF для печа- ти, это можно сделать с помо- Добавляем градиенты Добавляем текстуру щью только свободных про- Теперь попробуем добавить фоновый градиент. Стандартный градиент Можно сделать карточку еще интереснее, разбросав по ней маленькие грамм. Сначала конвертируйте от непрозрачности к прозрачности некоторого цвета (например, синего, полупрозрачные каллиграфические штрихи (А, увеличено). Другой при- PNG в RGB TIFF (с помощью А) выглядит довольно грубо. Но есть одна уловка, значительно улучша- ем – сетка из полупрозрачных линий. Начертите узкий горизонтальный Gimp или ImageMagick), затем ющая вид градиента на белом фоне: сделайте прозрачную сторону гра- прямоугольник белого цвета, затем откройте диалоговое окно Tile воспользуйтесь командой tifficc диента белой, а не синей (В). На (С) видно, как я добавил четыре несим- Clones (Расположение клонов, В) и создайте узор с симметрией Р1, из библиотеки LittleCMS (www. littlecms.com) для конвертации метричных прямоугольника с градиентами по краям карточки для при- 100 рядов в 1 колонку, с 100% вертикальным сдвигом между рядами. его в CMYK TIFF. Для этого дания ей мягкой, естественной выпуклости. Сгруппируйте прямоугольники и поместите их поверх градиента, но под преобразования вам понадо- вензелем и текстом. Прозрачность отрегулируйте по вкусу (С). бится ICC-профиль вашего выходного устройства. 11 12

EPS экспорт Растровый экспорт ЧЕРЕЗ Теперь у нас есть два образца визитных карточек – но как же распеча- Вторую карточку, однако, мы не сможем распечатать через PostScript. тать их? Конструктивистский вариант не содержит ни градиентов, ни Inkscape умеет сохранять PostScript с градиентами, но только если они МЕСЯЦ прозрачности; это просто набор плоских непрозрачных форм, поэтому не содержат прозрачности. Хотя в версии 0.44 есть экспорт в PDF с под- Продолжая оттачивать мастерство, он может быть без потерь сохранен в форматах PS, EPS (А) или прямо держкой прозрачности, для печати этот формат почти бесполезен. мы создадим настоящий анимированный баннер в отпечатан на PostScript-принтере (В). В диалоговом окне параметров EPS Поэтому самый надежный способ для второй карточки – экспорт в рас- Inkscape. (С) включите параметры Convert Text To Path (Конвертировать текст тровый формат высокого разрешения (А). Полученный PNG-файл мож- Не пропустите! в линии) и Make Bounding Box Around Full Page (Ограничить но конвертировать в CMYK TIFF и послать в принт-бюро или же распеча- область пределами страницы). тать на настольном принтере с помощью растрового редактора вроде Gimp. LXF

www.linuxformat.ru LXF8(82) АВГУСТ 2006 79 УЧЕБНИК OOo Basic: базы данных PHOTOGRAPH BY STEFAN RAY STEFAN PHOTOGRAPH BY

АВТОМАТИЗАЦИЯ OPENOFFICE.ORG СЕРИЯ: «СЦЕНАРИИ НА BASIC» НА ДИСКЕ • Код из учебника OOo Basic Работа с базой данных ЧАСТЬ 3 Очередной шанс поумнеть при помощи Марка Бэйна – на этот раз его макросы и советы по работе с базами данных помогут вам запускать запросы, создавать отчеты в OpenOffice.org и вести учет ваших книг и

До чего ж я люблю OpenOffice.org – особенно когда исполь- легко». Затем я предположил бы, что вам нужен сервер баз данных – МЕСЯЦ зую его вместе с OOo Basic. Не только потому, что он высво- так ведь можно использовать любой старый компьютер, подсоединить бождает меня из клещей ProprietarySoft, Inc – больше потому, его к сети и затем установить Debian (если у вас нет второго компьютера, НАЗАД что он действительно хорош. В предыдущих выпусках мы увидели, как запустите сервер на своей машине). Вы сами можете создать минималь- Мы занимались изучением OOo легко можно манипулировать текстовыми документами и таблицами с ный загрузочный диск с www.debian.org, вставить в привод, перезаг- Basic в табличном процессоре помощью OOo Basic. На сей раз –посмотрим, как извлекать информа- рузиться и следовать инструкциям. Об установке дополнительного про- Calc. цию из базы данных. граммного обеспечения (рабочего стола, файл-сервера, web-сервера и Главное, надо быть как можно ленивее. Представьте, например, что т.д.) беспокоиться нечего: достаточно необходимого минимума. вы хотите подготовить счет для ужасно популярного Linux-журнала, в Тут я велел бы вам превратить ваш компьютер в сервер баз данных который вы пописываете. Зачем терять время, перепечатывая то, что у с помощью команды apt-get install mysql-server, а затем отредактиро- вас уже хранится? Это руководство даст вам инструменты, пресекающие вать файл /etc/mysql/my.cnf, закомментировав строку bind-address лишнюю трату времени, а заодно, естественно, позволит насладиться = 127.0.0.1 (чтоб она выглядела как #bind-address = 127.0.0.1). Это исследованием Unix. позволит подключаться к серверу с любого компьютера вашей сети. Вам, небось, захотелось бы создать и базу данных, и пользователя Ингредиент №1: сервер базы данных для доступа к ней. Тогда бы я посоветовал сделать следующее: Начинать – так с начала. Раз уж это руководство по макросам для mysql -uroot mysql извлечения информации из базы данных, вам понадобится база данных. set password for ‘root’@’localhost’ = password(‘put your own password Однако я не намерен рассказывать о ее установке: это выходит за рамки here’); руководства. Конечно, если бы вы объявили, что базы данных у вас нет create database accounts; и вы даже не знаете, с чего начать, то я ответил бы: «Без паники, это grant all privileges on accounts.* to ‘your user’@’%’

80 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК OOo Basic: базы данных

identified by ‘your user password’; exit; Наконец, я предложил бы задать вашему новому серверу статичес- кий IP-адрес, отредактировав файл /etc/network/interfaces так, что- бы конец файла был похож на следующее: #iface eth0 inet dhcp iface eth0 inet static address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.1 В этом пункте я бы отметил, что вам пора перегрузиться и зайти на компьютер, где у вас стоит OpenOffice.org. Но так как наше руководство исключительно про OOo Basic, а не про создание баз данных, всего этого я делать не буду. surname varchar(50), firstname varchar(50), Надо заранее знать, к какой базе данных подключаться из Доступ к базе данных address1 varchar(50), address2 varchar(50), city varchar(50), county OpenOffice.org. OpenOffice.org пока не запускайте. Чтобы облегчить себе жизнь (для varchar(50), того и придуманы макросы), воспользуемся UnixODBC, это API для country varchar(50), postcode varchar(50),primary key (id)); доступа к источникам данных, который избавит нас от трудностей созда- create table accounts.invoice (id int auto_increment,customer_id int, ния соединений к серверу и базам данных – протоколы, посылка сиг- sent_date date,paid_date date,primary key (id)); налов и все такое прочее. Самое сложное, что предстоит сделать – это create table accounts.item (id int auto_increment,customer_id int, установить UnixODBC и его библиотеки MySQL на машину, где вы будете invoice_id int,title varchar(50),details varchar(255),value double, использовать OOo. На Debian это делается всего-навсего через primary key (id)); apt-get install unixodbc insert into accounts.customer apt-get install libmyodbc (surname,firstname,address1, address2,city,county,country,postcode) Очевидно, если у вас другой дистрибутив, то придётся проверить values для него процесс установки – взгляните на UnixODBC на странице www. (‘Smith’,’John’,’The Big House’,’1 The Street’,’Thistown’,’Thisshire’,’UK’,’TH unixODBC.org. Когда вы установите UnixODBC, понадобятся еще две 1 1HT’); вещи. Первое – отредактировать /etc/hosts так, чтобы он включал insert into accounts.customer ссылку на сервер вашей базы данных, то есть 192.168.1.3 acamas. (surname,firstname,address1, address2,city,county,country,postcode) Второе – отредактировать /etc/odbc.ini, чтобы он включал примерно values следующее: (‘Jones’,’Mary’,’Building A’,’Industrial Est.’,’Hereton’,’Herehire’,’UK’,’HE1 (accounts) 1EH’); Description = MySQL db test insert into accounts.item (customer_id,title,value) values (1,’A fine piece Driver = MySQL of work’,500); Server = acamas insert into accounts.item (customer_id,title,value) values (1,’A great Database = accounts job’,500); Port = 3306 insert into accounts.item (customer_id,title,value) values (2,’Day 1’,1500); Теперь – глубокий вдох, сосчитать до пяти, медленный выдох, и insert into accounts.item (customer_id,title,value) values (2,’Day 2’,1600); готово дело: нет больше командных строк. Кого это в восторг не приводит, пусть возьмёт форму Data Source Administration (Управление источникам данных), перейдёт на вкладку Разборки с базой данных Tables (Таблицы) и нажмёт на кнопку New Table Design (Создать новую Откройте OpenOffice.org. Тип документа безразличен; пусть, например, таблицу). Можете воспользоваться формой Table Design (Создание это будет документ Writer. В меню Tools [Сервис, иногда нужный вам таблицы), с её помощью таблицы создавать легко. пункт оказывается в меню View (Вид), – прим.ред.] среди подменю име- ется одно под названием Data Sources (Источники данных). Кликните Работа с новыми таблицами на нем, и вы увидите форму Data Source Administration (Управление Мы извели довольно много времени на разборки с базой данных – без источникам данных). её правильной работы не обойтись, а все остальное само встанет на свои С ней все просто: нажмите New Data Source (Новый источник дан- места. Теперь можно заняться нашим первым макросом для работы с ных) и установите тип базы MySQL на вкладке General (Общие). Затем базой данных. Если вы следовали руководству прошлого выпуска, то перейдите на вкладку MySQL, добавьте имя базы данных в Data Source привыкли к функции OOo CreateUnoService (вы ведь практиковались, URL (Адрес источника данных) и введите имя пользователя (не забудьте не так ли?). Мы снова собираемся использовать ее здесь, на сей раз создать пустую базу данных и пользователя, прежде чем получать к ней для доступа к RowSet. Это имя OOo для набора записей, оно позволяет доступ из OOo). Далее нажмите на закладку Tables (Таблицы). Там ниче- выполнять запросы к базе данных и получать от нее информацию. го не будет (потому что никаких таблиц вы еще не создали). Угадайте, RowSet = createUnoService(“com.sun.star.sdb.RowSet”) что мы теперь сделаем? Правильно, рванём в пивбар, с вас причитается. Осталось только сказать RowSet о базе данных, к которой вы Нет? Ладно, оставим это на потом: время создавать данные. хотите подключиться (то есть к той, что вы установили в Data Source Если вы любитель командной строки (должен сознаться, что я из Administration (Управление источникам данных)): сообщите имя поль- них), вернитесь на сервер с базой данных, зайдите в базу и создайте зователя, пароль и запрос, который хотите выполнить. RowSet получит таблицы. Не забывайте, что вы можете подключиться прямо с текущей результат запроса и представит его вам. машины. Поэтому вы, видимо, захотите сделать следующее: bainm@hector:~/ooobasic3$ mysql -hacamas -ubainm -pmypassword sub main accounts sql1

mysql > create database accounts; end sub create table accounts.customer (id int auto_increment, Sub sql1 >>

www.linuxformat.ru LXF8(82) АВГУСТ 2006 81 УЧЕБНИК OOo Basic: базы данных

Dim RowSet «СВОИ Ж RowSet = createUnoService(“com.sun.star.sdb.RowSet”) БЕЗУМСТВА ИХ RowSet.DataSourceName = “Accounts” И ПОГУБИЛИ» RowSet.User=”bainm” RowSet.Password = “password” Удивлены выбором имен хос- RowSet.Command = “SELECT count(*) c FROM item” тов? Они из Илиады Гомера. RowSet.execute() При всей моей любви к RowSet.next() Симпатичное окошечко управляет вашими отчетами. Властелину колец (источник MsgBox “There are “ + rowSet.getString(1) + “ items” большинства имен хостов) я нахожу удивительным, что ис- End Sub Dim RowSet тория из бронзового века так Отлично, теперь рассмотрим следующий пример: Sub Main схожа с сегодняшним днем и Dim RowSet connectToDatabase (“Accounts”, “bainm”, “kawasaki”) что человечество ничуть не из- Sub Main loadNewFile менилось за этот долгий срок. connectToDatabase (“Accounts”, “bainm”, “kawasaki”) createCustomerReport sql1 End Sub End Sub Sub createCustomerReport Sub connectToDatabase(database as string, username as string, password updateRowSet(“SELECT id, surname, firstname FROM as string) customer”) RowSet = createUnoService(“com.sun.star.sdb.RowSet”) while RowSet.Next() RowSet.DataSourceName = database add_paragraph(“Customer No. “ + _ RowSet.User = username rowSet.getString(1) + “ “ + rowSet.getString(2) + RowSet.Password = password “ “ + rowSet.getString(3)) End Sub wend Sub updateRowSet(sql as string) End Sub RowSet.Command = sql Вот и вся любовь. Процесс прост: посылаете запрос в базу данных, а RowSet.execute() затем отображаете результат в документ. Конец истории? Вообще-то не End Sub совсем. В LXF80 мы обнаружили: никто не любит менять функцию Main Sub sql1 под создание каждого нового отчета – ну разве что мазохисты. И снова, updateRowSet(“SELECT count(*) c FROM item”) ключевым моментом является создание диалогового окна для управле- RowSet.next() ния требуемыми работами. MsgBox “There are “ + rowSet.getString(1) + “ items” Вам уже не понадобится вручную набирать содержимое элемен- End Sub тов в виде списка. Нет, на этот раз вы загрузите их прямо из базы Теперь понятно, как легко расширить функциональность макроса. данных. Представим, что вы добавили элемент list box и назвали его Взгляните: lstCustomers в диалоговом окне dlgAccounts. Чем его загружать? Вы Sub sql2 меня опередили: можно послать запрос в базу данных на получение updateRowSet(“SELECT id, surname, firstname FROM списка покупателей: customer”) updateRowSet(“SELECT surname, firstname FROM while RowSet.Next() customer”) MsgBox “Customer No. “ + rowSet.getString(1) + Теперь в цикле переберите набор записей и загрузите их в элемент “ “ + rowSet.getString(2) + _ list box: “ “ + rowSet.getString(3) lstCustomers.AddItem(rowSet.getString(2) + “ “ + rowSet. wend getString(1), i) End Sub Просмотрите процедуру loadlstCustomers, расположенную на нашем диске, чтобы разобраться, как она работает. Написание отчетов Новый элемент list box пригодится как фильтр для создания про- Мы увидели, что с помощью макроса легко получить доступ к базе извольных отчетов. Допустим, вам захотелось увидеть все предметы, данных и отобразить результаты. Но пока не увидели ничего такого, купленные определенным покупателем – ну так используйте свойство чего нельзя сделать столь же легко из командой строки. Вспомните selectedItem из list box и получите выбранный текст, а затем примени- LXF80: там мы осуществляли запись напрямую в документы OOo Writer. те его для создания SQL-запроса: Видимо, неглупо будет аналогично поступить с информацией из нашей sql = “ select title,value from customer, item “ + _ базы данных. “ where cutomer.id = item.customer_id “ + _ “ and concat(customer.firstname,concat(‘ ‘,customer.surname)) = ‘” + _ «Я УВЕРЕН: ВЫ ПОЙМЕТЕ, lstCustomers.selectedItem +”’” Ешё лучше встроить SQL в функцию. Зачем? Таким образом вы ЧТО ВСЁ ЭТО ОЧЕНЬ ПРОСТО....» сможете использовать запрос в любой процедуре без необходимости переписывания кода. Теперь добавьте в окно кнопку, ассоциируйте с ней Замечательно то, что мы можем делать впечатляющие вещи процедуру и начинайте пользоваться. Для начала сделайте процедуру, добавкой всего нескольких строк кода. Мы уже разбирали процедуру выводящую на экран окно с вашим построенным SQL-запросом. Теперь loadNewFile (мы познакомились с ней в LXF80 и модифицировали в используйте SQL для получения нового набора записей и запишите LXF81) для создания нового документа Writer, и у нас есть процедура итог в документ Writer. cmdItemReport с нашего диска покажет вам add_paragraph для записи в документ (не пугайтесь, весь нужный код это в действии. содержится на прилагаемом диске). Надо только добавить процедуры Я уверен: вы поймете, как всё это просто (запомните хорошенько: для создания отчетов по информации в базе данных. Вот простой спо- это просто), и автоматизация извлечения информации из базы данных соб создания документа, содержащего список всех покупателей в базе в документ OOo Writer тоже проста. Вас, наверное, не удивит, что дан- данных Accounts: ные можно передавать и в таблицу Calc. Взаимодействие с базой дан-

82 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК OOo Basic: базы данных

ных происходит таким же образом. Единственное отличие – вы должны where item.author_id = author.id писать в отдельные ячейки, а не в абзацы, а это даёт даже больше гиб- and item.media_id = media.id; кости в отображении вашей информации. Используйте этот SQL-запрос в процедуре заполнения таблицы А теперь я вас покидаю – придумайте сами, что теперь делать: всё результатом запроса – изучите showFullLibrary на диске, чтобы понять, необходимое мы обсудили в LXF80, LXF81 и в этом выпуске. И если вы как это работает (там же вы найдете SQL-запрос для создания базы всё ещё в тупике, то загляните в раздел «Журнал» на диске – готовые данных и пример файла /etc/odbc.ini). Внимательно посмотрев на программы уже ждут вас не дождутся. этот макрос, вы обнаружите, что в нем не содержится жестко заданного числа столбцов, когда осуществляется запись в документ; вместо этого Медиа-библиотека для создания цикла используется свойство RowSet.Columns.Count. И На закуску рассмотрим простое приложение – оно поможет вам хра- что? А вот что: неважно, если вы измените число записей, получаемых нить и просматривать список всех ваших CD- и DVD-дисков, пластинок в запросе – макрос автоматически вставит правильное число столбцов или книг. в таблицу. Начните с создания таблиц в вашей базе данных. Вам придется задаться вопросом: работать ли с отдельной базой данных для каждого Фильтрация данных проекта или поместить все таблицы в одну базу? Я бы порекомендо- Так и слышу ваш крик: «Да не хочу я видеть все, что содержится в базе вал первое – так проще управлять информацией. Однако, выбрав этот данных! Мне надо смотреть только CD-диски, или только книги, или метод, не забудьте добавить запись о новой базе в /etc/odbc.ini и только работы одного художника». Что ж, легко – если вы создадите добавьте ее как новый источник данных в OpenOffice.org. Понадобится новую форму, то можете добавить на нее несколько элементов list box также подсказать макросу, чтобы он использовал новую базу данных – и заполнить их из таблиц author и media (так же, как мы сделали в при- поменяв connectToDatabase (“Accounts”, “bainm”, “kawasaki”) на мере с покупателями). Элементы list box можно использовать как филь- connectToDatabase (“library”, “bainm”, “kawasaki”). тры для построения запроса. На диске, showFilteredLibrary показывает, Далее: не пытайтесь вбить всё в одну таблицу – получите только как использовать опциональный ввод для построения такого фильтра и проблемы. Какие именно? Что ж, давайте рассмотрим простой пример – последующего отображения результата в таблицу. поле, содержащее имя. Вы-то знаете, что Б Гейтс, Уильям Гейтс и Чтобы добавить в базу новые предметы, авторов или типы носите- Властелин Зла означают одно и то же лицо, но ваш компьютер не зна- лей, вам пригодится выражение insert, например: ет, и это затруднит процесс создания запроса. Взгляните на таблицу: insert into library.author (name) values (‘Hawkwind’); Таблица: item insert into library.item (title,author_id,media_id) values (‘The Ambient Anarchists’,4,1); Title (Название) Author (Автор) Можно это сделать и из командной строки, но приобретённые зна- Колыбель для кошки Курт Воннегут ния помогут вам создать форму, которая выполнит всю работу за вас. Бойня номер 5 К Воннегут

Взамен можно использовать две таблицы – одна с описанием предме- Домашнее задание тов, другая с авторами: Задание на месяц (и ника- Таблица: item ких экивоков типа «если у вас будет время, то...» – Title (Название) Author (Автор) это нужно не мне, а вам): Табакерка Багомбо 1 проанализируйте свои каж- Сирены Титана 1 додневные задачи и выбе- рите те, которые можно авто- Таблица: author матизировать рассмотренным нами способом. Не ради увеличения производительности и тому подобной ерун- ID Name (Имя) ды, а исключительно из лени. Рекомендую также взглянуть на запросы 1 Курт Воннегут-младший update – почему бы не записывать данные в базу так же, как и читать их из нее? LXF Таким образом, вместо запоминания всевозможных написаний имени автора вы обойдётесь его идентификационным номером. Аналогично, вам не надо хранить слова cd, lp, book в таблице, содержащей заголо- вок. Вместо этого можно использовать что-то вроде: Таблица: item Title Media ID (Тип носителя) Бомба для мозгов 2 ЧЕРЕЗ Дзен и искусство ухода 1 МЕСЯЦ за мотоциклом Советы по OOo Basic Таблица: media (и может быть, я расскажу вам про эти запросы update). ID Type 1 Book 2CD

Теперь с помощью SQL-запроса вы можете получить из базы данных полезную информацию: select item.title, author.name, media.type from item, author, media

www.linuxformat.ru LXF8(82) АВГУСТ 2006 83 УЧЕБНИК Разработка собственной 3D-игры

РАЗРАБОТКА СОБСТВЕННОЙ 3D-ИГРЫ Ogre Создаем ландшафт для 3D-игры ЧАСТЬ 1 Пол Хадсон начинает это долгожданное руководство с описания ландшафта.

Что приятно в написании статей для Linux Format так это именно вы хотите написать (дико извиняюсь перед программистами- необходимость расширять собственный кругозор для самой экстремалами). Поэтому я задам особенности предполагаемой игры: что возможности создания и описания новых проектов для она будет делать, как выглядеть, как в нее играть, и так далее. НА ДИСКЕ ваших тренировок. Можете себе представить, к примеру, как я был • Это будет стрелялка от первого лица (First-Person Shooter, FPS). Я озадачен, когда меня попросили заняться серией статей о программи- знаю, существуют тысячи FPS, а все потому, что их сравнительно лег- • Ogre 3D 1.2 ровании 3D-игр. Не то что я не люблю писать о Linux: на самом деле, ко порождать, они дают разгуляться фантазии и нуждаются в безумно • DevIL 1.5 • zzlib 0.12 очень люблю. Но больше я, конечно, люблю играть в игры, потому как красивой графике. Я не намерен ничего придумывать за вас, но надеюсь • Драйверы для видеокарт игры – это весело по определению. И вдруг оказалось, что веселее, чем создать игру, простую в разработке и классную на вид! • Исходный код примеров играть в игры, только одно (по крайней мере, на компьютерах): их созда- • Это будет однопользовательская игра с неким подобием искусственно- статьи вать! Обладание неограниченной исполнительной властью над жизнью го интеллекта, чтобы добавить сложности. проекта, несущего счастье миллионам* . • Действие будет происходить на обширной открытой местности, игро- Поэтому мы, в Лаборатории LXF, составили базовое руководство по ки будут ее исследовать. Для разнообразия, они смогут передвигаться проектированию, разработке и выпуску вашей собственной 3D-игры. У на транспорте, а может, и входить в помещения. Так игра будет больше вас, вероятно, уже руки чешутся поработать, но не спешите – в данной похожа на Quake. статье я сначала поведаю об игре вообще и о программах с библиоте- • Игра будет написана на С++, по принципу «лишь бы работало». За ками – необходимом инструментарии для ее разработки, а уж потом совершенством гнаться не станем. Место в журнале ограничено, и я напущу вас на решение библейски-первозданной задачи: наколдовать лучше покажу вам 5 строк нормально работающего кода, чем 50 строк для игры небо и землю. идеального. • Игра будет кросс-платформенной. Мы будем разрабатывать ее в SUSE Барьер номер один 10.1, но она должна работать и на любом другом дистрибутиве Linux. Прежде чем браться за написание кода – или даже за установку нуж- Будет здорово, если игра также будет работать в Windows и OS X, но это ного для кодирования программного обеспечения, надо сообразить, что не главная наша цель. • Игра будет выпущена под лицензией GPL. *Миллионам? Да, люблю метить высоко. Поэтому ничего не замечаю, пока не грохнусь.

84 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Разработка собственной 3D-игры

Напоминаю, что это руководство по программированию 3D-игр, а не по С++, математике или Blender. Поэтому я сфокусируюсь на 3D-графи- ЗНАКОМЬТЕСЬ С ВАШИМ ГЕРОЕМ: ЧЕД-В-БЕГАХ ке, прихватывая готовые модели и элементы игры везде где только мож- но. Если вы знаете Blender – прекрасно: сможете создать собственное Хотя большинство стрелялок от первого лица задействует арсенал тяжелого боевого оружия, творение. Если нет, не переживайте: все, что вам нужно – способность проходят по формуле «целься, стреляй, беги, опять позволив нам поупражняться в спецэффектах. стреляй», они все-таки пытаются обставиться хоть Заинтересовались? Еще бы! программировать. каким-то сюжетом. И вот наш сюжет, в виде Наша цель состоит в создании законченной игры. Для этого мы краткого представления персонажа: воспользуемся графическим движком Ogre 3D и SDL для аудио и про- чих нужд. Однако потребуется еще заполнить немало пробелов, остав- Десять лет назад лихой спецназовец был при- ленных SDL и Ogre. говорен судом к тюремному заключению за преступление, которое не совершал, но быст- Список требований ренько сбежал из-за колючей проволоки к нелегалам Сан-Франциско. Сейчас, будучи все Теперь вы знаете, что мы хотим запрограммировать, поэтому необхо- еще в розыске, он работает солдатом удачи. димо привести в боевую готовность вашу систему. Для программи- Если у вас проблемы, и помочь вам некому, рования потребуется установить следующее ПО (заметим, что здесь сумейте отыскать и нанять... Чеда! указаны лишь минимально допустимые версии; более новые версии будут предпочтительнее): Наш герой Чед приговорен к повешению и находится в бегах. Игра будет патетически • Automake 1.6 называться «Висельник Чед», хотя в идеале наш • Autoconf 2.5 герой избежит казни, изувечив всех на своем пути. • make 3.8 Он будет бороться против плохих парней • libtool 1.4 (в основном против тех, что для нас заготовили • pkg-config 0.17.2 разработчики Ogre), преодолевая всяческие • GCC 3.4 трудности, для чего потребуется настоящий героизм • g++ 3.4 (но главным образом пальба). Кроме того, он • cpp 3.4 Приведенные названия должны совпадать с теми, что вы найдете в менеджере пакетов вашего дистрибутива. Исключение может составить Может оказаться, что для вашего ядра не найдется скомпилированного pkg-config, иногда называемый pkgconfig. интерфейса, поэтому нажмите Yes, чтобы поискать драйвер на сайте Так как мы собираемся работать с играми, понадобятся дополни- Nvidia. Если его там нет, снова нажмите OK и скомпилируйте собствен- тельные пакеты, а именно: ный драйвер. Наконец, будет предложено отредактировать за нас файл • SDL 1.2.9 настроек X – соглашайтесь, да не забудьте потом проверить файл /etc/ • SDL_Mixer 1.2.6 X11/xorg.conf и убедиться, что используется драйвер ‘nvidia’ (а не ‘nv’ • Mesa или, того хуже, ‘vesa’). По завершении установки наберите init 5 – верне- • FreeType2 2.1 тесь обратно в X. Откройте терминал и запустите glxgears. Секунд через • libpng пять вы увидите результаты тестирования – если результат меньше 1000 • libmng кадров в секунду, это сильно повредит нашей игре. • libtiff Для более продвинутой работы с графикой можете установить • libjpeg библиотеку Cg (здесь некогда про нее рассказывать, но вреда от нее Как и в первом случае, все вышеозначенные библиотеки можно всяко не будет). ‘Cg’ – сокращение от ‘C for Graphics’, а цель библиоте- найти в менеджере пакетов. Проверьте, что вы устанавливаете как ки – облегчить создание продвинутых визуальных эффектов. Вы може- саму библиотеку, так и версию для разработчика, иначе вы сможе- те скачать инструментарий Cg со страницы Nvidia для разработчиков те только запускать игру, но не разрабатывать свою собственную. по адресу http://developer.nvidia.com/page/cg_main.html. Процесс Например, помимо пакета SDL существует пакет SDL-devel (или SDL- ее установки лишен особого полета: скопировать в домашний каталог dev), который также надо установить. в подкаталог Cg, извлечь с помощью tar xvfz Cg-1.4.1_x86.tar.gz, Теперь нам надо установить действительно особые программы, переключиться в суперпользователя и запустить cp -R usr /. предназначенные для разработки игры. Этот список гораздо короче – и, Установка zziplib – тоже всего-навсего извлечение и запуск возможно, не все они найдутся в вашем менеджере пакетов. Нам пона- ./configure, make и make install. Если кому интересно, zziplib предо- добятся следующие: ставляет быстрый и удобный способ манипулирования zip-файлами, а • zziplib 0.12 именно в них Ogre хранит множество своих ресурсов. • DevIL 1.5 Далее идет DevIL – мультиплатформенная библиотека для работы с • Ogre 3D 1.2 изображениями, используемая Ogre. Она находится на диске к журналу, • Приличный драйвер видеокарты так что скопируйте ее в ваш домашний каталог и запустите tar xvfz DevIL-1.6.8-RC1-src.tar.gz Мы разместили все эти пакеты на диске (включая последние драй- cd DevIL-1.6.8-RC1 вера Nvidia и ATI для Linux) и расскажем, как их установить. Начнем с ./configure драйвера видеокарты. У меня MSI Nvidia GeForce 7900, поэтому весь make код, описанный здесь, будет работать с картами Nvidia. su make install Убойный графический драйвер exit Чтобы установить драйвер Nvidia, нажмите Ctrl+Alt+F1 – попадете в Теперь осталось главное событие: Ogre. Скопируйте его в домашний терминал. Переключитесь в суперпользователя и наберите init 3, что- каталог с диска и наберите: бы завершить работу X. Далее скопируйте драйвер с нашего диска tar xvfj ogre-linux_osx-v1-2-0.tar.bz2 в свой домашний каталог и запустите sh ./NVIDIA-Linux-x86-1.0- cd ogrenew

8756. Запустится программа установки, с текстовым интерфейсом, и ./bootstrap вас попросят принять лицензионное соглашение. Если драйвер у вас ./configure (или >> уже был, вам надо нажать Yes, чтобы его удалить. ./configure --with-platform=GLX если используется Nvidia)

www.linuxformat.ru LXF8(82) АВГУСТ 2006 85 УЧЕБНИК Разработка собственной 3D-игры

>> make функцию initialise(). su CChadGame::CChadGame() { make install m_Ogre = new Root; ldconfig this->loadConfig(); exit if(!m_Ogre->showConfigDialog()) return; Список требований выполнен – можно начинать делать игру, ура! m_Ogre->initialise(true, “Hanging Chad”); this->initialise(); Время кодировать this->createScene(); Настал долгожданный момент первой «вылазки» в С++ ! Наш первый } урок – не простое введение или руководство по установке: мы собира- Root – базовый класс Ogre и родитель остальных наших объ- емся написать сердцевину нашего движка. Цель урока – создание неко- ектов из Ogre. Именно Root отвечает за прорисовку и передачу го ландшафта, по которому можно перемещаться с помощью мыши, и обратных вызовов к обработчику кадров. Именно объект Root пока- неба над ним. Большая часть кода этого урока состоит из основных зывает диалог конфигурации пользователю (через вызов m_Ogre- начальных установок Ogre: инициализации движка, обработки ввода >showConfigDialog()), а также вежливо завершает игру, когда мы и т.д. В следующих выпусках уже добавятся красивости – например, сигнализируем, что с нас хватит. Первое, что мы создаем, и последнее, управление с клавиатуры, туман и свет, анимация и спецэффекты; а что удаляем – объект Root. пока займемся черновой работой. Вооружившись этими данными, откройте текстовый редактор и настучите следующий код в chad.h, основной заголовочный файл «ИСПОЛЬЗУЙТЕ МЫШЬ, ЧТОБЫ нашего игрового класса: #include “Ogre.h” ОГЛЯДЕТЬСЯ ВОКРУГ – НАШЕ ТВОРЕНИЕ #include “SDL/SDL.h” #include “SDL/SDL_mixer.h” ДОВОЛЬНО МИЛО!» using namespace Ogre; #include “chadframelistener.h” class CChadGame { В функции CСhadGame::initialise() настраиваются менеджер сце- public: ны, камера, область просмотра, обработчик событий и обработчик кадра. CChadGame(); В ней же происходит вызов функции InitialiseAllResourcesGroups(), ~CChadGame(); загружающей все ресурсы Ogre. Я одолжил стандартные файлы кон- Читатели PC Plus, возможно, bool loadConfig(); фигурации (и их загрузчик, CChadGame::loadConfig()) из Ogre SDK помнят Чеда, но сейчас он в void initialise(); и немного их подправил, чтобы они работали в нашей игре. Загрузчик бегах и наверняка переодет в int run(); конфигурации только читает текст: разборки синтаксиса не происходит, неброскую одежду, чтобы не void createScene(); пока не вызовется initialiseAllResourcesGroups(). Если вы забудете бросаться в глаза. Root* m_Ogre; вызвать эту функцию, то наверняка столкнетесь с проблемами! EventProcessor* m_EventProcessor; CChadFrameListener* m_FrameListener; Делай, что я сказал... SceneManager* m_SceneMgr; Осталось написать обработчик кадра, в который будут посылаться и Camera* m_Camera; обрабатываться события от Ogre. Здесь интерес представляют три фун- Viewport* m_Viewport; кции, одна из которых говорит почти сама за себя. Это конструктор, и он }; сохраняет ссылку на устройство ввода, камеру и менеджера сцены для Первые три выражения #include включают наши стандартные биб- последующего использования. лиотеки, хотя SDL мы пока трогать не будем. Четвертый #include пред- Другая интересная функция – frameStarted(), вызываемая перед назначен для обработчика кадра –скоро мы к нему вернемся. Далее тем, как Ogre начнет обсчитывать кадр. Она перехватывает ввод и идет главный класс нашей игры, ответственный за большую часть ее проверяет необходимость ответа на ввод от пользователя. В данный организации. Не буду выпендриваться с объектно-ориентированным момент это значить «если нажали Escape, то возвратить false». Это программированием, хотя как раз организации объектный подход и спо- значение завершит цикл прорисовки Ogre, и произойдет выход из собствует – как я уже сказал, нам важно не изящество кода, а удобство игры. Третья функция – mouseMoved(), дублированная также в игры; итак, не удивляйтесь, что я браво игнорирую инкапсуляцию объ- mouseDragged(); она вызывается при любом перемещении мыши, ектов ради экономии места! когда нам необходимо повернуть камеру в соответствии с парамет- Класс CChadGame содержит обработчик событий и обработчик рами перемещения. кадра, наш менеджер сцены (отслеживающий все объекты), камеру Оставьте пока функцию createScene() пустой – и ваша програм- (позицию игрока) и область просмотра (то, что мы видим на экране). ма, наконец, готова к сборке. Однако вручную эту работу выполнять Позже в нем появится информация об игроке, очках, картах и многое довольно тягостно, поскольку необходимо подключить библиотеки другое, но сейчас все предельно просто. SDL и Ogre. Поэтому обратимся к Makefile, чтобы вы могли набрать Большая часть работы совершается обработчиком кадра и менед- make и наслаждаться, любуясь, как вкалывают за вас. Наберите жером сцены, во многом благодаря Ogre. Задача нашего класса следующий текст в файл Makefile – но очень аккуратно, потому CChadGame состоит в том, чтобы установить каждую сцену и обра- что пробелы – это на самом деле символы табуляции! батывать любые изменения, например, передвижение игроков. Однако DEFINES = менеджер сцены параллельно будет отслеживать все объекты в нашей LIBS = Ogre игре и обеспечивать их корректную прорисовку (с применением опти- CXX = g++ мизации). Нашу заботу о вводе данных от пользователя любезно берет CXXFLAGS = $(shell pkg-config --cflags $(LIBS)) на себя обработчик событий Ogre. Затем эта информация посылается в $(DEFINES) -I/home/paul/Desktop/Ogrenew/Samples/ обработчик кадра, который переваривает изменения. Common/include Реализация класса CChadGame находится в файле chad.cpp на LD = g++ нашем диске, но он слишком велик, чтобы напечатать его здесь, поэто- LDFLAGS = $(shell pkg-config --libs $(LIBS)) -lSDL -lSDL_ му отразим только основные моменты: конструктор (CChadGame()) и mixer -lpthread

86 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Разработка собственной 3D-игры

ЗА КУЛИСАМИ...

Две строчки кода для генерации ландшафта кода. Вы видите строчку вызова и думаете: «Ага, набрать легко, но в ответ на них Ogre сгенерировал тебя-то мне и надо», копируете ее и вставляете для нас аж 28000 треугольников. За крутыми стро- сразу в нескольких местах. А потом замечаете, что ками упрятана напряженная работа – наша тестовая в свернутом коде на самом деле 1000 строк, и вы машина показала в среднем 600 кадров в секунду, чуть ли не удвоили объем своей программы! а на менее мощном компьютере результат мог быть В Ogre, добавление одной строки может вылить- и хуже. ся в тысячи, а то и миллионы новых треугольников, Здесь та же проблема, что и у интегрированных и всех их надо отобразить на экране. Поэтому будь- сред разработки, поддерживающих сворачивание те осторожны с поправками!

1) Ogre позаботился об окне системных настроек, оно создается cfg, который вы можете настроить по своему усмотрению (или позво- вызовом showConfigDialog(). лить другим это делать), причем для этого не придется переписывать ни строчки кода. all: Если вы все еще не пришли в восторг, добавим немного неба. Небо $(CXX) $(CXXFLAGS) $(LDFLAGS) -o chad chad.cpp предусмотрено в трех моделях: плоское, коробка или купол (в порядке clean: возрастания степени реализма и, соответственно, потребления ресур- Наш маленький мир, в виде rm -f chad сов). Плоское небо (по сути, многоугольник, висящий над игроком) поч- каркасной модели. ти не нагружает GPU, но выглядит убого – наш ландшафт не упрятывает Время поколдовать линию горизонта, и сразу заметно, что оно именно плоское. Модель- Все самое нудное позади, ваша «игра» (скопированная с диска к жур- коробка ликвидирует данный недостаток, помещая игрока внутрь куба налу) должна скомпилироваться и запуститься – просто наберите make. и отображая небо на каждую его грань. Потребление ресурсов шести- Когда она запустится, возникнет окно настроек Ogre (см. рис. 1). Рядом кратно возрастает, зато уж небо есть везде. У последней модели – купо- с пунктом Select Render вы увидите Select One. Нажав на него, вы ла – отсутствует «дно», а на «покрышку» для пущей иллюзии натянута получите список вариантов, доступных в вашей системе, где почти текстура. Отсутствие дна может создать проблему, если игрок глянет наверняка фигурирует только OpenGL Rendering Subsystem. Ogre все вниз, но там уже есть ландшафт, так что все в порядке. равно, как отрисовывать изображения, поэтому под Windows ваша игра Код для невероятно сложной иллюзии выглядит так: может использовать DirectX. m_SceneMgr->setSkyDome(true,”Examples/CloudSky”); Окно настроек позволяет сделать многое, например, установить раз- Да, да, это все! – теперь перекомпилируйте и запустите игру. решение экрана или выбрать полноэкранный режим; и Ogre автомати- Наслаждайтесь. Используйте мышь, чтобы оглядеться вокруг – вы уви- чески сохранит ваш выбор в Ogre.cfg для дальнейшего употребления. дите довольно милую картинку, как на рис. 3. Важнее всего, что наш Настроив графику, нажмите Accept, и ваша «игра» начнется. Я небольшой продукт не так плох для начала! Теперь осталось добавить написал слово «игра» в кавычках, потому что на данном этапе это клавиши WASD для перемещения, немного тумана, пару источников пустой экран – зрелище не шибко захватывающее, но по крайней мере света, злодеев и физи... Стоп, я, кажется, забежал впереди паровоза. видно, что код работает! И теперь можно применить возможности Ogre: Итак, вы получили краткое и несложное руководство для ознакомления создадим пейзаж с помощью всего одной строки кода. Не бойтесь, она с Ogre – и вас ожидает еще много интересного. LXF много короче тысячи символов. Вот она, просто вставьте ее в вызов createScene(): БЛАГОДАРНОСТЬ m_SceneMgr->setWorldGeometry(«terrain.cfg»); Видеокарта Nvidia GeForce Перекомпилируйте и запустите ваше приложение. Вы увидите нечто 7800, используемая для похожее на рис. 2 – холмистый ландшафт. Свет, правда, прилип к тек- разработки этого руководства, стуре, но даже так все выглядит вполне мило – это благодаря файлу была любезно предоставлена terrain.cfg, который загружает уже существующие текстуры из Ogre MSI . Спасибо, ребята! SDK. Каталог, из которого берутся текстуры, получается из каталога установки Ogre вашей машины, а загружаются они в файле resource.

ЧЕРЕЗ МЕСЯЦ Мы позволим игроку пошататься по игровому полю и добавим обнаружение столкновений. Ниндзя-а-а!

2) Покатые холмы, прямо как в Уэльсе. Хотя не такие зеленые. 3) Таков конечный продукт данного этапа. Небо выглядит И овец нет. Наверно, это террикон. довольно убедительно.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 87 УЧЕБНИК PHP

ПРОГРАММИРОВАНИЕ СЦЕНАРИЕВ PHP Самое важное В этой завершающей цикл статье Пол Хадсон дает нам несколько советов на посошок.

Я начал писать первую статью этого цикла еще для LXF30. Не хочется углубиться в PHP, то я оставил для этого несколько заманчи- МЕСЯЦ могу сказать, чтобы это было «будто вчера», поскольку это вых моментов. Пожалуй, моим любимым остается LXF70, в котором, не так: автор письма месяца тогда получил коробку с Red Hat пытаясь помочь людям победить в конкурсе LXF, я показал как разга- НАЗАД Linux 7.3, на диске к журналу находился релиз-кандидат Gnome 2.0, а в дать загадку Монти Холла. Согласитесь, раньше вы не видели столько обзоре KSpread получил всего 5 баллов из 10 из-за того, что «в некото- коз ни в одном из журналов. Ну и конечно никто не сможет забыть мы рассматривали расширение PHP для работы с SSH. рых ситуациях в процессе тестирования KSpread рушился при попытке «священный» проект Interfict (LXF57–62), в котором мы на практике импортировать файлы, формат которых был объявлен как поддержива- использовали множество приемов, изученных раньше, вроде баз дан- емый». Ну хорошо, что касается KSpread, то это действительно было ных и регулярных выражений. Но даже если у вас другие есть другие «будто вчера», но вот все остальное в том журнале кажется относящим- предпочтения, сегодня вы получите полный набор всех статей цикла. ся к давнему, давнему прошлому. Наслаждайтесь! Конечно, главной темой той статьи было начало нового цикла про PHP, но тогда я понятия не имел, что эта серия окажется самой длинной Знаменитое последнее слово за всю историю журнала. Это 53-я и последняя статья цикла, и в ней я Поскольку сейчас у меня есть последний шанс сказать вам что-то про НА ДИСКЕ хочу окинуть взглядом некоторые вещи, рассмотренные в предыдущих PHP, я собираюсь дать вам несколько указаний, которым вам стоило бы • PDF-файлы со всей серией выпусках и дать несколько последних советов. следовать при программировании, и которые вам стоило бы учесть на учебников РНР будущее. Вот они: Дискография PHP 1) Используйте MySQL. Это стандартный открытый сервер баз данных, Если считать эти страницы, то у вас уже должно набраться больше 190 он достаточно надежный и богатый возможностями, чтобы удовлетво- листов полезностей про PHP – этого почти достаточно, чтобы целиком рить любого. Если вы используете что-то другое, потому что раньше оно заполнить два номера LXF! Мы рассмотрели огромное множество тем – было лучше, сейчас настало время пересмотреть ваше решение. генерацию картинок, базы данных, оптимизацию, сокеты, SNMP, базы 2) Используйте Ajax. Не стоит считать, что это «всего лишь еще одно данных, расширения, безопасность, модное слово», поскольку это не так: Ajax – это будущее web как мини- графический интерфейс на основе мум на ближайшее десятилетие. Я редко упоминал его тут, поскольку GTK, опять базы данных, curl, про- Ajax больше связан с JavaScript, но система LAMP (Linux, Apache, верку синтаксиса, Gettext и, конеч- MySQL, PHP/Perl/Python) лучше других приспособлена к работе в качес- но же, базы данных. Я надеюсь, тве основы для Ajax-решения. что вы старательно занимали пер- 3) Используйте SimpleXML, когда вам нужно иметь дело с XML. Это вое место в очереди за журналом одно из расширений PHP, которое действительно превосходно. Стоит каждый месяц, но если вы все- вам начать разбираться с XPath – и вы уже вряд ли вернетесь назад. таки пропустили несколько выпус- Если вы еще с не знакомы с этим расширением, откройте LXF71 на 90 ков (Эх!), то вам будет приятно странице и прочитайте – вам откроется целый новый мир узнать, что на диске вы найдете 4) Будьте объектно-ориентированными. Это было ужасно трудно в PHP 4, PDF-файлы со всеми до единого но начиная с PHP 5 web-разработчикам стало гораздо легче жить. выпусками цикла, так что вы смо- Большая часть web-страниц прекрасно описывается в рамках объектно- жете прочитать все, что раньше ориентированной парадигмы – как минимум саму страницу можно рас- пропустили. сматривать в виде объекта, с методами наподобие writeHeader(). Но если Я хотел сделать читателей «специалистами по PHP 4.2» Глядя на последние 50 вы работаете с бизнес-логикой или создаете приложения, выполняю- Увы, я не выполнил поставленной задачи – вы стали статьй я полагаю, что если вам щие конкретные задачи (например игры или графические интерфейсы специалистами по PHP 5.1!

88 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК PHP

пользователя), то надо быть сумасшедшим, чтобы не использовать быть возможными». Новый син- ООП. таксис разработан так, чтобы все 5) Кэшируйте PHP-код. APC – это прекрасное (и бесплатное!) решение, основные конструкции было про- позволяющее вашей программе выполняться гораздо быстрее. А если у ще набрать, а это значит – быст- вас есть свободные деньги, вы можете инвестировать их в покупку Zend рее обработать, проще прочитать Platform, благодаря которому вы получите самый быстрый PHP-код на и легче выучить. свете. Второе, о чем стоит думать – 6) Не стоит использовать PHP 4.x, Apache 1.3.x или MySQL 4.0 или мень- это увеличение роли PHP как ше, если, конечно, вашему серверу есть куда девать процессорное вре- языка для связывания объектов мя. Все эти программы устарели уже на две версии, так что отсутствие бизнес-логики (middleware). Да, обновлений уже непростительно. А если вы все еще не пользуетесь PHP всегда неплохо подходил переменными $_GET, $_POST и так далее – прекратите прямо сейчас. для такого связывания, но все 7) Не используйте MD5 в сценариях, которые должны быть криптогра- же он имел репутацию детской фически-безопасными. Вместо него возьмите SHA1, благо повышение игрушки, не пригодной к исполь- Что наша жизнь? Игра! безопасности практически не вызывает потери производительности. зованию в серьезной компании. Это мнение пришлось опровергать с И PHP в ней выигрывает. Сейчас MD5 можно использовать исключительно для обратной двух сторон: придавая PHP более Java-подобный синтаксис и добавляя совместимости. дополнительные зацепки в Java, чтобы вызывать бизнес-объекты было 8) Вместо функций fopen(), fread(), fwrite() и fclose() напишите просто проще. Со старым добрым набором технологий LAMP PHP-программист file_get_contents() и file_put_contents(). Нет, производительность тут ни всегда мог заработать себе на хлеб с маслом. Но не забывайте смотреть при чем, это просто вопрос удобочитаемости кода. дальше – и там вас ждут настоящие деньги! 9) Не стоит слепо писать всюду mysqli_connect() и другие специфичные Ну и наконец, сейчас вам действительно стоит потратить время на для базы данных функции. PDO – это исключительно быстрая, а в соче- изучение стандартной библиотеки PHP. Это встроенный набор объектов тании с Pear DB еще и очень гибкая система доступа к СУБД. для выполнения повседневных дел, а так же обработчики специфических 10) Пожалуйста, не используйте eval(). А если вы до сих пор продолжа- задач, таких как проход по всем файлам каталога, и более общих алгорит- ете это делать – киньте мне email, что бы я мог вдоволь поиздеваться. мов наподобие перебора всех элементов обычного массива. Эта библио- тека становится стандартом в PHP, особенно вместе с хитрыми расшире- Что ждет нас впереди? ниями вроде SimpleXML. По-моему, стандартная библиотека будет следу- Одно из удовольствий в жизни программиста – это то, что его мир никог- ющим большим событием в PHP, так что просто будьте на пике моды. да не остается неизменным. Хотя нельзя сказать, что PHP движется со скоростью света, но каждый год вы вполне можете ожидать новый Долгое прощание релиз, а так же множество обновлений библиотек и появление новых Ну, вот и все. Если вы прочитали и попробовали все эти статьи – сценариев. Изучение этого всего не дает потерять интерес к работе, так спасибо вам, я надеюсь что вы много узнали и теперь полностью воору- что вам приятно будет узнать, что за горизонтом нас ждет еще больше жены для более сложных проектов. Если вы пропустили что-то – вы неизведанного. можете вернуться и прочитать пропущенное с DVD. В любом случае, на Для начала, в Perl 6 будет полностью переработан синтаксис регу- этом моя серия заканчивается, но в вашей карьере PHP-программиста лярных выражений. Пока это изменение нас не касается, и все же нам все только начинается (тут можно сказать много других стандартных не стоит о нем забывать, поскольку, во-первых, в PHP используется биб- напустствий). лиотека совместимых с Perl регулярных выражений, и мы не знаем, ког- Поздравляю, вы закончили школу программирования Пола Хадсона! Я и не думала, что PHP да из совместимой с Perl 5 она превратится в совместимую с Perl 6, и во- Идите, и захватите мир, уничтожьте программистов JSP и сделайте сер- настолько увлекательный – я несколько лет не видела вторых новый синтаксис выглядит гораздо лучше. Один из девизов вера Apache счастливыми до скончания веков. Прощайте! LXF солнца! Perl – «Простые вещи должны быть простыми, а сложные вещи должны

ПОДСКАЗКИ

• Если вы действительно хотите еще, то посмотрите книгу «Практическое PHP-програм- мирование» (Practical PHP Programming). Она бесплатно доступна в Интернете по адресу К LXF59 я стал платить нашим художникам www.hudzilla.org/phpbook. А достаточно для того, чтобы они могли рисовать если вы нуждаетесь в совете такие вот таблички. или обсуждении – подумайте о вхождении в группу рассылки пользователей PHP.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 89 УЧЕБНИК Hardcore Linux: Asterisk

HARDCORE LINUX СЕРИЯ ДЛЯ ПРОФЕССИОНАЛОВ Asterisk: замените вашу АТС Душа горит желанием внедрить в своей организации VoIP взамен недешёвой АТС, но не уверены, что спра- витесь? Попробуйте эту открытую систему и добавьте отличные функции – например, конференции с интернет-вызовами. НА ДИСКЕ Выход технологии за пределы круга своих приверженцев и непристойных тарифов на «дальние» и международные звонки (см. МЕСЯЦ в коммерческий мир всегда волнителен. Это произошло с врезку «Подключение к телефонной сети общего пользования»). Интернетом в середине девяностых; с Linux незадолго до На этом уроке я предполагаю, что вы пошли путём свободного VoIP. НАЗАД смены тысячелетий; и теперь это происходит с IP-телефонией. Мы сосредоточимся на трёх специфических функциях Asterisk: Поскольку «голос поверх IP» (Voice over IP, VoIP) – это сервис, рабо- • Как уберечь передачу вызовов от нестабильности Интернета. В прошлом выпуске вы тающий поверх общедоступного Интернета (или, возможно, сегмента • Как поддерживать связь с друзьями и коллегами с помощью вонзили зубы во множество проектов, но в LXF80 Крис частной LAN/WAN), большинство протоколов и стандартов, исполь- конференции. Браун провёл мастер-класс по зуемых данной технологией, открыты, и это способствует разработке • Как помещать входящие звонки в очередь регулярным выражениям. широкой номенклатуры программ и оборудования. Есть несколько раз- Но как это работает? Кто использует УАТС? И о чём я вообще тут личных реализаций VoIP, каждая из которых имеет свои преимущества толкую? и недостатки. Если вы не привыкли к телефонии, вам придётся потерпеть, пока Приложение, которое я здесь демонстрирую, Asterisk – это открытая я коротко опишу её функционирование – но, с другой стороны, кру- УАТС (учрежденческая АТС), или телефонный узел частного пользова- тые хакеры вроде вас должны бы терпимо относиться к техническим ния (private branch exchange, PBX). Хотя Asterisk был разработан для разъяснениям. Приступим. Любая реализация VoIP в принципе состоит использования с VoIP – и поддерживает богатый набор протоколов VoIP, из двух компонентов: процесс, передающий звуковую информацию от включая SIP и H.323 – им вполне можно бесплатно заменить УАТС даже пользователя в сеть VoIP (обычно, телефон), и процесс, позволяющий и без функций VoIP. Мы особо приглашаем собрать её для себя люби- оборудованию VoIP взаимодействовать с телефонной сетью общего телей удушающе больших счетов от телекоммуникационных компаний пользования (ТфОП). Хотя люди с техническим складом ума из многих

90 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Hardcore Linux: Asterisk

РАСШИФРОВКА ТЕРМИНОВ VOIP

• E1 – Транспортная шина, используемая в • G.711 – Стандартный метод кодирования, • Inter-Asterisk eXchange (IAX) – Открытый UDP и обеспечивающий взаимодействие в Европе, состоит из 32 каналов по 64 кбит. используемый телефонными компаниями протокол VoIP от Digium, основного разра- режиме реального времени по IP. RTP Каналы могут использоваться для передачи для передачи цифровых сигналов. В Европе ботчика Asterisk, спроектированный для используется как в SIP, так и в H.323 для данных, голоса или и того, и другого. применяют G.711 «alaw», в США – G.711 надёжной передачи голосовых вызовов потоков голосовой информации. • Foreign eXchange Office (FXO) – «ulaw». через IP. IAX хорошо подходит для магист- • Session Initiation Protocol (SIP) – Интерфейс, используемый для подключе- • G.729 – Узкополосный кодек, который ральных вызовов между оператором VoIP и Популярный протокол VoIP, используемый ния к вашей местной телефонной компании запатентован, так что за его использование локальной системой или между двумя сис- как в телефонах, так и операторами; он по стандартной ТфОП-линии (PSTN). Он приходится платить. Но зато при использо- темами Asterisk. действительно хорош, за исключением называется FXO, поскольку через него мы вании G.729 есть возможность передавать • Джиттер (Jitter) – Общая проблема VoIP, работы через некоторые реализации NAT. подключаемся к центральному офису наше- вызовы VoIP по модему 56 кбит. когда голосовые пакеты задерживаются на • T1 – транспортная шина, используемая в го оператора. • H.323 – Сравнительно старый протокол, различное время, и абонент слышит паузы США для передачи голоса или данных. T1 • Foreign eXchange Station (FXS) – использовавшийся для голосовых комму- или нарушение порядка звуковых фрагмен- состоит из 24 каналов по 64 кбит, использу- Интерфейс, используемый для подключе- никаций. Большинство устройств, которые тов в последовательности. емых для входящих или исходящих вызо- ния стандартных телефонных аппаратов. использовали H.323, теперь вместо него • Real-time Transmission Protocol (RTP) – вов. Также поверх T1 может передаваться Телефонная розетка в вашей стене. используют SIP. Протокол передачи, работающий поверх ISDN PRI для 23 голосовых каналов.

стран терпеть не могут общую телефонную сеть, всё же это стандарт, и к На экране замелькает всевозможная информация, по мере загрузки ней подсоединён почти каждый. Как бы ни была хороша технология VoIP, каждого модуля, но в конечном счёте мы увидим простенькое приглаше- пользуются ею не все, так что не обойтись без способности звонить на ние, с помощью которого сможем управлять нашей системой Asterisk: стандартные телефонные системы и принимать вызовы практически от Asterisk Ready. любого абонента в мире. CLI> Наша задача согласовать две отдельные телефонные сети не нова – Командная строка Asterisk весьма напоминает Cisco IOS, так что любое предприятие с более чем пятью сотрудниками, вероятно, имеет если вы знакомы с этим популярным ПО для маршрутизаторов, то внутреннюю телефонную сеть с расширениями и голосовыми услуга- моментально в ней разберётесь. Команда show version выведет текущую ми. Чтобы подключить эту сеть к общей коммутационной сети (public switched telephone network, PSTN), используется УАТС. УАТС можно рассматривать как телефонный маршрутизатор, со своим внутренним «ASTERISK ПРЕДОСТАВЛЯЕТ НАМ диапазоном адресов (известных также как добавочные номера или расширения, extensions) и доступом к общим номерам снаружи. УАТС ГИБКОСТЬ ДЛЯ РАБОТЫ С БОЛЕЕ ЧЕМ хорошего качества стоят не дёшево (несколько тысяч долларов и более за абсолютный минимум функций), зато предоставляют ожидаемую ОДНИМ ОПЕРАТОРОМ VOIP.» пользователями надёжность почти со 100%-й готовностью на протяже- нии нескольких лет, если не десятилетий. версию Asterisk, а все команды можно просмотреть, введя ? в команд- При формировании среды VoIP, для ИТ-персонала УАТС – перво- ной строке. Поначалу наиболее полезной командой будет show modules, очередная область внимания, поскольку это линия фронта между ТфОП которая отображает все модули, входящие в комплекс Asterisk. Каждая и нашими пользователями. Коммерческие системы УАТС с поддержкой из возможностей Asterisk, например, обеспечение протоколов телефо- VoIP предлагаются почти всеми, кто использует стандартные устройства нии, кодеки для сжатия звука и различные устанавливаемые по умолча- УАТС – посмотрите на решения Nortel (www.nortel.com), Lucent (www. нию приложения, представлена в Asterisk в виде модуля. lucent.com) и Cisco (http://cisco.com) – но имеется замечательная альтернатива в настоящем стиле open source, работающая на стандарт- Устойчивая маршрутизация вызовов ном оборудовании Intel. И здесь мы возвращаемся к Asterisk. Теперь, после установки, самое время воспользоваться Asterisk для решения нашей первой общей проблемы телефонии: непрофессиональ- Будем знакомы ная маршрутизация вызовов. Эта программа была разработана Марком Спенсером [Mark Spencer], Понятно, что полным-полно провайдеров VoIP с бизнес-моделями чья телефонная компания Digiun оказала проекту разработке Asterisk отнюдь не звёздного уровня (см. врезку «Выбор вашего оператора

первичную поддержку, а вообще-то поставляет телекоммуникационное VoIP», там перечислены операторы, имеющие репутацию солидных). оборудование. Asterisk бесплатен для загрузки, что делает использо- Пусть они и предлагают звонки в Тибет за копейки, но человек разум- >> вание УАТС возможным для очень маленьких фирм и даже отдельных ный вряд ли будет ожидать высокой стабильности их сети. Asterisk пре- пользователей. Во многих дистрибутивах, включая Fedora Core и Debian, доступны ВЫБОР ВАШЕГО ОПЕРАТОРА VOIP двоичные пакеты Asterisk, а также модули ядра и требуемые библио- теки поддержки. Пока оборудование для соединения с ТфОП (PSTN) Если вы планируете использовать Asterisk с сервисом VoIP, чтобы звонить через интернет, вам потребуется подключиться к оператору, не используется, поддержка на уровне ядра не нужна. Пользователи который сможет перенаправлять ваши звонки. Проверьте: Debian могут просто выполнить apt-get install Asterisk, чтобы загру- • Gossiptel – www.gossiptel.co.uk зить и установить систему Asterisk, или скачать исходные коды с www. • Gradwell – www.gradwell.net Asterisk.org. • NuFone – www.nufone.net Сборка Asterisk проста, хотя и требует компиляции libpri и zaptel • Simple Telecom – www.simpletelecom.co.uk для C-заголовков. Установить его можно стандартно: make && make • VoIP User – www.voipuser.org install с правами суперпользователя – для большинства пользовате- Есть также несколько проектов сообщества, которые не умеют пере- лей сборка пройдёт успешно. Asterisk потребует немного времени на направлять звонки в сеть ТфОП, но удобны для соединения в компиляцию, но, будучи установленным, он будет использовать некото- Интернете с другими владельцами систем VoIP: • рые файлы конфигурации по умолчанию, поставляемые с пакетом. Free World Dialup – www.freeworlddialup.com • IAXTel – www.iaxtelcom Мы можем протестировать установленный нами Asterisk, выполнив Множество подробной информации о провайдерах VoIP можно найти от имени суперпользователя: на www.voip-info.org/wiki-VOIP+Service+Providers. # Asterisk -cvvvvv

www.linuxformat.ru LXF8(82) АВГУСТ 2006 91 УЧЕБНИК Hardcore Linux: Asterisk

>> >> доставляет достаточную гибкость в подключении к более чем одному ставляет приложение, известное как MeetMe; примеры конфигураций оператору VoIP для обработки вызовов, и мы можем построить логику включены в поставку Asterisk. Основная зависимость MeetMe – под- нашей УАТС так, что если один оператор вдруг «умрёт», для звонков во система времени Asterisk. Обычно, чтобы предоставить точные часы, внешний мир станет использоваться другой метод. Asterisk использует драйвер Zaptel и физические устройства; однако это Жизненно важная составляющая в этой смеси – приведённый ниже доступно не всегда, особенно в случае серверов-стоек, где разъёмы PCI макрос «дозвона», он важнее всех тех, что вам доведётся увидеть (по в большом дефиците. Вместо этого, в ядре 2.6 и текущем релизе Zaptel крайней мере, сегодня на уроке): вы можете использовать модуль ядра ztdummy, и всё замечательно [macro-dial] заработает. Многие функции Asterisk связаны с синхронизацией, так что exten=>s,1,Dial(${ARG1},120) при подгруженном ztdummy всё работает гораздо более гладко. exten=>s,2,Goto(s-${DIALSTATUS},1) Построить мост конференций в MeetMe.conf совсем не сложно, тре- exten=>s-NOANSWER,1,Handup буется только номер ID конференции и необязательный PIN-код для exten=>s-BUSY,1,Busy(45) доступа: exten=>s-CONGESTION,1,NoOp conf => 2345,9938 exten=>s-CHANUNAVAIL,1,NoOp Мы можем затем переключиться на этот мост из нашего extensions. exten=>s-.,1,Goto(s-NOANSWER,1) conf: Как видите, макрос позволяет нам создать список методов для exten => 2000,1,MeetMe(2345) передачи клиентских звонков и не волноваться об «уборке» после себя. Первому позвонившему сообщат, что он пока только один, и будет Мы можем реализовать этот макрос в соответствии с нашим номер- проигрываться мелодия ожидания. Как только присоединится второй ным планом и логикой, используемой для перенаправления вызовов, в абонент, мелодия ожидания завершится, и они смогут побеседовать. extensions.conf: При подключении или отсоединении очередного абонента все будут exten=>_0.,1,Macro(dial,IAX2/carrier1/${EXTEN}) оповещаться об этом звуковым сигналом. MeetMe имеет огромный exten=>_0.,2,ResetCDR набор опций, включая расширения для подключения к конференции exten => _0.,3,Macro(dial,IAX2/carrier2/${EXTEN}) с различными предпочтениями. Это идеально, когда мы хотим, чтобы определённые абоненты подсоединились и послушали, но не смогли ввязаться в разговор; или когда к мосту уже подключено несколько «ИСПОЛЬЗОВАНИЕ АГЕНТОВ ПОЗВОЛЯЕТ человек, но мелодия ожидания звучит до тех пор, пока не объявится некая конкретная личность. ВСТАВАТЬ В ОЧЕРЕДЬ, КОГДА НУЖНО Есть ряд версий мостов конференций сторонних разработчиков, работающих с Asterisk, но MeetMe имеет так много опций, что его замену ПРИНИМАТЬ ЗВОНКИ» обосновать очень трудно.

exten=>_0.,4,Hangup() Управление очередью Эту конфигурацию можно расширять как угодно, добавляя в спи- Теперь мы можем заняться третьей задачей Asterisk, которая ждёт свое- сок других операторов VoIP. Её недостаток – когда звонок уже принят, го часа, слушая мелодию Greensleeves буквально с самого начала урока. нет гарантии, что он пройдёт гладко. Немногие конечные пользователи Любая организация, клиентов у которой намного больше, чем сотрудни- хотели бы иметь дело с недостатками вроде плавающего или односто- ков на телефоне, должна рационально расставить приоритеты звонков роннего звука и прерванных соединений, но как только провайдер VoIP и обрабатывать их так, чтобы люди не спятили окончательно. Очереди берёт вызов в свои руки, мы, естественно, предполагаем, что он всё звонков хороши для решения первой проблемы, хотя некоторые счита- сделает правильно. Если у вас достаточно времени, вы, думаю, сможете ют, что они могут серьёзно подорвать психическое здоровье клиентов. набросать что-то в пять строк на Perl для анализа вызовов, сделанных Типичная очередь – это система, когда дозвонившийся абонент слушает из Asterisk, и определить, какие маршруты более надёжны. В больших системах основное преимущество даёт маршру- тизация по критерию наименьшей стоимости (Least Cost Routing, LCR), разновидность услуги сравнения, особенно когда у провайдеров различаются тарифы для звонков за границу. Тарифные планы пары провайдеров можно поместить в базу данных и использовать для определён- ных звонков провайдера, предложившего более низ- кую цену. Подробную информацию можно получить на http://cpan.uwinnipeg.ca/htdocs/Asterisk-LCR. Строим конференц-связь Теперь – наша вторая задача. Все телефоны, кроме самых простых, способны принимать трёхсторонние звонки, так что можно организовать небольшую конференцию с дву- мя другими абонентами. Если участников больше трёх, это усложняется и требует усовершенствованного решения, ориентированного на группы або- нентов. Даже если вы проводите основную часть своих групповых дискуссий в сети, не мешает знать, как создать мост конференций и запустить его, на случай, если сеть IRC будет неработоспособна. Для поддержки телефонных конфе- ренций Asterisk предо-

92 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Hardcore Linux: Asterisk

некоторое время музыку, затем один из агентов может поднять телефон В нашей базовой конфигурации очереди есть только статические и ответить на звонок. Asterisk легко с этим справляется при помощи агенты, которые не могут покинуть очередь, пока не переведут свои СОВЕТЫ приложения Queue. телефоны в режим DnD (Do not Disturb, «не беспокоить») или не отклю- • На загруженной системе Очереди определены в файле queues.conf, который имеет ту же чатся. Для людей, которые приходят и уходят, или для удалённых поль- Asterisk не пяльтесь зря на структуру, что и другие файлы конфигурации Asterisk. Каждая очередь зователей использование агентов позволяет подключаться к очереди, командную строку управления строится с собственной конфигурацией и списком агентов. Простейшая когда они хотят ответить на звонок. Система отсоединит их, если они не (CLI). Каждое сообщение, очередь может выглядеть примерно так: смогут ответить в течение определённого времени. Создадим agents. отправленное на CLI, приводит [support] conf, похожий на этот: к тому, что Asterisk блокирует musiconhold=default [agents] свою систему обработки вызо- strategy=roundrobin ackcall=no ; Агент не нажал #, чтобы ответить на звонок вов, задерживая новые звонки. • Команда show может предо- timeout=15 musiconhold => default ставить много полезной статис- retry=5 agent => 1234,0000,Agent1_Name тики: show queues для очере- wrapuptime=30 agent => 1235,0000,Agent2_Name дей, show channels для обраба- maxlen=0 Для подключения и отсоединения используется команда тываемых звонков, и т.д. announce-frequency=90 AgentCallBackLogin в файле extensions.conf, чтобы предоставить рас- • После изменения опций announce-holdtime=yes ширение для аутентификации пользователей по их ID и PIN-коду, пре- команда reload перезапустит announce-round-seconds=60 жде чем они присоединятся к очереди в качестве агента: Asterisk без сброса установлен- context=operator exten => 700,1,AgentCallBackLogin(|${CALLERIDNUM}@local) ных соединений. Это очень reportholdtime=yes В этом примере вызовы для очереди будут выполняться на иденти- полезно при редактировании member => SIP/200 фикатор подключённого лица, исключая необходимость определять его добавочных телефонных номе- ров или модификации очере- member => SIP/208 местоположение. Однако имейте в виду: если ваш телефонный номер дей. member => SIP/212 снабжен добавочным, идентификатор может оказаться неправильным • Запуск iax2 show channels пре- Большая часть этой конфигурации довольно прямолинейна, хотя местом для перенаправления вызова. доставит информацию по есть ряд опций, подстраиваемых под требования конкретной очереди. задержкам и помехам для каж- Строки announce позволяют приложению периодически сообщать Узнайте больше дого активного вызова IAX2, звонящему, сколько он просидел в очереди и какова его позиция, и Нарождающаяся технология развивается с необычайной быстротой – за бесценную для поиска неис- радовать его позорными сообщениями типа: «Вы – следующий на оче- ней трудно уследить. Сайт www.voip-info.org – чудесный ресурс для правностей сети. реди, среднее время разговора – пять часов». Опция reportholdtime каждого, кто работает с VoIP, даже если Asterisk не является «частью включает уведомления агенту о том, как долго звонящий ждал соеди- уравнения». Даже не пытайтесь настроить VoIP-телефон от Cisco или нения. Отделам технической поддержки такая информация полезна для Polycom, не посетив этот сайт: без толкового руководства вы можете зря определения тенденций по времени вызова и может быть включена в потратить время, пытаясь во всём разобраться. LXF документацию по запросу.

ПОДКЛЮЧЕНИЕ К ТЕЛЕФОННОЙ СЕТИ ОБЩЕГО ПОЛЬЗОВАНИЯ Интернет ненадёжен? Звоните через старую добрую сеть общего пользования (PSTN) и вашего телефонного провайдера.

Digium предлагает порт FXO для подключения Asterisk к обычной линии банка каналов на магистральную линию, где сигнализация может при- PSTN, используя карту X100P или плату TDM400P и FXP-модуль. Карта держиваться метода, зависящего от выбора, сделанного при подготов- X100P предоставляет одни порт FXO, в то время как TDM400P позволя- ке линии, KewlStart – та опция, которая нам нужна. ет подключать 4 порта, настраиваемые как FXO, либо FXS (для телефон- Как только /etc/zaptel.conf будет создан, мы можем загрузить моду- ных аппаратов), используя маленькие подсоединяемые модули. ли, настроить Zaptel и проверить, что всё работает как надо: Первая карта довольно дорога – примерно 180 долларов, и поставля- # modprobe zaptel wcfxs ется с одним портом FXS; однако поскольку она использует лишь один # ztcfg разъём PCI и отличается столь значительной гибкостью, X100P при # dmesg подключении к PSTN – это путь наименьшего сопротивления. Оба Zapata Telephony Interface Registered on major 196 устройства поставляются с техподдержкой в установке оборудования и Freshmaker version: 63 настройке Asterisk, так что вы сможете получить профессиональный Freshmaker passed register test совет, если что-то пойдет не по плану. Module 0: Installed -- AUTO FXO (FCC mode) Установив оборудование, нужно будет загрузить соответствующие Module 1: Installed -- AUTO FXS/DPO модули ядра и настроить интерфейсы. Asterisk для этих устройств Module 2: Not installed использует систему под названием Zaptel, и ссылается на них как на Module 3: Not installed Zap-каналы. Конкретные типы каналов настраиваются в /etc/zaptel. Found a Wildcard TDM: Wildcard TDM400P REV E/F (4 modules) conf, где устанавливается тип порта FXO и FXS и указывается, в какой Registered tone zone 0 (United States / North America) стране мы находимся. Чтобы обрабатывать исходящие и входящие вызовы, нужно настро- Чтоб жизнь малиной не казалась, порт FXO использует протокол FXS, ить /etc/asterisk/zapata.conf и /etc/asterisk/extensions.conf. а порт FXS – протокол FXO. Так, даже если у нас установлен модуль FXO signalling=fxs_ks в канале 1 (порт 0), мы должны сообщить Zaptel, что на этом интерфей- context=from-pstn ЧЕРЕЗ се хотим действовать по FXS. Всё, что касается Zaptel, настраивается в channel => 1 /etc/zaptel.conf, который выглядит примерно так: signalling=fxo_ks МЕСЯЦ fxsks=1 context=internal Мы ещё глубже погрузимся в тайны fxoks=2 channel => 2 Linux, рассмотрев подключаемые loadzone=us Любой входящий вызов будет подпадать под контекст from-pstn в модули аутентификации, defaultzone=us extensions.conf, а исходящие звонки мы можем сбрасывать на канал известные линуксоидам как Строки fxsks и fxoks сообщат оборудованию, что следует использо- Zap/1. Также доступен канал Zap/2, к которому можно присоединить PAM. вать метод сигнализации KewlStart, это стандартный протокол аналого- стандартный телефон, как к стандартной телефонной линии. Получая вых телефонных линий (POTS) в западных странах для взаимодействия входящий звонок на наш канал Zap/1, мы можем использовать стандар- с коммутатором телефонной компании. Если порт FXO не исходит от тные телефоны, а также затейливую трубку Cisco SIP.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 93 УЧЕБНИК Python – профессионалам

PPYTHONYTHON ДДЛЯЛЯ ППРОФЕССИОНАЛОВРОФЕССИОНАЛОВ РРАЗРАБОТКААЗРАБОТКА кклиент-серверныхлиент-серверных приложенийприложений

ЧАСТЬ 2 Вознамерились написать открытую альтернативу Skype или собственный клиент BitTorrent? Сергей Супрунов научит всему необходимому – от основ архитектуры «клиент-сервер» до готовых библиотек для работы с существующими интернет-протоколами.

В прошлый раз мы начали разговор о многозадачности. А ведь возможности одновременно выполнять несколько задач UDP-CLIENT.PY

наиболее востребованы при построении сетевых приложений, 1 #!/usr/bin/python работающих по схеме «клиент-сервер». 2 # -*- coding: utf-8 -*- МЕСЯЦ Клиент всегда прав 3 import sys НАЗАД Наиболее распространенным способом взаимодействия двух при- 4 from socket import * ложений через сеть являются уже знакомые нам сокеты. Модуль Мы познакомились с socket, входящий в стандартную поставку Python, помимо рассмот- 5 hostname = sys.argv[1] ветвлением процессов, ренных в прошлый раз Unix-сокетов поддерживает также сокеты сокетами и модулем select. 6 HEADER = ‘\x00\x01\x00\x00\x00\x01’ домена Internet. Методология использования мало чем отличается от 7 HEADER += ‘\x00\x00\x00\x00\x00\x00’ Unix-сокетов, за исключением того, что вместо параметра AF_UNIX

используется AF_INET, а вместо имени файла указываются имя хоста 8 QUESTION = ‘’ и номер порта, которые будут обслуживаться создаваемым сокетом. 9 parts = hostname.split(‘.’) В качестве второго параметра в конструкторе сокета можно указать 10 for p in parts: его тип: с установлением соединения, соответствующий протоколу TCP, 11 QUESTION += ‘%c%s’ % (chr(len(p)), p) или без соединения – протокол UDP. Допустимые значения – SOCK_ 12 QUESTION += ‘\x00\x00\x01\x00\x01’ STREAM и SOCK_DGRAM соответственно. По умолчанию подразуме- НА ДИСКЕ вается SOCK_STREAM. 13 QUERY = HEADER + QUESTION Как пример, рассмотрим работу приложения, выполняющего роль 14 cs = socket(AF_INET, SOCK_DGRAM) • Код примеров статьи примитивного (и весьма ограниченного функционально) клиента DNS, 15 cs.sendto(QUERY, (‘127.0.0.1’, 53)) работающего по протоколу UDP (см. листинг udp-client.py).

Некоторую сложность здесь представляет то, что DNS относится к 16 rsp = cs.recv(1024) так называемым «двоичным» протоколам, в отличие от «текстовых», таких как HTTP или SMTP, где обмен идет обычными текстовыми стро- 17 start = len(QUERY) + 12 ками. В случае с DNS оперировать приходится «сырыми» байтами. 18 print ‘%s.%s.%s.%s’ % (ord(rsp[start]), Сведения по формату сообщений можно почерпнуть из RFC 1035, раз- 19 ord(rsp[start+1]), дел «4. MESSAGES». 20 ord(rsp[start+2]), В 6-й и 7-й строках рассматриваемого кода формируется заголовок 21 ord(rsp[start+3])) (12 байт). Пренебрегая всем богатством возможностей протокола DNS,

94 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Python – профессионалам

мы ограничиваемся простым запросом (OPCODE=0) одного доменного имени (QDCOUNT=1). Конструкции вида «\x00» позволяют задать в IAMOK.PY строке произвольный шестнадцатиричный код. В строках 8–12 формируется поле запроса. Оно состоит из частей 1 #!/usr/bin/python доменного имени (в оригинале разделенных точками), перед которыми 2 # -*- coding: utf-8 -*- указывается число символов в этой части. Например, имя mail.ru состо- 3 import os, re ит из двух частей (mail – 4 символа, ru – 2 символа) и в запросе долж- 4 from socket import * но выглядеть так: \x04mail\x02ru\x00. Завершающий ноль, а также два двухбайтовых поля (QTYPE и QCLASS) добавляются к переменной 5 class IamOK: QUESTION в строке 12. 6 def __init__(self, host=’localhost’, port=12345): Наконец, строки 14 и 15 – создание сокета (обратите внимание на 7 self.socket = socket(AF_INET, SOCK_STREAM) второй параметр, SOCK_DGRAM, указывающий тип транспортного про- 8 self.socket.bind((host, port)) токола UDP) и отправка запроса. Поскольку UDP работает без установки 9 self.socket.listen(5) соединения, то вместо знакомой нам пары методов «connect – send» мы используем один «sendto», в котором указывается сразу и отправляе- 10 def process(self): 11 while 1: мая информация, и адрес получателя. В данном примере предполагает- 12 csocket, caddress = self.socket.accept() ся, что DNS-сервер работает на локальной машине. Вы можете указать 13 csocket.send(‘IamOK server v.0.0. Ready to serve.\n’) здесь свой DNS-сервер или передавать его имя в качестве параметра. 14 csocket.send(‘You are from %s, port %s...\n’ % caddress) И в строках 17–21 из всей полезной информации, возвращаемой 15 while 1: сервером, мы, игнорируя любые возможные ошибки, выбираем только 16 request = csocket.recv(64) IP-адрес, размещаемый по смещению, которое формируется в перемен- 17 if re.match(‘get\s+uptime’, request, re.IGNORECASE): ной start. Результат работы: 18 csocket.send(os.popen(‘/usr/bin/uptime’).read()) serg$ ./udp-client.py donpac.ru 19 elif re.match(‘quit|bye|exit’, request, re.IGNORECASE): 80.254.111.2 20 break 21 else: Всегда к вашим услугам 22 csocket.send(‘Unknown command.\n’) 23 csocket.close() В качестве примера сервера, на этот раз работающего по протоколу TCP, рассмотрим такой код (см Листинг iamok.py). Думаю, вы уже поняли, что он прослушивает указанный порт 24 if __name__ == ‘__main__’: (12345), и при поступлении на него запроса возвращает клиенту выво- 25 serv = IamOK() дэ утилиты uptime, из которого можно почерпнуть время непрерывной 26 serv.process() работы сервера, число подключенных в данный момент пользователей и среднюю загрузку системы. Здесь все должно быть понятно по прошлому уроку. Два отли- приложениях, но и для повышения производительности «автономных» чия – в конструкторе socket.socket() указывается второй параметр – программ. SOCK_STREAM (в данном случае его можно было бы и опустить, т.к. Например, пусть у нас есть каталог с десятком достаточно больших для Internet-домена и так по умолчанию используется протокол TCP). журнальных файлов. Их требуется обработать, подсчитав число строк, И метод bind() осуществляет привязку сокета не к файлу, а к имени в которых встречаются сообщения об ошибках. Данная задача созда- хоста и номеру порта, на котором будут ожидаться входящие соедине- ет нагрузку как на дисковую подсистему, так и на процессор. Но при ния. Кстати, выбирая номер порта, не забывайте, что порты до 1024-го последовательной обработке ресурсы будут расходоваться неэффек- относятся к привилегированным и могут быть задействованы только тивно – пока выполняется чтение очередного файла, процессор проста- пользователем root. ивает. Напротив, во время обработки считанных данных бездействует Наш сервер понимает две команды: «get uptime», по которой воз- диск. Таким образом, здесь есть потенциал для оптимизации за счет вращается информация о времени работы сервера, и «quit» (с двумя обработки каждого файла в отдельном потоке. синонимами – «bye» и «exit»), по которой сеанс завершается. В стандартной поставке Python для работы с потоками есть два Проверить работу сервера можно с помощью обычной модуля – thread и threading. Первый позволяет управлять потоками на telnet-сессии: достаточно низком уровне, второй – использует средства первого для admin@dom:~/lxf/propy/l2$ telnet localhost 12345 предоставления более удобного объектно-ориентированного интерфей- Trying 127.0.0.1... са. Класс threading.Thread предоставляет «шаблон» потока. Для его Connected to localhost.localdomain. использования в своей программе вам нужно переопределить метод Escape character is ‘^]’. run(), описав в нем действия, которые должны выполняться этим пото- IamOK server v.0.0. Ready to serve. ком. Ниже приведен пример, из которого все должно стать понятно. You are from 127.0.0.1, port 2650... Нужно заметить, что при распараллеливании «в лоб», когда просто helo запускается сразу несколько потоков, по одному на каждый обраба- Unknown command. тываемый файл, нас поджидает один неприятный сюрприз (можете get uptime проверить это на досуге) – при старте сценария все созданные потоки 23:09:26 up 58 min, 3 users, load average: 0.04, 0.15, 0.63 одновременно попытаются выполнить чтение нужных им для дальней- quit шей работы данных. Это приведет к жесткой конкуренции за право пере- Connection closed by foreign host. местить головки винчестера в нужное место и вызовет, вопреки ожида- Какая от этого может быть польза – решайте сами. емому, катастрофическое падение производительности. Если размеры файлов сопоставимы с объемом оперативной памяти, система, ко всему «Гуртом и батьку бить веселей» прочему, может «впасть в своппинг», когда считанные одним потоком Потоки, наряду с рассмотренными ранее процессами, являются эффек- данные будут тут же записываться на диск, чтобы освободить место для

тивным способом параллельного выполнения различных задач. В данных другого потока. ряде случаев этим можно воспользоваться не только для одновре- Вот если бы нам удалось организовать работу потоков таким обра- >> менного обслуживания нескольких подключений в клиент-серверных зом, чтобы, пока один из них выполняет чтение файла, другие не обра-

www.linuxformat.ru LXF8(82) АВГУСТ 2006 95

УЧЕБНИК Python – профессионалам << щались к диску... Для решения этой задачи в языке Python доступно несколько средств синхронизации работы потоков. THREAD-TEST.PY Простейшее из них – использование обычных переменных-флагов. Как вы помните, потоки разделяют оперативную память, принадлежа- 1 #!/usr/bin/python щую процессу, в рамках которого они исполняются, так что изменения 2 # -*- coding: utf8 -*- переменных будут «видны» всем процессам. Идея здесь проста: 3 import threading as t if DISKBUSY: 4 import time, re # ожидание else: 5 diskbusy = t.Lock() DISKBUSY = 1 # чтение файла 6 def parseit(lognum): DISKBUSY = 0 7 global errors, total То есть первый поток выставит истинное значение глобальной пере- 8 diskbusy.acquire() менной DISKBUSY и приступит к чтению файла. «Опоздавшие» потоки 9 log = open(‘logs/syslog.%d’ % lognum) будут ждать, пока переменная вновь не примет значение «ложь». 10 lines = log.readlines() 11 diskbusy.release() В такой реализации программисту предстоит решить не такую уж 12 for line in lines: простую, как может показаться на первый взгляд, задачу – грамотно 13 if re.search(‘failed|error’, line): обеспечить ожидание. Бесконечный цикл проверки значения пере- 14 errors += 1 менной слишком сильно нагружает процессор (не даром такие циклы 15 total += 1 называют напряженными). Напрашивающееся time.sleep(1) очень не эффективно – если ресурс освободится до того, как истечет вре- 16 class ParseLog(t.Thread): мя «спячки», то он будет простаивать. [Кроме того, подобный метод 17 def __init__(self, num): синхронизации сам по себе не атомарен – подробности ищите в статье 18 self.lognum = num «Очереди сообщений и семафоры» на стр. 102] 19 t.Thread.__init__(self) Однако в модуле threading есть готовая реализация описанной 20 21 def run(self): выше идеи – класс Lock, который предоставляет программисту так 22 parseit(self.lognum) называемые блокировки, иногда именуемые «мьютексами» (mutex). Идя проста – создается объект данного класса (threading.Lock()), который имеет два метода: acquire() позволяет захватить объект, 23 #------1 release() – освободить его. Метод aquire() является блокирующим: очередной поток, вызвавший его, будет ждать до тех пор, пока мьютекс 24 def test1(): не освободится. 25 global errors, total Дальнейшим развитием идеи блокировок являются семафоры. 26 errors = total = 0 Фактически, семафор – это тот же мьютекс, но позволяющий захва- 27 for i in range(10): тить себя несколько раз. Если вы создадите семафор командой 28 parseit(i) 29 print errors, total, semaphore = threading.Semaphore(3), то его смогут захватить (тем же методом semaphore.acquire()) одновременно три потока (каж- 30 #------2 дый раз отнимая по единице из указанного при инициализации числа). Четвертый поток сможет захватить семафор только после того, как он 31 def test2(): будет высвобожден (semaphore.release()) одним из тех, которые 32 global errors, total удерживают его в настоящее время. 33 errors = total = 0 Впрочем, для нашей задачи лучше всего подходят мьютексы – диск 34 running = [] объявим неразделяемым ресурсом, и посмотрим, какой выигрыш по 35 for i in range(10): времени это нам даст (см. листинг thread-test.py). 36 tr = ParseLog(i) Здесь мы проводим два теста – последовательная обработка (1) и 37 tr.start() 38 running.append(tr) использование потоков с эксклюзивным доступом к диску (2). В строках 16–22 мы создаем подкласс класса Thread, в котором переопределяем 39 for tr in running: метод run(). Запуск потока выполняется в строке 37. Обратите внимание 40 tr.join() на список running (строки 34, 38, 39–40). С его помощью мы отслежи- 41 ваем активность потоков – метод join() заставляет ждать, пока поток не 42 print errors, total, завершит свою работу. Дальнейшая работа основного сценария продол- жится только после того, как отработают все порожденные потоки. 43 start = time.time() В строке 5 мы создаем мьютекс, с помощью которого в строках 8 и 11 44 test1() будет регулироваться доступ потоков к диску. В глобальной переменной 45 print ‘Послед.: %f’ % (time.time() - start) errors ведется подсчет числа строк, в которых есть подстрока «failed» или 46 start = time.time() «error», в total – общее число обработанных строк. Результат работы: 47 test2() 21931 2302755 Послед.: 33.271387 48 print ‘Потоки: %f’ % (time.time() - start) 21931 2302755 Потоки: 22.867245 Как видите, мы получили выигрыш по времени более чем на 30%. Но нужно заметить, что распараллеливание подобных скриптов даст заметный эффект только в том случае, если нагрузка на дисковую сис- Все включено тему сопоставима с нагрузкой на процессор. Если какой-то из ресурсов В поставку Python входит несколько готовых модулей, позволяющих будет востребован намного больше второго, то потокам все равно при- легко и быстро разработать сетевую программу, например, HTTP-сер- дется ждать его высвобождения, а с учетом дополнительных затрат на вер или FTP-клиент. Более детально вы сможете познакомиться с ними обслуживание самих потоков, суммарный результат может оказаться в документации или в хорошо прокомментированных исходных кодах даже хуже, чем при последовательной обработке. самих модулей. Здесь же рассмотрим их возможности обзорно.

96 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Python – профессионалам

HTTP-SERVER.PY FTP-CLIENT.PY

1 #!/usr/bin/python 1 #!/usr/bin/python 2 # -*- coding: utf8 -*- 2 # -*- coding: uft-8 -*-

3 import SimpleHTTPServer as http 3 import ftplib

4 handler = http.SimpleHTTPRequestHandler 4 ftp = ftplib.FTP(‘ftp.freebsd.org’) 5 server = http.BaseHTTPServer.HTTPServer((‘localhost’, 8080), handler) 5 ftp.login(‘ftp’, ‘[email protected]’) 6 server.serve_forever() 6 ftp.cwd(‘pub/FreeBSD’) 7 retfile = ‘README.TXT’ 8 ftp.retrbinary(‘RETR %s’ % retfile, 9 open(retfile, ‘w+’).write, 1024) HTTP 10 ftp.quit() Для работы с HTTP Python предоставляет четыре основных модуля: BaseHTTPServer, SimpleHTTPServer, CGIHTTPServer и httplib. Первые три реализуют простейшие серверы, причем второй и третий модули используют возможности первого, предоставляя программисту Электронная почта более высокоуровневый интерфейс к его методам. Модуль httplib слу- Модули smtplib, poplib, imaplib предоставляют клиентские интер- жит для разработки HTTP-клиентов. фейсы к соответствующим протоколам. Их использование не намного Например, простейший HTTP-сервер может выглядеть таким обра- сложнее рассмотренного выше httplib, и, думаю, вы без труда в них зом (см. листинг http-server.py). разберетесь. Для более тонкой обработки содержимого почтовых сооб- Как видите – всего четыре «рабочих» строчки, и то строка под номе- щений (выделения заголовков, вложений и т.д.) вам помогут модули ром 4 служит лишь для присвоения столь длинного имени метода-обра- rfc822, mimetools, multifile, base64, mailbox и другие. Все они ботчика более короткой и удобной переменной. Вести себя этот сервер очень хорошо прокомментированы и снабжены достаточно подробной будет как «самый настоящий»: он будет возвращаться запрошенные документацией. Простейший способ получить к ней доступ – функция html-страницы или файлы из текущего и вложенных в него каталогов, help(). Например: при наличии файлов index.html или index.htm в каталоге, из кото- >>> import mailbox рого сервер запущен, клиенту по умолчанию (когда указано только имя >>> help(mailbox) каталога) будут отдаваться они. Если индексные файлы отсутствуют, Этот код выведет встроенную справку по работе с модулем mailbox автоматически будет строиться страница-содержание каталога (ана- прямо в окне интерактивного терминала. логично работает Apache с включенным модулем mod_autoindex). В ответ на запрос несуществующего ресурса будут возвращаться сообще- FTP ния об ошибке, и т.д. Для работы с протоколом FTP к вашим услугам модуль ftplib. Работа с Клиентское приложение будет не намного сложнее (см Листинг ним ведется на достаточно низком уровне, и порой напоминает обычный http-client.py). сеанс FTP, выполняемый вручную (см. листинг ftp-client.py). В строках 4–7 формируется нужный HTTP-заголовок, затем получа- В итоге выполнения этого скрипта в текущем каталоге должен поя- ем и распечатываем ответ сервера: виться файл README.TXT, скачанный с ftp-сервера ftp.freebsd.org. admin@dom:~/lxf/propy/l2$ ./http-client.py 200 OK Заключение Test page Итак, на этом мы завершим знакомство с основными сетевыми возмож- ностями языка Python. Хочу заметить, что они выходят далеко за рамки

It is a test page

простейших сценариев, пригодных для тестирования «больших» серве- ров или встраивания некоторых сетевых возможностей в ваши приложе- Конечно, чтобы представить эту страницу в графическом отформа- ния. Приведу лишь несколько примеров. Так, в 90-х годах большой попу- тированном виде, придется приложить еще немало усилий. Но это, как лярностью пользовался web-браузер Grail, разработанный на Python и говорится, уже дело техники. предоставляющий весьма широкие для того времени возможности по обработке интернет-страниц – полная поддержка стандарта HTML 2.0 HTTP-CLIENT.PY и, в значительной мере, HTML 3.2, поддержка различных форматов изображений и звука, способность работать с языком разметки SGML, поддержка FTP, и т.д. 1 #!/usr/bin/python 2 # -*- coding: utf8 -*- Менеджер почтовых рассылок Mailman обеспечивает широкие воз- можности по управлению списками рассылок, включая web-интер- 3 import httplib фейс. Интернет-сервер Medusa обладает достаточно хорошими характеристиками, позволяя использовать его как для тестовых ЧЕРЕЗ 4 host = httplib.HTTP(‘localhost:8080’) целей, так и для промышленной эксплуатации. Популярный 5 host.putrequest(‘GET’, ‘/testpage.html’) сервер web-приложений Zope также полностью разработан МЕСЯЦ 6 host.putheader(‘accept’, ‘text/html’) на языке Python. Мы изучим работу с базами данных 7 host.endheaders() Таким образом, этот язык способен решать весьма серь- и посмотрим на Python через езные сетевые задачи, причем эти решения, как правило, 8 code, msg, headers = host.getreply() призму web-программирования обладают весьма высокой переносимостью между различны- 9 print code, msg ми системами и платформами. 10 if code == 200: В следующий раз мы рассмотрим способы взаимодействия с 11 print host.getfile().read() базами данных, а также убедимся, что Python очень хорош и для раз- работки динамических web-сайтов. LXF

www.linuxformat.ru LXF8(82) АВГУСТ 2006 97 УЧЕБНИК Qt/KDE

ПРОГРАММИРОВАНИЕ НА C++ Создаем стандартное KDE-приложение

ЧАСТЬ 5 Сегодня Андрей Боровский расскажет вам, как создаются настоящие KDE-приложения. Ну, или почти настоящие... Если в чем-то уверен – проверь еще раз. Девиз параноика.

В прошлый раз мы научились создавать простейшие МЕСЯЦ KDE-приложения, а также выполнять переводы приложений KDE на разные языки. Было показано, как можно заставить НАЗАД наше приложение использовать ресурсы другого приложения и как добавлять переводы к уже существующим программам. В принципе, На написали и перевели на русский изложенных навыков достаточно, чтобы заново выполнить перевод всей язык простейшее KDE-приложение среды KDE (сделать, например, перевод с особым цинизмом). Однако, приложения из прошлой статьи не выполняли никакой полезной работы, в том числе потому, что у них отсутствовал сколько-нибудь развитый пользовательский интерфейс. В этой статье мы не будем заниматься переводами (если захотите, можете выполнить их сами), зато напишем «почти настоящее» приложение KDE, использующее меню, панель быс- трого доступа и другие интерфейсные элементы, предоставляемые KDE. Наше приложение «почти» (а не совсем) настоящее потому, что оно все еще игнорирует некоторые важные функции среды KDE, однако его уже НА ДИСКЕ можно использовать в практических целях. Работающее приложение (исходные тексты вы найдете на диске) выглядит вполне серьезно (рис. Рисунок 1. Программа “images”. • Код примеров статьи 1). Программа позволяет просматривать графические файлы, а также применять к изображениям преобразования: из цветного в черно-белое, изменение контраста и интенсивности (соответствующая функция назы- из первого добавлением View. Класс images является потомком класса вается именно так – intensity). KMainWindow, реализующего главное окно офисного приложения. Окно Мы начнем разработку нашего приложения в среде KDevelop, исполь- KMainWindow позволяет легко управлять такими элементами интер- зуя заготовку Application framework (надеюсь, вы помните, как ее фейса как главное меню, панель инструментов, строка состояния и, конеч- найти). Назовем наш проект images. В результате выполнения соответс- но, представление. Представление реализовано в классе imagesView. твующего мастера будет создана директория images с поддиректориями Объект класса images выполняет роль главного визуального элемента и много файлов .cpp, .h и других типов. Это обилие может напугать начи- для объекта app, класса KApplication. Объект app объявлен в файле нающего программиста, но на самом деле все не так страшно. Application main.cpp, в котором реализована функция main() нашего приложения framework представляет собой заготовку классического офисного прило- (нам не нужно модифицировать этот файл). Объекты menuBar, toolBar жения KDE. У него есть строка меню, панель быстрого доступа, строка и statusBar (все они являются членами класса KMainWindow) представ- состояния и центральная область, которая используется для ввода/выво- ляют соответственно строку меню, панель инструментов и строку состоя- да данных (в терминологии «офисного» программирования эта область ния. Схема взаимодействия классов приложения не должна выглядеть называется представлением (view). Все эти элементы в нашем прило- очень сложной (рис. 2, под именами классов подписаны имена объектов жении уже присутствуют. Самые важные и интересные файлы для нас этих классов, объявленных в классе images). Класс images выполняет – images.h/cpp и imagesview.h/cpp. Эти файлы содержат опреде- роль связующего звена между элементами пользовательского интерфей- ления классов images и imagesView соответственно. Имя первого класса са и представлением данных imagesView. Методы этого класса являются совпадает с именем проекта и приложения, имя второго класса получено обработчиками событий интерфейса и вызывают соответствующие мето-

98 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Qt/KDE

ЕДИНЫЕ ДЕЙСТВИЯ

Концепция единых действий должна быть хорошо знакома тем, кто командой. Как вы уже догадались, концепция единых действий сущес- программировал в Borland Delphi и C++ Builder. В приложениях с гра- твенно упрощает работу программиста. В рамках этой концепции все фическим интерфейсом, как правило, одну и ту же команду можно общие элементы команды объединяются в один объект (в случае KDE, вызвать несколькими способами (из основного меню, с панели инстру- объект класса KAction). Создав объект KAction для определенной ментов, из контекстного меню). При этом во всех формах вызова команды, мы указываем объекту, в каких элементах интерфейса дол- команды обычно используются одни и те же элементы – пиктограмма, жен присутствовать вызов этой команды. Об остальном объект KAction всплывающая подсказка, и, конечно, функция-обработчик команды. позаботится сам. Если мы свяжем этот объект с одним из меню, будет До появления концепции единых действий (actions) программистам создана строка меню, если с панелью инструментов – будет создана приходилось выполнять много повторяющейся работы: для каждого кнопка и т.п. Если в какой-то момент команда должна быть заблокиро- элемента интерфейса нужно было явным образом указывать пиктог- вана, нам достаточно вызвать метод setEnabled(FALSE) для объекта рамму, подсказку и обработчик команды. KAction для того, чтобы все визуальные представления команды были Далее сложности нарастали: если в определенном состоянии про- заблокированы. Аналогично выполняется и разблокирование команды. граммы команду требовалось заблокировать, необходимо было отсле- Можно сказать, что объект KAction – это центр управления всеми эле- живать состояния всех элементов интерфейса, связанных с этой ментами интерфейса, связанными с соответствующей командой.

ды класса представления. Теперь приступим к реализации методов: imagesView::imagesView(QWidget *parent) : QLabel(parent), DCOPObject(“imagesIface”) { setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); }

imagesView::~imagesView() { }

void imagesView::toBlacknWhite() { Рисунок 2. Взаимодействие классов приложения. if (pixmap() == NULL) { Для того, чтобы открыть в KDevelop файлы исходных текстов, нужно kdDebug() << k_funcinfo << “Trying to modify an empty pixmap” << открыть вкладку Группы файлов, расположенную у левого края главного endl; окна среды, и выбрать в ней группу Sources. Перед вами появится список return; файлов исходных текстов. Откройте нужный файл щелчком мыши. } В файле imagesview.h внесите изменения в объявление класса KPixmap kpm(* pixmap()); imagesView так, чтобы он стал потомком класса QLabel (напомню, что KPixmapEffect::toGray(kpm, FALSE); класс QLabel способен выводить изображения). Класс imagesView setPixmap(kpm); является также потомком класса imagesIface, но эта «наследствен- } ная линия» нас сейчас не интересует, и мы оставим ее без изменений. Естественно, в файл imagesview.h следует добавить директиву void imagesView::setContrast(int c) #include { Удалим из объявления imagesView ненужные члены и добавим нуж- if (pixmap() == NULL) ные. После этого объявление класса будет выглядеть так: { class imagesView : public QLabel, public imagesIface kdDebug() << k_funcinfo << “Trying to modify an empty pixmap” << { endl; Q_OBJECT return; public: } imagesView(QWidget *parent); KPixmap kpm(* pixmap()); virtual ~imagesView(); KPixmapEffect::contrast(kpm, (c – 50)*5); void toBlacknWhite(); setPixmap(kpm); void setContrast(int c); } void setIntensity(int i); }; void imagesView::setIntensity(int i) Помимо конструктора и деструктора у класса imagesView появились { три новых метода. Эти методы выполняют преобразования изображения, if (pixmap() == NULL) хранящегося в imagesView. Метод toBlacknWhite() выполняет пре- { образование палитры из цветной в черно-белую, метод setContrast() kdDebug() << k_funcinfo << “Trying to modify an empty pixmap” << позволяет настроить контрастность изображения, а с помощью метода endl; setIntensity() можно изменить интенсивность. return; Теперь перейдем в файл imagesview.cpp. Добавим в этот файл две }

директивы включения заголовочных файлов: KPixmap kpm(* pixmap()); #include KPixmapEffect::intensity(kpm, (i-50)/10); >> #include setPixmap(kpm);

www.linuxformat.ru LXF8(82) АВГУСТ 2006 99 УЧЕБНИК Qt/KDE

} >> >> В конструкторе класса мы устанавливаем горизонтальное и верти- В открывшемся диалоговом окне (рис. 3) укажите имя нового файла кальное выравнивание для содержимого метки. – SettingsDialog и тип – Dialog (ui). После этого будет открыт редактор Для того, чтобы понять, как работают три метода, выполняющих окон, подобный Qt Designer, однако для того, чтобы добраться до окна преобразования изображения, рассмотрим классы KDE KPixmap и формы, придется «разгрести» множество служебных окон (при разреше- KPixmapEffect. Первый из этих классов представляет собой улучшен- нии 1024x768 окно формы оказывается полностью «похороненным» под ный вариант QPixmap, второй класс предназначен для применения раз- ними). Перенесите в окно формы две кнопки PushButton и ползунок личных эффектов к изображению, хранящемуся в KPixmap. Эффекты Slider и объедините их в группы (рис. 4). Сигнал clicked() кнопки OK реализованы в виде статических методов класса KPixmapEffect. Методы соедините со слотом accept() класса Form1 (для тех, кто забыл, напом- модифицируют содержимое переданного им объекта (а не создают ним, что соответствующее окно вызывается командой Соединения... новый). Для выполнения обработки изображения нам приходится преоб- контекстного меню или с помощью клавиши F3). Сигнал clicked() кноп- разовывать QPixmap в KPixmap. Фактически наш класс imagesView ки Cancel следует соединить со слотом reject() класса Form1. Вызов представляет собой модифицированный вариант QLabel, способный слотов accept() и reject() приводит к закрытию диалогового окна. При выполнять преобразования над загруженным изображением. Для выво- этом значение, которое окно передает программе после своего закрытия, да сообщения об ошибке (которая никогда не должна возникнуть) мы определяет, какая из кнопок была нажата. используем функцию kdDebug(), которая возвращает нам объект потока Теперь вернитесь в Automake Manager, щелкните правой кнопкой C++ для вывода отладочных сообщений (можно было бы воспользоваться мыши по имени файла SettingsDialog.ui и в контекстном меню выбе- и printf(), но это же все-таки C++!). Макрос k_funcinfo выводит инфор- рите команду Создать или выбрать класс реализации.... мацию о функции, из которой был вызван. Функция kdDebug() и макрос k_funcinfo объявлены в заголовочном файле kdebug.h. В том же фай- ле объявлен макрос k_lineinfo, который ограничивается вводом инфор- мации о файле строке исходного текста, в которой был вызван. Прежде чем мы перейдем к написанию класса images, ответствен- ного за поведение интерфейса нашей программы, нам понадобится создать один дополнительный элемент интерфейса – диалоговое окно для настройки параметров изображения. Это окно изображено на при- веденном выше снимке экрана. Оно содержит горизонтальный ползунок (объект класса QSlider) и две кнопки – OK и Cancel. Будет логично, если для создания диалогового окна мы воспользуемся методами визуаль- ного программирования, и спроектируем окно в самой среде KDevelop, используя встроенный в нее редактор KDevelop Designer (см. врезку). Рисунок 4. Проект диалогового окна. В окне Automake Manager, щелкните правой кнопкой мыши по строке images (Программа в bin) и выберите команду Создать файл. На самом деле мы создаем не класс реализации, а наследуем от класса формы. В открывшемся окне введите имя нового клас- са – SettingsDialogImpl. Закройте окна созданных файлов settingsdialogimpl.h и settingsdialogimpl.cpp. В редакторе форм создайте новый слот (команда Слоты... контекстного меню) void sliderMoved(int i) и соедините его с сигналом sliderMoved(int) объек- та slider1. Теперь закройте окно визуального редактора (не забыв сохра- нить файл SettingsDialog.ui) и откройте файл settingsdialogimpl.h. В объявление класса SettingsDialogImpl добавьте закрытую перемен- ную _sliderpos и метод getSliderValue(): class SettingsDialogImpl: public Form1 { Q_OBJECT public: Рисунок 3. Окно создания нового файла. SettingsDialogImpl(QWidget *parent = 0, const char *name = 0); public slots: АЛЬТЕРНАТИВЫ QT DESIGNER int getSliderValue(); protected slots: В свое время Linux-разработчиками было начато немало проектов, void sliderMoved(int i); предназначенных для расширения возможностей визуального про- private: граммирования Qt. Некоторые из этих проектов (их еще можно найти int _sliderpos; на сайтах Qt Community) в идеале должны были приблизиться по }; удобству и простоте разработке к таким средствам, как Delphi. Однако, В файл settingsdialogimpl.cpp добавьте реализацию метода проверку временем и популярностью выдержали лишь некоторые из getSliderValue()и слота sliderMoved(): них, являющиеся простыми надстройками над Qt Designer. В вашем дистрибутиве Linux, скорее всего, присутствуют два таких альтерна- void SettingsDialogImpl::sliderMoved(int i) тивных редактора пользовательского интерфейса: KDevelop Designer { и Kommander. KDevelop Designer отличается от Qt Designer примерно _sliderpos = i; также, как KPixmap от QPixmap, то есть, практически ничем. Стоит } упомянуть также «динамический редактор диалогов» Kommander, int SettingsDialogImpl::getSliderValue() который создает самостоятельные диалоговые окна и окна мастеров, { для использования, например, в сценариях оболочки. В этом редакто- return _sliderpos; ре можно не только сконструировать окно со всеми дочерними визу- } альными элементами, но и проверить, как работают связки сигнал- На этом разработка диалогового окна закончена. В файл images. слот в новом окне. cpp необходимо добавить директиву

100 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Qt/KDE

#include “settingsdialogimpl.h” Создаем меню Processing. Подменю главного меню должно быть Теперь мы можем приступить к написанию, а точнее, к модификации объектом класса KPopupMenu. Для того, чтобы указать, что новое класса images. Дело в том, что этот класс, связующее звено нашего при- всплывающее меню принадлежит главному меню, мы вызываем метод ложения, довольно сложен и значительная его часть была сгенерирована insertItem() поля menuBar (к которому мы получаем доступ с помощью автоматически, так что лучше всего трансформировать класс, созданный одноименного метода). Кроме указателя на объект класса KPopupMenu по умолчанию, в тот класс, который нам нужен, путем постепенных изме- методу insertItem() передается имя нового меню, его идентификатор нений. Что мы хотим изменить в классе images? Мы хотим удалить все id и индекс – позиция в главной строке меню (значению 1 соответствует ненужное. Наше приложение предназначено для редактирования сущес- вторая позиция, после File). Идентификатор должен быть положительным твующих графических файлов, но не для создания новых, поэтому уда- числом. Если insertItem() передать отрицательное значение идентифи- лим метод fileNew() Кроме того, дабы не усложнять наш проект сверх катора, insertItem() вернет значение нового уникального идентифика- меры, мы удалим все, что связано с выводом данных на печать, в том тора для меню. числе метод filePrint() и поле m_printer. На поле m_printer ссыла- toolBar()->insertLineSeparator(3); ется конструктор images, в него тоже нужно внести изменения. Удалим Добавляем линию-разделитель методы saveProperties() и readProperties() – они нам сейчас не KAction * command = new KAction(i18n(“To &Black && White”), нужны. Также следует удалить содержимое методов load(), fileSave() и QIconSet(QPixmap(“c1.xpm”)), 0, this, fileSaveAs(), а сами методы – оставить. Если удаление всего ненужного SLOT(proc_toBlacknWhite()), выполнено грамотно, приложение должно скомпилироваться и запус- actionCollection(), “bw_command”); титься. Возможно, вы заметили, что хотя код, выполняющий команды Создаем объект-действие для команды To Black & White. Файл File|New и File|Print удален, пункт меню и кнопка быстрого доступа оста- c1.xpm содержит пиктограмму команды (этот файл должен быть досту- лись. Для того, чтобы удалить их, нужно прейти в метод setupActions() пен программе во время выполнения). Класс QIconSet преобразует пере- и удалить строки данный ему графический файл в набор пиктограмм различный размеров KStdAction::openNew(this, SLOT(fileNew()), actionCollection()); и форм (в том числе, в черно-белую пиктограмму для заблокированной KStdAction::print(this, SLOT(filePrint()), actionCollection()); команды). Слот proc_toBlacknWhite() будет содержать код обработки Что делали две удаленные строки? Они добавляли в приложения два команды. Последний параметр – имя объекта-команды. Имена могут быть стандартных действия (см. врезку). Для стандартных действий система у всех объектов Qt/KDE, наследующих QObject, но это первый случай, сама предоставляет пиктограмму, название и клавишу быстрого доступа. когда они нам действительно пригодятся. Статическим методам класса KStdAction передается указатель на класс, command->setToolTip(i18n(“Transforms image palette to grayscale”)); реализующий обработку команды, слот, обрабатывающий команду, а command->setEnabled(FALSE); также указатель на коллекцию действий actionCollection (возвращается В этих строках мы добавляем всплывающую подсказку и указыва- методом actionCollection()). Программа будет работать даже если сло- ем, что по умолчанию команда заблокирована. Последнее нужно для тов, связанных с действиями, не существует, только в стандартный поток того, чтобы пользователь не пытался обрабатывать еще не существующее вывода будет выведено предупреждающее сообщение. Такова динами- изображение. Правда, методы класса imagesView все равно этого не ческая природа модели сигнал/слот. допустят, но лучше перестраховаться (см. эпиграф). Обратите внимание, что мы не прибегаем к визуальному программи- command->plug(procMenu); рованию при проектировании главного окна нашего офисного приложения. command->plug(toolBar(), -1); Дело в том, что для разработки главного окна визуальное программиро- С помощью метода plug() мы указываем объекту действия, что вание нам и не нужно, поскольку вид этого окна однозначно определен соответствующая команда должна быть доступна в меню procMenu и на принципами построения приложения «офисного» типа. панели быстрого доступа. Теперь подумаем о том, что следует добавить в класс images. В глав- Добавление двух остальных команд выполняется аналогично. ную строку меню приложения мы добавим пункт Processing, который Добавим вызов метода setup_Controls() в конструктор images после будет открывать подменю, содержащее команды обработки изображе- вызова setupGUI(). Теперь можно запустить программу и полюбоваться ния To Black & White (в черно-белый), Contrast (контраст) и Intensity на новый интерфейс. Правда, слоты для новых команд еще не созданы, (интенсивность). Кнопки новых команд нужно добавить на панель быстро- так что новые команды пока не работают. Прежде чем создать слоты, вер- го доступа. Все эти изменения должны быть отражены в классе images, немся в конструктор images и добавим в него строки отвечающем за интерфейс. Ну и конечно, в images нужно добавить код, actionCollection()->setHighlightingEnabled(TRUE); выполняющий новые команды. Именно в таком порядке мы и будем вно- connect(actionCollection(), сить изменения в класс. SIGNAL(actionStatusText(const QString&)), Весь код, отвечающий за добавление новых элементов интерфейса, statusBar(), SLOT(message ( const QString& ))); мы сгруппируем в новом методе setup_Controls(). В среде KDevelop connect(actionCollection(), SIGNAL(clearStatusText()), новые методы классов можно добавить вручную, а можно – автоматичес- statusBar(), SLOT(clear())); ки. Откройте вкладку Классы, расположенную с правой стороны главного после вызова statusBar()->show(). Это стандартная последователь- окна KDevelop. Раскройте группу src, щелкните правой кнопкой мыши по ность вызовов, предназначенная для того, чтобы всплывающие подсказки классу images и в открывшемся контекстном меню выберите команду отображались в строке состояния. Теперь мы можем добавить слот proc_ Добавить метод.... Откроется окно создания нового метода, похожее на toBlacknWhite(), и слоты для двух других команд: proc_Contrast() окно создания нового слота в Qt Designer. и proc_Intensity(). В коде этих слотов (см. исходные тексты на диске) После добавления нового метода можно приступать к его реали- для нас нет почти ничего нового, отметим только один момент. Для того, зации. В методе setup_Controls() мы создаем подменю Processing чтобы разблокировать/заблокировать команды пользовательского главного меню, добавляем разделительную полосу на панель быстрого интерфейса, нужно получить доступ к соответствующему объекту ЧЕРЕЗ доступа (просто для красоты), создаем и настраиваем три объекта дейс- действия. Доступ к коллекции объектов мы получаем с помощью твия (объекты классы KAction), и делаем соответствующие команды метода actionCollection(), а сами объекты можем найти по име- МЕСЯЦ доступными в меню и на панели быстрого доступа. Рассмотрим все эти ни – строке, переданной конструктору Kaction. Мы научимся создавать этапы подробнее. Мы научились создавать приложения KDE со стандартным специализированные KDE- void images::setup_Controls() графическим интерфейсом. Но в мире программирования KDE приложения и познакомимся со { это – только начало. В следующих статьях мы узнаем, как создавать службами KDE. KPopupMenu * procMenu = new KPopupMenu(); //Processing KDE-приложения специальных типов, а также познакомимся с некото- menuBar()->insertItem(i18n(“&Processing”), procMenu, 0, 1); рыми полезными службами KDE, такими как менеджер сессий. LXF

www.linuxformat.ru LXF8(82) АВГУСТ 2006 101 УЧЕБНИК Программирование для Unix

ПРОГРАММИРОВАНИЕ ДЛЯ UNIX Очереди сообщений и семафоры

ЧАСТЬ 3 Каналы – отнюдь не единственное средство межпроцессного взаимодействия в Unix. В этом выпуске Андрей Боровский расскажет еще о нескольких механизмах IPC: очередях сообщений, разделяемой памяти и семафорах.

Я должен отметить, что основная цель компьютерных наук, – устранение неразберихи – так и не была выполнена Эсгар Дейкстра

Мы продолжаем изучение механизмов взаимодействия меж- или несколько очередей для обмена сообщениями, а одна очередь сооб- МЕСЯЦ ду процессами в Linux. Каналы различных типов, рассмотрен- щений может использоваться совместно более чем двумя процессами. ные в предыдущей статье, существовали в Unix практически Сообщение определяется как «последовательность байтов, передавае- НАЗАД с самого начала. Позже к ним были добавлены и другие механизмы мая от одного процесса другому». Система сообщений SVID обладает межпроцессного взаимодействия. Мы остановимся на трех механизмах, следующими свойствами: Мы начали рассмотрение которые появились в Unix System V и были описаны в System V Interface • Возможность накопления сообщений в очереди. Приложения, исполь- механизмов IPC с каналов Definition (SVID). В настоящее время эти механизмы поддерживаются зующие сообщения для обмена данными, создают свою собственную почти всеми Unix-системами (очереди сообщений не поддерживаются в очередь сообщений, которая может (и должна) быть удалена приложе- Mac OS X 10.3 – см. список литературы 1). Интерфейсы трех механиз- нием-владельцем в момент завершения его работы. мов SVID IPC подобны. Чтобы разные процессы могли получить доступ • Возможность произвольного выбора сообщений из очереди на основе к одному объекту системы, они должны «договориться» об идентифи- назначенных им идентификаторов. Эта возможность позволяет органи- кации этого объекта. Роль идентификатора для всех объектов System V зовать приоритетную обработку сообщений, а также идентифицировать IPC выполняет ключ – уникальное число-идентификатор объекта. Чтобы сообщения, посылаемые разными приложениями, участвующими в использовать один и тот же объект, программы должны использовать обмене данными. один и тот же ключ. Для каждого объекта IPC предусмотрены специаль- • Произвольная структура и размер сообщения. НА ДИСКЕ ные функции чтения и записи, а также управляющая функция. Последний пункт требует уточнения. Максимальный размер сооб- щения и максимальное количество сообщений в очереди ограничены, • Код примеров статьи Сообщения причем не существует единого для всех Unix-систем способа опреде- Механизм сообщений Linux похож на механизм сообщений, использу- лить эти ограничения. В Linux максимальная длина сообщения в байтах емый в графических многооконных средах. Сообщения накапливают- задана константой MSGMAX, определенной в фале , а ся в очередях и могут изыматься из очередей последовательно или в максимальное число сообщений – константой MSGMNG из того же произвольном порядке. Каждая группа процессов может создать одну файла. На платформе IA32 размер сообщения не может превышать 8

102 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Программирование для Unix

килобайт, а длина очереди – 16384 (16K) сообщений. Структура данных, Текст программы (msgserv.c), как всегда, начинается с заголо- использующаяся для передачи сообщений, может быть определена вочных файлов. Все типы, константы и функции, использующиеся при следующим образом: работе с сообщениями, становятся доступны при включении в текст struct msgp программы файлов и . Очередь сообщений { создается при помощи функции msgget(2): long mtype; msgid = msgget(KEY, 0666 | IPC_CREAT); ... // Любые другие поля Первый параметр msgget() – ключ, гарантирующий уникальность }; очереди. Он числовой, поэтому его можно спутать с другим числом – Поле mtype является единственным обязательным полем в приве- идентификатором очереди, который присваивает система. Помните, что денной структуре. В этом поле хранится произвольный идентификатор ключ нужен только для открытия очереди, а для работы с ней использует- сообщения, который может интерпретироваться как тип передаваемых ся идентификатор. Второй параметр представляет собой комбинацию мас- данных. Кроме поля mtype, структура данных сообщения может содер- ки прав доступа к создаваемой очереди (аналогичной маске прав доступа жать любое количество других полей любых типов. к именованным каналам) и нескольких дополнительных флагов: кажется, В качестве примера использования очередей рассмотрим совмес- программист, писавший функции SVID IPC, сильно экономил на перемен- тную работу двух программ – клиента и сервера. Исходные тексты ных-параметрах. Флаг IPC_CREATE указывает, что в результате вызова вы найдете на диске (файлы msgcli.c и msgserv.c соответственно). msgget() должна быть создана новая очередь. При установке флага IPC_ Чтобы программы могли обмениваться сообщениями, они должны EXCL, функция msgget() вернет сообщение об ошибке, если очередь с использовать один и тот же формат сообщений и идентификатор очере- указанным ключом уже существует. В случае успеха msgget() возвраща- ди. Эти данные, общие для клиента и сервера, удобно вынести в отдель- ет положительное значение – идентификатор созданной очереди. ный заголовочный файл (мы назовем его msgtypes.h). Наша структура Передача и получение сообщений выполняется при помощи фун- данных выглядит так: кций msgsnd(2) и msgrcv(2) соответственно. Первым параметром #define MAXLEN 512 обеих функций является идентификатор очереди, возвращенный фун- struct msg_t кцией msgget(). Во втором параметре передается размер структуры { сообщения. Как было сказано выше, программа, читающая сообщения long mtype; из очереди, должна указать размер сообщения, соответствующий ожи- int snd_pid; даемому идентификатору, и может читать сообщения разного размера char body[MAXLEN]; в ситуации, когда программа ждет сообщений определенного типа. На }; диске есть пример polymsgserv/polymsgcli, демонстрирующий этот Помимо поля mtype, мы вводим поле snd_pid, которое будет содер- подход. Третьим параметром функции msgrcv() является идентифика- жать идентификатор процесса-отправителя сообщения, и поле body, тор сообщения. Если значение этого параметра больше нуля, из очереди которое предназначено для текста сообщения. Мы могли бы определить будет извлечено сообщение с соответствующим значением поля mtype. несколько разных структур для сообщений разных типов. Значение поля Если этот параметр равен нулю, из очереди будет извлечено первое mtype указывало бы, с какой структурой мы имеем дело. Поле mtype по порядку сообщение, а если параметр отрицательный, из очереди может быть не только идентификатором типа сообщения. С его помо- будет извлечено первое сообщение, чей идентификатор меньше либо щью можно указать, например, приоритет сообщения. Используя функ- равен абсолютному значению параметра. Последний параметр в фун- цию произвольной выборки сообщений, приложение может считывать в кциях msgsnd() и msgrcv() позволяет задать дополнительные флаги. первую очередь сообщения с более высоким приоритетом. Обычно функция, читающая сообщение из очереди, приостанавливает Кроме структуры сообщения нам следует определить ключ очере- выполнение программы до тех пор, пока извлечение сообщения не будет ди. Для получения уникального ключа можно использовать функцию выполнено, то есть пока в очереди не появится сообщение ожидаемого ftok(3), однако руководство по работе с функциями SVID рекомендует типа. Именно так работает эта функция в наших программах. При указа- выбирать значения самостоятельно, поэтому в нашем примере мы опре- нии флага IPC_NOWAIT, msgrcv() вернет сообщение об ошибке, если делим ключ как константу в файле msgtypes.h: на момент вызова в очереди отсутствует подходящее сообщение. #define KEY 1174 В нашем примере сервер и клиент используют разные идентифика- Маловероятно, что в системе уже существует другая очередь сооб- торы для посылаемых сообщений. Это сделано для того, чтобы програм- щений с ключом 1174. В принципе, программа, создающая объект IPC, ма, вызывающая последовательно msgsnd() и msgrcv(), не извлекала может узнать, существует ли уже такой объект (см. ниже использова- из очереди свои собственные сообщения. Наш сервер записывает в ние флага IPC_EXCL), однако толку от этого не много. Допустим, про- очередь сообщения со значением mtype, равным 1, а считывает – со цесс установил, что объект с указанным идентификатором существует, значением, равным 2 (у программы-клиента все наоборот). но что ему делать? Процесс может выбрать другой идентификатор Для удаления очереди используется функция msgctl(2), которая, из какого-нибудь пула, однако о новом идентификаторе нужно как-то как и все функции *ctl(), может выполнять множество разных дейст- оповестить другие процессы. Для оповещения можно использовать вий (например, получение данных о состоянии очереди). Первый пара- именованные каналы, для которых, в свою очередь, необходим уни- метр этой функции, как всегда, идентификатор очереди, второй пара- кальный идентификатор... Уникальность идентификатора файловых метр – команда (IPC_STAT, IPC_SET или IPC_RMID). Третий параметр каналов основана на уникальности имен файловой системы (имеют- используется в вызовах-запросах (то есть, когда второй параметр равен ся в виду полные имена, начиная с корня). Функция ftok(), которую IPC_STAT), а также для конфигурации очереди (команда IPC_SET). В мы рассмотрим ниже, тоже пытается генерировать идентификаторы, нем передается указатель на структуру msgid_ds, поля которой содер- основываясь на уникальности имен файловой системы. Кроме того, жат значения различных параметров очереди. Функция возвращает ста- проверка существования объекта IPC может «обмануть» процесс, тус выполнения команды. Вызов если существующий объект был создан предыдущим экземпляром msgctl(msgid, IPC_RMID, 0); того же процесса, выгруженным из системы в результате серьезной удаляет очередь с идентификатором msgid. ошибки. Рассмотрим теперь программу-клиент. Первым делом она должна Рассмотрим теперь работу сервера. Сервер получает сообщение, получить идентификатор очереди. Для этого используется функция переданное клиентом, распечатывает сообщение на экране терминала, msgget() с тем же ключом очереди, что и у сервера, с маской прав

возвращает клиенту сообщение “ОК!”, ждет подтверждения, что клиент доступа, но без дополнительных флагов. Она возвращает или иденти- получил ответ, затем удаляет очередь и завершает работу. Программу- фикатор уже существующей очереди с данным ключом или -1, если >> сервер следует запустить до запуска программы-клиента. очередь не существует:

www.linuxformat.ru LXF8(82) АВГУСТ 2006 103 УЧЕБНИК Программирование для Unix

int shmid; НЕАТОМАРНОСТЬ СПИН-БЛОКИРОВОК struct memory_block * mblock; key = ftok(FTOK_FILE, 1); Простейший алгоритм разделения доступа (кото- В многозадачной системе (особенно на нескольких shmid = shmget(key, sizeof(struct memory_block), 0666 | IPC_CREAT); рый сразу приходит в голову) можно описать схе- процессорах) процесс, ожидающий доступа к разде- mblock = (struct memory_block *) shmat(shmid, 0, 0); матически с помощью следующей конструкции: ляемому ресурсу, может «вклиниться» в тот момент, Как уже отмечалось, ftok() генерирует ключ, используя в качест- while (spin_lock == TRUE); когда другой процесс уже проверил, но еще не изме- ве «затравки» имя файла, в нашем случае – имя исполнимого файла spin_lock = TRUE; нил значение spin_lock. Второй процесс проверит сервера. Использование имени самой программы для генерации ключа ... // Доступ к разделяемому ресурсу значение, все еще равное FALSE, и оба процесса ока- до некоторой степени гарантирует уникальность ключа. Функции для spin_lock = FALSE; жутся в критической области и получат доступ к раз- работы с разделяемой памятью объявлены в файлах sys/ipc.h sys/ Проблема заключается в том, что этот алгоритм деляемому ресурсу. Описанная проблема вызвана shm.h. Разделяемый блок памяти выделяется при помощи функции простых спин-блокировок (spin locks) не только тем, что операция «проверить значение – изменить shmget(2), которой передаются три параметра. В первом парамет- прожорлив, но и не гарантирует надежного разгра- значение» неатомарна, то есть ее выполнение может ре передается ключ, идентифицирующий выделяемый блок памяти. ничения доступа. Допустим, что один процесс начал быть прервано другим процессом. Первый алгоритм, Второй параметр позволяет указать размер блока в байтах. В третьем проверять значение переменной spin_lock, дождал- гарантирующий синхронизацию при использовании параметре передается маска прав доступа и флаги, аналогичные фла- ся того момента, когда оно станет равно FALSE, и неатомарных операций, придумал Т. Деккер, а приме- гам msgget(). Функция shmget() возвращает идентификатор выде- переходит к строке нил Э. Дейкстра в 1965 году. В 1981 году Г.Петерсон ленного блока памяти (его не следует путать с указателем на блок). spin_lock = TRUE; предложил более простой алгоритм. Чтобы получить указатель на созданный блок разделяемой памяти, этот блок нужно отобразить в локальное адресное пространство процесса. Отображение блока разделяемой памяти в адресное пространство про- msgid = msgget(KEY, 0666); цесса выполняет функция shmat(2). У этой функции тоже три пара- >> >> if (msgid == -1) метра. Первый параметр – идентификатор, возвращенный функцией { shmget(). Во втором параметре передается желательный начальный printf(“Server is not running!\n”, msgid); адрес для отображения разделяемого блока в локальном адресном про- return EXIT_FAILURE; странстве. Функция shmat() «постарается» отобразить разделяемый } блок в локальное пространство, начиная с указанного адреса, но успеш- Далее клиент считывает строку, вводимую пользователем, фор- ный результат не гарантирован. Если во втором параметре shmat() мирует сообщение, записывая в поле mtype значение 2, отправляет передать нулевое значение, функция сама выберет начальный адрес сообщение и ждет ответ сервера – сообщения с идентификатором 1. области отображения. Значение желательного адреса должно быть Скомпилируйте обе программы (можете просто скомандовать make выравнено по границе страничных областей. Можно также не выравни- msgdemo), запустите сначала сервер, потом, в другом окне терминала, вать адрес, но передать в третьем параметре функции флаг SHM_RND, клиент. Напечатайте в окне клиента строку и нажмите ввод. и тогда функция сама скорректирует значение адреса. Среди дополни- тельных флагов, которые можно передать в третьем параметре, отметим Разделяемая память флаг SHM_RDONLY, который присваивает отображаемой области ста- Спецификация SVID описывает интерфейс для работы с разделяемы- тус «только для чтения». При успешном выполнении функция shmat() ми блоками памяти. Разделяемые блоки памяти представляют собой возвращает указатель на начало области отображения, с которым мы область памяти, отображенную адресное пространство нескольких можем работать как с обычным указателем на выделенный блок памяти. процессов. Если один процесс запишет данные в разделяемую область, Чтобы понять дальнейшую работу сервера, следует иметь в виду, что другой процесс может считывать их оттуда как из собственной области сами по себе объекты разделяемой памяти не предоставляют никаких глобальной памяти. Мы продемонстрируем использование разделяе- средств синхронизации доступа, так что нам приходится самим позабо- мой памяти на уже знакомом примере клиент-сервер. Как и в случае с титься об этих средствах. Для синхронизации работы клиента и сервера сообщениями, нам нужно описать общие структуры данных для клиента и разграничения доступа мы используем упомянутый уже алгоритм и сервера в заголовочном файле (на диске это файл shmemtypes.h): Петерсона (См. список литературы, 2), который позволяет разграничить #define FTOK_FILE “./shmemserv” доступ к блоку разделяемой памяти, используя неатомарные операции. #define MAXLEN 512 Функция shmdt(2) удаляет область отображения в локальном struct memory_block адресном пространстве (но не удаляет блок разделяемой памяти). Блок { разделяемой памяти удаляется вызовом int server_lock; shmctl(shmid, IPC_RMID, 0); int client_lock; который и по форме, и по сути подобен приведенному выше вызову int turn; msgctl(). Клиент получает доступ к блоку разделяемой памяти с помо- int readlast; щью вызовов char string[MAXLEN]; shmid = shmget(key, sizeof(struct memory_block), 0666); }; if (shmid == -1) Механизм разделяемой памяти не налагает никаких ограничений { на структуру блока памяти. Структура memory_block определенна нами, printf(“Server is not running!\n”); исходя исключительно из наших собственных потребностей. Первые return EXIT_FAILURE; четыре поля структуры memory_block – служебные, они нужны для } реализации модифицированного алгоритма Петерсона, о котором будет mblock = (struct memory_block *) shmat(shmid, 0, 0); сказано ниже. Последнее поле предназначено собственно для переда- При этом мы проверяем, запущен ли сервер. Далее клиент читает чи данных. В нашем заголовочном файле мы не определяем ключ для информацию, записанную в разделяемый блок сервером, считывает идентификации разделяемого блока, но указываем имя некоего файла строку с терминала и передает строку серверу, используя механизм (в нашем случае – исполнимого файла сервера). Это имя будет переда- спин-блокировок. Скомпилируйте обе программы (скомандовав make но функции ftok() для получения ключа. Естественно, это метод срабо- shmemdemo), запустите сервер, затем клиент и набирайте строки тает только если сервер будет скомпилирован под именем shmemserv. в окне клиента. Работа программ завершится, когда вы наберете q и Рассмотрим исходный код инициализации сервера: нажмете ввод. Поработав с программами, вы, конечно, обратили вни- key_t key; мание на медлительность, с которой сервер отвечает клиенту. Кроме

104 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Программирование для Unix

того, вы могли заметить существенный рост потребления ресурсов про- цессора при работе программ. Виной всему спин-блокировки, которые РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА: используются в алгоритме Петерсона. Именно из-за спин-блокировок процессор проводит значительную часть времени в цикле непрерыв- 1. W. R. Stevens, S. A. Rago, Advanced Programming in the UNIX® Environment: Second Edition, Addison Wesley Professional, 2005 ного опроса значения переменной. Сам алгоритм Петерсона сегодня 2. Таненбаум Э. С., Вудхалл А. С., Операционные системы: можно найти только в учебниках по разработке операционных систем, разработка и реализация. – СПб.: Питер, 2005 хотя и современные ОС его практически не используют. Вместо этого 3. Стивенс У., UNIX: Взаимодействие процессов. – СПб.: Питер, 2003 ОС создают объекты синхронизации, контролирующие доступ к крити- ческим секциям с помощью специальных атомарных операций процес- сора, и предоставляют пользовательским программам доступ к этим объектам. Именно такими объектами являются рассмотренные далее версии Unix-системы), из которых обязательными являются три: семафоры. • short sem_num – номер семафора (в массиве), над которым выпол- няется операция (нумерация начинается с нуля). Семафоры • short sem_op – число, изменяющее состояние семафора. Семафоры широко используются как средство синхронизации потоков • short sem_flg – дополнительные флаги. и процессов. В Unix-системах реализованы три типа семафоров – сема- Как и в приведенном выше схематическом примере работы семафо- форы System V, семафоры POSIX и семафоры в разделяемой памяти. ра, отрицательное значение sem_op соответствует операции проверки Поскольку статья посвящена System V IPC, мы рассмотрим семафоры доступности ресурса и вызывает приостановку потока, если ресурс System V. Подробное описание всех трех типов семафоров можно найти недоступен. Положительное значение заставляет семафор высвобо- в (См. список литературы, 3). дить ресурс (или приблизиться к этому). Указатель на массив структур Состояние семафора определяется значением некоторой внутрен- sembuf (по структуре на семафор) передается как второй параметр ней переменной и переданным ему параметром. В зависимости от этих функции semop(2), которая либо изменяет состояние семафора, либо значений семафор либо приостанавливает выполнение обратившегося к приостанавливает вызывавший поток. Первый параметр этой функции – нему потока (до тех пор, пока другой поток не переведет семафор в дру- идентификатор, возвращенный semget(). В третьем параметре переда- гое состояние), либо изменяет значение внутренней переменной, разре- ется число записей в массиве sembuf. Вот как, например, мы указыва- шив потоку дальнейшее выполнение. Следующая функция иллюстри- ем, что клиент может записывать данные в разделяемую область: рует логику работы семафора в зависимости от значения переменной buf[1].sem_op = 1; состояния (semvalue) и управляющей переменной sem_op. semop(semid, (struct sembuf*) &buf[1], 1); void semaphore (int sem_op) А эти строки приостановят сервер, пока клиент не изменит значение { первого семафора: static int semvalue; // Внутренняя переменная buf[0].sem_op = -1; if (sem_op != 0) semop(semid, (struct sembuf*) &buf, 1); { Получая разрешение на доступ к разделяемой области, процесс if (sem_op < 0) while (semvalue < ABS(sem_op)); производит чтение/запись, разрешает доступ другому процессу, запре- semvalue += sem_op; щает доступ себе и приостанавливается. Удаление семафора выполняет } с помощью функции semctl(), в которой, кроме прочего, нужно указы- else while (semvalue != 0); вать число семафоров: } semctl(semid, 2, IPC_RMID); Отрицательное значение sem_op соответствует операции провер- Скомпилируйте сервер под именем semserv, а клиент под именем ки доступности ресурса и вызывает приостановку потока, если доступ semcli, (или командуйте make semdemo) запустите клиент и сер- к ресурсу заблокирован. Положительное значение сигнализирует о вер. Вы увидите, что обмен данными выполняется гораздо быстрее, а высвобождении ресурса. Приведенная выше функция semaphore() процессор загружается гораздо меньше, чем в случае использования описывает поведение многозначного семафора (general semaphore). спин-блокировок. Именно такие семафоры используются в System V IPC. При всем богатстве выбора средств взаимодействия между процес- Перепишем клиент и сервер из предыдущего примера, заменив сами в Unix/Linux, самыми популярными средствами были и остаются спин-блокировки семафорами (на диске вы найдете исходный текст сокеты. Ими мы и займемся в следующий раз. LXF сервера в файле semserv.c, а исходный текст клиента – в файле semcli.c. Все, что касается семафоров, определено в файле . Программа-сервер создает семафоры с помощью вызова semid = semget(key, 2, 0666|IPC_CREAT); Функция semget(2) похожа на msgget() и shmget(), но у нее есть дополнительный параметр – количество создаваемых семафоров. Дело в том, что многим процессам, использующим семафоры, требу- ется более одного семафора (тогда как блоки разделяемой памяти и очереди сообщений обычно существуют в единственном экземпляре). Определение уникального ключа для каждого из нескольких семафоров затруднительно, поэтому функция semget() позволяет несколько сема- ЧЕРЕЗ форов сразу. Нашему приложению понадобится два семафора. Нам понадобилось бы три семафора, если бы... Впрочем, это уже совсем МЕСЯЦ другая история. Первый семафор указывает, должен ли сервер читать Мы окунемся в мир сетевого запись, сделанную клиентом, второй – должен ли клиент читать запись, программирования и познакомимся сделанную сервером. Таким образом, мы приказываем semget() с сокетами – базовыми «кирпичиками», создать сразу два семафора. В случае успешного завершения функция из которых строятся и мощные сервера, и легкие клиентские semget() возвращает идентификатор нового массива семафоров. приложения. Для определения состояния семафора используется структура sembuf. В ней определено много полей (конкретный набор зависит от

www.linuxformat.ru LXF8(82) АВГУСТ 2006 105 УЧЕБНИК Maxima

СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ Maxima – функции и операторы

ЧАСТЬ 2 Понять философию сложного пакета – уже половина дела, однако, для того, чтобы уметь читать, надо хотя бы освоить азбуку. Сегодня Тихон Тарнавский расскажет вам об операторах (или функциях?) Maxima.

Операторы Максимы именами матриц быть не могут. Так что, думаю, можете смело писать и МЕСЯЦ Продолжаю знакомить вас с возможностями свободной про- без пробелов. граммы символьных вычислений Maxima. Начну в этот раз с НАЗАД краткого рассказа об основных операторах Maxima и некоторых их

Мы познакомились свойствах. с идеологией Maxima На самом деле в Максиме нет чёткого разграничения между опера- и освоили простейшие торами и функциями. Более того, каждый оператор – это на самом деле операции функция:

Здесь имена функций-операторов берутся в кавычки лишь потому, что содержат символы, нестандартные для имён функций. Это похоже на работу в командной оболочке Unix, где, если в имя файла входят управля- ющие символы, вы можете либо взять это имя в кавычки, либо экраниро- вать каждый такой символ обратным слэшем. В Maxima допустимы те же В случае, если заданные матрицы не могут быть перемножены из-за два варианта: например, вместо “+” можно было бы написать \+. несовпадающих размерностей, Maxima выдаст сообщение об ошибке: Итак, все встроенные операторы максимы являются функциями; более того, вы можете наделить любую (в том числе свою собственную) функцию определёнными свойствами, которые фактически превратят её в оператор. Подробнее об этом я расскажу в следующих выпусках. Таким образом, разделение на функции и операторы в Maxima достаточно условно. Посему в этом разделе речь пойдёт не только о Восклицательный знак, стоящий после своего аргумента (т.е. пост- некоторых операторах, но и о нескольких функциях, которые по природе фиксный оператор), традиционно обозначает факториал. Не менее тра- своих действий сходны с операторами. Наиболее привычные операторы диционно, двумя восклицательными знаками обозначен полуфакториал уже упоминались в предыдущей статье: +, –, *, /, ^ или ** (возведение [произведение всех четных (для четного операнда) или нечетных чисел, в степень) и функцию sqrt(x) (квадратный корень). Сегодня мы погово- меньших либо равных данному, – прим. ред.]. Функции abs(x) и рим ещё о нескольких достаточно распространённых. signum(x) возвращают, как опять же нетрудно догадаться, модуль и Точкой обозначается матричное произведение. В документации знак числа. А функции max(x1,...,xn) и min(x1,...,xn) – соответс- утверждается, что сама точка при этом должна быть отделена пробела- твенно максимальное и минимальное из заданных чисел. ми от обоих своих операндов – дабы не спутать её с точкой десятичной. Тут стоит остановиться на нескольких моментах. Во-первых, все На самом деле мне не удалось добиться от Максимы неадекватной реак- функции и операторы Maxima работают не только с действительными, ции и в «беспробельном» варианте; что и логично, так как всё равно эти но и комплексными числами. Сами комплексные числа записываются в две разные ипостаси точки можно различить по контексту: ведь цифры Максиме в алгебраической форме, с мнимой единицей, обозначенной

106 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Maxima

через %i; то есть в виде a+b*%i, где a и b – соответственно действи- арифметических операторов, не считаются вычислениями, а следова- тельная и мнимая части числа. тельно оператор блокировки вычислений их не предотвращает: Так, факториал задан в наиболее общем виде и представляет собой, по сути, гамма-функцию (точнее, x! = gamma(x+1)), то есть определён на множестве всех комплексных чисел, кроме отрицательных целых. При этом факториал от натурального числа (и нуля) автоматически упрощается до натурального же числа:

Как вы, вероятно, помните, в прошлый раз кроме упомянутого толь- Точно так же и модуль определён для всех комплексных чисел ко что оператора блокировки вычислений мы познакомились с операто- (напомню, что |a+b*i|=sqrt(a2+b2)). Минимум, максимум и знак опреде- ром присвоения значений, или, иначе, именования выражений, : . В лены, естественным образом, только для действительных чисел, так как Maxima существуют и другие операторы именования, из которых нам на комплексные числа общего вида, как известно, между собой данный момент интересен один – оператор задания функции. несравнимы. Обозначается он через :=, и аналогии здесь прослеживаются не с язы- Второй важный момент: когда некоторая встроенная функция или ками Pascal или Algol, как может показаться на первый взгляд, а с дру- оператор Maxima не может получить для переданного выражения одно- гими обозначениями самой Максимы: с одной стороны определение значный результат (ввиду недостаточности данных) – она пытается мак- функции можно воспринимать как уравнение (которое обозначается зна- симально упростить это выражение. (Для некоторых функций такое ком =), а с другой – оно родственно назначению имени некоторому автоупрощение регулируется специальными параметрами.) Например, выражению (то есть :). То есть определение функции можно в какой-то если x не задан: мере считать симбиозом этих двух выражений – и оттого вполне логич- но, что оно обозначается обоими их символами. (В продолжение этой аналогии могу добавить, что в Maxima есть и расширенные варианты операторов присвоения и назначения функции, обозначаемые соответс- твенно через :: и ::=.)

Думаю, основы работы с функциями самоочевидны по аналогии с приведенным примером, а подробнее об этом мы поговорим в следую- щих выпусках. Функция вычисления всего

А сейчас я расскажу о том, что было обещано в прошлый раз: о возмож- ностях управлять процессом вычислений вводимых вами выражений. В >> Подобные упрощения, равно как и «раскрытие» факториалов и прошлый раз, о чём я уже вспоминал, было упомянуто только одно такое

О РАБОТЕ В МАТЕМАТИЧЕСКОМ РЕЖИМЕ ВВОДА РЕДАКТОРА TEXMACS

Первое слово – про апостроф, который используется в Maxima для бло- символы не вводятся, а вместо этого происходит некое другое привязан- кировки вычислений. В математическом режиме привычной клавишей ное к этой клавише действие. Среди таких переназначенных символов, к вводится несколько другой «апостроф», обозначающий производную. примеру, – «$» и «\». Для того, чтобы отменить специальное действие и Поэтому для ввода апострофа, блокирующего вычисления, нужно внут- вместо него просто ввести обозначенный на клавише символ, нужно ри математического режима ввода создать поле текстового ввода – и уже непосредственно перед этой клавишей нажать Shift+F5. в нём ввести обычный текстовый апостроф. По умолчанию это делается То же самое можно сказать и про кавычку, к которой уже глобально в комбинацией клавиш A-$, что в зависимости от настроек TeXmacs может TeXmacs привязан по умолчанию ввод «фигурных» кавычек. Здесь есть расшифровываться как Alt+Shift+4 или Win+Shift+4. После ввода апост- два варианта: либо предварить ввод кавычки нажатием той же самой рофа можно с помощью стрелки влево выйти из поля текстового ввода и комбинации Shift+F5; либо поменять умолчательное поведение редакто- продолжать пользоваться всеми прелестями ввода математического. ра с помощью пункта меню Редактировать –> Предпочтения –> И второе слово – насчёт ввода различных символов, к которым в мате- Клавиатура –> Автоматические кавычки –> Никаких – правда, тогда перед матическом режиме либо в самом TeXmacs привязаны некоторые клави- вводом кавычки придётся, так же как и для апострофа, переходить внут- атурные сокращения, т.е. при простом нажатии на клавишу обычные ри математического режима в текстовый.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 107 УЧЕБНИК Maxima

>> >> ИНТЕРФЕЙСЫ К MAXIMA

Кроме двух описанных в прошлый раз интерфейсов к Максиме – wxMaxima и TeXmacs, – есть, как уже говорилось, и другие варианты, о которых я сейчас и расскажу. Начнём с консольного интерфейса, доступного по команде Maxima; он выполнен в традиционном стиле командной строки: на экране чере- дуются вводимые вами команды и ответы системы на них (рис. 1). Интерфейс, как видите, достаточно незамысловат, но тем не менее все формулы, даже достаточно сложные, вполне читабельны. Графические возможности в чистой консоли недоступны совсем: графики функций, к примеру, могут быть изображены только всё теми же текстовыми символами. Если же запустить консольную Максиму в X-терминале, то графики могут отображаться в отдельных окнах – так же, как и в любом из графических интерфейсов. Единственный реальный плюс консоль- ного интерфейса – это минимальные требования к ресурсам. В осталь- ном всё, как видите, довольно аскетично. Самый примитивный из графических интерфейсов, – XMaxima (рис. 2). На иллюстрации верхняя половина окна – это собственно рабо- чая область, нижняя – помощь. Кроме этого отдельного окна помощи XMaxima практически ничем не отличается от консольного собрата, Рисунок 2. Xmaxima. если тот запущен в X. Посему и тут долго задерживаться не будем. А рассмотрим следующий интерфейс – Maxima-Emacs. Он, как нетрудно догадаться, запускает сессию Максимы в буфере широко tex-site; для Emacs оно входит в пакет auctex, для XEmacs21 – в пакет известного редактора Emacs. В результате вызова в редакторе команды xEmacs21-basesupport. Вызывается режим, как обычно, соответствен- Maxima (M-x Maxima) создаётся новый буфер по имени *Maxima*, в но его названию – командой EMaxima-mode (M-x EMaxima-mode). котором и запускается сессия. После этого становятся доступными Возможности этого режима достаточно богаты, прочитать о них (точ- довольно многочисленные команды взаимодействия с Maxima (рис. 3). но так же как и о режиме Maxima) можно в Maxima-book, которая Привязав эти команды к клавишам на свой вкус, приверженцы этого входит в состав стандартной документации, находящейся, в зависи- мега-редактора смогут получить внутри него довольно-таки удобный и мости от дистрибутива, в пакете Maxima или Maxima-doc. Эта часть богатый возможностями интерфейс (надо сказать, многие команды может быть также доступна в виде отдельного файла; например, в привязаны к определённым клавишам сразу, но не факт, что умолча- Debian это /usr/share/doc/Maxima-doc/EMaximaIntro.ps.gz. Остальную тельная привязка всем понравится, тем более, что речь о таких любите- информацию в Maxima-book я вам читать не советую – она всё-таки лях настройки всего и вся под свой комфорт, как пользователи Emacs). очень устарела (обновлена 19 сентября 2004 года); лучше обратиться К примеру, на клавишу «Tab», которая в режиме Maxima не задейство- к info-страницам или html-документации, которые доступны всё в том вана, можно повесить команду Maxima-complete – и получить на при- же пакете Maxima либо Maxima-doc, а последняя ещё и на сайте про- вычном месте полноценное автодополнение (по умолчанию эта коман- екта. К примеру, в простейшем случае вы можете создать ячейку да подвешена на M-Tab (Alt-Tab), что многим может быть неудобно, так Maxima комбинацией C-c C-o («o» от фразы «open cell»), ввести в ней как эта комбинация, как известно, часто бывает назначена на переклю- любую команду или набор команд Максимы в простой текстовой чение между окнами). Правда, этот интерфейс также лишён графичес- нотации и получить результат вычисления этой команды либо в обыч- кой отрисовки формул, но все графические возможности самой ном текстовом виде нажатием C-c C-u c, либо в LaTeX-виде с помо- Maxima в нём, в случае запуска в X-версии редактора, естественно, щью C-c C-u C (т.е. Ctrl-c Ctrl-u Shift-c). Здесь «u c» происходит от доступны. Кроме того, интересен он не столько сам по себе, сколько во «update cell»; а смежные команды, генерирующие вывод в простой взаимодействии ещё с одним интерфейсом, о котором чуть ниже. текстовой форме и в форме LaTeX, всегда привязаны в Emaxim’е к Следующие два интерфейса – EMaxima и iMaxima – также являют- одинаковым строчной и заглавной буквам соответственно. ся режимами редактора Emacs. Первый – скорее не самостоятельный Последний Emacs-интерфейс к Maxima – iMaxima – отличается от режим, а надстройка над режимом LaTeX, которая наверняка понра- остальных рассмотренных в этот раз самостоятельным (а не посредс- вится тем, кто использует Emacs для редактирования LaTeX-докумен- твом LaTeX-документа, как в EMaxima) графическим представлением тов. В отличие от режима Maxima, который предназначен для обычно- математических формул. Собственно, именно для этого он и создан, и го изолированного запуска полноценной Maxima-сессии, здесь речь единственная его функциональность заключается именно в отображе- идёт о возможности вставлять отдельные команды Maxima и, естест- нии в графическом виде TeX-кода, генерируемого Maxima. Этот режим венно, результаты их вычислений, прямо в редактируемый LaTeX- можно настроить таким образом, чтобы внутри него запускался режим документ. Для работы этого режима понадобится также расширение Maxima (т.е. Maxima-Emacs), и пользоваться всеми командами послед-

Рисунок 1. Консольная Maxima. Рисунок 3. Maxima-Emacs.

108 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Maxima

средство – блокировка вычислений. Здесь всё достаточно просто и допол- Если говорить о ячейках ввода-вывода, то значение ячейки ввода в нительно стоит остановиться только на одном моменте. Если апострофом Maxima закономерно сохраняется до его вычисления (т.е. в несовершён- предварён вызов функции (встроенной ли, пользовательской – несущест- ной форме), а значение ячейки вывода – после (т.е. в совершённой); венно), то блокируется вычисление самой функции, но не её аргументов. другими словами, тут сохраняется естественный порядок «ввод –> Если же поставить апостроф перед выражением, заключённым в скобки, вычисление –> вывод». то невычисленными останется всё это выражение целиком, т.е. и все вхо- дящие в него функции, и все аргументы этих функций. Например:

Как видите, операторы вычисления и блокировки вычислений име- ют накопительный эффект. О другой стороне этого эффекта мы погово- рим чуть ниже. Оператор, обозначенный двумя апострофами, является синонимом к функции ev(выражение). Сама функция ev предоставляет гораздо более широкие возможности, нежели простое принудительное вычисле- ние заданного выражения: она может принимать произвольное число В противовес блокировке вычислений, можно также принудительно аргументов, первый из которых – вычисляемое выражение, а остальные вычислить любое выражение – для этого тоже существует оператор, – специальные опции, которые как раз и влияют на то, как именно будет состоящий из двух апострофов: производиться вычисление. Точно так же, как двойной апостроф – сокращение для ev без дополнительных опций, есть ещё более упрощён- ная запись функции ev с опциями: в этом случае вместо имени функции и скобок вообще ничего писать не нужно; т.е. «ev(выражение, опц1, опц2, ...)» можно записать просто как «выражение, опц1, опц2, ...». Первая из таких опций связана с автоупрощением. Глобально авто- упрощение регулируется переключателем simp (от «simplification» – упрощение), и по умолчанию оно включено; в любой момент его можно В терминологии Maxima невычисленная форма выражения называ- выключить, установив значение переключателя в false. Опция функции

ется «noun form», вычисленная – «verb form». Сохраняя лингвистичес- ev, одноимённая этому переключателю, позволяет включить упрощение кие параллели, на русский я бы это перевёл как «несовершённая фор- для данного конкретного вычисления – вне зависимости от того, вклю- >> ма» и «совершённая форма». чено или выключено оно глобально:

ИНТЕРФЕЙСЫ К MAXIMA (ПРОДОЛЖЕНИЕ)

него и их клавиатурными привязками. Т.е. фактически режим iMaxima в таком варианте можно рассматривать как графический интерфейс уже над Maxima-Emacs; именно это может добавить дополнительной привлекательности последнему. В отличие от всех рассмотренных выше интерфейсов, iMaxima – сторонний проект, разрабатываемый отдельно; начиная со второй половины прошлого года iMaxim’ой зани- мается новый автор, и на данный момент проект активно развивается. Для его установки вам понадобится дополнительно установить пакет breqn, отвечающий за перенос строк в математических формулах в формате LaTeX. Инструкцию по установке самой iMaxima и breqn вы можете найти на сайте проекта (адрес см. во врезке). Кроме всех рассмотренных, существуют ещё два интерфейса к Максиме: Symaxx и Kayali. Но учитывая, что оба проекта довольно дав- но не подают признаков жизни (Kayali находится на стадии альфа-вер- сии, последнее обновление которой вышло 6 июня 2005 года; а Symaxx не обновлялся с 17 декабря 2001 года), то они не достойны большего, чем просто упоминание. Кроме того, существуют полноценные web- и telnet-интерфейсы к Maxima, благодаря которым вы можете поработать с нею, не имея даже её у себя на компьютере, прямо через Интернет. Как видите, способность Maxima взаимодействовать с внешними интерфейсами используется достаточно широко – есть из чего выбрать Рисунок 4. Ячейка Максимы введенная и вычисленная в тот интерфейс, который лучше всего подойдёт именно вам. Emacs-режиме Emaxima.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 109 УЧЕБНИК Maxima

АДРЕСА В ИНТЕРНЕТЕ

Сайт проекта Maxima: http:// maxima.sourceforge.net/ Сайт iMaxima: http://members3. jcom.home.ne.jp/imaxima/ Сайт Kayali: http://kayali.sf.net/ Сайт Symaxx: http://symaxx.sf. net/ Web-интерфейс к Максиме: http:// www.et.byu.edu/~koj/maxima. Опция noeval блокирует сам этап вычисления как таковой; т.е. её html можно использовать для того, чтобы применить к выражению другие опции функции ev, не перевычисляя его. При этом опять-таки нужно понимать разницу между вычислением и упрощением:

Тут нужно отметить ещё, что вызов kill(all) не восстанавливает умолчательные значения переключателей; т.е. если мы, к примеру, изменили значение переключателя simp, как в примере выше, то для того, чтобы вернуться к изначальному порядку вещей, установленному сразу после запуска Maxima, нам нужно не только сделать kill(all), но и вручную назначить simp:true. Опция diff принудительно раскрывает все производные и полные дифференциалы; а опция derivlist(x, y, ..., v) – производные относи- тельно переменных, заданных в качестве её аргументов, а также полные дифференциалы (так как они не зависят ни от каких переменных): Таким образом, мы можем принудительно упростить выражение, не перевычисляя его. Опция eval – напротив, проводит дополнительно ещё один процесс вычисления. Здесь стоит поговорить подробнее о накопительном эффекте вычисления, который я уже демонстрировал выше. Так как в Максиме значениями символов могут выступать самые разнообразные выражения, то в эти выражения тоже могут входить некоторые символы, которые тоже могут иметь свои значения; и такая цепочка «вложенных значений» может продолжаться сколь угодно глубоко. Один вызов фун- кции ev (без опции eval) опускается по этой цепочке в глубину на один уровень:

Как видите, если из нескольких переменных из diff в derivlist() заданы не все, то раскрывается производная только по заданным пере- менным; это и понятно, так как выражения diff(f, x, 1, y, 1), diff(diff(f, x), y) и diff(diff(f, y), x) математически эквивалентны [по крайней мере, для «хороших» функций, – прим.ред]. Если же аргумент опции derivlist() вообще не является переменной дифференцирования, он просто игнорируется. Опция nouns раскрывает вообще все несовершённые формы – и производные в том числе:

Напомню, что здесь ev(y), eval является сокращённой записью от ev(ev(y), eval), таким образом вычисление в этом выражении прово- Опция float преобразовывает все рациональные числа в конечную дится трижды. Кроме того, хочу обратить ваше внимание на порядок десятичную запись; опция numer включает опцию float и, кроме того, назначения выражений символам; здесь существенно, что на момент приводит к десятичному виду многие математические функции от чис- задания каждого выражения входящий в него символ ещё не был опре- ловых аргументов: делён – иначе в выражение автоматически подставлялся не сам символ,

110 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Maxima

а его значение. Таким образом, если бы мы произвели эти же назначе- ния в обратном порядке, то значением символа y стало бы xm+6 – безо всяких принудительных вычислений. ТТретьеретье ИИЗМЕРЕНИЕЗМЕРЕНИЕ В продолжение разговора о накопительном эффекте и «цепочных» (окончание. Начало на стр. 68–70) вычислениях придётся кстати переключатель infeval. Он заставляет ev перевычислять выражение до тех пор, пока оно не перестанет изменять- ся при последующих вычислениях. В частности, этот переключатель можно использовать и для того, чтобы разблокировать блокировку вычислений любой глубины вложения:

В других ситуациях использовать этот переключатель следует с осторожностью: не забывайте, что он может привести к зацикливанию. О других константных опциях и переключателях функции ev можно узнать из ? ev и ? evflag, а мы наверняка ещё рассмотрим многие из них позже, когда они будут более актуальны в контексте повествования. Рисунок 4. ps3 выводит таблицу процессов в очень наглядной форме. Кроме константных значений есть ещё несколько видов опций. Первый из них – это имена специальных функций, которые занимаются который также может быть использован как Поэтому, запустив утилиту, сразу можно упрощением или преобразованием математических выражений. Будучи настольная среда. Построенный по клиент- увидеть какой из процессов самый «жад- упомянута по имени в качестве опции, такая функция просто применяет- серверной схеме (подобно X-серверу), сер- ный». Относительные пропорции выводи- ся к вычисляемому выражению. Например, выражение, fullratsimp – вер s3d запускается на компьютере пользо- мого изображения и направления вращения это то же самое, что и fullratsimp(ev(выражение)). Полный список вателя и ожидает запросов от клиентов на можно изменять при помощи мыши. Для таких функций вы можете найти в ? evfun. вывод содержимого приложений, которые этого, необходимо, придержав кнопку мыши Если в качестве опции ввести имя любой другой функции, не имею- должны быть преобразованы на сервере. двигать ее вниз/верх (пропорции) или впра- щей свойства evfun, то все несовершённые вхождения этой функции во/влево (вращение). Кроме того, можно будут заменены совершёнными, т.е. принудительно вычислены. Вывод информации о использовать предустановленный режим Также в качестве опции можно задать назначение символа или фун- процессах вывода информации, доступный по клави- кции; все такие назначения действуют локально в пределах вычисляе- Linux является многозадачной системой, в шам F1-F6. Практически аналогичные воз- мого выражения, и все подстановки производятся параллельно: которой одновременно выполняются сотни можности предоставляет и другая утилита процессов. Для их вывода информации о GLload (cм. ссылку 8). В командной строке запущенных процессах традиционно или по щелчку правой кнопкой в контекс- используются утилиты ps и top или какой- тном меню можно дополнительно вывести либо графический инструмент. Утилита ps3 дату, время, метку и внешний вид. (см. ссылку 7) выводит таблицу процессов в Это далеко не все проекты. Так, напри- Опция подстановки символа допустима не только в виде оператора виде блоков на вращающемся диске мер glbiff выведет крутящийся рисунок при присвоения, но и в виде равенства; сделано это, в частности, для того, (Рис. 4), подобно тому, как TDFSB показы- поступлении почтового сообщения получен- чтобы в качестве подстановок можно было использовать решения, най- вает файловую систему. Перемещаясь при ного посредством fetchmail. денные функцией solve: помощи клавиатуры, можно рассмотреть Инструментов, выводящих информа- имя процесса, если подойти к выбранному цию в трехмерном виде, предостаточно и столбцу «с другой стороны», то будет пока- поэтому в Linux уже сегодня можно пред- зан номер PID. Высота сообщает, сколько ставить, как возможно будут выглядеть памяти занимает процесс, а цвет – сколько рабочие столы пользователей будущего. он потребляет ресурсов процессора. LXF

Вот и всё на сегодня. В следующий раз мы начнём с уже упомяну- ПОЛЕЗНЫЕ ССЫЛКИ тых вскользь функций по упрощению и преоб- 1. Сайт проекта 3D-Desktop – http://desk3d.sourceforge.net/ разованию выражений. LXF 2. Сайт проекта Metisse -http://insitu.lri.fr/~chapuis/metisse/ 3. Сайт проекта fsv – http://fsv.sourceforge.net 4. Сайт проекта TDFSB – http://www.determinate.net/webdata/seg/tdfsb.html ЧЕРЕЗ 5. Библиотека Nucleo – http://insitu.lri.fr/~chapuis/software/metisse/nucleo-0.1-20041216.tar.bz2 МЕСЯЦ 6. Сайт Window Manager Icons – http://wm-icons.sourceforge.net/ 7. Сайт проекта ps3 – http://user.tninet.se/~uhu537u/ps3.html Мы упростим себе жизнь при 8. Утилита Glload – http://reality.exsgi.org/eile/misc/glload-0.4.2.tar.gz помощи соответствующих функций 9. Сайт FileCityMap – http://thisiselliot.homeip.net/ Maxima 10. Сайт s3d – http://s3d.berlios.de/ 11. Сайт True3D*Shell – http://www.sixtyfourbit.org/3dshell.htm

www.linuxformat.ru LXF8(82) АВГУСТ 2006 111 УЧЕБНИК Анализ данных

АНАЛИЗ ДАННЫХ PAW: пприемыриемы работыработы

ЧАСТЬ 2 Впечатлены возможностями PAW? Приготовьтесь к большему – сейчас Евгений Балдин продемонстрирует вам эту систему в деле!

Система анализа данных PAW или Physics Analysis Workstation магнитное поле, в котором находится калориметр. Избыточное давление МЕСЯЦ для своей работы не требует доскональных знаний всех под- примерно линейно связано с температурой LKr, что влияет на амплитуду систем и команд. Но чтобы действовать эффективно, следует сигнала. В магнитном поле прямолинейная траектория мюона искажается, НАЗАД изучить логику построения команд и стандартные приемы. Это позволит что тоже может влиять на амплитуду. в дальнейшем легко получать навыки для выполнения более сложных В первую очередь, необходимо прочитать данные из текстового Мы начали знакомство с PAW с задач. файла. Для этого можно воспользоваться командой VECTOR/READ простейших команд и обзора Если даже вы не планируете использовать PAW, в любом случае (help ve/re): возможностей этого пакета будет полезно присмотреться к этому инструменту, так как он сравни- #чтение текстового файла в вектора тельно прост и основные концепции, необходимые для анализа данных, PAW > ve/re time,run,avg,avg_er,P,H lkravg.dat достаточно прозрачны для понимания. Создатели PAW действовали по # меняем тип маркера принципу минимализма. Делалось только необходимое – никаких PAW > set mtyp 2 «рюшечек», зато просто. Жесткая структура команд дополнена возмож- # изобразим зависимость исследуемого значения от времени ностью писать свои функции и скрипты. PAW > ve/pl avg%time Из рисунка ниже видно, что исследуемое значение в среднем Простейший анализ уменьшается за большой промежуток времени (исследуемый интервал Учиться лучше всего на примере реального анализа. Попробуем сделать равен году и четырем месяцам), и в то же время у данных есть структура, нечто подобное. соответствующая более короткому интервалу. Будем считать, что программа PAW уже запущена и мы находимся в Сначала исключим временную зависимость. Воспользуемся для рабочей директории. Вызов внешних команд обеспечивается с помо- этого стандартной процедурой подгонки для векторов VECTOR/FIT X Y щью инструкции SHELL (можно сократить до sh). EY FUNC (help ve/fit), где X соответствует оси времени, Y – исследуемо- PAW > sh ls ascii.png lkravg.dat PAW.metafile ee-ang.rz th1.eps last.kumac last.kumacold sin.dat Необходимо провести предварительный анализ данных, представ- ленных в текстовом файле lkravg.dat: 1099279655 4119 0.8318 0.0014 1.13 5.99195 1099397693 4126 0.8404 0.0032 1.07 6.001685 … Колонки соответствуют time_t – времени в секундах, номеру изме- рения, исследуемому значению, ошибке значения для текущего измере- ния и двум сторонним параметрам, от которых интересующее нас значе- ние может зависеть. Задача: имея время и два сторонних параметра, попробовать предсказать исследуемое значение. Анализировать можно и без модели явления, но чтобы правильно подготовить данные для исследования, необходимо ее иметь. Легенда для этих данных следующая: исследуемое значение представляет из себя степень «ухудшения» качества жидкого криптона (LKr – Liquid Kripton) в LKr-калориметре для регистрации энергии элементарных частиц. Качество вычисляется в относительных единицах по амплитуде сигнала от косми- ческих мюонов (эти частицы хорошо выделяются и есть всегда). Два пара- метра, от которых может зависеть качество: избыточное давление LKr и Зависимость качества LKr от времени.

112 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Анализ данных

му значению, EY – ошибки определения значения, а FUNC – подгоноч- После того, как мы убрали основную (временную) зависимость, мож- ной функции. Вместо FUNC можно передать любую функцию, написан- но проверить, зависит ли изучаемая переменная от давления (P) и маг- ную на FORTRAN, но в нашем случае достаточно полинома первой сте- нитного поля (H). Для этого воспользуемся способностью PAW создавать пени. Для полинома в PAW есть сокращенное обозначение PN, где N – и отображать двумерные гистограмм: степень полинома. #создаем двумерную гистограмму: давление от avg1 #подгоняем временную зависимость прямой PAW > ve/pl P%avg1 10 PAW > ve/fit time avg avg_er P1 #изобразим двумерную гистограмму 10 в виде поверхности ********************************************************* PAW > SURF 10 65 -30 1 * * Обратите внимание на разделитель % между векторами в команде * Function minimization by SUBROUTINE HFITV * VECTOR/PLOT. Значениям первого вектора противопоставляется ось * Variable-metric method * ординат (ось Y), а значениям второго ось абсцисс (ось X). * ID = 0 CHOPT = * Команда HISTOGRAMgfv/2D_PLOT/SURFACE [ID THETA PHI * * CHOPT] (help surf) позволяет отобразить двумерную гистограмму в ********************************************************* виде поверхности. Здесь ID – номер гистограммы, THETA и PHI – углы Convergence when estimated distance to minimum (EDM) .LT. 0.10E+01 поворота гистограммы и в сферической системе координат, CHOPT – EXT PARAMETER APPROXIMATE STEP FIRST опции изображения. NO. NAME VALUE ERROR SIZE DERIVATIVE Из картинки справа видно, что 1 P1 3.3620 0.50070E-03 0.85051E-02 -223.19 какая-то зависимость есть – избавим- 2 P2 -0.22939E-08 0.44872E-12 0.58032E-11 -0.27325E+12 ся от нее, как это было сделано с вре- CHISQUARE = 0.1680E+02 NPFIT = 1644 менной зависимостью. В результате При выполнении процедуры подгонки PAW выдает стандартную «пор- подгонки сначала для давления, а тянку». Основной интерес для пользователя представляют результаты потом для поля можно получить еще подгонки. В случае полинома первой степени подгоняются два параметра две формулы: P1 – свободная константа и P2 – коэффициент пропорциональности #поправка на давление Для исключения временной зависимости воспользуемся пакетом PAW > sigma avg2=avg1- SIGMA (help sigma). С помощью команды sigma векторами можно 0.10901+0.99336E-01*P манипулировать, как обычными переменными: #поправка на магнитное поле #создаем новый вектор уже без временной зависимости PAW > sigma avg3=avg2+0.10844E-01- PAW > sigma avg1=avg-3.3620+0.22939E-08*time 0.18258E-02*H Прежде чем действовать дальше, оценим, какую точность в принци- #сравниваем две гистограммы до и пе можно ожидать. Вектору исследуемой величины avg соответствует после поправок вектор ошибок avg_er. Посмотрим, чему равны эти ошибки. Число #на давление и магнитное поле измерений превосходит полторы тысячи, поэтому просмотреть все зна- #переключаем цвет на красный чения глазами не очень реально. Лучше создать гистограмму: PAW > set hcol 2 #создаем из значений вектора гистограмму N15 #рисуем гистограмму по значениям PAW > ve/pl avg_er 15 вектора #включаем отображение статистики (число событий/среднее/разброс) PAW > ve/plot avg3 Гистограмма ошибок PAW > opt sta #переключаем цвет на синий измеряемого параметра. #меняем цвет гистограммы на красный PAW > set hcol 4 PAW > set hcol 2 #рисуем вторую гистограмму поверх ‘s’ - superimpose #вывод гистограммы N15 в диапазоне от 0. до 0.01 PAW > ve/plot avg1 ! ‘s’ PAW > hi/plot 15(0.:0.01) Обратите внимание на команду SET (help GRAPHICS/SET). Эта инс- Из гистограммы видно, что большинство измерений имеют ошибку трукция позволяет менять параметры графического представления дан- меньше 0.15·10-2–0.2·10-2. То есть, даже при самом удачном раскладе ных. Если запустить ее без опций, то будет выдан список переменных, точность предсказания не будет выше этих 0.15%-0.2%. которые устанавливаются с помощью этой команды. На рисунке справа представлены две гистограммы. Красная – конечный результат, а синяя – то, что осталось после исключения временной зависи- мости. Очевидно, что после учета дав- ления и поля разброс уменьшился. Несимметричность гистограмм указы- вает на то, что временная зависимость на самом деле нелинейная. В реаль- ности при подгонке использовалась экспоненциальная зависимость плюс некоторая константа. Выбор подгоноч- ной функции был продиктован физи- ческой моделью явления, но по боль- шому счету на этом временном интер- вале она не сильно отличается от обычной прямой. В результате всех действий была получена зависимость: AVG=3.46+2.29•10-9-9*time-9.9*10-2-2P+1.8*10-3-3H Сравнение двух гистограмм с

Гистограмма ошибок измеряемого параметра. Эта функция позволяет предсказывать исследуемое помощью наложения. www.linuxformat.ru >> LXF8(82) АВГУСТ 2006 113 УЧЕБНИК Анализ данных

значение в зависимости от времени, давления и магнитного поля, но 0.2%. Очевидно, что остались еще какие-то неучтенные систематики. >> >> какова точность этого предсказания? Для ее оценки достаточно полу- Оценим, какую систематику удалось выбрать, учтя зависимость от чить распределение разницы значений между экспериментальными давления и магнитного поля. Для этого воспользуемся системой COMIS точками и данной зависимостью, а затем взять его ширину. Можно (help comis): просто оценить ширину распределения «на глазок», посмотрев на PAW > comis обсуждаемый рисунок, а можно получить ее из известной функции, PAW более-менее описывающей это распределение, например, из функции CS> type sqrt(0.52**2-0.30**2) Гаусса: MND> end #создаем из значений вектора avg1 гистограмму N11 *T SQRT(0.52**2-0.30**2) = 0.4247352 PAW > ve/plot avg1 11 PAW #подгоняем гистограмму N11 в диапазоне (-0.007,0.007) CS> end #функцией Гаусса (G - Gauss) В общем, неплохо. Кстати, более тщательный анализ никаких карди- PAW > hi/fit 11(-0.007:0.007) G нальных улучшений не дал – удалось только уменьшить «хвосты» и … сделать итоговое распределение более симметричным за счет выбора EXT PARAMETER … более сложной подгоночной функции. NO. NAME VALUE ERROR … Быстрый анализ позволяет оценить, к какой точности имеет смысл 1 Constant 51.608 1.9494 … стремиться. Это очень важно, так как сложность получения большей 2 Mean 0.39292E-03 0.20076E-03 … точности увеличивается от требуемой точности существенно нелиней- 3 Sigma 0.51728E-02 0.27301E-03 … ным образом. Фактически на только что изложенный анализ по разным … причинам ушел примерно месяц реального времени. Правда, основные #создаем из значений вектора avg3 гистограмму N13 проблемы были вовсе не технические. В частности очень много времени PAW > ve/plot avg3 13 ушло на осознание, что исследуемая величина зависит от времени – это PAW > hi/fit 13(-0.004:0.004) G не казалось очевидным. … EXT PARAMETER … Ntuple NO. NAME VALUE ERROR … То, что только что было сделано с помощью векторов можно проделать 1 Constant 75.655 3.0477 … с помощью ntuple. Для этого надо сначала создать ntuple (NTUPLE/ 2 Mean 0.20614E-03 0.11857E-03 … CREATE), а затем считать в него текстовый файл (NTUPLE/READ). 3 Sigma 0.29684E-02 0.16655E-03 … # создаем ntuple c ID=1 … PAW > nt/cre 1 ‘LKr quality’ 6 ! ! time run avg er P H #делим графическое окно на две зоны по оси ординат (help zone) #читаем в ntuple с ID 1 текстовый файл PAW > zone 1 2 PAW > nt/read 1 lkravg.dat #меняем цвет гистограммы на синий ==> 1644 events have been read PAW > set hcol 4 PAW > nt/print 1 #рисуем гистограмму в диапазоне (-0.009,0.009) ***************************************************************** PAW > hi/pl 11(-0.009:0.009) * NTUPLE ID= 1 ENTRIES= 1644 LKr quality #меняем цвет гистограммы на красный ***************************************************************** PAW > set hcol 2 * Var numb * Name * Lower * Upper * PAW > hi/pl 13(-0.009:0.009) ***************************************************************** Из всех значений в данном случае интересно только значение шири- * 1 * TIME * 0.109828E+10 * 0.113892E+10 * ны распределения, или SIGMA1. * 2 * RUN * 0.406400E+04 * 0.709400E+04 * * 3 * AVG * 0.742800E+00 * 0.846400E+00 * * 4 * ER * 0.700000E-03 * 0.201000E-01 * * 5 * P * 0.104400E+01 * 0.116000E+01 * * 6 * H * 0.000000E+00 * 0.704971E+01 * ***************************************************************** #включаем отображение статистики PAW > opt stat #отрисовываем разницу между экспериментом и предсказанием #с различным ограничением на величину ошибки er PAW > set hcol 1 PAW > nt/pl 1.avg-(3.456-2.29E-9*time-9.9E-2*P+1.8E-3*H) PAW > set hcol 2 PAW > nt/pl 1.avg-(3.456-2.29E-9*time-9.9E-2*P+1.8E-3*H) er<0.0015 ! ! ! ‘s’ PAW > set hcol 3 PAW > nt/pl 1.avg-(3.456-2.29E-9*time-9.9E-2*P+1.8E-3*H) er>0.0015 ! ! ! ‘s’ Преимущество при использовании ntuple заключается в том, что интерактивно можно накладывать условия для фильтрации данных. Как правило, ntuple создаются с помощью внешних программ, а PAW Сравнение двух гистограмм. Подгонка функцией Гаусса. используется уже для интерактивного анализа. В стандартной докумен- тации к PAW очень подробно описано, как это делается. Если учитывать только временную зависимость, то точность предска-

зания будет примерно 0.52%, если же учесть давление и магнитное поле, 1 В случае гауссоподобного распределения в диапазоне (– ,+ ) лежит примерно то точность улучшится до 0.30%, что существенно хуже идеальных 0.15- 68% от всех событий. — среднее значение или MEAN, соответствует SIGMA

114 LXF8(82) АВГУСТ 2006 www.linuxformat.ru УЧЕБНИК Анализ данных

подойдет так называемый логарифмический гаусс. Для подгонки надо создать файл loggaus.for примерно следующего содержания: C Файл loggaus.for real function loggaus(x) C С помощью этого common-блока PAW получает доступ C к параметрам функции common/PAWPAR/PAR(4) sqrtln4=1.177410022515475 A=PAR(1) pike=PAR(2) sigma=PAR(3)*pike/100. assim=PAR(4) loggaus=0. if (abs(assim).le.1.E-6) then assim=sign(1.E-6,assim) endif if (sigma.le.0.) goto 10 xx=1.+sinh(assim*sqrtln4)/sqrtln4*(x-pike)/sigma Разность между экспериментом и предсказания в if (xx<1.E-07) goto 10 зависимости от наложенного условия на величину ошибки. loggaus=A*exp(-((log(xx)/assim)**2+assim**2)/2.) 10 continue end Функция зависит от четырех параметров: A – амплитуда, pike – Гистограммы местоположение пика, sigma – ширины распределения в процентах, Гистограммы – это базовые объекты PAW. Непосредственно перед отоб- assim – асимметрии. ражением данные почти всегда преобразуются в одно- или двумерную #создаем вектор параметров с начальными значениями гистограмму. На гистограмму можно просто смотреть, а можно подго- PAW > ve/cre par(4) r 25. 1.4 5. 0. нять какой-либо теоретической зависимостью (HISTOGRAM/FIT). # создаем вектор с минимально допустимыми значениями (на #поиск rz-файлов в базовой директории (файл создан внешней глазок) программой) PAW > ve/cre pmin(4) r 10. 1.3 1. -1. PAW > sh ls *.rz # создаем вектор с максимально допустимыми значениями ee-ang.rz PAW > ve/cre pmax(4) r 40. 1.5 10. 1. #чтение файла # создаем вектор, для ошибок подгонки #известно что в файле есть ntuple c ID=1 PAW > ve/cre err(4) r PAW > hi/fil 1 ee-ang.rz # просим PAW подогнать распределение теоретической функцией #создаем гистограмм N20 из переменной E1 с некоторыми # опции подгонки: условиями # B - учитывать минимально/максимально допустимые значения PAW > nt/plot 1.E1 f1=11&&f2=-11&&E1<2 ! ! ! ! 20 # M - перейти интерактивную сессию Minuit #подгоняем гистограмму распределением Гаусса # M обычно не используется, так как действия PAW при подгонке PAW > hi/fit 20 G # по умолчанию вполне разумны PAW > hi/fit 20 loggaus.for “BM” 4 par ! pmin pmax err … # задаем имена параметров Minuit > name 1 A Minuit > name 2 pike Minuit > name 3 sigma Minuit > name 4 assim # задаем метод минимизации (migrad, обычно, самый подходящий) Minuit > migrad # просим попробовать улучшить подгонку (дольше, но чуть точнее) Minuit > improve … Minuit > exit … #смотрим результаты подгонки PAW > ve/print par PAR(1) = 35.4279 PAR(2) = 1.4809 PAR(3) = 4.30618 PAR(4) = -0.999999 Подгонка гистограммы с помощью функции Гаусса и #смотрим ошибки пользовательской функции. PAW > ve/print err ERR(1) = 3.61113 Из рисунка видно, что наблюдаемое распределение функцией ERR(2) = 0.00484378 Гаусса не подгоняется. Надо что-то делать. Очевидно, что теоретическая ERR(3) = 0.339507 функция должна быть как минимум несимметрична. Для этой цели ERR(4) = 0.174973

www.linuxformat.ru LXF8(82) АВГУСТ 2006 115 УЧЕБНИК Анализ данных

#нарисовать гистограмму 20 еще раз # По результатам вычисления mandel.for создаем гистограмму 10 >> >> # e - рисовать статистические ошибки в бинах PAW > fun2 10 mandel.for 100 -2.4 .8 100 -1.2 1.2 ‘ ‘ PAW > hi/plot 20 e # Выводим гистограмму 10 как контур При подгонке этого распределения основной интерес представляло PAW > hi/pl 10 cont3 его ширина: =(4.3±0.3)%. Важно не только значение подгонки, но и # Выводим гистограмму 10 как поверхность оценка ошибки. Например, результат для sigma отличается от того, что PAW > hi/pl 10 surf4 должно быть в идеале больше чем на десять ошибок – можно сделать вывод, что есть какая-то, даже не проблема, а «плюха». Функции Функции также являются базовым объектом для PAW. Для отрисовки одномерных функций используется команда FUNCTION/PLOT. #включить логарифмический масштаб для оси Y PAW > opt logy #нарисовать одномерную функцию PAW > fun/plot (sin(x)/x)**2+0.1 -10 10 #вернуться к линейному масштабу для оси Y PAW > opt liny Обратите внимание на инструкцию opt (help GRAPHICS/OPTION). Эта инструкция по своим функциям схожа с командой set, но в отличии от нее отвечает за организацию представления данных, а не за графичес- кое оформление. Работу с двумерными функциями продемонстрируем на классичес- ком фрактальном изображении имени Мандельброта. Создадим код на FORTRAN: C Из официальной документации к PAW C Файл mandel.for real function MANDEL(XP) dimension XP(2) data NMAX/30/ x=XP(1) y=XP(2) xx=0. yy=0. do n=1,NMAX tt=xx*xx-yy*yy+x yy=2.*xx*yy+y xx=tt if (4..lt.xx*xx+yy*yy) goto 1 enddo 1 MANDEL=FLOAT(n)/FLOAT(NMAX) end В случае двумерных функций проблема отображения стоит гораздо острее, чем у одномерных. Двумерные функции для отображения пре- образуются в гистограммы (help fun2)

Множество Мандельброта. Опции CONT3 и SURF4, соответственно.

Если разрешение не удовлетворяет, то можно создать гистограмму не 100×100, как в примере, а 1000×1000. Заключение Объять необъятное совершенно не реально, особенно при лимите на объем текста. Официальная документация содержит около 500 стра- ниц, причем, один алфавитный указа- тель занимает 17 страниц. PAW - ЧЕРЕЗ матерый программный продукт, которому уже двадцать лет. Этому МЕСЯЦ пакету есть достойный приемник, Когда команде разработчиков PAW стало правда, не лишенный недостатков, скучно, они взялись за разработку нового но об этом в следующий раз. LXF инструмента – ROOT. Вот о нем-то мы и поговорим подробнее. Пример одномерной функции.

116 LXF8(82) АВГУСТ 2006 www.linuxformat.ru

НАВИГАТОР ПО ДИСТРИБУТИВАМ LINUX Навигатор по ДИСТРИБУТИВАМ LINUX

Mandriva Linux тел бы иметь все необходимое на компакт-дисках. SUSE Linux Дистрибутив Mandriva (ранее, до слияния с Варианты поставки: 1DVD или 3DVD (в зависимости SUSE Linux считается самым популярным дистри- Connectiva называвшийся Mandrake), по праву счи- от количества пакетов) бутивом в Европе. Первоначально разрабатывался тается идеальным для неподготовленного пользо- Mandriva Linux 2006 Discovery/LX – это комплект, компанией S.u.S.E. Linux GMBH, ныне купленной вателя. Mandriva Linux невероятно прост в установке содержащий LiveCD Novell. SUSE Linux совместим с большим количес- благодаря современному графическому установщи- MandrivaMove, уста- твом оборудования, включая нестандартное, при- ку. Гордость дистрибутива – комплект графических новочную версию с чем большинство устройств настраивать не придет- утилит для настройки системы, объединенные в включенными Real ся – обычно все автоматически конфигурируется во Mandriva Control Center. Установив Mandriva, вы смо- Player, Flash Player и время установки. жете настроить абсолютно все, от звуковой карты Adobe Reader, а так- Отдельно хотелось бы отметить комплекс конфигу- до файерволла, не прибегая к помощи командной же месяц бесплатной рационных утилит YaST, содержащий все, что нужно строки. технической под- для настройки системы (и даже больше). SUSE Linux Разработчики Mandriva Linux очень тщательно под- держки и серебря- всегда отличалась стабильностью и качественно ходят к тестированию программных пакетов, поэто- ную клубную карту MandivaClub. собранными приложениями – если в какой-то про- му в новые версии дистрибутива выходят сравни- Варианты поставки: 4CD, печатная документация на грамме, входящей в дистрибутив, обнаруживается тельно редко, но зато содержат только стабильные русском языке. ошибка, разработчики не включают ее в систему до программы. тех пор, пока она не будет исправлена. Mandriva Linux 2006 PowerPack – это полноценная Все версии SUSE Linux (кроме Enterprise Server) пре- Mandriva One – однодисковая версия дистрибутива, настольная ОС, ко- красно подойдут начинающим пользователям, не которая прекрасно торая будет хорошо имеющим опыта работы с Linux. подойдет для перво- смотреться на офис- го знакомства с сис- ном ПК или рабочем OpenSUSE Linux 10.1 (Goldmaster) – это свобод- темой. Mandriva One месте разработчика. но распространяемая представляет собой PowerPack придется версия дистрибути- LiveCD с возмож- по душе опытным ва, разрабатываемая ностью установки на пользователям Linux, сообществом. На ос- жесткий диск. поскольку поддер- нове пакетов, соб- Варианты поставки: живает новую техно- ранных сообществом 1CD логию виртуализа- для OpenSUSE, Novell ции Xen. готовит коробочные Mandriva Linux 2006 Download Edition – полно- Варианты поставки: версии дистрибути- стью свободная вер- 2DVD (1DVD с 32-битной и 1DVD с 64-битной верси- ва и корпоративные сия дистрибутива, не ей), печатная документация на русском языке продукты. содержащая пропри- Варианты поставки: 5CD или 1DVD (доступны версии етарных (закрытых) Mandriva Linux PowerPack+ удачно сочетает в себе для платформ x86 и x86_64) компонентов и до- мощь Mandriva Linux ступная для бесплат- 2006 PowerPack с SUSE Linux 10.1 – коробочная версия дистрибутива, ной загрузки. первоклассными сер- включающая в себя Варианты поставки: верными приложени- все необходимое 3CD или 1DVD ями. Это – наиболее для офисной работы, полная редакция в развлечений, мульти- Mandriva Linux 2006 LinuxCenter Edition – дис- линейке Mandriva медиа, Интернета. В трибутив на основе Linux. Благодаря эту версию дистри- Download Edition, соб- своей простоте в ус- бутива входят несво- ранный специалис- тановке и настройке, бодные компоненты, тами ЛинуксЦентра. PowerPack+ хорошо такие как антивирус Отличается от подходит для сег- Antivir PE, Real Player, Download Edition мента SOHO. Main Actor. большим набором Варианты поставки: Варианты поставки: пакетов. Подойдет 2DVD (1DVD с 32- коробка с CD- и DVD- тем, кто не имеет битной и 1DVD с 64-битной версией), 7CD, печатная версией дистрибутива (для платформ x86 и x86_64) возможности скачивать пакеты из Интернета и хо- документация на русском языке. и печатная документация

www.linuxformat.ru LXF8(82) АВГУСТ 2006 119 НАВИГАТОР ПО ДИСТРИБУТИВАМ LINUX

SUSE Linux Enterprise Desktop – специальная вер- двухпроцессорных рабочих станциях, что позволяет на сервере можно приводить множество аргументов, сия дистрибутива в полной мере задействовать возможности имеюще- но самым весомым будет скорость выпуска критич- SUSE, созданная гося оборудования. ных обновлений и цикл поддержки дистрибутива. Как для корпоративных Варианты поставки: коробка с CD-версией для плат- только очередная версия дистрибутива перестает нужд. Целью Novell форм x86 и x86_64 поддерживаться разработчиками, ее «подхватывает» было создание сис- проект Fedore Legacy, предоставляющий критичные темы, которая может Red Hat Enterprise Linux 4 ES ориентирован на обновления для входящих в дистрибутив пакетов. заменить Windows в использование в Варианты поставки: 5CD или 1DVD (доступны версии офисе, при этом раз- качестве сервера для платформ x86 и x86_64) работчики SLED пос- отдельного депар- тарались сделать так, чтобы переход с Windows был тамента или неболь- Fedora Core 5 простым для администратора и безболезненным для шой организации. С UPDATES – комплект пользователя. SLED может интегрироваться в гетеро- его помощью мож- критичных обновле- генные сети, поддерживает Active Directory, eDirectory но легко развернуть ний для дистрибути- и другие службы каталогов. С помощью AutoYaST web-сервер, службу ва Fedora Core 5. можно создать сценарий автоматической установки, печати или файло- Варианты поставки: что упрощает развертывание системы. Пользователь вый сервер. Red Hat 1DVD в свою очередь получает современный рабочий стол Enterprise Linux 4 ES Gnome с переработанным главным меню и поддерж- может работать на Fedora Core 5 Extras – кой спецэффектов Xgl. системах, имеющих до двух процессоров и до 16Гб комплект дополни- Варианты поставки: 5CD или 1DVD (доступны версии основной памяти. тельных пакетов для для платформ x86 и x86_64) Варианты поставки: коробка с CD-версией для плат- дистрибутива Fedora форм x86 и x86_64 Core 5, выпускае- SUSE LINUX Enterprise Server 10 (SLES) представляет мых проектом Fedora собой масштабируе- Red Hat Enterprise Linux 4 Advanced Server (AS) – Extras. Здесь вы най- мую, высокопроизво- прекрасная плат- дете все те, програм- дительную платфор- форма для под- мы, которые не вош- му безопасных кор- держки баз данных, ли в дистрибутив. поративных вычис- корпоративных при- Варианты поставки: 1DVD лений, реализующая ложений ERP/CRM все преимущества и решения бизнес- Linux и Open-Source. критичных задач. Linux XP Система ориентиро- Это единственная Linux XP 2006 — это настольный Linux на базе пе- вана на сервера для ответственных корпоративных редакция Red Hat редовых технологий RedHat и Novell. Разработчик приложений и обеспечивает высочайшую надеж- Enterprise Linux, спо- системы, компания Linux-Online, известен в России ность, производительность и функциональность. собная работать на и в мире своим нестандартным видением в области Варианты поставки: 4CD или 1DVD (доступны версии высокопроизводи- продвижения Linux среди начинающих пользовате- для платформ x86 и x86_64) тельных серверах серии IBM Power и мейнфреймах лей. Linux XP 2006 предназначен для начинающих IBM S/390 или zSeries. Red Hat Enterprise Linux 4 AS пользователей Linux, которые ценят свое время и не имеет ограничений на объем оперативной памяти стремятся к удобствам готового и простого решения. и число процессоров. Тщательная русификация, оригинальный дружелюб- Red Hat Варианты поставки: коробка с CD-версией для плат- ный интерфейс, простота установки и управления, После 2003 года Red Hat занимается исключитель- форм x86 и x86_64 продуманность набора приложений, ряд уникальных но системами корпоративного уровня. Red Hat Linux функций – все это создает непревзойденный ком- всегда был, и по сей день остается тем стандартом, форт для пользователя. на который опираются производители коммерческих Fedora Core приложений и серверов. Дистрибутив сертифициро- Fedora Core – сообщество энтузиастов, создающих Linux XP 2006 SR1 – система, совместимая с Red Hat ван Oracle. Самым ценным в Red Hat является подде- свободную и надежную основу для дистрибутивов и Fedora Core, предо- ржка – время реакции не превышает 4 бизнес-часа, Red Hat: каждое нововведение в Red Hat Enterprise ставляющая пользо- поддержка доступна как через web-интерфейс, так и Linux сначала появляется в репозитории Fedora Core. вателю основанный по телефону. Кроме того, покупателям продуктов Red Каждый релиз Fedora Core содержит самые новые на Gnome рабочий Hat доступны самые свежие обновления в кратчай- версии программ, поэтому этот дистрибутив по- стол, который разра- шие сроки, через систему Red Hat Network. дойдет энтузиастам и любителям экспериментов. У ботчики слегка мо- Fedora Core огромное сообщество пользователей: дифицировали, что- Red Hat Enterprise Linux WS – многофункциональ- если вы встретитесь с какими-либо проблемами бы сделать его похо- ная системы для ра- в ходе использования дистрибутива, будьте увере- жим на рабочий стол бочих станций, под- ны – на форумах и списках рассылки вам обязатель- Windows. Базовая система Linux XP содержит по ходящая для разра- но помогут. одному приложению для каждой задачи. Linux XP ботки программного 2006 SR1 включает в обеспечения, CAD- Fedora Core 5 пре- себя офисный пакет, приложений и ре- красно подойдет для средства разработки, шения других тех- использования на де- игры и «домашний нических ресурсоем- сктопе, однако спра- кинотеатр» на LiveCD. ких задач. Система вится с задачами не- Варианты поставки: может работать как большого сервера. За 5CD на одно-, так и на использование Fedora

120 LXF8(82) АВГУСТ 2006 www.linuxformat.ru НАВИГАТОР ПО ДИСТРИБУТИВАМ LINUX

Linux XP 2006 Ultra Edition SR1 представляет собой же программах, что и основная версия дистрибутива: ется прямо с CD. обычный Linux XP 2006 с обновлениями и расши- интернет-браузеры и почтовые клиенты, офисные Варианты поставки: 1CD ренным набором пакетов, которые не вошли в стан- приложения, приложения для просмотра и прослу- дартную версию. шивания мультимедиа. Travel CD прекрасно подходит ASPLinux 11 Express – дистрибутив ASPLinux 11, в Варианты поставки: 2DVD для проверки совместимости компьютерного обору- котором нет ничего дования с операционной системой Linux. лишнего. Квалифи- Варианты поставки: 1CD цированные поль- Knoppix зователи Linux не Knoppix – один из наиболее популярных дистрибути- Alt Linux 3.0 Compact – простая и удобная опера- всегда нуждаются в вов Linux в формате LiveCD/LiveDVD (то есть запуска- ционная система для повседневной работы, осно- печатных руководс- ющийся прямо с диска и не требующий установки), ванная на последних твах по установке и хорошо подходящий как для ознакомления с воз- разработках ALT Linux. настройке системы и, как правило, хорошо представ- можностями Linux, так и для тестирования обору- Дистрибутив содержит ляют, какие именно приложения и пакеты они соби- дования и организации мобильного рабочего места. всё необходимое для раются устанавливать и использовать. KNOPPIX основан на дистрибутиве Debian GNU/Linux пользователя домаш- Варианты поставки: 4CD Sid. KNOPPIX -- универсальный LiveCD/LiveDVD, кото- него компьютера, в рый подойдет каждому: и системному администрато- том числе программы ASPLinux 11 Standard – типовой вариант дистри- ру, которому нужно срочно восстановить загрузчик для работы в Интернет, бутива ASPLinux 11 для установки на компьютеры на сервере, и менеджеру, которому срочно нужно на- офисные приложения, корпоративных или печатать отчет (а Windows как раз пал жертвой виру- программы для просмотра и прослушивания мульти- домашних пользова- са), и простому домашнему пользователю, который медиа. В Compact реализована поддержка широкого телей. Этот вариант только присматривается к Linux. спектра современного оборудования, в том числе дистрибутиа – луч- процессоров, материнских плат, видеоускорителей, ший выбор для поль- Knoppix 5.0.1 – оригинальная версия Knoppix, соб- принтеров, цифровых камер, сканеров. зователей, которые ранная Клаусом Варианты поставки: 1CD или 1DVD (в зависимости от хотели бы работать Кноппером. Исполь- количества пакетов) в Linux, но не обла- зование файловой дают навыками про- системы UnionFS Alt Linux Sisyphus -- это огромный банк пакетов граммиста или системного администратора. В комп- позволяет в течение (репозиторий), который разрабатывает компания лект также включены игры и демоверсии коммерчес- рабочего сеанса уста- ALT Linux. На его ос- ких приложений под Linux. навливать дополни- нове создаются все Варианты поставки: коробка с 6CD и двумя книгами тельные приложения дистрибутивы ALT. с помощью мощно- Поддерживаемая ALT ASPLinux v10 Deluxe – наиболее полный вариант го менеджера пакетов apt. Кроме того, KNOPPIX Linux Team целост- дистрибутива ASPLinux v10. Это идеальный помощ- можно установить на жесткий диск, таким образом, ность Sisyphus, ори- ник специалиста, ко- KNOPPIX -- это еще и самый быстрый способ развер- гинальная техноло- торому необходим тывания Debian GNU/Linux. гия сборки пакетов, надежный и мощный Варианты поставки: 1CD или 1DVD (в зависимости от интегрированная в дистрибутивы утилита apt-get и инструмент для ре- количества пакетов) ее оболочки aptitude и synaptic позволяют пользова- шения любой зада- Knoppix 5 Russian Edition – это русская редакция телям легко обновлять свои системы и быть в курсе чи, какой бы слож- оригинального Knoppix, собранная специалистами всех новостей мира свободных программ. Новые вер- ной она не являлась. ЛинуксЦентра. В эту версию внесено много улуч- сии выпускаются раз в месяц. Этот дистрибутив с шений и исправлений, а также включена поддержка Варианты поставки: 2DVD одинаковым успехом русского языка во всех программах первой необхо- может быть исполь- димости. Русифицированы OpenOffice, Mozilla Firefox, зован для установки как на рабочей станции, так и на Mozilla Thunderbird, KDE, а также системные утилиты ASP Linux сервере предприятия малого или среднего бизнеса. В Knoppix. ASP Linux – это отечественный дистрибутив, осно- эту версию включены диски с исходными текстами, Варианты поставки: 1CD ванный на Fedora Core. В отличие от Fedora Core, ASP документацией, играми и Acronis OS Selector. Linux пригоден к использованию сразу после уста- Варианты поставки: коробка с 10CD, 1DVD и тремя новки, и практически не требует каких-либо допол- книгами Alt Linux нительных усилий по настройке. В дистрибутиве уже Alt Linux – универсальный отечественный дистрибу- проведена грамотная русификация, установлены ви- ASPLinux Server II оптимизирован для создания кор- тив, разрабатываемый энтузиастами со всего СНГ. део-драйверы с поддержкой аппаратного ускорения, поративных серверов различных классов и поддер- Каждая версия Alt Linux основана на репозитории па- включены аудио- и видео-кодеки. ASP Linux прекрас- живает различные сервер- кетов Sisyphus, который содержит тысячи пакетов. В но подойдет для первого знакомства с Linux. В дис- ные архитектуры, включая Sisyphus содержится большое количество довольно трибутиве используется свой установщик, который многопроцессорность и редких программ, которые вы вряд ли найдете в дру- позволяет изменять размер разделов (в том числе и с большие объемы памяти. гих дистрибутивах. файловой системой NTFS), а также свой загрузчик. ASPLinux Server II включает Alt Linux 3.0 Compact, Travel CD запускается все необходимые средства непосредственно с ком- ASPLinux 11 Greenhorn – реализация принципа для построения, настройки пакт-диска. Вы можете LiveCD на основе но- и администрирования поч- полноценно использо- вой версии ASPLinux тового сервера, Интернет- вать компьютер даже в 11. Этот вариант дис- и веб-сервера, сервера печати, сервера приложений, том случае, если в нем трибутива не требует сервера баз данных, файлового сервера. нет жесткого диска. установки на жест- Варианты поставки: коробка с 8CD, двумя книгами Travel CD основан на тех кий диск и запуска- и футболкой.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 121 ОТВЕТЫ Вопрос? Ответ! Если вы завязли в какой-то проблеме и чтение HOWTO не помогает, почему бы не написать нам? Наши эксперты помогут разобраться даже в самых сложных проблемах.

NFS и Mepis Midnight Commander станет доступен новленной, блокирует доступ. Комбинация НАШИ ЭКСПЕРТЫ Мне понравилась версия Mepis для Mepis, когда Вы активируете репози- SetEnvIf, Allow и Deny дает отличную из LXF79, с ней у меня даже торий Debian, необходимый для установ- возможность для контроля, кто или что Наши эксперты найдут ответ на самый впервые нормально заработал ки Portmap. Вы найдете его, пошарив в может иметь доступ к определенным час- трудный ваш вопрос. Если у вас Skype под Linux. Однако, к мое- Synaptic. Пакет называется mc. НБ тям Вашего ресурса. Для дополнительной проблемы с установкой, настройкой В • модема, сетью или еще чем-нибудь – му разочарованию, не нашлось NFS, и я не По поводу Skype смотрите «Краткую информации ознакомьтесь со следующими просто напишите нам, а обо всем могу пользоваться своей Linux-сетью. Сайт справку» на следующей странице. документами: остальном позаботимся мы. Mepis не помог, у других те же проблемы. • httpd.apache.org/docs/2.0/mod/mod_ Пришлось вернуться на Kubuntu, который В незнании – благо setenvif.html#setenvif довольно похож и всё хорошо делает (хотя, В нашей интранет-сети около • httpd.apache.org/docs/2.0/mod/mod_ Управляя Интернет- к сожалению, Midnight Commander недосту- полутора тысячи компьютеров access.html#deny провайдером, а заодно подрабатывая пен в обеих системах). Можете ли вы дать под Windows 2000 с доступом к • httpd.apache.org/docs/2.0/mod/ редактором дисков мне инструкции, как заставить работать нашему web-серверу под Debian mod_access.html#allow LXF, Нейл Ботвик В NFS в Mepis? Sarge и Apache 2.0.54. Похоже, на некото- НБ (Neil Bothwick) Дж.Ф.Л. [JFL] рых из них запущен сервис WebDav, под- скромно зовет себя мастером на все руки. Хотя в ядре Mepis включена ключающийся к интранет-серверу и забива- Хочется радушия поддержка NFS, в самом дист- ющий информацией мои журналы. Как можно настроить приглаше- Брэндон Калигари рибутиве нет Portmap, который Есть ли способ заставить Apache ние к авторизации? Хочу, что- (Brendon Caligari) больше десяти лет О нужен для монтирования NFS- просто не знать о запросах, сделан- бы оно выглядело примерно так, работает с Linux, он разделов. Запустите Synaptic, перейдите ных этим сервисом? Его User-agent как на сайте http://alinux.org/ администратор В в Настройки > Репозитарии (Settings –’Microsoft-WebDAV-MiniRedir/5.1.2600’. linux-os/aLinux-step4.png, но без гра- работающей системы > Repositories) и отметьте первый репо- Дланни, с форума LXF [Dlunny] фики и статичного текста. Я хочу пингвина, в фирме Rackspace Managed Hosting. зитарий, Debian. Щелкните по кнопке Вы можете блокировать (или информацию о ЦПУ, памяти, производи- «Получить сведения» (Reload), чтобы разрешить) запросы с опреде- тельность процессора и приглашение. Вы Александр К. – обновить списки пакетов, а затем, восполь- ленных агентов с помощью ком- можете помочь? сторонник Unix-way. зовавшись кнопкой Искать (Search), най- бинации из директив SetEnvIf и Майк86, с форума LXF [Mike86] Молодой, но О перспективный член дите и установите Portmap. Вам также нуж- Deny (или Allow), которые можно вклю- Текст, выводящийся на терминал дружной команды но проверить, что сервис Portmap запущен, чить в секцию конфигураци- перед приглашением к автори- экспертов. когда Вы загружаетесь – установка должна онных файлов httpd.conf или .htaccess. зации, берется из файла /etc/ об этом позаботиться. Так как Вы хотите блокировать все запросы О issue. Поместите то, что Вы Теперь Вы можете смонтировать NFS- с этого агента, я бы посоветовал добавлять хотите видеть, включая ANSI-графику, в Валентин Синицын ресурс с помощью стандартной команды: директивы в секцию каталога этот файл. В него можно даже добавлять, Поддерживает проект mount -t nfs hostname:/exported/dir /mnt/ DocumentRoot. при помощи Cron, текущие напоминания Slackware Reiser4, интересуется somewhere Директивы для блокирования выгля- вроде «Следующее воскресенье – день настольными Linux- Если Вы пытались смонтировать ресурс дят так: матери» или «Купить свежий Linux Format технологиями и рад в этой же сессии, и у Вас ничего не вышло, SetEnvIf User-Agent ^Microsoft-WebDAV- завтра». помочь Вам разобраться с ними. может быть, надо просто перезагрузиться. MiniRedir BegoneWebDAV Если Ваших художественных способ- NFS иногда капризничает. Order Allow,Deny ностей маловато для создания ANSI-пинг- Deny from вина, поможет пакет Linux_logo, доступный env=BegoneWebDAV на www.deater.net/weave/vmwprod/ Первая строка linux_logo и, возможно, в репозитариях настраивает пере- Вашего дистрибутива. Man-страница для менную окружения Linux_logo описывает множество опций BegoneWebDav для управления выводом. Приведённый для агентов, имена Вами пример создан с помощью такой которых начинаются команды: с ‘Microsoft-WebDAV- linux_logo -c -y -k >/etc/issue MiniRedir’, так что Удачи! Окружающая текст графика – она будет продол- это фрейм-буфер, не имеющий отношения жать работать, даже к приглашению авторизации. НБ если номер версии сервиса изменится. FNFS и Midnight Commander будут доступны в Mepis Следующая пере- после добавления репозитория Debian. менная, будучи уста-

122 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ОТВЕТЫ

Пропавший профиль • ~/.mozilla/firefox/default.yyh/ Я бы хотел создать резервные bookmarks.html Пакости распаковки копии моих закладок, настро- • ~/.thunderbird/default.piz/prefs.js Три недели назад я установил ек и адресной книги Firefox и • ~/.thunderbird/default.piz/abook. SUSE 10.0, и с тех пор мне неза- ВThunderbird . В Windows у меня mab чем оглядываться. Надеюсь со была для этого отдельная программа. Но в Вероятно, простейший способ сде- В временем полностью перейти на Fedora я не смог найти свой профиль. Пути, лать резервные копии полных директорий Linux. Одна проблема, не могу разобрать- такой: ся с установкой программ из архивов. Я tar czf FfandTBsettings.tar.gz ~/.mozilla/ так понял, их надо распаковать и перейти firefox ~/.thunderbird Оставьте свободное пространство на в их директорию, однако когда ввожу ./ Вы можете воспользоваться Cron для жестком диске неразмеченным, configure, получаю вот что: автоматического ежедневного создания установщик Fedora Core создаст bash: ./configure: No such file or directory разделы сам.. резервных копий, сохранив следующий Я немного озадачен: всё делал по сове- скрипт в /etc/cron.daily/mozbackup: установить три директории? там многих людей, пытался выполнить это #!/bin/sh Тим [Tim] как суперпользователь, но до сих пор ниче- tar czf /somewhere/safe/FFandTBsettings- Linux-разделы, созданные с го не выходит. Чувствую, я упустил что-то $(date -I).tar.gz /home/john/.mozilla/firefox помощью Partition Magic, иног- очень простое. /home/john/.thunderbird да создают проблемы. В устано- Джи М. Николсон [Gee M Nicholson] Не забудьте установить его бит испол- О вочных программах многих дис- няемости, иначе он не запустится: трибутивов есть опция изменения размера Часто говорят, что запуск Создайте из Linux-logo свою chmod +x /etc/Cron.daily/mozbackup Windows-раздела и создания Linux-разде- ./configure является первом графику ANSI. НБ лов, предпочтительно ею и пользоваться. шагом после распаковки архи- Fedora такую возможность не предоставля- ва, а на самом деле он третий. Магия бессильна О предлагаемые на сайте Mozilla, не похожи ет, так что лучше будет с помощью Partition Первые два: на место хранения моих закладок (хотя я Я купил ваш спецвыпуск про Magic изменить размер раздела Windows, 1) Найдите файлы с инструкциями по нашел закладки Red Hat) или моей почты. Fedora Core 5, и следовал инс- но пространство Linux-раздела оставить установке. Поиск по файловой системе ничего не дал. трукциям по установке, но неразмеченным. 2) Внимательно прочитайте их. Видимо, я задавал системе неправильные В наткнулся на проблемы. У меня А сейчас – удалите созданные Вами Большинство архивов с исходны- вопросы... установлена Windows XP, и с помощью Linux-раздел(ы). После этого запусти- ми кодами содержат файлы README и Джон Х. Браун [John H Brown] Partition Magic я создал Linux-раздел на те установщик Fedora Core 5 и выберите INSTALL, которые надо просмотреть Firefox хранит свои настрой- 10 ГБ. «Использовать свободное простран- и понять, как установить программу. ки в ~/.mozilla/firefox/ Установка с диска шла хорошо до шес- ство». Установщик создаст нужные раз- Стандартный метод установки программ из default.???, где ??? – случай- того этапа, после чего установщик принял- делы сам на свободном месте. Важно пом- исходных кодов О ная строка. Thunderbird использу- ся сообщать о невозможности продолже- нить, что под свободным местом понимает- ./configure ет ~/.thunderbird/default.???. Например, ния. Я предупреждал Partition Magic, что ся неразмеченное пространство, а не место make мои закладки, настройки и адресная книга хочу установить Linux – может, мне надо в готовых разделах. НБ make install хранятся соответственно в разбить этот раздел на три части, чтоб подходит в более чем 90% случаев, но есть и исключения. Иногда настройка не нужна – в частности, для очень простых программ. То есть Вы должны выполнить КРАТКАЯ СПРАВКА: VOIP только make и make install. Бывает, что программа использует иной способ уста- VoIP (Voice over IP) – это использование время разговора, и за дистанцию. VoIP ла – близкое к телефонному. Он также новки. В любом случае Вы должны предва- TCP/IP-соединения для двунаправленной приобретает все большую популярность в может работать через стандартные web- рительно ознакомиться с инструкциями. передачи голоса. Многие имеют дешевое офисной среде: для телефонии и Интернета порты 80 и 443 – многие брандмауэры их Несмотря на нежелательность испол- высокоскоростное Интернет-соединение, а используется одна и та же инфраструктура не запирают. Однако главная причина нения первых двух шагов от имени супер- при телефонных звонках надо платить и за (кабель и пр.), и обычный компьютер может популярности Skype – тот факт, что он пользователя, его прав обычно требует служить коммутатором, сер- «просто работает» на множестве ОС (Linux вером голосовой почты и x86, Windows, MacOS). make install для записи файлов в сис- шлюзом во внешний мир, Есть открытые альтернативы Skype, темные директории. Так как это потенци- используя VoIP-связи или использующие протокол SIP, например, альная опасность, прочитайте инструкции даже обычные телефонные KPhone и Linphone для Linux и SJPhone для обязательно. линии респондентов. Windows. Все они требуют регистрации у Другой полезный шаг при использова- Идея не нова, однако SIP-провайдера. Единожды подключив- нии ./configure – запустить его сначала с сдерживающими фактора- шись, вы можете позвонить любому чело- параметром --help. Это даст Вам возмож- ми всегда были скорость веку, использующему SIP, даже если у ность контролировать сборку и установ- соединения и его качество. него другой SIP-провайдер. Список про- ку программы (другие способы для этого Другая сложность – обеспе- вайдеров имеется на www.sipcenter.com/ отнюдь не просты). НБ чение связи через межсете- sip.nsf/html/Service+Providers. вые фильтры. Однако Skype Разговоры с другими пользователями (www.skype.com) смог Skype бесплатны, и у большинства SIP-про- Управлять движением решить эти проблемы, вайдеров тоже. При звонках на стационар- Моя система будет служить шлю- создав приемлемое качест- ные телефоны VoIP дает заметную эконо- зом в Интернет, а также файло- во связи на хорошем ком- мию. Поскольку трафик передается через вым сервером для моей локаль- мутируемом соединении, а Интернет до ближайшего к абоненту узла, ной сети, в ней две Ethernet-карты.

Skype – бесплатная программа для звонков по при использовании более звонки на другой континент обходятся по В Я собираюсь настроить Iptables; есть ли всему миру высокоскоростного кана- тарифу местного вызова. способ ограничить сервисы (Samba, NFS >> и т.д.), чтобы они работали только с одним

www.linuxformat.ru LXF8(82) АВГУСТ 2006 123 ОТВЕТЫ

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ:

FAQ Что такое Wine? Вы можете запускать Windows-приложения рах, причём тяжкий труд конфигурирования FAQ Как насчёт игр? Это рекурсивный акроним: Wine Is без перезагрузки, то есть можно одновре- выполняется автоматически. На сайте Другой коммерческий вариант Not Emulator. менно использовать программы и под Codeweavers перечислено около 50 подде- Wine – – улучшенная версия с под- Windows, и под Linux. Wine также позволяет рживаемых приложений, но на самом деле держкой DirectX. Она бесплатна через CVS. FAQ Не особо полегчало! использовать подключаемые модули их гораздо больше. Если вы хотите получить готовые пакеты и Ну, на самом деле это такой вид Windows [plugins] в Linux-программах, поддержку, понадобится платная подписка. эмулятора. Wine – открытая реализация например, web-браузерах и плейерах. Это С Wine можно работать в Windows- приложениях, например, в программного интерфейса Windows дает Linux-программам доступ к проприе- Photoshop. (WinAPI), работающая поверх Х и Unix. тарным форматам. FAQ Wine позволяет запускать FAQ Эмуляторы часто тормо- Windows из-под Linux? зят. А Wine? Нет. Wine – некая прослойка между Он эмулирует только API, а не железо, поэ- Windows-программами и Linux. Когда вы тому программы работают с нормальной запускаете Windows-программу в Wine, она скоростью, а иногда и быстрее, чем в думает, что работает в родной среде, однако Windows; но поэтому Wine может быть ее обращения к Windows-функциям транс- запущен только на том же оборудовании, лируются в вызовы Linux-функций. что и Windows. FAQ Надо ли для работы в FAQ Где его взять? Wine ставить Windows? Вы можете скачать Wine в различ- Нет, но Wine будет пользоваться DLL-биб- ных форматах с www.winehq.com или поис- лиотеками из существующей установки кать пакеты в репозиториях к вашему дист- Windows, если она у вас есть. Если нет, он рибутиву. Есть и коммерческие варианты будет работать со встроенными альтерна- Wine. CrossOver Office от Codeweavers поз- тивными библиотеками. воляет запускать офисные приложения для Windows, а также подключаемые модули к FAQ Windows у меня уже Internet Explorer в нескольких Linux-браузе- есть. Зачем мне Wine?

>> >> интерфейсом, а именно, моей локальной ложение файла может быть другим). кие утилиты настройки, например, Guarddog Простое решение – используя сетью? NFS слегка отличается: ему нужно для или Shorewall. И в Fedora Core, и в SUSE Samba, настроить CIFS-сервер на Это нужно делать для каждого серви- каждого ресурса указать диапазон адресов, есть удобные средства настройки правил Linux-машине. Установите пос- са отдельно, или есть способ глобальной которым разрешено соединяться, в файле брандмауэра. О леднюю версию Samba (www. настройки? Я буду использовать Fedora /etc/exports: Третий способ – блокировать доступ к samba.org) и найдите конфигурационный Core или SUSE. /path/to/export 192.168.0.0/24(rw,sync) сервисам на Вашем модеме или роутере. файл: обычно это /etc/samba/smb.conf. Jellyman_4eva, с форума LXF Второй способ – использовать Iptables Это самый безопасный метод, поскольку Файл конфигурации разделен на две Для этого есть три способа. для полной блокировки доступа из гло- Вы останавливаете трафик еще до того, секции: глобальные настройки и установ- Первый состоит в настройке каж- бальной сети к портам нужных сервисов. как он попадет на Ваш компьютер. Однако ки разделяемых ресурсов. Глобальные дого сервиса на работу только Вы можете сделать это для каждого порта это не всегда возможно – все зависит от настройки относятся к работе самого CIFS- О с одним сетевым интерфейсом. в отдельности, а заодно и добавить бло- Вашего роутера или модема. сервера и используются для контроля все- Если сервисов у Вас немного, этот способ кировку по первому способу. Альтернатива Способы не являются взаимоисключа- го – от сетевого интерфейса, через кото- может оказаться самым простым и гибким. – блокировать вообще весь ющими, Вы спокойно можете комбиниро- рый работает сервер, до настроек Active Просмотрите man-страницы для каждого входящий трафик, это, вать их для обеспечения большей безопас- Directory в Windows. В Вашем случае гло- сервиса и добавьте подходящие опции в кстати, настройка по ности – так сказать, «поддержка штанов и бальные настройки можно не трогать. конфигурационные файлы. умолчанию для боль- ремнём, и подтяжками». НБ Теперь настроим Ваш ресурс. Допустим, Пусть IP-адрес Вашего LAN- шинства брандмауэ- файлы располагаются в директории / интерфейса 192.168.0.1, а у ров в Linux. Тогда Вам Способ Samba export/share, именем ресурса в CIFS будет другого интерфейса – другой останется лишь открыть У меня есть Linux-машина на myshare, описанием – all my files. Теперь, адрес; тогда Вы должны сде- порты для нужных сер- 192.168.1.1, соединенная с бес- так как в беспроводной сети множество лать следущее: висов, вроде SSH. Если проводным роутером. На ней пользователей, надо ограничить доступ к • добавить Listen Вы не слишком зна- В содержится резервная копия дан- ресурсу, предоставив права на чтение и 192.168.0.1:631 в /etc/cups/ комы с Iptables, ручное ных моего Windows XP-ноутбука, я её туда запись только пользователям Fred и Mary. cupsd.conf редактирование правил загружаю по FTP. Нет ли способа получше? Добавьте следующие строки в smb.conf: • добавить socket address может пробить серьез- Могу ли я хранить свои документы на Linux- [myshare] =192.168.0.1 в /etc/samba/ ную брешь в безопас- машине и получать их оттуда через сеть? comment = all my files

smb.conf ности системы. Поэтому Ричард Уоткинс [Richard Watkins] path = /export/share • добавить Listen 192.168.0.1:80 эксперты рекомендуют valid users = mary fred >> в /etc/apache2/httpd.conf (местопо- использовать графичес- public = no

124 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ОТВЕТЫ

writable = yes самый первый его запуск опустит Ваш быс- В Linux я относительно недавно. >> >> printable = no трый 64-разрядный компьютер до старичка Я установил свой первый дис- create mask = 0765 Sinclair Spectrum. Однако есть и другие про- трибутив с диска LXF и силь- Главное позади, но нужно ещё доба- граммы периодического сканирования жес- В но захотел установить VMWare вить пароли для Фреда и Мэри. Для ткого диска, например, UpdateDB, которая Player и попробовать другие дистрибутивы. этого запускайте smbpasswd от имени строит базу данных для locate. Программа Но инструкции из LXF78 по его установке суперпользователя: запускается через Cron – по умолчанию, в моем случае не сработали. Я успешно # smbpasswd -a fred в Mandriva её запуск запланирован раз распаковал файл VMWare-player-1.0.1- New SMB password: в неделю, рано утром, так что обычно 19317.tar.gz, всё по журналу. Зато следу- # smbpasswd -a mary активность диска проходит незамеченной. ющий шаг (./configure) явно не удался. Я New SMB password: А если у Вас установлен пакет anaсron, то уверен, что нахожусь в нужной директории У двоичных пакетов и пакетов с # он запускает все задачи (VMWare-player-distrib), однако набрав исходными текстами разная Наконец, проверьте, запущена ли Cron, не выполняв- ./configure, получаю ошибку: установка. Samba – если нет, запустите. Теперь Вы шиеся из-за того, bash: ./configure: No such file or directory ля не находится, то сам собирает подходя- можете получить доступ к CIFS-ресурсу что компью- Я думаю, что-то не в порядке с моей щий. Все это Вы можете установить через с Вашего ноутбука через \\192.168.1.1\ тер стоял SUSE 9.1. Наверное, в системе нет коман- Yast. Нужные Вам пакеты называются gcc и myshare. КК выключен- ды configure. kernel-source. НБ ным – тут Джим [Jim] Монтирование LVM диск и может О Скрипт configure включен во мно- Linux запоздалый Можно ли смонтировать LVM- перевозбу- жество пакетов с исходными текстами – ./ Привет вам из США и огромное разделы внешнего жесткого дис- диться. означает выполнение команды из текущей спасибо за отличный журнал! Я ка? Я хотел бы скопировать один Заметив директории, так что Вы запускаете команду прямо наслаждаюсь, читая все В файл с моего старого жесткого повышенную активность диска, запустите прямо из распакованного архива, и система В статьи и обзоры. Жаль только, диска с установленной Fedora Core 3, избе- top и посмотрите, кто отъедает больше тут ни при чём. Большинство Linux-про- что приходится ждать, пока журнал появит- жав загрузки с него. всего процессорного времени. Если это грамм используют этот скрипт для провер- ся в местных магазинах... Зарфати [Zarfati], с форума LXF UpdateDB, Вам не о чем беспокоиться: база ки наличия в системе всех необходимых У меня всего один вопрос к экспертам: Если у Вас установлены утили- данных обновляется раз в неделю, обычно зависимостей. В Вашем случае он не сра- хотелось бы услышать ваши рекомендации ты LVM, Вы можете монтиро- всего за несколько минут. Попробуйте на ботал по причине того, что VMWare Player – по дистрибутиву для ноутбука IBM T22 с вать LVM-разделы с любого дис- какое-то время оставить компьютер вклю- это уже скомпилированная программа, с 256 МБ памяти. Я попробовал Damn Small О ка (мне случалось монтировать ченным. Если индикатор не перестанет другим методом установки. Linux, он отлично работает с моим Win- LVM-раздел, находящийся на флэш-брел- бешено мигать, скажем, через четверть Статья про VMWare в том же журнале модемом. Можно ли его установить на ке). Запустите от имени суперпользователя часа – что-то неправильно, нужно продол- указывала, что нужно запустить VMWare- жесткий диск? vgscan жить поиски виноватого через top. install.pl. Возьмите за правило просмат- Даррелл Ноблс [Darrell Nobles] vgchange -a y Быть может, индикатор сообщает о ривать раздел «Диск Linux Format» и Ваша первая проблема реша- После этого все обнаруженные разде- деятельности шины IDE, а вовсе не жест- директорию самого диска, всегда содержа- ется легко оформите подписку, лы будут видны в системе как устройства кого диска: например, проверке наличия щую инструкции по установке. Вот команды, и получите журнал всего через /dev/volumegroup/logicalvolume, а зна- DVD-диска в приводе. Это может быть и необходимые для установки пакета после О несколько дней после его появ- чит, Вы сможете их смонтировать обычным безобидная утилита вроде Partmon, сооб- распаковки: ления в наших магазинах. способом: щающая об отсутствии свободного места cd VMWare-Player-distrib Ноутбуки от IBM отлично поддержива- mount /dev/volumegroup/ на Ваших разделах. Её можно отключить ./VMWare-install.pl ют Linux, поскольку IBM предоставляет все logicalvolume /mnt/somewhere через Центр Управления Mandriva (Система Вам может понадобиться компилятор С спецификации и драйвера. Большинство НБ > Сервисы). НБ и исходные тексты ядра, поскольку в ходе LiveCD можно установить на жесткий диск, установки VMWare инсталлирует в систему однако DSL – не лучший выбор для Вас. Аварийная мигалка Ну, работай же! готовый модуль ядра, а если готового моду- DSL предназначен сугубо для использо- У меня на компьютере с двумя вания как LiveCD, и его обновление может жесткими дисками установле- вызвать трудности. на Mandriva 2006. Второй диск Я бы посоветовал перебрать несколько В отведен под резервные копии. LiveCD и взять тот, который будет работать После загрузки KDE всё отлично, только с Вашим оборудованием лучше всего. Вот индикатор жесткого диска принимается несколько примеров: беспрерывно мигать – да так, что я и • Knoppix Установив его, Вы получите сосчитать не успеваю. То же самое – на модифицированную версию Debian. старой машине, где я тестирую всякие www.knoppix.com программы. • Ubuntu или Kubuntu Оба основаны на Мне присоветовали удалить Kat, но это Debian: первый использует графическое не помогло. Я попробовал на старой маши- окружение Gnome, второй – KDE. не SUSE, и всё стало нормально, но хоте- www.ubuntu.com лось бы сохранить Mandriva. • PCLinuxOS LiveCD с возможностью уста- Не знаю, почему Mandriva так бомбит новки и простым обновлением. мой жесткий диск, но хочу это пресечь. С www.pclinuxos.com радостью приму любые советы. • Kanotix Еще один LiveCD на базе Debian с Дэйв Притчард [Dave Pritchard] невероятно простой процедурой установки. Удаление Kat – первое, что при- http://kanotix.com

ходит в голову. Kat индексирует НБ все файлы в Вашей домашней Мыслите комплексно: мигание индикатора жесткого диска может быть >> О директории, а это значит, что вызвано утилитой Partmon, усердно проверяющей память разделов.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 125 ОТВЕТЫ

ВОПРОС МЕСЯЦА!

Победитель конкурса на лучший вопрос в августе Анатолий Евдокимов получает заслуженный приз – подарочный сертификат на 1000 рублей от интернет-магазина LinuxCenter.Ru

Просим Анатолия связаться с редакцией по адресу: [email protected]

И снова о Microsoft Во-первых, NTLM-авторизация программы расположен по адресу: http:// распакован). После того, как сервер запу- Как известно, большинство сов- поддерживается браузерами ntlmaps.sourceforge.net/. Поскольку щен, Вы можете открыть браузер/утилиту ременных дистрибутивов позво- семейства Mozilla: Seamonkey Python наверняка включен в Ваш дистри- обновления дистрибутива, найти в ней ляют обновлять и устанавливать О и Firefox, то есть при обычном бутив, маловероятно, что Вы испытаете настройки прокси-сервера и ввести туда Впрограммы через сеть, но иног- серфинге с использованием этих прило- какие-либо проблемы с зависимостями. 127.0.0.1:5865 (если Вы не меняли локаль- да это сложно сделать из прокси-сервера жений Вы вообще не должны испытывать NTLMAPS работает как локальный прок- ный прокси-порт в server.cfg). компании. У нас, например, используется никаких проблем. си-сервер (по умолчанию используется Более подробное руководство по Microsoft ISA с NTLM-авторизацией, и если Если, по какой-то причине, браузер не порт 5865) и перенаправляет запросы ISA- использованию NTLMAPS (на понят- в Windows достаточно установить клиент может пройти авторизацию, или Вам необ- серверу. Скачайте с сайта архив с про- ном английском) можно найти по ISA, то в Linux это представляет проблему, ходимо использовать другую программу, граммой распакуйте его, затем откройте адресу, приведенному в самом низу поскольку стандартным способом соедине- существует универсальный способ. Наш файл server.cfg и внесите необходимые врезки. ние с прокси-сервером не устанавливается. соотечественник Дмитрий Розманов раз- изменения: в поле PARENT_PROXY и ВС Подскажите, как же в Linux подклю- работал NTLM Authorization Proxy Server PARENT_PROXY_PORT укажите адрес чаются к прокси типа ISA с NTLM-автори- - программу на Python, которая перехваты- и порт ISA-сервера, укажите параметры зацией? вает обращения к прокси-серверу и допол- авторизации. Сервер запускается коман- Анатолий Евдокимов няет их необходимыми заголовками. Сайт дой ./main.py (из каталога, в котором он

>> >> http://www.linux.com/howtos/Web-Browsing-Behind-ISA-Server- HOWTO-4.shtml

Order Allow,Deny Может быть, вы поможете решить эту Пауки в Сети Allow from all проблему? У меня небольшой web-сайт, и Deny from env=block Владимир Синотов СПРАШИВАЙТЕ ПРАВИЛЬНО! похоже, что большинство его После длительной переписки входящего трафика генерирует- Или вот так: с автором вопроса и проверки • Пожалуйста, не забывайте сообщать ся какими-то поисковиками. Как RewriteEngine On мыслимых и немыслимых пред- все необходимые данные о вашей сис- В теме. «У меня не работает X» нам мало я могу защитить доступ к своему серверу RewriteCond %{HTTP_USER_ положений, обнаружилось, что О что скажет, если мы не знаем, какую Apache от потенциально вредоносных аген- AGENT} ^WebCopier [NC,OR] ключ к разгадке лежал практически на версию X вы имеете в виду и на какой тов, web-пауков и т.д.? RewriteRule ^.* - [F,L] поверхности. Исследование файла config. аппаратной конфигурации пытаетесь Р. Дэвидсон [R Davidson] КК log показало, что компоновщик пытался ее запустить. Web-пауки могут быть исполь- использовать 32-битные версии библиотек, зованы для кражи контента и Пропавшая библиотека что, естественно, было обречено на провал. • Опишите свою проблему с максималь- информации о структуре ваше- При попытке сборки многих про- Простой параметр --enable-libsuffix=64, ной точностью. Причитания типа «Оно го сайта, не предназначенной грамм из исходных текстов коман- переданный сценарию configure, полно- не работает» или «У меня ошибка» О вряд ли дадут нам возможность для посторонних глаз. Эти агенты также да ./configure выдает следующее стью решает проблему. используются поисковыми движками для сообщение о ошибке : Редакция LXF выражает благодарность помочь Вам. Каким именно образом В нечто не работает? Чего вы от него индексирования содержимого сайтов. Всё checking for Qt... configure: error: Qt (>= Qt Владимиру Синотову, который не просто хотели? Какое поступает сообщение об это неплохо, однако если Вы не хотите, 3.2) (library qt-mt) not found. ждал от нас готового ответа, но активно ошибке? чтобы Вас находили через поисковики, Please check your installation! участвовал в процессе решения этой про- хорошо бы заблокировать агентам доступ. For more details about this problem, look at блемы и, в конечном итоге, обнаружил • Помните, пожалуйста, что люди, рабо- Большинство благонамеренных агентов не the end of config.log. «недостающий элемент мозаики». ВС LXF тающие в нашем журнале, НЕ являются лезет дальше файла robots.txt в корневой Make sure that you have compiled Qt with авторами или разработчиками Linux директории сайта. Если они наглеют, нужны thread support! или Вашего конкретного пакета (дист- суровые меры. Исследования Интернета показали, что рибутива). Иногда нужная Вам инфор- мация имеется на соответствующем В качестве первого шага можно сде- это проблема встречается у многих, но сайте. Ознакомьтесь с документацией! лать блокировку через HTTP-заголовок, чёткого ответа я не нашёл. Ясно, что конфи- это не непреодолимая преграда, но в гуратор не может найти библиотеку qt-mt, Мы стараемся ответить на все вопросы. большинстве случаев подойдет. Измените хотя всевозможные пакеты *.devel уста- Если вы не нашли ответа на свой, про- webcopier на строку, посылаемую пау- новлены, да и сами библиотеки присутс- смотрите другие ответы – может быть, ком. Попробуйте так: твуют. Использование параметра --with-qt- там разбирается проблема, аналогичная setenvif User-Agent ^webcopier libraries проблемы не решает. вашей. Все вопросы, к сожалению, block Я использую 64-битную версию поместить невозможно. OpenSUSE 10.1 на Athlon-64 3200+.

126 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ОТВЕТЫ

ОТДЕЛЬНО – ОБ УСКОРЕНИИ САЙТОВ

Оптимальный SQL мотреть, сколько строк будет проверено в следующем запросе (вывод в Таблице 4). У меня есть web-сайт с динамическим содержимым, генерируемым из базы mysql> explain select count(*) from t1, t2 where t1.jk= t2.jk; данных MySQL. Статические страницы открываются очень быстро, а вот дина- Проверка таблицы t2 с использованием индекса t2j1 свелась к проверке 10000 строк. мические ужасно тормозят. Как я могу увеличить скорость работы сайта? Теперь сравним их с 50 строками в таблице t1, возвращённых сортировкой по индексу ВХ. Брук [H Brooke] t1j1. Разработчики MySQL включили несколько готовых образчиков файла my. Мы можем очистить кэш и перезапустить запрос: cnf, оптимизированных под различное количество используемой оператив- mysql> flush query cache; ной памяти. Для их поиска выполните mysql> select count(*) from t1, t2 where t1.jk= t2.jk; О locate cnf |grep my- mysql> select count(*) from t1, t2 where t1.jk= t2.jk; Использование одной из этих конфигураций может помочь увеличить скорость. +------+ Но более важной является оптимизация Вашего SQL-кода. Для определения винов- count(*) | ников замедления Вы можете создать отдельный файл журнала: +------+ touch /var/log/mysql-slow.log 498167 | chown mysql:mysql /var/log/mysql-slow.log +------+ Обратите внимание, что им должен владеть пользователь, запускающий mysqld. 1 row in set (0.66 sec) Теперь добавим в секцию [mysqld] файла /etc/my.cnf следующую строку для слеже- Ранее занимавший 29 секунд, теперь он выполняется меньше чем за секунду. Этот ния за медленными запросами (а потом перезапустим MySQL): несложный пример даёт метод, который может быть использован при оптимизации log-slow-queries=/var/log/mysql-slow.log любых повторяющихся запросов без ключей и индексов для важных колонок. КК Вот пример записи в журнале: # Time: 030207 15:03:33 # User@Host: wsuser[wsuser] @ localhost.localdomain [127.0.0.1] # Query_time: 13 Lock_time: 0 Rows_sent: 117 Rows_examined: 234 use wsdb; SELECT l FROM un WHERE ip=’209.xx.xxx.xx’; Здесь видно, что wsuser обращался к базе wsdb через localhost (т.е. локально), и база рассмотрела 234 строки, это заняло 13 секунд. Попробуйте оптимизировать наиболее частые и медленные запросы. Проверьте зна- чение Rows_examined для каждого медленного запроса. Если это число хотя бы в два раза больше суммы всех строк в каждой опрашиваемой таблице, нужно добавить индек- сирование. Правда, при этом возникают лишние операции сравнения, отрицательно вли- яющие на производительность. КК Объяснить и описать Динамические данные на моем сайте обрабатываются слишком медленно. Я Таблица 1) подключил слежение за медленными запросами. Расскажите, что делать дальше и как их исправить. Field Type Null Key Default Extra ВР. Трент [R Trent] jk varchar(20) YES NULL Главное – определить причину медленности запросов и оптимизировать их. Если в Вашем журнале медленных запросов слишком много, скачайте mysql_ largeval varchar(30) YES NULL slow_log_parser (http://tinyurl.com/o2qek), чтобы выявить, какие из них Оповторяются чаще всего. Таблица 2) Определив такие запросы, используйте explain (объяснить) и desc (describe, описать) id select_ table type possible_ key key_len ref rows Extra для определения любой возможной оптимизации. Пусть у меня есть две одинаковые type keys таблицы по два столбца, без индексов или ключей (см. вывод в Таблице 1): 1 SIMPLE t2 ALL NULL NULL NULL NULL 7191637 mysql> desc t1; 1 SIMPLE t1 ALL NULL NULL NULL NULL 7191652 Using Обе содержат по 10000 строк данных. У Вас в журнале может повторяться запрос: where # Query_time: 29 Lock_time: 0 Rows_sent: 1 Rows_examined: 10000 use lxf; Таблица 3) select count(*) from t1, t2 where t1.jk= t2.jk; Используя запрос explain, давайте посмотрим, как работает SQL (вывод в Таблице Field Type Null Key Default Extra 2). jk varchar(20) YES MUL NULL mysql> explain select * from t1, t2 where t1.jk = t2.jk; largeval varchar(30) YES NULL Это значит, что проверено 7,191,637 строк в таблице t2. Потом эти же 7,191,637 строк проверяются в таблице t1. Далее, согласно describe (desc) по таблице (и полям NULL), Таблица 4) можно заметить, что в таблицах нет ключей и индексов. Давайте добавим простой id select_ table type possible_ key key_ ref rows Extra индекс в обе таблицы: type keys len mysql> create index t1jk on t1(jk); 1 SIMPLE t2 index t2jk t2jk 21 NULL 10000 Using index

mysql> create index t2jk on t2(jk); 1 SIMPLE t1 ref t1jk t1jk 21 lxf.t2.jk 50 Using where; Теперь запрос describe покажет индекс (вывод в Таблице 3). Нам нужно опять пос- Using index

www.linuxformat.ru LXF8(82) АВГУСТ 2006 127 ДИСК Linux Format Диск Linux Format Долгожданный релиз SUSE 10.1 теперь можно установить с нашего DVD!

ДИСТРИБУТИВЫ ВСЁ ОТНОСИТЕЛЬНО лана серьёзная работа, чтобы рабочий стол SUSE 10.1 OSS выглядел максимально гладким и интегри- Я везучий: 100% моей SUSE постоянно входит в число самых попу- рованным, независимо от того, используете работы можно выпол- лярных дистрибутивов – точнее, по рангу ли вы KDE или Gnome (выбрать между ними нить, используя откры- популярности Distrowatch, он идет сразу можно на этапе установки, или после уста- тое ПО. DVD журнала LXF после лидера Ubuntu (по данным за послед- новки добавить любой рабочий стол с помо- создаётся под Linux, наш ние 12 месяцев). Хотя это один из самых щью Yast). Вы обнаружите одну и ту же тему web-сайт работает под старых дистрибутивов – его первый релиз повсюду – взгляните, например, на застав- Linux, а эта колонка была Майк Сондерс вышел ещё в 1994-м году – он по-прежнему ку Gimp – а если хватит смелости, добавьте После установки, можете добавить набрана в Nano. Дома я себе программ с нашего DVD, разнёс Пола за завоёвывает себе поклонников, и вполне Xgl, у него в изобилии радующих глаз мулек развлекаюсь с другими запустив Yast и выбрав пункт бильярдом. Потом заслуженно. Опытная команда инженеров, (Xgl всё ещё считается нестабильным, поэ- Пол победил в открытыми ОС, напри- Software Management. корпоративное качество Novell и активное тому по умолчанию он не включен). Tetris. Так и надо! мер, Syllable и Haiku – короче, никакие мои сообщество делают SUSE одним из лучших занятия не требуют доступных дистрибутивов. Крутые инновации ледствия атаки. В Yast интегрирована кон- закрытых программ. Всё в порядке, Это второй релиз, производный от Из ярких особенностей этого дистрибутива фигурация Xen 3, а все основные пакеты мир во всём мире. OpenSUSE (www.opensuse.org) – откры- нужно отметить NetworkManager, который обновлены до новых, стабильных релизов, Однако, по-моему, важно быть в того проекта, который спонсировала Novell, делает подсоединение к сети и перемеще- включая KDE 3.5.1, Gnome 2.12.2 и курсе дел и в других системах, в чтобы улучшить взаимодействие с пользо- ние между сетями таким простым, что про- OpenOffice.org 2.0.2. Пока отзывы о новом частности, в Windows. Малость похо- вателями и разработчиками SUSE. SUSE – ще не бывает, а также AppArmor – систему релизе весьма позитивны, так что если вы див по Slashdot, вы обнаружите более чем способная серверная система, но безопасности Novell, разработанную с используете версию 10.0, то стоит «ПРОБЛЕМЫ LINUX истинное её призвание – настольные и целью ограничения прав приложений на обновиться. ВЫГЛЯДЯТ ТАКОЙ рабочие станции. В версии 10.1 была проде- вашем компьютере, чтобы уменьшить пос- На нашем DVD вы найдёте полную вер- сию SUSE 10.1, готовую к установке – прос- МЕЛОЧЬЮ НА ФОНЕ то загрузите ПК с этого диска! Через стра- WINDOWS.» ницу вы найдёте пошаговое руководство по установке. Имейте в виду, что для установ- дебаты Linux-против-Windows, где ки SUSE ваш компьютер должен обладать линуксоиды восклицают, что у дети- минимум 256 МБ памяти, процессором типа ща Microsoft «экран смерти» возни- Pentium или новее и 3 ГБ дискового про- кает каждые 15 секунд. Но дни Windows ME давно прошли! XP, воз- странства для стандартного набора можно, не идеальная система, но она пакетов. гораздо надёжнее, чем уверяют наши Опции загрузки по умолчанию должны спорщики. Обычные пользователи устроить большинство пользователей. Если Windows, увидав подобные заявле- вы встретитесь с проблемой загрузки с ния, могут посчитать коллег из Linux DVD, попробуйте выбрать режим Safe просто упёртыми фанатиками. Settings в главном меню. Если вы подозре- Чтобы продвигать Linux, мы долж- ваете, что проблема в вашем ПК, можете ны быть хорошо информированы; выполнить тест памяти или нажать кнопку кроме всего прочего, это помогает F3 и изменить разрешение экрана инстал- видеть перспективу. Как почти 100% пользователь Linux в течение лятора (пригодится, если во время старта нескольких лет, я могу брюзжать о возникли проблемы в видеокартой). некоторых аспектах этой системы (например, об установке программ), но каждый раз, когда я вынужден SUSE 10.1 и KDE. Три клиента IRC – есть из чего выбрать! обращаться к Windows, на этом фоне проблемы Linux начинают выглядеть НЕТ DVD-ПРИВОДА? тривиальными. Когда вы в следую- щий раз поссоритесь с Linux, посети- Если вам нужно устано- начать обычный процесс установки. (Yast монтирован с опцией ‘noexec’. Быстро те новичка, пользующегося компью- вить SUSE на компьютер, будет предупреждать вас, что нужно вста- исправить ситуацию можно, скопировав тером Windows, нашпигованным ! у которого есть только CD- вить очередной диск). Об использовании файл Essentials/Jigdo/jigdo-file с диска в шпионскими программами, и сразу дисковод, вам повезло. Мы Jigdo вы можете узнать подробнее, почи- каталог, упомянутый в PATH, например, почувствуете себя хорошо. включили в наш DVD-диск систему Jigdo, тав файл index.html – там под введением /usr/bin, и попробовав ещё раз. Если что, [email protected] благодаря которой можно сделать ISO- приводятся объяснения. добро пожаловать в наш форум. образы для CD-диска, записать их на CD- Проблемы с правами доступа при R, загрузить ваш ПК с первого диска и запуске Jigdo означают, что ваш DVD при-

128 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ДИСК Linux Format

РАЗРАБОТКА СОДЕРЖИМОЕ ДИСКА УЧЕБНИКИ ПО PHP Журнал Графика Звук В прошлом месяце мы свели из наше- 3D-Games Файлы из обзора 3D-игр. DevIL 1.5.6 Межплатформная AmaroK 1.4.1 Аудиопроигрыватель KDE. го журнала подборку учебников по OOo BASIC Дополнительный код из библиотека для работы учебника. с изображениями. Система Gimp и записали её на диск. Теперь Roundup Эмуляторы терминалов. GEGL CVS Библиотека обработки KleanSweep 0.2.8 Очистка дискового очередь за PHP – мы предоставляем изображений. пространства. вам полное собрание учебников (от Рабочий стол Syllable 0.6.1 Уникальная настольная Gimp 2.2.11/2.3.8 Графический редактор. LXF30 и до LXF82!). Учебники записа- Beagle 0.2.6 Поисковая система для Inkscape 0.44 Векторный графический система. ны в формате PDF, поэтому их можно рабочего стола. редактор. Video-drivers Драйвера ATI и Nvidia. Compiz CVS Оконный менеджер для Xgl. Ogre 1.2.0 Графический движок. прочесть почти в любом дистрибути- EPDFView 0.1.3 Просмотрщик PDF-файлов. Essentials ве; если у вас нет читалки PDF, попро- Avifile 0.7.43 Библиотека чтения и записи SuperKaramba 0.39 Интересные виджеты для HotPicks буйте Xpdf, из раздела Рабочий стол. рабочего стола. AckerTodo 3.6 Менеджер списка дел. AVI файлов. Xgl CVS X-сервер с 3D-эффектами. Avidemux 2.1.2 Утилита редактирования CheckInstall 1.6.0 Создание бинарных пакетов. PHP – один из самых популярных Xpdf 3.01 Просмотрщик PDF-файлов. видео. Coreutils 5.96 Утилиты командной строки. скриптовых языков для web: на нём Bonfire 0.3.1 Приложение для создания CSV Индексные файлы Coverdisc. можно написать сложный модульный Разработка GLib 2.8.6 Низкоуровневая библиотека. CD/DVD. сайт (пример – сайты на базе KDESVN 0.9.0 Клиент Subversion для KDE. Byzanz 0.1.1 Запись с экрана. GTK 2.8.18 Инструментарий для PostNuke), его легко изучить и у него PHP 5.1.4 Язык программирования. Goupil 0.1.0 Менеджер членства в интерфейса пользователя. PHP-Tutorials Учебники от LXF. клубе. Jigdo Конструктор ISO-образов. очень активное сообщество пользова- Subversion 1.3.1 Система контроля версий. Medit 0.6.98 Текстовый редактор. Kernel 2.6.17.6 Последний релиз ядра Linux. телей. Синтаксически PHP похож на C Vim 7.0 Текстовый редактор. NoFriction 0.1 Игра-головоломка. libsigc 2.0.17 Система обратных вызовов и Java, и если вы когда-то программи- на C++. Дистрибутивы Pipepanic 0.1.3 Игра-головоломка. ровали, то быстро его изучите. Если SVGpage 0.4 Конвертер изображений. libXML 2.6.24 XML-анализатор SUSE 10.1 Дистрибутив Linux от Novell. Visopsys 0.62 Операционная система. и инструментарий. вы не кодировали сроду, то возра- Игры Ncurses 5.5 Инструментарий для создания дуйтесь – PHP является одним из Интернет окон в текстовом режиме. Empty Clip 1.0.1 Двумерная ролевая игра. лучших языков для начинающих. На Mozilla Firefox 2 Beta 1 Бета-версия Firefox 2. Python 2.4.3 Язык программирования. Level Shmup 1.0 Стрелялка. нашем DVD вы найдёте полный набор Gossip 0.11 Чат-клиент. Rawrite Запись образов на дискеты. ManiaDrive 1.01 Трюковые гонки. SBM 3.7 Умный загрузчик (The Smart учебников из раздела Разработка, Офис Жемчужинки Boot Manager). который ведёт Пол Хадсон (автор кни- Gnumeric 1.7.0 Электронная таблица. Deskbar 2.14.2 Утилита поиска для Gnome. SDL 1.2.10 Мультимедиа-библиотека. ги PHP in A Nutshell). Скорее всего EasyTag 1.99.12 Расстановка тэгов для Безопасность PHP имеется в репозитарии вашего музыкальных файлов. FwBuilder 2.0.12 Утилита дистрибутива, но если вы не сможете Incollector 0.1 Менеджер коллекций. конфигурирования его найти, в разделе Разработка Ion 2/3 Оконный менеджер. брандмауэра. нашего диска вы найдёте исходный Links 1.00p16 Текстовый web-браузер. Nmap 4.03 Сетевой сканер. Mp3togo 0.5.1 Изменение размеров MP3- Sussen 0.22 Сканер безопасности. код последнего релиза. файлов. RSS-GLX 0.8.1 Коллекция хранителей Сервер экранов. Amanda 2.5.0p2 Система резервного Skippy 0.5.0 Переключатель задач в стиле копирования. Expos . Asterisk 1.2.8 Система УАСТ с открытым Tea 13.3 Текстовый редактор. кодом. ОС Syllable – сплошной дизайн, Tomboy 0.3.5 Ведение записей в стиле Wiki. KPoGre 1.3.8 Интерфейс к базе данных. интеграция и простота использования.

ИССЛЕДУЙТЕ НОВЫЙ РАБОЧИЙ СТОЛ SUSE 10.1

1 2 3

Во время установки вас спросят, что вы хотите устано- Чтобы сконфигурировать рабочий стол, используйте KDE Запустить Yast – многоцелевой инструмент и одну из вить в качестве рабочего стола: KDE или Gnome. Мы Control Centre (кликните Menu > Personal Settings). замечательных особенностей SUSE Linux. Для вызова рекомендуем KDE, он лучше сочетается с остальной час- Здесь можно менять цветовую схему, шрифты, декорации этого приложения кликните на Menu > System > Yast, тью дистрибутива. После загрузки вы увидите этот рабо- окон и стиль виджетов. Собираетесь имитировать вид CDE после чего выберите нужную опцию. С помощью Yast чий стол – кликните на зелёную кнопку в нижнем левом или Windows 9x? И это тоже можно, можно также включить можно установить новые программы, сконфигурировать углу для вызова главного меню. На нижней панели вы всякие эффекты вроде прозрачности и теней. Имейте в аппаратное обеспечение, поменять настройки загрузчика найдёте панель задач (со списком стартовавших про- виду, что сама инсталляция SUSE настраивается не здесь, и много чего ещё. Yast также отлично работает в других грамм) и переключатель, для навигации между виртуаль- для этого вам нужно… рабочих столах и оконных менеджерах, так что если у вас ными рабочими столами. Fluxbox, но вы хотите контролировать систему, можете и тут воспользоваться Yast.

www.linuxformat.ru LXF8(82) АВГУСТ 2006 129 ДИСК Linux Format

>> УСТАНОВКА SUSE LINUX 10.1

Установка SUSE 10.1 почти всегда проходит гладко, но если вы столкнулись с трудностями, посетите www.suseforums.net или www.linuxforum.ru.

1 2

Для установки SUSE загрузите ваш компьютер с DVD (возможно, понадобится поменять По окончании сообщений ядра появится графический инсталлятор, и вы окажетесь в этом порядок загрузки в BIOS). Когда появится это меню, нажмите один раз кнопку курсора экране. Выберите свой язык, нажмите Next в нижнем правом углу экрана и прочтите вниз и затем Enter, чтобы выбрать пункт Installation. лицензионное соглашение.

3 4

SUSE проанализирует вашу систему и предложит вам установку с нуля или обновление, Инсталлятор запустит процесс настройки разделов жёстких дисков. Если на вашем жёст- если у вас уже была предыдущая версия SUSE. Укажите ваш часовой пояс и выберите ком диске нет других ОС, просто щёлкните Accept; в противном случае щёлкните рабочий стол (мы рекомендуем KDE). Partitioning и выделите раздел под Linux (в идеале не меньше 3 ГБ).

5 6

После копирования файлов SUSE перезагрузится, и начнётся загрузка с жёсткого диска Процесс завершён! Теперь вы можете войти в систему с теми самыми именем и паролем и финальные действия инсталлятора, который определит оборудование, позволив вам (либо система впустит вас автоматически, если во время установки была выбрана соот- внести необходимые изменения, и спросит у вас имя пользователя и пароль. ветствующая опция). Наслаждайтесь вашим SUSE 10.1!

130 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ДИСК Linux Format

Информация о диске

Внимательно прочтите это перед тем, как использовать DVD-диск.

ЧТО-ТО ПОТЕРЯЛИ? Часто случается, что новые программы зависят от других программных продуктов, которые могут не входить в теку- щую версию вашего дистрибутива Linux. Мы стараемся предоставить вам как можно больше важных вспомогательных файлов. В большинстве случа- ев, последние версии библиотек и другие пакеты мы включаем в каталог «Essentials» (Главное) на прилагае- мом диске. Поэтому, если в вашей системе возникли проблемы с зависимостями, следует заглянуть именно туда. ФОРМАТЫ ПАКЕТОВ Мы стараемся включать как можно больше различных типов установочных пакетов: RPM, Deb или любые другие. Просим вас принять во внимание, что мы ограничены сво- бодным пространством и доступными бинарными выпуска- ми программ. По возможности, мы будем включать исход- ные тексты для любого пакета, чтобы вы смогли собрать его самостоятельно. ДОКУМЕНТАЦИЯ На диске вы сможете найти всю необходимую информа- цию о том, как устанавливать и использовать некоторые программы. Пожалуйста, не забывайте, что большинство программ поставляются вместе со своей документацией, поэтому дополнительные материалы и файлы находятся в соответствующих директориях. ЧТО ЭТО ЗА ФАЙЛЫ? Если вы новичок в Linux, вас может смутить изобилие различных файлов и расширений. Так как мы стараемся собрать как можно больше вариантов пакетов для обеспечения совместимости, в одном каталоге часто находятся два или три файла для различных версий Linux, различных архитектур, исходные тексты и откомпилированные пакеты. Чтобы определить, какой именно файл вам нужен, необходимо обратить внимание на его имя или расширение: имя_программы-1.0.1.i386.rpm – вероятно, это бинарный пакет RPM, предназначенный для работы на системах x86; имя_программы-1.0.1.i386.deb – такой же пакет, но уже для Debian; имя_программы-1.0.1.tar.gz – обычно это исходный код; имя_программы-1.0.1.tgz – тот же файл, что и выше по списку: «tgz» - это сокращение от «tar.gz»; имя_программы-1.0.1.tar.bz2 – тот же файл, но сжатый bzip2 вместо обычного gzip; имя_программы-1.0.1.src.rpm – также исходный код, но поставляемый как RPM-пакет для упрощения процесса установки; имя_программы-1.0.1.i386.FC4.RPM – бинарный пакет RPM для x86, предназначенный специально для операционной системы Fedora Core 4; имя_программы-1.0.1.ppc.Suse9.rpm – бинарный пакет RPM, предназначенный специально для операционной системы SUSE 9.x PPC; имя_программы-devel-1.0.1.i386.rpm – версия для разработчиков. Если диск не читается... Это маловероятно, но если все же прилагаемый к журналу диск поврежден, пожалуйста, свяжитесь с нашей службой поддержки по электронной почте: [email protected]

www.linuxformat.ru LXF8(82) АВГУСТ 2006 131 ДИСК Linux Format

СОЗДАНИЕ УСТАНОВОЧНЫХ ДИСКОВ ПРИ ПОМОЩИ CDRECORD

Самый быстрый способ записать ISO-образ на чистую матрицу – это cdrecord. Для всех перечисленных ниже действий потребуются права root. Для начала определите путь к вашему устройству для записи дисков. Наберите следующую команду: cdrecord -scanbus После этого на экране терминала должен отобразиться список устройств, подключен- ных к вашей системе. SCSI-адрес каждого устройства представляет собой три числа в левой колонке, например, 0,3,0. Теперь вы можете с легкостью записать образ на диск: cdrecord dev=0,3,0 -v /путь к образу/image. iso Чтобы упростить дальнейшее использо- вание cdrecord, сохраните некоторые настрой- ки в файле /etc/default/cdrecord. Добавьте по одной строке для каждого устройства записи (вероятно, в вашей системе присут- ствует всего одно такое устройство): Plextor= 0,3,0 12 16M Первое слово в этой строке – это метка, затем, после адреса SCSI-устройства вы должны указать скорость и размер буфера. Теперь вы можете заменить SCSI-адрес в командной строке на выбранную вами метку. Все будет еще проще, если вы добавите следующее: CDR_DEVICE=Plextor Все, что вам теперь нужно для записи ISO-образа – это набрать команду cdrecord -v /path/to/image.iso Если вы не из числа любителей команд- ной строки, в таком случае вам придет на помощь утилита gcombust. Запустите ее из- под root, выберите вкладку «Burn» и ISO 9660 Image в верхней части окна. Введите путь к образу, который вы хотите записать на диск, и смело нажимайте на «Combust!». Пока ваш образ пишется на диск, можете выпить чашечку кофе. Другая ОС? Вам не обязательно использовать Linux для записи компакт-диска. Все необходимые файлы уже включены в ISO-образ. Программы вроде cdrecrod просто перено- сят данные на чистую матрицу. Если у вас нет устройства для записи дисков, можно найти того, у кого оно есть, и записать диск на его компьютере. На нем может стоять Windows, Mac OS X, AmigaOS, или любая другая ОС. Нет устройства для записи дисков? А что если у вас нет устройства, с помощью которого можно было записать образ на диск? Вы знаете кого-либо с таким устройс- твом? Вам не придется использовать Linux для записи дисков, подойдет любая опера- ционная система, способная распознать при- вод записи дисков (см. выше). Некоторые дистрибутивы умеют монтировать образы дисков и выполнять сетевую установку или даже установку с раздела жесткого диска. Конкретные методы, конечно, зависят от дистрибутива. За дополнительной информацией обращайтесь на web-сайт его разработчика. LXF

132 LXF8(82) АВГУСТ 2006 www.linuxformat.ru ДИСК Linux Format

ДРУГИЕ ПРОГРАММЫ Если вам нравится жизнь на переднем ния – например, создания/модификации НОВЫЕ РЕЛИЗЫ крае технологий, попробуйте Gnumeric объектов базы данных (пользователей, таб- 1.7.0 – первый релиз электронной таблицы лиц и т.п.) и резервного копирования/вос- Вышла версия Amarok 1.4 – новый стабиль- в ветке для разработчиков (см. раздел становления баз данных. Исходный код и ный релиз очень популярного музыкально- Офис). На этот релиз затрачен колоссаль- пакеты для SUSE записаны на наш DVD. го проигрывателя для KDE. Он любим ный труд, включая сотни обновлений и KleanSweep – удобная утилита для KDE, настолько, что многие пользователи запус- исправлений ошибок. Среди наиболее обзор которой был сделан в HotPicks кают его и под другими рабочими столами и заметных новых свойств – импорт файлов LXF74 – также обновилась. Эта утилита оконными менеджерами. Пусть ему и нуж- Microsoft Office 12, линии регрессии в гра- почистит вам жёсткий диск и удалит всякий ны библиотеки KDE, но под Gnome на быст- фиках и сильно улучшенный импорт доку- мусор. Она ищет пустые файлы и каталоги, ИГРЫ рой машине вы этого и не заметите. Amarok ментов OpenDocument. Gnumeric 1.7.0 пока сломанные символические ссылки, позабы- Если (уж не знаем как) собираетесь пробовать это наяву, 1.4 принёс массу дополнительных возмож- доступен только в вие исходного кода, его тые исполняемые файлы и другой мусор, рекомендуем защитную дугу. ностей, включая улучшенную поддержку зависимости – библиотеки Gnome плюс накапливающийся в часто используемой И запаситесь валидолом. тэгов (так что ваши файлы WMA, MP4/AAC GOffice (всё это есть на нашем DVD). Linux системе. Сразу после установки све- и RealMedia получат нормальные описания) жей системы она вряд ли будет вам полез- MANIA DRIVE и поддержку текстов песен (тексты можно Все ваши базы данных на, но если вы уже давно работаете с вашим Блиц-опрос: кто помнит фантастичес- скачать почти с каждого сайта). Не так давно обновился KPoGre – клиент дистрибутивом и добавляли-удаляли про- кий Stunt Car Racer Джоффа Граммонда Другие заметные возможности – диа- для базы данных PostgreSQL. Мы чуть было граммы из репозитариев разных сортов, (Geoff Grammond)? Те, кто застал 8-бит- лог статистики, для отображения ваших не включили это обновление в обзор на стр. вам понравится порядок, который она ную эпоху, вероятно, играли в эту вели- любимых песен и артистов, плюс улучшен- 56, но отказались от этой идеи, поскольку наводит. колепную гоночную игру с невероятно ная поддержка звуковых устройств, так что базы данных не самый распространённый Конечно, на нашем DVD ещё много про- опасными трассами и летающими раз- эта версия должна работать с обычными тип приложений. KPoGre активно использу- грамм достойных внимания. Мы записали валинами. С тех пор мы навидались MP3-проигрывателями с интерфейсом USB. ет мастеров задач для администрирова- все приложения, рассмотренные в HotPicks, попыток воссоздать эту игру – напри- Данный релиз включил столько новых воз- Тайных Кладах и в обзоре X-терминалов, а мер, серия Destruction Derby – но в них можностей, что пропустить его просто также утилиты безопасности, ПО для разра- редко ощущался тот же сумасшедший нельзя; к счастью, в большинстве популяр- ботчиков и игры. драйв. Поэтому, когда мы наткнулись на ных дистрибутивов уже доступны двоичные Ах да, если вы ищете полный индекс ManiaDrive, мы не ожидали, что игра пакеты. программ на этом DVD, обратитесь к ката- нас удивит – и ошиблись… На нашем DVD вы найдёте полный логу CSV в разделе Essentials. Там нахо- ManiaDrive – игра сумасшедшая. исходный код, вместе с RPM-файлами для дится коллекция файлов, которые вы може- Постоянные вращения, прыжки, петли, Mandriva и SUSE. Если вы решите компили- те импортировать в электронную таблицу и переходящие в другие петли, и беско- ровать программу из исходных кодов, убе- найти то, что вас интересует. нечное издевательство над автомоби- дитесь, что у вас установлены пакеты раз- лем. Вы управляете скромным красным работчика KDE (обычно они называются KPoGre: KDE-утилита управления автомобильчиком, ваша задача – про- kdelibs-devel). PostgreSQL, с дурацким именем! ехать по безумному маршруту за мини- мальное время. 12 трасс нашпигованы всевозможными сложностями, затруд- няющими контроль над автомобилем – съедете с магистрали не под тем углом, и вы уже подброшены в воздух и шан- сов на удачное приземление почти нет. Чтобы запустить ManiaDrive, распа- куйте файл ManiaDrive-1.0.1-linux- i386.static-data.tar.gz, перейдите в появившийся каталог и наберите mania_drive.sh. Кликните на Story, а затем на первую трассу, и начнется бит- ва с секундомером (клавиши курсора контролируют автомобиль, а пробел вызывает рестарт). Подсказка: если лимит времени слишком жесткий и вы хотите попробовать другие трассы, отредактируйте их порядок в gane/ mania_drive.story. LXF

Amarok сработается с MP3-плейерами от Apple и iRiver, он поддерживает под-кастинг, собирает новую статистику, выставляет очки и работает с тэгами, и вдобавок имеет потрясающий Mood Bar (индикатор настроения)!

www.linuxformat.ru LXF8(82) АВГУСТ 2006 133 Журнал зарегистрирован Федеральной службой по надзору за соблюдением законодательства в сфере массовых коммуникаций и В следующем месяце охране культурного наследия ПИ № ФС77-21973 от 14 сентября 2005 года Выходит ежемесячно Тираж 5000 экз. LINUX FORMAT 8(82) АВГУСТ 2006

РЕДАКЦИЯ РУССКОЯЗЫЧНОЙ ВЕРСИИ: ГЛАВНЫЙ РЕДАКТОР Валентин Синицын [email protected] Литературные редакторы Елена Толстякова, Александр Толстой, Иван Мищенко Переводчики Александр Бикмеев, Павел Гладков, Светлана Кривошеина, Александр Кузьменков, Алексей Опарин, Сергей Салимов, Сергей Супрунов, Александр Толстой, Александр Черных, Юлия Шабунио, Павел Шер. UBUNTU Допечатная подготовка Мария Пучкова Родион Водейко Креативный директор Станислав Медведев Технический директор Денис Филиппов Директор по рекламе НАВСЕГДА! Денис Игнатов +7 812 965 7236 [email protected] Заместитель генерального директора Софья Виниченко Генеральный директор Настольный Linux уже здесь: мы зовем его Павел Фролов УЧРЕДИТЕЛИ Ubuntu. Читайте эксклюзивное руководство о частные лица ИЗДАТЕЛИ Павел Фролов, Станислав Медведев том, как выжать максимум из самого

Отпечатано в типографии «Текст» настольного дистрибутива современности! ООО «ППК «Текст» 188680, Ленинградская область, Всеволожский район, Колтуши, д.32 Заказ _____ Пре–пресс: d.r.i.v.e-group

РЕДАКЦИЯ АНГЛОЯЗЫЧНОЙ ВЕРСИИ: Редактор Ник Вейтч (Nick Veitch) [email protected] Заместитель редактора Пол Хадсон (Paul Hudson) [email protected] Художественный редактор Эфрейн Хернандез-Мендоза (Efrain Hernandez-Mendoza) [email protected] Новостной редактор Майк Сондерс (Mike Saunders) [email protected] Литературный редактор Ребекка Смелли (Rebecca Smalley) [email protected] Штатный автор Грэм Моррисон (Graham Morrison) [email protected] Ассистент по выпуску Эндрью Грегори (Andrew Gregory) [email protected] АВТОРЫ Джоно Бэкон (Jono Bacon), Марк Бейн (Mark Bain), Ладислав Боднар (Ladislav Bodnar), Нейл Ботвик (Neil Bothwick), Энди Ченнел (Andy Channelle), Дэвид Коулсон (David Coulson), Кингс Кобблер (Kings Cobbler), Майкл Дж. Хэммел (Michael J Hammel), Евгений Балдин, Андрей Боровский, Дмитрий Кирсанов, Петр Семилетов, Сергей Супрунов, Тихон Тарнавский, Алексей Федорчук, Сергей Яремчук. ХУДОЖЕСТВЕННЫЙ ОТДЕЛ Художники: Йон Блекшау (Jon Blackshaw), Эмит Петел (Amit Patel) Фотографии: Corbis UK Ltd, Photodisc, Joby Sessions, SuperStock Иллюстрации: Шейн Коллинж (Shane Collinge), Крис Винн (Chris Winn), Elly Walton Illustrations Создание диска: Майк Сондерс (Mike Saunders) LXF ИНТЕРВЬЮ

КОНТАКТНАЯ ИНФОРМАЦИЯ Содержание номера может быть изменено England: Linux Format, 30 Mon mouth Street, Bath BA1 2BW Tel 01225 442244 Email [email protected] Россия: Санкт-Петербург, ул. Гончарная, 23, офис 54, телефон: (812) 717-00-37 Email: [email protected] Web: www.linuxformat.ru

Авторские права: Статьи, переведенные из английского издания Linux Format, являются собственностью или лицензией Future Publishing Ltd (Future plc group company). Все права зарегистрированы. Никакая часть данного журнала не может быть повторно опубликована без письменного разрешения издателя. Все письма, независимо от способа отправки, считаются предназначенными для публикации, если иное не указано явно. Редакция оставляет за собой право корректировать присланные письма и другие материалы. Редакция Linux Format получает неэксклюзивное право на публикацию и лицензирование всех присланных материалов, если не было SpikeSource оговорено иное. Linux Format стремится оставлять уведомление об авторских правах всюду, где это возможно. Свяжитесь с нами, если мы не упомянули вас как автора предложенных вами материалов и мы постараемся исправить эту ошибку. Редакция Linux Format не несет ответственности за опечатки. Открытое ПО для бизнеса Все присланные материалы могут быть помещены на CD или DVD-диски, поставляемые вместе с журналом, если не было оговорено иное. Ограничение ответственности: используйте все советы на свой страх и риск. Ни при каких Linux on Rails условиях редакция Linux Format не несет ответственность за повреждения или ущерб, нанесенные вашему компьютеру и переферии вследствие использования тех или иных советов. Не пора ли переходить на Ruby? За содержание рекламных материалов редакция ответственности не несет. Linux-зарегистрированная торговая марка Линуса Торвальдса (Linus Torvalds). Название «GNU/Linux» заменяется на «Linux» в целях сокращения. Остальные торговые марки являются собственностью их законных владельцев. Linux Format является торговой маркой Future Publishing Ltd (Future plc group company). За информацией о журналах, издаваемых Future plc group company, обращайтесь http://www.futureplc.com

© Linux Format 2005 © Future Publishing Ltd 2005

BATH • LONDON • MILAN • NEW YORK • PARIS • SAN DIEGO •SAN FRANCISCO • ПОДПИСКА НА LINUX FORMAT

ПОДПИСКА В ЛИНУКСЦЕНТРЕ

Сколько стоит подписка?

Подписка на журнал «Linux Format» 12 номеров (январь, фев- раль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь) стоит 1800 рублей ПОДПИСКА - 2006! Подписка на журнал «Linux Format» 6 номеров (июль, август, сен- ПОДПИСКА ПО КАТАЛОГАМ РФ тябрь, октябрь, ноябрь, декабрь 2006 года) стоит 900 рублей Каталог агентства «РОСПЕЧАТЬ» – подписной индекс 20882 Как оформить подписку? Каталог «ПРЕССА РОССИИ» – подписной индекс 87974 Чтобы оформить подписку на журнал «Linux Format», необхо- димо зарегистрироваться в интернет-магазине Linuxcenter.Ru, указав ФИО и подробный почтовый адрес подписчика, заказать товар «Подписка на журнал «Linux Format» 12 номеров 2006 года», или товар «Подписка на журнал «Linux Format» второе полугодие 2006 года», получить от системы квитанцию для оплаты в любом отделении Сбербанка (для физических лиц) или счет для оплаты по безналичному расчету (для юридичес- ких лиц)

Как оплатить подписку?

– по выставленному счету (для юридических лиц) – по квитанции в любом отде- лении Сбербанка

Плюсы подписки

- подписка дешевле! - гарантированное получение нового номера журнала!

www.linuxformat.ru LXF8(82) АВГУСТ 2006 135 ПОДПИСКА НА LINUX FORMAT ПОДПИСКА ПО КАТАЛОГАМ СНГ И БЛИЖНЕГО ЗАРУБЕЖЬЯ

Каталог «Российская Пресса»- совместный проект Государственного Грузия предприятия «Казпочта» , Агентства «Книга-Сервис» и АРЗИ. • по списку номенклатуры «АРЗИ»» через АО «Сакпресса» (380019, г.Тбилиси, ул.Хошараульская, 29 ) и АО «Мацне» (380060, г.Тбилиси, Блок изданий АРЗИ в национальных Каталогах Украины и Беларуси. В пр-т Гамсахурдия, 42); Азербайджане, Армении, Грузии, Киргизии, Узбекистане и Молдове - по Казахстан изданиям, включенным в Объединенный каталог, распространяемые • по Каталогу «Российская Пресса» через ОАО «Казпочта» и ЗАО через АРЗИ. «Евразия пресс»; Молдавия Азербайджан • по каталогу через ГП «Пошта Молдавей» (МД-2012, г.Кишинев, бул. • по Объединенному каталогу российских изданий через Предприятие Штефан чел Маре, 134); по распространению печати «Гасид»(370102, г. Баку, ул. Джавадхана, • по списку через ГУП «Почта Приднестровья» (МD-3300, г.Тирасполь, 21); ул.Ленина, 17); Армения • по прайс-листу через ООО Агентство «Editil Periodice» (2012, • по списку номенклатуры «АРЗИ» через ГЗАО «Армпечать» (375005, г.Кишинев, бул. Штефан чел Маре, 134). г.Ереван, пл.Сасунци Давида, д.2) и ЗАО «Контакт-Мамул» (375002, Узбекистан Г.Ереван, ул.Сарьяна, 22 ); • по Каталогу «Davriy nashrlar» российские издания через Агентство Белоруссия по распространению печати «Davriy nashrlar» (7000029, Ташкент, • по Каталогу изданий стран СНГ через РГО «Белпочта» (220050, пл.Мустакиллик, 5/3, офис 33); г.Минск, пр-т Ф.Скорины, 10); Украина • Киевский главпочтамт. • Подписное агентство «KSS» Телефон/факс (044)270-62-20, 270-62-22

АЛЬТЕРНАТИВНЫЕ АГЕНСТВА РФ

Агентство «Интер-Почта» (095) 500-00-60, курьерская доставка по Москве.

Агентство «Вся Пресса» (095) 787-34-47

Агентство «УралПресс»

• Екатеринбург, Березовский, В. Пышма, Первоуральск тел. (343) 375-80-71, 375-84-93, 375-84-39, факс 375-62-74, [email protected] • Нижний Тагил тел. (3435) 411448, 417709, [email protected] • Челябинск тел. (351) 262-90-03, 262-90-05, [email protected] • Пермь тел. (3422) 60-24-40, 60-22-95, 60-35-42, [email protected]

136 LXF8(82) АВГУСТ 2006 www.linuxformat.ru