Professional Documents
Culture Documents
4 LXF DVD
внутри!
SimplyMepis 6
Knoppix 5
№ 10 (84)
ГЛАВНОЕ В МИРЕ LINUX
Аппаратная виртуализация
октябрь 2006 № 10 (84) Google
Earth
AMD vs Intel Linux-версия
вышла на
Виртуальный орбиту –
время
OSDL
тестировать!
прорыв!
Сильные пароли
Что
Новые процессоры меняют для
Джим Хаганин
правила виртуализации нас
Результаты тестирования сделала
OSDL?
Google Earth
Обзор технологии
Плюс: Пошаговое руководство по совместному Тайны самой важной
использованию Intel VT и Xen Linux-организации
SimplyMepis 6
НОВАЯ СЕРИЯ
Безопасность
Создание 3D-игр
Что делает пароль Когда я впервые
паролем? увидел Java,
то подумал,
что это какая-то
Web-дизайн в Inkscape
шутка
Джим Хаганин c. 32
4 607130 820445
Приветствие
К вашим услугам
Глядя на новенький с иголочки Linux Format, мы
решили поинтересоваться у его команды: А какое ПО
для Linux более всего нуждается в переработке?
Миссия журнала
Как с нами связаться
• Пропаганда свободного ПО в России
• Продвижение решений с открытым кодом в бизнес- Письма для публикации: letters@linuxformat.ru
сообществе Подписка и предыдущие номера: subscribe@linuxformat.ru
Техническая поддержка: answers@linuxformat.ru
• Поддержка российского Open Source сообщества
Проблемы с дисками: disks@linuxformat.ru
• Организация трибуны для разработчиков свободного ПО
Общие вопросы: info@linuxformat.ru
• Обратная связь между разработчиками и потребителями ПО Website: www.linuxformat.ru
Адрес редакции: Россия, Санкт-Петербург, ул. Гончарная, 23, офис 54.
Телефон редакции: (812) 717-00-37. Дополнительная информация на стр.118
Содержание
Весь номер – прямо как на ладони: приятного чтения!
OpenOffice.org Base
Настраиваем базу данных ..............................50
Таблицы, сортировка и фильтры для новичков.
SimplyMepis 6.0
Легко установить – легко
Inkscape использовать: как поживается этому
Создаем web-страницу ....................................54 дистрибутиву на плечах Ubuntu?
Всеми любимый векторный редактор – на Плюс: руководство по инсталляции
службе web-мастера.
Knoppix 5.0
OpenOffice.org Basic Последняя версия первого LiveCD.
Запускаем макрос VBA ....................................58
Читайте руководство на DVD!
Да, это возможно! Узнайте, как импортировать
макрос Excel в OpenOffice.org. PC-BSD 1.2
Скорость и стабильность FreeBSD с
приятным рабочим столом. Если вы
никогда не пробовали FreeBSD,
Inkscape обратите внимание.
Zenwalk Linux
Разработчики обкорнали Slackware и
получили быстрый, компактный,
приятный дистрибутив.
подробности на стр.119
Спецрепортаж Обзоры
Google Earth ................................8
Виртуальный
Linux-версия спутникового ПО от Google
наконец-то вышла! Грэм Моррисон не блещет
в географии, но мы доверили ему оценить эту
новинку
прорыв
Новые процессоры меняют представление о виртуализации c. 22
А также....
Рай для леммингов – во всех
AC3D 6.........................................9
Руководство к быстрому старту Ник Вейч рассматривает новые возможности
закрытой системы 3D-моделирования
Gorky 17 ....................................12
OSDL? ............................ 38 Именитый ученый и бесстрашный командир в
одном лице: Коул Салливен
Ответ внутри
Сравнение: удаленные
Машины – в рейд! ................................. 42 рабочие столы
Больше больших, быстрых, безотказных дисков! VNC Free Edition ........................15
TightVNC....................................16
X11 ............................................16
Постоянные рубрики X11vnc ....................................... 17
NX 2.0.0 ..................................... 17
Tsclient ......................................18
Новости ...........................04 Вопрос? Ответ! .............100
Программа на сегодня: rsync, Apache, Krdc ...........................................18
Distrowatch......................20
Ладислав – о дистрибутивах для подкачка и т.д.
сбежавших из Windows и спорах
вокруг Opera. Что такое? ....................106
JavaServer Faces для растерявшегося
Ричарда Драммонда.
Интервью LXF ...............32
Джим Хаганин, неутомимый Roll call at the Southwest
расширитель Pyhton, обсуждает свой Через месяц .................118 Florida
ход в Microsoft с Полом Хадсоном Что LXF85 нам готовит... GNU/Linux Users Group.
Новости
ГЛАВНЫЕ НОВОСТИ: Gnome 2.16 Python 2.5 LinuxWorld 2006
Python 2.5
Новая версия популярного языка сценариев имеет все
шансы стать еще популярнее. Почему – разбирается
Сергей Супрунов.
19
сентября 2006 года, после Оператор with. Впрочем, вместо try-finally коммуникации между пользовательскими
нескольких месяцев бета-тестиро- теперь можно использовать новый оператор процессами и ядром в Linux.
вания и двух кандидатов в рели- with Модуль threading позволяет устанавли-
зы, увидел свет финальный релиз Python with open(‘file.txt’, ‘w’) as fd: вать размер стека для вновь создаваемых
2.5. Среди основных улучшений – увеличение fd.write(‘Hello’) потоков, для чего используется функция
скорости работы, особенно на операциях со stack_size([size]).
строками и при обработке исключений; улуч- В данном случае дескриптор fd будет Добавлен ряд новых модулей, среди кото-
шенная поддержка Unicode; новые операто- существовать только в пределах блока with, и рых: uuid, позволяющий генерировать уни-
ры языка, призванные сделать его ещё более при выходе из блока (в том числе и в резуль- кальные идентификаторы; sqlite3 для работы
удобным; многочисленные дополнения и улуч- тате исключения) файл будет гарантированно с одноимённой БД; ElementTree для обработки
шения во входящих в дистрибутив модулях. закрыт. XML-данных, и ряд других.
Среди новых языковых средств можно Новый метод словаря. Тип данных сло- Окончательно удалены устаревшие модули
упомянуть: варь получил ещё один встроенный метод: regex и regsub, а также ряд других.
Новый условный оператор. Теперь вы може- __missing__(). Он будет вызываться, если Этим перечень изменений не ограничи-
те писать var = A if <условие> else B, то есть выполняется обращение к словарю по отсутс- вается – всего отмечено около 800 патчей и
если <условие> истинно, то переменная var твующему ключу, и следовательно, програм- исправлений ошибок, так что можно сказать,
получит значение A, иначе – B. Это напоми- мист получает возможность переопределить что Python «стал лучше во всех отношениях».
нает тернарный оператор <условие> ? A : B, этот метод в производных классах. В пре- www.python.org
но ближе к естественному языку, хотя и не дыдущих версиях Python отсутствие ключа в
совсем привычно. словаре приводило к исключению KeyError (по
Единый оператор try-except-finally. В пре- умолчанию это поведение сохранилось).
жних версиях использовалось два оператора Параметр key. Функции min() и max(), по
для обработки исключений: try-except и try- примеру функции sort(), обзавелись допол-
finally. Первый позволял обработать возник- нительным параметром key. Теперь можно
шую ошибку в секции except, второй гаранти- указать свою функцию сравнения. Например,
Что было
ровал выполнение кода в секции finally даже max((‘abc’, ‘bc’, ‘c’), key=len) 33 вернёт значе-
в случае возникновения критической ошибки ние ‘abc’, как имеющее самую большую длину. SofTool’06/LinuxLand
в секции try (это, например, часто использу- Без параметра key будет возвращено ‘c’ как 26-29 сентября 2006 года
В рамках ежегодной выставки информационных технологий SofTool в
ется для гарантированного закрытия откры- самое «большое» по алфавиту.
Москве прошла вторая по счету экспозиция LinuxLand и конференция
тых файл). Теперь эти функции объединены в Ряд изменений внесён в модуль os. В част-
«ИТО-2006: Технологии Linux и Open Source». Участники конференции
одном операторе: ности, функция os.stat() по умолчанию теперь имели возможность прослушать доклады о внедрении Linux в странах
fd = open(‘file.txt’, ‘w’) будет выводить значения дат в виде чисел СНГ, а также поучаствовать в тренингах по современным открытым
try: с плавающей запятой. Добавлена пара новых технологиям. Кроме этого, в рамках LinuxLand состоялось награждение
fd.write(‘Hello’) функций – wait3() и wait4(), позволяющих победителей конкурса IBM WebSphere Community Edition Contest.
except: более гибко реализовывать ожидание завер- См. обзор LinuxLand в LXF85.
raise ‘Ошибка записи’ шения дочерних процессов. › www.linuxland.ru
finally: Модуль socket теперь поддерживает и
fd.close() Linux-сокеты AF_NETLINK, используемые для
В
начале осени сторонники рабочей сре-
ды Gnome (коих в сообществе Open Server 4.0
Source, согласно некоторым оценкам, Novell готовится готовится к выпуску
никак не меньше трети) отметили выход ее системы реального времени SUSE
новой версии – 2.16. Многочисленные измене- Linux Enterprise Real-Time
ния коснулись как чисто визуальной стороны, В Виртуальной Библиотеке
так и функционала. Но – обо все по порядку. ЛинуксЦентра опубликован ответ на
Пользователи ноутбуков по достоинству статью Владимира Попова «Строим сеть
оценят новый энергосберегающий инстру- с терминальным сервером сами»
мент Gnome. Помимо стандартных функций (LXF81)http://linuxcenter.ru/lib/articles/
по уменьшению яркости экрана, установке soft/x_terminals2.phtml
времени «засыпания» и т.п., теперь досту- Увидели свет: Subversion 1.4.0,
пен график зависимости оставшегося време- Gwenview 1.4.0, Linux 2.6.18
ни автономной работы от времени (простите
за невольный каламбур), который позволяет
наглядно видеть, насколько эффективны ваши
меры по сохранению энергии. Пока компьютер
находится в «спячке», зависимость практичес-
ки горизонтальная, а во время «бодрствова- таки, это не Wiki, а ваш рабочий стол – еще не Новый трехмерных эффектах. Благодаря изменени-
ния» наблюдаются резкие падения. весь Интернет. встроенный ям в Metacity, окна Gnome теперь умеют дро-
Довольно об оборудовании. Все-таки, ком- Редактировать меню Gnome тоже ста- инструмент жать, сжиматься, взрываться, плавно исче-
пьютер – это лишь инструмент, призванный ло значительно проще благодаря введе- управления зать и еще много чего другого. Единственное
автоматизировать рутинные или малоинтерес- нию в строй нового инструмента – Alacarte. питанием. «но», помимо необходимости иметь прилич-
ные операции, например, составление напо- Пользователи Ubuntu должны хорошо знать ную видеокарту (пока поддерживаются только
минаний самому себе. Радуйтесь – в состав эту маленькую утилиту, а теперь она стала Intel i830-i945 и ATI Radeon 7000-9250), состо-
Gnome 2.16 включен Tomboy, система экран- доступна и для людей, предпочитающих дру- ит в требовании скомпилировать Metacity с
ных заметок, основанная на Mono. Tomboy не гие дистрибутивы. ключом --enable-compositor – не все сборщики
раз получал высокую оценку редакции LXF, и Однако, никакой, даже самый развитый пакетов пожелают связываться с эксперимен-
мы наконец-то рады видеть его в стандартной функционал не может удовлетворить тягу к тальной функцией.
поставке. прекрасному – и Gnome стремится тщательно Gnome 2.16 будет рабочим столом по
Чтобы создать новую заметку, достаточ- следовать модным тенденциям. Версия 2.16 умолчанию в Fedora Core 6 и Ubuntu 6.10 так
но щелкнуть мышью в любом месте рабоче- является в этом смысле переходной – многие что, к тому времени, когда вы будете читать
го стола и ввести текст в появившемся окне из заложенных в ней нововведений проявятся эти строки, новинку уже вполне можно будет
(имеется встроенная проверка орфографии). в полной мере лишь в Gnome 2.18, но и сейчас попробовать в деле.
Заметки также можно связывать между собой, владельцам мощных видеокарт уже есть, чем www.Gnome.org
только не увлекайтесь этим чрезмерно – все- нагрузить свои GPU. Речь, разумеется, идет от P.S. Читайте обзор Gnom2 2.16 в LXF85
С
четвертого по пятое сентября в трибутива действительно реализовано впе-
Москве, в Центральном выставочном чатляюще) или RHEL, а слайды в обрамлении
комплексе «Экспоцентр» прошла уже интерфейса Microsoft PowerPoint.
вторая по счету Российская выставка-конфе- Еще одной точкой, по традиции вызвав-
ренция LinuxWorld. Нужно сказать, что орга- шей заметное скопление заинтересованной
низация самого мероприятия несколько отли- публики, как и на всех подобных выставках,
чалась от прошлогодней выставки не только оказался стенд компании LinuxCenter.Ru. Это
местом проведения, но и еще одним сразу и не удивительно, учитывая что там можно
бросающимся в глаза моментом. Так же, как было приобрести множество различных дис-
и в прошлом году, вместе с LinuxWorld одно- трибутивов Linux, атрибутику и специализи-
временно проходили Storage Expo, Infosecurity рованную литературу, в том числе и журнал
и Documation. Но, в отличие от прошлогодней Linux Format за последние несколько месяцев.
выставки, где стенды Linux-компаний распола- Кстати, говоря о периодике, нельзя не упо-
гались на общем для всех четырех мероприя- мянуть и стенд журнала «Системный админис-
тий пространстве, на этой выставке LinuxWorld тратор», где все желающие могли не только
был вынесен в отдельный уголок Экспоцентра. пообщаться с представителями редакции, но
К сожалению, это произошло не из-за уве- и обменять денежные знаки на журналы по
личившегося количества участников. Скорее льготному курсу. Выставочные В конце этого небольшого обзора хоте-
даже наоборот – ряда компаний, которые мы На выставке были также представлены стенды лось бы выразить надежду, что на LinuxWorld-
видели в 2005 году, на новой выставке не и компании-производители дистрибутивов. компаний- 2007 мы увидим новые компании-участники,
было. И как признали те участники выставки, Были представлены две самые известные участников еще больше интересных докладов, и познако-
с которыми я общался, такое выделение из отечественные компании, выпускающие свои LinuxWorld-2006. мимся с большим числом решений, представ-
«общего котла» выставляло LinuxWorld 2006 дистрибутивы – ASP Linux и ALT Linux, в то ленных на рынке Linux-систем. LXF
не с лучшей стороны, подчеркнув как отно- время как из зарубежных компаний-лидеров
сительно небольшое число участников, так и корпоративного рынка Linux-систем, разраба-
зачастую пустые стенды-коробки, на которых тывающих собственные дистрибутивы, участ-
можно было взглянуть разве что на пару-дру- вовала только Novell.
гую представителей компаний. Из других компаний, участвовавших в
Но не будем о грустном, а лучше скажем выставке, хотелось бы упомянуть Linux Ink
о том, что понравилось. Конечно же, подоб- (являвшуюся, помимо прочего, организато-
ные выставки в первую очередь – это обще- ром конференции), R-Style, MSI, Softline, OAO
ние. Компании могут рассказать о предла- «ВНИИС», издательство «Открытые системы»,
гаемых услугах и продуктах. Потенциальные Центр верификации ОС Linux.
заказчики – задать интересующие вопросы и Достаточно большой интерес у посетите-
познакомиться с предложениями на примере лей вызвали семинары и доклады, проходив-
того среза рынка, который представлен на шие на выставке. Сама конференция была
выставке. Ну и, наконец, подобные выстав- разбита на несколько параллельно идущих
ки – это место, где профессионалы могут секций: бизнес-секция, техническая секция и
пообщаться «вживую», что называется, глаза семинары компаний. К сожалению, охватить
в глаза с собеседником, а не со всплывающи- все доклады не было совершенно никакой
ми окошками IM или интерфейсом почтового возможности: в частности, я так и не смог
клиента. Не будем забывать и о тематических побывать на семинаре компании Microsoft,
семинарах, собиравших достаточно большое сотрудники которой обещали поделиться
число слушателей. взглядами на бизнес-модель, основанную на
Переходя же к конкретике, среди ком- открытом коде, и на взаимодействие с сооб-
паний, отметившихся на LinuxWorld, можно ществом разработчиков. Из тех докладов,
выделить нескольких представителей Linux- на которых удалось побывать, хотелось бы
рынка России. Безусловно, одну из первых отметить серию интересных выступлений,
скрипок играла компания IBM, которая не посвященных новой версии корпоративно-
только являлась платиновым спонсором кон- го дистрибутива SUSE Linux Enterprise 10
ференции, но и представила самые большие от Novell, и любопытный рассказ о приме-
по площади стенды. Параллельно с основ- нении SELinux в проекте для правительства
ными секциями конференции, все на том же Великобритании. Также достаточно интерес-
стенде IBM проходили собственные презен- но было узнать о завершающейся серти-
тации и доклады компании. Правда, в тот фикации RHEL на соответствие российским
момент, когда я прогуливался мимо стенда, стандартам. Правда, интересна эта новость
большой плазменный экран демонстрировал будет лишь клиентам IBM, т.к. процедура сер-
не красоты рабочего стола SLES (а надо ска- тификации привязывается не только к конк-
зать, что 3D-переключение рабочих столов в ретной версии дистрибутива и пакету обнов-
последней версии этого корпоративного дис- лений, но и к конкретному оборудованию.
АЛЕКСЕЙ ФЕДОРЧУК
Свою первую
(и последнюю) Сегодня мы рассматриваем...
программу написал
еще на Алголе.
Google Earth ..............................................8 AC3D 6 c. 9
LinuxWorld 2006 Приличная видеокарта – 200 баксов. Широкополосное
подключение – от 30 в месяц. Возможность сказать: «А вот
так мой дом выглядит с орбиты» - бесценна!
М
ожет быть, кое-кто из моих AC3D 6 ......................................................9
читателей помнит чувство Maya for Linux используется в Голливуде для создания
сопричастности высоким тех- таких кассовых фильмов, как «Властелин колец». Ну если
нологиях, охватывавшее посетителей пер- ваш бюджет поскромнее? Попробуем AC3D...
вых компьютерных выставок в конце 80- Opera 9 ....................................................10
х – начале 90-х годов прошлого тысяче- Спешно собирая бета-версии Firefox 2, немудрено забыть,
летия. Или – первые выставки UnixExpo что в этом мире есть и другие браузеры. Рассмотрим один
из них.
середины 90-х – когда нашим глазам впер-
вые предстала вся мощь рабочих стан- Xfce 4.4....................................................11
ций, оснащенных разными вариантами Это птица? Или самолет? Нет – это рабочее окружение, Gorky 17 ..................................................12
одноименной операционной системы. Ну столь быстрое, что KDE и Gnome остается только грустно Мы любим старые игры. Добавьте к этому мутантов,
вдыхать его выхлопные газы! Плюс забавная мышка на пейзажи стран бывшего СЭВ – и мы будем на седьмом
и, наконец, многим памятен прошлогод- логотипе. небе.
ний каскад выставок, посвященных Open
Source и Linux, оставивший ощущение Google Earth c. 8 Gorky 17 c. 12
того, что эти сферы перестали быть пери-
ферией IT-мира.
Традиция выставок продолжена То березка, то рябина, куст ракиты над рекой.. Кошелек или жизнь? Хотя, с такой мордой как у
была и в текущем году. Вслед за вто- тебя... кошелек и жизнь!
рым Open Source Forum Russia наста-
ло время и LinuxWorld (4–5 сентября).
Первое впечатление от нее – будничность.
Немногочисленные посетители степенно
НАШ ВЕРДИКТ пояснение
беседуют с представителями экспонирую-
Все попавшие в обзор продукты оце- Рассматривая свободное ПО, мы
щихся фирм. Что же до последних – ба,
знакомые все лица, в очередном перечис-
ниваются по одиннадцатибальной обычно указываем предпочтитель- Вердикт
шкале (10 – высшая оценка, 0 – низ- ный дистрибутив. Иногда это озна-
лении не нуждающиеся. Не показатель шая). Как правило, мы оцениваем чает компиляцию из исходных текс- Google Earth
ли это того, что мир Linux и Open Source функциональность, производитель- тов, но, если разработчики рекомен- Разработчик: Google
ность, простоту использования и дуют Autopackage, мы следуем Сайт: http://earth.google.com
окончательно миновал стадию ажиотажно- Цена: Бесплатно по закрытой лицензии
цену, а для бесплатных программ учи- этому совету.
го развития и вступил в период планомер- тывается документация. Кроме того, Функциональность 10/10
Производительность 9/10
ного практического применения? Думаю, мы всегда выставляем общую оценку,
Простота использования 9/10
так – и это не может не радовать. Но, с дру- демонстрирующую наше отношение к Документация 9/10
гой стороны, в жизни должно быть место продукту.
Если весь мир – сцена, то Google Earth
Выдающиеся решения могут полу- – театр. Простая в использовании,
празднику. Может быть, им станет гряду- чить престижную награду «Top Stuff». захватывающая и ободряюще практичная
щий LinuxLand? В момент, когда вы будете Номинантами становятся лучшие из
читать эти строки, ответ будет получен... лучших – просто высокой оценки Рейтинг 9/10
alv@posix.ru здесь недостаточно.
Google Earth
Предвидя захват Земли хакерами, Грэм Моррисон рассматривает проект Google –
никогда ещё виртуальная жизнь не была так хороша.
Н
адо признать, что год назад, ког-
Вкратце… да был выпущен Google Earth для
Windows, впечатление было силь-
Исследуйте Землю ным. Мы завистливо наблюдали, как знако-
за своим рабочим мые почитатели Windows и Mac запускают
столом с помощью виртуальную планету Google и бороздят Тихий
спутниковых океан в поисках неисследованных территорий
изображений и 3D-
данных. См. также: или просто удобного места для отпуска. Но
Celestia или больше мы им не завидуем! Google cовершил
ожидаемый NASA благородный поступок и выпустил родной
World Wind 1.5. порт для старого доброго Linux. Родной – это
вам не полуподпольные библиотеки Wine для
обработки системных вызовов Windows, как в
Picasa (см. обзор LXF83). Всё сделано основа-
тельно, с помощью Qt и под OpenGL.
Для тех, кому пока не посчастливилось
наблюдать Google Earth в действии – это
естественное расширение Google Maps. При
первом запуске мы видим голубое пятныш-
ко Земли с расстояния порядка 15 000 миль.
Прокрутка мыши приближает нас к родной Пусть Большой Каньон находится на другой стороне планеты – исследовать фотогеничную
планете, пока мы не зависнем над США. Чем американскую бездну можно, не выходя из-за компьютера.
дольше вы держитесь на одном месте, тем
детальнее становится вид – Google Earth без- тать наилучшим покрытием: здесь не диво рекламодателей Google, аналогично страни-
остановочно транслирует спутниковое изобра- разглядеть автомобиль или даже людей. цам поиска в поисковой машине. Это может
Детализация других частей света различна, пригодиться, если вы, скажем, ищете ближай-
AC3D 6
Linux не обижен инструментами 3D-моделирования, но почти все они – не для обычного
пользователя. Ник Вейч отыскал среди них не требующий семи пядей во лбу.
П
роизводители спецэффектов давно
Вкратце… влюблены в платформу Linux – она
экономит время и деньги в сравне-
Платный нии с другими, менее стабильными, система-
инструмент ми. Но их фирменные приложения вряд ли
объемного доступны для эффективного использования
моделирования со непрофессионалами.
славной историей.
Аналоги - Blender, Поприветствуем же AC3D, программу,
Maya и Realsoft 3D. достаточно простую для домашнего пользова-
теля и, при этом, достаточно мощную по всем
параметрам. Ныне она празднует свое десяти-
летие (первоначально AC3D создавалась для
Unix и Windows), причем все это время она
активно развивалась.
Всеобщая совместимость
AC3D гораздо лучше других Linux-инстру-
ментов справляется с открытием файлов 3D
Studio Max, LightWave 3D, DXF (AutoCAD) и…
всех остальных. Огромное количество сред
разработки, в которых теперь создаются 3D-
объекты, а также проприетарная природа сис-
тем рендеринга привели к появлению мно- От простейших предметов до сложных игровых миров – AC3D умеет делать все.
жества разных форматов. Способность AC3D
понимать их – одно из тех качеств программы, компьютерных игр). Возможность экспорта в многие сложные функции, доступные в других
эти форматы существенна, если необходимо платных программах. Это во многом справед-
«Если вы устали бороться с включить в рабочий процесс другие закрытые ливо: AC3D в основном полигональный/вер-
программы. Фактически, AC3D может запрос- шинный редактор без прихотливых режимов
превосходным, но сложным то обращаться ко многим рендерерам (по моделирования; но теперь он поддерживает
Blender – попробуйте это.» умолчанию – POV-Ray), хотя это более полез- впечатляющую функцию работы с «подпо-
но для Windows/Mac версии. верхностями» (соподчиненными поверхностя-
которые окупают расходы; вот только иногда ми), которая существенно упрощает создание
в процессе трансляции теряются некоторые Интерфейс похорошел «органичных» фигур и плавных изгибов. Если
текстуры и объекты. В версии 6 капитально обновился пользова- у вас уже есть Maya, то вы, возможно, не захо-
Благодаря кросс-платформенности AC3D тельский интерфейс, основные инструменты тите связываться с AC3D (при всем многооб-
можно работать даже с теми форматами, получили цветные значки, теперь их нетруд- разии поддерживаемых форматов). Если же
которые на Linux обычно не поддерживают- но отыскать. По ощущению, программа ста- вы устали бороться с превосходным, но слож-
ся – например, MilkShape (эта программа час- ла значительно быстрее и отзывчивее, чем в ным Blender – загрузите (свободно) пробную
то используется для моделирования арены предыдущей версии. Возможно, это просто версию AC3D, и попробуйте начать с нее. LXF
следствие обновления наших компьютеров с
тех пор, как мы в последний раз рассматри-
Свойства навскидку вали AC3D – OpenGL-рендеринг видов тоже
заметно порезвел. Вердикт
Наряду с косметикой, перемены есть и
в функциональности. Наиболее заметная из AC3D 6
них – оконная иерархия объектов, с помощью Разработчик: Inivis
Сайт: www.ac3d.org
которой можно включить/отключить видимость
Цена: $69.95
различных объектов или просто убедиться, что
Функциональность 9/10
редактируется нужная фигура. Новые органы Производительность 9/10
управления ограниченным движением, а также Простота использования 8/10
улучшенная видимость границ полей редак- Цена 8/10
тирования упрощают редактирование фигур,
Ревизия интерфейса Подповерхности $69,95 – сущая безделица за такой
В переработанном интерфейсе С помощью «подповерхностей» а изменения в процессе выбора означают, что основательный, такой простой и такой
инструменты проще в значительно проще создавать вам больше не понадобится клавиатурная гим- полезный товар.
использовании, да и на вид они «живые» фигуры. настика для отметки нужных вершин.
проще! AC3D довольно долго считалась инстру- Рейтинг 9/10
ментом доводки, ведь в ней отсутствовали
Opera 9
Песенка коммерческой Opera уже спета, но шоу, тем не менее, продолжается.
DVD
на
В
ы жалели Opera. Не потому, что он
Вкратце… остался в стороне от титанической
схватки между Explorer и Firefox, и
Новейшая версия даже не потому, что это достойный претен-
комплекта Opera дент, так и не дождавшийся своего часа. А
«все-в-одном», с потому, что нет другого браузера с такой бога-
виджетами и той историей первопроходца в самых крутых
поддержкой
BitTorrent, по- вещах – от жестов мышью до вкладок и ээ...
прежнему отличается Greasemonkey (хотя в Opera это уныло называ-
высокой скоростью. лось User JS, потому-то он и не взлетел) – и
тем не менее его вспоминают всего лишь как
«браузер с баннерами».
Все, хватит. Теперь Opera 9 бесплатен,
освобожден от прежних рекламных и лицен-
зионных ключей, готов к действию. И вот вам
факт – «на выходе из коробки» это самый
вылизанный и функциональный браузер из
имеющихся. Пользоваться Opera не только
Грэм просто, но и приятно. До всего, что вам нуж-
считает… но, дотянетесь мышью, и нет нужды ни в каких
«Все мы любим расширениях. Это полный web-пакет, справ-
Opera, но она ляющийся и с простейшим Интернет-серфин-
предлагает гом, и с почтой (IMAP и POP3). Все, что нужно от браузера, если не вообще все, что нужно – добавка новой системы
недостаточно, Звучит неплохо? Да. Но есть и недостатки. виджетов к прежде неизменной линейке Opera.
чтобы превзойти Если сайт построен в духе любимых Дэвидом
способности Картрайтом [David Cartwright] web-стандартов, посмотреть, как страничка будет выглядеть на вый инструмент BitTorrent расположен выше
Firefox или то проблем не возникнет – Opera 9 проходит экране мобильного устройства, без таблицы всех; сразу за ним следуют напоминания и
живую
тест Acid2 и превосходно обрабатывает боль- стилей или в «сыром» текстовом формате. простые игры – их несложно создать, и они
многоплановость
шинство статических страниц. Но вот многие Можно провести валидацию одним нажатием кросс-платформенны.
Konqueror».
сайты на Ajax, созданные и тестированные клавиши, а если вы подготовили подходящую У Opera остались проблемы с просмот-
эксклюзивно под IE и Firefox – другое дело. презентацию, используйте Opera как инстру- ром web-сайтов, и вариант «все-в-одном» не
Google Calendar более-менее совместим, но мент для слайд-шоу. похож на Firefox с миллионом расширений.
все еще отмечает Opera как неподдерживае- Но это совершенно иной стиль браузера, при
мый браузер, а динамические ссылки в инс- Быстрее всех котором все инструменты работают совмест-
трументе online-заметок Backpack ломаются. В скорости Opera равных нет, если гово- но, а не явились со всех концов сети, и тут есть
Может быть, посещаемых именно вами сайтов рить о рендеринге страниц и времясберега- свои преимущества. Виджеты – превосход-
проблемы и не касаются – но некоторые стра- ющих функциях движка. Потребление памя- ное дополнение, а солидный самостоятельный
ницы просто не работают. ти в нашем тесте составило 28 МБ – мень- браузер позволяет немедленно окунуться в
Web-разработчикам, конечно, жить стало ше, чем Firefox и Epiphany (оба потянули на Сеть с головой. LXF
легче: встроенные таблицы стилей позволяют 32 МБ). Усиленно рекламируемой на сайте
Opera голосовой системы управления пока
нет, но легкость доступа ко всем инструмен- Вердикт
Свойства навскидку там, и множество клавиатурных комбинаций
делают эту нехватку несущественной. Один Opera 9
из самых полезных инструментов – диало- Developer: Opera Software
говое окно Site Preferences (Параметры сай- Web: www.opera.com
Price: Бесплатно по закрытой лицензии
тов), в котором можно отключить навязчивые
Функциональность 9/10
cookies и встроенные фреймы или настроить
Производительность 9/10
обработку «правого» щелчка мыши, а также
Простота использования 9/10
добавить собственную таблицу стилей или Документация 7/10
файл JavaScript, чтобы изменить поведение
Хорош и для продвинутых
страницы. пользователей, и для простых любителей
BitTorrent Виджеты Наиболее значительное дополнение – сис- Интернета, но возможны проблемы с
Загрузка через встроенный Виджеты кросс-платформенные, тема виджетов (Widget). При работе Opera сайтами, использующими Ajax.
BitTorrent стремительна, как хотя на Linux наблюдаются виджеты порхают друг над другом и над рабо-
падение с дерева. некоторые графические
проблемы.
чим столом, и установка любого из них – дело
одного щелчка. Не удивительно, что поиско-
Рейтинг 8/10
10 Linux Format Октябрь 2006
Рабочий стол Обзоры
Xfce 4.4
Xfce бросает вызов соперникам от Gnome и KDE – но не пришлось ли пожертвовать функциями
ради скорости? Разбирается Майк Сондерс.
С
корость любят все – мы постоянно
Вкратце… ищем способы ускорения системы и
стремимся выжать из нашего компью-
Настольная тера все до капли. Выбор ПО – ключевой момент
система на базе GTK в этом стремлении, и если вы разыскиваете
для X11R6. Аналоги: легкий и быстрый вариант, Gnome и KDE – не
KDE, Gnome и ряд для вас. Конечно, они нашпигованы функциями,
отдельных оконных
менеджеров. утилитами и библиотеками, но это же настоя-
щие пожиратели RAM! Оливье Фордан [Olivier
Fourdan] со товарищи создали более эффектив-
ную среду Xfce, которая призвана «загружать
и исполнять приложения быстро, экономя при
этом системные ресурсы».
Многие дистрибутивы включают Xfce в
свои репозитарии, но команда Xfce поступи-
ла умно, создав легкий в установке бинарный
пакет: – нет необходимости компилировать
что-либо из исходных текстов. Там есть окон-
ный менеджер, панель, файловый менеджер и
Менеджер настроек Xfce позволяет настраивать любую часть рабочего стола – рамки окон, темы
набор утилит – все окружение рабочего стола.
GTK, клавиатурные раскладки и др. – без обращения к командной строке.
По сравнению с геркулесовыми подвигами по
установке Gnome и KDE, запуск Xfce гораздо не рай для любителей настроек, как KDE, зато В нашем тесте Xfce бесспорно превзошел
проще и с ходу дает ему фору. А как же хва- не нужно лазить по «скрытым» настройкам Gnome и KDE по части производительности,
GConf, как в Gnome. Диалоговое окно Settings особенно по использованию памяти панелью и
«Проще в установке, чем Manager (Менеджера настроек) содержит 14 файловым менеджером. Как следствие, с ним
мини-инструментов для редактирования рамок можно работать даже на машинах с 64 МБ ОЗУ,
Gnome и KDE, и стартует окон, GTK-тем, раскладок клавиатуры и др. Все хотя и выгрузив все лишнее. Все же компактная
в два раза быстрее.» настройки хранятся в директории ~/.config в кодовая база реже требует сброса на винчестер
виде XML-файлов, поэтому их нетрудно пере- и обратно при переполнении памяти.
леная скорость? А вот стартует он в два раза нести в другие инсталляции Xfce. Конечно, Xfce нельзя сравнивать с Gnome и
быстрее Gnome и KDE; для новейших компью- KDE по функциональности, но, как нам кажет-
теров это, может, и не столь важно, но если Скандинавское качество ся, соотношение «скорость/возможности» у
у вас машина слабее 1 ГГц, то как не полю- Самое заметное изменение по сравнению с него совсем неплохое; это привлекательный и
бить шуструю загрузку полноценной рабочей версией 4.2 – включение Thunar. Этот файло- крепко сбитый рабочий стол, если вы работае-
среды. вый менджер пришел на смену работящему, но те только с ПО на GTK. Если вас достала мане-
Одна из главных задач команды Xfce – сде- закосневшему Xffm. Thunar намного проще в ра Gnome «прятать» свои функции и настрой-
лать возможной настройку без ручного редакти- обращении, слева имеет список часто посеща- ки, но вы по-прежнему ищете что-нибудь для
рования конфигурационных файлов, и для это- емых мест, а вверху – кнопки для перемещения работы с вашими любимыми GTK-приложени-
го проведена похвальная работа. Xfce – отнюдь взад-вперед по дереву директорий. В духе Xfce, ями – попробуйте Xfce, не пожалеете. LXF
он чрезвычайно скор, вдобавок допускает мно-
жество изменений в конфигурации, из потерь
Свойства навскидку же по сравнению с Xffm ощутима лишь одна
– он не может обращаться к сети через Samba. Вердикт
По количеству функций ему далеко до могучих
Nautilus и Konqueror, но с основными операци- Xfce 4.4
ями над файлами Thunar справляется неплохо. Разработчик: Команда Xfce
Сайт: www.xfce.org
Другие основные усовершенствования
Цена: Бесплатно по лицензии GPL
включают поддержку иконок на рабочем столе
Функциональность 7/10
(требуемую пользователями со времен ранних
Производительность 9/10
версий 4.x), спартанский текстовый редактор Простота использования 7/10
Mousepad и календарь Orage, позволяющий Документация 8/10
настроить напоминания и придающий Xfce
В погоне за скоростью Xfce создал
оттенок персонального органайзера. Панель прекрасную настольную систему,
Управление файлами Электронный дневник
Место Xffm занял Thunar, что Orage – новый календарь с обновлена таким образом, что дополнитель- особенно с введением Thunar.
существенно упростило работу с простыми функциями ные функции добавлены в виде модулей, и
файлами. напоминаний и будильника. крушение одного приложения не потянет за Рейтинг 8/10
собой всю панель.
Gorky 17
Эта игра с польским уклоном посвящена опасным последствиям большевистско-фашистских
биологических экспериментов, пишет Грэм Моррисон. Прикончим же мутанта!
И
з названия игры ясно, что действие
Вкратце… Gorky 17 происходит на пост-апо-
калиптических, пост-коммунисти-
Напоминает о ческих пустошах Восточной Европы – а это
point-and-click самое подходящее место для нашего отпуска.
боевиках типа Добро пожаловать в польский город Любин
замечательной UFO:
[Lubin], который, видимо, стал жертвой жес-
Enemy Unknown.
См. также: UFO2000. токих исследований в биотехнологии и раз-
работок советского правительства, и улицы
его теперь совсем небезопасны. Вот куда
вы попали. Вы, офицер Коул Салливен [Cole
Sullivan], возглавляете группу из трех солдат
НАТО, которую послали в Любин узнать при-
чину отсутствия связи с городом, а заодно и
судьбу первой группы натовских солдат, кото-
рые выкрикнули по радио свои последние бес-
связные слова несколько часов назад.
Вердикт
Gorky 17
Разработчик: Linux Game Publishing
Сайт: www.linuxgamepublishing.com
Цена: ‡25.00 (ок. $40)
Сюжет 7/10
Графика 6/10
Долговечность 5/10
Цена 5/10
Дороговато для игры, которую можно
найти на барахолке за гроши, но нищие
не выбирают!
Рейтинг 6/10
К счастью, плохие парни оставили уйму амуниции и прочего добра – только успевай подбирать.
Сравнение
Каждый месяц мы сравниваем для вас
тонны программ – а вы можете отдыхать!
Наши тесты
Удаленный рабочий стол должен обеспечи-
вать пользователя всеми преимуществами
рабочего стола (а не консоли) на удаленной
машине. Ключевые факторы здесь таковы:
Скорость. Рабочий стол с непомерно
медленной реакцией бесполезен.
Безопасность. Не рисково ли использо-
вать его в незащищенной сети? Можно ли
зашифровать данные и потребовать аутен-
тификации?
Внешний вид. Хорошо ли воссоздается
графический рабочий стол, возможно ли
сжатие передаваемой информации?
Мы использовали две тестовых конфигу-
рации. Первый тест был через локальную
сеть 100 Мбит/сек, между двумя Linux-сис-
темами . Этот тест показал нам, на что спо-
собны протоколы при условии стабильной
связи. Второй – через кабельное соедине-
ние 3 Мбит/сек с удаленной сетью, при
Magictorch
П
омогла бы вам иной раз воз- установлен в другом месте (и даже на другой ные недостатки: главным образом то, что вы
Наш можность увидеть рабочий стол ОС), и открывать графические приложения. не можете запустить удаленно X-сессию цели-
выбор Windows вашего клиента на своей Движения вашей мыши и нажатия на клавиши ком и что это «отъедает» пропускную спо-
Krdc с.18 Linux-машине? Приходилось ли будут отсылаться на сервер; в ответ обнов- собность. Даже запустив X11 через Ethernet
NX с.17 вам готовить доклад на понедельник в выход- ления экрана отправятся к вашей удаленной 100Mbit, вы можете ощущать задержку, спо-
TightVNC с.16 ные? Или вы просто любите работать на дому, машине. Есть несколько опций для кодирова- собную кое-кого вывести из терпения. Мы
Tsclient с.18 развалясь в пижаме? Вам, друзья мои, нужен ния и сжатия этой экранной информации, что- рассмотрим X11 в этом Сравнении, но есть
VNC с.15 удаленный рабочий стол. бы «перерисовка» всего графического рабоче- и альтернативы запуску «сырого» X по сети,
X11 с.16 Доступ к рабочему столу сервера или рабо- го стола точка за точкой не отнимала половину которые мы тоже протестируем; многие из них
X11vnc с.17 чей станции – функция, уже десятилетия- вашего канала и процессорного времени. включают дополнительные функции, далеко
ми предлагаемая на платформах Unix, но до превосходящие возможности X11.
недавнего времени это был просто терми- X11 и далее! Всего мы рассмотрели семь решений уда-
нальный доступ, как у большинства пользо- Рабочие столы Linux основаны на протоко- ленных рабочих столов: три полных клиент-
вателей. К счастью, в наши дни существуют ле X11, со встроенными сетевыми возмож- серверных пакета, два сервера и два интер-
разные варианты графического доступа. Пусть ностями, позволяющими удаленным систе- фейса (front-end), которые вам следует комби-
вы их еще не пробовали – вы тоже можете мам запускать графические X-приложения на нировать, чтобы получить работающее реше-
увидеть свой рабочий стол так, словно он локальном X-сервере. Это имеет существен- ние удаленного рабочего стола.
В
середине 90-х сотрудники лаборато- смогли через сеть проиграть DVD на Totem,
рии AT&T в Кембридже соорудили без заметного дрожания или рассинхрониза-
довольно изящный протокол, Virtual ции звука и изображения.
Network Computing (VNC), спроектировав Одна из довольно полезных возможнос-
его для удаленного контроля, позволяющего тей VNC – слежение (shadowing) за рабочим
любой платформе управлять любой другой. столом, когда несколько пользователей могут
Серверы и клиенты VNC были разработа- подсоединяться к одному серверу Xvnc и
ны для Unix, Windows и Mac OS, наряду с либо разделить сессию, либо передать управ-
набором мобильных устройств. Многие из ление одному из них, а остальных – сде-
этих реализаций были почти бесполезны, но лать наблюдателями. Это приложение иде-
они демонстрировали гибкость VNC, обязан- ально для тренингов или конференций, когда
ную использованию собственного внутренне- несколько человек работают над проектом
го протокола – Remote FrameBuffer, или RFB. вместе. Каждый, кому приходилось искать
Спустя десять лет после выхода VNC, RFB неисправности и кто хочет, чтобы поставщик
продолжает быть основой почти всех систем или консультант понаблюдали за проблемным
удаленных рабочих столов в Linux. пользователем, найдет его бесценным.
Открытая реализация VNC, включающая
сервер и клиентский просмотрщик (viewer) Чтобы поработать с Xvnc, вы подключаетесь к Множество Безопасность RFB
для удаленного доступа к данным, исполь- нему удаленно через RFB, используя програм- применений VNC Свободная версия VNC не предусматрива-
зовалась коммерческими компаниями и му-клиента VNC (просмотрщик) – и готовая X- выходят далеко за ет шифрования, так что запуск сессии RFB
домашними пользователями с 1998 года. Но сессия открывается в окне. рамки этого простого через открытое интернет-соединение срав-
RealVNC, фирма, основанная выходцами из Те, кто «подсел» на терминал, знакомы с примера: «X в X», ним с использованием Telnet. Пароли для
показывающий Mac и
AT&T Laboratory, выпустила также три ком- программой screen – она позволяет запущен- VNC-аутентификации и нажатия клавиш во
Linux на машине
мерческих VNC-решения, включая версии для ным удаленно (через SSH или Telnet) процес- время сессии передаются открытым текс-
Windows.
предприятий и персонального использования. сам выполнять свою работу и осуществлять том, и их легко перехватить. Однако в Linux
В нашем Сравнении мы тестировали свобод- вывод, даже если сессия была завершена. уже есть многочисленные методы обеспечить
ную версию, известную также как RealVNC, Позже пользователь позже может снова под- безопасность IP-трафика, либо используя тун-
используя ее с рабочим столом Gnome и кли- ключиться к машине, запустить screen и про- нель VPN, либо туннелируя RFB-сессию через
ентами Linux и Windows. должать работу, как ни в чем ни бывало. VNC шифруемый порт SSH. С учетом доступности
Технология довольно проста. Сервер VNC действует очень похожим способом: даже утилит шифрования и простоты их разверты-
запускается на машине Linux, предоставляя если ваша сеть «упадет», сессия Xvnc не пре- вания, все, кто планирует использовать VNC
новую X-сессию, через которую запускаются кратит работу, и все X-приложения – тоже. Это для работы, просто придут на готовенькое.
приложения. Типичная X-сессия на рабочем удобно: пользователь может отсоединиться Если требуется удаленный X-доступ из
столе Linux – :0.0, так что VNC следует искать от сессии, чтобы перезагрузить свою рабочую Linux, использования в той или иной фор-
запущенным на :1.0. Однако, в отличие от станцию или подключиться из другого места. ме VNC практически не избежать. Но данная
стандартного X-сервера, X-сервер VNC (Xvnc) версия лишена функций сжатия и аутентифи-
не полагается на доступность физического Кодирование кации, и пользователям, желающим чего-то
видеоустройства, а запускается независимо от VNC предлагает ряд методов кодирования, большего, чем базовое решение, лучше при-
любого оборудования на локальной машине. предоставляющих множество способов пере- смотреться к TightVNC. Если какие-то из уст-
рисовки рабочего стола: от наиболее общей ройств его не поддерживают, всегда можно
реализации «raw», которая обновляет бук- использовать в роли клиента обычный VNC
Стоит ли ждать? вально каждую точку, как только она изме- и, благодаря обратной совместимости с RFB,
нится, до сложных методов hextile и corre, иметь возможность подключаться к системам
Те из нас, кто пользуется VNC несколько допускающих меньшую пропускную способ- TightVNC.
лет, в курсе, что он очень удобен и гибок на ность и перерисовывающих изменения быс-
соединениях с высокой скоростью и низкой трее. Впрочем, ни один из методов кодиро-
латентностью, но становится практически
бесполезен, как только скорость передачи
вания на самом деле ни сжимает данные, ни Вердикт
модифицирует их методом с потерями, так
данных, требуемая для обновления экрана, VNC Free Edition
превышает возможности локального что VNC на медленном соединении будет слег-
ка срываться (см. врезку слева «Стоит ли Версия: 4.1
соединения. Типичная ситуация, когда это
Сайт: www.realvnc.com
становится проблемой – удаленный офис с ждать»). Однако на Ethernet 100Mbit VNC поч-
Цена: бесплатно по лицензии GPL
ADSL- или кабельным соединением, где ти не отстает от обычной X-сессии – мы даже
Дедушка всех приложений удаленного
скорость исходящего потока заметно ниже,
рабочего стола в Unix рискует быть
чем входящего. Пропихивание целой X-
сессии через 256 кбит/сек не слишком «В Ethernet на 100 Мбит/ потесненным внуками, рассмотренными в
нашем Сравнении.
радует, даже при обычном запуске Twm или
сек VNC почти не
Xterm.
отстает от X-сессии.» Рейтинг 6/10
Октябрь 2006 Linux Format 15
Сравнение Удаленное управление рабочим столом
Клиент-
TightVNC сервер
на DVD
Поднимает VNC на новые высоты.
T
ightVNC – это VNC, сделанный лучше, определенно полезно, но оно не для тех, кто
быстрее... компактнее [tight – компакт- любит мелкие шрифты или заинтересован в
ный, сжатый, – прим. пер.]. Созданный детальном изображении. При низком качес-
командной российских разработчиков как тве удаленного стола шрифты, изображения,
улучшенная версия VNC, TightVNC предлагает меню и т.д. фактически нечитаемы, потому
альтернативные расширения для протокола что все они растровые, и просмотр интернет-
RFB, предоставляющие улучшенную техноло- страниц почти невозможен. Зато JPEG-сжатие
гию сжатия для пользователей с медленными работает через модем 56 кбит/сек – всяко луч-
соединениями. Это достигается ценой неболь- ше, чем ничего.
шого увеличения латентности, пока рассчиты- В TightVNC отсутствует «родное» шифро-
При JPEG-сжатии медленное соединение может передавать
вается сжатый рабочий стол, а также увели- вание, но имеется ряд скриптов, которые поз-
сложные рабочие столы, но качество изображений становится
чения нагрузки на процессор, но это не повод воляют ему работать через stunnel (оболочка к убогим.
для беспокойства для процессоров, создан- SSL-шифрованию), предоставляя TCP-сессию
ных за последние лет пять. между клиентом и сервером, зашифрованную
Как и RealVNC, мы тестировали TightVNC с помощью SSL.
с рабочим столом Gnome и клиентами Linux и Нужен быстрый удаленный доступ через
Вердикт
Windows. Методы сжатия могут быть либо «без медленное соединение? TightVNC как раз для
TightVNC
потерь», либо JPEG. Варианты «без потерь» вас. Нужен быстрый локальный доступ через
Версия: 1.2.9
включают «fast» (быстрое), для наиболее LAN? Все равно берите TightVNC, потому что Сайт: www.tightvnc.com
отзывчивого рабочего стола, и «best» (наилуч- все функции обычного VNC у него есть. Короче Цена: бесплатно по лицензии GPL
шее). Хотя опция JPEG (сжатие с потерями) говоря, пусть все пользуются TightVNC. С дополнительными функциями сжатия,
может попортить ясность и четкость рабочего TightVNC – лидер нового поколения
стола, она реально снижает требования к про- «Предлагает улучшенную реализаций VNC.
пускной способности. Результирующее качест-
во варьируется от «почти оригинал» до «кляк-
технику сжатия для медленных Рейтинг 9/10
са какая-то». JPEG-сжатие с низким качеством соединений.»
X11 Сервер
В
се, что вы делаете с X, работает через ли захотите запускать его через общедоступ-
протокол, основанный на сокетах, либо ную сеть. Поскольку все работает с исполь-
TCP, либо Unix. Мы вспомнили об этом зованием TCP, «обернуть» сессию в SSH или
в Сравнении удаленных рабочих столов, пото- stunnel довольно легко; и как только туннель
му что X позволяет приложениям подклю- будет построен, можно будет исполнять раз-
чаться через сеть и к локальной X-сессии, и личные приложения с использованием шиф-
к другой системе. Все возможности X-серве- рованного соединения. Но и тогда вы должны
ра будут доступны клиенту: например, если убедиться, что сессия SSH работает постоян-
удаленная машина не поддерживает GLX (как но, не то по завершении сессии все X-прило-
же мы без OpenGL?), вы все равно сможете жения бесславно погибнут.
запускать GLX-приложения, хотя производи- X11 через сеть может пригодиться, но Это приложение запущено через сеть. Не похоже?
Поверьте, так и есть.
тельность слегка пострадает. X – это сервер, вообще-то он проектировался для использо-
но клиентом является приложение: вы ничем вания исключительно в среде LAN. Он умеет
не подсоединитесь к нему. Мы тестировали работать через VPN, но опасность потерять
Вердикт
X.Org 7.1. все ваши X-приложения из-за кратковремен-
X11
Все X-приложения полагаются на перемен- ного сбоя сети, в общем, слишком велика,
Версия: 7.1
ную DISPLAY; изменив ее, чтобы она указыва- чтобы он стал действительно полезным. Сайт: www.x.org
ла на другую систему, вы можете прозрачно Цена: бесплатно по ряду открытых лицензий
запускать приложения (но не весь рабочий Превосходен для локальной сети, но
стол) на другой машине, как будто они рабо- для прочего хрупковат, хотя можно
попробовать его с туннельным
тают локально. Ликуйте все, кто работает
на нескольких машинах и кому уже некуда
«Можете прозрачно соединением или VPN.
ставить дополнительные мониторы! Один из
основных недостатков X11 – очень простой,
запускать приложения Рейтинг 4/10
основанный на событиях протокол, и вы вряд на другой машине.»
16 Linux Format Октябрь 2006
Удаленное управление рабочим столом Сравнение
Н
аписанный в 2002 году, X11vnc тех приложений, куда люди приходят и гово-
запускается как клиент к любой сес- рят: «Мне нужно это» – и «это» добавляется,
сии X11, которую вы хотите экс- будь оно хоть рукомойником или другим столь
портировать для удаленного доступа, пре- же нетипичным приспособлением. Многие
доставляя рабочий стол как VNC-сервер по дополнения и разумны, и полезны, но когда
сети. Поскольку это VNC-сервер, он исполь- нужен всего-навсего X-дисплей, в поисках
зует протокол RFB, а не X11. Когда X11vnc помощи можно зарыться в горах информации
запущен (мы испытывали его с X.Org 7.11 и и навеки. Впрочем, беда невелика: подробное
клиентом TightVNC), удаленный пользователь ЧАВО (FAQ) на сайте прекрасно посодейству-
Экспорт рабочего стола X11 при помощи X11vnc – запросто: можно
может подключиться к рабочему столу, либо ет заставить общую X-сессию вести себя как
делать почти все, информацию бы только потолковее.
разделяя сессию, либо только в режиме про- надо.
смотра. Для просмотра рабочего стола можно Если у вас есть X11 и вам нужно издалека
использовать различное кодирование, допус- добираться до своего рабочего стола, бери-
кающее сжатие и изменение качества JPEG те X11vnc и не ищите ничего другого – разве
Вердикт
при отображении на стороне клиента, так что что захотите попользоваться инструментами,
X11vnc
даже если у вас на рабочем столе творится встроенными в Gnome или KDE; но даже они
Версия: 0.8.2
нечто безумное, все равно можно будет пог- и близко не подходят к некоторым из возмож- Сайт: www.karlrunge.com/x11vnc
лядеть на это через VNC. ностей X11vnc. Если вы уяснили все опции Цена: бесплатно по лицензии GPL
Звучит хорошо; но затем возникает воп- командной строки и оптимально настроили Должен быть у каждого, кто использует
рос: «Умеет ли X11vnc делать то-то и то-то?». конфигурацию, X11vnc станет лучшим средс- X как рабочий стол и часто нуждается в
Беглый взгляд на X11vnc -h даст ответ, прав- твом экономии времени и продуктивным инс- удаленном доступе к своей системе.
да? После просмотра 40 страниц опций, клю- трументом, необходимым каждому рабочему
чей и других аргументов, вы, может быть, най- столу X11. Рейтинг 9/10
дете то, что искали, а может, и нет. X11vnc – из
Клиент-
NX сервер
R
FB – прекрасный протокол для базо- или сжатия данных между X-сервером и кли-
вых однопользовательских соеди- ентом: NX запускает X Agent, в итоге получа-
нений. Но ему недостает реальной ется конфигурация в стиле «X внутри X», где
системы аутентификации, и в более круп- один X-сервер посылает обновления другому
ных системах проверка машин и слежение как события вызова от клиента.
за подключениями превращается в кошмар. Имея возможность пересылать звук и фай-
NX не использует ни RFB, ни протокол RDP лы через одно и то же NX-соединение, NX пре-
(Remote Desktop Protocol, протокол удален- восходен для всех, кто использует удаленный
ного рабочего стола, широко применяемый в доступ в ежедневной работе. Хотите проиг-
Windows) – у него собственный протокол для рать Flash-ролик на удаленной машине? Аудио
туннелирования сжатого X и различных прото- автоматически передается через шифрован- NX – очень гибкая система, предоставляющая функции VNC,
дополнительные возможности мультимедиа и общий доступ к файлам.
колов через зашифрованный канал. ное соединение на локальной машине, обес-
Четыре сервера уровня предприятия печивая полное мультимедиа-взаимодействие
доступны по отдельности и за плату, а откры- с вашим удаленным рабочим столом. Как и Вердикт
тый настольный сервер можно скачать с www. предоставление файлов в общий доступ, это
nomachine.com, но вам придется использовать много лет входило в RDP на Windows, но NX NX
его с клиентом NX и узлом, бесплатными, но приносит это на открытый рабочий стол, плав- Версия: 2.0.0
не свободными. Мы рассмотрели один из но интегрируя существующие хосты Windows Сайт: www.nomachine.com
пакетов уровня предприятия NX 2.0.0, протес- и новые Linux-инсталляции. Цена: От $424,50 за подписку Small
Business Server
тировав его с X.Org 7.1 и Windows XP Pro.
Для многопользовательских систем NX –
NX необычен тем, что дает возможность
удаленного доступа к системе и позволяет
«NX плавно интегрирует естественный шаг вперед от XDMCP или
VNC.
приложениям X-клиентов получать доступ к хосты Windows и Linux-
удаленному X-серверу. Это решает проблему
отсутствия хорошего способа шифрования инсталляции.» Рейтинг 4/10
Октябрь 2006 Linux Format 17
Сравнение Удаленное управление рабочим столом
интер-
Tsclient фейс на DVD
У
правление системами, к которым мы та опций VNC. Мы не смогли назначить ни свое
получаем удаленный доступ, довольно кодирование, ни степень сжатия, или поместить
нудная штука: нужно помнить все имена его в SSL-туннель. Правда, все больше людей
хостов или IP-адреса и все пароли, используемые использует удаленный доступ с VNC и он интег-
для обеспечения безопасности. Для решения этой рируется в большее число окружений рабочих
проблемы можете попробовать Tsclient – прило- столов, так что опции хостов VNC явно ждет
жение Gnome, предоставляющее интерфейс ко улучшение.
всем обычным клиентам удаленных рабочих сто- Главная головная боль с Tsclient начинается,
лов, включая VNC Viewer (интерфейс к RealVNC когда доходит до сохранения сессий. Пароли он
Tsclient подключается почти ко всем протоколам удаленных рабочих
или TightVNC) и Rdesktop, что позволяет полу- вообще не сохраняет, что не радует, когда авто-
столов. Попробуйте его как интерфейс к TightVNC.
чать удаленный доступ и к Linux-, и к Windows- матическое восстановление соединения терпит
системам, а фактически ко всему, что поддержи- неудачу и система должна дожидаться, пока кто-
вает RFB. Для этого Сравнения мы испытывали то не выполнит ввод вручную. Если удаленных
его с серверами TightVNC и RDP. систем дюжина, на ввод всех паролей уйдет мас-
Вердикт
Tsclient изрядно примитивен. Конфигурация са времени. В Tsclient есть над чем поработать,
Tsclient
каждой хост-системы сохраняется в файле, загру- чтобы набор функций стал сравним с предостав-
Версия: 0.148
жаемом через интерфейс. Хотелось бы, конечно, ляемым протоколами удаленных рабочих столов. Сайт: www.gnomepro.com/tsclient
небольшого меню, включающего все хосты, а то Цена: бесплатно по лицензии GPL
и организующей их древовидной структуры; зато Милый маленький интерфейс
можно сохранять сессии как для хостов RFB, так пользователя, но не способен установить
и RDP, и учесть все ваши потребности к доступу в «Все больше народу многие опции, например, уровень сжатия
и шифрование.
одном приложении.
Перейдем к недостаткам. Богатство настроек
использует VNC, и опции
для RDP компенсируется бедностью ассортимен- хостов ждет улучшение.» Рейтинг 5/10
интер-
Krdc фейс
П
усть Tsclient фокусируется на поль- щью Krdc; иными словами, копировать данные
зователях Gnome; поклонникам KDE с хоста на хост непросто.
тоже не дадут пропасть. Krdc – это Эх, вот бы нам интегрированный кли-
ответ KDE на требования доступа к сессиям ент удаленного рабочего стола, позволяю-
RDP и RFB на удаленных машинах, и (говоря щий размещать иконки, или даже простые
не для драчки Gnome vs KDE) он куда лучше, меню, на рабочих столах удаленных машин! С
чем Tsclient. Все хорошо организовано, есть длинным хвостом хостов, накопленным Krdc,
список сохраненных хостов, доступных по пора уже сделать небольшую панель инстру-
двойному щелчку мыши. ментов для быстрого доступа к серверам или
Персональные настройки чисто базовые, рабочим станциям. Определенно, грань меж-
Krdc, поставляемый с KDE, предлагает простой в использовании
но Krdc дает выбор быстрого, среднего или ду локальным хостом и удаленной системой интерфейс на все прихоти клиента
медленного типа соединения, в противопо- должна стираться для конечных пользовате- удаленного
ложность Tsclient, где вообще нет интерфей- лей, которые не вполне уловили концепцию рабочего стола.
са для сжатия. В основном, Krdc прилично возможности доступа к их рабочему столу из Вердикт
подбирает сжатие для различных скоростей другого города.
соединения, но его утверждению, что средний Так или иначе, Krdc опережает Tsclient по Krdc
уровень достаточен для некоторых DSL- или удобству и простоте, хотя обоим нужна дора- Версия: 3.5.3-1
Сайт: www.kde.org
кабельных соединений, не очень верится. Как ботка, чтобы быть на уровне.
Цена: бесплатно по лицензии GPL
всегда, требуется время, чтобы все настроить
Если вам нужно запускать несколько
и добиться хорошей работы. Tsclient предо- сессий, Krdc – инструмент для вас; он
ставляет функцию, которой нет в Krdc – это
поддержка RDP 5, она пригодится, если нужно
«Прилично подбирает лучше, чем Tsclient, даже если вы
используете Gnome.
вырезать и вставлять текст между удаленной сжатие для различных
Windows-системой и локальным хостом. Мы
лишь установили соединение RDP 4 с помо- скоростей соединения.» Рейтинг 8/10
18 Linux Format Октябрь 2006
Удаленное управление рабочим столом Сравнение
ВЕРДИКТ
TightVNC 9/10
П
оскольку из рассмотренных нами столом. Gnome и KDE предлагают функции
приложений все, кроме двух, ведут удаленного рабочего стола на базе X11VNC,
свою родословную от VNC, понят- чтобы интерфейс пользователя стал понят-
но, что TightVNC – наиболее успешная реа- нее и поделился набором опций во всей пол-
лизация. При своей гибкости сжатия сес- ноте. Опытным пользователям X11VNC под
сий для удаленного использования и подде- силу соединяться с не-X11 устройствами, TightVNC: пусть мы идем по жизни всего с одной парой глаз, это не
ржке VNC-кодирования без потерь, TightVNC включая фрейм-буферы или даже интерфей- значит, что они не могут быть многозадачными.
удовлетворяет требованиям всех пользова- сы Video4Linux.
телей. Кодирование TightVNC поддержива-
ют многие сервера, включая RFB-клиенты и Локальное решение Как
Salt работает удаленный доступ
сервера только для Windows, в том числе, X11 имеет свое место под солнцем, и так
UltraVNC. Это абсолютный победитель дан- как это оконная система de facto на Linux,
ного Сравнения. еще некоторое время будет его сохранять.
По серверной части X11VNC оставляет в Простой вызов удаленного приложения через
кильватере всех. На беду, здесь так много локальную сеть делает X11 трудным сопер-
опций, что заставить его работать правиль- ником, а ведь ему присуща еще и гибкость,
но удастся не сразу. Мы готовы подтвердить обеспеченная сетевыми возможностями сто-
его способность упрощать жизнь, поскольку ящего за ним X-протокола. Конечно, попытки
наблюдали, как приложение остается запу- сделать что-то сумасшедшее типа проигры-
щенным удаленно, пока мы просто «пере- вания DVD по сети или запуска Flash-ани-
прыгиваем» на машину через SSH и запус- мации – жесточайшие надругательства над
каем X11VNC для соединения с рабочим сетью.
Протокол RFB, безусловно, дает пользо-
вателям выбор смешивать и согласовывать
К читателю возможности клиентов и серверов, чтобы
подобрать самую подходящую пару для сво-
Скоро ли кто-нибудь реализует функцию их целей. Это ваше дело, как назначить пове-
RFB в X11? Получат ли приложения
дение вашего рабочего стола или функции
встроенное шифрование и сжатие для свой
сжатия, шифрования и упрощения для вза-
отрисовки? А вдруг разработчики Linux,
имодействия с нужными удаленными систе- потратить на настройку приложения. Как ни
рехнувшись, примутся использовать RDP
для удаленного доступа? Сообщите нам мами или рабочими станциями. Конечно, по печально, при доступе к рабочему столу KDE
свое мнение об этом Сравнении на lxf. большому счету, ваше решение будет опре- на PDA с использованием GPRS, даже с самым
letters@futurenet.co.uk деляться скоростью имеющегося интернет- сильным сжатием, продуктивно не поработа-
соединения и временем, которое вы захотите ешь. LXF
Таблица функций
платформенность
Аутентификация
Шифрование
Приложение
Окружение
Лицензия
Протокол
X-сервер
Сжатие
Кросс-
Тип
К
рупные релизы этого года от
Н
едавний обзор Live CD Frenzy BSD на SUSE, Fedora Core и Ubuntu
DistroWatch.com указал на «серьез-
подарили энтузиастам свобод-
ный минус» этого – во всем осталь-
ного ПО новые потрясающие операци-
ном идеального – продукта: выбор Opera в
качестве браузера по умолчанию. Как и сле- онные системы. Однако появляется и
довало ожидать, это критическое замечание другая группа дистрибутивов, которые
разожгло яростные баталии среди читателей. куда меньше внимания обращают на «ух
Некоторые согласны с автором в том, что ты!» и куда больше – на «как».
открытый дистрибутив всегда должен Будучи либо проприетарными, либо
держаться программ с открытым исходным содержащими проприетарные модули,
кодом, а некоторые подчеркивают наличие у эти дистрибутивы созданы с учетом
вышеупомянутого проприетарного браузера интересов обычных пользователей: они
большого количества отличных функций.
объясняют, как установить, как поль-
Что касается использования, то здесь о
зоваться и как обновлять ваше ПО для
сравнении речь просто не идет: пользователи
Firefox составляют почти две трети от общего рабочего стола. В эту группу входят
количества посетителей DistroWatch.com Linspire и Turbolinux, но Xandros, в своем
(который, как мы предполагаем, привлекает последнем релизе, зашел куда дальше
технически грамотную читательскую аудито- большинства в создании интуитивно Xandros Networks: безболезненный способ добраться до сети Linux.
рию). И только 8.5% читателей используют понятной операционной системы для
Opera для просмотра сайта. новичков. Восстав из пепла Corel Linux, Xandros вполне лама предлагала «оставшимся без поддержки пользо-
сможет взлететь выше благодаря отлично отшлифован- вателям Windows 98 и ME» 50% скидки при смене дис-
Норвежская придумка ному домашнему дистрибутиву Xandros Desktop 4. трибутива, а программы типа CrossOver Office и Versora
Тем не менее, Opera – слишком интересная включены в пакет, чтобы помочь беженцам с Windows
программа, чтобы ее можно было так просто Аккуратный дизайн обосноваться в новой среде.
игнорировать. Во-первых, она меньше и быс- Что касается дизайна пользовательского интерфей- Тем не менее, последний продукт Xandros облада-
трее, чем Firefox. Во-вторых, на моей системе
са, это – один из самых дружественных дистрибути- ет такими функциями, которые оценят и продвинутые
Ubuntu Opera показывает куда большую ста-
вов на сегодняшний день: его терминология покажет- пользователи. Xandros Security Suite – хороший пример
бильность, чем любой браузер на движке
Gecko. И в-третьих, создатели этого норвежс-
ся привычной любому новообращенному линуксоиду. утилиты, предоставляющей весьма полезный набор
кого браузера всегда демонстрировали весь- Например, многие популярные приложения Linux пере- программ и мастеров конфигурации – не только для
ма высокую целеустремленность; те, кто антивирусной программы ClamAV, но и для обновлений
использует Opera несколько лет, должны «Зашел дальше многих, антивирусных баз, брандмауэра и программы защиты
помнить, что это был первый браузер с вклад- системных файлов; таким способом Xandros проверяет
ками, первый браузер, который поддерживал
создав ОС, интуитивно наличие в системе рут-китов и прочих «паразитов».
«мышиные жесты», первый браузер с под- понятную новичку.» Наличие в установке по умолчанию программ и
держкой text-to-speech, а сейчас – это первый драйверов, не являющихся свободно распространяе-
браузер с виджетами и поддержкой
именованы, чтобы ясна была их цель: DigiKam превра- мыми, например, графических драйверов Nvidia и ATI,
BitTorrent.
тился в Photo Manager, а Amarok стал Music Manager. модулей Flash Player и RealPlayer, может отпугнуть от
И хотя я по-прежнему предпочитаю откры-
тый Firefox, а не проприетарную Opera, вполне
Xandros Security Suite включает антивирусную про- нее поборников чистоты, но дистрибутив заслуживает
очевидно, какой браузер внес больше иннова- грамму, советующую почаще проводить сканирова- внимания. В версии 4 Xandros весьма продвинулся в
ций в мир интернет-серфинга. Хотите знать, ние на предмет наличия вирусов, а функция «product своем стремлении создать хорошо интегрированный и
какие потрясающие новые функции появятся activation» («активация продукта»), необходимая для дружественный к пользователю дистрибутив с отлич-
у вашего браузера через годик-другой? доступа к серверам обновления Xandros, укрепляет ным набором программ. Так что если вам нужна опе-
Посмотрите на сегодняшнюю Opera – и пой- ощущение, что Xandros Desktop 4 создан не только для рационная система, основанная на Linux, для друга или
мете. высоколобых ветеранов Unix. члена семьи без особых технических наклонностей, на
ladislav.bodnar@futurenet.co.uk Основанный в 2001 году, Xandros не пользовался этот дистрибутив стоит взглянуть.
особо славной репутацией в сообществе Linux. Фирма www.xandros.com
делала упор на пользователей Windows – недавняя рек- Энди Ченнел «сделает» Xandros Desktop 4 в LXF85.
S М
USE Linux 10.2 приняли со сме- ассе Linux-разработчиков
шанными чувствами, но его ком- Fedora Core дала отличную
мерческий вариант Novell SUSE базу для создания специа-
Linux Enterprise Desktop (SLED) 10 – это лизированных программных решений.
совсем другая история. Добрая молва идет о таких из них,
Без сомнения, SLED 10 станет как BLAG Linux and GNU – проекте, раз-
одним из самых значимых релизов в работанном Джеффом Мо [Jeff Moe]
истории дистрибутивов Linux. Причин из Великобритании в попытке ответа на
на то несколько. Во-первых, Novell критику, которой пользователи Linux
стал влиятельным и преданным сто- иногда подвергают Fedora за большой
ронником Linux, к прямой выгоде всего размер и отсутствие поддержки муль-
сообщества. Во-вторых, за последние Улучшенное меню Computer и центр тимедиа. BLAG противопоставляет этой BLAG, с его множеством программ
управления – лишь две из множества редактирования аудио и видео, сущий
годы фирме пришлось побороться за критике добротный дистрибутив на
новых функций SLED 10. рай для энтузиастов мультимедиа
существование, и если удача не вер- одном CD, включающий Gnome, пол-
под Linux.
нется к ней – причем быстро – то есть лучших программ с открытым исход- ную поддержку воспроизведения MP3
риск, что её акционеры начнут при- ным кодом, инструментов взаимо- и DVD, немало отличных мультиме- (Audacity, Grip), а также инструменты
дираться к стратегии Linux, которой действия с Windows и революционных дийных программ и других полезных потокового аудио (Muse, Streamtuner).
придерживается Novell. И, в-третьих, идей, обусловленных многочасовым инструментов из сторонних репозита- Завершает этот отличный дистрибутив
Novell переживает крупномасштаб- изучением эргономичности. Опробовав риев для Fedora. масса приложений для Интернета и про-
ный переход с Windows на Linux, и его, даже самый убежденный скептик Среди прочего, BLAG включает офис- граммы для работы с графикой.
этот опыт, без сомнения, содействовал Linux будет вынужден признать, что ный пакет Gnome (с AbiWord и Gnumeric), Нечего и удивляться, что в качестве
формированию SLED 10. Другие фир- Novell создал серьезного претенден- настольную издательскую программу установщика системы BLAG использу-
мы, которые предпримут попытку ана- та на роль лучшей ОС рабочего сто- Scribus, Kiax, виртуальный телефон и ет Anaconda и предоставляет все обыч-
логичного перехода в будущем, смогут ла, доступной на любой платформе – создатель наклеек Glabels. Видеоманов ные утилиты Red Hat/Fedora, превос-
воспользоваться опытом Novell с поль- потенциального киллера для Vista. порадует коллекция видеоредакто- ходное определение устройств, а также
зой для себя. www.novell.com/linux ров – в их числе Kino и Cinerella. Не мень- обширное сообщество пользователей,
В самом деле, SLED – не просто Мы вплотную займемся SLED 10 в LXF85. шая радость ждет и любителей аудио, всегда готовых помочь, с активными
более лощеная, коммерциализирован- которые найдут здесь программы вос- форумами и списками рассылок. LXF
ная версия SUSE Linux. Это – сочетание произведения и декодирования аудио www.blagblagblag.org
в виртуальность
Аппаратная виртуализация позволяет запускать различные операционные
системы на Linux одновременно, с высокой скоростью и бесплатно. Говорят
об этом все; Пол Хадсон покажет вам, как сделать это.
L
inux — это выбор: вы можете выбрать рабочий стол, ка, просто были «прикручены» к существующей архитектуре x86,
выбрать браузер и даже выбрать логотип, который будет чтобы не обесценивать вложения пользователей и предприятий.
появляться при загрузке. Но основной выбор, без сомне- Но это также означает, что сохранились старые недостатки. До
ния, самый сложный: какой дистрибутив лучше всех? Если VT и SVM все чипы x86 использовали четыре уровня (кольца) приви-
вы похожи на нас, то, вероятно, скачете между дистрибутивами так легий для исполнения. На уровне 0 работали наиболее привилегиро-
же быстро, как Майк успевает выкладывать их на диск Linux Format; ванные процессы (обычно ОС), а на уровне 3 – наименее привилеги-
но настает время в вашей жизни, когда вам надоест делать пере- рованные (обычно приложения пользователя). Это способствовало
форматирование и вы начнете искать более разумный способ экспе- безопасному разделению привилегий на аппаратном уровне: только
риментировать с новыми ОС. Этот способ – виртуализация: запустите приложения уровня 0 (нулевого кольца) могут напрямую управлять
множество ОС на одном компьютере и переключайтесь между ними оборудованием, что теоретически не позволяет приложению выпол-
с той же легкостью, как между программами. нить что-то фатальное для машины. Но на практике приложениям
Идея виртуализации не нова: VMware существует с 1999 года, часто нужен доступ к оборудованию, так что они нуждаются в вызо-
и мы опубликовали две большие статьи про Xen за последние два вах ОС и запрашивают ресурсы, например, побольше памяти или
года (LXF67 и LXF77). Теперь, впрочем, производители процессоров отрисовку трехмерной графики.
создали виртуализацию на кристалле (on-chip). Работа ОС в вирту- Традиционная виртуализация работает путем запуска гостевой
альной машине (ВМ) будет явно медленнее, чем на чистом компью- ОС поверх вашей основной ОС, в более высоком, менее привилеги-
тере, так что если вы сможете заставить процессор выполнять эту рованном кольце. Когда гостевая ОС пытается выполнить привилеги-
работу, весь процесс ускорится – по крайней мере, теоретически. рованную инструкцию, ее должен перехватить монитор виртуальной
Конкурирующие решения от Intel (VT или Virtualisation Tethnology, машины (VMM) и подменить ее, чтобы гостевая ОС не обнаружила,
технология виртуализа- что работает не на чистом оборудовании. Эта техника – известная как
«Конкурирующие решения ции) и AMD (SVM, или двоичная трансляция – сложна и сопряжена с проблемами, в частно-
Secure Virtual Machines, сти, самомодифицирующегося и самопроверяющегося кода. Кроме
от Intel и AMD стали безопасные виртуальные того, это довольно медленно, поскольку предполагается, что VMM
поставляться в процессорах.» машины) начали постав- постоянно наблюдает за инструкциями, проносящимися мимо, пока
ляться с их процессора- не сможет выстроить кэш.
ми, и наконец-то предприятия, любители новшеств и эксперимен- Xen решил эту проблему, применив паравиртуализацию, когда
таторы среди вас могут попробовать виртуализацию, поскольку для исходный код гостевой ОС модифицируется так, чтобы она осозна-
этого она и предназначалась. вала себя в виртуальной машине. Если гостевой ОС требуются допол-
нительные привилегии, VMM не будет выполнять никакой двоичной
Прорыв трансляции, поскольку гостевая ОС для обслуживания своих потреб-
Аппаратная виртуализация может, наконец, решить простую, но ностей просто вызовет Xen. Это делает работу виртуализации намного
неприятную проблему: процессоры x86 не умеют выполнять виртуа- быстрее, а хост- и гостевая системы связаны гораздо более тесно.
лизацию хорошо. От выпуска 386-го до последнего, основанного на Аппаратная виртуализация устраняет эту проблему раз и навсег-
Core 2, чипа Intel изменилось немногое – набор базовых инструкций да, за счет создания нового набора уровней привилегий, которые
тот же, то есть код, скомпилированный для 386, также будет рабо- размещаются позади традиционных уровней. Новые уровни (извес-
тать на новейшем оборудовании от Intel и AMD. На самом деле новые тные как VMX Root) становятся реальными привилегированными
функции, например, MMX, SSE, двойные ядра и 64-битная обработ- уровнями, в то время как старые уровни (известные как VMX Nonroot)
виртуализируются чипом и используются там, где работают гостевые
ОС. Когда гостевая ОС спрашивает «на каком уровне я нахожусь?»,
Зачем виртуализировать? чип может честно ответить «уровень 0», потому что он действитель-
но работает на уровне 0 – только это нулевое кольцо виртуальное.
Для домашних пользователей: Сыты по горло у вас платформ, затем разработайте набор
переустановкой дистрибутивов? Запустите тестов для запуска по ночам. Таким образом, все гостевые системы могут работать, не прибегая
один маленький дистрибутив как Domain-0, Для администраторов серверов: Застряли на к двоичной трансляции, поскольку они не замечают разницы между
затем виртуализуйте поверх него любые другие 25%-ной загрузке сервера? Используйте уровнем 0 реальной машины и уровнем 0 внутри VMX Nonroot.
дистрибутивы. виртуальную инфраструктуру для снижения Поскольку это передовая технология, аппаратная виртуализация
Для программистов: Нужно протестировать времени простоя, увеличения гибкости и поддерживается не всеми чипами. В случае с Intel все новые чипы,
вашу программу на различных дистрибутивах, моментального предоставления ресурсов для основанные на Core 2, поддерживают аппаратную виртуализацию VT.
операционных системах и настройках? Легко: всех ваших задач. Некоторые чипы постарше также работают, но подавляющее боль-
создайте столько виртуальных машин, сколько шинство чипов Pentium 4 не совместимы с VT. Что касается AMD, то
Шаг за шагом:
Попробуйте
сами
Это будет серьезной технологией 2007 года –
испытайте ее сегодня и приплюсуйте к своему 1 Установите пакеты Xen
счетчику крутизны солидную добавку. Из Yast, поищите «kernel-xen», и вы увидите два пакета: kernel-xen и
kernel-xenp-ae (см. ниже врезку «Обратите внимание»). Вам также
понадобятся cloop-kmp-xen, xen, xen-libs, xen-tools и xen-tools-ioemu, и
Е
сть чип, поддерживающий VT/ базе Woodcrest/Core 2 был старшим сер-
любые дополнительные драйверы, какие пожелаете.
SVM? Отлично! Вы в нескольких верным чипом от Intel, а машина AMD ори-
минутах от запуска Windows в ентировалась на домашних пользовате-
Linux при помощи аппаратной вир- лей – все результаты тестирования, которые
туализации. Это можно сделать двумя спо- здесь напечатаны, лучше использовать для
собами: через Vmware — тогда виртуализа- сравнения одной машины, работающей под
ция получится мгновенно, но это закрытая «чистой» ОС, с той же машиной под управ-
программа, не позволяющая модифициро- лением виртуализованной ОС, а не сравни-
вать аппаратную часть во время работы; вать Intel и AMD.
или через Xen, который полностью открыт,
поставляется включенным в ряд основных Наша тестовая платформа
дистрибутивов, но потребует некоторых уси- Мы установили SUSE 10.1 на обе машины,
лий, чтобы заставить его работать. Хотя мы используя 32-разрядные хосты и 32-разряд-
пытались заставить Parallels Workstation ные гостевые ОС. SUSE 10.1 – превосходный
работать с VT, это почти всегда заканчива- выбор для испытания Xen, поскольку она
лось зависанием — приглашаем вас попро- поставляется с пакетами ядра Xen, уста-
бовать самим, и если вы заставите его рабо- навливаемыми через Yast. Также здесь есть
тать, сообщите нам. специальный графический интерфейс для
Нашими тестовыми машинами с Xen установки и настройки виртуальных машин, 4 Настройте работу с ОЗУ
были двухпроцессорный Intel Xeon 5160 но на момент написания статьи он не рабо- Запустите xm list для получения информации о Domain-0. Вы можете
(итого четыре ядра), с 8 ГБ памяти, и AMD тал – так что мы делали все вручную. использовать xm mem-set Domain-0 500, чтобы назначить ему 500 МБ
Athlon 64 X2 5000+ с 1 ГБ памяти. На момент памяти. Можете также использовать xm vcpu-set Domain-0 1, чтобы
задать ему один процессор. Изменения вступят в силу немедленно, так
написания статьи новый чип Xeon 5160 на
что вы сразу увидите, если памяти не хватает!
Насколько быстра
аппаратная
виртуализация?
Легко утверждать, что «это» быстрее, чем «то» – но вот холодные,
неоспоримые факты.
П
олучить графики испытаний домене Xen (xenU) и внутри виртуальной
аппаратной виртуализации –
задача не простая: фактически,
машины VMware. Поскольку нас особенно
интересовала аппаратная виртуализация для Кодирование Ogg
потребовалось две недели на этих функций, большинство тестов исполь-
Intel native
установку, настройку, переустановку, копиро- зовало Windows XP в качестве гостевой ОС, Выполнялось:
Конвертировался 11.6 sec
вание и тестирование на обеих наших маши- за исключением теста кодирования Ogg: тут файл MP3 (6 МБ) Intel xenU
нах, чтобы получить то, что мы считаем использовалась SUSE 10.1. в формат Ogg 11.8 sec (98.3% native speed)
окончательными результатами. Кроме того, Помимо установки монитора виртуаль- с качеством 9 Intel VMware
не забывайте, что реально мы можем срав- ной машины и гостевой ОС, выполнялась (наивысшим). 14.5 sec (80% NS)
AMD native
нивать только Intel с Intel, а AMD — с AMD, небольшая дальнейшая настройка системы. Проверялось:
поскольку эквивалента AMD64 для подде- Как для VMware, так и для Xen выделялся Нагрузка на CPU; 15.7 sec
AMD xenU
рживающего VT чипа Xeon пока нету. Более одинаковые объем ОЗУ и место на диске
чем ниже, тем 15.7 sec (100% NS)
того, большинство этих тестов автоматически для работы, и от обоих требовалось пре- лучше AMD VMware
получают преимущества от дополнительных доставить виртуальную сетевую карту; обо- 17.8 sec (82.8% NS)
ядер там, где они доступны, так что баллы им дана свобода управлять процессорами
Intel будут с учетом четырех ядер по сравне- как они сочтут нужным. Одно небольшое
нию с двумя ядрами Athlon 64. исключение было сделано для Xen, запус- Вердикт Это одна из областей, где Xen
Мы провели в общей сложности восемь каемого на машине Intel, поскольку Intel должен быть на коне: была бы производительность
тестов, используя шесть сценариев и две VT, похоже, имеет проблемы с чипсетом процессора высока, а Xen просто работает как
машины. Каждый тест на каждой маши- Cirrus Logic, эмулируемым Xen (см. врезку тонкая прослойка между гостевой ОС и хостом.
не запускался на «родной» ОС, в гостевом «Заставь работать VT-графику»).
Вердикт Xen на Intel дает менее 33% от Вердикт Запускаясь в первый раз,
скорости чистого оборудования Intel, в основном OpenOffice.org 2.0 буквально истязает жесткий
из-за слабой эмуляции графики. AMD справился с диск, но VMware и здесь умудряется вывернуться с
тестом лучше, благодаря виртуализованному очень приличным результатом.
контроллеру памяти.
Лучше
не бывает?
Следите за этой областью: впереди еще долгий путь, и аппаратная
виртуализация будет становиться лучше и лучше.
У
влекательные сами по себе, наши диаграммы показы- Пока Intel работает над следующим поколением VT, инновации
вают, что неоптимизированная аппаратная виртуализа- происходят и в программном обеспечении, которое обеспечивает
ция в ряде тестов отстает от ОС, запущенных в «чистом» прогресс виртуализации. Xen 3.0 принес с собой огромные улучше-
виде. Конечно, теперь можно запустить любую ОС поверх ния, включая поддержку VT и SVM, что позволило нам написать эту
другой ОС, но для первой попытки, производительность здесь еще статью. Он также ввел приличную поддержку SMP, большую произ-
недостаточная. Можно достичь хорошей скорости, вручную под- водительность памяти и порт для Itanium. Но есть кое-какие инте-
строив виртуальные машины и отведя им процессорные ядра, но ресные вещи, все еще находящиеся на стадии разработки, которые
это довольно утомительно — особенно сейчас, когда многоядерные могут увидеть свет в следующем крупном релизе Xen.
архитектуры скорее стандарт, чем исключение. Вдобавок ручная
оптимизация лишает виртуальную инфраструктуру свойственной Большие скачки ПО
ей гибкости. Поскольку Xen и VMware расширили свою поддержку Список интересных новых функций возглавляет виртуализован-
для VT и SVM, в частности, для лучшей обработки многоядерных ная графическая подсистема, использующая ПО, а не оборудова-
сценариев, мы надеемся, что наши цифры немного поднимутся, но ние. Чтобы обеспечить базовое ускорение графики, используются
в конечном итоге для достижения полноскоростной виртуализации разделяемые буферы кадров, и есть шансы, что мы увидим даже
нужно реформировать оборудование. виртуализованный OpenGL, доступный современным трехмерным
Как мы видели, виртуализуемый контроллер памяти – огромное графическим интерфейсам. Другая область, где, похоже, разра-
подспорье для AMD, поскольку программно требуется эмулировать
на одну вещь меньше.
Виртуализация высоко-
«Самые значительные скоростных устройств –
новые разработки – ключ к снижению общей
латентности системы, и
в ядре Linux.» неудивительно, что Intel
уже работает над сле-
дующей версией VT, где появится штука, называемая Directed IO и
разработанная, чтобы поддержать аппаратную виртуализацию мири-
адов наших обычных устройств ввода-вывода – клавиатуры, мыши
и устройств USB.
При наличии поддержки аппаратной виртуализации ввода-выво-
да останется решить только одну проблему: нужна виртуальная
графическая система, способная обеспечить гостевым машинам
приличное ускорение графики. Сейчас большинство гостевых ОС
привязаны к эмуляции графического уровня Cirrus Logic, которая
ощутимо тормозила наши тесты по части графики. При такой слабой
2D-графике безнадежно запускать на гостевой ОС графически бога-
тые приложения, так что трехмерное моделирование, игры и даже
окружение рабочего стола уровня 2.5D/3D, например, Xgl и Windows Чип Core 2 Duo от Intel с поддержкой VT превосходен
Vista, не поддерживаются. для виртуализации на чем угодно, от ноутбука до сервера.
QEMU: руководство
Пока еще не купили один из новых процессоров AMD или Intel? Не печальтесь – Xen не единс-
твенное средство виртуализации, доступное в мире Open Source.
Пол Хадсон передает микрофон Андрею Дубравину.
П
роверяя очередной раз свою электронную почту, я обнаружил ной машины. Загруженный в QEMU LiveCD Games Knoppix представлен
письмо с сообщением об ошибке в разрабатываемом мной на рис. 1.
приложении. Я стал изучать полученную информацию и сде- Теперь мы можем изучать LiveCD и при этом слушать свою люби-
лал вывод, что в моей рабочей ОС данной ошибки не наблюдалось. В мую музыку. Что же дальше? Загружаться с установочного CD мы
чем же дело? Немного поразмыслив, я пришел к следующему выводу: научились, но нам еще необходимо выделить место для самой ОС. В
в сообщении было указано, что мой респондент использовал Debian нашем случае ОС будет устанавливаться в образ диска. Существует
3.1; я использовал эту же ОС, но с обновленными библиотеками. несколько форматов для хранения образов, которые поддерживает
Можно было воспользоваться информацией об ошибке и исправить программа QEMU, мы воспользуемся самым распространённым – raw.
её, надеясь на то, что я все сделаю правильно и эта ошибка больше на Мне известно два способа создать пустой образ: с помощью ути-
появится. Кроме того, можно было послать новую версию программы литы qemu-img из состава QEMU и вручную, посредством утилиты dd.
пользователю, чтобы тот проверил её на своей системе, но согласится С использованием qemu-img можно создать образы любых форматов,
ли он? Могли обнаружиться и другие ошибки, связанные с несовпаде- поддерживаемых QEMU, утилита dd позволяет создать только обра-
нием версий библиотек. Что же делать? Я принял решение поставить зы формата raw. Если быть более точным, то с помощью dd можно
ещё одну ОС. Но мне не хотелось изменять таблицу разделов своего создать заполненный нулями файл, который и является пустым raw-
жесткого диска: это может повредить установленным ОС, да и кто образом. Разобраться с утилитой qemu-img не составляет труда, мы же,
знает, сколько их еще мне придется поставить? Я решил, что лучшим чтобы заодно узнать побольше о Linux, воспользуемся утилитой dd.
выходом будет воспользоваться виртуализацией, а именно – QEMU. Перед тем, как создать образ, необходимо определить его мак-
Эта программа является свободной и распространяется с исходными симальный размер. Размер выбирается с учетом места, занимаемого
текстами, исключение составляет модуль ядра kqemu (также извес- установленной ОС, размера swap-раздела (если он используется) и
тный как QEMU Accelerator), который используется для повышения объема свободного места, необходимого вам для работы. Я выбрал
скорости работы. Он доступен только в двоичном виде, его можно бес- размер равным 3 Гб. Формат raw не поддерживает сжатие, но если
платно использовать, но не распространять. создаваемый образ находится на разделе ext2/ext3 (или другой ФС,
Ну что же, приступим! Для начала необходимо установить QEMU. поддерживающей «дыры» – holes), то «сжатие» будет производиться
Найти последнюю версию программы и другую информацию, касаю- автоматически драйвером файловой системы (за счет преобразования
щуюся QEMU можно по адресу http://fabrice.bellard.free.fr/qemu/. Там длинных последовательностей нулей в более короткие), и размер обра-
же можно найти и модуль ядра kqemu. Этот модуль заметно повыша- за будет занимать меньше, чем 3 Гб. Для того, чтобы посмотреть реаль-
ет производительность, поэтому я советую его поставить, хотя QEMU ный размер, занимаемый файлом, можно выполнить команду ls -ls.
будет работать и без него. В своих экспериментах я использовал ОС Создание нового образа выполняется командой:
Debian 3.1 и QEMU версии 0.8.2. dd if=/dev/zero of=<путь_к_файлу_образа> count=3G
Модуль kqemu может работать в двух режимах: for user code и for
user and kernel code. Первый режим устанавливается по умолчанию,
для установки второго режима необходимо использовать ключ -kernel-
kqemu. Второй режим является более быстрым, но его использование
может привести к некорректной работе некоторых ОС.
Что касается оперативной памяти, выделяемой гостевой ОС, то по
умолчанию QEMU использует 128 Мб. Меня это число вполне устроило,
но если вы хотите поменять это значение, то можете воспользоваться
опцией -m, в качестве параметра этой опции передается размер ОЗУ в
мегабайтах.
При дальнейшем изложении, в примерах команд, опции -kernel-
kqemu и -m указываться не будут. Если в этом возникнет необходи-
мость, вы можете добавить их самостоятельно.
Для начала попробуем запустить какой нибудь LiveCD прямо
из текущей ОС. В качестве оного можно взять один из дисков LXF.
Команда для загрузки виртуальной машины прямо с CD выглядит сле-
дующим образом:
qemu -cdrom /dev/cdrom
Что может быть проще? После того, как выполнится эта команда, Рис. 1. Загружаем LiveCD Games Knoppix без отрыва от
перед вами откроется окно QEMU, играющее роль дисплея виртуаль- производства.
на DVD
QEMU 0.8.2
к быстрому старту
Все просто: содержимое устройства /dev/zero (а это одни нули) должна выполняться уже с устройства hda, а не с cdrom, как в начале
копируется в файл образа, при этом количество копируемых данных установки. Команда для повторной загрузки будет следующей:
ограничено тремя гигабайтами. qemu -cdrom /dev/cdrom -hda <путь_к_файлу_образа>
Теперь, наконец, можно приступать к установке самой ОС. Для этого Как видно, исчезла опция boot, так что теперь загрузка будет произ-
можно воспользоваться следующей командой: водиться с устройства hda. После повторной загрузки можно закончить
qemu -cdrom /dev/cdrom -hda <путь_к_файлу_образа> -boot d установку системы.
Опция boot позволяет изменить устройство, с которого производит- После того, как система будет установлена, загрузите её можно с
ся загрузка. По умолчанию это hda (если устройства hda нет, то загруз- помощью команды:
ка будет производиться с устройства cdrom), для загрузки с cdrom qemu -hda <путь_к_файлу_образа>
необходимо указать опцию boot с параметром d. Теперь можно загру- Наконец, можно приступить к настоящей работе в установленной
жаться в виртуальную машину и приступать к установке ОС. Созданный ОС! На рис. 2 показана загруженная в QEMU ОС Debian 3.1 с рабочим
нами образ диска не содержит таблицы разделов, поэтому в процессе столом GNOME.
установки ОС необходимо осуществить разбиение диска. В нашем
случае создание разделов осуществляется через инсталлятор Debian.
Далее установка ОС производится стандартным образом.
После того, как первый этап установки будет пройден, вас попросят
перезагрузиться. При этом необходимо учесть, что повторная загрузка
Почему RAW?
QEMU поддерживает большое количество форматов дисковых
образов, в том числе, cow (User Mode Linux), vmdk (VMware 3/4), cloop
(сжатый loop-файл, обычно используется различными LiveCD) и qcow
(родной формат QEMU). Многие из них предоставляют ряд полезных
функций, например, реальное сжатие данных, динамическое
изменение размера, шифрование. Почему же я порекомендовал вам
именно raw? Ответ прост как и сам формат – Linux умеет работать с
ним, как с обычным дисковым разделом.
Для того, чтобы прочитать таблицу разделов файла-образа, дайте Рис. 2. Debian 3.1 в QEMU.
команду:
/sbin/fdisk -l -u <путь_к_файлу_образа>
Вы увидите что-то вроде:
Но это еще не все! Программа QEMU предоставляет возможность
... управлять своей работой из специальной консоли. Для переключения в
консоль команд нужно воспользоваться комбинацией клавиш Ctrl-Alt-2.
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors С ее помощью можно подключить новое устройство, когда ОС уже
Units = sectors of 1 * 512 = 512 bytes загружена (например, для подключения устройства cdrom необходимо
ввести change cdrom /dev/cdrom), сохранить состояние виртуальной
Device Boot Start End Blocks Id System машины в файл (попробуйте savevm /debain.state), загрузить состоя-
<путь_к_файлу_образа>1 * 63 5542424 2771181 83 Linux ние виртуальной машины (команда loadvm) и многое другое. Для полу-
...
чение более подробной информации по консоли QEMU воспользуйтесь
Разделы образа можно смонтировать командой mount:
командой help.
mount -o loop,offset=32256 -t ext3 <путь_к_файлу_образа> /mnt/iso
Число 32256 получается путем умножения размера сектора (в
QEMU умеет значительно больше, чем может показаться на первый
нашем случае – 512 байт) на адрес начала раздела (параметр Start в взгляд – мы даже не упомянули о таких возможностях, как эмуляция
выводе fdisk; в нашем случае это 63). После того, как диск будет сети, загрузка ядра Linux, подключение USB-устройств и о многом
примонтирован, вы можете получить доступ к его содержимому, при другом. Думаю, с этим вы справитесь и без меня, ведь главное – дать
условии, что файловая система, используемая гостевой ОС, отправную точку. LXF
поддерживается ядром Linux хотя бы на чтение.
Железный
человек
Ненавидите .NET? Джим Хаганин [Jim
Hugunin] тоже ненавидел, пока сам не
попробовал – после этого он написал
IronPython. Что думает сообщество поль-
зователей Python по поводу его неуем-
ной жажды программирования?
Linux Format: Как вы считаете, что это за инстинкт в вас такой, которому все вре-
мя надо заново переделывать Python?
LXF ВИЗИТКА Джим Хаганин: Это сложный вопрос. До работы над Jython я трудился над про-
ектом под названием Numeric Python. Я тогда завершал обучение в MIT, и мне при-
ходилось делать множество научных вычислений. Раньше я пользовался языками
типа Matlab, и был серьезно расстроен тем фактом, что Matlab – отличный язык для
вычислений и для многого другого, что нужно ученым… но как только надо что-то
спрограммировать и требуются словари, списки и классы, он просто «ломается», и
мой код в итоге получался пугающе уродливым.
Джим Хаганин
В MIT я возился со многими другими языками программирования: одним из
Выпускник MIT, фокусник них был Scheme, а еще – Perl, Python, многие языки этого класса. И мне по-насто-
и серийный
исполнитель Python. Работал
в Xerox Parc ящему понравился Python, я начал развлекаться с его возможностью расширения
над AspectJ – расширением
Java. Пришел в
Microsoft в 2004, чтобы возг объектов – очень легко расширить Python новыми объектами – и вдруг обнаружил,
лавить
разработку IronPython и улуч
шить что могу добавлять в Python все эти числовые массивы, которые были основны-
поддержку в .NET динами
ческих языков. ми в Matlab. Добавляя эти числовые массивы, я чувствовал, что, программируя
Возраст
35 на Python, программирую на Matlab. Куда бы я ни метнулся – я чувствовал мощь
Национальность
Американец
Использует Linux Python. Вот так я и «подсел» на него впервые. И это была положительная сторона.
11 лет
Языки программирования
12
Количество ПК LXF: И он работает!
Ежедневное потребление коф 4
е 1 чашка ДжХ: Да, он отлично работает, и сегодня Numeric Python по-прежнему доволь-
но широко используется. Но вот расширение языка в C меня сильно расстроило.
Потому что, и это проходит красной нитью через всю историю, согласно терми-
нологии Microsoft... «управляемый язык» (managed language) в основном означает ности, меня поразило то, что все утверждали, что с динамическими языками он
язык, предусматривающий сборку мусора, рефлексию, безопасность типов и дина- работать не может. В некоторой степени это произошло из-за ранних эксперимен-
мическую загрузку. тов – попыток заставить Python и Perl работать на .NET, приведших к заключению,
Именно этими функциями всегда и обладал Python. А вот в С их нет. В этом что это невозможно; а мне очень захотелось узнать, как это Microsoft умудрился
огромное расхождение между миром С и миром Python, так что, когда бы я ни взял- сваять .NET настолько скверно, что он оказался даже хуже, чем JVM для работы с
ся писать расширения для Python на C, всегда расстраиваюсь, потому что вдруг ни с динамическими языками.
того ни с сего приходится снова задумываться об управлении памятью или о безо- Я решил написать небольшую, но содержательную статью «Почему .NET – ужас-
пасности типов. И когда я работал над этим проектом, наткнулся на Java. Впервые ная платформа для работы с динамическими языками». Это повысило бы мой
поглядев на Java, я подумал, что это какая-то шутка, потому что он работал ничуть рейтинг в сообществе пользователей Java, а это сообщество доставило мне без-
не быстрее Python. При выполнении сложных вычислительных задач, например, дну удовольствия и помогло мне понять структуру, когда я ею заинтересовался. Я
быстрого преобразования Фурье (Fast Fourier Transform, FFT) – такие алгоритмы С начал этим заниматься, и вышло так же, как при разработке Jython, когда я понял,
обрабатывает в сотни раз быстрее, чем Python – я попробовал это делать на Java, и что на самом деле все работает отлично. Было и кое-что, отличающееся от начала
там эти операции проходили на той же скорости, что и в Python. И тогда я подумал: разработки Jython: очень хороший генератор байт кода, поставлявшийся со средой
«Кому нужна смена платформы, если она не дает выигрыша по скорости?» времени выполнения. И производительность была очень хорошей – на 70% быст-
А потом – и это правда, хоть и кажется, что я это придумал, потому что сейчас рее, чем CPython.
работаю в Microsoft – именно Microsoft-версия Java убедила меня в ошибочности Так что мне кажется, я сделал это [IronPython] не из-за потребности снова и
этого мнения. Потому что Microsoft стала первой фирмой, создавшей очень быст- снова реформировать Python, а из желания ответить на вызов – что, дескать, это
рый, JIT-компилятор для Java, и я стал работать с ним, и мои показатели сразу же сделать невозможно…
изменились. Теперь те же серьезные и трудные вычисления на Java делались почти
так же быстро, как и на С. LXF: Так вот что сподвигло вас на это?
И я увидел все преимущества Java над С, ДжХ: Да, а также и то, что это сработало,
и мне стало интересно, смогу ли я заставить
O «БЕГСТВЕ» В MICROSOFT а потом покатилось – «Ну, это сработало, а
Python и Java работать вместе. А окончательно «Сообщество пользователей если я еще кое-что добавлю, может, будет еще
убедил меня приняться за Jython Аарон Уотерс лучше?»
[Aaron Waters], и я очень ему обязан. Я сказал:
Python сочло его реальным Так что я пошел тем же самым путем и
«Круто бы вышло», а Аарон Уотерс ответил: «Да шансом на то, что дела с .NET, надо было попробовать разные способы
тебе нипочём не удастся заставить Python рабо- создания многоязычной платформы. И поэтому
тать на JVM [Java Virtual Machine]». Я думаю, это
IronPython пойдут хорошо.» первым моим шоком было то, что формат байт-
была уловка Аарона, чтобы меня подначить – кода в Java предполагает, что ваш исходный код
знаете, вам говорите, что нечто невозможно сде- написан на Java. Когда вы генерируете отладоч-
лать, а это… воодушевляет. ную информацию, вы никогда не указываете, на каком языке написан этот код,
Я уселся за работу, попробовал запрограммировать, и одним из этих сказочных потому что 99% всех людей считает, что он написан на Java. Но в байт-коде для .NET
проектов стал Jython. Это – один лучших проектов, над которыми я работал, потому появился флажок, требующий: «Сообщите мне GUID, который вы зарегистрировали
что он становился все проще и проще, а это весьма нетипчно для проектов разра- для своего языка и его реализации, потому что мы рассчитываем на использование
ботки ПО. Обычно сначала идет нечто вроде медового месяца, когда все отлично различных языков». И снова это привело меня на тот же путь – когда отлично начи-
работает, а потом ты вдруг осознаешь: «Боже, я ведь забыл и про то, и про это!» нает работать то, о чем раньше говорили, что оно не может хорошо работать.
Я понял, что JVM обладает всеми функциями, которые я искал, подходящими
для Python и по производительности сравнимыми с С и С++. Я открыл для себя мно- LXF: А вы не ощутили, что создание Jython и IronPython вызвало враждебность к
го нового о том, как работает рефлексия, и загрузчики классов, и как вообще все вам со стороны сообщества пользователей Python?
это работает, и постепенно проект становился все проще. Я обнаружил, как хорош ДжХ: Вы знаете, нет. Но, честно говоря, я думал, что это могло бы произойти. Я
Java в качестве модели расширения, поэтому с того момента мне больше не нужен занимался Jython недолго, а потом ушел – но ушел нормально, оставив преемни-
был С, теперь у меня был этот замечательный мягкий переход. Когда мне нужно ка, способного продолжить проект, и был уверен, что и с лицензированием, и с
было сделать что-то, как в С, я мог это сделать на Java с той же самой производи- хостингом все в порядке, и другие смогут продолжать всем этим пользоваться и
тельностью. Вот почему я занялся Jython. Я думаю, это было чудесно. работать.
Всегда немного больно уходить из проекта, когда ты больше не можешь рабо-
LXF: Вы вышли из сообщества пользователей Python и занялись AspectJ. Откуда тать над ним, но это приходится делать, нельзя вечно быть привязанным к одному
же появился IronPython? проекту. Лично я так не могу, может быть, другие и могут. Гвидо [ван Россум –
ДжХ: IronPython начался просто для потехи. Я прочел все о новой общей языко- Guido van Rossum, создатель Python] поступает именно так, но даже он не связан
вой среде Microsoft, об этой новой классной штуке, которая появилась у Microsoft с Python слишком тесно, и он может так поступать благодаря большому пользова-
и может работать со всеми этими языками. И я над ними только смеялся, потому тельскому сообществу. Вокруг Jython существует отличное сообщество, хотя и не
что я знал, что Java достаточно эффективно работает с сотнями языков. В част- такое большое, как сообщество пользователей CPython, поэтому и работать так же
здорово у него не получается.
«Список проколов Однако никто не рассматривал IronPython как уход от Jython. Что мне нравится
длинный, Джим.» в сообществе Python – что это языковое сообщество, я думаю, наиболее открыто
Ответы нашего героя для различных реализаций. Они рассматривают язык – и это пошло от Гвидо – как
читайте на единую крутую штуку, но реализация может быть отдельной от языка, и они дейс-
www.linuxformat.co.uk/ твительно тепло принимают любые другие платформы. Python уже долгое время
hugunin.html. лучше всего поддерживает Windows среди «Р-языков», во многом благодаря [кон-
сультанту Microsoft] Марку Хэммонду (Mark Hammond), проделавшему огромную
работу, но в некоторой степени и благодаря своему сообществу, которое утверж-
дает: «Windows – отличная вещь, мы хотим, чтобы Python хорошо работал под
Windows. А еще мы хотим, чтобы он отлично работал на Linux и Mac...»
Jython рассматривали как еще одну возможность для Python глубже проникнуть
в ряды разработчиков Java. А что касается IronPython – похоже, его рассматрива-
ют так: «Вот отличная возможность продвинуть Python в новое крутое простран-
ство .NET». Я не чувствую, что разработчики Jython и IronPython предаются скорби.
ответ. Чтобы узнать, как заставить многие программы .NET работать эффективно,
нам нужна обратная связь от пользователей про то, что работает на этих програм-
мах, и обратная связь не должна прерываться.
Apache:
ЧАСТЬ 1: По данным www.netcraft.com, более 60% web-серверов по всему миру работают под
управлением Apache. Причиной такой популярности является непревзойдённая гибкость и
мощь этого сервера наряду с высокой скоростью работы. Сергей Супрунов поможет вам при-
нять его на службу...
Немного истории рацию в /etc/Apache2, а главный файл конфигурации обычные директивы вида «имя значение».
В начале 90-х годов прошлого века основным серве- называется Apache2.conf. Файл httpd.conf тоже при- Секции тоже можно условно разделить на два
ром только-только зарождающейся Всемирной паути- сутствует, но используется в основном для обратной типа: «ограничители» и «условия». Первые ограничи-
ны был httpd, в разработке которого активное участие совместимости. А, скажем, Fedora Core придержива- вают область действия заключенных в них директив.
принимал Национальный Центр Суперкомпьютерных ется на сей счет более «официальной» точки зрения, Например, секция <Directory /var/www/special> будет
Приложений (NCSA). Однако, когда в 1994 году проект и размещает основной файл настройки в /etc/httpd/ влиять только на запросы файлов, размещенных в ука-
покинул один из ведущих разработчиков, работы были conf/httpd.conf, с той лишь разницей, что часть вспо- занном каталоге. Секция <Location /server-status> будет
свернуты. К счастью, NCSA был правительственной могательных настроек вынесена в отдельные файлы отвечать за запросы ресурса с URL вида http://yourserver.
организацией, и он не старался заполучить себе все в каталоге conf.d. ru/server-status/... Секция <Limit GET> окажет влияние
права, так что исходный код httpd был доступен всем В принципе, вариантов не так уж и много, и свой только на GET-запросы. К этому же виду секций можно
желающим. Благодаря этому даже после официально- конфигурационный файл, думаю, вы отыщете без отнести и виртуальные хосты, с которыми мы познако-
го закрытия проекта люди продолжали писать к серве- труда. В дальнейшем я буду ссылаться на него как на мимся чуть позже.
ру исправления, дополнения и т.д. Apache2.conf, так что не забывайте вносить соответс- Секции-условия позволяют применять те или иные
И вот в начале 1995 года Брайан Белендорф (см. твующие поправки... директивы только в том случае, если выполняется
LXF80) и Клиф Скольник, взяв за основу послед- Итак, заглянув в Apache2.conf, вы увидите там некоторое условие, например, если подключен конк-
нюю версию httpd, выпущенную NCSA, и применив несколько видов строк: ретный модуль: <IfModule prefork.c>. Причем влияют
к ней огромное количество найденных в сети патчей, начинающиеся с символа «#» - это комментарии, эти директивы на конфигурацию всего сервера (или
выпустили первую версию того, что ныне известно они игнорируются при анализе файла и служат лишь той секции-ограничителя, в которую вложена данная
под именем Apache [Собственно, название проис- для пояснения нижележащих опций; секция-условие).
ходит от «A patchy server» – пропатченный сервер, – начинающиеся с «<» - это синтаксические конс- Директивы отвечают за самые различные аспекты
прим.ред.]. С тех пор сервер активно развивается, и трукции, разделяющие конфигурационный файл на поведения web-сервера – от прослушиваемых портов
сейчас является одним из самых успешных открытых так называемые секции; до подключения модулей и обработчиков (handlers).
проектов. Обращайте особое внимание на директивы Include,
которые позволяют вставлять в текущий файл настрой-
Установка Ручная работа ки строки из других файлов (особенно этим «грешит»
В настоящее время идет разработка трех ветвей серве- Ubuntu). Другие важные для нас директивы будут рас-
ра – Apache 1.x (текущая версия – 1.3.37) и две ветки Менеджер пакетов, это, конечно, хорошо. Но какой смотрены по ходу дальнейшего изложения.
Apache 2.x (последние версии - 2.0.59 и 2.2.3 соответ- же настоящий линуксоид не попробует хотя бы раз
ственно). Конкретные дистрибутивы могут содержать в жизни поставить что-то из исходников? Благо, и
повод у нас для этого весьма благородный –
Первая страничка
более ранние версии. Перейдем к практике. Apache мы поставили и даже
хочется 2.2.3, а в репозитарии есть только 2.0.55.
Если Apache включен в состав вашего дистрибути- можем увидеть его тестовую страницу, если введем в
Так что – в путь!
ва или доступен для установки из репозитория, пред- 1. Скачайте архив с последней версией с сайта браузере http://yourdomain.ru (если вы ставите сервер
почтительно использовать эту возможность. Впрочем, http://httpd.apache.org: на той же машине, на которой работаете, то можно
при необходимости инсталляцию можно выполнить wget http://apache.rinet.ru/dist/httpd/httpd-2.2.3.tar.bz2 ввести http://localhost). Опять-таки, в зависимости
и из исходных кодов. В данной статье я использовал 2. Распакуйте его в свой домашний каталог: от дистрибутива, это может быть либо страничка с
версию 2.0.55, установленную в Ubuntu с помощью tar xvjf httpd-2.2.3.tar.bz2 «перышком» (см. рисунок), либо оглавление каталога
Synaptic. Про инсталляцию из исходных текстов рас- 3. Сконфигурируйте исходный код: (как в Ubuntu), либо просто строчка «It works!» (как
сказано во врезке «Ручная работа». cd httpd-2.2.3 в официальном пакете). Давайте посмотрим, откуда
./configure --prefix=/usr/local/apache22
она берется.
С помощью --prefix мы изменили каталог
Настройка установки, чтобы случайно не затереть уже
В конфигурационном файле отыщите строку
К сожалению, разработчики дистрибутивов пока не DocumentRoot - она укажет вам на каталог, который
установленный 2.0.55. С помощью опций enable/
пришли к единому мнению на счет того, как же луч- disable вы можете изменить «умолчательный» Apache считает корневым для сайта. В зависимости
ше именовать те или иные файлы. В «чистом» пакете, состав модулей, которые будут собраны в основном от дистрибутива и способа инсталляции это может
скачанном с Apache.org, предполагается, что основной двоичном файле. быть /var/www, $prefix/htdocs (где $prefix - каталог,
двоичный файл именуется httpd, главный файл конфи- 4. Наконец, традиционная сборка и инсталляция: куда выполнялась установка), /var/www/html. В нем
гурации – httpd.conf, а утилита управления - Apachectl. make вы должны найти файл с именем index.html. Если
То есть так, как это принято и в версиях 1.х. sudo make install # вы вернетесь к конфигурации и найдете строку
Однако в некоторых дистрибутивах применяют или DirectoryIndex, то убедитесь, что файл с таким име-
su -c ‘make install’
несколько иные схемы. Например, Ubuntu, Knoppix (да, нем и должен возвращаться на запрос, в котором
в дистрибутивах, отличных от Ubuntu
похоже, и все семейство Debian) размещают конфигу- конкретное имя ресурса не указано. Таким образом,
друг «бледнолицых»
чтобы вместо этой открывался ваш html-файл, прос- Для решения этой задачи предназначен модуль положения запрошенного файла, так что если в них нет
то замените им индексный (главное, чтобы он был mod_userdir. Если он подключен, то вы можете указать острой необходимости, лучше пользуйтесь общим фай-
доступен для чтения пользователю www-data, с пра- в конфигурации такой фрагмент (скорее всего, он там лом конфигурации. Полностью запретить эти файлы
вами которого обычно работает Apache). Впрочем, уже есть, но закомментирован): можно с помощью директивы AllowOverride None.
никто не запретит вам указать здесь свой каталог. UserDir public_html
<Directory /home/*/public_html> Виртуальные хосты
Автоиндекс Options Indexes Домашние странички пользователей достаточно удобны
А что Apache будет делать, если в каталоге отсутствует AllowOverride Indexes для задач «домашнего» уровня. Но Apache предоставля-
индексный файл? Это также зависит от настроек. По </Directory> ет более мощное средство размещения нескольких сай-
умолчанию сервер собирается с поддержкой моду- Здесь мы указываем, что при получении запро- тов на одном сервере (и под одним IP-адресом) - вирту-
ля mod_autoindex (для проверки выполните команду са вида http://yourserver.ru/~vasya нужно открывать альный хостинг. Рассмотрим простейший пример:
Apache2 -l или httpd -l, в зависимости от имени испол- индексный файл из домашнего каталога пользова- NameVirtualHost 127.0.0.1
няемого файла в вашем дистрибутиве), так что Apache, теля vasya, т.е. из /home/vasya/public_html. Ну а там <VirtualHost localhost>
используя его возможности, автоматически постро- Вася пусть делает все, что ему захочется. Чтобы он DocumentRoot /var/www/localhost
ит страничку-оглавление со ссылками на все файлы, не сильно шалил, его возможности можно ограни- </VirtualHost>
содержащиеся в запрошенном каталоге. С помощью чить в последующей секции <Directory> для катало- <VirtualHost toshiba>
директивы IndexOptions можно подстраивать вид этой гов, соответствующих указанной маске (в примере DocumentRoot /var/www/toshiba
страницы. мы устанавливаем ему опцию Indexes и позволяем ее </VirtualHost>
Данная функция удобна для создания каталога переопределять самому). Кстати, о переопределении Здесь мы указали, что у нас будут виртуальные
файлов или чего-то еще, организованного по принци- конфигурации... хосты по адресу 127.0.0.1, и дальше перечисляем
пу FTP-сервера. Но если вы считаете такую возмож- секции <VirtualHost> для каждого доменного имени.
ность излишне опасной (не всегда и не всем нужно Файл .htaccess В этих секциях обязательно нужно указать корень
показывать, что и где у вас лежит), то этот модуль Конфигурационный файл позволяет настроить любые сайта (DocumentRoot) и, при желании, любые другие
можно отключить: опции для любого каталога. Но здесь есть два неудобс- настройки. Разместив в указанных каталогах индек-
Options -Indexes тва – во-первых, для его редактирования нужны права сные файлы с различным содержанием, вы получи-
Кстати говоря, директива Options очень важна суперпользователя, и во-вторых, после каждого изме- те два сайта, открывающиеся в зависимости от того,
и для других аспектов безопасности. Обязательно нения нужно перегружать сервер (для чего, опять-таки, какое доменное имя будет указано в запросе.
ознакомьтесь с ней подробнее в документации. После нужно обладать правами root). Чтобы виртуальный хостинг работал правильно,
изменения конфигурации не забудьте перезагрузить Apache позволяет управлять параметрами доступа к все доменные имена должны быть описаны на сервере
сервер: Apachectl restart (в некоторых дистрибутивах каталогам более гибко - путем размещения в них спе- DNS (для тестирования будет достаточно файла /etc/
эта утилита называется Apache2ctl). циальных файлов, обычно с именем .htaccess. Если для hosts), а браузер клиента должен поддерживать прото-
данного каталога действует опция AllowOverride All, то кол HTTP/1.1, так как HTTP/1.0 не поддерживает поле
Домашние страницы в .htaccess-файле можно указывать практически любые Host: заголовка, в котором и передается имя домена.
Вы, имея привилегии root в системе, можете без огра- опции, допустимые для секции <Directory>. Однако А поскольку запрос направляется по IP-адресу, то для
ничений править свою интернет-страничку. Но что, администратор может ограничить эти возможности, Apache это поле - единственный способ узнать, какой
если вы хотите предоставить такую возможность свое- задав более жесткие ограничения, как в примере выше. же из сайтов запрашивается клиентом.
му другу, который зарегистрирован в вашей системе, Учтите, что использование .htaccess существенно Изложенных сегодня сведений должно быть доста-
но без прав суперпользователя? Не давать же ему повышает нагрузку на сервер – для каждого запроса точно, чтобы начать работать с Apache и создавать
неограниченный доступ? серверу придется проверять наличие этого файла в каж- несложные статические странички. Главное - не бой-
дом каталоге от корня файловой системы до месторас- тесь экспериментировать! LXF
Что
Matt Herring
сделала
для нас OSDL?
Кажется, что The Open Source Development Labs (Лаборатория Разработки Открытого Кода)
сидит на нескольких стульях – но знает ли кто-нибудь, чем конкретно она занимается?
Расследование ведет Грэм Моррисон.
П
рочтя интервью со Стюартом Коэном [Stuart Cohen] пару номеров группы разрабатывают исключительно подробные спецификации; ею нанято по
назад, вы, наверное, захотели узнать побольше о его нанимателе. меньшей мере 10 разработчиков из тех, что напрямую влияют на функции Linux-
Коэн – исполнительный директор OSDL, организации, образованной систем, используемых нами ежедневно – половина годового бюджета лаборато-
в 2000 г. консорциумом больших компаний, в том числе, CA, Hitachi, рии, а это $5 млн., тратится на развитие технологий.
HP, IBM, Intel и NEC. Эти фирмы предоставили финансирование и получили центр Но от большого бизнеса не уйдешь. Любое дело OSDL, будь то тестовая лабо-
разработки Open Source, беспристрастный и некоммерческий, который посвящен ратория или сервисы технической поддержки, движимо желанием вывести Linuх
продвижению Linux (на что многие из них делают ставку) в большой бизнес. Это на уровень предприятий. Фирмы-учредители задались направлением на совер-
мир подготовительных комитетов и спецификаций, рабочих групп и официальных шенствование преимуществ открытого кода. Это означает, что они могут управ-
документов: частично – мозговой центр, частично – глобальный консорциум, и час- лять политикой разработки и предлагать области исследований – если в этом
тично – Международное Спасение. заинтересован каждый член. OSDL не отстраняет от дела ни своих членов, ни
«OSDL» звучит несколько отчужденно, и тем не менее лаборатория сильно другие открытые инициативы.
влияет на большое сообщество Linux – не только потому, что платит зарплату Хотя OSDL и «открытая», но все же оставляет ощущение некоторой загадоч-
Линусу Торвальдсу, но и потому, что эта организация позиционировала себя как ности. Поэтому мы собираемся присмотреться к некоторым сотрудникам OSDL
«центр тяжести» (термин, от которого она теперь дистанцируется) Linux, в кото- и крупнейшим ее проектам и решить, что же служит стимулом для этой органи-
рый мы все вносим свою лепту. OSDL открыта для всех, а не только для многона- зации. Для сначала сразу предупредим: поскольку это большой бизнес, то будет
циональных конгломератов. Отдельные личности могут свободно присоединиться много акронимов. Мы пытаемся поменьше употреблять их, но все же их будет
и принять участие во всевозможных рабочих группах. много. С другой стороны, мы постарались свести к функциональному минимуму
За лабораторией стоят хорошо продуманные и хорошо финансируемые про- использование слова «рычаг», так что можете читать без опасения запутаться.
екты. Например, она сформировала фонд юридической защиты для помощи в
борьбе пользователей Linux против угроз возбуждения судебных дел, ее рабочие
Хакеры
высокого полета
Вот реальные причины важности OSDL.
О
дной из причин известности OSDL является то, Эндрю Мортон присоединился к Линусу в OSDL через Трудоустройство Линуса Торвальдса
что в ней работают высококлассные хакеры месяц, в июле 2003 г. Мортон – «хранитель» ядра 2.6 дало OSDL рекламную раскрутку.
ядра. Отчасти это потому, что она любит фан- (Торвальдс работает над текущей версией ядра), то есть
фары, а отчасти потому, что никто не сможет лицо, ответственное за включение заплаток от третьих лиц
игнорировать организацию, трудоустроившую Торвальдса. в древо ядра текущей версии. Недавно, он, к недоумению
Альтруистический аспект мотивации найма на работу Линуса многих, предложил посвятить следующий цикл разработки
Торвальдса, Эндрю Мортона и иже с ними в том, что OSDL ядра исправлению ошибок, закравшихся в текущую версию.
хотела предоставить им условия разработки без конфликтов Было очень ценно, что два основных разработчика Linux
с другими обязанностями, чтобы эти два разработчика смог- работают в одной компании, причем бок о бок. Но в августе
ли целиком сосредоточиться на разработке ядра Linux. Но Мортон ушел в Google. Это может нарушить нейтральность,
нельзя отрицать, что OSDL получает свою долю аплодисмен- которой разработчики наслаждались в OSDL, где отсутство-
тов, когда люди видят ее логотип на их визитных карточках. вало прямое давление со стороны крупных фирм, являю-
Нет ни одного пресс-релиза от OSDL, который бы не вклю- щихся частью OSDL.
чал следующую сноску: «OSDL – спонсор Линуса Торвальдса,
создателя ядра Linux – призвана ускорить рост и адаптацию Теплица для ядра
операционных систем на основе Linux на предприятиях». Без OSDL получила своего второго сотрудника в январе 2005 г.,
сомнения, немалой частью оказываемого ей доверия OSDL когда ее ряды пополнил Эндрю Триджелл, ведущий разра- Эндрю Мортон все время пребывания
обязана найму Линуса Торвальдса, человека, с которого все ботчик Samba – одного из самых важных существующих в OSDL занимался ядром.
началось. До перехода в OSDL в июне 2003 г., Торвальдс проектов с открытым кодом. Без Samba мы не могли бы
был сотрудником корпорации Transmeta (члена OSDL), раз- совместно использовать любые файлы или принтеры с
решавшей ему в рабочее время повозиться с ядром Linux, Windows-машинами в локальной сети, а это необходимое
помимо разработки ее собственного ПО. Переход позволил звено при развертывании Linux в любом офисе или на пред-
Торвальдсу сосредоточиться исключительно на основных приятии. OSDL позволила Триджеллу работать над ней пол-
компонентах ядра Linux. ный рабочий день, но, завершив запланированные работы
Итак, Линус впервые стал официально получать зарпла- над четвертой версией комплекса приложений Samba, он ее
ту за сопровождение ядра Linux и координацию процесса покинул и вернулся на свою предыдущую должность в IBM,
разработки. Стюарт Коэн сказал тогда: «Принятие Линусом оставаясь лидером проекта Samba. Уходя, Триджелл выра-
предложения присоединиться к нам подтверждает важность зил благодарность OSDL за ее участие в проекте: «Обладать
нашей миссии. OSDL – единственная организация, в которой временем, позволяющим сосредоточиться только на одном
разработчики Linux, потребители и дистрибьюторы могут проекте, действительно здорово. Большое спасибо OSDL за
участвовать на равных. Дополнение лаборатории взглядами и участие и поддержку разработки Samba».
руководством Линуса увеличивает нашу значимость для всех
трех групп». Тридж ушел, как только закончил
работу над Samba 4.
стандарты
(для коллекционеров акронимов – CGL-WG), чтобы создать
для Linux комитет по телекоммуникациям. Основная задача
группы – утверждение стандарта, который обеспечит доступ-
ную и высокоэффективную операционную систему Linux с
прекрасной поддержкой, способную напрямую конкуриро-
вать с готовыми и заказными проприетарными решениями,
получающими все большее распространение. Участие в ней
приняли 24 организации – члены OSDL, а учредительские
Если для внедрения Linux на предприятии требуется пора- обязанности легли на плечи IBM, MontaVista (известной бла-
ботать с бумагами, то OSDL как раз и может здесь помочь. годаря своей real-time версии ядра Linux), Intel и NTT Network
Service Systems Labs, возглавляющей подкомитет разработки.
К настоящему моменту имеется пять версий спецификации.
К
ак и следовало ожидать, OSDL заинтересована Версия 3.1 вышла в июне 2005. Заговорщики из OSDL работа-
в коммерческом успехе проектов, которые она ют над версией 3.2 и намерены выпустить ее в этом году.
финансирует и в которых участвует. В частности, В спецификации CGL-WG девять основных положений,
за последние несколько лет созданы три рабочих среди которых:
группы, где представители фирм-членов OSDL встречаются
для проработки спецификаций и применяют свои техничес- 1 Соответствие стандартам
кие знания для решения наболевшего вопроса об ускорении Это действительно залог нормальной работы CGL-WG с дру-
внедрения Linux в трех областях. гими стандартами Linux и индустрии телекоммуникаций.
Наверху – рабочая группа Carrier Grade Linux (CGL), про- Сюда включаются Linux Standard Base (LSB), POSIX, IPv6 и PCI
талкивающая Linux в бурно разрастающийся телекоммуника- Industrial Computer Manufacturer’s Group.
ционный бизнес. Посередине – группа Data Center Linux (DCL).
Ее любимое слово – «рычаги», и она старается открыть для 2 Платформа
Linux рынок вычислительных центров крупных корпораций. И, Любая CGL-система накладывает специфические требования
наконец, группа Desktop Linux (DTL) сосредоточена на том, что на оборудование. Сюда входит «горячая» замена, удален-
понятно нам всем, а именно на продвижении Linux в настоль- ная загрузка, бездисковое выполнение приложений через
ные среды, типичные для офисов. сеть и архитектура Advanced Telecom Computing Architecture
[Продвинутая архитектура телекоммуникационных вычисле-
Для телекоммуникаций ний – серия спецификаций промышленных стандартов, раз-
Внедрение в области, традиционно использующие проприе- работанных для следующего поколения отказоустойчивого
тарные решения – одна из главных задач OSDL, и есть одна оборудования и ПО].
область, в которой можно особенно поживиться. Это индус-
трия телекоммуникаций. Здесь традиционно вкладывают- 3 Работоспособность
ся средства в проприетарные оборудование и программное Поддержка системы в рабочем состоянии, чтобы все ее сер-
обеспечение, и безопасная, стабильная и расширяемая Linux- висы были всегда доступны, очень важна, и конкретным пос-
альтернатива принесла бы немало выгоды. Решение от OSDL тавщикам приходится вносить множество изменений в ядро
известно как Carrier Grade Linux (CGL – отказоустойчивый Linux. MontaVista – хороший пример дистрибьютора, само-
Linux): это спецификации системы, надежной более чем на стоятельно переделавшего ядро Linux для удовлетворения
99.999% – всего пять минут на отказ в год. Но некоторые уста- повышенным требованиям.
новки требуют даже большей надежности, около 99.9999%,
4 Удобство обслуживания
Машина, работающая постоянно, должна иметь возможность
Почему важны спецификации сервисного обслуживания, а значит, и поставлять в процессе
работы материалы для диагностики, в форме дампов актив-
ного ядра или динамической отладочной информации.
Для корпорации среднего размера любые инвес-
тиции в новую технологию связаны с удов-
летворением большому списку требований. 5 Кластеризация
Необходимо проверить спецификации любого Запуск приложений на кластерах часто является единствен-
будущего оборудования, а каждый производи- ным способом получения высоких уровней доступности, тре-
тель устройств будет предоставлять свои собст- буемых CGL. Кластер обеспечивает повышенную производи-
венные спецификации. Вот тут и появляется тельность и резервирование использованием параллельных
OSDL. Она избавляет дистрибьюторов Linux от ресурсов. Кластеризация настолько важна, что породила свой
проблем создания своих собственных специ-
собственный проект OSDL.
фикаций, передавая все полученные из опыта
Остальные четыре положения спецификации CGL каса-
знания в комитет, занятый формированием спе-
ются производительности, безопасности, расширяемости и
цификаций. И все это делается открыто – любой
может загрузить последнюю версию каждой создания инструментов поддержки приложений. HP сделала
спецификации, прочитать протоколы совещаний хороший шаг в начале этого года, зарегистрировав Debian
После учета всех требований OSDL к ядру
и списки рассылки рабочих групп, предоставля- Linux обновились и спецификации Sarge под CGL версии 2.02, что привело к появлению внутри
емые OSDL. совместимости DCL. Debian подпроекта по созданию отказоустойчивого дистрибу-
тива Linux, удовлетворяющего спецификации CGL.
OSDL хочет выглядеть скорее сторонником Linux корпо- выбора Linux ИТ-профессионалами. Это не экономия денег
ративного уровня, уровня вычислительных центров, а не про- и не повышенная безопасность, как предсказывали многие
талкивать открытый код на машины меньшего размера или эксперты, а чей-то совет. Люди использовали Linux и были
даже на настольные компьютеры. Частично это связано с тех- им так довольны, что рекомендовали коллегам. Электронная
ническими аспектами CGL, а также с тем, что OSDL содержит почта, офисные инструменты и web-браузеры были признаны
и управляет рабочую группу DCL, цель которой – установка критически важными приложениями, а дистрибутив Ubuntu
Linux в хранилищах данных с водяным и воздушным охлажде- оказался самым популярным. Естественно, что результаты
нием некоторых крупных корпораций, многие из которых, так опроса (см. www.osdl.org/dtl/DTL_Survey_Report_Nov2005.pdf)
уж вышло, являются членами OSDL, но есть и фирмы вроде вызвали много разговоров в сообществе Linux.
Siemens AG и Unisys.
Молчаливый партнер
В базе данных – пингвины?! Критиковать OSDL за разработку одной спецификации за дру-
Поскольку CGL-спецификация очень тщательна, рабочая груп- гой без написания хотя бы строки кода легко, но как раз это Хотя Стюарт Коэн и сказал, что
па DCL может использовать ее в качестве стартовой точки для и необходимо корпоративному рынку, на который OSDL пыта- выражение «центр тяжести» было
высококлассного центра обработки данных. Вычислительные ется пробиться. Что нам нравится меньше, так это отсутствие шуткой, но куда денешься – оно
центры, объединяющие корпоративные сервера приложений, диалога с большим сообществом Linux – обычные пользова- попало даже в последнюю CGL-
спецификацию 3.1.
базы данных и т.д., лежат в сфере ИТ с высокими стандарта- тели Linux остаются за бортом любых разработок, выполняе-
ми. Цели группы DCL разбиты на три области деятельности, мых для соответствия большому бизнесу. Хороший пример –
обозначенные как Передний край (Edge), Приложения, База написание данной статьи, потому как даже нам было трудно
данных. Группа определяет «Край» как сервер, где наряду получить комментарии или отзывы от людей из OSDL. А како-
с web-сервисами имеются edge-приложения – в основном вы шансы среднего раздраженного пользователя Linux?
ради улучшения производительности путем использования Если бы OSDL не твердила столь часто, что она является
промежуточного сервера для передачи запросов к сервисам, «центром тяжести» разработки Linux, мы были бы счастливы
запущенным на других машинах. Приложения и База данных
в объяснениях не нуждаются.
Плодом работы группы является версия 1.2 документа, «И верно, группа Desktop Linux
озаглавленного «Цели и Возможности DCL» и впервые выпу-
щенного еще в 2004. Это огромный документ с добавками от
дает возможность участия для
Sun, HP, IBM и Intel. Он похож скорее на техническую специ- всего Linux-сообщества.»
фикацию, в нем приводится список более 300 возможностей,
которые, как считает группа, важны для принятия Linux пред- причислить OSDL к компаниям вроде CollabNet, продвигаю-
приятиями. Например, приоритет номер один – возможность щей открытые стандарты и изменяющей способ ведения биз-
расширения до 16 CPU (пожалуй, уже маловато), асинхрон- неса крупными предприятиями. Но это не так. OSDL финан-
ный сетевой ввод/вывод и «горячая» замена процессоров, сируется несколькими крупнейшими фирмами ИТ-бизнеса и
памяти, а также устройств PCI/PCI-X. наняла двух самых влиятельных из имеющихся разработчи-
ков Linux. Если OSDL желает рассеять дымовую завесу, скры-
На рабочем столе вающую ее действия и мотивы, то ей необходимо уделять
Не удивительно, что самая молодая рабочая группа OSDL больше внимания взаимодействию с сообществом. Когда это
нацелена на настольный Linux. OSDL, видимо, понадеялась, случится, Linux действительно созреет для предприятий. LXF
что образование группы – в начале 2003 г. – будет ответом на
критику заботы о внедрении Linux только на корпоративный
рынок. И верно, образование рабочей группы DTL дало всему
сообществу Linux возможность включиться в то, в чем оно
имеет непосредственный опыт, и OSDL признает, что потен-
циальный размах этого проекта может затмить обе другие ее
инициативы. Но группа отнюдь не чурается предприятий, и
Desktop Linux включает области, которые вы не сразу отнесе-
Проекты, о которых стоит знать...
те к открытому рабочему столу – например, киоски и рабочие
OSDL наделала много шума из продвижения Linux основных разработчика ядра) и выступила с
станции с фиксированным набором функций. на корпоративный рынок, но она не только готовит Сертификатом Разработчика о Происхождении. Он
Вы будете разочарованы, если ожидали больше действий спецификации. Вот несколько более приземленных состоит из нескольких параграфов, снабженных
и меньше создания спецификаций – количество бумажной проектов: цифровой подписью, чтобы корректно описать ваш
работы остается обильным. DTL формулирует свою миссию вклад в древо исходного кода ядра.
как «работа с сообществом Open Source с целью выявления Создание Фонда Юридической защиты Linux
большого набора моделей настольного Linux, разработки В начале 2004 г., когда была серьезная угроза Проект Patent Commons
спецификации и предоставлению рекомендаций.» Вы можете судебных исков со стороны группы SCO ко всем Законодательство о патентах на ПО изменило лицо
найти спецификацию версии 1.0 на web-сайте OSDL, и в отли- использующим ОС Linux, OSDL создала Фонд разработки приложений в США и вызвало резонанс
Юридической Защиты Linux, выделив $10 млн. для в остальном мире. Это еще одна угроза будущему
чие от спецификаций CGL и DCL, она удобочитаема!
помощи конечным пользователям, втянутым в разработки приложений с открытым кодом. Проект
В настоящее время DTL работает при содействии пред-
битву с SCO. был создан в августе 2005 г. после внезапного
ставителей AMD, Novell, Intel и IBM. Одной из их наиболее ливня патентов, пожертвованных сообществу Open
интересных работ является не код, а результаты исследова- Сертификат разработчика о Происхождении Source крупными организациями вроде Sun
ния, проведенного в октябре 2005 г., чтобы определить фокус (Developer’s Certificate of Origin) Microsystems, IBM и Nokia. Проект, как и другие
действий рабочей группы. ИТ-профессионалам, внедрившим Другим результатом тяжбы с SCO стало понимание инициативы OSDL, разработан для того, чтобы
или думающим о внедрении настольного Linux в своих учреж- необходимости отслеживания вклада отдельных играть роль центра и способствовать использованию
дениях, были заданы вопросы об использовании Linux. Было программистов в разработку ядра. OSDL приняла открытых патентов на законных основаниях.
опрошено 3300 респондентов, и результаты удивили многих. меры (и не удивительно, коли в ней работают два
Самым неожиданным оказался ответ на вопрос о причине
Машины –
в RAID!
Достала низкая производительность или частые отказы SATA? Объединение ваших
жестких дисков может улучшить скорость их работы и повысить надежность,
пишет Нейл Ботвик.
К
то-то может сказать, что название напоминает оружие мас- вашего корневого раздела, так что его тоже можно разместить на
сового уничтожения летающих насекомых, но RAID – заме- RAID. Посмотрим правде в глаза – нет особого смысла в добавлении
чательный способ улучшить производительность ваше- скорости и безопасности, если это не затрагивает вашу операционную
го компьютера и повысить безопасность ваших данных, систему.
используя только ПО, которое у вас уже есть. Если вам нужна лучшая
производительность диска, читайте дальше. Пространство, темп, мощь
Изготовители дисководов снизили сроки гарантии на стандартные Использование RAID сперва было нацелено на повышение надежнос-
ATA- и SATA-диски, и теперь зачастую дают всего лишь год. Выходит, ти, поскольку массив сохраняет работоспособность, если один диск
диски стали менее надежными? У нас нет способа узнать это наверня- выходит из строя, и скорости, поскольку размещение одних и тех же
ка, но если вы хотите, чтобы ваши данные уцелели в случае проблем с данных на более чем одном диске снижает время доступа и чтения.
диском, серьезно подумайте о RAID. Этот термин первоначально озна- «Избыточный» не означает «ненужный»; это слово указывает, что дан-
чал Redundant Array of Inexpensive Disks (избыточный массив недорогих ные хранятся более чем на одном диске, и если один из дисков поло-
дисков), довольно обманчивое имя, поскольку RAID в те времена был мается, данные будут по-прежнему в безопасности. Отдельные диски
вовсе не дешев. Акроним позже был изменен на Redundant Array of могут считаться избыточными, но не массив в целом. Но если назвать
Independent Disks (избыточный массив независимых дисков). его Array of Redundant Independent Disks (массив избыточных независи-
Концепция дискового массива заключается в объединении двух мых дисков), акроним будет скорее напоминать дезодорант [«arid» по-
или более устройств (дисков или разделов) так, чтобы они восприни- английски «сухой», – прим. пер.], чем убийцу насекомых. В наши дни
мались системой как одно устройство. Вашими физическими устрой- RAID также используется и как средство комбинирования различных
ствами могут быть /dev/hda1 и /dev/hdc1, но большая часть ОС и при- дисков в один модуль, хотя LVM (см. практикум по этой теме в про-
ложения увидят /dev/md0. С точки зрения системы диск только один. шлом выпуске), вероятно, подходит для этого лучше.
Фактически же это комбинация двух и более устройств с разбросанны- Далее мы покажем, как опробовать RAID самому. Вам понадобится
ми по ним вашими данными. пара лишних разделов, желательно на различных дисках. Вы можете
Linux обрабатывает все это, когда ядро только загружается, распоз- попробовать и два раздела на одном диске, но не увидите реальных
навая, что ваши диски содержат признаки RAID, и создает устройства преимуществs. Но сначала мы слегка углубимся в принципы работы
/dev/md. Это происходит на раннем этапе загрузки, до монтирования RAID.
Е
сть несколько уровней RAID, различающихся требованиями к
минимальному числу дисков и компромиссом между произ-
водительностью, надежностью и дисковой памятью, которые
они обеспечивают. Заметьте, что хотя RAID часто использу-
ется на серверах с устройствами, допускающими горячее подключение
и позволяющими выполнять на лету замещение неисправных приво-
дов, без перерыва в работе, он не сделает ваши диски волшебным обра-
зом поддерживающими горячую замену. IDE-диски нельзя заменять «на
лету», а SCSI – разве что при наличии соответствующего интерфейса и
драйверов. У вас либо есть дисковый контроллер с поддержкой горячей
замены, либо нет; RAID не добавит этой способности вашей системе, так
что не испытывайте ее. Вы можете остаться со сгоревшим диском/конт-
роллером, или, в технических терминах, с невозможностью входа.
Наряду с реализацией на различных уровнях, RAID может быть аппа-
ратным или программным. Аппаратный RAID-контроллер управляет
всем так, что дисковый массив виден как один диск даже на самом низ-
Можно использовать отдельные RAID-устройства для каждого
ком уровне. Программный RAID, как вы уже догадались, использует ПО
раздела, чтобы уравнять надежность, место на диске и скорость.
вашей операционной системы – у Linux собранное в ядре – для объеди-
Matt Herring
нения отдельных устройств в RAID-массив. На современных процессорах так гибок, как программный, он может работать в пределах ограничений
программный RAID может быть по меньшей мере не медленнее выделен- BIOS и только на дисках, подключенных к контроллеру, тогда как про-
ного аппаратного контроллера и, при этом, значительно дешевле. граммный RAID работает с любым диском или разделом, подключенным
Есть третий вариант RAID: так называемый аппаратный RAID-конт- к любому контроллеру.
роллер, встраиваемый во многие материнские платы. На самом деле это
программная система RAID, маскирующаяся под аппаратный RAID. Ее Развертывание гибкой системы
часто называют гибридным RAID или, менее деликатно, «фальшивым» Поскольку аппаратный RAID управляется контроллером, а гибридного
(fake). Вспомните Win-модемы, и вы поймете идею. Гибридный RAID не лучше избегать, мы рассмотрим только чисто программный RAID.
Под Linux он объединяет физические разделы в RAID-раздел.
Поначалу потребуется кое-какая дополнительная работа, поскольку
Внимание: суперпользователь нужно создать отдельное устройство RAID для каждого раздела, а это,
в свою очередь, потребует создания разделов-источников для каждого
Многие команды RAID, приведенные в этой используют в реальном мире, но это хороший устройства RAID на физических дисках, зато обеспечит гораздо большую
статье, требуют для запуска привилегий способ проводить эксперименты, не трогая гибкость (см. врезку «Разбиение массивов: возможно ли?» на следую-
суперпользователя (root). Вам нужно открыть ваши разделы на жестком диске. Все, что вам
щей странице), с различными типами RAID для разных целей. На своей
терминал и ввести su - (sudo bash в Ubuntu и понадобится, это достаточное количество
настольной системе вы можете использовать RAID 1 для разделов, где
других дистрибутивах, основанных на Debian), свободного места, чтобы создать loop-файлы:
а затем ваш пароль суперпользователя. dd if=/dev/zero of=raidtest1 bs=1M count=8192
безопасность данных более важна, чем собственно скорость, например,
Большинство команд RAID бывают losetup /dev/loop1 raidtest1 /usr и /home. Но, допустим, вы также используете множество больших
разрушительны, так что хорошей идеей dd if=/dev/zero of=raidtest2 bs=1M count=8192 временных файлов, типа ISO-образов DVD-дисков и видеофайлов. Они
является экспериментирование там, где нельзя losetup /dev/loop2 raidtest2 пойдут на раздел RAID 0, который быстрее и дает в два раза больше места
навредить, например, на отдельном диске. Эти команды создадут два файла по 8 ГБ и для хранения данных, чем RAID 1. Поскольку это в основном временные
Также можно создать RAID-массив, присоединят их к устройствам loop, которые файлы, в избыточности, предоставляемой RAID 1, нужды нет.
используя устройство loop. Его мало вы сможете использовать в RAID-массиве. Программный RAID также позволяет вам использовать диски с раз-
личными контроллерами, при желании объединяя IDE, SATA и SCSI.
Уровни 2 и 3 используются редко. RAID-массивы могут быть вложенными, типа RAID 5+0. Если
Раскапывая уровни RAID от этой мысли у вас ломит виски, не беспокойтесь – здесь мы такого касаться не будем!
RAID 0. Популярен среди пользователей RAID 1. Простейший из настоящих систем RAID 1, увеличивает скорость чтения на дисках в RAID. Производительность
настольных систем, особенно RAID. Использует два или более устройств, и надежность, но не дисковое пространство. записи может быть низкой, поскольку
с «фальшивыми» RAID, но фактически это в идеале — одинакового размера. Каждый RAID 4. Немного похож на RAID 0, данные и информация о четности должны
не RAID, поскольку не обеспечивается диск является «зеркалом» другого; если поскольку размещает свои данные на двух записываться на несколько дисков,
избыточность (может, назвать его AID 0?). размеры отличаются, массив будет иметь или более дисках, но сверх того использует но производительность операций чтения
Записывает данные поочередно на один размер наименьшего диска. Дает большую диск четности. Это отдельный диск, который высокая. Зачастую это лучший вариант
диск, затем на другой (другие), каковой скорость чтения, чем одиночный диск, хранит информацию о записанных данных, для небольших или средних серверов.
процесс известен под названием «striping» так как данные можно читать более чем чтобы использовать ее для восстановления RAID 6. Эволюция RAID 5: предназначен
(страйпинг, чересполосица), он увеличивает с одного диска одновременно. Основное данных в случае сбоя диска. Это означает, для систем с большими массивами.
производительность. Доступное место преимущество – безопасность: если один что для RAID 4 требуется как минимум три Предоставляет лучшую защиту от сбоев
складывается из размеров используемых диск выйдет из строя, RAID продолжит диска. нескольких дисков в таких массивах,
устройств. Сбой одного из дисков испортит работать, как прежде, используя исправный RAID 5. Не использует отдельный диск но неэффективен, если используется малое
весь массив. диск. Каждый диск, добавляемый в массив четности, а хранит эту информацию число устройств.
Запускаем
управление дисками
Использование инструментов и опций ядра для создания RAID-массива из двух разделов.
еперь, когда вы знаете, как это работает, давайте подгото- само его существование покажет, что RAID готов к использованию.
Управление системой
Что делать, если диск вышел из строя, а вы за 100 миль от него; а также другие заботы
администратора.
И
так, вы настроили RAID, установили свои файлы, и все
работает прекрасно. Возможно, вы отслеживаете устрой-
ства массивов и компонентов с помощью полезных опций
Справка по командам
mdadm: --query, --detail и --examine. Одна из основных при- Задача Команда mdadm Команда raidtools
чин для перехода на RAID 1 – функция избыточности; так что же будет,
если одному из дисков «поплохеет»? Создать массив mdadm --create mkraid [1]
Проще всего ответить в случае RAID 0, поскольку здесь избыточнос- Считать информацию о массиве mdadm --detail Israid
ти нет. Если один диск вышел из строя, это означает несостоятельность Изменить существующий массив mdadm --grow raidreconf [1]
массива. Ваши файлы погибли, так что доставайте резервные копии – Запустить массив mdadm --assemble raidstart
да-да, те самые, которые вы собирались обновить в прошлом месяце! Остановить массив mdadm --stop raidstop
С помощью RAID 1 и выше, массив сможет работать без неисправ-
[1] Эти программы raidtools требуют, чтобы вы сначала ввели информацию в файл конфигурации. Файл конфигурации
ного диска, но со сниженной производительностью. Это лучше, чем raidtools – /etc/raidtab, он является обязательным. Файл конфигурации mdadm – /etc/mdadm.conf; перечисление в нем
лишиться всей системы, но вы вряд ли захотите работать в таком режи- устройств не обязательно, опция --scan для mdadm прочитает всю информацию об устройствах сама.
ме сверх необходимого, поскольку вы беззащитны перед поломкой и
второго диска вслед за первым. (Не столь невероятной, как кажется: диска и ручного ввода команды можно избежать – в составе mdadm
бывают сбои по внешним причинам, типа скачка напряжения). есть демон, который наблюдает за вашими дисками в фоновом режиме
Предположим, у вас есть массив RAID 1 на sda1 и sdb1, и sdb1 и отправит вам сообщение по электронной почте в случае проблем (не
выходит из строя. Прежде всего нужно удалить неисправный диск из будете же вы ежеминутно проверять /proc/mdstat).
массива. Он уже должен быть помечен как аварийный – для проверки
используйте cat /proc/mdstat, диск будет отмечен как (F) – так что уда- Демон по вызову
лите его командой В режиме демона, если вы добавили запасной (spare) диск к массиву, этот
mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1 диск подключится автоматически, когда один из активных дисков выйдет
Теперь можно отключить питание, снять неисправный диск и заме- из строя. Вы можете добавить его при создании массива, например:
нить его другим, должным образом разбитым на разделы, как мы вам mdadm --create /dev/md0 --auto=yes --level=raid5 --raid-devices=3 --
показывали. Когда вы загрузитесь, /dev/md0 будет продолжать работать spare-devices=1 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
в деградированном режиме. Тут-то и добавьте новый диск: Эта команда создаст массив RAID 5 с тремя активными дисками и
mdadm /dev/md0 --add /dev/sdb1 одним запасным. Запасные диски можно использовать на всех уровнях,
Массив немедленно приступит к его пересозданию в фоновом режи- кроме RAID 0. В уже существующий массив запасное устройство добав-
ме. Вы можете ощутить некоторое снижение производительности, но ляется с помощью
пересоздание работает с низким приоритетом. Как обычно, /proc/mdstat mdadm /dev/md0 --add /dev/sdd1
будет сообщать вам, что происходит. Отключения питания, добавления Если в массиве есть запасной диск, а в одном из активных дисков
обнаружена неисправность, неисправный диск автоматически будет
удален из массива, а запасной – добавлен.
Переходим в GUI Если у вас множество массивов, предоставление запасного диска для
каждого из них может быть излишним. Взгляните на опцию spare-group на
Хотя RAID’ом обычно управляют из командной строки, лучшим
графическим инструментом его администрирования является man-странице mdadm.conf. Если она установлена, то mdadm, определив
вездесущий Webmin. Он доступен в репозитариях большинства неисправность диска, передаст неиспользуемый в каком-либо массиве
дистрибутивов, и многие уже установили его на своем компьютере. Вы запасной диск нуждающемуся массиву. Эта программа обучаема.
найдете модуль RAID в секции Hardware. Он запускается как web- Демон mdadm запускается обычным способом, с помощью сцена-
сервис, доступный через любой браузер.
рия в /etc/init.d. Используйте инструмент управления сервисами вашего
дистрибутива для добавления его на стандартный уровень исполнения
(runlevel), чтобы запуск происходил всегда. Адрес электронной почты,
куда будут отсылаться оповещения, устанавливается добавкой строки
в /etc/mdadm.conf:
MAILADDR me@mydomain.com
Можете также заставить демона запускать какую-либо программу
в ответ на «интересное событие» (эвфемизм, применяемый man-стра-
ницей для сбоя): например, отсылать вам IM- или текстовое сообщение
через SMS-шлюз. Выбор за вами, хотя бешеные вспышки и динамики,
орущие «Атас, Вован!», многие сочтут перебором.
Ничто не защитит вас от сбоя нескольких дисков, так что, получив
письмо о сбое диска, поскорее замените его, пока по закону Мэрфи не
поломался другой.
Можно еще многое рассказать о программных RAID на Linux (man-
Webmin: просматривайте и управляйте массивами RAID на страница mdadm – хороший источник), но для начала работы мы дали
удаленном сервере или локальном компьютере – даже без вам более чем достаточно. Только знайте, что вы забавляетесь с данны-
графического интерфейса. ми на вашем жестком диске на низшем уровне, так что будьте осторож-
ны и помните, что RAID не заменяет резервных копий! LXF
Что за штука…
JavaServer
Faces?
Ричард Драммонд прослышал о более простом и быстром
способе строительства web-приложений.
Определенно стоит разобраться…
Сейчас много шумят об этой новой web-техно- этими событиями Модели и/или Вида). Архитектура
логии, JavaServer Faces. Для чего она? MVC успешно используется некоторыми современ-
JavaServer Faces (сокращенно JSF) – компонентная ными средами разработки, включая Cocoa для Mac
платформа, призванная упростить разработку поль- OS X, Microsoft Foundation Classes и Swing для Java.
зовательских интерфейсов для web-приложений Java. Теперь наблюдается, что подобный подход начал
Это… применяться и к web-приложениям, отсюда и попу-
лярность Struts.
Секундочку. У нас уже есть Struts, Tapestry, Спасибо за объяснение технологии, но что MVC это правильно (как известно, Swing – стандартная сре-
WebWork и nauseam. Зачем создавать еще одну даст лично мне? да разработки графических пользовательских интер-
платформу для Java-приложений? Если рассматривать приложение таким образом, можно фейсов, GUI, на чистом Java). Со Swing легко изменять
В том-то и часть проблемы: много несовместимых отделить модель от вида. Это особенно актуально для способы отображения компонентов интерфейса или
платформ. Однако JSF – открытый стандарт, разраба- web-приложений. Вспомните только, как часто попу- создавать особые компоненты, а также использовать
тываемый в рамках Java Community Process, и пред- лярные сайты подвергаются визуальному обновлению визуальные редакторы интерфейсов. Все эти преиму-
ставители многих популярных, но нестандартных плат- (меняется вид), а обрабатываемые ими данные (модель) щества применимы к JSF, но не к Struts.
форм внесли свою лепту в разработку спецификации остаются неизменными. Кроме того, в web-разработках
JSF (текущая версия JSF 1.2). Спецификация открытая, и у программиста, и у дизайнера (который не обязатель- Вы приводите сравнение со Swing. Это, по-
и применять ее может каждый. Sun, кстати, выпустила но разбирается в программировании) должна быть воз- вашему, убедительно?
стандартную реализацию. можность трудиться над приложением вместе. Наконец, Да забудьте вы эту Swing-фобию! Ведь вы же сможете
вам могут понадобиться различные методы доставки строить интерфейс web-приложения так же легко, как
Ясно. Но чем JSF отличается от, скажем, Jakarta web-приложения пользователям: скажем, вы работаете строится простой GUI – перетаскиванием компонентов
Struts? с HTML-интерфейсом для настольных компьютеров, а с в UI-конструктор; это ли не здорово?
Тем, что у этих проектов разные цели. Struts – завер- WML – для мобильных устройств. Благодаря MVC реше-
шенная платформа, позволяющая упростить постро- ние этих задач существенно упрощается. Допустим. Но интерфейс для web и для обыч-
ение Java-приложений с использованием парадигмы ных платформ – не одно и то же. Осуществима
модель-вид-контроллер (MVC). JSF сосредоточена на Если JSF занимается только видом, чем она ли эта идея?
одной части парадигмы, виде. лучше Struts, которая умеет все? Да, поскольку JSF моделирует интерфейсы точно
Не обязательно быть во всем лучше всех. JSF лучше так же, как традиционные среды разработки, в част-
Вид — то есть вид web-приложений, отсюда и только для построения пользовательских интерфей- ности, Swing. В основе JSF лежит API, позволяющий
«Faces»? сов. Вполне возможно совместное использование создавать компоненты интерфейса, не зависящие от
Точно. MVC – программная архитектура, четко раз- Struts и JSF в одном приложении – есть даже дочерний устройства вывода. Этот API управляет всеми вопро-
деляющая пользовательское приложение на три проект Struts под названием Shale, для более плотной сами, связанными с пользовательским интерфейсом:
части: Модель (часть программы, содержащая дан- интеграции с JSF (см. http://shale.apache.org). жизненным циклом, обработкой событий, персистен-
ные), Вид (представление данных, позволяющее тностью (способность сохранять и поддерживать объ-
пользователю взаимодействовать с программой) и Об этом хватит! Расскажите подробнее о JSF. екты) и навигацией. JSF предоставляет также базовый
Управление (обработка событий, например, пользо- Вижу, вас надо хорошенько убедить. Ладно. набор компонентов GUI, знакомых дизайнеру любых
вательского ввода, и обновление в соответствии с Иногда JSF называют «Swing для web-приложений», и интерфейсов.
Как это отразится на HTML-интерфейсе, кото- пользовательского интерфейса JSF. Например, если Хм. А нет ли других решений среди свободно-
рый я вижу в браузере? вы хотите представить пользователю данные в виде го ПО?
Основные компоненты интерфейса JSF существуют на таблицы, нужно воспользоваться соответствующим Creator от Sun основывается на открытом NetBeans
серверной стороне приложения и не зависят от средств JSF-тэгом. JSF возьмет на себя генерацию таблицы в IDE, но в текущей стабильной версии NetBeans еще нет
представления. Однако нынешняя спецификация JSF виде HTML-кода в ответ на пользовательский запрос, а визуальных инструментов для работы с JSF.
требует применения рендерера, способного отображать web-контейнер доставит ее в браузер пользователя. Вы сказали, что JSF – открытый стандарт. Нет
компоненты пользовательского интерфейса как HTML, Полагаю, ввод данных в страницы JSF не соста- ли других вариантов, кроме как от Sun?
через JavaServer Pages (JSP). Возможны и другие техно- вит труда… Конечно, есть: например, Apache MyFaces (см. http://
логии представления, но поддержка JSP обязательна. К сожалению, избежать Java-кодирования не полу- myfaces. apache.org).
чится. Каждая страница JSF связана с «бином» (bean),
Погодите продолжать, поясните, пожалуйста, который передает значения компонентам JSF, занима- Хотелось бы познакомиться с библиотеками
что такое JavaServer Pages? ется обработкой событий, проверкой введенных дан- компонентов JSF.
С удовольствием. Основа технологии генерации дина- ных и т.п. Каждый компонент JSF связывается со свойс- Отлично! Попробуйте ADF Faces от Oracle (www.oracle.
мического web-контента с сервера Java-приложений – твами и методами «бина» через атрибуты тэгов JSF com/technology/products/jdev/htdocs/partners/addins/
это сервлет. Но строительство пользовательского exchange/jsf).
интерфейса только через сервлеты весьма пробле- ОК, вы заинтриговали меня. С чего же начать
матично: встраивать весь генерируемый контент (в разработку в JSF? А где можно подробнее узнать о JavaServer
основном HTML) внутрь Java-кода – задача непосиль- Можно начать разработку с помощью web-контейнера Pages?
ная. Поэтому и появилась JavaServer Pages. Теперь все типа Tomcat, вручную инсталлировать экземпляр JSF, Рекомендую http://java.sun.com/javaee/javaserverfaces.
наоборот: можно добавить в HTML особые тэги, испол- затем в простом текстовом редакторе создать шаб- Там можно найти информацию и ссылки на многочис-
няющие необходимый для генерации динамического лоны и необходимый Java-код. Однако простейший ленные статьи и руководства по JSF. LXF
контента Java-код, а то и встроить этот код непосредс- путь – зарегистрироваться в Sun Developer Network и
твенно в HTML-страницу. установить новейшую версию Sun Studio Creator (см.
http:// developers.sun.com/prodtech/javatools/jscreator).
А применение JSF обязательно требует под- Это полный пакет для JSF-разработки, включающий
держки JSP? Java IDE, визуальный конструктор и сервер приложе-
Да, поставляется библиотека тэгов JSP с особыми ний. Регистрация свободная, а загрузка Creator для
тэгами, позволяющими оперировать с компонентами зарегистрированных членов бесплатна.
ЕВГЕНИЙ БАЛДИН
Начинал с Агатов. Когда-
В этом выпуске...
то даже знал, что такое
Робик.
Модули KDE ........................ 72
Андрей Боровский
разрабатывает
Free! Music расширения для Konqueror
и Digikam.
Н
е кодом единым жив человек.
Свободные исходники нужны не Python для профи ...............76
только для программ. Музыка В заключительной статье
тоже достойна быть свободной. Писать OOo Base ............................. 50 этого цикла
для людей бывает интереснее, чем ради
Создайте базу данных в OpenOffice.org с Пароли что надо ................ 62 Сергей Супрунов научит
нуля. Энди Ченнел увлекся описью. Бывает, волк носит овечью шкуру. Д-р Python петь и краснеть.
денег. имущества Крис Браун расскажет, как превратить
Есть люди, из которых музыка исхо- вашу Linux-систему в неприступную
дит. Это своеобразный талант – как дар крепость. LaTeX .................................. 82
TeXнологичное введение
математика. Их мало, как и математиков, в логику LaTeX
но они есть. Я с подобными личностями от Евгения Балдина.
пересекался и подобные встречи укрепля-
ют мою веру в человечество. Вовсе необя-
зательно создавать шедевры всех вре- Сказка Java ........................ 87
мен и народов, ведь понятие шедевра Антон Черноусов научит
писать программы для
относительно.
больших серверов.
Web-страница в Inkscape .. 54 И кофемолок.
«Музыку раньше писали Создайте правильную web-страницу со
для людей, а теперь для всеми шрифтами, цветами и проч. в 3D Ogre Здания .................. 66
шоу-бизнеса.» редакторе №1 под чутким руководством Продолжаем писать стрелялку. Пол Сигналы Unix ...................... 90
Дмитрия Кирсанова. Хадсон строит дом, добавляет Луну и Даже самые сложные
Валерий Мифодовский Солнце и помещает своего героя на карту средства IPC становятся
Quake 3. простыми в исполнении
Андрея Боровского.
Месяц назад Мы создали по-настоящему детский рабочий стол с ограничением доступа и web-фильтрами
зуя обычные таблицы с колонками. В БД мы также можем создавать флажки или выпадающие списки. Более крупная БД вполне может
связи и отношения между массивами, что помогает управиться с боль- содержать две и более таблиц. Например, база данных школы может
шим объемом данных. содержать одну таблицу с информацией об учителях и вторую – о
Убедились? Теперь перейдем к таблицам, и запомните: девиз серии детях; эти две таблицы могут быть связаны отношением учителя к
на DVD
«Первые шаги» – Сначала составляем план. классу, в котором он преподает. Третья таблица может быть посвя-
При создании базы данных перво-наперво нужно понять, из чего щена оценкам за экзамены и при этом быть связанной с таблицами
она будет состоять и какие связи между объектами вы собираетесь учителей и учеников.
установить (если вообще собираетесь). Для начала лучше всего взять Сейчас у меня есть список из семи свойств предметов: название,
лист бумаги и написать на нем список вещей, которые вы собираетесь производитель, модель, цена, место покупки, дата покупки и серийный
включить в БД. В нашем случае речь идет о списке домашних вещей, номер. Эти свойства следует объединить под общей категорией Record
поэтому такие параметры как название предмета, цена и дата покупки ID (Карточка), поэтому самое время запустить первый мастер в OОo
имеют решающее значение. Мы собираемся создать очень простой Base: мастер таблиц.
массив данных, поэтому эти предметы будут «полями» БД, в которые
мы и внесем детали.
Определяемся с данными
Нужно продумать, какого типа будет каждая информационная ячейка. Вниманию грабителей
Поле Product Name (Название предмета) [кстати, в БД предпочтитель-
нее использовать названия, набранные латинскими буквами. Это не Хранить всю важную информацию на компьютере – достаточно
относится к тексту ячеек, – прим.ред.] должно быть текстовым, в то легкомысленная затея, особенно если учесть, что компьютер в первую
время как поле Price (цена) – числовым, причем в определенном фор- очередь привлекает внимание квартирных воров. В то же время,
мате – десятичном или валютном – для того, чтобы введенные цены нельзя забывать и про резервные копии. Здесь вам не помешает
автоматически приводились к одному виду. немного параноидальной осторожности и совет хранить резервные
На первое время мы будем использовать всего несколько типов CD/DVD в каком-нибудь месте вне дома. К счастью, наша простая база
данных, включая простой текст, десятичные числа и дату, но в дальней- данных представляет собой один аккуратный ODB-файл, который
можно отправить по e-mail на удаленный web-сервер или записать на
шем можно будет добавить и отдельные категории (кухня, компьютер,
CD-R и спрятать на дедушкином чердаке.
музыка и др.) во вторую таблицу. В нее, в свою очередь, можно вклю-
чить параметр «да/нет», указывающий на то, использует ли категория
Скорая
Часть 3 Добавляем данные помощь
Сортировка
Два мастера помогли нам подготовить основу для внесения информа- позволяет вам
ции, и теперь мы как раз можем этим заняться. Для этого есть два спо- упорядочивать
ячейки более чем
соба. Первый заключается в заполнении таблиц(ы): перейдите в соот-
по одному
ветствующий раздел на панели слева, щелкните правой кнопкой мыши параметру. Вы
на созданной таблице и выберите Открыть. Вы окажетесь в редакторе можете, к примеру,
таблиц, столбцы которого будут соответствовать названиям полей. сделать выборку по
Данные можно вносить в пустые ячейки. Щелкните по ячейке, наберите цене, а внутри нее –
по производителю.
какой-нибудь текст и нажмите Tab, чтобы перескочить на следующую.
Продолжайте, пока не кончатся данные. Вы можете заметить, что ког-
да вы набираете содержимое поля, под ним автоматически появляется
новая пустая строка, также готовая для ввода данных. Когда вы дойде-
те до последней ячейки в строке, нажатие Tab перенесет вас в первую
ячейку следующей строки.
А как же второй способ заполнения базы данных? Об этом мы пого-
ворим в следующий раз...
Через месяц Мы заполним нашу базу данными из других источников, научимся создавать запросы и отчеты.
Inkscape: cоздаем
ЧАСТЬ 4: Интернет ждет вас! Дмитрий
Кирсанов продемонстрирует, на что спо-
собен Inkscape в области создания
web-страниц.
В
спомните время Web 1.0. Dial-up был быстр, #000000 – свеж, а
Bangalore был… просто названием города. С тех пор мы пере-
жили бум сайтов типа MySpace, Google Pages и LiveJournal,
через которые web-литераторы могут загружать контент в Интернет, не
зная ничего о HTML, CSS, не имея даже базовых дизайнерских навы-
ков. Но если вы приложите некоторые усилия, то Inkscape поможет вам
в создании стильных, уникальных сайтов, созданных специально под
ваши цели. Ни в какой программе, кроме векторного редактора, вы не
сможете манипулировать объектами – текстом, графикой, фото – с
такой свободой и неограниченной гибкостью.
Наш
эксперт
Дмитрий Кирсанов
Дизайнер,
специализирующийся
на создании
логотипов и web-
сайтов. Консультант,
пишет книги и статьи
о дизайне и XML-
технологиях.
web-страницу
Поэтому ни один другой инструмент не может позволить вам стро-
ить вашу страницу с такой точностью и вниманием к деталям. Любая
другая программа просто меркнет в сравнении с Inkscape.
Композиция направлений
Я не собираюсь обсуждать использование формата SVG в Интернет Простота этого сайта ставит дизайнеру интересную задачу: как
непосредственно (хотя такая необходимость давно назрела). Это – скомпоновать его страницы, чтобы они не выглядели скучными или
тема отдельного разговора. Пока мы будем пользоваться Inkscape безликими? Дизайн строится на контрасте и балансе горизонтальных
только для наброски черновика страницы и создания всех ее гра- и вертикальных ориентаций. Так как выровненная слева текстовая
фических элементов. После этого, настоящую HTML-страницу нуж- колонка дает нам вертикальную линию, заголовку нужно придать как
но будет создать отдельно, любым удобным для вас способом. Я не можно больше горизонтальных элементов. В основном, контрастные
буду подробно освещать эту стадию, но дам несколько советов по ее цветные границы горизонтальные, а вертикальные края верхнего и
нижнего колонтитулов выведены за пределы страницы. Притапливание
упрощению.
вертикальных рамок рисунков также способствует общей
В качестве практического примера к этой статье я использовал
горизонтальной ориентации заголовка.
web-сайт, созданный мной для Православной Церкви Св. Владимира,
Галифакс, Канада. Мы изучим способы работы с фото, текстовыми
колонтитулами и некоторыми другими графическими элементами
для сборки их в сбалансированную композицию. Контент сайта очень или скучен. Разумеется, церковному сайту не пристало быть чересчур
прост – одна линейная текстовая область, заголовок, изредка – иллюс- крикливым и броским, но примитивности и занудства допускать тоже
трация. В этой простоте скрыт некоторый вызов дизайнеру: простому нельзя. В идеале он должен быть приветливым и душевным, в соответ-
контенту требуется простая структура, но сайт не должен быть безлик ствии с традициями Восточной Православной церкви.
Скорая
помощь
Inkscape запоминает
разрешение и имя
файла каждого
импортированного
объекта, поэтому
ввести имя файла
достаточно лишь
3 Подготовьте ваши рисунки 4 Выберите подходящий шрифт однажды. Если
Займемся фотографией иконы Св. Владимира, святого покровите- Для простой web-страницы основная часть дизайнерской работы в дальнейшем
ля прихода. Сначала импортируйте фото в Inkscape через меню File > сосредоточивается на ее верхней части, которая обычно состоит из понадобится
Import (Файл > Импорт) (А). Выделите его и конвертируйте из объек- экспортировать
логотипа, заголовка и меню. В нашем случае «логотип» – это икона Св.
та-изображения в прямоугольник с заливкой нажатием Ctrl+Y. Можно некоторые места
Владимира, а заголовок – «St.Vladimir Orthodox Church». Сначала помес-
заново, Inkscape
двигать рукоятки изменения размеров прямоугольника инструментом тим их рядом (А). Для заголовка страницы я выбрал Luxi Serif. Этот сам подставит
Node (Узел) (В), поворачивать рисунок-заливку внутри прямоугольни- шрифт выглядит самобытно, и в то же время достаточно традиционно соответствующее
ка для выравнивания сторон (С) или конвертировать прямоугольник в для нашего случая (В) – sans serif был бы чересчур современен. имя в диалоговом
линии и редактировать его при помощи узлов так, как вам заблагорас- окне экспорта.
судится (D).
Скорая
помощь
Скорая
помощь
Если вы
хотите, чтобы
экспортированная
графика абсолютно,
точка в точку,
соответствовала
размеру экрана
в Inkscape при
масштабе 100%,
экспортируемые
прямоугольники
нужно выровнять по
пиксельной сетке.
Для ее активации
нажмите #.
М
ы подходим к концу данной серии уроков, и вы уже знае- OpenOffice.org? Потому, говорит Ноэль, «что одним из барьеров внед-
те, что можно автоматизировать любые задачи с помощью рения OpenOffice.org является отсутствие прозрачной работы макросов.
макросов OpenOffice.org Basic. На этот раз мы рассмотрим В бизнесе почти все жизненно важные макросы сосредоточены в таб-
возможность использования Windows-эквивалента, VBA, в OOo – и лицах Excel. Устранение или снижение этого барьера сразу же облег-
увидим, что не все OpenOffice.org одинаковы. чит внедрение OpenOffice.org.» Исследования Novell по использованию
Наш Позвольте мне начать с истории в стиле Макса Байгрейвcа [Max VBA на предприятиях показали, что большинство макросов исполь-
эксперт Bygraves]. Недавно я купил очень хороший поддержанный ПК, MSI
Марк Бэйн Mega, с Windows XP. Я воздержался от установки на него Linux, и
Свою первую
попытался найти способ запустить Linux через Windows. Скажете,
программу Марк
написал на Sinclair кощунство? Объясняю: у компьютера имеется TV-карта, а у меня –
ZX81. Он уже многие странное ощущение, что я останусь без Freeview, если мигрирую.
годы работает с Поэтому я установил Cygwin, а затем использовал Cygserver, чтобы
системами Unix и работать с Linux на одной из других моих машин. Но на свете столь-
Oracle, а также
читает лекции и
ко дистрибутивов, что я не утерпел, и миграция свершилась. Теперь у
пишет. меня замечательный ПК с PCLinuxOS, а заодно и ежевечернее развле-
чение: попытки заставить эту карту снова заработать.
К чему я это рассказал? Очень просто: мой страх потерять Freeview
аналогичен страху разработчика VBA, который обдумывает миграцию
на OpenOffice.org. Не станут ли макросы, нажитые непосильным тру-
дом, годны только в помойку, и не придется ли писать все сначала?
на DVD
dim cell as object чение). Если вы используете формат VBA, у вас только один тип дан-
sheet=thisComponent.sheets(0) ных: значение. Разница невелика, но знать о ней надо.
cell=sheet.getCellByPosition(0,0) Как мы уже видели, большая часть функциональности VBA реа-
cell.string=”Hello World Again” лизуется с помощью функций простого формата. Иногда он совсем
End Sub прост. Например, чтобы очистить диапазон ячеек, вы можете исполь-
Вы можете сократить этот код до зовать либо
Sub writeToCell_minimum Range(“A1:E5”).ClearContents
thisComponent.sheets(0). либо
getCellByPosition(0,1). ThisComponent.Sheets.getByName(“Sheet1”).
string=”Last One” getCellRangeByName(“B1:E5”).clearContents( _
End Sub com.sun.star.sheet.CellFlags.VALUE _
На этих примерах вы, возможно, + com.sun.star.sheet.CellFlags.STRING _
разглядите одно из больших отли- + com.sun.star.sheet.CellFlags.DATETIME _
чий OOo Basic и VBA. OpenOffice.org + com.sun.star.sheet.CellFlags.ANNOTATION _
Скорая Basic содержит главный объект (thisComponent), и все наследуется от + com.sun.star.sheet.CellFlags.FORMULA _
помощь него. VBA работает с отдельными объектами (Application, ActiveSheet, + com.sun.star.sheet.CellFlags.HARDATTR _
ActiveCell и им подобными). Их использование может сделать код + com.sun.star.sheet.CellFlags.STYLES _
OOo безразличен читабельнее и проще в поддержке. + com.sun.star.sheet.CellFlags.OBJECTS _
к регистру (вне за- В некоторых случаях вы обнаружите, что OOo Basic и VBA делают + com.sun.star.sheet.CellFlags.EDITATTR)
висимости от под- одно и то же, просто используя разные слова. Например, взгляните Выбор остается за вами – бывают ведь и любители побарабанить
держки Excel VBA).
на: по клавишам. Знаю, знаю, можно вместо этого написать процедуру, но
Однако постарай-
тесь привыкнуть к ThisComponent.LockControllers ‘формат OOo чего ради, если работа уже сделана за вас?
использованию за- и
главных букв, что- Application.ScreenUpdating = False ‘формат VBA Испытайте на своем дистрибутиве
бы сделать код бо- Обе этих строки выполняют одно и то же: замораживают экран, это Короче, вы поняли, в чем штука. Если вы пишете на VBA, то и продол-
лее читабельным,
может быть полезно, если вы пишете в несколько ячеек. Чем сидеть и жайте себе писать. Если он для вас в новинку и вам понравился, вы,
например, пишите
openNewSheet смотреть, как поштучно происходит обновление ячеек, лучше увидать возможно, захотите узнать о нем побольше. В пакете вы помощи не
вместо полностью готовый экран, когда работа выполнена. И не забудьте раз- найдете. Поискав в файлах справки OpenOffice.org по ключу VBA, полу-
opennewsheet. За- морозить экран: чите информацию о том, как работает обычная редакция OOo – это мы
чем? А чтоб умень-
ThisComponent.UnlockControllers ‘формат OOo уже проходили: код VBA грузится как комментарии. Однако по Excel
шить вероятность
сделать ошибку. или VBA существует уже так много информации, что даже поиск в Google
Application.ScreenUpdating = True ‘формат VBA позволит найти полное руководство к действию.
Большинство случаев похожи на этот: та же функциональность, но Отсутствие документации свидетельствует о статусе проекта, а не о
все слегка упрощено благодаря новым объектам. Мы уже видели, как его качестве. В конце концов, в любом проекте бумажная работа всегда
работать с ячейками; а сейчас мы покажем, как устанавливать диапа- оставляется на потом.
зон значений в VBA и OpenOffice.org: Всегда следует помнить, что проект находится в стадии разви-
ThisComponent.CurrentController.ActiveSheet. тия. Вы можете обнаружить, что какой-то код не импортируется или
getCellRangeByName(“B2”).String = _ вызывает ошибки. Однако в основном это проявляется разве что при
“Используем Windows, когда так просто установить Linux” использовании редких и сложных функций.
и Здесь-то вы и можете помочь. Если вы уже используете SUSE 10.1
Range(“B1”).Value = “Что такое мазохизм” или планируете на него перейти, я ожидаю, что вы скажете: «А в чем
Если вы читали внимательно, то заметили, как вводится информа- проблема?» Ну и прекрасно. Однако если вы приверженец Debian или
ция в ячейки и диапазоны. В формате OOo Basic вы просто указываете Fedora, или любой другой системы, то проблемы будут – ну, то есть,
тип данных, которые собираетесь загрузить в ячейки (строка или зна- будут, если вам потребуется взаимодействие с Excel VBA. Что вы може-
те предпринять?
Ноэль сказал мне, что Novell работает над включением модели
VBA в исходный код стандартной поставки OpenOffice.org, и недав-
но основал проект продвижения работы Novell по VBA (http://vba.
OpenOffice.org) в состав OOo, что позволит большему числу пользо-
вателей Excel VBA перейти на открытое программное обеспечение.
«Наката Махо [Nakata Maho], разработчик OpenOffice.org, и Ханно
Мейер-Туров [Hanno Meyer-Thurow], разработчик Gentoo, помогли в
реализации и разработке API», – сказал он мне. Если вы решили уста-
новить модель VBA на вашем дистрибутиве, то найдете исходный код
на http://go-oo.org, а инструкции по скачиванию на http://wiki.services.
OpenOffice.org/wiki/Getting_It. Однако для экономии времени можно
сделать вот что:
export CVSROOT=’:pserver:anonymous@anoncvs.gnome.org:/
cvs/gnome’
cvs login
cvs -z3 checkout -P OOo-build
Вы обнаружите, что у вас создался каталог OOo-build. Полные
инструкции по сборке расположены по адресу http://wiki.services.
OpenOffice.org/wiki/Building. Процесс достаточно прямолинеен, а если
и сложноват, то полнота описания снижает вероятность совершения
(Рис. 3) На этот раз Calc не закомментировал код VBA, а принял его. ошибки. Так как OOo-build – действительно разрабатываемая версия,
Безопасность:
ЧАСТЬ 1: Первая линия обороны Linux-системы – механизм пользовательских паролей.
Д-р Крис Браун объяснит, как он работает и как ещё можно укрепить защиту системы.
Хэшируй это!
Начнем с начал: Linux – многопользовательская операционная систе-
ма. Когда вы входите в нее, вам предложат ввести имя пользователя
и пароль для подтверждения того, что вы – это вы. Выбор хорошего
пароля – ключевая часть сохранения безопасности системы.
Вот как работает механизм паролей в Linux. Информация о поль-
зовательских учетных записях хранится в двух файлах: /etc/passwd и
/etc/shadow. Файл passwd содержит имя пользователя, его числовой
идентификатор (User ID, UID) и домашнюю директорию, но (вопреки
названию) пароля-то в нем и нет: он укрылся в файле shadow (далее
мы увидим, зачем нужно разделение на два файла). Файлы passwd и
shadow параллельны – каждой учетной записи пользователя соответ-
ствует строка в одном файле и строка в другом. Когда пользователь
устанавливает пароль, пароль хэшируется, а результат хэширования
помещается в /etc/shadow.
«У
веренность», по словам Гекаты в трагедии Шекспира Хэширование похоже на шифрование, в том смысле что из
«Макбет», «несет погибель смертным». Она хотела ска- внятного текста получается полная белиберда; однако, в отличие от
зать, что чрезмерная вера Макбета в себя в конце концов шифрования, хэширование – операция необратимая. Каждый раз,
его погубит: ведь считая себя неуязвимым, он необоснованно риско- когда вы вводите пароль, он хэшируется, и полученный хэш срав-
вал. Прямо как вы! Вообразили, что ваш Linux неуязвим? Вы идете к нивается с тем, что прописан в /etc/shadow. Linux не хранит пароли
пропасти… в чистом виде.
Наш
Есть немало свидетельств, что работать в Linux куда безопаснее, В зависимости от вашей Linux-системы, у вас есть выбор из трех
эксперт
чем в Windows. Я сам видел цифры: Linux «из коробки» подхваты- путей хэширования:
Д-р Крис Браун вает заразу за три месяца, тогда как Windows – за три часа (см. www. 1 Функция crypt от Unix, болтающаяся в системе уже много лет.
независимый honeynet.org). Но это не повод относиться к безопасности своей сис- Команда crypt реализует алгоритм DES (Data Encryption Standard) и
инструктор по Linux темы спустя рукава. генерирует 13-символьный хэш.
с сертификатами 2 MD5, который, как вы имели шанс заметить, используется для вери-
В данной серии, состоящих из пяти уроков по безопасности Linux и
Novell и Red Hat,
имеет степень соответствующим открытым утилитам, мы рассмотрим, как обнаружи- фикации ISO-образов компакт-дисков и передаваемых по сети файлов,
доктора наук по вать уязвимости и прикрывать их. В первой части мы рассмотрим паро- а также в цифровых подписях. MD5 генерирует 34-символьный хэш.
физике элементарных ли и поговорим о контроле над привилегиями, даваемом sudo. 3 Blowfish (или, скорее, хэш-функция, выведенная по алгоритму
частиц, недавно Между безопасностью и удобством всегда существует компромисс. Blowfish), генерирующий 60-символьный хэш.
написал книгу о SUSE
для издательства
Машина, запертая в комнате, где нет подключения к сети, конечно, на- Все эти алгоритмы используют «соль» (salt) – случайное число,
O’Reilly. много сохраннее, чем машина с доступом в Интернет посреди проходно- генерируемое при установке пароля. Соль и указанный пользовате-
го двора, однако настолько же и бесполезнее. Попробуем облечь убыт- лем пароль комбинируются и хэшируются. Соль и хэш сохраняются в
ки от уязвимостей в наукообразный вид – получится такая формула: /etc/shadow. Если вы проверите свой /etc/shadow на системе, исполь-
зующей хэши MD5, то ясно разглядите соль и хэш. Например, в строке
Ожидаемые убытки = (вероятность успешного пароля $1$Ue1yZO5i$.6G/4l1AYliPdkTh1AkBi/ восемь символов после
вторжения) x (цена этого вторжения) $1$ – соль, а 22 после последнего $ – хэш. Мы увидим, что соль делает
взлом паролей гораздо труднее.
На этих уроках я буду говорить об уменьшении вероятности Отчасти стойкость пароля зависит от качества хэш-алгоритма.
взлома, но важно также уменьшить потери от успешного вторжения. Хороший хэш-алгоритм в теории делает невозможным вычисление
Стойкие пароли
пароля по хэшу. Конечно, зная хэш, вы всегда можете попробовать
метод грубой силы – хэшировать каждую возможную последователь-
ность из (допустим) восьми символов в надежде найти соответствие.
Аутентификация с хэшем
Но существует около 90 отображаемых ASCII-символов, а это значит,
Пользователь
что перебрать придется 90 в восьмой степени вариантов – то есть Соль Пароль указывает пароль во
4,304,672,100,000,000. время установки
Если ваша машина способна вычислять 10000 хэшей в секунду, то Соль и хэш запоминаются в
MD5
на весь перебор понадобится 13650 лет, а это, вероятно, дольше, чем файле shadow
вам хотелось бы ждать. Соль еще более усложняет взлом, делая невоз-
можным простое сравнение со списком хэшей для наиболее часто Соль Хэш
употребляемых паролей, так что взломщики могут искать совпадение
только с одним паролем за раз. Хэши
Наш анализ немного наивен, поскольку длина хэша тоже влияет на сравниваются
для
интервал поиска, но по крайней мере будьте уверены – атаки грубой идентификации
силой (перебором) слишком медленны. (Более глубокий анализ мож- пользователя
но найти в книге Брюса Шнайдера «Прикладная криптография», более
поверхностный – в «Цифровой крепости» Дэна Брауна). К сожалению, Хэш
реальный интервал поиска гораздо меньше, поскольку многие люди
выбирают для пароля простые слова или имена: любимого супруга или
собаки, или, того хуже, собственное имя пользователя. MD5
и регулярно запускайте взломщик, деленные пункты меню, и доступ к ним получат только знающие
выявляя тех, кто не слушает сове- пароль, причем пароль у каждого пункта может быть своим. Для
тов. Если вы хотите автоматизиро- этого ознакомьтесь с руководством по Grub, доступном на www.gnu.
вать принудительный выбор сильных org/software/Grub/manual.
паролей, рассмотрите как вариант
установку модуля PAM pam_passwdqc. Контроль доступа
Этому модулю можно поручить уста- Не сомневаюсь: вы уже знаете, что в Linux есть специальная учетная
новку паролей, а заодно настроить запись, называемая суперпользователем. Общепринятое имя для этой
его на проверку паролей по длине записи – root, однако ключевой момент – числовой пользовательский
и смешиваемости символов (верхне- идентификатор, UID: для root он равен нулю. Если вы вошли в систе-
го/нижнего регистра, цифр и других му как root, считайте все проверки пройденными, а все права доступа
знаков). Модуль доступен на www. вашими – вы всемогущи. Как модель безопасности, понятие root вызы-
openwall.com. вает примитивное чувство все-или-ничего.
К примеру, если вы хотите позволить кому-нибудь подстраивать
Установка пароля Grub системные часы, дайте ему пароль root, который позволит ему влезть
Взлом пароля – не единственный способ проникнуть в Linux-систе- в секреты своего начальника. С точки зрения ролевой системы, по
му. Большинство систем в качестве загрузчика используют Grub. Grub контролю доступа ролей только две: смертный человек и Бог. Для
достаточно гибок в настройке и включает опции вмешательства в про- потенциального взломщика получение пароля root на вашей систе-
цесс загрузки и редактирования команд загрузки (или даже добавле- ме – абсолютная победа.
ния новых команд). Команда sudo позволяет системным администраторам распре-
Grub умеет передавать аргументы ядру Linux, и один особо инте- делять ответственность между пользователями более гибко. Sudo
ресный трюк заключается в добавлении аргумента init=/bin/sh в конец контролируется конфигурационным файлом /etc/sudoers. Пытаясь
команды загрузки ядра. Этот аргумент скажет ядру, что вместо коман- произвести впечатление на хорошенькую девушку на вечеринке, я
ды init нужно запустить /bin/sh, и вы получите полный доступ к системе могу сказать что-то вроде «sudo предоставляет контролируемое
без ввода пароля суперпользователя. повышение привилегий» (мне никогда не удавалось стать душой
Атаки такого рода можно предотвратить, установив пароль на Grub. вечеринки). Или, говоря проще, он позволяет указать, кому что раз-
Скорая Тогда интерактивные опции Grub не включатся до тех пор, пока не будет решается делать.
помощь введен верный пароль. Пароль нужен не на загрузку согласно имеюще- Освоение sudo в значительной степени означает освоение синтак-
муся файлу конфигурации Grub, а на редактирование и интерактивный сиса файла /etc/sudoers. К сожалению, документация для sudoers
Хотя сильные ввод команд. описывает синтаксис файла с использованием расширенной формы
пароли трудно Пароль для Grub установить легко. Откройте файл /boot/Grub/menu. Бэкуса-Наура, нотации для формального описания грамматик: если вы
запомнить, но lst и добавьте в глобальные настройки (в начале файла) строку вроде не так давно получили ученую степень по компьютерным наукам, все
лучше брать такие, этой: будет отлично, в противном случае – оставьте надежду. Тем не менее,
чем слово из
словаря или имя
password --md5 $1$H06141$PTIpTGW7fNKspluqd1Mdk. несколько примеров прояснят ситуацию.
любимой. Мы опять видим MD5-хэш (вместе с солью), который мы уже В качестве простого примера допустим, что я хочу разрешить поль-
встречали ранее. Есть несколько способов его генерации. Во-первых, зователю harry изменять системное время и дату из командной строки,
можно просто скопировать хэш существующей учетной записи из фай- используя команду date. Команда date позволяет любому пользовате-
ла /etc/shadow. Естественно, тот, для которого вы знаете пароль. Во- лю, запустившим ее без аргументов, узнать текущее время и дату:
вторых, можно запустить Grub из командной строки и ввести коман- $ date
ду md5crypt. Программа попросит вас ввести пароль и выведет хэш. Thu Sep 15 07:56:52 BST 2006
Диалог выглядит так: А вот если вы попытаетесь изменить время и дату, не будучи root,
# Grub это вам не удастся:
GNU Grub version 0.95 (640K lower / 3072K upper memory) $ date 09150755
Grub> md5crypt date: cannot set date: Operation not permitted
Password: ********* Thu Sep 15 07:55:00 BST 2006
Encrypted: $1$H06141$PTIpTGW7fNKspluqd1Mdk. Чтобы harry мог изменять дату и время, вы должны сообщить sudo,
Grub> quit что на запуск date у него есть права root. Для этого поместите такую
(Теперь можно вставить этот хэш в /boot/Grub/menu.lst) строку в /etc/sudoers:
Если вы теперь загрузите машину, имея эту строку в файле конфи- harry snowhite=(root) /bin/date
гурации Grub, то сможете только выбирать ОС из предопределенных в В терминологии sudo это называется спецификацией привилегий.
menu.lst, клавишами «вверх» и «вниз», а для других действий придется Давайте рассмотрим каждое поле:
нажать p и ввести пароль. harry Первое поле – учетная запись, которой мы даем особые
В мультизагрузочной системе можно также заблокировать опре- привилегии.
snowhite Второе поле – имя машины, к которой имеют отношения
эти привилегии. Указание конкретного имени позволит вам
держать данные sudoers на целую когорту машин в одном
файле (через NFS, например), и настройка будет у каждой
Атаки физического доступа своя. Часто в этом поле можно видеть ALL.
=(root) Эта запись указывает пользователя, чьи права используются
Перехват процесса загрузки Grub требует физического доступа к машине, и
для запуска команд.
если этот доступ есть, то есть и способы обхода пароля. Например, кнопка
Reset вашего компьютера заслуживает бирки «Для root-доступа нажимать /bin/date Последнее поле – имя команды, которую может запускать
здесь». Возьмите LiveCD с диска к нашему журналу и загрузитесь с него, да даже пользователь. Полный путь указывать обязательно.
просто выберите спасательный (rescue) режим загрузки штатной ОС со стандартного носителя – и в Для редактирования файла sudoers вы должны быть root и исполь-
любом из этих случаев у вас будет полный доступ ко всей файловой системе. В конце концов, если и зовать при этом команду visudo (а не обычный редактор). Наш друг
это не удалось, всегда можно взять отвертку и унести жесткий диск в кармане. visudo заблокирует файл от одновременных обновлений и проверит
его синтаксис перед сохранением.
Ролевая игра
Давайте рассмотрим другие особенности sudoers. Ключевое слово ALL
используется в некоторых местах файла. Например:
isaac ALL=(ALL) ALL
Эта строка говорит о том, что пользователь isaac может запускать QPaMaT (живет на http://qpamat.berlios.de) – удобная утилита поддержки паролей на базе Qt,
любую программу от лица любого пользователя на любой машине позволяющая управлять всеми паролями как бы из одного центра.
(конечно, если он укажет свой пароль или пароль соответствующего
пользователя на нужной машине).
Вы также можете определять псевдонимы (alias). Псевдонимы – это Вы можете рассматривать USERMGMT как роль (хотя в докумен-
просто именованные списки пользователей, машин или команд. Сами тации к sudo этот термин не используется), определяющую команды,
по себе псевдонимы ничего не делают, зато они облегчают написание которые играющий эту роль может выполнить.
привилегий для множества пользователей. Покажу вам на примере. Можно определять псевдонимы пользователей (имя перечня поль-
Пусть вы хотите дать определенному пользователю права на управ- зователей) и присвоить им роли:
ление пользовательскими учетными записями. Для этого есть мно- User_Alias ADMINS tom,joe,sue
жество утилит – useradd, groupadd и т.д. В sudoers вы можете опреде- ADMINS ALL=(root) USERMGMT
лить командный псевдоним (назовем его USERMGMT): Таким способом мы объявили, что tom, joe и sue могут играть роль
Cmnd_Alias USERMGMT=/usr/sbin/useradd,/usr/sbin/usermod,\ USERMGMT.
/usr/sbin/groupadd,/usr/sbin/groupmod,\ Так же можно определить и список машин, используя диапазон IP-
/usr/sbin/userdel,/usr/sbin/groupdel адресов или имена хостов:
Обратите внимание на символ \, означающий, что строка имеет про- Host_Alias LOCALNET 192.168.0.0/255.255.255.0
должение. Определив псевдоним, мы можем дать пользователю isaac Host_Alias TRUSTEES snowhite,happy,sneezy
возможность запускать любую из этих программ таким образом: Теперь мы можем дать определенным пользователям привилегии
isaac ALL=(root) USERMGMT только на определенных машинах:
ADMINS TRUSTEES=(root) USERMGMT
Что ж, на сегодня хватит. Вы узнали о том, как работает механизм
паролей в Linux, и, надеюсь, до вас дошло, почему необходимо приду-
мывать сильные пароли. Вы увидели, как можно защититься от триви-
альной атаки с физическим доступом, установив пароль на Grub. Вы
узнали, как избежать раздачи пароля root кому попало и использовать
sudo для того, чтобы позволить определенным пользователям запус-
кать определенные программы с ограниченными привилегиями. LXF
Скорая
помощь
Никогда не
выдавайте пароль
root. Если кому-то
понадобилось
ограниченное
повышение
Наши Live-дистрибутивы на вид безобидны, но при физическом привилегий,
доступе к вашей машине кто угодно может получить через них используйте sudo.
привилегии root.
Через месяц Мы поотключаем ненужные службы и закрутим гайки прав на работу с файлами.
Ogre: Освещаем
ЧАСТЬ 3: Как превратить травянистый холм в крепость в стиле Тюдоров и создать
солнце и луну всего на четырех страницах? У Пола Хадсона есть ответ...
В
этот урок мы включили много интересного: наша задача – взять объекта, которая позволит позиционировать дом в пространстве). Мы
пустой ландшафт из прошлого номера, построить дом на плато, ставим дом раз навсегда, двигаться ему не надо, поэтому просто объ-
добавить света и тени, и, самое интересное, позволить игроку явим Entity в chad.h. Добавьте строку в chad.h сразу за определением
гулять по дому. Легко? Ой, нет. А моя задача – как раз облегчить рабо- m_OceanFlowNum:
ту, поэтому приготовьтесь разогнать игру до скорости света! Entity* HouseEntity
Мы загружали ландшафт в игру Висельник Чед с помощью файла
Наш terrain.cfg, поставляемого вместе с медиа-пакетом Ogre. Всего одной
эксперт строкой кода создается живописная местность, где можно побродить,
Пол Хадсон но остаются две проблемы: на границах ландшафт обрывается в пус-
написал три книги тоту и нет места, где можно поставить дом. Поэтому нам надо сначала
по Linux и одну по
PHP, он участвует отредактировать файл ландшафта, пусть запляшет под нашу дудку.
в двух Переместите файл terrain.cfg из каталога media в ваш главный
GPL-проектах каталог, где размещен код. Затем переместите файлы terrain_detail.jpg,
для Mono terrain.png и terrain_texture.jpg из media/materials/textures в ваш глав-
на SourceForge.
ный каталог. Учтите, я сказал «переместите», а не «скопируйте» – не
Пол любит Emacs.
оставляйте оригиналы там, где они находятся, не то они будут читать-
ся вместо ваших собственных файлов. Эти четыре файла определяют,
как выглядит и ведет себя ландшафт.
Используемый нами менеджер сцены, ответственный за обработ-
ку неба и земли, создает ландшафт по двумерной карте высот (это
полутоновой план ландшафта, на котором наивысшие точки показаны
белым цветом, а самые низкие – черным). В файле terrain.cfg указана
карта высот terrain.png. Действительный цвет определяется файлом Тюдоровский домик днем – дымоход отбрасывает тень на крышу,
terrain_texture.jpg, который «натягивается» на весь ландшафт. Наконец, а внизу слева тень от ландшафта.
Месяц назад Мы научили нашего героя двигаться и добавили реалистичный эффект воды.
новый дом
на
Код из учебника
Небесное вторжение
Сейчас свет в нашей сцене рассеянный, и у сцены скучный и безжиз-
ненный вид. Добавлю-ка я немного простых источников, чтобы вы При вызове m_SceneMgr->setShadowDebugShadows(true) Ogre покажет, куда предметы
увидели, как работают свет и тени. Упор сделан на слове «простые», отбрасывают тени. Дом отбрасывает тень и от солнца, и от луны.
потому что Ogre плоховато работает с освещением неба и земли.
Потребуется четыре переменных для работы со светом в chad.h; мещался по ландшафту. Также необходимо включить тени. У Ogre есть
добавим их в конец класса CChadGame: три типа теней и три типа света. Разница между тенями заключается
Light* m_SunLight; в скорости: тень низкого качества прорисовывается быстрее всего.
Light* m_MoonLight; Первый тип – SHADOWTYPE_TEXTURE_MODULATIVE, использующий
double m_SunY; простую текстуру для создания теней в нужных местах. На практике
double m_SunZ; тени получаются грубоватые – сгодятся только для тех, у кого сла-
Да, мы собираемся создать два света: один для солнца, второй бая видеокарта, все остальные в восторг не придут. Следующий по
для луны. Для получения простого эффекта смены дня и ночи нам качеству тип – SHADOWTYPE_STENCIL_MODULATIVE. Тени выглядят
надо вращать два источника света по кругу, чтобы свет плавно пере- более привлекательно, но создаются в один проход, поэтому резуль-
тат не идеален. Наконец, SHADOWTYPE_STENCIL_ADDITIVE. Тут тени
выглядят превосходно, для каждого источника света построение осу-
Зачем нужны нормали ществляется за отдельный проход, поэтому пересечение теней от двух
источников будет выглядеть темнее, чем остальные части тени. Как вы Скорая
3D-графика составляет рисунки из множества многоугольников, помощь
понимаете, это довольно сложно, но заманчиво!
обычно треугольников, потому что они проще. Но как Ogre узнает, Каждый из трех типов источников характеризуется своим способом
в каком направлении смотрит треугольник? В нашем понимании, у освещения. Точечный источник излучает свет как Солнце – одинаково Игра Висельник
плоской фигуры две стороны, но используется-то всего одна, поэто- Чед написана на 64-
во всех направлениях, из определенной точки. Источник направлен- битной машине, но с
му необходимо сообщить Ogre, где у треугольника верх. Благодаря
ного света излучает свет в одном направлении и не имеет начальной использованием 32-
этой информации Ogre сможет правильно освещать объекты. Здесь
и пригодится нормаль: это вектор, перпендикулярный поверхности и точки. С нашей позиции на Земле солнце выглядит направленным битной ОС, поэтому
источником, потому что мы видим его свет, исходящий из одного мы не гарантируем,
направленный вверх. что игра пойдет
При программировании на направления, но не видим его в других направлениях. Наконец, сущес-
на 64-битной ОС.
чистом OpenGL нам пришлось твуют источники узконаправленного света, типа софитов: у них есть Однако если у
бы бесчисленное множест- начальная точка, направление, их свет слабеет с расстоянием, ширину вас 64-битные
во раз вызывать функцию Нормаль угла освещения вы назначаете сами. версии библиотек,
glNormal(), которая определя- например, zziplib,
Оба наших источника, солнце и луна, находятся очень дале-
ет нормаль для последующих вам, возможно,
ко, поэтому они могут считаться источниками направленного света. повезет больше.
векторов. Но в Ogre доста-
Не будем пренебрегать деталями – выберем опцию SHADOWTYPE_ Если у вас все-таки
точно отредактировать terrain.
STENCIL_ADDITIVE, чтобы тени хорошо смотрелись. В последующем есть проблемы,
cfg и установить VertexNormal попробуйте добыть
на Yes, чтобы Ogre сам вы- Плоскость коде немного приглушим рассеянное освещение, чтобы заметнее ста-
последнюю версию
числял нормали к ландшафту. ли дневной и ночной источники света.
DevIL и запустить
Благодаря этим нормалям наш Вот код – поместите его в метод createScene(): ldconfig от имени
ландшафт будет правильно ос- m_SceneMgr->setAmbientLight( ColourValue(0.35, 0.35, 0.35) ); root.
вещаться, потому как Ogre зна- Нормаль сообщает Ogre, где у m_SceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_
ет лицевую сторону каждого треугольника верх, это позволяет ADDITIVE);
треугольника. правильно осветить треугольник. m_SunLight = m_SceneMgr->createLight(“Sun”);
m_SunLight->setType(Light::LT_DIRECTIONAL);
m_SunLight->setDiffuseColour(1.0, 1.0, 1.0); BSP означает binary space partition [двоичное разбиение пространс-
m_SunLight->setSpecularColour(1.0, 1.0, 1.0); тва] и позволяет очень быстро загружать и обрабатывать закрытые
m_SunLight->setDirection(Vector3(0, sin(m_SunY), sin(m_ пространства. Карты BSP используется во многих играх, главным обра-
SunZ))); зом в тех, что используют движок Quake, включая Jedi Knight, Soldier of
m_MoonLight = m_SceneMgr->createLight(“Moon”); Fortune, Half-life. Проблема с BSP состоит в том, что он не умеет хоро-
m_MoonLight->setType(Light::LT_DIRECTIONAL); шо обрабатывать открытые пространства (включая наш ландшафт),
m_MoonLight->setDiffuseColour(0.3, 0.3, 0.5); поэтому текущий менеджер сцены тоже придется оставить.
m_MoonLight->setSpecularColour(0.0, 0.0, 0.0); Добавление нового менеджера сцены вводит интересные осложне-
m_MoonLight->setDirection(Vector3(0, -sin(m_SunY), sin(m_ ния в наш игровой движок. Во-первых, необходимо отредактировать
SunZ))); файл resources.cfg, чтобы использовался файл карты Quake 3. Сотни
Привести луну и солнце в движение можно, отредактировав метод карт доступны бесплатно через сеть, но на самом деле демо-версии
frameStarted(), чтобы метод setDirection() вызывался для каждого Ogre уже поставляются с очень красивой картой Chiroptera (досту-
источника. Необходимо также изменить переменные m_SunY и m_ па для скачивания по адресу http://simland.planetquake.gamespy.com/
SunX, заставив их медленно увеличиваться. Вставьте этот код в начало pages/q3maps/chiroptera.htm), ею мы и воспользуемся.
метода frameStarted(): Во-вторых, необходимо разделить методы createScene()
m_SunLight->setDirection(Vector3(0, sin(m_SunY), sin(m_ и frameStarted() на CreateIndoorScene(), createOutdoorScene(),
SunZ))); frameStartedInside(), frameStartedOutside(). Проще всего это сде-
m_MoonLight->setDirection(Vector3(0, -sin(m_SunY), -sin(m_ лать, переименовав createScene() и frameStarted(), например, как
SunZ))); createOutdoorScene() и frameStartedOutside(), а затем создав заглушки
m_SunY += 0.001; для createIndoorScene() и frameStartedIndoor(). Также потребуется объ-
m_SunZ += 0.001; явить новые методы в chad.h.
Теперь вы должны увидеть, что здание отбрасывает тень. Сделав это, добавьте строчку в chad.h в конце класса CChadGame:
int scenemanager;
Похождения бравого солдата Квейка Переменная будет показывать, снаружи мы или внутри. Теперь
Вы помните, что я собирался строить «Тюдоровскую крепость», но можно написать новый метод frameStarted() для автоматического
пока что мы имеем только невинного вида домик на плоской траве. На вызова нужного «подметода», нечто вроде такого:
крепость не похоже, правда? Сейчас мы это изменим, соорудив внут- bool CChadGame::frameStarted(const FrameEvent& evt) {
ри заведомо неприветливую обстановку. На последних трех уроках мы switch (scenemanager) {
играли в песочнице менеджера сцен Ogre для открытого ландшафта, case ST_EXTERIOR_CLOSE:
но если наши персонажи намерены разгуливать по зданию, потребует- return frameStartedOutside();
ся еще один менеджер сцены – BSP. break;
case ST_INTERIOR:
return frameStartedInside();
break;
Создание карт высот в Gimp }
return true;
Карты высот – это полутоновые текстуры, которые сообщают Ogre, как надо рисовать ландшафт, }
где белые точки – это максимальные высоты, а черные – минимальные. Ландшафт, с которым Переменную scenemanager необходимо переустанавливать, как
мы работали на последних двух уроках, был уже заготовлен в Ogre, и выглядел он не особо только происходит смена типа сцены. Для открытого пространства необ-
хорошо, поэтому мы использовали Gimp и подредактировали края таким образом, чтобы они
ходимо добавить эту строку в начале метода createOutdoorScene():
плавно уходили в море. Используя Gimp, я обнаружил, что лучше всего менять высоту с
scenemanager = ST_EXTERIOR_CLOSE;
помощью Кисти – вот как она настраивается: в окне Редактор кисти выберите круглую форму и
наименьшее значение жесткости, затем измените радиус до нужного вам значения. Установите Метод frameStartedInside() новый, но ничего особенного не делает –
цвет кисти черным, а затем превратите ваш ландшафт в остров. Для создания площадки я в данный момент он должен представлять урезанную версию метода
посадил большую светло-серую кляксу в правом верхнем углу карты. Малое значение жесткости frameStartedOutside() и обрабатывать простой ввод от клавиатуры. Вот
позволяет сделать плавный переход от серого к черному, соответствующий на ландшафте пример подобного кода:
пологому холму, куда будет взбираться наш герой. bool CChadGame::frameStartedInside() {
m_InputReader->capture();
if(m_InputReader->isKeyDown(KC_ESCAPE)) return false;
Vector3 translateVector = Vector3::ZERO;
float playerspeed = m_Player->getSpeed();
if (m_InputReader->isKeyDown(KC_W)) translateVector.z = -
playerspeed * 5;
if (m_InputReader->isKeyDown(KC_S)) translateVector.z =
+playerspeed * 5;
if (m_InputReader->isKeyDown(KC_A)) translateVector.x = -
playerspeed * 5;
if (m_InputReader->isKeyDown(KC_D)) translateVector.x =
+playerspeed * 5;
if (m_InputReader->isKeyDown(KC_F1)) createIndoorScene();
if (m_InputReader->isKeyDown(KC_F2)) createOutdoorScene();
m_Camera->moveRelative(translateVector);
return true;
}
Слева представлена исходная карта высот, справа её отредактированный вариант: по
Вы заметите, что переменная playerspeed умножена на пять – дело
краям зачернено, чтоб получился остров, а светлое пятно – площадка для нашего дома.
в том, что карта Quake огромна, и прогулка с прежней скоростью пре-
вратилась бы в вечность. Если такое решение вы находите примитив-
Greasemonkey:
Не чесались ли у вас руки улучшить даже самые отличные web-сайты?
Greasemonkey научит сайты работать так, как хочется Нику Вейчу, а то и вам.
Flickr позволяет пользователям помечать свои фотографии, то
есть назначать для них ключевые слова-тэги, по которым затем мож-
но выполнять поиск. Но со страницы каждой конкретной фотографии
можно искать только по одному ключевому слову за раз. Если вы круп-
ным планом (макро) засняли цветок наперстянки и выбрали ключевые
на DVD слова «природа макро наперстянка» (“nature macro foxglove”), то найти
похожие кадры, щелкая на метки по отдельности, будет сложновато. Я
Firefox 1.5.0.4
решил добавить возможность искать по всем имеющимся ключевым
Greasemonkey 0.6.4
словам одновременно. Это хороший тестовый пример, поскольку нам
потребуется считывать данные со страницы и записывать их обратно.
Начнем с чтения.
Фокус с Flickr
Требуется найти на странице Flickr, где помещено наше фото и инфор-
мацию о ключевых словах. У JavaScript хватает методов обработки
DOM (внутренней иерархии HTML-документа), и все, что нужно сде-
лать – это посмотреть, где в дереве документа находится нужная
информация и как однозначно отличить ее от прочего. Проще все-
го использовать для этих целей встроенный в Firefox браузер DOM.
Откройте его в Tools – меню инструментов Firefox – и пощелкайте по
нему, чтобы увидеть дерево иерархии. Firefox любезно покажет мига-
ющую красную рамочку вокруг того элемента, который вы выбрали в
DOM Inspector.
З
адача этого месяца ерундовая: всего-навсего создать собствен- Похоже, что нам повезло. Список ключевых слов на странице фото-
ный web-браузер, способный заново интерпретировать обвет- графии хранятся в элементе <div> и помечен как thetags. Это уникаль-
шавшие сайты и заставить их слушаться наших команд. ный идентификатор. Таким образом, мы можем просто перетряхнуть
Думаете, пахать придется серьезно? Ну, мы ж не слабаки! Да и все элементы <div> в документе, пока не найдем нужный. Вот кусочек
не забывайте: фишка нашей серии в том, что черная работа не для JavaScript-кода, который это делает:
нас, главное, чтоб она была сделана. Так что мы и тут извернемся, как var divs, tagsdiv
истые хакеры. divs = document.getElementsByTagName(‘div’);
Наш Firefox – хороший браузер, более чем хороший. Его нужно лишь //Мы сохранили все элементы div как объекты
эксперт чуть-чуть «обработать напильником», например, создать специаль- //в массиве под названием ‘divs’
Ник Вейч ное расширение, позволяющее при помощи заготовленного сценария for (var i=0; i<divs.length; i++) {
Злоупотреблявший
корректировать взятый HTML... Но нам не придется делать даже этого, if(divs[i].id == ‘thetags’){
интернетом еще с тех
пор, как он ходил поскольку – спасибо Аарону Брудману [Aaron Broodman] – на свете tagsdiv=divs[i];
пешком под стол, есть Greasemonkey! Итак, первый этап нашего хитрого плана завершен: }
наш главный мы превратили задачу по написанию миллионов строк кода в задачу }
редактор собирается состряпать небольшой сценарий JavaScript. Ура! Здесь использован метод, позволяющий создать массив всех эле-
любым способом
Хорошо, но прежде чем приступать к созданию сценария, нуж- ментов <div>, а затем искать в нем тот, что нам требуется (thetags).
заставить сайты
работать так, как они но добыть Firefox и Greasemonkey (и то и другое находится на при-
должны, черт побери! лагаемом диске, но проще скачать их прямо из Сети, с сайта http://
greasemonkey.mozdev.org). Кстати, в дальнейшем вам не повредит Не знаете JavaScript?
некоторое знакомство с JavaScript, так что взгляните на врезку справа.
Web-приложение, которое я собираюсь улучшать – менеджер Не беда: если вы хоть раз использовали какой-нибудь язык сценариев,
фотографий Flickr, а вы можете выбрать любой другой сайт на ваш то освоитесь очень быстро. Да и занимаемся мы простейшими
вещами – чтением и записью в DOM. Есть много книг и учебников,
вкус. Хотя было бы неплохо, если бы этот сайт хорошо поддерживался
позволяющих узнать больше, а можно просто взять и разобрать
и имел четкую, понятную иерархическую структуру страниц – напри-
несколько готовых скриптов Greasemonkey.
мер, попытайте счастья с новостным сайтом BBC, с Amazon или с Play. JavaScript: The Definitive Guide David Flanagan (O’Reilly)
Я выбрал Flickr потому, что здесь есть простор для добавления новых http://www.htmlgoodies.com/primers/jsp
функций, а также потому, что визит на этот сайт – повод оставить http://developer.mozilla.org/en/docs/DOM
парочку глумливых комментариев к чужим фото.
Обновим Сеть!
Это не самый эффективный способ, но он годится в качестве приме-
ра, и его проще модифицировать для ситуаций, когда требуется найти
более одного отмеченного элемента [в противном случае можно было
бы использовать код var tagsdiv=document.getElementById(‘thetags’), –
прим.ред.]. Более быстрый метод мы покажем в следующей части.
<div> вообще-то содержит много всего – заголовок, ссылки на
иконки, плюс еще по одному <div> на каждый отдельный тэг. И снова
мы можем, перебором в цикле, построить список тэгов. Извлечение
собственно текста метки достигается выборкой HTML-элемента из
нужного узла (какого именно – видно по DOM-структуре). А потом
соберем полученные метки в список, который станет основой запро-
са, который мы передадим обратно на страницу в следующей фазе.
Сосредоточьтесь, привожу этот кусок кода:
if (tagsdiv) {
tagsdiv = tagsdiv.getElementsByTagName(‘div’);
tagslist =’’;
for (var i = 0; i< tagsdiv.length; i++){
if (i>0) {
tagslist = tagslist + ‘+’;
}
tagslist = tagslist + tagsdiv[i].childNodes[3].innerHTML;
}
} DOM Inspector великолепен: не только отображает дерево документа (где скрывается моя
Метод childNodes любого из узлов дерева содержит список всех наперстянка), но и подсвечивает соответствующие области на странице.
дочерних узлов, к которым мы можем обращаться по номерам, чтобы
найти нужный и запросить для него значение innerHTML, в котором ко HTML-текста обратно на страницу. Разработчики JavaScript, видимо, Скорая
содержится HTML-представление этого узла. Оно полезно для прояс- предвидели такую необходимость, и припасли множество встроенных помощь
нения непонятных моментов, но проследите за тем, чтобы запросить функций. Первый вопрос, который нужно решить – это в какое место
его для нужного узла, иначе получите описания совершенно посто- страницы поместить наш текст. Подходящим местом выглядит список Если вы не
ронних тэгов. с информацией о снимке в правой части страницы, ниже списка клю- слишком уверены
чевых слов. Вернувшись в DOM-браузер, мы увидим, что это первый на в своих талантах
Вернем долги странице элемент ul. Так что мы просто создаем новый элемент списка JavaScript-
программиста,
Итак, мы сумели достать нужную информацию из документа. Ура! и вставляем его в нужное место: воспользуйтесь
Настало время поиграть с полученным результатом и записать немнож- var searchtagLi = document.createElement(“li”); готовым
searchtagLi.setAttribute(“class”,”Stats”); сценарием
searchtagText = ‘Search <a href=”http://www.flickr.com/search/ с домашней
страницы
?w=all&q=’+tagslist+’”style=”text-decoration: none;”>similar tags</a> on
Greasemonkey,
Flickr’; там их уйма. Они,
searchtagLi.innerHTML = searchtagText; как правило,
insertpoint = document.getElementsByTagName(“ul”)[0]; прекрасно
документированы
insertpoint.appendChild(searchtagLi);
и содержат много
Метод setAttribute используется для указания, какого класса дол- ценных находок.
жен быть наш новый элемент, чтобы по CSS-стилю не отличаться от
своих соседей.
Текст, который мы добавили – всего лишь ссылка на функцию про-
двинутого поиска Flickr, которой мы, вместо одного ключевого слова,
передаем собранный нами список. Легко видеть, что потом использо-
ван метод innerHTML для записи данных в объект. Объект insertpoint
указывает на ранее найденный элемент ul, так что остается только
вызвать метод appendChild для добавления его в дерево (причем в
самый конец списка, что очень правильно).
Вот и все, и этого достаточно. Чтобы загрузить скрипт Greasemonkey,
просто активируйте это расширение и укажите браузеру на файл
(назвав его как-нибудь вроде something.user.js) – Greasemonkey обна-
ружит файл и позволит вам его загрузить. LXF
Миссия закончена. Небольшая хитрость – и наша добавка
(выделена синим) выглядит так, словно и всегда была здесь.
Модули KDE
ЧАСТЬ 7: Модули, расширения, расширения расширений.... всKIPIте от напряже-
ния и нетерпения под присмотром Андрея Боровского!
делает что-то одно. Мы оставим в стороне вопрос о том, нужно ли
писать модули, и ответим на вопрос, как это можно сделать. Модули
KParts расширяют возможности компонентов KParts, то есть, с точки
зрения основной программы Konqueror, модули являются расширени-
ями расширений. Поддержка модулей KParts возможна, естественно,
не только в Konqueror, но и в любом приложении, поддерживающем
соответствующие компоненты KParts.
Возможно, на этом этапе у читателя возникает вопрос – а зачем
вообще нужны модули Konqueror? Необходимость в механизме моду-
лей была бы очевидна, если бы Konqueror был закрытым приложени-
ем, однако, при наличии исходных текстов, мы можем вносить изме-
нения непосредственно в код компонентов KParts. Это верно, и тем не
менее модули оказываются полезны и в случае открытого приложения.
Главное преимущество использования модулей заключается в лучшей
структурной организации кода. Нам легче писать и отлаживать модули,
связанные с приложением с помощью строго определенного интер-
фейса, нежели вносить изменения в исходные тексты приложения,
написанного другими программистами. К этому следует добавить и
чисто организационный момент – для того, чтобы изменения, сделан-
ные вами в приложении, попали в его основную версию, они должны
быть одобрены другими разработчиками, тогда как в случае с моду-
лями у вас есть возможность самостоятельно решить, какие функции
являются полезными, а какие – нет.
Что же представляет собой модуль KParts с точки зрения взаимо-
действия с приложением? Модуль – это динамическая библиотека
Модули KDE (файл *.so), которая загружается приложением, использующим компо-
Модули KDE (KDE plugins) представляют собой логическое разви- нент KParts. Модуль может добавлять собственные элементы управле-
тие идеи объектно-ориентированной оболочки. Читатели этой статьи ния в меню и на панель инструментов приложения. В некоторых случаях
наверняка знакомы с базовыми концепциями модулей как средств рас- модули также изменяют содержимое главного окна приложения (кото-
ширения уже существующих приложений. Механизм модулей позволя- рое в этот момент управляется соответствующим компонентом KParts).
ет нам не умножать сущностей (приложений) без необходимости вся- В качестве примера мы напишем модуль для компонента KHTMLPart.
кий раз, когда нам требуется новая функциональность. По самой своей Как нетрудно догадаться, этот компонент используется для просмотра
природе модули тесно связаны с теми приложениями, чьи возможнос- страниц HTML. Фактически KHTMLPart представляет собой полно-
ти они расширяют. Нельзя написать «просто модуль». Мы рассмотрим ценный встраиваемый HTML-браузер с поддержкой JavaScript. Класс
программирование модулей для наиболее популярных приложений KHTMLPart является потомком класса KParts::ReadOnlyPart, то есть
KDE и начнем с написания модуля для компонента KParts. он предназначен для просмотра, а не для модификации открывае-
мого файла. Наш модуль будет сохранять открытую в компоненте
K-Части KHTMLPart HTML-страницу в простом текстовом формате.
Модули KParts широко применяются, например, в браузере Konqueror. Модуль для KHTMLPart удобен в качестве примера потому, что в
Сами компоненты KParts представляют собой еще один способ рас- KDevelop есть шаблон проекта такого модуля. В окне Создать новый
ширения возможностей приложения. Примером их использования проект (Рис. 1) мы выбираем пункт KHTMLPart Plugin. Назовем наш
являются встроенные в Konqueror утилиты просмотра файлов различ- проект «textsaver» (полные исходные тексты модуля вы найдете на
ных типов. Каждый раз, когда Konqueror открывает какой-либо файл диске, в файле textsaver.tar.gz). Наш модуль, как таковой, состоит
для просмотра, он загружает соответствующий компонент, который только из двух классов – Plugintextsaver (основной класс модуля) и
встраивается в интерфейс браузера и отображает содержимое файла. textsaverFactory (вспомогательный класс). Оба класса реализованы в
Благодаря динамическим компонентам KParts, Konqueror выполняет файлах plugin_textsaver.h и plugin_textsaver.cpp. Прежде чем вносить
функцию универсального просмотрщика файлов, сохраняя при этом изменения в классы, добавим в файл plugin_textsaver.cpp дополни-
простой дизайн и небольшие размеры основного приложения. Следует тельные заголовочные файлы:
отметить, что универсализм Konqueror иногда подвергается критике, include <stdio.h>
поскольку в Unix традиционно преобладает другой подход – использо- #include <kfiledialog.h>
вание большого числа независимых приложений, каждое из которых #include <qcstring.h>
<ToolBar name=”extraToolBar”>
<Action name=”plugin_action”/> Модули KIPI
</ToolBar> Структура модуля обычно настолько тесно связана со структурой
</kpartplugin> приложения, для которого этот модуль предназначен, что изучение
Те, кто читал предыдущую статью, не найдут в этом тексте ничего программирования модулей имеет смысл только в контексте изуче-
неожиданного. Мы регистрируем два элемента управления – для меню ния разработки для конкретного приложения. Однако из этого прави-
и панели быстрого доступа. Команда вызова нашего модуля (Save as ла есть и исключения. Примером модулей, которые могут использо-
Text) будет расположена в меню Tools (Сервис), хотя, возможно, сле- ваться для работы с несколькими разными приложениями, являются
довало расположить ее в меню Файл. Кнопка команды по умолчанию модули KIPI. KIPI (KDE Image Plugin Interface – интерфейс KDE для
будет расположена на дополнительной панели инструментов, которая обработки изображений) – это проект, целью которого является
(опять-таки, по умолчанию) не видна. создание единого интерфейса модулей для основанных на KDE при-
Нам осталось скомпилировать и установить наш модуль. Обычно ложений, предназначенных для просмотра и редактирования растро-
модули устанавливаются в общую системную директорию, например, в вых изображений, – Digikam, KimDaBa (ныне KPhotoAlbum), ShowFoto
$KDEDIR/lib/kde3/, так что для установки понадобятся права root. При и Gwenview. Хотя «KIPI» представляет собой аббревиатуру, на сайте
отладке модуля следует учитывать, что текущая версия модуля кэши- extragear.kde.org/apps/kipi/ используется написание «Kipi». Мы будем
руется оболочкой Konqueror (и даже ldconfig не помогает), так что для писать KIPI, дабы читатели понимали, что это аббревиатура, а не рус-
того, чтобы увидеть изменения, внесенные после повторной установки ский глагол, написанный транслитом. Модули, соответствующие тре-
расширения, вам, возможно, придется перезапускать оболочку. бованиям KIPI, должны работать одинаково во всех перечисленных
Скомпилируйте и установите модуль, после чего запустите новый приложениях. Думаю, не нужно распространяться о том, насколько
экземпляр Web-браузера (но не файл-менеджера) Konqueror или это упрощает жизнь программиста, стремящегося к тому, чтобы его
откройте HTML-страницу в файл-менеджере. В меню Сервис вы уви- разработками могли пользоваться поклонники всех графических
дите команду, вызывающую наш модуль (Рис. 2). Выше уже было ска- программ KDE. Конечно, не все модули могут иметь смысл в контекс-
зано, что система следит за тем, чтобы наш модуль не был вызван для те каждого приложения. Это становится очевидно, если учесть, что в
неподходящего компонента. Это выражается в том, что соответствую- то время как одни приложения KDE (например, Gwenview) обладают
щая команда меню видна тогда, когда мы открываем HTML-страницу, и исключительно функциями просмотра, то другие (Digikam) включа-
не видна в остальных случаях. ют еще и базовые функции редактирования. Если же все программы
Если при просмотре сохраненной нашим модулем страницы в каком- будут эволюционировать в одном и том же направлении, система
нибудь текстовом редакторе вы увидите нечто странное, то не спешите утратит разнообразие и само наличие нескольких независимых про-
ругаться. Используемая нами утилита html2text, во-первых, пытается грамм потеряет смысл.
сохранить расположение текста, соответствующее его расположению на В отличие от других интерфейсов KDE, интерфейс KIPI сравнитель-
странице HTML, а во-вторых, сохраняет текст в формате команды cat (в но слабо документирован. Это значит, что наилучшим источником све-
этом формате гиперссылка выделяется повторением каждой буквы ее дений о программировании модулей KIPI являются исходные тексты
надписи по два раза). модулей, написанных другими программистами.
Помимо модулей KParts, браузер Konqueror поддерживает еще Информацию о модулях KIPI можно получить на сайте extragear.
несколько типов модулей. Модули панели навигации позволяют доба- kde.org. Там же можно загрузить и исходные тексты модулей (уже
вить новые команды на панель навигации Konqueror (эта панель по модифицированные тексты вы можете найти на прилагаемом диске,
умолчанию припаркована к левому краю окна менеджера файлов). в файле kipi-plugins-0.1.2m.tar.gz). Прежде чем устанавливать модули
Все, что требуется от модуля панели навигации – возвратить ука- необходимо установить библиотеку libkipi (ее исходные тексты тоже
затель на визуальный элемент, который и будут отображен браузе- есть на диске, в файле libkipi-0.1.4.tar.bz2).
ром при вызове соответствующей команды. Модули KFile позволяют Рассмотрим структуру модуля KIPI на примере модуля HelloWorld,
добавлять элементы в окно свойств файла (это окно можно вызвать с который, как следует из названия, как раз и должен служить приме-
помощью команды Свойства контекстного меню менеджера файлов). ром для начинающих модулеписателей (исходные тексты этого модуля
Обычно модули KFile используются для вывода метаданных файлов. находятся в директории kipi-plugins-0.1.2/kipi-plugins/helloworld/ файла
Поскольку для всех мыслимых типов файлов такие модули уже напи- kipi-plugins-0.1.2m.tar.gz). Как вы, наверное, догадались, модуль KIPI
саны, вам не придется писать модуль KFile, если только вы не разраба- представляет собой разделяемую библиотеку. Явным образом эта
тываете собственный файловый формат. библиотека экспортирует один-единственный класс – класс модуля.
Определение соответствующего класса Plugin_HelloWorld мы найдем в
файлах plugin_helloworld.cpp и plugin_helloworld.h.
Пробуем разобраться в том, что делает каждый метод этого класса.
Конструктор Plugin_HelloWorld вызывает конструктор базового класса
всех классов модулей KIPI KIPI::Plugin и выводит сообщение о том, что
модуль загружен. Отметим здесь, что поскольку модули подключаются
динамически, вывод такого сообщения полезен не только в процессе
отладки модуля. Рассмотрим метод setup(), который, как можно дога-
даться из названия, будет вызван приложением-хозяином модуля сра-
зу после создания объекта.:
void Plugin_HelloWorld::setup( QWidget* widget )
{
KIPI::Plugin::setup( widget );
actionCollection(),
“helloworld”);
addAction( m_actionHelloWorld );
if ( !m_interface )
{
kdError( 51000 ) << “Kipi interface is null!” << endl;
return;
}
}
Этот метод вызывает одноименный метод базового класса и
создает объект-действие (таких объектов может быть зарегистриро-
вано несколько). В методе setup() модуль получает также указатель
на объект класса KIPI::Interface, который реализует интерфейс взаимо-
действия между модулем и программой-хозяином. (Рис. 3) Модуль mykipi в работе.
Далее в классе Plugin_HelloWorld определен метод slotActivate(),
который и выполняет всю работу модуля (именно этот слот был ука- жит ссылки на объекты, представляющие изображения, выбранные
зан при создании объекта-действия). Метод slotActivate() мы пока пользователем в окне графической программы (ваш разум еще не
пропустим и рассмотрим последний метод класса Plugin_HelloWorld:: кипит от этих модулей KIPI?). Если метод currentSelection() вернул зна-
category(): чение NULL, значит, пользователь не выбрал ни одного изображения
KIPI::Category Plugin_HelloWorld::category( KAction* action ) const и тогда нашему модулю просто нечего делать. Впрочем, вызов модуля
{ при отсутствии выбранных изображений невозможен, как невозможен
if ( action == m_actionHelloWorld ) вызов модуля KParts для неподходящего компонента. Как и положено
return KIPI::IMAGESPLUGIN; всякому учебному примеру, модуль mykipi не делает ничего полезного.
С помощью метода selection.images() мы получаем список URL выде-
kdWarning( 51000 ) << “Unrecognized action for plugin category ленных изображений (не забывайте, что мы имеем дело с программа-
identification” << endl; ми, предназначенными, в основном, для просмотра и редактирования
return KIPI::IMAGESPLUGIN; // no warning from compiler, please существующих графических файлов). Далее мы преобразуем список
} URL в QStringList и затем QString, и выводим его содержимое в диа-
С помощью этого метода программа-хозяин может выяснить, к логовом окне.
какой категории должен принадлежать элемент управления, кото- Когда я писал, что у нашего модуля есть только один класс, я
рый она создает для данного объекта-действия. Модуль HelloWorld немного упростил ситуацию. На самом деле, модуль реализует еще
возвращает значение KIPI::IMAGESPLUGIN, которое указывает, что один класс, а именно класс Factory, управляющий созданием основно-
соответствующий элемент управления должен относиться к катего- го объекта класса модуля, однако генерация этого класса выполняется
рии Images. автоматически с помощью определения типа и вызова макроса:
Для того чтобы написать свой модуль KIPI, нам, фактически, необхо- typedef KGenericFactory<Plugin_MyKIPI> Factory;
димо только переписать метод slotActivate() модуля HelloWorld. В архиве K_EXPORT_COMPONENT_FACTORY( kipiplugin_mykipi,
kipi-plugins-0.1.2m.tar.gz вы найдете модуль mykipi, который и был создан Factory(“kipiplugin_mykipi”));
на основе модуля HelloWorld (поскольку заготовки проекта KDevelop для Прежде, чем мы установим наш модуль, нам следует отредактиро-
такого модуля в KDevelop нет, его проще распространять как часть паке- вать файл kipiplugin_mykipi.desktop. Ниже приводится его отредактиро-
та kipi-plugins). Все, что отличает модуль mykipi от модуля-прародителя, ванный текст (структура файлов *.desktop похожа на структуру файлов
сосредоточено в методе slotActivate() класса Plugin_MyKIPI: *.ini Windows, и это не случайное совпадение):
void Plugin_MyKIPI::slotActivate() [Desktop Entry]
{ Encoding=UTF-8
kdDebug( 51000 ) << “Plugin_MyKIPI slot activated” << endl; Name=MyKIPI
Name[cs]=My KIPI
KIPI::ImageCollection selection = m_interface->currentSelection(); Comment=Sample KIPI Plugin
Type=Service
if ( !selection.isValid() ) { ServiceTypes=KIPI/Plugin
kdDebug( 51000) << “No Selection!” << endl; X-KDE-Library=kipiplugin_mykipi
} author=Andrei Borovsky, borovsky@tochka.ru
else { Файл kipiplugin_mykipi.desktop cодержит сведения о типе модуля
KURL::List images = selection.images(); (ServiceTypes=KIPI/Plugin), а также имя модуля и комментарий.
QStringList SL = images.toStringList(); Теперь мы можем скомпилировать и установить модуль (естест-
QString S = SL.join(“\n”); венный путь – make install). Запустим программу Gwenview и в меню
KMessageBox::information(0, S, “Selected Images”); Модули, в группе Изображения (Images) мы увидим команду Sample
} KIPI Plugin, которая будет работать так, как мы и ожидаем (Рис. 3).
} В этой статье мы рассмотрели, среди прочих, модули для компо-
Метод начинает работу с вывода диагностического сообщения. нентов KParts. В следующей, заключительной части серии мы узнаем,
Затем мы создаем объект класса KIPI::ImageCollection, который содер- как создавать собственные компоненты (и модули для них). LXF
Python: Обработка
ЧАСТЬ 4: Язык Python может многое, хотя, конечно, не всё. Но благодаря «привязкам» к таким
мощным библиотекам, как GTK и модулям сторонних разработчиков его возможности стано-
вятся практически безграничными, пишет Сергей Супрунов.
ручная работа не для нас. Вот тут-то и пригодится PIL, где уже реали-
зованы широчайшие возможности по обработке изображений.
Небольшой практикум
Итак, после установки библиотеки все ее модули вы, скорее всего,
найдете в /usr/lib/Python2.4/site-packages/PIL. Кстати, обычно при
инсталляции PIL добавляет в список sys.path также и указанный путь,
так что для подключения, скажем, модуля ImageDraw, можно будет
использовать не только import PIL.ImageDraw, но и просто import
ImageDraw.
Сами модули не слишком щедро прокомментированы, но зато по
адресу http://www.Pythonware.com/library/pil/handbook вы найдете пре-
восходное руководство.
Несмотря на множество модулей, входящих в состав библиоте-
ки, для большинства задач вполне хватает модуля Image, а он уже
сам неявно задействует возможности остальных. Основой является
объект-изображение, которое можно загрузить из файла (используя
метод open()), либо создать с нуля (конструктор new()), причем при
загрузке файла библиотека сама позаботится о распознавании фор-
мата изображения.
Для примера напишем небольшой конвертер, который мог бы
брать указанные с помощью шаблона файлы и сохранять их изменен-
Р
ассказывать о различных «расширениях» Python можно бес- ные копии в другом каталоге. PIL предоставляет много методов для
конечно. Чтобы все-таки завершить серию и дать вам возмож- модификации изображений, в нашем примере мы остановимся на
ность погрузиться в самостоятельное изучение этого языка, я двух – изменении размера и формата. Заодно вспомним, как работать
решил коротко остановиться на двух сторонних библиотеках, значи- с файловой системой, и познакомимся с небольшим, но полезным
тельно расширяющих возможности Python по работе с изображени- модулем getopt для разбора параметров, передаваемых сценарию из
ями и звуком. командной строки. Код сценария представлен в листинге conv2.py.
В строках 8–13 мы используем функцию getopt() одноименно-
Где же кружка?... го модуля для того, чтобы получить передаваемые в скрипт опции.
Начнем с PIL – Python Image Library. Вам наверняка удастся без про- Первым параметром функция получает список аргументов команд-
блем инсталлировать ее с помощью менеджера пакетов вашего дис- ной строки (без первого элемента, соответствующего имени самого
трибутива. Не исключено, что она уже установлена (как это имеет скрипта), а вторым – список так называемых «коротких» опций, кото-
место быть в Ubuntu). Но если вам не очень повезло (мало ли, вдруг рые нужно найти. (Модуль поддерживает также и «длинные» опции в
вы – фанат Slackware), то забрать архив с ее исходным кодом можно формате GNU – смотрите документацию или код самого модуля). Если
на www.Pythonware.com. опция задается как логическая (т.е. важно лишь то, присутствует ли
Итак, зачем она нужна? Представьте, что вы привезли с моря четы- она в командной строке), то в списке просто указывается соответс-
ре «флешки», забитых замечательными фотографиями, и хотели бы твующая ей буква. Если опция параметрическая (т.е. должна сопро-
згрузить их на свою домашнюю страничку... Начинание благое, но вождаться каким-то значением), после ее буквы ставится двоеточие.
каково будет ее посетителям «тянуть» добродушно созданные вашей В нашем примере все опции параметрические: -t (формат выходных
«Минолтой» файлы по 5 МБ каждый? Принципы гуманизма требуют файлов), -o (каталог для их размещения), -h (высота модифицирован-
предварительно «сжать» изображения до приемлемых размеров. Да ного изображения), -w (ширина изображения).
и миниатюры создать было бы неплохо, чтобы можно было окинуть Возвращает getopt() два списка: список распознанных опций в
взглядом сразу несколько фотографий. формате [(опция, значение), (опция, значение), (. . .)] (значение ука-
Если вы уже собрались запускать Gimp – одумайтесь! Ну на 10 зывается только для параметрический опций, для логических второй
изображений у вас терпения хватит, ну на 100... А если их 1000? Нет, элемент кортежа остается пустым), и список оставшихся (не распоз-
на DVD
32 self.PLAY_FLG = 0
Листинг echo.py
#!/usr/bin/Python
mp3 = ‘Aria.shtil.mp3’
ECHO = 0.1
f1 = playit(mp3)
f1.rateCf = 1
ht1 = threading._start_new_thread(f1.playit, ())
if ECHO:
time.sleep(ECHO)
f2 = playit(mp3)
f2.rateCf = 1
ht2 = threading._start_new_thread(f2.playit, ())
Малышка wave
Листинг wav2.py Кстати, раз уж зашла речь об обработке звука, то и в стандартной
поставке Python есть несколько модулей для выполнения простейших
1 #!/usr/bin/python операций. Например, модуль wave позволяет редактировать (и даже
2 # -*- coding: utf-8 -*- создавать с нуля, если вы сильны в математике) звуковые файлы в
формате WAV. На листинге wav2.py представлен сценарий, с помощью
3 import wave которого можно «развернуть» wav-файл в обратном направлении:
Открыв wav-файл (строка 6), мы можем получить некоторую
4 def sum(a, b): информацию о нем (строки 7-11). Считываем данные в переменную
5 return “%c%c” % (a, b)
normal (нормальная последовательность). «Сырой» wav-файл (т.е. без
компрессии; подавляющее большинство таковыми и является) пред-
6 rf = wave.open(“new.wav”, “rb”)
ставляет собой набор «фреймов», или «отсчетов», то есть значений
7 print “Количество фреймов: %d “ % rf.getnframes()
8 print “Частота дискретизации: %d” % rf.getframerate() амплитуды сигнала в данный момент времени. Частота дискретизации
9 print “Точность дискретизации: %d” % rf.getsampwidth() определяет, сколько фреймов будут формировать одну секунду зву-
10 print “Количество каналов: %d” % rf.getnchannels() чания. Точность дискретизации показывает, сколько байт использует-
11 print “Тип сжатия: %s” % rf.getcomptype() ся для хранения одного фрейма (значение 1 соответствует 8-битному
звуку, 2 – 16-битному).
12 total = rf.getnframes() * rf.getnchannels() * rf.getsampwidth() Для того чтобы развернуть наш файл, нужно «реверсировать» счи-
13 normal = rf.readframes(total) танную нормальную последовательность. Это можно легко выполнить
14 reverse = ‘’
с помощью списковых включений (как показано в строке 21). Но если
15 if rf.getsampwidth() == 2:
мы работаем с 16-битным файлом, то нужно позаботиться о сохране-
16 n2 = normal[-2::-2]
нии порядка байтов во фрейме, иначе получим лишь шум. Для этого в
17 n1 = normal[-1::-2]
18 for i in map(sum, n0, n1): строках 16 и 17 мы формируем две «подпоследовательности», в одну
19 reverse += i из которых попадают младшие байты фреймов, во вторую – старшие.
20 else: С помощью функции map(), которая применяет функцию, указанную
21 reverse = normal[-1::-1] первым параметром (в нашем примере это sum(), описанная в строках
4–5), к каждому элементу последовательностей, переданных вторым и
22 wf = wave.open(“new2.wav”, “wb”) третьим параметрами, мы соединяем полученные полуфреймы воеди-
23 wf.setnchannels(rf.getnchannels()) но. Поскольку на выходе map() получается список, то нам нужно его
24 wf.setsampwidth(rf.getsampwidth())
вручную «собрать» снова в строку (стр. 18–19).
25 wf.setframerate(rf.getframerate())
Нужно заметить, что map() отличается очень высокой скоростью
26 wf.writeframes(reverse)
обработки последовательностей. Если собирать результирующую
строку «вручную» (например, в цикле while), то эта процедура может
затянуться на десятки секунд даже для не очень большого файла, в то
время как map() выполняет эту операцию почти мгновенно.
В этом сценарии мы запускаем два потока (если значение перемен- Наконец, в строках 22-26 мы открываем новый файл на запись,
ной ECHO отлично от нуля). В каждом из потоков проигрывается один устанавливаем его параметры (в соответствии с исходными) и записы-
и тот же файл, но перед запуском второго делается небольшая пауза ваем содержимое. Теперь можете и сами поиграть в «АПОП»!
(в примере – 0,1 секунды). В результате получается довольно интерес-
ное звучание. Кстати, обратите внимание на то, как мы запустили пото- Только вперед!
ки – вместо того, чтобы создавать соответствующий класс и переопре- На этом мы завершаем нашу серию уроков. Благодаря тому, что раз-
делять в нем метод run(), был напрямую вызван «внутренний» метод работчикам Python удалось сделать этот язык простым и в то же время
_start_new_thread(), которому передается функция или метод, которые удивительно мощным и расширяемым, с его помощью можно эффек-
должны быть выполнены в потоке. тивно решать самые различные задачи – дополнительная сложность
Помимо собственно воспроизведения звука, PyMedia предоставля- будет проявляться лишь там, где это действительно необходимо, в
ет средства для работы с видео-файлами, ее можно использовать для то время как простые задачи сохранят предельную простоту. И если
конвертирования исходного файла в другие форматы, для редактиро- вдруг для какого-то проекта стандартных средств окажется недоста-
вания мета-данных и самого звука, и т.д. точно, то наверняка вам поможет какая-нибудь из сторонних библио-
тек. Главное – не сдаваться!
Удачи! LXF
Cсылки по теме
www.python.org – официальный сайт проекта
www.python.ru – российский сайт почитателей этого языка
http://zope.net.ru – сайт российской группы пользователей среды Zope
(разработанный на Python сервер web-приложений); здесь есть
информация и о Python
www.pythonware.com – сайт разработчиков PIL; помимо самой
библиотеки, можно найти и другие интересные вещи
www.awaretek.com/plf.html – страничка, посвящённая изучению языка
Python
http://py.vaults.ca/apyllo.py – множество примеров программ на Python,
от работы с базами данных и графикой до игр
Базовые
ЧАСТЬ 2: Мы говорим на русском языке и пользуемся операционной системой GNU/Linux –
подобное на нашей планете встречается не так уж часто. Хотите стать ещё более элитарным
подмножеством? Евгений Балдин знает уникальный рецепт – используйте LaTeX!
Группировка
Группировка осуществляется с помощью фигурных скобок: {группа}.
Фигурные скобки при печати не отображаются.
Сложные конструкции, которые имеют открывающую и закрываю-
щую команды (например, окружения), тоже группируют текст.
Построение команды
Команды в LaTeX начинаются с символа \ (backslash или обратная
косая черта) и продолжаются комбинацией, состоящей только из стан-
дартных латинских букв2. Команды завершаются пробелом, цифрой
или не латинской буквой. Все пробельные символы после команды
игнорируются. Для того, чтобы пробел после команды не игнориро-
вался, достаточно вставить «пустую группу»: \command{}. Например,
чтобы лого LaTeX (команда \LaTeX) не слилось со следующим за ним
словом, следует написать \LaTeX{}.
Аргументы
Командам LaTeX могут передаваться внешние аргументы:
\command[param1][param2]{param3}{param4}
«Командная логика» В квадратные скобки заключаются необязательные параметры
(param1 и param2), а в фигурные – обязательные (param3 и param4).
Щенок должен понять, Некоторые из команд LaTeX влияют только на свои аргументы.
что быстрое и чёткое выполнение команд хозяина Например, команда
всегда вознаграждается лакомством или лаской. \textbf{текст}
выводит слово текст жирным шрифтом.
Для набора кода в LaTeX знание английского языка приходится очень
кстати. Основных команд немного – их можно запомнить и так, но для Декларативные команды
совершенствования английский необходим, хотя бы для чтения доку- Часть команд LaTeX являются своеобразными переключателями
ментации к пакетам. Названия у команд, как правило, вполне осмыс- режимов.
ленны, что очень помогает при поиске чего-нибудь необходимого в Область действия декларативной команды может ограничиваться
алфавитном указателе. «Правильный» тестовый редактор тоже не логической группой или единицей структуры печатного документа,
является лишним. например, страницей.
%дальнейший текст будет печататься жирным шрифтом
Спецсимволы \bfseries
Не все символы равноправны. За частью символов в LaTeX зарезерви- %убрать заголовки и нумерацию для текущей страницы
рованы специальные значения. \thispagestyle{empty}
Это: «\», «$», «%», «_», «{», «}», «&», «#», «^» и «~». В процессе
изложения их роль будет, со временем, раскрыта.
1
Чтобы отобразить эти символы при печати необходимы дополни- Можно воспользоваться пакетом underscore – в этом случае необходимость экранировать
знак «_» в текстовом режиме отпадает.
тельные усилия. Предыдущий параграф в текстовом редакторе выгля- 2
Это верно для стандартной кириллизации. Существуют варианты – например, русификация
дел бы так: Шеня – где русские буквы также могут входить в имена команд.
элементы
Окружения К вопросу о переносах
Сложные конструкции, которые имеют открывающую и закрывающую Пожалуй, единственное, что, возможно, потребует настройки в свеже-
команды вида \begin{имя} и \end{имя}, называют окружениями. Вместо установленном дистрибутиве LaTeX, это включение переносов. Этой
слова «имя» подставляется название соответствующего окружения проблемы заведомо не возникает при установке TeX Live и в большин-
\begin{center} стве современных дистрибутивах GNU/Linux, но всякое бывает.
Это строка будет отцентрирована Для установки переносов можно воспользоваться утилитой texconfig3.
\end{center} После запуска программы следует выбрать меню HYPHENATION, а затем
Окружения могут вкладываться друг в друга, как матрёшки, но их меню LaTeX. Далее будет предложено отредактировать4 файл переносов
области действия не могут перекрываться. language.dat. Обычно достаточно таких настроек:
english hyphen.tex
russian ruhyphen.tex
Логика документа Всё остальное по желанию можно закомментировать. По умол-
чанию, когда включаются переносы для определённого языка, все
Вид документа определяется выбором класса и стилей. Хорошим при- остальные правила переносов отключаются. Но в случае английского и
ёмом является наличие личных готовых шаблонов с уже предопре- русского языков это можно обойти, воспользовавшись русско-англий-
делёнными предпочтениями, которые могут меняться по мере развития ской таблицей переносов:
документа. ruseng ruenhyph.tex
=russian
Структура файла LaTeX =english
Текстовый tex-файл состоит из двух частей: заголовка или преамбулы и Следует понимать, что подобная настройка с точки зрения фило-
собственно самого текста, и выглядит примерно следующим образом: софии LaTeX не совсем корректна. Для гарантированно одинакового
%---начало заголовка--- результата компиляции независимо от платформы лучше поступиться
%выбор класса документа, например article или book некоторыми удобствами.
\documentclass{…}
%минимальная кириллизация Класс документа
\usepackage[koi8-r]{inputenc} С помощью обязательной инструкции \documentclass[опции]{класс}
\usepackage[english,russian]{babel} можно указать, к какому классу будет относиться рабочий текст.
\usepackage{indentfirst} Класс документа следует выбирать в зависимости от того, что дол-
%загрузка пакетов по выбору жен представлять из себя текст. Для начала можно остановиться на
\usepackage{…} стандартном классе article. Этот класс разработан специально для ста-
… тей и небольших отчётов. Для отчётов побольше можно использовать
%определение своих команд или переопределение уже класс report, а для книг – класс book.
существующих Перечисленные стандартные классы сложились очень давно и мно-
\newcommand{\mycommand}{…} гие производные классы документов основаны на них. Как следствие,
\renewcommand{\oldcommand}{…} стандартные базовые классы абсолютно статичны, поэтому для спе-
… циализированных вещей используются свои классы. Например, для
%локальные настройки научных статей популярны различные модификации revtex4. Вячеслав
… Фёдоров разработал класс eskd (стандарт ЕСКД), который можно найти
%---конец заголовка--- на CTAN или в стандартной поставке TeX Live. Те, кто недоволен боль-
\begin{document} шими полями в стандартных LaTeX-классах, могут обратить внимание
%тело документа на набор классов KOMA-script (scrartcl, scrreprt и scrbook вместо article,
\end{document} report и book, соответственно).
Первым делом с помощью инструкции \documentclass осуществля- Поначалу в выбранном классе ничего менять не следует. То, что
ется выбор класса документа. Далее загружаются стилевые пакеты. кажется с непривычки неудобным, на самом деле может улучшать вос-
Для того, чтобы можно было набирать русский текст, необходимо с приятие печатной копии. Например, относительно узкая ширина текс-
помощью пакета inputenc указать кодировку текстового файла, напри- та в стандартных классах (следствие больших полей) позволяет при
мер, koi8-r. Далее нужно подключить пакет babel, который отвечает за прочтении охватывать взглядом всю строку целиком, что увеличивает
локализацию, в частности, за переносы и «национальные особеннос- скорость чтения.
ти» набора. Например, при включении русского языка доопределяется
символ номера № (\No), символ параграфа § (\S) и многое другое. Для 3 texconfig – это простенькое dialog-подобное консольное приложение. Некоторые настройки
формирования отступа или красной строки у первого параграфа, как могут потребовать привилегий суперпользователя. После изменения настроек через texconfig
автоматически пересоздаются необходимые форматные файлы. В противном случае может
это принято в России, необходимо загрузить пакет indentfirst. По идее, потребоваться сделать это вручную, например, с помощью инструкции вида texconfig init.
это должно относиться к «национальным особенностям», но в babel по 4 Редактор можно определить с помощью переменной окружения $EDITOR. Если переменная
не определена, то вызывается редактор vi. В случае отсутствия опыта работы с vi следует выйти
умолчанию не подгружается. из него с помощью последовательности :q и настроить переменную окружения.
Мало открыть файл в текстовом редакторе и начать набирать. Нажимать Дефисы, минусы и тире
на клавиши надо осмысленно. В издательских системах, основанных на TeX’e, различают дефис
(hyphen), короткое тире (en-dash), длинное тире (em-dash) и знак
минуса.
Чтобы получить на печати дефис, короткое или длинное тире, надо
5
Расположение букв похоже на таковое в кодировке cp1251 – это чистая случайность. набрать один, два или три знака «-», соответственно.
Сложные документы
Всё можно хранить в одном файле – это ничему не противоречит.
Более того, само понятие «файл» для пользователя не так уж и необхо-
димо. Но уж если файл есть, то почему бы не разделить большой текст
на несколько частично независимых кусков?
Распространённые TeX-лого. Команда \NCC определена в пакете С помощью команды \input{имя файла} можно вставлять в доку-
ncclatex. Остальные команды заведомо определены в пакете мент другой tex-файл. LaTeX просто добавляет содержимое по месту
texnames.
команды, считывая файл либо до конца, либо до первой встретившей-
ся инструкции \endinput. Совершенно не важно, в какой части докумен-
та встречается \input. Бывает довольно удобно вынести преамбулу в
Секционирование отдельный файл. В имени файла можно опустить расширение .tex.
Часто бывает полезно сразу же за титульной страницей вывести оглав- Для включения текста можно применить другой способ:
ление с помощью команды \tableofcontents. Для этого в тексте должно \input{preheader}
присутствовать логическое разбиение на разделы. \includeonly{
\subsection{Секционирование} % intro,
\label{sec:base:sec} base,
% presentation
Часто бывает \ldots }
Команды секционирования образуют строгую иерархию. Самыми \begin{document}
старшими по «званию» являются разделы \part{Часть} и \chapter{Глава}. %введение
Это большие куски текста, и, соответственно, их применение обоснова- \include{intro}
но только в книгах, поэтому они не определены в классах производных %базовые команды
от article и report, зато определены в классе book. \include{base}
Далее по старшинству следуют: %Презентация
\section{Раздел} \include{presentation}
\label{ex:section} \end{document}
Декларация \include позволяет включить только tex-файл (при
\subsection{Подраздел} написании имени расширение .tex опускается). В преамбуле с помощью
\label{ex:subsection} команды \includeonly можно перечислить, какие части надо подклю-
чить при текущей сборке. При этом сохраняется правильная нумерация
\subsubsection[<<Подподраздел>>]{Что-то более мелкое чем страниц и можно сослаться на не включённые в эту сборку разделы.
подраздел} Это довольно актуально в случае больших текстов в процессе их созда-
\label{ex:subsubsection} ния, так как значительно ускоряет компиляцию. LXF
\paragraph{Параграф}
\label{ex:paragraph}
\subparagraph{Подпараграф}
\label{ex:subparagraph}
Если воспользоваться необязательным параметром команды сек-
ционирования, его значение заместит основной заголовок при печати
оглавления и создании колонтитулов.
Команды секционирования печатают заголовок необходимым
шрифтом и нумеруют раздел. Если нет желания, чтобы название раз-
дела попало в оглавление, и надобности в нумерации нет, то к команде
секционирования следует добавить символ «*», например:
\section*{Приложение}
Сказка Java
ЧАСТЬ 1: От кофеварок до промышленных серверов и биллинговых систем – Java можно
встретить буквально везде. Начните изучение этой технологии вместе с Антоном Черноусовым.
Н
ачиная ряд статей о программировании на объектно-ориенти- Расположение одного класса в одном файле считается хорошим
рованном языке Java, хотел бы выразить свое мнение отно- тоном среди программистов на Java – так что приучайтесь к нему сра-
сительно корпоративного рынка разработки программного зу. Имя файла должно совпадать с названием класса, расширение у
обеспечения, на котором в данный момент борются за лидерство два файла – .java.
гиганта, две платформы: J2EE и .NET. Первый созданный нами класс содержит один защищенный атри-
В основе платформы J2EE лежит язык программирования Java – бут (private – модификатор, зарезервированное слово, которое обеспе-
приложения, созданные с его помощью, являются кроссплатфор- чивает возможность обращения к члену класса только внутри класса)
менными, сам язык, средства разработки и технология активно под- и три открытых метода (public – модификатор, зарезервированное
держиваются многими корпорациями: Sun, Google, IBM, Oracle, BEA. слово, которое обеспечивает возможность обращения к члену класса
Платформа пользуется большой популярностью и среди компаний, из любого другого класса.). Хорошо спроектированный класс не име-
ориентированных на OpenSource, таких как Apache Foundation. В про- ет открытых атрибутов, что позволяет быть уверенным в правильной
тивовес J2EE, корпорация Microsoft предлагает свою технологию .NET, работе с ними. Доступ к защищенным атрибутам осуществляется через
которая является колоссом, построенным на мощи программного открытые методы. Такая организация класса позволяет разработчику
обеспечения Microsoft. через методы реализовать различные проверки и исключить непра-
Сегодня еще нельзя сказать, какая технология станет доминиру- вильное поведение объекта. Класс представляет собой объединение
ющей, и, возможно, от вас зависит скорость распространения совре- атрибутов и методов в единое целое – подобное объединение называ-
менной кроссплатформенной технологии создания приложений J2EE и ется инкапсуляцией.
языка программирования Java. Вы можете заметить, что первый метод (третья строка представ-
Предложенные вашему вниманию уроки позволят овладеть основны- ленного ранее листинга) имеет то же название, что и класс – FirstHero.
ми понятиями ООЯ Java и создавать различные приложения с его помо- Такой метод называется конструктором. Конструктор – это метод, кото-
щью. Рассмотрев основы языка, мы сможем изучить типовые решения рый используется при создании экземпляра класса для задания внут-
(паттерны) в программировании и приступить к изучению J2EE. реннего состояния объекта, например:
В первом уроке мы создадим свое первое приложение и разберем- FirstHero ourNewHero = new FirstHero(“Спасти царевну”);
ся с основными понятиями: инкапсуляция, наследование и полимор- Единственный атрибут нашего класса quest имеет тип строка
физм. Для выполнения этого урока нам понадобится пакет Java SDK (String). Для установки значения атрибута quest используется метод
1.5, текстовый редактор и немного терпения. setQuest. Метод setQuest является public и не возвращает никакого зна-
чения. Для обозначения методов, не возвращающих значение, исполь-
Героический объект зуется зарезервированное слово void. Для вызова метода setQuest
Приступая к этой серии материалов, я вспомнил, что, как правило, изу- необходим обязательный параметр: Quest типа String. Для получения
чение языков программирования начинается с написания приложения значения атрибута quest используется метод getQuest, который вызы-
вается без параметров, является открытым и возвращает значение Комментарии JavaDoc предназначены для формирования докумен-
типа String. тации к проекту из исходных кодов. Если добавить в файл FirstHero.
Вызов описанных выше методов для объекта ourNewHero осущест- java только что приведенные строки, то с помощью команды javadoc
вляется следующим образом: -author -version *.java можно сформировать документацию к нашему
ourNewHero.getQuest(); проекту.
ourNewHero.setQuest(“какая-то строка”); JavaDoc позволяет создавать подробную документацию, которая
Парные методы, различающиеся приставками set и get, принято просто необходима для любого достаточно крупного проекта.
создавать для работы с закрытыми атрибутами. Это обязательное
условие для реализации объекта в виде JavaBean. Что такое JavaBean, Наследование, интерфейсы их реализация
мы обсудим позже – сейчас запомните, что такое наименование мето- Наша сказка написана, но что делать, если проект большой и над ним
дов позволяет избавиться от ряда проблем в больших системах. работает много людей? Как реализовать одновременное программиро-
Приступим к написанию самой сказки. Возьмите следующий код и вание разных классов так, чтобы результаты, полученные отдельными
поместите его в файл Story.java. разработчиками, можно было без труда соединить в единое целое? Для
public class Story { решения этой задачи, а также задачи множественного наследования в
public static void main(String[] args) { Java существуют интерфейсы – interface. Но обо всем по порядку.
FirstHero ourNewHero = new FirstHero(“Спасти царевну “); Наследование – это одна из парадигм программирования, которая
System.out.println(“Наш герой хочет отправиться в путь и “ связана с инкапсуляцией. Суть наследования заключается в следую-
+ ourNewHero.getQuest()); щем: если есть класс, инкапсулирующий в себе некоторые атрибуты и
} методы, то класс, наследующий его, автоматически наследует все его
} атрибуты и методы.
Это класс Story, он имеет всего один метод main, который является public class SecondHero extends FirstHero{
статичным (static-методы и переменные принято называть перемен- public SecondHero(String Quest) {
ными класса и методами класса, т.к. они общие для всех объектов) и super(Quest + “ Несмеяну”);
используется для работы с классом в целом. Метод main – это стар- }
товая точка для запуска программы, с которой начинается интерпре- }
тация кода. Расположенный выше код объявляет класс SecondHero, который
В ходе интерпретации метода main создается новый объект с помощью зарезервированного слова extends наследует (расши-
ourNewHero, а также вызывается метод println объекта out, кото- ряет) класс FirstHero. В Java класс может наследовать (расширять)
рый обеспечивает вывод в стандартный выходной поток строковой только один класс. При наследовании класса FirstHero, содержащего
переменной. конструктор, обязательно требуется переопределить его (например,
Откомпилируем код и увидим, что у нас получилось. Для компиля- как это делается в методе SecondHero). При выполнении оператора
ции переместитесь в каталог, где вы разместили свои файлы и выпол- super(Quest) будет вызван аналогичный метод из суперкласса (класс-
ните следующую команду: родителя). Строкой super(Quest + “Несмеяну”) мы переопределяем
# javac *.java поведение конструктора. Естественно, класс SecondHero может содер-
При желании вы можете откомпилировать классы по отдельности, жать новые атрибуты и методы.
следующим образом: Для проверки механизма наследования сохраните приведенный
# javac Story.java текст класса SecondHero в файл SecondHero.java и в файле Story.java
# javac FirstHero.java измените имя класса FirstHero на SecondHero. Откомпилируйте и запус-
В итоге вы получите два файла Story.class и FirstHero.class. Теперь тите программу, в результате вы должны увидеть следующее:
посмотрим на результат: # java Story
# java Story Наш герой хочет отправиться в путь и Спасти царевну Несмеяну
Наш герой хочет отправиться в квест и Спасти царевну При разработке программы, перед тем, как приступить к програм-
Первая программа на Java готова и работает! Вы создали два клас- мированию, сначала проводится процесс проектирования (например,
са и научились выводить информацию в консоль. Но мы забыли о через UML-нотации). В результате проектирования появляется доку-
комментариях... ментация к проекту, а также спецификации классов. Интерфейс – это
Комментарии бывают нескольких типов: явно указанная спецификация набора методов, которые должны быть
Строчные начинаются с символа // и длятся до окончания строки. представлены в классе, реализующий эту спецификацию. В серьезном
Многострочные комментарии заключаются между /* и */. проекте на момент начала программирования перед программистом
Комментарии JavaDoc – это многострочные комментарии, заключен- оказываются интерфейсы, которые он должен реализовать в классах.
ные между /** и */, например: Интерфейс в Java – это специальный класс, в котором отсутствует
/** реализация! Давайте напишем интерфейс для нашего класса FirstHero.
* Класс является прототипом объекта “герой” Следует скопировать следующий далее код и поместить его в файл
* @author Chernousov Anton Hero.java – именно этот интерфейс мы будет использован далее. Как
* @version 0.1 вы видите, в отличие от других классов, интерфейс объявляется с
*/ помощью зарезервированного слова interface. В нашем случае интер-
public class FirstHero { фейс представляет собой следующий набор методов:
… public interface Hero {
/** public void setQuest(String Quest);
* Метод предназначен для установки внутренней переменной public String getQuest();
quest }
* в значение Quest. Чтобы класс FirstHero реализовывал интерфейс Hero, необходимо
* У этого метода один параметр изменить первую строчку в файле FirstHero.java на public class FirstHero
* @param Quest это переменная означает задание для Героя implement Hero {. Интерфейс может наследовать (расширять) множест-
*/ во других интерфейсов. Наример:
public void setQuest(String Quest) public interface Lord {
… public String sendToQuest();
на DVD
Код примеров ста
тьи
Сигналы
We know when to kiss
And we know when to kill
If we can`t have it all
Then nobody will
Г
лавное отличие сигналов от других средств взаимодействия ются программе. Следует помнить, что не все сигналы могут быть
между процессами заключается в том, что их обработка проигнорированы. Например, при получении программой сигнала
программой обычно происходит сразу же после поступ- принудительного завершения SIGKILL система ничего не сообщает
ления сигнала (или не происходит вообще), независимо от того, программе, а просто прекращает ее работу. Таким образом, пре-
что программа делает в данный момент. Сигнал прерывает нор- имущество сигналов перед другими средствами межпроцессного
мальный порядок выполнения инструкций в программе и пере- взаимодействия заключается в том, что посылать программе сиг-
дает управление специальной функции – обработчику сигнала. налы можно в любой момент ее работы, не дожидаясь наступле-
Если обработка сигнала не приводит к завершению процесса, то ния каких-то особых условий. Источником сигналов может быть
по выходе из функции-обработчика выполнение процесса возоб- как сам операционная система, так и другие пользовательские
новляется с той точки, в которой оно было прервано. У программ программы. Если вам показалось, что сигналы похожи на преры-
также есть возможность приостановить обработку поступающих вания, то вы совершенно правы. Для реализации сигналов дейс-
сигналов временно, на период выполнения какой-либо важной твительно используются программные прерывания.
операции. В традиционной терминологии приостановка получения Нужно ли обрабатывать сигналы в вашей программе?
определенных сигналов называется блокированием. Если для пос- Большинство программ не делают этого. В случае программирова-
тупившего сигнала было установлено блокирование, сигнал будет ния для графических оболочек многие функции сигналов берут на
передан программе, как только она разблокирует данный тип сиг- себя механизмы сообщений графической оболочки. Тем не менее,
налов. Этим блокирование отличается от игнорирования сигнала, есть целый ряд программ (например, демоны и консольные много-
при котором сигналы соответствующего типа никогда не переда- поточные приложения), в которых обработка сигналов необходима.
Большинству сигналов системы присвоена конкретная роль и, Сигнал SIGTSTP (номер 20) приостанавливает процесс по коман-
хотя у программиста существует возможность использовать сиг- де пользователя (обычно эта команда – сочетание клавиш Ctrl-Z).
налы для передачи произвольной информации, не соответствую- Сигнал SIGIO/SIGPOLL (в Linux обе константы обозначают один
щей их стандартному назначению, делать этого не рекомендуется. сигнал – номер 29) сообщает процессу, что на одном из дескрип-
Собственно говоря, с помощью сигналов можно передать не так торов, открытых асинхронно, появились данные. По умолчанию
уж и много информации – только номер сигнала (хотя на плат- этот сигнал, как ни странно, завершает работу программы.
форме x86, например, можно было бы организовать и передачу В стандартной системе Unix определены два сигнала, SIGUSR1
дополнительных параметров). Скудость данных, передаваемых (в Linux – номер 10) и SIGUSR2 (номер 12), предназначенные для
сигналами, не удивительна, если учесть, что по умолчанию боль- передачи произвольной информации, но использование этих сиг-
шинство сигналов просто завершают работу программы. При этом налов не приветствуется. Одной из причин негативного отношения
в некоторых случаях на диске сохраняется образ памяти выгру- программистов Unix к пользовательским сигналам является то,
женной программы (знаменитый core dump). Соответственно и что сигналы, вообще говоря, представляют собой ограниченный
программа-источник сигнала обычно не ждет никакого ответа от ресурс, совместное использование которого может вызвать кон-
программы-приемника. Номерам сигналов соответствуют конс- фликты (например, если программист задействовал эти сигналы в
танты, определенные в файле signal.h. Имена всех этих констант своей программе и при этом использует стороннюю библиотеку, в
начинаются с префикса SIG, за которыми следует сокращенное которой эти сигналы также задействованы).
название сигнала. Стандарт POSIX определяет две группы сигна- Если вы не знали, то вам, возможно, будет интересно узнать,
лов – «классические» сигналы Unix и сигналы реального времени. что обработка сигналов является частью стандарта языка Си и, как
В отличие от классических сигналов сигналы реального времени таковая, поддерживается даже на платформе Microsoft Windows.
всегда буферизуются, так что программа получит все посланные Однако, стандартный интерфейс сигналов Си, основанный на
ей сигналы. В этой статье мы рассмотрим только классические функции signal(), довольно неуклюж (недостатки интерфейса
сигналы Unix, каковых в Linux насчитывается 31. Этим сигналам сигналов Си подробно описаны в книге [2]), так что мы восполь-
назначены номера с 1 до 31 (номер 0, так называемый null-сигнал, зуемся более совершенным вариантом интерфейса, основанным
имеет особый смысл). Полный список сигналов можно получить на функции sigaction(2). Для демонстрации работы обработки
из заголовочного файла signal.h. Мы же рассмотрим несколько сигналов мы напишем небольшую программу (файл sigdemo.c на
наиболее интересных сигналов. компакт-диске).
Сигнал SIGHUP (номер 1) изначально был предназначен для #include <stdio.h>
того, чтобы информировать программу о потере связи с управля- #include <stdlib.h>
ющим терминалом (терминалы часто подключались к системе с #include <signal.h>
помощью модемов, так что название сигнала происходит от hung
up – повесить трубку). Кроме того, сигнал SIGHUP посылается при- void term_handler(int i) {
ложению в том случае, если процесс-лидер сессии завершил свою printf (“Terminating\n”);
работу. Многие программы-демоны, у которых нет лидера сессии, exit(EXIT_SUCCESS);
также обрабатывают этот сигнал. В ответ на получение SIGHUP }
демон обычно перезапускается (или просто повторно читает файл
конфигурации). По умолчанию программа, получившая этот сиг- int main(int argc, char ** argv) {
нал, завершается. struct sigaction sa;
Сигнал SIGINT (номер 2) обычно посылается процессу, если sigset_t newset;
пользователь терминала дал команду прервать процесс (обычно sigemptyset(&newset);
эта команда – сочетание клавиш Ctrl-C) . sigaddset(&newset, SIGHUP);
Сигнал SIGABRT (номер 6) посылается программе в результате sigprocmask(SIG_BLOCK, &newset, 0);
вызова функции abort(3). В результате программа завершается с sa.sa_handler = term_handler;
сохранением на диске образа памяти. sigaction(SIGTERM, &sa, 0);
Сигнал SIGKILL (номер 9) завершает работу программы. printf(“My pid is %i\n”, getpid());
Программа не может ни обработать, ни игнорировать этот сигнал. printf(“Waiting...\n”);
Сигнал SIGSEGV (номер 11) посылается процессу, который while(1) sleep(1);
пытается обратиться к не принадлежащей ему области памяти. return EXIT_FAILURE;
Если обработчик сигнала не установлен, программа завершается с }
сохранением на диске образа памяти. Наша программа делает две вещи: обрабатывает сигнал
Сигнал SIGTERM (номер 15) вызывает «вежливое» завершение SIGTERM (при получении этого сигнала программа выводит диа-
программы. Получив этот сигнал, программа может выполнить гностическое сообщение и завершает свою работу) и блокирует
необходимые перед завершением операции (например, высво- сигнал SIGHUP, так что этот сигнал не может завершить ее рабо-
бодить занятые ресурсы). Получение SIGTERM свидетельствует ту. В тексте программы мы первым делом определяем функцию-
не об ошибке в программе, а о желании ОС или пользователя обработчик сигнала SIGTERM term_handler(). Функции-обработ-
завершить ее. чики сигналов – это обычные функции Си, они имеют доступ
Сигнал SIGCHLD (номер 17) посылается процессу в том случае, ко всем глобально видимым переменным и функциям. Однако,
если его дочерний процесс завершился или был приостановлен. поскольку мы не знаем, в какой момент выполнения программы
Родительский процесс также получит этот сигнал, если он устано- будет вызвана функция-обработчик, мы должны проявлять осо-
вил режим отслеживания сигналов дочернего процесса и дочер- бую осторожность при обращении к глобальным структурам дан-
ний процесс получил какой-либо сигнал. По умолчанию сигнал ных из этой функции. Единственным параметром нашего вариан-
SIGCHLD игнорируется. та функции-обработчика сигнала (в Unix-системах существует и
Сигнал SIGCONT (номер 18) возобновляет выполнение процесса, другой вариант) является переменная типа int, в которой переда-
остановленного сигналом SIGSTOP. ется номер сигнала, вызвавшего обработчик. Нам этот номер не
Сигнал SIGSTOP (номер 19) приостанавливает выполнение про- нужен, поскольку мы знаем, что только один сигнал – SIGTERM,
цесса. Как и SIGKILL, этот сигнал не возможно перехватить или может вызвать нашу функцию, однако, в принципе, ничто не
игнорировать. мешает нам использовать одну функцию для обработки несколь-
ких разных сигналов, и тогда параметр функции-обработчика какого-либо сигнала. Иначе говоря, любой обрабатываемый сиг-
будет иметь для нас смысл. Функция-обработчик не возвращает нал прерывает выполнение sleep(). Впрочем, в нашем примере с
никакого значения, что вполне логично, так как она вызывается бесконечным циклом это не помогло бы программе завершиться.
не нашей программой, а неким системным компонентом. Особый Сигнал SIGTERM приведет к тому, что программа выдаст диа-
интерес представляет завершение программы из обработчика гностическое сообщение и завершит работу, а сигналы SIGINT и
сигнала. Назначение обработчика сигналу SIGTERM означает, что SIGABRT – к тому, что программа завершится без всякого сооб-
«умолчательное» действие сигнала – завершение программы щения. Скомпилируйте и запустите программу в окне терминала.
не будет выполняться автоматически, и нам необходимо (если, В другом окне скомандуйте
конечно, мы хотим, чтобы этот сигнал завершал программу) kill <PID>
позаботиться обо всем явным образом. Если вы закомментиру- где PID – идентификатор процесса программы. Вы увидите, что
ете вызов exit() в нашем примере, то увидите, что программа не перед тем как завершиться программа выдает диагностическое
будет завершаться по получении сигнала SIGTERM. В принципе, сообщение, тогда как при завершении с помощью Ctrl-C никакого
вы можете придать сигналу SIGTERM совершенно иной смысл, сообщения не выводится.
например, оповещать программу о наступлении времени вашей Рассмотрим теперь блокировку сигналов. Поскольку игнори-
любимой телепередачи (или о выходе нового номера журнала рование сигнала устанавливается функцией sigaction(), можно
Linux Format), однако назначать стандартным сигналам нестан- было бы ожидать, что и блокировка устанавливается этой же фун-
дартные действия категорически не рекомендуется. Обработчик кцией, но это не так. Поскольку нам, как правило, приходится бло-
SIGTERM предназначен для того, чтобы, по требованию системы кировать несколько сигналов сразу, для блокировки существует
или пользователя, программа могла быстро и элегантно закон- специальная функция sigprocmask(2), которая оперирует набора-
чить текущую задачу и завершить свое выполнение. Именно этим ми сигналов (signal sets). Разделение интерфейса между несколь-
обработчик и должен заниматься. кими функциями вызвано еще и требованиями многопоточности.
Перейдем теперь к тексту главной функции программы. Параметры, устанавливаемые sigaction(), действительны для всей
Установка и удаление обработчиков сигналов осуществляются программы в целом, тогда как блокировку сигналов потоки осу-
функцией sigaction(2). Первым параметром этой функции явля- ществляют независимо друг от друга. Наборы сигналов хранятся
ется номер сигнала, а в качестве второго и третьего параметров в переменных специального типа – sigset_t, а операции над ними
следует передать указатели на структуру sigaction. Эта структура осуществляются с помощью специальных функций. Функция
содержит данные об операции, выполняемой над обработчиком sigemptyset() инициализирует набор сигналов пустыми значения-
сигнала. Второй параметр sigaction() служит для передачи новых ми, а функция sigfillset() устанавливает все возможные значения в
значений для обработки сигнала, а третий – возвращает ранее наборе. Используемая нами функция sigaddset() добавляет значе-
установленные значения. В таблице 1 приводится краткое описа- ние сигнала в набор, а функция sigdelset() удаляет сигнал из набо-
ние полей структуры sigaction. ра. После того как набор сигналов сформирован, мы передаем
его функции sigprocmask(), которая выполняет блокировку и раз-
блокировку сигналов. Первым параметром этой функции должна
Поля структуры sigaction быть одна из констант, определяющих операцию над заданными
сигналами. Константа SIG_BLOCK указывает, что сигналы из ново-
Поле Значение го набора должны быть добавлены к списку уже заблокированных
sa_handler Указатель на функцию обработчик сигнала или сигналов. Константа SIG_SETMASK указывает, что новый набор
константа блокируемых сигналов должен заменить уже существующий (при
sa_mask Маска сигналов, блокируемых на время вызова этом заблокированные ранее сигналы будут разблокированы, если
обработчика они не заблокированы в новом наборе), а константа SIG_UNBLOCK
sa_flags Дополнительные флаги указывает на необходимость разблокировать сигналы, передан-
ные в наборе. В нашей программе мы блокируем сигнал SIGHUP
и вы можете видеть, что программа не обрабатывает этот сигнал.
Поле sa_handler должно содержать либо адрес функции-обра- Послать нашей программе сигнал SIGHUP вы можете с помощью
ботчика, либо специальную константу, указывающую, что нужно консольной команды
делать с сигналом. Константа SIG_IGN указывает, что сигнал сле- kill –s 1 <PID>
дует игнорировать, а константа SIG_DFL – что нужно восстано- где PID – идентификатор процесса.
вить обработку сигнала, заданную системой по умолчанию. Поле Сигналы прерывают нормальный порядок выполнения про-
sa_mask позволяет заблокировать некоторое множество сигналов граммы и могут завершить работу программы, не способной
на время выполнения обработчика данного сигнала. Делается завершиться иным образом. Но иногда бывает так, что программе
это для того, чтобы обработка других сигналов не могла пре- просто нечего делать до тех пор, пока она не получит какой-либо
рвать обработку данного (это может быть необходимо, особенно, сигнал. Иначе говоря, программу нужно заставить ждать появ-
если один обработчик обрабатывает несколько разных сигналов). ления сигнала, по возможности не нагружая процессор. Такая
Параметр sa_flags позволяет задать ряд флагов для выполнения ситуация может возникнуть, например, в многопоточном прило-
более тонкой настройки обработчика сигналов. Например, флаг жении, когда нужно синхронизировать завершение нескольких
SA_RESETHAND указывает, что после завершения обработки сиг- потоков. Ожидание сигнала можно реализовать с помощью цикла,
нала заданным обработчиком должен быть восстановлен обработ- проверяющего значение флажка, который может сбросить обра-
чик, заданный по умолчанию, так что все последующие сигналы ботчик сигнала. В некоторых случаях (таких как рассмотренный
будут обрабатываться «умолчательным» обработчиком. выше пример) можно реализовать ожидание и с помощью бес-
В результате вызова функции sigaction() мы устанавливаем конечного цикла. Очевидно, однако, что эти методы не эффек-
обработчик сигнала SIGTERM. Затем наша программа распеча- тивны и не элегантны. В POSIX-системах существует специальная
тывает значение PID (это значение понадобится нам для вызо- функция sigwait(3), которая «усыпляет» процесс до тех пор, пока
ва команды kill) и входит в бесконечный цикл, из которого она процессу не будет передан один из заданного набора сигналов.
может быть выведена одним из сигналов. Следует отметить, что Модифицируем нашу программу так, чтобы вместо бесконечно-
функция sleep() прерывается (возобновляет выполнение про- го цикла она входила в цикл ожидания сигнала SIGHUP (файл
граммы раньше срока) если возвращает управление обработчик swdemo.c на компакт-диске):
и начала
ЧАСТЬ 4: Maxima способна прорешать половину Демидовича за десять минут.
Не верите? Спросите у Тихона Тарнавского!
И
з встроенного функционала Maxima в первую очередь сто- догадаться), минус-бесконечность – через minf (от «minus infinity»);
ит обратить внимание на несколько групп функций: работу для комплексных чисел бесконечность, как известно, одна, и она (ком-
с пределами, дифференцирование, интегрирование, поиск плексная бесконечность) обозначается полным словом infinity. При
решений уравнений – как «просто», так и дифференциальных. работе с пределами все три обозначения могут как использоваться при
вводе, так и возникать в виде найденного значения предела; отдельно
«Предельничаем»... здесь надо отметить один момент касательно работы с интерфейсом
Собственно полноценных функций для нахождения предела существу- к Maxima в редакторе TeXmacs: символы inf и minf при выводе здесь
ет в Maxima аж одна. Но зато какая! Она может принимать три различ- отображаются в своей традиционной математической нотации, то есть
ных варианта списка аргументов, и кроме того, на ее действие влияют как и - ; символ вместо inf можно, кроме того, использовать
еще и три флага. Но давайте по порядку. Зовут эту функции вполне еще и при вводе.
соответственно ее действию: limit; и в самом стандартном варианте
ее вызов выглядит как limit(выражение, переменная, точка), то есть
то, что в математической записи выглядит как limx->a f(x), в контексте
Maxima запишется как limit(f(x), x, a):
анализа
Пределы справа и слева еще иногда называют соответственно пре- Как видите, первая функция имеет конечные односторонние преде-
делами сверху и снизу. Хотя правильнее в таком случае говорить пол- лы в нуле, а вторая ограничена вообще на всей оси – и тем не менее...
ностью: «предел при x, стремящемся к a сверху», в том числе чтобы Но это, думаю, не столь критично: главное, что наличие любого из этих
не создавать путаницы с верхним и нижним пределами, которые суть символов в качестве вывода дает нам понять, что искомого предела не
совершенно другое. существует.
Кроме упомянутых выше бесконечностей, на выходе возможно Функция limit() в третьем варианте – limit(выражение) – предназна-
появление и еще двух обозначений, на случай, если заданный предел чена уже не для поиска собственно пределов, а для упрощения выра-
не существует: ind (от слова indefinite – «неопределенный») и und жений, содержащих символы inf и minf:
(от слова undefined – опять же «неопределенный»). В документации
первое из этих обозначений описано как «indefinite but bounded» (не
определен, но ограничен), что дает предположить, что функция, не
имеющая предела, при этом ограничена либо в окрестности предель-
ной точки, либо на всей прямой. Какое из этих предположений име-
лось в виду, мне так и не удалось понять, потому как на практике ни
одно из них не соответствует действительности. Вывода «ind» мне не
удалось добиться ни на одной функции, радикально отличающейся Выражения такого рода могут возникать, к примеру, при подста-
от «канонической» (в том смысле, что фигурирующей в стандартном новках в формулы результатов вычисления каких-то других пределов
примере из комплекта) функции sin(1/x) [у нас аналогичный вывод или интегралов.
получился и для (–1)^x – прим. ред.]. Такая способность – принимать различные списки аргументов – не
является в Maxima чем-то особенным; она свойственна очень многим
встроенным функциям, как и различное действие в зависимости от
значений разнообразных переключателей. Это достаточно удобно: не
нужно запоминать много разных имен функций (для поиска пределов,
к примеру, используется исключительно функция limit); для вычис-
ления производных, в том числе и частных, – функция diff (с которой
мы уже бегло ознакомились в первой статье и сейчас продолжим
Здесь все правильно, tan(1/x) не ограничена в окрестности нуля. А это знакомство); для нахождения интегралов, как определенных, так
вот дальше начинаются чудеса: и неопределенных – функция integrate (с которой мы тоже сегодня
познакомимся). Имена наиболее часто используемых функций запом-
нить несложно, а о дополнительных ключах или флагах, в случае чего,
можно прочитать во встроенной справке, набрав ? имя-функции.
Об этих самых ключах к функции limit и осталось рассказать.
Первый ключ называется lhospitallim и задает максимальное коли-
чество применений правила Лопиталя; название ключа и происходит
от фамилии ученого, давшей название самому правилу, которая в
оригинале пишется как L’Hospital. Напомню, правило это гласит, что
в случае неопределенности вида 0/0 или можно продифферен-
цировать числитель и знаменатель – и предел от этого не изменится.
Ограничитель количества применений этого правила нужен для того,
чтобы избежать зацикливаний, которые могут случиться для беско-
нечно дифференцируемых функций, у которых в данной точке равны
нулю либо бесконечности все производные. По умолчанию значение
lhospitallim равно четырем, и мне не удалось сходу придумать пример,
когда этого не хватает – ведь функция поиска предела использует не
только правило Лопиталя, но и другие соотношения; и для всех задан-
ных мною соотношений двух функций с корнями выше четвертого заданных порядков по заданным переменным. К примеру, diff(f, x, 3)
порядка в искомой точке предел был успешно найден и при умолча- означает d3f/dx3, а diff(f, x, 1, y, 2, z, 1) – d4f/dxdy2dz. Единственный
тельном значении. флаг, имеющий прямое отношение к самой функции diff – это флаг
Второй ключ к функции limit – это флаг limsubst, который, будучи derivabbrev, который влияет на отображение производных в ячейках
выставлен в true, позволяет этой функции производить подстановки вывода Maxima. По умолчанию он равен false, и производные обозна-
внутрь неизвестных выражений. По умолчанию этот флаг равен false, чаются в виде дробей с буквой d; если же его выставить в true, произ-
что исключает ошибки вроде такой: водные будут отображаться в сокращенном виде, с переменными диф-
ференцирования записанными в виде индексов:
чена либо область интегрирования, либо подынтегральная функция; и если символ в нем всего один). А вот в качестве результата она уже
делается это все той же функцией integrate: и в таком варианте возвращает список, состоящий из всех корней
заданного уравнения:
В этом примере есть еще два важных момента. Первый – функция И подставляя в оставшиеся уравнения:
%th(). Она, как видно из контекста, вызывается как %th(n) и возвра-
щает n-ю с конца ячейку вывода. Это, так же как и обозначения % и _,
удобно, чтобы не обращать внимания на номера ячеек, и кроме того,
применимо в командных файлах Maxima, которые могут загружаться
в том числе и прямо из интерактивной сессии (с помощью функции
load) – и тогда просто заранее неизвестно, начиная с какой ячейки дан-
ный файл загружен. И второй момент: здесь проиллюстрировано, что
в Maxima операция индексирования списка доступна не только по отно- Теперь можем подставить обратно – и найти значения второй неиз-
шению к именам переменных, но и к вызовам функций; другими сло- вестной, например, для первого и последнего корней из последнего
вами, если функция возвращает список значений, мы можем выбрать списка:
одно конкретное из них, написав его номер в квадратных скобках пря-
мо после вызова функции.
Вернемся к функции solve. А именно, перейдем теперь к реше-
нию систем уравнений. Для этого существует такой вариант записи:
solve([уравнение1, уравнение2, ...], [переменная1, переменная2, ...]);
либо сокращенный, аналогично варианту для одиночного уравнения:
если количество уравнений и количество неизвестных равны, список
неизвестных можно не писать: solve([уравнение1, уравнение2, ...]) (не
забудьте квадратные скобки, иначе Maxima примет его за вариант с
одним уравнением).
Вторая функция из этой группы называется ode2 и предназна- И две функции работают с решениями уравнений второго порядка.
чена она для решения обыкновенных дифференциальных уравне- Так как в общем решении уравнения второго порядка фигурируют две
ний первого и второго порядка; ее название происходит от фразы независимые константы, то эти функции задают уже по два условия
«ordinary differential equations of 1st or 2nd order». Пишется она так: для поиска частного решения. Первая функция выглядит как ic2(общее
ode2(уравнение, зависимая-переменная, независимая-переменная). решение, x, функция-в-точке-x, производная-в-точке-x). Расшифровка
Здесь уже независимая переменная указывается в списке параметров названия аналогична предыдущей функции. Действует тоже аналогич-
функции явно, и потому обозначения вида y(x) не нужны: и функция, и но ей, а в качестве второго условия задает значение производной в той
переменная обозначаются просто одиночными буквами. Также в отли- же заданной точке:
чие от предыдущей функции, ode2 ищет не частное, а общее решение.
Произвольная константа в решении уравнения первого порядка обоз-
начена через %c; в решении уравнения второго порядка таких констант,
естественно, две, и обозначаются они как %k1 и %k2.
Ответы
Есть вопрос по Open Source? Пишите нам по адресу: answers@linuxformat.ru
О
Дело вот в чем: запуская игру из меню KDE,
В этом месяце мы отвечаем Вы находитесь не в директории Pipepanic.
на вопросы по: Программа должна запускаться из своей
директории, чтобы найти нужные ей файлы. Это
1 Pipepanic 9 DansGuardian можно исправить, добавив /home/marrea/Pipepanic-
2 rsync 10Файловым 0.1.3-source/ в поле рабочего каталога в редакторе
3 Fedora системам меню KDE – по сути, добавив команду смены каталога
4 Apache 11 Двухголовым перед запуском, которую вы выполняете в консоли.
5 Терминальному
видеокартам Возможно, также понадобится указать полный путь к
Балансировке файлу. Самый безопасный способ убедиться, что все
дисплею
нагрузки правильно – воспользоваться диалогами выбора
6 Файлу подкачки
Gnome файлов, вызываемых по щелчку на пиктограммах
7 ADSL
12 Mono и Beagle справа от соответствующих полей.
8 KHTML Если вы установите опцию запуска в терминале, Запускайте Pipepanic из меню KDE, предварительно
вы увидите весь вывод программы и, возможно, пой- указав его директорию.
мете, в чем проблема. Именно так я узнал, что игре не
удалось найти файл. В конец запускаемой команды логе /home/dcoldric; исключение – /home/dcoldric/
1 Без паники... добавьте что-нибудь вроде ; sleep 5, чтобы окно тер- MyDownloads, где поддиректории копировать не надо,
В
Я установил игру Pipepanic с DVD к LinuxFormat минала оставалось открытым еще пять секунд после только обычные файлы. Еще одно исключение – не
[HotPicks, LXF82] в свою домашнюю завершения программы: хочу резервировать кое-какие нескрытые каталоги,
директорию и запускаю ее, набрав ./pipepanic в /home/marrea/Pipepanic-0.1.3-source/Pipepanic; sleep вроде /home/dcoldric/cxoffice.
консоли: 5 Все скрытые файлы и директории должны быть
cd Pipepanic-0.1.3-source НБ проигнорированы, кроме нескольких. Например, я
./Pipepanic хочу сохранить /home/dcoldric/.netbeans со всеми под-
Но не могу добавить соответствующий пункт в 2 Скрупулезный скрипт директориями, а также .bashrc и .bash_aliases. И,
В
меню KDE, поправив меню в Центре Управления Попытался написать скрипт для резервирования наконец, я бы хотел, чтобы структура директорий
KDE: не знаю, что набирать в поле команды. Если я важных данных из домашней директории на каталога резервных копий была такой же, как и в моем
помещаю туда /home/marrea/pipepanic-0.1.3-source/ USB-диск с помощью rsync, и теперь нахожусь домашнем каталоге (не считая, конечно, игнорируе-
pipepanic, а затем выхожу и щелкаю на добавившем- в затруднении: озадачили опции --exclude-from и мых директорий).
ся пункте меню Pipepanic, то вижу лишь кувыркание особенно --include-from. У меня Ubuntu 6.06 и rsync Я перепробовал все, что пришло в голову, но без-
песочных часов и кнопку на панели задач. Секунд 2.6.6. результатно. Мой последний вариант выглядел так:
через 30 все исчезает. Это потому, что я установил Вот приблизительно то, что мне нужно. Во-пер- rsync -a --delete --safe-links --exclude-from=/
Pipepanic в свою домашнюю директорию? вых, скопировать нескрытые файлы и директории home/dcoldric/bin/backupExcludes /home/
Marrea, с форума LXF (включая вложенные), находящиеся в домашнем ката- dcoldric/ /media/USB/backup/dcoldric
– при следующем содержимом файла
backupExcludes:
Наши эксперты - /*
+ /dcoldric/
+ /dcoldric/.Creator/
Мы найдем эксперта на любой вопрос! Вы получите ответ на все: от проблем с установкой или модемом до + /dcoldric/.java/
сетевого администрирования; главное – спросить! + /dcoldric/.mozilla/
+ /dcoldric/.mozilla-thunderbird/
Нейл Ботвик Валентин Синицын + /dcoldric/.netbeans/
Попробовав себя в роли В свободное от работы время
провайдера, а также редактора редактор нашего журнала + /dcoldric/.bashrc
дисков Linux Format, Нэйл по разрабатывает KNetworkManager и + /dcoldric/.bash_aliases
праву именует себя мастером на другие открытые KDE-приложения. + /dcoldric/MyDownloads/
все руки. Он с радостью поможет вам в - /dcoldric/MyDownloads/*/
вопросах использования Linux на
- /dcoldric/.*
Кингс Кобблер рабочем столе.
- /dcoldric/cxoffice
Кингс – системный инженер Linux
и администратор Rackspace, - /dcoldric/jdk*
использует Linux десять лет, - /dcoldric/sun
всегда готов отвечать на письма -/dcoldric/SUNW*
сисадминов. Однако ничего не работает.
Дэвид Колдрик [David Coldrick]
КУДА ПОСЫЛАТЬ ВОПРОСЫ:
Пишите на м по адресу: answers@linuxformat.ru или спрашивайте на форуме: www.linuxforum.ru
О
Команда rsync по умолчанию копирует все, а Работающий файл фильтра будет выглядеть так:
опция --exclude задает то, что нужно + /.netbeans/
пропустить. Проще думать, что --include – это + /.bashrc
--do-not-exclude. Указываемый параметр-файл + /.bash_aliases
--exclude-from – фактически файл фильтра. - /MyDownloads/*/
Фильтрация предоставляет контроль, но не имеет - /.*
варианта --filter-from. Вот более корректный способ - /cxoffice
использовать фильтр: - /jdk*
--filter=”merge myfilterfile” Вызывается он такой командой:
Ваш текущий фильтр не работает, поскольку начи- rsync -a --delete --safe-links --filter=”merge ~dcoldric/
нается с -/*, то есть с указания игнорировать все. Вы bin/backupFilter” ~dcoldric/ /media/USB/backup/
говорите, что ничего не происходит – и Вы правы, но dcoldric/
программа тоже права, поскольку делает то, что ей Обратите внимание на завершающий каталог
велено. Так как начинает она с первого вхождения, то назначения /, он может повлиять на результат. НБ Даже Windows-машина может приютить Linux,
перенесите -/* в конец. благодаря VMWare и Fedora Core 4.
Когда фильтр начинается с /, он считает от ука- 3 Которая Fedora?
В
занного исходного пути (в данном случае получается Я купил Fedora Core 4 и специальный выпуск нормально, даже если не был указан в списке. В
~/dcoldric), так что удалите /dcoldric из начала каждой LinuxFormat в 2005 году, и теперь хочу большинстве случаев я выбирал Other Linux 2.6.x
строки, иначе rsync припишет это лишний раз и будет установить Fedora на VMWare (под Windows kernel, но для Fedora Core я выбрал «чистый» Red Hat
искать /home/dcoldric/dcoldric/.mozilla и так далее. XP). В VMWare есть несколько альтернатив для Red Linux. Установка VMWare Tools описана на стр. 142
Хотя это не относится к Вашему текущему филь- Hat, например, Red Hat Linux и Red Hat Enterprise Linux руководства по VMWare Workstation (его можно
тру, следует знать, что 2,3 и 4. скачать с www.VMWare.com/support/pubs/ws_pubs.
+ /foo/bar/ Я подозреваю, что могу отбросить чистый Red Hat html) и пройдет без проблем, если следовать
- /* Linux, но какой из других вариантов подойдет для инструкции:
ничего не найдет, поскольку /* исключит все ката- моей версии Fedora? По идее, это важно, поскольку 1 Удалите все смонтированные CD/DVD-диски.
логи из исходной директории и foo не будет прове- VMWare Tools очень улучшают работу видеокарты и 2 Выберите VM > Install VMWare Tools из меню
ряться никогда, значит, /foo/bar не будет найден. Вы мыши в гостевой ОС. Но во всех дистрибутивах, кото- VMWare.
должны явно указать сканирование foo: рые я пробовал, этого не произошло, и я не могу найти 3 Откройте CD-ROM в гостевой ОС.
+ /foo/ нужной информации в журнале. 4 Дважды щелкните по RPM-файлу VMWare-Tools.
+ /foo/bar/ Иэн Стенд [Ian Stand] 5 Введите пароль root.
О
- /foo/* Почти любой дистрибутив Linux, который я 6 Запустите VMWare-config-Tools.pl в консоли от
- /* пробовал устанавливать в VMWare (а я имени root.
пробовал много), инсталлировался Для финального шага Вам может понадобиться
установленный GCC, если потребуется сборка модуля
для Вашего ядра. Это произойдет, если установщик
Краткая справка по… не найдет уже готового модуля, как, например, для
Fedora Core 5. НБ
В
Я недавно завел web-сервер на Apache для
обслуживания нескольких сайтов. Можете ли
Удостоверьтесь, что ресурсы системы вы мне дать несколько советов по укреплению
распределены справедливо. его безопасности?
С.Монро [S. Monroe]
О
Казалось ли вам когда-нибудь, что ваш компьютер еле Кроме защиты самих страниц с помощью
ползает, не реагирует на ваши действия или вгоняет в HTTP-аутентификации или SSL, где только
клинч жесткий диск? Если такое случится опять, можно, кое-что надо сделать в файле
наберите в терминале top. Эта программа вмещает http.conf, так как настройки по умолчанию могут
много информации в малую площадь. По умолчанию в
помочь атакующему, предоставив ему некоторую
верхней строке отображается: время работы системы
Top показывает, сколько используется памяти и специфическую информацию. Во-первых, убедитесь,
(uptime), число работающих пользователей, число
выполняющихся задач и так далее. Здесь также циклов процессора. что установили директорию ServerTokens в Prod. По
отображается использование процессорного времени умолчанию, этот параметр будет отображать номер
для пользовательских задач (us), системных операций слишком много ресурсов. Понизить приоритет – все Вашей версии Apache, состав используемых модулей
(sy), неприоритетных задач (ni), бездействующих (id) и равно, что сказать процессу «будь повежливей, и даже ОС. Хотя в пределах своей вотчины тут скрывать
ожидающих (wa) процессов. Бездействие показывает, пропускай других вперед». Убийство и понижение нечего, Вы вряд ли захотите сообщать такие данные
какой запас процессорных ресурсов у вас еще есть. приоритета требуют указания идентификатора процесса посторонним лицам [эта рекомендация затруднит
Ожидающие процессы – это такие программы, которые (PID), помещенного в левой колонке. Чтобы по ошибке получение информации об ОС, но не сделает ее
ждут каких-то событий (обычно ввода/вывода). не угробить невиновного, после набора top в X- полностью невозможной, – прим. ред.].
На рисунке показан список задач, отсортированный терминале просто щелкните дважды на нужном ID и
Чтобы посмотреть, что именно показывает Ваш
по использованию процессорного времени – тут легко вставьте его средней кнопкой мыши.
сервер, выполните
определить, кто сожрал львиную долю циклов вашего У top есть множество опций, большинство из которых
CPU. Для смены критериев сортировки, например, по имеют горячую клавишу. Самая нужная клавиша – h, curl -I http://yourwebserver
использованию памяти, нажимайте F. она выводит справочную информацию. Также убедитесь, что ServerSignature установлена
Top не просто отображает ваши процессы: вы можете [Вы также можете попробовать htop – улучшенную в email – это предотвратит «засветку» номера версии
влиять на их работу. Нажмите k, чтобы убить процесс, версию стандартного top, доступную по адресу htop. на страницах ошибок Apache. Хотите ли Вы предоста-
r – чтобы понизить его приоритет, если он отбирает sourceforge.net, – прим. ред] вить Вашим пользователям собственные web-папки?
Нет? Тогда отключите модуль userdir. Если Вы не
О
используете CGI, удалите псевдоним cgi-bin из файла Последовательные порты в Linux
конфигурации. обозначаются, начиная с /dev/ttyS0, который
Еще одна опасная штука – руководство по Apache, соответствует COM1. Возможно, у Вас даже
которое в некоторых сборках установлено как стра- настроена ссылка с /dev/modem на /dev/ttyS0. Вместо
ница по умолчанию. Убедитесь, что у вас запреще- HyperTerminal обычно используют Minicom, доступный
ны листинги каталогов, установив –Indexes в секции для множества дистрибутивов, включая SUSE 10.0.
Options директив <Directory>. Если у Вас работает Minicom имеет режим эмуляции VT100, как раз он Вам
PHP, убедитесь, что директива expose_php в php.ini и нужен. Пакет SUSE не имеет глобальных настроек,
отключена (Off). так что после установки надо сперва запустить
Если другие люди публикуют информацию на minicom -s
Вашем web-сервере, лучше позаботиться, чтобы они от имени суперпользователя. Чтобы иметь пра- Minicom – стандартный последовательный терминал с
не могли менять настройки сервера через .htaccess. во записи в последовательные устройства, Вы также эмуляцией VT100.
Для этого в пределах корневой директивы <Directory> должны входить в группу UUCP; можно это настро-
установите параметр AllowOverride в None, AuthConfig ить в Yast > Security And Users > User Management, но какого размера файл подкачки Вам нужен – допустим,
или другое ограниченное значение, но ни в коем слу- изменения войдут в силу только после перезапуска надо добавить гигабайт. Далее выберите раздел, где
чае не All. КК KDE. достаточно свободного места. На моей машине,
Для запуска любого проприетарного ПО Вам, ско- например, в /opt-разделе размером 4 ГБ занято только
5 Терминал последовательно рее всего, потребуется Wine, и вместо COM1 для 1,5 ГБ.
В
Я поддерживаю некоторое древнее доступа к оборудованию будет использоваться /dev/ Теперь настало время создать файл, который
производственное оборудование, и у меня есть ttyS0. Ваше ПО на QuickBasic тоже заработает под будет использоваться для подкачки. Для этого вам
несколько тестовых программ, я написал их Wine, но в долгосрочной перспективе будет лучше нужна команда dd, среди ее аргументов – размер бло-
много лет назад на QuickBasic. Мониторинг результатов портировать его на что-нибудь вроде Gambas (Linux- ка и их количество. Для создания гигабайтного файла
теста производит HyperTerminal, настроенный на эквивалент Visual Basic) или какой-либо кросс-плат- используйте такую команду:
эмуляцию DEC VT100 на COM1 (9600 бод). Еще я форменный язык типа Python. НБ dd if=/dev/zero of=/opt/swapfile bs=1G count=1
использую анализатор Thurlby LA160 и осциллограф Эта команда создаст файл размером в 1 ГБ и запи-
Velleman. Все это работает под Windows. 6 Захват пространства шет его в /opt/swapspace. Параметр if указывает источ-
В
Не расскажете ли вы, как получить такой же VT100 Мне нужно добавить пространства подкачки в ник записи, of – файл назначения. Отформатируйте
на Linux? Нужно ли мне изучить Wine для запуска мою Linux-систему, но неразмеченного места этот файл:
Thurbly и Velleman под Linux? И что будет с моими на диске больше нет. Что тут можно сделать? mkswap /opt/swapfile
QuickBasic-программами (откомпилированными)? У И. Уоллис [I Wallis] После этого можете активировать его следующей
О
меня сейчас установлены Windows ME и SUSE 10.0. GNU/Linux значительно превосходит другие командой:
Алан Киббл [Alan Kibble] ОС гибкостью, в том числе и по части swapon /opt/swapfile
управления памятью. Во-первых, определите, Активные источники подкачки вы можете увидеть,
Шифрование файлов
Способы сделать ваши файлы недоступными.
7 ADSL
В
Я купил LinuxFormat с диском Mepis [LXF79],
потому что он превосходно определяет
оборудование, а у меня с этим проблемы. К
сожалению, соединение с Интернет не работает и здесь.
Можете ли вы подсказать, как заставить работать ADSL
в Linux? У меня Xircom Creditcard Ethernet 10/100 +
Modem 56. В настройках соединения я нашел, что адрес
дожен присваиваться по DHCP. Попытался скопировать
другие настройки, включая IP-адреса, маска подсети,
шлюз и DNS – ничего не помогает.
Джимми Янссен ван Раай [Jimmy Janssen van Raay]
О
Сетевая сторона этой карты обрабатывается
модулем xirc2ps-cs, в Mepis он включен. Во-
первых, проверьте, была ли обнаружена
карта. Откройте терминал и наберите OS Centre в Mepis – это такое место, где можно настроить все, причем не обращаясь к терминалу.
su -
# введите пароль root ifconfig выберите DHCP на вкладке DNS. Теперь Ваша сеть
lsmod | grep xirc для просмотра ваших сетевых интерфейсов. Их должна настроиться автоматически. Если карта при
Если вывод пуст, значит, модуль не загружен, и должно быть два: lo и ваш сетевой интерфейс, скорее загрузке системы не запускается сама, выполните из-
надо его загрузить: всего eth0. под root такую команду:
modprobe xirc2ps-cs Запустите Mepis OS Centre из меню KDE, перейдите echo “xirc2ps-cs” >>/etc/modules
На сей раз пустой вывод будет значить, что все в в секцию Network и выберите ваш сетевой интерфейс. Она добавит имя модуля в список автозагружае-
порядке. Теперь запустите Во вкладке DNS укажите Use DHCP For IP, а также мых. НБ
8 Какойтотам.rpm
В
У меня два вопроса, и оба касаются забытых
Вопрос
Победитель Вопрос-победитель имен программ.
Первый касается удаления файлов по собс-
твенной глупости (компьютеры делают не то, что вы
Дмитрий Худорожков получает подарочный сертификат на 1000 рублей от интернет-магазина хотите, а то, что вы велите им сделать, и мне надо
LinuxCenter.Ru! Мы поздравляем победителя и просим его связаться с редакцией: info@linuxformat.ru защититься от собственных ошибок). Я когда-то читал
(может, даже и в вашем журнале) про демон undelete.
Украшаем Gnome sleep $delay Все команды удаления файлов перехватываются –
В
Подскажите, пожалуйста, можно ли в GNOME done < $file_list наверное, переопределен системный вызов unlink или
сделать так, чтобы фон рабочего стола Сохраните его куда-нибудь, например, в /usr/ что-то вроде – и файлы вместо удаления перемеща-
регулярно изменялся (в KDE такая функция local/bin/gslideshow (потребуются права root) и сде- ются в корзину. А потом оказывается, что немедленно
называется “Слайд-шоу”)? И нельзя ли извлечь лайте исполняемым: очистить корзину, как большинство и делает, вы не
иконки из EXE-файлов Windows, чтобы затем chmod +x /usr/local/bin/gslideshow можете. Файлы не удаляются, пока размер корзины не
использовать их как значки приложений в GNOME? Скрипт принимает два параметра - имя файла превысит определенного порога или пока объем сво-
Спасибо со списком картинок и задержку в секундах. Файл- бодной памяти не упадет ниже другого порога.
Дмитрий Худорожков список в простейшем случае можно сгенерировать Второй – я web-разработчик, и мне нужно тести-
О
Насколько нам известно, встроенной командой ls: ровать страницы на как можно большем количестве
функции слайд-шоу в Gnome нет, но это ls <каталог с картинками> | sort >~/backgrounds.lst браузеров. Я слышал о проекте браузера KHTML на
не значит, что ее нельзя смоделировать – Тогда команда вызова скрипта может иметь сле- GTK, он бы мне очень пригодился, да не могу вспом-
например, простым shell-скриптом. Ключевой дующий вид нить имя проекта. С Konqueror связываться не хочется:
момент – вызов gconftool для обновления фона /usr/local/bin/gslideshow /home/user/backgrounds. придется целиком загружать KDE, а полнофункцио-
рабочего стола, все остальное вы легко можете lst 60 нальный браузер мне ни к чему. Хватило бы и легкой
подстроить под свои нужды. Самый простой Более продвинутый вариант сценария можно альтернативы.
сценарий может выглядеть следующим образом: найти на форуме Ubuntu: http://ubuntuforums.org/ Дэйв Спейси [Dave Spacey]
О
#!/usr/bin/bash archive/index.php/t-2801.html Что касается первой программы – это,
file_list=$1 Что же касается пиктограмм, сохраненных в наверное, Delsafe (http://delsafe.cjb.net). Она
delay=$2 ресурсах EXE-файлов, рекомендуем Вам извлечь их работает в точности как Вы описали,
while read picture; do при помощи любого редактора ресурсов Windows подменяя удаление файлов на перемещение их в
gconftool-2 --direct --config-source xml:readwrite:/ (подойдет даже тот, что входит в состав MinGW) и корзину. Многократные удаления файла с одним и тем
etc/gconf/gconf.xml.mandatory --type string --set / затем сохранить в формате ICO – с ним работать же именем ассоциируются с отметками времени, а
desktop/gnome/background/picture_filename гораздо проще. ВС программа undel восстанавливает файлы. Другой
$picture вариант – libtrash (http://pages.stern.nyu.edu/~marriaga/
software/libtrash), имеющая похожие функции.
Я подозреваю, что, говоря про проект KHTML, мне приходится использовать официальный драйвер
Вы имели в виду GTK+ Webcore (http://GTK-webcore. для одного из адаптеров вместе с открытым драйве-
sourceforge.net). Этот проект пока сыроват, и вряд ром для другого. Не стоит и добавлять, что мой рабо-
ли он Вам подойдет. Я бы все-таки посоветовал чий стол стал медленным и неуклюжим.
взять Konqueror, особенно если на Ваших страницах Ищу способ установить оба драйвера и как-то про-
используется JavaScript. Не так все плохо: устанав- писать в файле конфигурации, чтобы нужный драйвер
ливать весь KDE не потребуется, нужны лишь пакет использовался для нужного адаптера.
kdelibs и сам Konqueror. Во многих дистрибутивах У меня GeForce FX 5200 (AGP) и Riva TNT2 Model
пакет для KDE теперь расщеплен, и достаточно уста- 64 Pro (PCI).
новить один Konqueror вместо всего kdebase, как Эндрю Фишер [Andrew Fisher]
О
было раньше. НБ Это не разные драйверы, а разные версии
одного и того же. Две различные версии
9 О чернухе модуля ядра заставить работать одновремен-
В
Мой вопрос к вам по поводу черных списков Проект GTK+Webcore разрабатывает версию но невозможно. Тем не менее, альтернативы имеются.
DansGuardian. Что ни день появляется несметное KHTML, использующую GTK. Можно, конечно, для одной из карт взять драйвер
количество сайтов, и системный администратор nv, но Вы и сами убедились, что он тормозит. Можно
должен периодически обновлять эти списки. Не у всех установить старую версию драйвера NVIDIA, одну из
хватает средств на оплату такой работы. Можно ли 10 Плохая опция совместимых с TNT2 – подойдут 1.0.6629 или 1.0.7176,
В
обновлять списки автоматически с помощью web- Я как-то попытался смонтировать один из моих это последние версии, работающие с TNT2 и уже под-
пауков? А если да, то как это сделать, что моя система внешних дисков, и получил следующее держивающие FX5200. На время это сойдет, однако с
может из-за этого выиграть или проиграть? Не могли сообщение об ошибке: последними версиями ядер старые драйверы Nvidia
вы привести необходимый минимум требований, чтоб mount: wrong fs type, bad option, bad superblock on / имеют проблемы, так что будущее обновление ядра
запускать DansGuardian без проблем? dev/hda1, or too many mounted file systems теоретически может все сломать. А можно поискать
Гбенга Дада [Gbenga Dada] Проверив диск с помощью fsck, я получил вот что: дешевую не-Nvidia карту для второго дисплея, или
PS: И что нужно делать, чтобы основать группу поль- fsck.ext3: No such file or directory while trying to open же более новую Nvidia, поддерживающую последние
зователей Linux (LUG) в Нигерии? /dev/hda1 драйверы.
О
Прежде всего учтите: DansGuardian Суперблок не читается и не описывает правильную Самое же простое решение Вы использовали на
занимается не только черными списками. файловую систему ext2. работе. FX5200 – это двухголовая карта. К ней нужен
Это фильтр содержимого, в основном Диск я, допустим, заменю, но данные с него хоте- лишь DVI-VGA-адаптер, если, конечно, у вас не DVI-
работающий с контентом страниц. И он время от лось бы восстановить. Возможно ли это? монитор. Настройки будут те же, что и на работе.
времени обновляет свой список «нехороших» фраз, Д.Клингшотт [D Klingshott] Включите в свой xorg.conf такие строки:
О
так как создатели сайтов постоянно норовят обойти К счастью, да! Файловые системы ext2 и ext3 Section “Device”
фильтрацию, а заодно волей-неволей и Ваш список создают резервные суперблоки, записывая Identifier “NVIDIA Corporation NV34 [GeForce
обновит. Свежий вариант списка находится на http:// их через определенные интервалы на диск, FX 5200] (rev a1)-0”
contentfilter.futuragts.com/phraselists. Вам просто нужно их найти и указать на них fsck после VendorName “NVIDIA”
Использование пауков для обновления черных починки файловой системы. Местоположение Driver “nvidia”
списков URL было бы очень затратно по трафику, суперблоков зависит от размера раздела. Простейший BusID “PCI:1:00:0”
поскольку они будут проверять и те сайты, которые способ их обнаружить – перезапустить mke2fs с Screen 0
Вы никогда не посетили бы, причем используя один ключом -n. Делать mke2fs ничего не будет, но сообщит, НБ
и тот же список фраз. Можно скачивать обновляе- что бы он предпринял:
мые списки URL – некоторые из них распространя- mke2fs /dev/hda 12 Немецкая овчарка
В
ются на коммерческой основе, некоторые бесплат- Данная команда среди прочего выведет список Я использую Linux уже более пяти лет. По роду
ны. Коммерческие списки иногда просто склеивают суперблоков в файловой системе. Используя эту работы мне приходится составлять много
несколько бесплатных; Вы платите за то, чтоб самим информацию, вы можете при помощи fsck восстано- документов, вести переписку. Поэтому, когда
этого не делать. На сайте DansGuardian (секции xtras вить суперблок с одного из этих мест. появилась информация о beagle она меня сразу же очень
и Add-ons) есть скрипты, умеющие скачивать и уста- fsck -b 8193 /dev/hda заинтересовала. Установил FC5 с Вашего диска, KDE (в
навливать последние версии списков. Также Вы може- Здесь 8193 – номер блока, полученный из вывода силу привычки), локаль koi8-r, попытался настроить
те получить их с сайта Squidguard: www.squidguard. предыдущей команды. После этого можете смонтиро- beagle (beagle-0.2.6-1.fc5.1) и столкнулся с двумя
org/blacklist. вать файловую систему как обычно. КК проблемами:
Рекомендации по запуску программы зависят от ее 1 beagle не индексирует файлы с русскими
использования. Для домашней сети требования мини- 11 Две головы лучше названиями.
В
мальны. Основная нагрузка на систему происходит На работе у меня ПК с двумя мониторами и с 2 нет поиска по файлам Microsoft Word (хотя по опи-
при начальной загрузке правил, так что большой объ- дуальной загрузкой: Ubuntu или XP. Дома у санию программы вроде бы должен быть).
ем памяти важнее быстрого процессора. Влияет также меня тоже два монитора. Все работает Вторая проблема решилась установкой внешнего
состав задач, работающих на Вашей машине. замечательно (спасибо вашей статье об использовании фильтра
Все, что нужно для создания группы пользова- двух мониторов), да только моя домашняя машина <filter>
телей Linux – это люди и место встречи или сайт ужасно тормозит. На работе у меня «двухголовая» <mimetype>application/msword</mimetype>
и список рассылки, если Ваша группа существует видеокарта (потому что PCIe), я установил драйверы <extension>.doc</extension>
только в киберпространстве. Никаких формальных Nvidia и получил комфортную работу с аппаратным <extension>.DOC</extension>
требований нет, нужны лишь люди, разделяющие ускорением. <command>catdoc</command>
Ваш интерес к Linux. Одни группы устраивают офи- Дома у меня карта AGP и карта PCI, на два источ- <arguments>%s</arguments>
циальные встречи, с докладами участников, другие ника видео. У них разные чипсеты: одна использует </filter>
просто собираются поболтать про Linux, да и не толь- драйвер nvidia-legacy, другая – новую версию. Сначала Но проблему c файлами, названными кириллицей
ко про Linux. Вы найдете их уставы на сайтах http:// я хотел установить оба набора и указать для каждой (системная локаль koi8-r) победить никак не удается.
en.tldp.org/HOWTO/User-Group-HOWTO.html и http:// видеокарты свой драйвер в настройке X Window. К Можете ли вы помочь мне?
linuxmafia.com/faq/Linux_PR/newlug.html. НБ сожалению, оба драйвера называются nvidia, то есть Константин Макуха
О
Проблема кроется в том, что среда времени
выполнения Mono, используемая Beagle,
ожидает увидеть на диске имена файлов в
кодировке UTF-8. FAQ Mono (http://www.mono-project.
com/FAQ:_Technical) рекомендует просто сменить
системную кодировку, но если это по каким-то
причинам нежелательно, есть обходной путь – MONO_
EXTERNAL_ENCODINGS. Эта переменная окружения
содержит список кодировок, в которые Beagle (как
приложение Mono) попытается «втиснуть» найденное
имя файла. Команда
export MONO_EXTERNAL_ENCODINGS=”koi8-r”
добавленная перед запуском Beagle, решит Ваши про-
блемы. К сожалению, Beagle не предоставляет особых
средств для настройки своего предстартового окружения,
поэтому попробуйте добавить указанную выше коман-
ду прямо в rc-скрипт или сценарий-обертку beagled.
Если Вы используете другие приложения Mono, которые
запускаете из консоли, подумайте также о добавлении ее
в свой файл .bashrc. ВС
Нагрузка на всех
В
В моей фирме несколько web-серверов,
используемых для Интернет/Интранет-хостинга.
Мы хотим регулировать нагрузку по трафику,
однако не хотим покупать балансировщик или
использовать round robin DNS. Можно ли это сделать DansGuardian надежно охраняет пользователя, если обновлять его почаще.
с помощью Linux?
К.Дэвидсон [K Davidson] Пусть это сеть 10.0.0.0, а сеть с web-серверами –
Нужна помощь!
О
Можно! GNU/Linux пользуется Linux Virtual 192.168.1.0. Присвойте машине свободные адреса,
Server (www.linuxvirtualserver.org), код например, 10.1.0.1 и 192.168.0.1, после чего настройте
которого, ipvs, включен в последние версии таблицу маршрутизации по умолчанию для каждого
ядра. А если Ваше ядро старше 2.4.28, нужно просто web-сервера: Для наилучшего ответа на ваш вопрос нам
взять заплатки к ним и перекомпилировать. Вы можете route add -net 0.0.0.0 mask 0.0.0.0 gw 192.168.1.1 нужно знать как можно больше подробностей.
узнать, включен ли ipvs, таким способом: Теперь предстоит настройка LVS: как направлять Детально опишите конфигурацию системы.
cat /proc/net/ip_vs трафик по машинам. Есть несколько балансирую- Если вы получили сообщение об ошибке,
Если файл не существует, попробуйте загрузить щих алгоритмов, включая round robin, соединение приведите текст сообщения и точно опишите
модуль, выполнив с наименьшей нагрузкой и соединение с хэширова- вызвавшие его действия. Если у вас проблемы
modprobe ip_vs нием назначения (узнать, как они работают, можно с оборудованием, то опишите его. Если Linux
Если модуль успешно загружен или уже встроен в на сайте LVS). Например, выберем round-robin – при уже запущен, то выполните в root-терминале
ядро, двигаемся дальше. На выбор есть три варианта этом трафик просто отфутболивается всем серверам следующие команды и прикрепите к письму
реализации LVS: прямая маршрутизация, туннелиро- по очереди, прочие алгоритмы, в основном, такие файл system.txt:
вание или NAT. NAT настроить проще всего, но потре- же. Для операций с таблицей lpvs/LVS вам понадо-
буется лишняя сетевая прослойка. Прямая маршру- бится программа lpvsadm, вышедшая в июле 2003 г. uname -a >system.txt
тизация работает быстрее всего, однако, она может В большинстве современных дистрибутивах она уже lspci >>system.txt
вызвать проблемы у принимающего web-сервера. есть. Если ваш дистрибутив постарше, придется ее
lspci -vv >>system.txt
Предположим, вы выбрали NAT. Вашему балан- скомпилировать.
сировщику загрузки нужны две сетевые карты: одна Первым делом надо настроить VIP-адреса, или
Пожалуйста, помните, что сотрудники
внутри сети, где находится web-серверы, другая в виртуальные IP, где будут получать ваши запросы. Для
журнала НЕ являются авторами или
демилитаризованной зоне (DMZ) или внешней сети – в описанной выше сети выполните следующее:
разработчиками Linux, любых пакетов или
общем, там, куда посылаются ваши HTTP-запросы. /sbin/ipvsadm -A -t 10.1.0.1:http -s rr
дистрибутивов. Зачастую люди, отвечающие за
Теперь добавьте ваши web-серверы в VIP
приложения, выкладывают большую часть
(подставьте свои IP-адреса):
информации на web-сайты. Попробуйте
/sbin/ipvsadm -a -t 10.1.0.1:http -r
почитать документацию!
192.168.1.10:http -m -w 1
/sbin/ipvsadm -a -t 10.1.0.1:http -r
Мы стараемся ответить на все вопросы. Если
192.168.1.11:http -m -w 1
вы не нашли ответ на свой, это, возможно,
/sbin/ipvsadm -a -t 10.1.0.1:http -r
потому, что мы уже ответили на похожий
192.168.1.12:http -m -w 1
вопрос.
Добавятся три web-сервера с одинако-
вым «весом» 1 (см. опцию -w, weight). Если
вы хотите переключить на один из серверов больший
трафик, просто задайте для него больший вес. Чтобы
сервер не принимал трафик вообще, установите его
Наш читатель имеет два монитора, но находит вес в 0. КК LXF
работу с ними слишком медленной
LXFHotPicks
В ЭТОМ МЕСЯЦЕ: Sonik Glipper Transmission KoverArtist
на DVD
Звуковой редактор
Sonik
Версия 1.0.0 Сайт: http://sonik.sourceforge.net
П
ользователи Linux могут гордиться рибутивов и, на всякий случай, на нашем DVD.
превосходными средствами редак- Опционально вы можете использовать модули
тирования звука: помимо отлич- LADSPA – их наличие обеспечивает программе
ной, основанной на GTK и кросс-платформен- дополнительный функционал. Соберите про-
ной программы Audacity (она позволяет вам грамму с помощью команд ./configure, make и
демонстрировать друзьям развитость открыто- make install или установите один из бинарных
го ПО), существуют также и другие инструменты. пакетов, благо мы и их записали на наш диск.
Например, Sonik – основанный на KDE редактор При запуске Sonik вы увидите окно мастера, Sonik включает придется сперва конвертировать их в WAV (в
звуковых файлов с неожиданно широким набо- который проведет вас в нужном направлении набор полезных опций, дальнейшем планируется добавить в програм-
позволяя вам
ром функций. За него следует благодарить Роба в зависимости от того, хотите ли вы записать му поддержку MP3 и OGG).
настроить интерфейс
Уокера [Rob Walker], который вместо того, что- звук, создать пустой файл или открыть уже Когда вы откроете файл, Sonik отобразит
на свой вкус.
бы писать все с нуля, умело соединил в одной существующий. Найдите любой WAV-файл, с волновой профиль, где можно выделять отде-
программе уже существующие наработки. которым можно поэкспериментировать. Вы льные участки и проигрывать их с помощью
Поскольку Sonik является KDE-приложе- обязательно что-нибудь найдете, особенно кнопки Play на панели инструментов. Участки
нием, для его сборки вам потребуется KDE 3.3 если у вас установлены какие-нибудь игры можно копировать, вырезать и вставлять как
(или новее) и пакеты Qt для разработчиков. (подсказка: используйте команду locate wav угодно, а функция Undo позволяет отменить
Также для компиляции нужны библиотеки GSL для поиска через терминал). Sonik не умеет все действия. В нижней части окна программы
и Audiofile, имеющиеся в большинстве дист- открывать файлы MP3 или OGG, поэтому вам вы найдете кнопки Slider и Zoom, позволяющие
перемещаться по файлу; щелчок правой кноп-
кой мыши по волновому профилю позволяет
Изучаем интерфейс Sonik выбрать режим спектрограммы.
Но что же предлагает Sonik помимо базо-
Кнопки воспроизведения Статистика Окно настроек вых инструментов редактирования?
Используйте эти синие кнопки Здесь отображается Кое-что из настроек меняется Вы можете регулировать качество звука
для проигрывания загруженного файла разрядность звука, частота здесь, например, цветовое (число сэмплов, каналов и разрешение), встав-
(однократного и многократного) дискретизации, а также оформление программы.
полезная функция «лупа».
лять участки тишины – в конец дорожки, к при-
и навигации по нему.
меру. Если у вас есть микрофон или соедини-
тельные кабели, то вы сможете заняться оциф-
ровкой аналогового звука, или импортировать
Волновой в программу сэмплы в форматах AIFF и SND.
профиль Хотите выжать максимум из Sonik? Вам
Это графическое
представление понадобятся упомянутые модули LADSPA – спе-
звукового файла. циальные расширения, дополнительные филь-
С помощью левой тры и эффекты. На сайте LADSPA (www.ladspa.
кнопкой мыши можно org) есть ссылки на другие сайты с модулями,
выделять участки, и мы советуем вам покопаться в них – вдруг
а затем копировать
вам что-то да понравится. В состав Sonik входят
их или вырезать.
несколько полезных эффектов, например, уси-
ление звука или волнообразные скачки гром-
Временная
кости, однако гораздо больше интересного вы
шкала
Наведите сюда мышь,
найдете в Сети. В целом, Sonik предоставляет
и вы увидите длину все нужные функции «прямо из коробки», при-
файла с точностью чем в простом и настраиваемом интерфейсе.
до миллисекунды Программа имеет все шансы стать эквивален-
том Audacity для KDE.
Glipper
Версия 0.89 Сайт: http://source.net/projects/glipper
П
одумаешь, буфер обмена. Что может ./configure && make && make install
быть проще? Тем не менее, эта функ- Теперь, при условии, что у вас установлены
ция всегда приятно радует новичков в файлы разработчика GTK, Glipper будет соб-
Linux. В отличие от Windows или Mac OS X, где ран и установлен в директорию /usr/local/bin.
вам нужно явно копировать текст для того, что- После этого вы можете дать команду glipper
бы он попал в буфер обмена, система X Window от имени обычного пользователя, и програм-
запоминает текст, даже если он был просто ма запустится.
выделен. Поначалу это непривычно, но при Не удивляйтесь, пытаясь найти запущен-
умелом использовании эта особенность может ную программу. У нее нет основного окна,
заметно ускорить вашу работу. Glipper – это и она не показывает каких-либо сообщений. Здесь меню Glipper Предположим, что вы работаете с каким-
менеджер буфера обмена, который упроща- Вместо этого в системном лотке появится отображает три либо кодом и копируете строку в буфер обме-
ет переход на Linux путем предоставления маленькая иконка (в IceWM и Xfce она будет фрагмента, которые на. Когда вы скопируете другую строку, пер-
нескольких буферов, между которыми можно на основной панели). Щелкнув по ней, вы мы скопировали вая переместится в Glipper на позицию ниже,
в буфер обмена.
переключаться. увидите меню, которое отображает выделен- однако вы можете сделать ее снова текущим
Несмотря на то, что в описании программы ный в данный момент текст. Меню обновля- содержанием буфера, щелкнув по ней в меню.
сказано «менеджер буфера обмена для Gnome», ется в реальном времени – вы можете прове- Щелчок правой кнопкой мыши вызывает окно
программа, на наше счастье, зависит только от рить это, выделяя различные кусочки текста настроек, где можно задать количество запо-
библиотеки GTK, так что если вы пользуетесь и щелкая по иконке программы. минаемых элементов, а также способ копиро-
другим рабочим окружением, вам не понадо- вания (при явном нажатии Ctrl+C, как Windows,
бится устанавливать полный комплект биб- или просто при выделении – в стиле X11?). Да,
лиотек Gnome. Распакуйте glipper-0.89.tar.gz, «Glipper помещает небольшую Glipper чрезвычайно полезен на рабочем сто-
запустите терминал и перейдите в каталог про- ле, причем его лучшими свойствами можно
граммы. Теперь введите следующие команды
иконку в системный лоток считать незаметность и низкое потребление
(последнюю – от имени суперпользователя): вашего оконного менеджера.» памяти.
Клиент BitTorrent
Transmission
Версия 0.6.1 Сайт: http://transmission.m0k.org
П
риятно видеть, что BitTorrent стал зьями, вы будете приятно удивлены наличием
гораздо большим, чем просто при- версии для Mac OS (и даже BeOS, если у вас
ятная безделушка, и многие люди есть особо чокнутые друзья!).
используют его для распределения трафи- Собрав приложение, наберите Transmission-
ка при скачивании ISO-образов дистрибути- gtk, чтобы запустить графическую оболочку.
вов Linux. С одной стороны, это способствует Теперь можно вздохнуть с облегчением: про-
нелегальному копированию ПО и музыки, но с грамма исключительно проста в использова-
другой стороны, это идеальный способ загруз- нии. Щелкните по кнопке Add (Добавить, +) и
ки, ведь центральный сервер практически не выберите заранее скачанный файл .torrent. Все
нагружается. Для Linux существует достаточно остальное Transmission сделает сама. В стро-
клиентов BitTorrent, однако большинство из них ке состояния появится информация о закачке, Интерфейс
слишком сложны и потребляют много ресурсов включая пропускную способность соедине- Transmission сделан Программа включает несложные настрой-
(привет тебе, Azureus). С Transmission вам будет ния и расчетное время. В любой момент вы предельно простым ки в диалоге Options, где вы можете устано-
гораздо легче работать, так как эта программа можете щелкнуть правой кнопкой мыши на для того, чтобы вить ограничение на скорость закачки – это
не перегружена лишними функциями. панели и получить дополнительные сведения быстро выполнять очень полезно, если во время скачивания
Установка Transmission ничем не отличает- о torrent-закачках, например, число seeder’ов свою работу. вы хотите заниматься другими делами в
ся от таковой в Glipper. Программа состоит из (предлагающих вам скачать файл у них) и чис- Интернете, пока BitTorrent-клиент наблюдает
базовой части, работающей в командном режи- ло активных запросов на этот файл. Эти све- за портом и выделяет на вашем диске место
ме, и графического интерфейса. Не забудьте, дения дают представление о том, насколько под закачку. В программе пока нет справоч-
что для сборки последнего вам понадобятся устойчивым является ваше соединение. ного руководства, однако если вы когда-либо
файлы разработчика GTK. На этом зависимос- скачивали torrent-файлы, вы мгновенно раз-
ти заканчиваются, поэтому скрестите пальцы и «С Transmission легко управиться; беретесь, что к чему. Если вам нужна простая
начинайте сборку. Если Transmission покажется закачка, без графиков и бесконечной статис-
вам самым лучшим решением для работы с
в нем нет лишних функций и тики, которой бомбят вас другие программы,
BitTorrent и вы захотите поделиться ею с дру- подводных камней.» то Transmission должна вам понравиться.
KoverArtist
Версия 0.4.1 Сайт: www.kde-apps.org/content/show.
Hottest
Pick
php?content=38195
Н
а полках редакции LXF валяется бес- из исходных текстов (принцип описан в обзо-
численное множество кое-как под- ре Glipper), не забыв про пакеты разработчика
писанных дисков. Обычно это загру- KDE и Qt. Если все собралось и установилось
зочные диски дистрибутивов, которые мы правильно, просто введите команду koverartist
тестируем, но иногда попадаются и резервные в окне терминала для запуска программы (если
копии, заслуживающие лучшей участи, чем не получается, попробуйте указать полный путь
лежать «голышом» в стопке. Если вы ког- к исполняемому файлу: /usr/local/kde/bin/ Справа вы видите вставить их в проект. Наконец, следует офор-
да-либо записывали музыкальные альбомы, KoverArtist) [а еще лучше – замените при сбор- переднюю и заднюю мить тыльную сторону футляра, куда можно
фильмы или делали архивные копии своих ке вызов configure на configure --prefix=`kde- обложки на стадии поместить оглавление содержимого диска –
любимых дисков, то вам наверняка хотелось, config --prefix`, – прим.ред.]. оформления нумерацию песен аудио диска, раскадровку
чтобы они не только хранили важные данные, фильма и даже список сессий обычного дис-
но и выглядели достойно. В этом вам может Выбор обложки ка. Выбирать действительно есть из чего, и
помочь KoverArtist. За дизайн KoverArtist Стефан Тефернер вам не обязательно помещать сюда просто
KDE-приложение для создания обло- заслуживает награды: гибкость в создании список файлов – можно, например, поместить
жек для дисков было написано Стефаном обложек разных размеров никак не противо- инструкции по применению Live CD.
Тефернером [Stefan Taferner] из-за необходи- речит разумной структуре интерфейса. В окне Итак, в этой программе действительно
мости промаркировать его коллекцию филь- программы есть три вкладки: Project, Options есть все для создания красивых и информа-
мов. Однако программа достаточно гибка и 1 (номер диска, в начале здесь всегда сто- тивных обложек для дисков. Но в KoverArtist
для создания самых разных типов обложек – ит единица), в каждой из которых есть про- есть и некоторые дополнительные возмож-
фильмов, аудио дисков, резервных копий на стые для понимания поля ввода. Во вкладке ности, например, импорт сведений о музы-
DVD и даже обложек для самодельных дис- Project вы задаете тип обложки – это может кальных альбомах из базы данных FreeDB и
трибутивов. Да, если вы только что закончи- быть обычный футляр для CD, слим-бокс или импорт файлов из KМediaFactory. Готовые
ли работу над крутым линуксовым Live CD и коробка под DVD. Ваш выбор автоматически обложки можно сохранить для дальнейшей
хотите придать ему солидный вид, это как раз влияет на размер рабочей области и править распечатки или редактирования. Файлы обло-
то приложение, которое вам нужно. Забудьте вручную ничего не нужно. жек хранятся в формате XML, что позволяет
о прозрачных коробках и процарапанных руч- Затем вы вписываете заголовок и под- вам при желании изменять их вручную.
кой надписях на тыльной стороне диска. заголовок диска; по умолчанию эти надпи- В KoverArtist все находится на своих местах:
Разработчики KoverArtist выпустили уни- си аккуратно подсвечиваются и располага- программой очень легко пользоваться, можно
версальный RPM-пакет (KoverArtist-0.4-1.i586. ются по центру обложки (эффекты можно создавать сложные макеты обложек и вооб-
rpm), который вы, скорее всего, сможете уста- менять). Переключившись на вкладку Options, ще, делать что угодно без помех. Программа в
новить на вашу систему. Пользователи Debian и вы можете задавать изображения для перед- действительности гораздо ближе к версии 1.0,
Ubuntu могут попробовать конвертировать его ней и задней обложки. Для этого вы можете чем предполагает номер версии, поэтому вам
в DEB-пакет при помощи Alien, однако если это заранее отсканировать нужные изображения стоит попробовать ее, если вы хотите сделать
не поможет, попытайтесь собрать программу или же подготовить их в Gimp и лишь потом свои диски презентабельнее.
Righteous
Версия 0.6 Сайт: http://atomskninja.googlepages.com/
righteous!
К
арьера Тетсуя Мизугучи [Tetsuya ет главный исполняемый файл (Righteous),
Mizuguchi] в создании игр очень который можно будет сразу запустить. Для
интересна. Наиболее известны две того, чтобы понять суть игры, запустите
из его разработок: игры Sega Rally и Lumines. демо-сценарий: все работает быстро, но
Конечно, мы мечтаем увидеть открытую можно уловить стратегию.
игру на основе первой, но, честно гово- Смысл игры в Righteous состоит в вырав-
ря, это звучит слишком амбициозно. Тем нивании цветных шариков, которые падают
не менее, у нас теперь есть открытый клон сверху в виде блоков 4х4. Их можно вращать Оцените скучная музыка; кроме этого, вы вряд ли
второй. Righteous от AtomskNinja Software и передвигать вправо или влево, составляя трилинейную будете в восторге от графики, которая здесь
Бена Халла [Ben Hull], представляет собой внизу блоки одного цвета. Играть в игру так интерполяцию явно не на высоте, однако это все не важ-
блочную игру, в которой сочетаются Tetris, же легко, как и в остальные блочно-мозаич- текстур! Или не но – важен процесс! Эта игра удачно сочета-
Columns и другие игры. Оформление здесь ные игры, но несмотря на это, уже совсем оцените. ет достоинства разных блочных игр.
не такое сногсшибательное, как в Lumines, скоро вы подбираетесь к верху экрана и Проект AtomskNinja планирует сделать из
но зато сохранено самое главное – игровой начинается настоящий кошмар! Когда бло- Righteous нечто большее, чем клон Lumines
процесс. кам некуда падать, игра заканчивается. и добавить новые возможности и сюжеты.
Для того, чтобы запустить игру, распа- Составленные блоки одного цвета не Это правильный путь, особенно с учетом
куйте файл Righteous-0.6.tar.gz, перейдите исчезают сразу. Вместо этого через экран того, что обычно разработчики берут один
в директорию игры и дайте команду build. время от времени проходит «линия време- и тот же сюжет и добавляют свои детали
sh. Если у вас установлены пакеты разра- ни», которая «подметает» готовые блоки. только для того, чтобы быть «не такими
ботчика SDL, то эта команда скомпилиру- Во время игры звучит кое-как сделанная как все».
Action
TuxFighter
Версия 0.52 Сайт: http://pygamebook.sourceforge.net
М
ы всегда представляли себе тук- или изменить сложность игры (враги вас
са – талисмана Linux – в образе атакуют сразу или просто лениво снуют по
жизнерадостного баловня-пин- экрану). Начните игру, выбрав пункт Start
гвина, которому все побоку. Разработчики Single Player Game (одиночная игра), и при-
TuxFighter так не считают, поэтому они нимайтесь за мышь с клавиатурой: стрелка-
создали игру, в которой пингвин отражает ми влево и вправо вы поворачиваете пингви-
натиск логотипов Windows. Тукс воюет с на, пробелом стреляете ракетой, а клавиша-
Microsoft, но вовсе не на рынке ОС. Вместо ми W, A, S и D передвигаетесь в пространс-
этого нашего пингвина заслали в космос, где тве. Тем, кто хоть раз играл в стрелялки, эти
он занимается ракетными обстрелами. Игра настройки покажутся знакомыми. Талисман Linux Кому-то эта игра может показаться прос-
похожа на Asteroids, только посвящена опе- Цель игры состоит в уничтожении логоти- всегда той бомбежкой Windows, но мы склонны
рационным системам. пов Windows вашими ракетами. Если, летая представлялся нам видеть в ней большой потенциал. Было бы
Разработчики TuxFighter подготови- по экрану, вы заденете врага, до погибните миролюбивым здорово включить в игру дополнительные
созданием – но и он
ли deb-пакет, который работает на Ubuntu (в игре, к сожалению, только одна жизнь!). значки, например OpenOffice.org, который
поддался темной
Dapper (6.06) и должен также установиться Казалось бы, вполне обычные Asteroids, но бы притормаживал врагов, или самого Херда
стороне Силы.
на современной версии Debian. Если же вы некоторое разнообразие в игру вносят знач- (Hurd), появление которого означало бы, что
работаете на RPM-дистрибутиве, то можете ки дружественных дистрибутивов. Завидев теперь вы точно никогда не выиграете... Все
установить игру из архива TuxFighter52.tgz, логотип дистрибутива, подлетайте к нему и же, игра проста и также притягательна, как
при условии, что у вас есть Python и пакет тогда и пингвина появятся дополнительные и Asteroids, только с линуксовским сюжетом.
привязок PyGame. способности. Значок Ubuntu добавляет защи- Нам понравилось!
После запуска игры вы сразу же увидите ты, а Wine – замораживает логотипы Windows,
меню, где можно переназначить клавиши позволяя вам избежать трудных ситуаций.
Системный анализатор
Hottest
HardInfo Pick
Версия 0.4.1 Сайт: http://hardinfo.berlios.de
П
риведем в пример ситуацию, с кото- 0.4.1.x86.package. После этого можно запус-
рой вы наверняка сталкивались вне тить программу командой HardInfo.
зависимости от того, как долго вы Несмотря на свое название, HardInfo соби-
работаете в Linux. На интернет-форуме вы рает информацию не только о вашем «желе-
пытаетесь описать проблему с дистрибутивом, зе», но и о системе в целом, включая вер-
и кто-то просит подробнее рассказать о вашей сию ядра и подробности настроек X-сервера.
системе. Понятно, что вам хотят помочь, но Наиболее важные данные попадают на экран
дать точный совет не так-то просто! Вам при- Summary (Сводка), но этим дело не ограничи-
дется углубиться в командную строку и выяс- вается, и вы можете ожидать самых подроб-
нить точные версии ядра, библиотеки Glibc, ных сведений практически обо всем: директо-
X-сервера и много чего еще, не считая точных рии с совместным доступом, языки системы, HardInfo отображает чиваются. В составе программы вы найдете
названий комплектующих вашего ПК. HardInfo USB-устройства, съемные диски, мониторы детальные сведения средства замера производительности, кото-
пытается исправить эту ситуацию, отображая оборудования и многое другое описаны с об ОС, в то время как рые тестируют ваш CPU с самых разных сто-
все нужны сведения в виде четкой и логичной большой подробностью. Обзор оборудова- на заднем плане рон, после чего позволяют сравнить результа-
виден аккуратный
структуры. ния во многом напоминает (мало)известный ты с замерами для других CPU. Так вы можете
HTML-отчет.
Скажем отдельное спасибо разработчикам Диспетчер устройств в Windows. узнать свое место относительно Pentium 75
HardInfo, которые сделали для своей програм- На сегодняшний день HardInfo – это луч- или Athlon XP 3200 и при наличии неисправ-
мы Автопакет. Это означает, что вы можете шая утилита для анализа состава вашей сис- ности быстро ее обнаружить.
забыть про зависимости и сборку исходных темы, но на этом ее возможности не закан- Но что еще лучше, HardInfo умеет офор-
текстов. Скопируйте HardInfo-0.4.1.x86.package млять любые отчеты в виде HTML-страниц,
с нашего DVD на свой диск, сделайте его испол-
няемым (в свойствах файла) и дважды щелк-
«HardInfo – это больше, которые вы можете закачать на интернет-
сервер. Так вы получите больше откликов
ните по нему для установки. Можно сделать и чем информация об на призыв о помощи от других пользовате-
по-другому: откройте терминал в директории, лей Linux. Эту программу просто необходимо
где лежит файл и дайте команду: sh HardInfo- оборудовании.» установить!
Файловый менеджер
Dolphin
Версия 0.5.2 Сайт: http://enzosworld.gmxhome.de
K
onqueror содержит столько всевоз- иконками, однако виды можно переключать с
можных функций, что в какой-то помощью панели инструментов в верхней час-
момент его стали ругать за перегру- ти окна – имеются также детализированный
женность и чрезмерную сложность – это не список и двупанельный режим. Под этими
только файловый менеджер, но и web-брау- инструментами расположена область навига-
зер, просмотрщик документов и многое дру- ции, которая помогает перемещаться между
гое. Петер Пенц (Peter Penz), автор Dolphin, папками – при желании эту область можно
сосредоточил свои усилия исключительно на превратить в привычную строку адреса и вво-
управлении файлами и не стал искушать поль- дить путь к директории вручную.
зователей дополнительными, не имеющими к Программа позволяет выполнять все базо-
файлам прямого отношения, функциями. Он вые действия над файлами (копирование, Dolphin отображает мое». Это явно удобнее сложной системы
специально подчеркивает, что его программа перемещение, переименование, удаление), а файлы в режиме «флажков» в классическом стиле Unix.
не конкурирует с Konqueror, а «оптимизирует также некоторые дополнительные, в число списка. Иконки можно Благодаря подсистеме KIOSlave, встроен-
интерфейс для работы с файлами». Сейчас которых входит сжатие папок и возможность сделать больше – ной в KDE, Dolphin можно совершенно про-
на ваше усмотрение.
программа имеет статус «альфа», в то вре- открытия файла в разных приложениях. зрачно работать с сетевыми каталогами через
мя как финальный релиз 1.0 должен выйти Наиболее продвинутой функцией Dolphin FTP, SSH и другие протоколы. Программа так-
в сентябре. является просмотр свойств файла или папки, же поддерживает раннюю реализацию систе-
Для того, чтобы собрать программу из во время которого вам предоставляется самая мы обмена файлами Avahi – пока еще здесь не
исходных текстов, вам понадобятся файлы подробная информация: занимаемое на диске все гладко, но мы надеемся, что эта функцио-
разработчика KDE и Qt, установив которые, вы место, число поддиректорий (если есть), вре- нальность будет доработана к моменту выхо-
сможете скомпилировать программу обычным мя доступа и права. Отдельное спасибо разра- да Dolphin 1.0. На данный же момент Dolphin
способом. Для запуска программы введите ботчику за внятное объяснение прав файлов составляет хорошую компанию Konqueror и
в терминале команду Dolphin. По умолчанию, и каталогов, которые даются в виде понятных идеально подходит тем, кто хочет сосредото-
главное окно программы представляет собой человеку описаний, вроде такого: «Владелец читься на управлении файлами.
одну панель с расположенными «в сетке» может просматривать и изменять содержи-
Ч
уть больше двух лет назад в LXF53 Gnofract 4D кажется сложным приложе-
мы рассматривали Gnofract 1.9, кото- нием, к тому же большая часть формул нам PoDoFoBrowser 0.2
Браузер структуры PDF-файлов
рый умел делать больше, чем прос- мало что говорит. Но несмотря на это, все http://podofo.sourceforge.net
Стандартный
то отрисовывать фрактальные изображения. отлично работает, даже если вы просто хоти- QComicBook 0.2.8
фрактал
Программа работала с фракталами, как с те создать какое-нибудь фрактальное изоб- Просмотрщик сетевых комиксов
Мандельброта http://linux.bydg.org/~yogin
«разными сторонами одного 4-мерного фрак- ражение. В действительности, вам совсем не повернут по осям
тального объекта» – сумасшедший уровень обязательно знать о том, что происходит за ClamTk 2.20
Y и Z, что создает Интерфейс к антивирусу ClamAV
математики, который приносил роскошный отрисовкой сцен. Нет более легкого способа приятный размытый http://clamtk.sourceforge.net
результат. Вам предоставляется необъятный создать уникальные обои для рабочего стола, эффект. Protoeditor 1.0 Текстовой редактор для KDE
контроль над изображением, включая воз- чем сделать это в Gnofract 4D. http://protoeditor.sourceforge.net
можность отдалять или приближать объект по
своему желанию. Распакуйте gnofract4d-3.0.tar.
gz, перейдите в получившуюся директорию и
дайте сначала команду ./setup.py build, а затем
./gnofract4d для запуска программы.
Изменения, произошедшие со времен вер-
сии 1.9 включают новые возможности пуб-
ликации изображений – теперь их можно
закачать на Flickr или отправить по E-mail, не
покидая программы. Также появилась опция
Render to Disk (Отрисовать на диске), позво-
ляющая создавать файлы очень большого Protoeditor: баг не пройдет.
размера, и Warp Param, расширяющая спи-
HomeBank 3.2a1 Менеджер финансов
сок фрактальных формул. Появился редактор http://homebank.free.fr
градиентов, который умеет импортировать Flail 0.2.2 Консольный почтовый клиент на
градиентные заливки из Gimp. Perll http://flail.org
Inkscape 0.44 Мощный редактор векторной
графики www.inkscape.org
Редактор изображений Pen 0.17.1 Балансировщик нагрузки на
HTTP и SMTP http://siag.nu/pen
С
того времени, когда мы рассматрива- ческого редактора. Он не может сравниться с GSAMBAD Административный интерфейс
для Samba, основанный на GTK
ли MtPaint версии 0.45 в LXF63, этот Gimp в плане функциональности, но, несмотря www.gadmintools.org
редактор успел сильно повзрослеть. на это, содержит все необходимое для пов-
Тогда MtPaint годился в качестве Linux-анало- седневного использования. Интерфейс пока-
га MS Paint – приложения для простого рисо- жется привычным для всех, кто хоть раз видел
При увеличении
вания и редактирования, но не для серьезной MS Paint, поэтому, если вам нужно подпра- MtPaint рисует сетку
работы. Теперь его разработкой занимается вить изображения, но вы боитесь потонуть в для более удобного
Дмитрий Грошев, и в этой связи за последние море функций Gimp, обратите внимание на попиксельного
два года произошли важные изменения. эту программу. LXF редактирования.
Наиболее заметные из них таковы: инстру-
менты cмазывания изображения и правки тек-
ста; захват экрана, поддержка прозрачности в
форматах PNG и GIF; поддержка drag-n-drop, GSAMBAD: импортируй и разделяй!
инструмент выделения «лассо» и три новых
локализации программы. Web-дизайнеры FinScribe 0.6 Программа для проверки
порадуются поддержке анимированных GIF- web-страниц
http://hww3.riverweb.com/space/pike/FinScribe
файлов, а художники оценят то, что теперь
KGliv 0.5.1 Просмотрщик графических
программа распознает силу нажатия при рабо- файлов с использованием OpenGL www.kde-
те с планшетами. Как и прежде, вы можете apps.org/content/show.php?content=40392
скомпилировать MtPaint с поддержкой как sshproxy 0.4 Прокси-сервер на Python
GTK2, так и GTK1, что добавляет разработчи- http://penguin.fr/sshproxy
кам много лишней работы, но зато позволяет Mesk 0.1.2 Музыкальный проигрыватель,
написанный на PyGTK http://mesk.nicfit.net
собрать программу на старых дистрибутивах.
MtPaint проделал большой путь от простой
программы до вполне продвинутого графи-
ЧТО-ТО ПОТЕРЯЛИ?
Часто случается, что новые программы зависят от дру-
гих программных продуктов, которые могут не вхо-
дить в текущую версию вашего дистрибутива 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 – версия для
разработчиков.
СОЗДАНИЕ УСТАНОВОЧНЫХ
ДИСКОВ ПРИ ПОМОЩИ
CDRECORD
Дистрибутив Linux
SimplyMepis 6.0
S
implyMepis, бесспорно, один из самых тельно протестированных и поддерживаемых
замечательных дистрибутивов для рабо- пакетов Debian, да еще и получил доступ к
чего стола: он невероятно прост в уста- более новым пакетам рабочего стола.
новке и использовании, включает современ- Это означает, что SimplyMepis 6.0 соеди-
ные программные пакеты и обеспечен под- нил лучший выбор пакетов Ubuntu со свои-
держкой весьма процветающего сообщества, ми собственными инструментами установки
с центром на сайте www.mepis.org. Между и необходимым для рабочего стола лоском.
прочим, он украсил обложку LXF79, где было И более того, Mepis работает в качестве Live-
показано, насколько прост переход на Linux дистрибутива, так что можете сами испро-
через Mepis. А теперь перед нами новый релиз бовать его (или дать другу, ради продвиже-
6.0, и мощь дистрибутива возрастает с каж- ния Linux) без необходимости устанавливать.
дой новой версией. Изначально созданный на Если он вам понравится и вы решите сделать
основе Knoppix, Mepis теперь базируется на его своим любимым дистрибутивом, можете
Ubuntu, поэтому он сохранил набор основа- запустить установщик с рабочего стола – и
оп! Пара минут, пара кликов мышью – и вы
уже в Mepis.
SimplyMepis специально разработан так,
что вам не нужно долго возиться с ним и с
добавлением всяких приложений, чтобы он нашего DVD и войдите в систему как поль- Рабочий стол для
заработал так, как вам хочется. зователь ‘demo‘ с паролем ‘demo’. (если SimplyMepis –
Дистрибутив включает рабочий стол потребуются права суперпользователя, то фирменная версия
KDE 3.5.3 с ядром 2.6.15 и X.org 7.0, кото- его пароль – ‘root‘) Ниже приводится краткое KDE 3.5.3.
рые и составляют его основу. В нем имеется руководство по установке SimplyMepis на ваш
OpenOffice.org 2.02 – для работы, а для сер- жесткий диск. Если у вас возникнут проблемы,
Для настройки системы в SimplyMepis есть финга – популярный браузер Firefox. Чтобы заходите на www.linuxforum.ru или
простые, но удобные инструменты. запустить SimplyMepis, загрузите ваш ПК с www.mepis.org/forum.
3 Копиро- 4 Пере-
вание загрузка
Установщик начнет ...например, куда
копировать файлы установить
на ваш жесткий загрузчик? Можете
диск; это займет от принять ответы по
10 до 30 минут. умолчанию.
После этого Наконец, программа
возникнут вопросы сообщит, что надо
по настройке… перезагрузить
компьютер, так что
извлеките DVD –
рестарт, и готово!
Дистрибутив Linux
Knoppix 5.0
K
noppix был одним из самых популяр-
ных и уважаемых Live-дистрибути- Исследуем рабочий стол Knoppix
вов за последние три года и сегодня
занимает почетное место в десятке лучших
Konqueror
хит-парада DistroWatch.com. Этот дистрибутив Сориентируемся Файловый
был одним пионеров использования Live-дис- Щелкните по этим менеджер KDE
трибутива как рабочего (а не просто в качестве иконкам для доступа может быть также
технической новинки), развивая идею «порта- к жесткому диску и вашей весьма достойным
тивного Linux» и создавая возможность про- домашней директории. web-браузером
демонстрировать Linux друзьям и сотрудни- и FTP-клиентом.
кам. Благодаря превосходной процедуре рас-
Tux
Эта кнопка с пингвином Наглядность
познавания устройств и впечатляющей скоро- открывает доступ Щелкните по
сти работы, Knoppix быстро зарекомендовал к инструментам настройки этому флагу
себя в качестве стандарта де-факто для Live- Knoppix. для изменения
дистрибутивов Linux. раскладки
Приложения клавиатуры. Флаг
За последние пару лет появилось мно-
Кнопка K, подобно меню США подсказывает,
жество других Live-дистрибутивов (а некото- что используется
Пуск в Windows,
рые дистрибутивы, например, Ubuntu, обзаве- американский
открывает доступ
лись Live-версией), но Клаус Кноппер [Klaus английский.
к программам.
Knopper], человек, который стоит за Knoppix,
не снижает темпов развития. Дистрибутив
базируется на тестовой и нестабильной ветвях ные стабильные релизы. Фактически, одним вы можете выбрать и другой рабочий стол в
Debian – так что его пакеты вовсю пользуются из применений Knoppix можно считать загруз- начальном меню загрузки – например, менее
результатами тщательной работы сообщества ку Debian Testing с последующим обновлением ресурсоемкий IceWM, который отлично под-
пользователей Debian, предоставляя вам более некоторых пакетов (по необходимости). ходит для старых машин. Чтобы установить
современный выбор программ, чем постоян- Версия Knoppix на нашем DVD включает Knoppix на вашу машину, смотрите приведен-
ядро 2.6.17rc, X.org 7.0 и KDE 3.5.2 в качест- ную ниже инструкцию, и помните: инсталля-
ве рабочего стола по умолчанию. Поскольку тор находится в процессе разработки, так что
это Live-дистрибутив, можете работать с ним сначала сделайте резервные копии всех ваших
прямо с диска, без установки, а если он вам данных, а уж потом приступайте!
понравится, можете установить его и на жест- Если возникнут проблемы, есть уйма
кий диск. Рекомендуемые системные требова- ресурсов, к которым можно обратиться. На
ния для работы в Knoppix – процессор 500 Mгц диске имеется подробное руководство по
и выше, и как минимум 128 MБ ОЗУ. установке, а также список часто задаваемых
Для запуска Knoppix, загрузите ваш ПК вопросов. Основной форум по Knoppix – www.
с нашего DVD и выберите Knoppix в меню knoppix.net/forum – посещают тысячи постоян-
загрузки, используя клавиши управления ных читателей, которые ответят на все ваши
курсором. Он проанализирует оборудование, вопросы.
запустит некоторые скрипты и все это завер- Еще можно посетить www.linuxforum.ru.
Knoppix предлагает богатый выбор шится появлением рабочего стола KDE, хотя Удачи!
Unix-подобная ОС
Дистрибутив Linux
П
одумайте об операционной системе
на компьютере в стиле Дзен?
на базе BSD, сфокусированной на
Именно этот вопрос задала
использовании на рабочих столах, и команда Zenwalk Linux, кото-
первое, что придет в голову, будет, очевидно, рая как пчелка трудится над
Mac OS X. Но есть ведь еще и PC-BSD, ответ- своим компактным дистрибу-
вление FreeBSD – сильный соперник Linux на тивом Linux. Основанный на
фронтах борьбы за пользовательские ПК. Если Slackware, Zenwalk (бывший
у вас есть LXF77, вы, возможно, помните нашу MiniSlack) создан быстрым (он Для ускорения ритма
статью про операционную систему FreeBSD, а использует легковесную рабо- Zenwalk использует рабочий
если нет, вот вам кратенький обзор ОС и пере- чую среду Xfce, не заставляя стол Xfce.
ваш процессор вязнуть в биб-
числение причин, по которым стоит поработать Дополнительным преимущес-
Вся мощь FreeBSD, но при этом – новый лиотеках Gnome и KDE), раци-
с ее воплощением для рабочих столов. твом является растущее сооб-
графический инсталлятор и инструменты ональным (например, предус-
FreeBSD – Unix-подобная операционная мотрена только одна програм- щество пользователей Zenwalk,
настройки! которые уже составили полное
система с открытым кодом. Появившись в ма на каждую задачу, чтобы
1993 году, она быстро обзавелась множест- По части настольного применения FreeBSD не перегружать меню вариан- руководство пользователя с инс-
вом поклонников в серверном мире благодаря никогда не была в первых рядах; она, конечно, тами) и полным. Команда, со- трукциями по установке (кото-
своей производительности и стабильности. К поддерживает основные устройства, но для ее здавшая дистрибутив, проде- рое вы найдете на нашем диске
лала достойную восхищения в формате PDF).
несчастью, юридические проблемы, появив- администрирования нужен опыт работы в Unix.
работу, упаковав солидное Для установки Zenwalk, за-
шиеся на ранней стадии и связанные с кодом, Поэтому Крис Мур [Kris Moore] и его команда
количество программ в один пишите образ ISO из раздела
на несколько лет отбросили ее назад, дав взяли FreeBSD, добавили новые инструменты Distros/Zenwalk нашего DVD на
CD – а с помощью инструмен-
шанс народившейся ОС Linux стать основным конфигурации и графическую программу уста- CD-R, затем загрузите компью-
та управления пакетами Netpkg
выбором свободного варианта Unix. Сегодня новки, привели в порядок рабочий стол и яви- тер с вновь записанного диска.
вы можете натаскать кучу по-
FreeBSD набрала силу и умеет работать почти ли миру в качестве PC-BSD – «разработанной с лезного из сети. (не забудьте, что вы должны за-
со всеми открытыми приложениями для Linux, учетом интересов обычного пользователя». Zenwalk – прекрасный дис- писать его как образ диска, а не
а специалисты FreeBSD отличаются строгой Одним из новшеств является формат паке- трибутив, чтобы дать вторую просто скопировать файл. Вам,
дисциплиной разработки, благодаря которой тов PBI; он включает все зависимости про- жизнь немного устаревшим возможно, понадобится выста-
количество ошибок удерживается на весьма граммы (скомпонованные статически), поэто- машинам. Если у вас процес- вить в настройках BIOS загруз-
сор класса Pentium 3, 128 МБ ку с CD-ROM, а не с HDD). Если
низком уровне, а время безотказной рабо- му установка ПО не требует никаких усилий.
ОЗУ и 2 ГБ жесткого диска, он при установке возникнут про-
ты – на высоком. Сейчас, в версии 1.2, PC-BSD обрела зре-
будет работать куда быстрее, блемы, зайдите на сайт на www.
лость превосходной операционной системы zenwalk.org, где вы найдете по-
чем Fedora или SUSE, в боль-
для настольных ПК, она – идеальный способ лезные форумы, на которых вам
шой степени благодаря тому,
расширить горизонт, без отрыва от привычно- помогут другие пользователи
что рабочим столом по умол-
го Linux-окружения. А еще FreeBSD наградила чанию является Xfce. Zenwalk.
ее впечатляющей стабильностью.
В разделе Дистрибутивы (Distros) наше-
го DVD – два CD-ISO-образа для PC-BSD 1.2;
запишите их на CD-R и начните установку,
И наконец…
загрузившись с первого диска. (Не забудьте Несколько кратких заметок по поводу прочих
сначала сделать резервные копии данных!) изюминок DVD. В раздел Интернет мы включили
Перед установкой прочтите документацию на Opera, быстродействующий браузер, рассмотренный
диске и посетите www.pc-bsd.org, если потре- на стр.10, а в раздел Рабочий стол поместили
На www.pbidir.com находятся автономные несколько удаленных клиентов рабочего стола, о
двоичные пакеты для работы с PC-BSD. буется дополнительная информация. которых писали в Сравнении. Любители загадочного
могут насладиться Minix 3, маленькой Unix-подобной
ОС, с которой начинал Торвальдс до того, как приступить к
написанию собственного ядра. Ну, и чтобы расслабиться после
беспокойного дня, загляните в раздел Игры, где вы найдете новые
релизы развлекательных программ. Sturmbahnfahrer – потрясающий
3 Извлечь! тренажер вождения, в котором имеются маршруты с препятствиями;
Настроив опции, Gnome Hearts – классическая карточная игра; Tavli 3d поставит на
выберите в меню ваш рабочий стол греческие нарды. Наслаждайтесь! LXF
пункт Start
Installation. Начнется
копирование
файлов. Когда
инсталлятор
закончит работу,
извлеките DVD,
и теперь компьютер
перезагрузит
Knoppix с жесткого
диска.
Linuxlustkraftwagen. Дрынь, дрынь!!!
Novell
Денис Игнатов +7 812 965 7236 advert@linuxformat.ru
Заместитель генерального директора
Софья Виниченко
Генеральный директор
Павел Фролов
УЧРЕДИТЕЛИ
частные лица
ИЗДАТЕЛИ
Павел Фролов, Станислав Медведев
vs Red Hat
Отпечатано в типографии «Текст», ООО «ППК «Текст»
188680, Ленинградская область, Всеволожский район, Колтуши, д.32
Заказ _____
Пре–пресс: d.r.i.v.e-group
КОНТАКТНАЯ ИНФОРМАЦИЯ
England: Linux Format, 30 Monmouth Street, Bath BA1 2BW
Tel 01225 442244 Email linuxformat@futurenet.co.uk
Россия: Санкт-Петербург, ул. Гончарная, 23, офис 54,
телефон: (812) 717-00-37
Email: info@linuxformat.ru, Web: www.linuxformat.ru Гаэль Дюваль возвращается
Авторские права: Статьи, переведенные из английского издания Linux Format, являют-
ся собственностью или лицензией Future Publishing Ltd (Future plc group company). Все
права зарегистрированы. Никакая часть данного журнала не может быть повторно
Основатель Mandrake Linux вернулся с новым
опубликована без письменного разрешения издателя.
Все письма, независимо от способа отправки, считаются предназначенными для дистрибутивом. Встречайте – Ulteo!
публикации, если иное не указано явно. Редакция оставляет за собой право корректи-
ровать присланные письма и другие материалы. Редакция Linux Format получает
неэксклюзивное право на публикацию и лицензирование всех присланных материа-
лов, если не было оговорено иное. Linux Format стремится оставлять уведомление об
авторских правах всюду, где это возможно. Свяжитесь с нами, если мы не упомянули
вас как автора предложенных вами материалов и мы постараемся исправить эту
ошибку. Редакция Linux Format не несет ответственности за опечатки.
Проблемы настольного Linux
Все присланные материалы могут быть помещены на CD или DVD-диски, поставляемые
вместе с журналом, если не было оговорено иное. Почему Пол Хадсон боится Gnome 3.0
Ограничение ответственности: используйте все советы на свой страх и риск. Ни при
каких условиях редакция Linux Format не несет ответственность за повреждения или
Интервью LXF
ущерб, нанесенные вашему компьютеру и переферии вследствие использования тех
или иных советов.
За содержание рекламных материалов редакция ответственности не несет.
Linux – зарегистрированная торговая марка Линуса Торвальдса (Linus Torvalds). Интервью
Название «GNU/Linux» заменяется на «Linux» в целях сокращения. Остальные торговые
марки являются собственностью их законных владельцев. Linux Format является торго-
вой маркой Future Publishing Ltd (Future plc group company).
Новости Syllable – из первых рук
За информацией о журналах, издаваемых Future plc group company, обращайтесь
http://www.futureplc.com
B AT H • L O N D O N • M I L A N • N E W Y O R K • PA R I S • S A N D I E G O
•SAN FRANCISCO •
118 Linux Format Xxx 2006
ПОДПИСКА НА LINUX FORMAT
ПОДПИСКА В ЛИНУКСЦЕНТРЕ
Сколько стоит подписка?
Плюсы подписки
- подписка дешевле!
- гарантированное получение
нового номера журнала!
ПОДПИСКА НА LINUX FORMAT
ПОДПИСКА ПО КАТАЛОГАМ СНГ И БЛИЖНЕГО ЗАРУБЕЖЬЯ
Каталог «Российская Пресса» – совместный проект Белоруссия
Государственного предприятия «Казпочта» , Агентства • по Каталогу изданий стран СНГ через РГО «Белпочта» (220050, г.Минск, пр-т
«Книга-Сервис» и АРЗИ. Ф.Скорины, 10);
Грузия
Блок изданий АРЗИ в национальных Каталогах • по списку номенклатуры «АРЗИ»» через АО «Сакпресса» (380019, г.Тбилиси,
Украины и Беларуси. В Азербайджане, Армении, ул.Хошараульская, 29 ) и АО «Мацне» (380060, г.Тбилиси, пр-т Гамсахурдия, 42);
Грузии, Киргизии, Узбекистане и Молдове - по изда- Казахстан
ниям, включенным в Объединенный каталог, распро- • по Каталогу «Российская Пресса» через ОАО «Казпочта» и ЗАО «Евразия пресс»;
страняемые через АРЗИ. Молдавия
• по каталогу через ГП «Пошта Молдавей» (МД-2012, г.Кишинев, бул.Штефан чел
Азербайджан Маре, 134);
• по Объединенному каталогу российских изданий • по списку через ГУП «Почта Приднестровья» (МD-3300, г.Тирасполь, ул.Ленина, 17);
через Предприятие по распространению печати • по прайс-листу через ООО Агентство «Editil Periodice» (2012, г.Кишинев, бул. Штефан
«Гасид»(370102, г. Баку, ул. Джавадхана, 21); чел Маре, 134).
Армения Узбекистан
• по списку номенклатуры «АРЗИ» через ГЗАО • по Каталогу «Davriy nashrlar» российские издания через Агентство по распростране-
«Армпечать» (375005, г.Ереван, пл.Сасунци нию печати «Davriy nashrlar» (7000029, Ташкент, пл.Мустакиллик, 5/3, офис 33);
Давида, д.2) и ЗАО «Контакт-Мамул» (375002, Украина
Г.Ереван, ул.Сарьяна, 22); • Киевский главпочтамт.
• Подписное агентство «KSS» Телефон/факс (044)270-62-20, 270-62-22
АЛЬТЕРНАТИВНЫЕ
АГЕНСТВА РФ
Агентство «Интер-Почта»
(095) 500-00-60, курьерская
доставка по Москве.
Агентство «УралПресс»
• Екатеринбург, Березовский,
В. Пышма, Первоуральск
тел. (343) 375-80-71,
375-84-93, 375-84-39,
факс 375-62-74,
info@ural-press.ru
• Нижний Тагил
тел. (3435) 411448, 417709,
ntagil@ural-press.ru
• Челябинск
тел. (351) 262-90-03,
262-90-05,
pochta@chel.surnet.ru
• Пермь
тел. (3422) 60-24-40,
60-22-95, 60-35-42,
parma-press@permonline.ru