7

Add to Favourites
Post to:

Windows в Linux » Google » OOo » Mono Главное в мире Linux LXF DVD Жизнь рядом с Windows Запускайте Windows-приложения в Linux и наоборот: кросс-платформенная нирвана начинается здесь – на с. 40 FREE! Офис от Google: время выйти в Сеть? с. 48 Web-чертеж Изучите тэг canvas и рисуйте с JavaScript с. 78 Безопасность Производительность Поддержка Ассортимент пакетов Сообщество Как выступит ваш любимый вариант Linux? Конкурс дистрибутивов Июль 2007 № 7 (94) Wireshark Анализ сетевого трафика – для пользы и для забавы! с. 70 Станете ли вы рисковать своим делом и строить бизнес исключительно на Open Source? Андреас Типальдос из Xandros – бизнесмен от Linux 8 Гб отборных дистрибутивов! Плюс: Opera 9.2, Blender, Ответы, Thunderbird и многое другое! Июль 2007 Linux Format 1 Команда LXF снова с вами! В этом месяце они тестировали лучшие дистрибутивы Linux, поэтому мы спросили: каков из себя идеальный дистрибутив, который никогда не был выпущен? К Вашим услугам... Именно так назывался спецрепортаж этого номера до тех пор, пока не прошел через добрые руки литературного редактора. Быть может, в этом действительно что-то есть? Конкурс (в особенности конкурс красоты) — это, конечно, не всегда дружеские посиделки (случается, даже бритвы в туфли соперницам подкладывают), но по крайней мере, мероприятие, не агрессивное по своей природе: претенденты просто показывают себя с лучшей стороны, а жюри выставляет оценки. В среде пользователей Linux, однако, зачастую применяется иной подход к определению победителя: думаю, с «религиозными войнами» встречался каждый, кто хоть раз заходил на форум Open Source-тематики. Зачастую весь спор строится на переинчивании аргументов соперника: «А Mandriva лучше, потому что ее можно настраивать из графики. — GUI для настройки? Да я за это...». Приятно, конечно, что такой разговор можно продолжать до бесконечности (этим он напоминает старую игру в «физиков и лириков», которая заканчивается, когда «мама позовет ужинать»), но ведь можно поразить оппонента не словом, а делом. Ругаете Slackware за отсутствие приложений и поддержки чего-то интересного, но при этом соглашаетесь, что это простой и быстрый дистрибутив? Соберите необходимые пакеты и отправьте на LinuxPackages.net. Недолюбливаете OpenSUSE за излишний вес? Присоединяйтесь к проекту OpenSUSE SLICK (сейчас, кстати, самое время это сделать). Тогда и разговор станет более предметным, и пользы для сообщества будет больше. LXF Валентин Синицын Главный редактор info@linuxformat.ru Как с нами связаться Письма для публикации: letters@linuxformat.ru Подписка и предыдущие номера: subscribe@linuxformat.ru Техническая поддержка: answers@linuxformat.ru Проблемы с дисками: disks@linuxformat.ru Общие вопросы: info@linuxformat.ru Web-сайт: www.linuxformat.ru Адрес редакции: Россия, Санкт-Петербург, ул. Гончарная, 23, офис 54. Телефон редакции: (812) 717-00-37. Дополнительная информация на стр.128 Приветствие Главное в мире Linux Дистрибутивы на ринге Пол Хадсон GNU/X11/Gnome/OOo/Vim/Gimp/Mono/Evolution/Linux – понравится всем, кроме отдела марке-тинга. Грэм Моррисон У Limerix не будет пингвина Надоел он им хуже хинина. Зато будет червяк (Может, автор – рыбак?), Хоть и странная выйдет картина. Майк Сондерс Snookbuntu. Разновидность Ubuntu, где щелчок мышью звучит как удар шаром о борт, а единственное запущенное прило-жение – Foobilliard. Ладислав Боднар Slackware 1.0 (1993). С ядром 0.99pl11-alpha и 24 дискета-ми первосортного ПО, компьютерная революция уверенно двинулась по наме-ченному пути. Ребекка Смолли Встраиваемый дист-рибутив, который работал бы на моем калькуляторе. Это единственное элект-ронное устройство, с которым я чувствую себя комфортно. Эфрейн Эрнандес-Мендоса Дистрибутив, пока-зывающий при стар-те видеозапись голов, забитых сбор-ной Мексики на Кубке Мира – всех четырех часов. Нейл Ботвик RTFM Linux: дистри-бутив, находящий ответы на любой вопрос и читающий документацию, пока вы заняты своими делами. Энди Хадсон Дистрибутив «на замену Windows»: сохраняющий все внешние признаки этой ОС, но имею-щий ядро Linux внутри. Энди Ченнел Хочу постмодер-нистский дистрибу-тив, рефлексивно оспаривающий все поползновения на тезис «Правды нет». Миссия журнала • Пропаганда свободного ПО в России • Продвижение решений с открытым кодом в бизнес-сообществе • Поддержка российского Open Source сообщества • Организация трибуны для разработчиков свободного ПО • Обратная связь между разработчиками и потребителями ПО 2 Linux Format Июль 2007 Кросс-платформенная нирвана Спецрепортаж из двух частей: взгляните на свою ОС в новом свете Подсказка: это не E? C и не D… с. 30 Что за штука... c. 40 Весь номер – прямо как на ладони: приятного чтения! Содержание Учебники Система Обмен файлами ..............................................62 Как обеспечить доступ к нужным файлам из любой точки мира посредством FTP или сетевых хранилищ — руководство для начинающих. Calc Макрос, загружающий данные ......................66 Пара строк кода для OpenOffice.org может сохранить для вас массу времени: макрос сам загрузит котировки в Calc и отобразит их в виде графика. Wireshark Следим за сетью ............................................70 Используйте пакетный анализатор в своей собственной сети и узнайте, насколько беззащитны ваши данные — первыми. Mono Используем многопоточность ....................... 74 Узнайте, как создать потоки и запустить приложение Mono на нескольких процессорных ядрах. Попутно мы взломаем хэш SHA1. canvas Графическое web-приложение ......................78 Используйте новый HTML-тэг и превратите превратите web-страницу в холст виртуального художника. GTK+ Буфер обмена и VFS .......................................82 Познакомимся с продвинутыми технологиями GNOME и расширим возможности нашего текстового редактора. Java EE Команды и фабрики .......................................86 Два новых паттерна, которые помогут сделать ваши Java-приложения более гибкими. LaTeX Программирование .........................................90 Создайте новые команды или переопределите уже существующие, а затем заверните это в пакет и отправьте на CTAN. Электронные подписи Практикум ........................................................94 Защитите свои данные от подделки – используйте цифровые сертификаты в популярных открытых приложениях. Cinelerra Путь аниматора ...............................................98 В Cinelerra можно монтировать не только документалистику — и чтобы доказать это, мы создадим небольшой мультфильм. Защита информации OpenVPN за 10 минут ...................................101 Wireshark показал, что ваши пароли доступны самому завалящему крекеру? Так осложните ему жизнь — работайте через VPN! «Станете ли вы рисковать своим делом и строить бизнес исключительно на Open Source?» LXF ИНТЕРВЬЮ Андреас Типальдос c. 26 LXFHotPicks Лучшие новинки открытого ПО на планете ..................................112 LXF DVD94 Да! Ubuntu 7.04 есть на нашем диске. Если коричневый — не ваш цвет, попробуйте три других дистрибутива. Майк вам покажет ........................ 118 Когда этот мир вам надоест, сотворите себе новый. Июль 2007 № 7 (94) Ubuntu Де-факто стандарт для домашних пользо-вателей, отличающийся от стандартной версии настолько, насколько это возмож-но – мы добавили сотни дополнительных пакетов. Счастливые пользователи! Mandriva 2007 Spring Ищете легкий путь в мир Linux? Этот дист-рибутив полон прекрасных программ и великолепных графических конфигурато-ров. Debian 4.0 Крепкий, рафинированный, надежный дис-трибутив – идеальный выбор для рабочих станций и серверов опытных пользовате-лей. SimplyMepis Один из самых привлекательных Live-дист-рибутивов, хороший способ проверить Linux-совместимость вашего нового ПК.Июль 2007 Linux Format 3 Обзоры Dofus .........................................12 Мы не пытаемся вас обидеть: Dofus — это всего лишь имя многопользовательской ролевой игры. Попробуйте сами! HP Laser Jet 2700n...................14 Мы сравнили работу бюджетного «лазерника» в Linux и Windows. Mandriva 2007 Spring ...............15 Некогда рисковый дистрибутив: возвращается ли он на острие атаки? EnergyXT 2 ...............................16 Пришло время освободить музыку от бремени треков и фейдеров? Cedega 6 ...................................17 Oblivion наконец-то доступен для Linux — ура бравым парням из TransGaming! Сравнение: онлайн-резервирование FilesAnywhere ...........................19 Flipdrive .....................................19 IBackup ......................................20 IceBackup ..................................21 XDrive ........................................21 Rsync.net ...................................22 Обзор новой Linux-версии Dofus, выпущенной для английского рынка. LXF DVD внутри! с. 125 Постоянные рубрики Спецрепортаж Подпишись на Linux Format и сэкономь! Windows в Wine .............................. 40 Запустите в Linux программы, к которым вы привыкли. FOSS за пределами Linux .............. 44 Свободное ПО на проприетарных платформах. Решения Google ............................. 48 Заставим офисный пакет работать через web. nginx – мал да удал ....................... 52 Отечественный web-сервер: чем же вам не угодил Apache? Сияй, безумный бриллиант! .......... 54 Превратите свой Intel Core 2 Duo в ZX Spectrum или Amiga! А также... Конкурс дистрибутивов Кто выйдет из этой битвы победителем? c. 32 OpenGL не дает погонять на пингвинах? Гони на стр. 104! Содержание Новости ...............................04 DistroWatch .........................24 Ладислав Боднар изучает клоны Red Hat, мультимедийную разновидность Ubuntu и Fedora 7 без Core. Интервью LXF .....................26 Как Андреас Типальдос собирается конкурировать с Red Hat и Novell. Что за штука... ...................30 Языки программирования достигли невиданных алфавитных высот – встречайте E! Ответы ..............................104 В этом месяце: удаляем Windows, ограничиваем Интернет-доступ для детей, работаем удаленно и сортируем музыку. Школа LXF ........................126 Международная Олимпиада по информатике мигрирует на Linux. Через месяц .....................128 Что ждет нас в августе?4 Linux Format Июль 2007 Новости ГЛАВНЫЕ НОВОСТИ: Mandriva приходит в Россию GPL3 Microsoft в каждый дом FOSS от ЮНЕСКО И снова об ODF Linux-мобилизация Новости начиная от начального знакомства с Linux-сис-темами, и заканчивая сетевым администриро-ванием. Стоит также отметить, что все курсы сертифицированы независимой организацией LPI (Linux Professional Institute) и не имеют жесткой привязки к конкретному дистрибу-тиву Linux, что позволяет значительно расши-рить число желающих получить соответству-ющие навыки. Подобные шаги разработчика Linux-дист-рибутивов с мировым именем также говорят о том, что сегодня российский рынок ПО ста-новится одним из наиболее перспективных для продвижения свободного программного обеспечения и немалую роль в этом сыгра-ла борьба российских правоохранительных органов с распространением нелицензионного ПО, а также повышение компанией Microsoft цен на свои программные продукты в России. До последнего времени потребности россий-ского рынка в операционных системах Linux обеспечивались в основном двумя российско-украинскими фирмами – AltLinux и ASPLinux. Теперь у них появился достаточно сильный конкурент, способный значительно потеснить позиции вышеназванных компаний. Впрочем, в большей степени компания Mandriva наце-лена на пользователей Windows-систем, не желающих или не имеющих возможности переходить на новые дорогостоящие и весь-ма требовательные к аппаратным средствам разработки редмондского гиганта, поэтому можно достаточно уверенно прогнозировать уменьшение числа приверженцев проприе-тарного ПО и рост аудитории Linux-пользо-вателей, при этом активные маркетинговые действия французско-бразильско-российской Последние дни весны станут для рос-сийского Linux-сообщества памятной датой – 28 мая компания Mandriva открыла в Санкт-Петербурге свое представи-тельство и центр разработки. Таким образом, в создании одного из самых популярных в мире дистрибутивов теперь будут принимать участие не только французские и бразильские разработчики, но и российские программисты. Стоит отметить, что новый филиал пришел в Россию не с пустыми руками: одновременно с официальным объявлением о новом предста-вительстве широкой публике были предложе-ны и специализированные версии дистрибу-тивов Mandriva 2007 Spring, адаптированные для использования в Российской Федерации. Отличие от оригинальной версии заключает-ся в использовании таких компонентов, как OpenOffice.org в сборке «Инфра-ресурса», а также пакета библиотек отечественной компа-нии Etersoft, позволяющих выполнять в среде Linux такие популярные на российских пред-приятиях приложения, как 1С:Предприятие 7.7-8.1, Инфо-Бухгалтер 8.X, Гарант F1 и Гарант F1 Турбо, Консультант+ 3200/3300, Кодекс 5.2, ABBY FineReader 7.0-8.0, ABBY Lingvo 9.0, КОМПАС 2D и другие. Двумя неделями позже был анонсирован продукт Mandriva Corporate Desktop 4.0, ориентированный на применение в бизнесе. Примечательно, что серьезность намере-ний компании Mandriva в России подтверж-дает и наличие учебных центров, располо-женных пока в Москве и Санкт-Петербурге, а в будущем планируемых к открытию и в других крупных российских городах. Спектр программ обучения охватывает все уровни, Mandriva получает прописку в России Кстати 9 июня 2007 года специалисты Mandriva.Ru провели в городе Ханты-Мансийске мастер класс по технологиям Linux, который начальным этапом продвижения свободного ПО на территорию Ханты-Мансийского автономного округа – Югры. Семинар встретил восторженные отклики представителей бизнеса и государственных структур из Ханты-Мансийска, Сургута, Нижневартовска и других городов Уральского федерального округа. По его результатам было принято решение об открытии центра компетенции Linux в Ханты-Мансийске, а со временем — и в других городах. компании могут косвенно помочь и отечест-венным разработчикам, не обладающим ана-логичными финансовыми возможностями. mandriva.ruИюль 2007 Linux Format 5 Новости ли последней при каждом удобном случае не забывают призывать остальных разработчи-ков свободного ПО платить за используемые патенты. Как это сделали другие, «правиль-ные» компании. Другая острая тема, поднятая Столлмэном в свей статье, касается так называемой TiVo-изации, названной так в честь компании TiVo, использующей свободное ПО в своих решени-ях. Выход новой версии GPL и перевод под ее защиту свободных разработок позволит пред-отвратить использование свободного кода совместно с программами, обеспечивающими защиту DRM (Digital Restrictions Management) от взлома. Через несколько дней после публи-кации статьи Ричарда Столлмана представи-тели TiVo сообщили прессе, что выход GPL v3 может поставить под угрозу весь бизнес ком-пании, одним из основных компонентов кото-рого и является защита DRM. Но на самом деле ее участь выглядит не так пессимис-тично, как будущее Novell. В данный момент бизнес-модель последней оказалась в полной зависимости от действий Microsoft: если гига-нту индустрии не захочется далее продолжать совместный бизнес с Linux-компанией в связи с неприятием GPL v3, то Novell потеряет прак-В последний день весны был опубли-кован заключительный, четвертый по счету черновик текста лицензии GPL v3. До выхода окончательной редакции остались считанные недели и события, хоть как-то связанные с обновлением открытой лицензии, показали, что ее релиз может зна-чительно изменить позиции различных компа-ний на рынке. Прежде всего, Ричард Столлмэн [Richard Stallman] опубликовал статью, в кото-рой постарался еще раз пояснить основные пункты новой редакции GPL и убедить разра-ботчиков использовать именно этот вариант для своих свободных программ. В частности, особое внимание он уделил пунктам, каса-ющимся предотвращения в будущем заклю-чения договоров, аналогичных соглашению между Microsoft и Novell. Как оказалось, его внимание к данной проблеме было отнюдь не чрезмерным: за последнее время аналогичные договоры заключили с редмондским гигантом такие известные на Западе поставщики Linux, как Xandros и Linspire. Обе компании пос-пешили успокоить окружающих, что данное сотрудничество совсем не означает признания нарушения Linux-разработчиками каких-либо патентов Microsoft, но при этом представите-Кто боится GPL v3тически все – в данный момент все основные продажи компании осуществляются благода-ря заключенному договору. Впрочем, Novell слишком сильный игрок, чтобы просто сидеть и ждать своей участи. Желая заранее раз и навсегда исключить возможные проблемы, связанные с патента-ми, как для себя, так и для других компаний, Novell совместно с фондом Electronic Frontier Foundation приступили к подготовке рефор-мирования патентной системы, ставящей в последнее время все больше преград на пути научно-технического прогресса. Среди основ-ных целей нового союза – активное лоббиро-вание интересов национальных и международ-ных организаций, занимающихся разработкой и принятием законов, позволяющих добить-ся значительных изменений существующей патентной системы. Особое внимание компании соби-раются уделить взаимо-действию с участниками World Intellectual Property Organization (WIPO). gplv3.fsf.org Не успел еще затихнуть скан-дал, связанный с предложениями Министерства информационных тех-нологий и связи по обеспечению российских школ лицензионным ПО, как на повестке дня вновь подробности уже другого проекта, орга-низованного ведомством Леонида Реймана. Речь идет о целевой программе «Компьютер – в каждый дом», стартовавшей 19 сентября 2006 года. Основная цель проекта – обеспе-чение компьютерной техникой жителей рос-сийской глубинки, оторванных от цифровых оазисов современных мегаполисов. Подобные целевые программы можно только приветс-твовать, но очень серьезные вопросы вызы-вает сама организация данного благого начи-нания. Дело в том, что среди организаторов проекта выступают не только госучреждения в лице Мининформсвязи и Федерального госу-дарственного унитарного предприятия «Почта России», но и московские представительства таких сугубо коммерческих компаний, как Microsoft и Intel. По российскому антимоно-Проект другой, вопросы те же польному законодательству гранты на реали-зацию любых национальных проектов должны распределяться на конкурсной основе и про-ект «Компьютер – в каждый дом» не являет-ся исключением: запланировано несколько конкурсных мероприятий, которые должны выявить наиболее достойных кандидатов на роль поставщиков компьютерной техники или банковских организаций, предоставляющих кредиты на расходы в рамках проекта. И все бы ничего, но в технических спецификациях на компьютерную технику, поставляемую в сельские районы, фигурирует исключительно продукция компаний-организаторов: на долю Intel выпадает обеспечение процессорами, а Microsoft берет на себя программную часть проекта. Таким образом, данные компании получают монопольное право на распростра-нение своих коммерческих продуктов в рамках российской национальной программы. Данный факт стал причиной заявления о нарушении антимонопольного законодатель-ства российским Министерством информаци-онных технологий и связи, поданного одним из руководителей Коми-республиканской правозащитной комиссии (КПК) «Мемориал» Эрнестом Мезаком в общественную прием-ную Федеральной антимонопольной службы (ФАС). Впрочем, решение подобной пробле-мы вряд ли будет простым: если антимоно-польный комитет признает подобный способ участия коммерческих компаний в реализации национальных проектов незаконным, то вся программа окажется на грани срыва в связи с потерей половины организаторов, а если оставить компаниям Microsoft и Intel прежние организаторские «должности», то вряд ли можно будет рассчитывать на то, что они не будут препятствовать продвижению продук-ции компаний-конкурентов. В любом случае, в будущем российским чиновникам придет-ся более тщательно подходить к разработке национальных программ, чтобы не позволять отдельным коммерческим компаниям полу-чать необоснованные преимущества перед другими участниками рынка.6 Linux Format Июль 2007 Новости В последнее время тема перевода правительс-твенных организаций на использование откры-того стандарта OpenDocument стала одной из наиболее популярных. Многие европейские органи-зации принимают соответствующие постановления и осуществляют переход на ODF; не меньшее внимание уделяется данному вопросу и в сенатах многих амери-канских штатов. Между тем, американские народные избранники довольно осторожно подходят к приня-тию подобных законов, не желая принимать скоро-палительных решений: как минимум в пяти штатах, включающих Калифорнию, Флориду, Техас, Орегон и Коннектикут, законопроекты о переходе на ODF были отклонены сенаторами. Причин тому несколько. Во-первых, инициативные группы, выдвигавшие подоб-ные законопроекты, проявили явную поспешность, предложив сенаторам принять открытый формат в качестве стандарта для официального документообо-рота без каких-либо предварительных исследований. Естественно, осторожные ко всяким переменам пар-ламентарии не рискнули слепо принимать на веру доводы инициаторов законопроектов. Вторая причина афишируется меньше, но не исключено, что именно она является более весомой: в приватных беседах некоторые сенаторы признались, что опасаются «сан-ODF: «штатная» ситуация кций» компании Microsoft, активно препятствующей продвижению открытых стандартов в правительствен-ные структуры. Причина подобного упорства тоже ясна: уже давно пакет офисных приложений MS Office является довольно ощутимым источником доходов редмондского гиганта, а переход государственных учреждений на открытый формат документов позво-лит данным многочисленным организациям внедрить альтернативные офисные пакеты, включая главного конкурента MS Office – свободный пакет офисных при-ложений OpenOffice.org. Впрочем, руководитель основанного в Вашингтоне ODF Alliance Марино Маркич [Marino Marcich] не уны-вает и говорит, что битва за ODF только начинается. Несмотря на неудачи в ряде штатов, законопроекты о переходе на ODF продолжают выдвигаться на рас-смотрение. В частности, демократы штата Нью-Йорк приступили к продвижению открытых стандартов в государственных учреждениях, но, глядя на примеры соседей, решили не торопиться, а начать с предложе-ний провести исследование возможности и целесооб-разности перехода на ODF. Не исключено, что подоб-ный поэтапный процесс продвижения открытых стан-дартов в штате Нью-Йорк окажется более успешным и подаст пример сенаторам других штатов. МОО ВПП ЮНЕСКО «Информация для всех» представил проект сборника прикладных программ «Свободное ПО для образования, науки и культуры», разработанный в рамках одно-именного проекта. Публикация ориентиро-вочного списка приложений осуществлена в целях получения от будущих пользователей и сторонних экспертов различных корректи-ровок и пожеланий, которые позволят под-готовить действительно полезный комплект свободных программ, предназначенных для работы в среде Windows. Следует отметить, что первый сборник свободного ПО в рам-ках данного проекта был выпущен еще в марте 2007 года силами LinuxCenter и завое-вал достаточно высокую популярность среди пользователей. Как и положено любому сво-Выбираем свободное ПО вместе бодному программному обеспечению, сбор-ник «Open Software CD для Windows Spring Edition» распространяется за символическую плату, покрывающую стоимость носителя и пересылки, а также доступен для свободной загрузки с FTP-сервера проекта. Новый вариант CD будет отличаться от своего предшественника. Помимо свободно-го ПО, распространяющегося исключительно по лицензии GPL или смежным лицензиям, в новый набор войдут и бесплатные програм-мные продукты, в том числе выпускаемые коммерческими производителями, напри-мер Adobe Systems Incorporated. Подобный шаг объясняется желанием авторов проекта расширить функциональность входящего в сборник ПО. Как и первый вариант, новый сборник будет предназначен для распростра-нения среди российских учреждений сферы образования, науки и культуры, бюджетных и некоммерческих организаций, не обладающих достаточными средствами для приобретения дорогостоящих коммерческих программ. Образованный еще в 2005 году альянс Linux Phone Standards (LiPS) Forum, объединивший усилия таких известных компаний, как France Telecom, Telecom Italia, MontaVista Software, PalmSource (позднее переименованная в Access Inc) и многих других, опубликовал первые спецификации для Linux-раз-работчиков, нацеленных на мобильный рынок. В документе даются рекомендации по созданию интерфейса, адресной книги, функций голосового набора, использованию API ввода текста, а также неко-торых сервисных функций и наборов виджетов. Стоит отметить, что, несмотря на активную работу в мобильной сфере норвежс-кой компании Trolltech, участники данного альянса отдают боль-шее предпочтение проекту GNOME, в связи с чем практически все рекомендации базируются на использовании средств разработки GTK. Объяснение данному факту очень простое: многие участни-ки Форума используют GNOME в качестве базового ПО. К таким компаниям относятся, например, Purple Labs, Access и Open-Plug. Следующий выпуск спецификаций Форума будет нацелен на такие функции, как обмен мгновенными сообщениями и возможность изменения интерфейса пользователем или оператором сотовой связи. Третий набор спецификаций, выход которого намечен на конец текущего года, позволит разработчикам мобильных приложе-ний более оптимально использовать различные аппаратные ресур-сы телефонных трубок. Linux-мобилизацияИюль 2007 Linux Format 7 Новости 30-31 мая в Москве, в комплек-се «Форум Холл» состоялся Interop Moscow 2007 – Конгресс и Выставка корпоративных информационных технологий. Иван Зорин побывал на про-ходившем в его рамках втором Open Source Forum’е и готов поделиться своими впечатле-ниями с читателями LXF. Форум был открыт докладом Брайана Белендорфа [Brian Behlendorf], одного из осно-вателей проекта Apache, озаглавленным: «Ten Things you might not know about Open Source» [«Десять вещей, которых вы могли не знать про Open Source»]. В начале своего выступле-ния Брайан напомнил присутствующим, что Open Source – это не только всем известные программы и приложения: существует свы-ше 100 тысяч разработок, каждая из которых занимает свою нишу. Далее было отмечено, что открытое ПО предшествовало проприетарному, так как еще мейнфреймы продавались в комплекте с исходными кодами программ, расположенны-ми на магнитных лентах; компания-покупатель могла беспрепятственно модифицировать уже установленное ПО под свои нужды. Потому идея свободного ПО, предложенная Фондом свободного программного обеспечения в 1985 году, была по своей сути не новой. Затем г-н Белендорф напомнил несколько фактов об Apache. Проект был запущен в 1995 году и преследовал две цели. Первая, прагма-тическая – сконцентрировать усилия разра-ботчиков; вторая, идеалистическая – сохра-нить HTTP как открытый стандарт. Основатели проекта были обеспокоены тем, что компании, владеющие как рынком серверов, так и рынком браузеров, начнут определять свои собствен-ные технологии и спецификации. Но, несмот-Open Source Forum@Interop Moscow 2007 ря на все эти опасения, вскоре после запуска Apache стал основным web-сервером и до сих пор удерживает пальму первенства. В своем докладе Белендорф упомянул и другой известный открытый проект – BioPerl, который является свободной альтернативой исследованиям коммерческого консорциу-ма Celera. Celera был основан как проект по расшифровке последовательностей генома человека. Все результаты исследований и все расшифрованные геномы патентуются кон-сорциумом, чтобы впоследствии можно было контролировать доходы от применения этих знаний. Однако, независимо от этого, Джим Кент [Jim Kent], докторант из университета Санта Круз в Калифорнии, написал на языке Perl порядка десяти тысяч строк кода, которые представляют собой набор функций для рабо-ты с геномами и их последующей расшифров-ки. Получившийся проект и получил название BioPerl. Сегодня он может использоваться как самодостаточное приложение, а также вклю-чаться сторонними разработчиками в свои про-граммы в качестве внешнего инструментария. Во время доклада была также упомянута рас-пространяемая по лицензии Creative Commons книга Карла Фогеля [Karl Fogel] «Создавая про-граммное обеспечение с открытым исходным кодом» [Producing Open Source Software], кото-рая посвящена не столько технической, сколь-ко социальной и психологической проблемам открытой разработки. Книгу можно найти по адресу: http://producingoss.com/. «Open Source нужна ваша помощь». Этой теме была посвящена заключительная часть доклада Брайана Белендорфа. Чем вы може-те помочь? Попробуйте использовать свобод-ные приложения, такие как Firefox, Thunderbird, OpenOffice.org, не отказываясь от Windows или LXF Репортаж Завершен конкурс на лучшую статью об OpenOffice.org Подведены итоги конкурса на лучшую статью о пакете OpenOffice.org, проводимого при поддержке журнала Linux Format (см. LXF89). 1 июня 2007 года, в соответствии с положением о конкурсе компетентная комиссия определила победителей: в номинации «Офисные технологии» победила статья «Сложная разметка и хитрости в OpenOffice.org Math», автор Смирнов Д. В. в номинации «Тесты, сравнения, обзоры» победила статья «Сравнение OpenOffice.Draw (StarDraw) с Visio», автор Елисеев А. А. в номинации «Учим работать с OpenOffice.org» победила статья «Лабораторные работы в OpenOffice. org», автор Емельянов Э. В. в номинации «История одного проекта» победила статья «Семь дней на пути к Ru.OpenOffice.org», автор под псевдонимом Opener в номинации «Об этом уже писали» победила статья Сольвейг Хогленд (Solveig Haugland) «Использование стилей в OpenOffice.org», авторы перевода под псевдонимами John Lynx, George Yves. Победителей ждут призы: Годовая подписка на журнал «LinuxFormat»; Премии в размере 10000 рублей, из призового фонда журнала «Linux Format» и компании «Инфра-Ресурс». Годовая подписка на журналы «Мир ПК», «Открытые системы» или еженедельник Computerworld по желанию победителя. Более подробную информацию можно найти на официальном сайте конкурса: http://i-rs.ru/article/articleview/540/1/30/От души поздравляем победителей!8 Linux Format Июль 2007 Новости Mac OS X – они доступны и для этих систем (см. стр. 40). Загрузите LiveCD-дистрибутив. Принимайте участие в дискуссиях на фору-мах, посвященным поддержке того или иного проекта – задавайте вопросы, если возникают трудности; помогайте остальным, если знаете ответы на вопросы, с которыми они сталки-ваются. Находите ошибки и сообщайте о них разработчикам. Носители языка могут оказать неоценимую помощь по переводу и локализа-ции программ, при этом совсем не обязательно обладать навыками программиста. После доклада состоялась дискуссия с участниками Open Source Forum: Брайаном Белендорфом, Луи Суаре-Потом [Louis Suarez-Potts] из OpenOffice.org и Эриком Оллмэном [Eric Allman] из Sendmail, Inc., которые отвеча-ли на вопросы зала. Ведущим этого меропри-ятия был Дмитрий Дмитриев (Линукс Инк), от которого для «затравки» и последовал первый вопрос: вынуждены ли открытые проекты веч-но догонять более успешные проприетарные продукты? Луи ответил, что не согласен с этим утверждением. По его мнению, открытые про-екты всегда были источником инноваций и свежих идей. В качестве примера он привел возможность экспорта документов в формат PDF – функцию, которая была доступна с пер-вых версий OpenOffice.org и которую Microsoft добавляет в свой офисный пакет только сей-час. Затронув вопрос о лицензиях на открытое ПО, Луи отметил, что GPL3, на его взгляд, имеет ряд ощутимых плюсов по сравнению со второй версией, так как охватывает патенты, что очень важно для мира Open Source. «Иски против открытых проектов со сто-роны Microsoft – коммерческое самоубийс-тво», – таким был ответ Брайна на вопрос по поводу обвинений Microsoft в адрес разработ-чиков ядра Linux и его пользователей в том, что открытый код нарушает патенты редмондского гиганта. И пояснил: «Тогда им придется пока-зать свои исходные тексты, на что они не пой-дут ни за что на свете». Закончив отвечать на вопросы, «звез-ды Open Source» освободили трибуну для выполнения следующей части програм-мы форума – дискуссии о плюсах и мину-сах открытого ПО. Состав ее участников был таким: Александр Давыдов (NAUMEN), Алексей Смирнов и Алексей Новодворский (ALT Linux), Владимир Мамыкин и Владислав Шершульский (Microsoft), Андрей Федоров (Digital Design); ведущим данного мероприятия был Дмитрий Шурупов (журнал «Системный Администратор», портал www.nixp.ru). Владислав Шершульский отметил, что открытость хороша не везде, и есть такие про-екты, в которых делегирование прав на доступ к исходному коду просто необходимо. Владимир Мамыкин назвал отчасти мифом и то, что открытые проекты более безопасны. В качестве примера он привел ядро Linux: с ростом попу-лярности в нем якобы находятся все новые и новые «дыры»; на сегодняшний день это уже порядка трехсот уязвимостей. Также Владимир отметил, что Microsoft, в случае требований со стороны государства, может предоставить пос-леднему к исходным текстам своих продуктов и операционных систем в доверительном окру-жении с целью их ревизии на предмет наличия каких-либо вредоносных «закладок». Алексей Новодворский изящно парировал некоторые из этих утверждений. Когда приво-дят подобные цифры, сказал он, навряд ли они являются объективными и отражают реальную суть; с другой стороны, можно сравнить нали-чие уязвимостей, в том числе, критических, в двух web-браузерах – открытом Firefox и про-приетарном Internet Explorer. По всем показа-телям, как объективным, так и субъективным, сравнение будет явно не в пользу последнего. «Насколько мы, граждане, можем доверять таким процедурам?»,– задал вопрос Алексей в ответ на упоминание Владиславом возможнос-ти проведения ревизий проприетарного кода. «Действительно ли это будет независимая экс-пертиза, а не экспертиза, проводимая фикси-рованной фирмой, назначенной государством для контроля?» Владимир Мамыкин затронул также эконо-мическую составляющую Open Source, в кото-рой основную прибыль составляют дополни-тельные услуги и поддержка. Было отмечено, что, несмотря на динамичное развитие Open Source в нашей стране, действительно круп-ных открытых проектов национального масш-таба как таковых нет. Алексей Новодворский же отметил отсутствие качественных отечест-венных специалистов в области операционных систем; так, ни на одной международной кон-ференции за последние годы не было ни одно-го доклада по данной тематике, представлен-ного российскими разработчиками. Как мож-но получить специалистов по операционным системам, обучая людей программированию, и при этом не имея доступа к исходным кодам приложений и самих ОС? В западных техничес-ких вузах на дисциплинах, связанных с ком-пьютерными науками, обучение студентов проводится на открытых про-граммах и операционных системах; и после обучения, обладая высокой квалификацией, многие из них становится лучшими разработчиками Microsoft. Было также отмечено, что открытые проекты бессмертны – а в случае с проприетарным ПО, если исчезает производитель, исчезает и его продукция. Алексей Смирнов отметил роль важную патентов в мире Open Source. Когда патентное право только зарождалось, считаетон, его целью было поддержать инновации и развитие изобретений, а сегодня для мира открытого ПО патенты являются своеобразным сдерживаю-щим механизмом. В заключительной части своего слова Алексей отме-тил отсутствие методических пособий для школ, которые были бы при-менимы к открытым приложениям. Возможно, с их появлением внедре-ние открытых разработок в образовательный процесс пойдет быстрее. Подводя итог мероприятию в целом, было приятно наблюдать, что в последнее время российскому Open Source-сообществу уделяют вни-мание мировые лидеры этого движения, которые осознают перспекти-вы развития программного обеспечения с открытым исходным кодом у нас в стране. С другой стороны, судьба и проблемы OpenSource в России не безразличны и отечественным компаниям и деятелям, что также не может не радовать. Официально выпущена операционная система Fedora 7, впервые представленная в виде настольной и серверной версий, а также подготовленная в виде двух LiveCD, использующих в качестве графической среды KDE и GNOME. Фонд Mozilla выделил в качестве гранта на дальнейшее раз-витие $100 тыс. проекту свободного ТВ-плейера Democracy. Компания TurboLinux объявила о начале продаж управляе-мого Linux мини-компьютера Wizpy в США, Великобритании, Австралии, Индии и Сингапуре. Проект OpenSUSE приступил к разработке дополнительного CD “The openSUSE EDU-CD” (или “The SLEducator”), предна-значенного для образовательных учреждений. Компания Innotek объявила о выходе новой версии VirtualBox (1.4.0), первой свободной профессиональной виртуальной машины, распространяющейся под двойной лицен-зией (GPL/закрытая). Проект live.linuX-gamers.net объявил о выходе основанной на Slackware тестовой версии lg-live Live-DVD 0.9.2, в состав которой вошло пятнадцать наиболее популярных трехмерных игр для среды Linux: Enemy Territory, Torcs, True Combat: Elite, Warsow, World of Padman и другие, при этом оригинальные драйверы от nVIDIA и ATI также представлены на диске и устанавливаются во время загрузки системы. Российская компания Etersoft объявила о выходе новой версии специализированных библиотек WINE@Etersoft 1.0.7, обладающей улучшенной поддержкой отечественных Windows-приложений. Вышла очередная версия свободного пакета офисных при-ложений OpenOffice.org 2.2.1, а почти одновременно рос-сийская компания Инфра-ресурс подготовила собственную сборку OpenOffice.org 2.2.1 Pro, адаптированную к работе в российских условиях. Компания Microsoft объявила о повышении цен на свои про-граммные продукты, распространяемые в России, в среднем на 25%. Новости короткой строкойИюль 2007 Linux Format 9 Новости дукты Microsoft. В большинстве случаев они являются «пиратскими», также школьники не получают разностороннего освоения IТ, владения различными ОС: в частности, многие преподаватели информатики в российских школах не имеют адекватного представления о возмож-ностях открытых продуктов. Вместе с тем уже сейчас существуют про-граммные решения на основе Open Source, которые могут быть приме-нены в учебно-образовательных программах. Сам Александр Поносов, являвшийся, по сути, «гвоздем» круглого стола в «Росбалте», отме-тил, что хотя в условиях консервативной школьной среды переход на альтернативные операционные системы затрудняется, однако при соответствующем желании особых сложностей в освоении, например, Linux, возникать не должно. У него самого при чрезвычайно высокой занятости освоение новой системы заняло не больше месяца. По мнению аналитиков, в России достаточно низкий уровень осве-домленности о свободном ПО, а доступность дешевого пиратского «софта» не оставляет никаких препятствий к тому, чтобы пользовате-ли устанавливали на свои ПК продукты Microsoft. Что касается школ, то анализ Мининформсвязи показал: до 75% персональных компьютеров работают на нелицензионном общесистемном и прикладном програм-мном обеспечении. При этом общее число используемых в настоящее время персональных компьютеров составляет порядка 675 тыс. штук. Такой уровень пиратства, к тому же в системе образования, т.е. в госу-дарственных учреждениях, сегодня становится существенным пре-пятствием для вступления России в ВТО, одним из условий которого является соблюдение прав на интеллектуальную собственность. Напомним, что недавно Мининформсвязи выступило с инициа-тивой, направленной на легализацию ПО, используемого в школах. Ведомством был сформирован базовый перечень общесистемного и прикладного ПО для закупки и установки на школьные персональ-Мультиплатформенный школьник XXI века? LXF Репортаж На каком программном обеспечении будут учиться следующие поколения россиян? Что ждет рос-сийскую школу в связи с усилением борьбы с пиратством? Что такое «свободное ПО»? Эти вопро-сы обсуждали в «Росбалте» учителя, чиновники и разработчики. 4 июня 2007 г. в пресс-центре инфор-мационного агентства «Росбалт» про-шел круглый стол «Городское педа-гогическое собрание – за свободное ПО в школах». Мероприятие было организовано ИА «Росбалт» и недавно созданной IT-струк-турой – компанией «iTREND». В дискуссии приняли участие представи-тели городской администрации, федеральной законодательной власти, педагоги, разработ-чики ПО, эксперты. В последнее время все чаще ведутся раз-говоры о необходимости создания и внед-рения в России современной отечественной операционной системы (ОС). Перспективами российской ОС заинтересовались уже не толь-ко сами разработчики, но и госструктуры, законодатели, представители бизнеса, шко-лы и вузы. Для последних создание доступ-ной по цене и при этом абсолютно легальной системы будет означать решение проблемы обучения современным информационным технологиям. Пока создание российской ОС является реальной, но отдаленной перспекти-вой, школам приходится решать эту проблему самостоятельно. Активизация процесса подключения школьных компьютеров к Интернету, отсут-ствие отечественной свободной оперативной системы, недостаточность законодательного регулирования в этой сфере, – все это ста-вит перед властями много вопросов, подчер-кнула в ходе работы круглого стола депутат Госдумы Валентина Иванова. По ее мнению, случай с директором Сепычской средней шко-лы Верещагинского района Пермского края Александром Поносовым, который был при-влечен к суду за использование нелицен-зионного программного обеспечения (ПО), говорит о том, что времени на решение этих вопросов немного. Иванова отметила, что Всероссийское педагогическое собрание, сопредседате-лем-координатором которого она является, выступило в защиту Поносова, обратившись в Генпрокуратуру. Педагог уже полтора года доказывает свою невиновность в судах, и в подобной ситуации может оказаться не толь-ко любой учитель, но и люди других профес-сий, имеющие дело с программным обеспече-нием, отметила Иванова. Как правило, в российских школах «по умолчанию» используют программные про-Ася Власова, ИА «Росбалт»10 Linux Format Июль 2007 Новости ные компьютеры. Кроме Microsoft, в него вошли программные продукты «Лаборатории Касперского», «Доктор Веб», Adobe и Corel. Стоимость такого пакета для одного ПК соста-вил бы 787 руб. в год. В мае этого года Министерство финансов отказалось выделить средства из федерального бюджета на реа-лизацию этой программы. Специалисты уве-рены, что при закупке прикладных программ для школ важно требовать многоплатформен-ности, то есть возможности использования ПО хотя бы под двумя ОС – Linux и Windows, – чтобы избежать зависимости от монополь-ного поставщика. О том, что после проведения специальных информационно-обучающих семинаров ряд петербургский школ выразили заинтересован-ность в переходе на Linux, сообщил ведущий специалист комитета по образованию прави-тельства Санкт-Петербурга Игорь Базлов. По его словам, осенью на базе этих школ будет создана экспериментальная площадка, где будет внедряться Linux. Если опыт даст положительные результаты, комитет будет рекомендовать Linux для внедрения во всех школах, отметил Базлов. Все участники дискуссии были едины во мнении о том, что учащиеся и учителя долж-ны иметь альтернативные способы изучения IT-технологий, овладевать знаниями о разных программных продуктах и операционных сис-темах, что практически не реализовано на дан-ный момент. Одной из главных проблем соб-равшиеся отметили низкую осведомленность самих преподавателей. Александр Поносов отметил, что он сам до января 2007 г., когда против него был возбуждено уголовное дело об использовании нелегального ПО в школе, не знал о существовании Linux – наиболее популярной свободной ОС. В настоящее время «дело Поносова» пока еще не закрыто (14 июня должно состо-ятся очередное заседание суда) и даже имеет любопытное развитие: в конце мая автономная некоммер-ческая организация общественный центр «Равенство» (Пермский край) направила в Генпрокуратуру России заявление с требованием привлечь к уголовной ответственности про-курора Верещагинского района Александра Троянова. Как сообщил «Интерфакс», работники прокура-туры Верещагинского района в ходе расследования уголовного дела в отношении директора Сепычевской средней школы Александра Поносова, обвиняемого в исполь-зовании контрафактных программ Microsoft, сами использовали нели-цензионное программное обеспече-ние. Сам Александр Поносов отме-тил, что планирует «сражаться до последнего», а активную поддерж-ку надеется получить от обществен-ности, разработчиков и депутатов ГД РФ, которые, впрочем, уже немало помог-ли учителю. Валентина Иванова подтверди-ла готовность и дальше отстаивать права Поносова в непростом и прецедентном для России деле. По мнению Галины Пожариной, изучение открытого ПО в школах будет воcпринято уче-никами с большим интересом, как все новое, а также будет способствовать использованию свободного легального софта и в домашних условиях, что крайне важно для разносторон-него образования школьников. Даже в том случае, если школа имеет лицензионное ПО от Microsoft, необходимо устанавливать на школьных компьютерах Linux как вторую опе-рационную систему и давать ученикам полное представление о современном мире ПО. Павел Житнюк отметил наличие большо-го количества свободных программных про-дуктов образовательного характера, которые могут быть использованы на уроках алгеб-ры, геометрии, астрономии, физики и т.д., а также программы для начальной школы. Сейчас только порядка 5% госучреждений в России использует легальное ПО, а повсе-местное распространение коммерческих про-дуктов нескольких или даже одной компании наносит ущерб как отечественной IT-отрас-ли, так и информационной безопасности всего государства. Существующие «мифы» о трудностях использования Linux уже дав-но развеяны: на данный момент эта система представляет полноценную альтернативу про-дуктам Microsoft (простая установка, удобный графический интерфейс, удобные офисные приложения, огромное количество приклад-ных программ, более низкая цена лицензии и техподдержки, отсутствие компьютерных вирусов, открытость кода и возможность гиб-кой модификации под задачи пользователя, совместимость с Windows-файлами, и пр.). Леонид Сомс привел такие цифры: эко-номия для одной школы при использовании открытых продуктов может составить около 800 тысяч рублей. К началу учебного года компания «Линукс-Инк» планирует сделать подарок всем петербургским школам: предо-ставить лицензионный дистрибутив, адапти-рованный компанией – Scientific Linux. Однако этот же эксперт отметил, что ситу-ация не столь уж безоблачна. Процесс внед-рения в организациях, в частности, в школах, свободного программного обеспечения дли-телен и сопряжен с рядом проблем. Одна из важнейших – инертность преподавательско-го сообщества, выраженная в затрудненном переходе от привычных образовательных про-грамм к новым. Другая проблема заключается в низкой совместимости Linux и Windows в плане администрирования. «Обучать на Linux, а администрировать на Windows – это нон-сенс», – полагает Сомс. В этом с ним согласен директор ГОУ школа N369 Красносельского района Санкт-Петербурга Константин Тхостов. Он отметил: «Если пользователь, как физическое лицо, сам решает, какой операционной системой пользоваться, то юридическое лицо, такое как школа, работает в системе Горзаказа, с раз-личными комитетами администрации, в част-ности, Комитетом финансов. С переходом на Linux эта работа будет затруднена». Вместе с тем Тхостов полагает, что переход к 1 сентяб-ря на Linux был бы лучшим подарком школь-никам ко Дню знаний. Игорь Базлов, в свою очередь, отметил, что Петербург в области IT всегда немного опережает остальные регионы России. Сейчас почти по всех учреждениях города так или иначе используются свободные программные продукты и OpenOffice.org. Однако для даль-нейшего развития в этом направлении требу-ется поддержка из Москвы. Июль 2007 Linux Format 11 3D modelling tool Reviews Linux – это серьезно? EnergyXT c. 16 Cedega c. 17 С полдюжины лет назад один редактор одного компьютерного издания, отметив, что линуксои-ды только и делают, что ругают Microsoft, добавил: всерьез можно будет относиться к Linux’у только тогда, когда, наоборот, Microsoft начнет его ругать. Этот знаменательный момент наступил. Сначала появились аналитические обзоры сравнительной оценки совокупной стои-мости владения Windows-и Linux-плат-формами, потом их результаты (разумеет-ся, благоприятные для Microsoft – ведь кто девушку ужинает, тот ее и танцует, не так ли?) перекочевали на рекламные полосы компьютерных (и даже не очень компью-терных) журналов. И, наконец, апофеоз маркетингового гения самой великой мар-кетинговой компании: рекламная акция под названием «продам Linux-сервер». Не знаю, на кого это рассчитывали в мировом масштабе, но на Руси реак-ция на нее была однозначно юмористи-ческая. Российское представительство Microsoft завалили предложениями этот самый Linux-сервер купить. А его сотруд-никам, бедолагам, пришлось отвечать на эти запросы на полном серьезе, в резуль-тате чего реклама эта постепенно исчез-ла. А может быть, просто раскупили весь наличный запас Linux-серверов? Так что настало время относиться к Linux вполне серьезно. alv@posix.ru Новинки программного и аппаратного обеспечения в описании наших экспертов Алексей Федорчук Свою первую (и последнюю) программу написал еще на Алголе Сегодня мы рассматриваем... 12 Dofus Великолепная многопользовательская ролевая игра, но компенсирует ли мультяшный закос бедноту речи? Отправляйтесь с нами в деревню Amakna – попробуем разобраться вместе. 14 HP LaserJet 2700n Прежде чем садиться за этот материал, Пол Хадсон напечатал толстую стопку цветных мячей. И теперь он способен оценить производительность этого Linux-совместимого принтера, как никто другой. 15 Mandriva Spring На смену инновациям пришла стабильность — способен ли теперь истинно французский дистрибутив противопоставить je ne sais quoi прелестям Fedora и Ubuntu? 16 EnergyXT 2 Автор этой модульной рабочий станции воплотил мечту о создании ее Linux-версии. Суперсинтезаторы, мультиэффекты и многое другое – смотрите сами! 17 Cedega 6 Существует всего одна причина, по которой мы решили рассмотреть этот релиз, и она выражается одним словом – Oblivion. Хотите узнать, как соотносятся скорости работы игры в Linux и в Windows? EnergyXT предлагает эластичное растяжение времени и другие запредельные музыкальные эффекты. Обзоры НАШ ВЕРДИКТ: пояснение Все попавшие в обзор продукты оцениваются по одиннадцати-бальной шкале (10 – высшая оценка, 0 – низ-шая). Как правило, мы оцениваем функциональ-ность, производитель-ность, простоту исполь-зования и цену, а для бесплатных программ учитывается документа-ция. Кроме того, мы всег-да выставляем общую оценку, демонстрирующую наше отно-шение к продукту. Выдающиеся решения могут получить престижную награду «Top Stuff». Номинантами стано-вятся лучшие из лучших – прос-то высокой оцен-ки здесь недоста-точно. Рассматривая свободное ПО, мы обычно указываем предпочтитель-ный дистрибутив. Иногда это озна-чает компиляцию из исходных текстов, но, если разработчики рекомендуют Autopackage, мы следуем этому совету. Функциональность 10/10 Производительность 9/10 Простота использования 9/10 Документация 9/10 Google Earth Если весь мир – сцена, то Google Earth – театр. Простая в использовании, захватывающая и ободряюще практичная программа. Рейтинг 9/10 Вердикт Разработчик: Google Сайт: http://earth.google.com Цена: Бесплатно по закрытой лицензии – Новая коллекция Кейт Мосс весьма неплоха, не так ли? — Как ты сказал: Кейт кто?12 Linux Format Июль 2007 Обзоры Ролевая игра Ролевая онлайн-игра для множества игроков на основе Flash. Реальных альтернатив нет, но среди других Linux-совместимых RPG Second Life находится ближе Вкратце… Приятно встретить в Dofus древнейшие профессии. Перед вами мастерица по изготовлению луков, предлагающая свои услуги за деньги. В остальном языковые навыки игры плоховаты. Неиграющие персонажи Персонажи с восклица-тельным знаком над головой наставят вас на путь истинный. Исследуeм интерфейс Dofus Аватары Персонаж, представляю-щий вас, вы выбираете сами. Все, что персонаж говорит, всплывает в пузыре над его головой. Значки Доступ к вашему арсеналу, дневнику миссии, картам и заклинаниям. Компас При поиске цели можно обратиться к удобному маленькому компасу. Цифры в сердце указывают уровень здоровья. кузенов. Выпущенная в сентябре 2005 г., на сегодняшний день игра поддерживается поч-ти трехмиллионным сообществом любителей во всем мире. Британский вариант – это воз-можность для Ankama, компании-разработ-Ах, эти юношеские дни, проведенные за ролевыми играми! Если в вось-мидесятых вам было 10–15 лет, вы, наверное, помните HeroQuest, фантастическую пошаговую ролевую игру (RPG), захватившую тогда всю Британию. В ней вы могли стать одним из четырех персонажей, предпринимав-ших походы для поиска сокровищ или уничто-жения неких злых сил. Что было здорово в той игре – миссия средней продолжительности занимала около часа, поэтому за обеденный перерыв можно было еще и поесть. Спустя 20 лет ролевые игры существен-но углубились в виртуальный мир. Гиганты уровня World of Warcraft и Star Wars: Galaxies стали местом, где игроманы всего мира реа-лизуют свои ролевые фантазии. В этих мирах полно миссий, от тусовки с инопланетянами в забегаловке до линчевания гоблинов. Успех общеизвестной Second Life окончательно убе-дил несколько очень крупных компаний в необходимости присутствия в виртуальном пространстве. Однако во все упомянутые игры не так-то просто «сыграть по-быстрому», когда у вас мало времени. Зато в Dofus легко можно нырять и выныривать обратно, когда захочет-ся. Dofus – это RPG французской разработки, весьма популярная среди наших галльских чика Dofus, протестировать некоторые новые функции перед потенциальной конвертацией игры в другие локали [русской среди них пока нет, – прим. ред.]. А что же сама игра? Dofus предпочла псев-дореалистичную графику World of Warcraft и Star Wars: Galaxies тотальной Flash-анима-ции. Ankama позиционирует Dofus как почти интерактивный мультфильм. Использование Flash означает, что качество графики не зави-сит от размеров окна, и это определенно придает игре гладкую мультяшную прият-ность. Читатели, знакомые с историями про Астерикса и Обеликса, найдут Dofus порази-тельно знакомым с графической точки зре-ния. Здесь даже есть персонаж по имени Догматикс! Статистикс Сюжет простой: вы ищете приключений в провинции Amakna. Ваша цель – найти шесть Dofus’ов, или Драконовых яиц, они наде-лят вас неограниченной властью. Но способ добиться цели зависит только от вас: мож-но входить и выходить из игры в пределах пятиминутных кусочков, а можно слоняться там часами, исследуя каждую пядь предо-ставленного виртуального мира. Удобно, что Dofus предлагает новичкам пробный режим под названием Incarnum, в котором можно потренироваться перед полным погружени-ем в игру. Захватив боевой топор, Энди Хадсон отправляется искать приключений в новом мире. Хотите последовать за ним? DofusИюль 2007 Linux Format 13 Ролевая игра Обзоры Dofus предоставляет социальный опыт, но можно безоглядно вступить в игру и поло-житься на удачу. Помните, что для истреб-ления самых опасных врагов необходи-мо объединять усилия с другими игроками. Самое страшное, что может встретиться вам в Incarnum – это Gobball War Chief (Главный военный вождь), Dofus-версия волка в овечь-ей шкуре. Не позволяйте их пушистой наруж-ности усыпить вашу бдительность: они больно кусаются! Поправочки-с Но есть некоторые вещи, умаляющие досто-инства Dofus. Самое очевидное – тексты, используемые в игре. Хотя игра объявлена специально предназначенной для британского рынка, тексты страдают ошибками перево-да – очевидными кальками с французского. Если вы когда-нибудь пользовались прило-жениями, переведенными с других языков, то вам, без сомнения, знаком тот квази-анг-лийский, который получается в результате. Ankama открыта для игроков, присылающих поправки – а может быть, им стоит обратить внимание на Launchpad от Canonical, чтобы быстро найти подходящий перевод. Другой недостаток – отсутствие у графики всякой глубины: вместо того, чтобы подни-маться и спускаться по лестнице, персонаж просто перемещается по сетке, что может приводить к нереальным ситуациям, когда он просто зависает над землей. Но все это мелочи. Игровое пространство обширно, а разработчики обещают нам все Dofus не похож на большинство современ-ных игр тем, что здесь нет свободного разви-тия сюжета. Поле игры состоит из множества экранов, наводящих на мысль о графичес-ком эквиваленте старых текстовых игр (North, West и т.п.). Чтобы указать выходы, существующие на данном экране, Dofus использует маленькие значки, напоминающие компас: щелкните на любом из них, и ваш персонаж перейдет с данного экрана на другой, в зависимости от направления стрелки компаса. К несчас-тью, эти значки трудновато разглядеть из-за неудачного выбора цветов, сливающегося с фоновым рисунком. Чтобы найти подобную штучку, иногда бывает необходимо потратить несколько минут. Понятно, что создатели игры не хотели делать эти значки броскими, но ясность все же должна иметь преимущество перед желанием соблюдать цветовую схему. Взаимодействовать с другими игроками через чат очень удобно. Если вы находитесь в Incarnum, можно воспользоваться функцией Incarnum и разослать свое сообщение всем игрокам, глобально. Однако по умолчанию чат ограничен персонажами, находящимися в пределах видимости, и вместо текста в окне чата высказывания персонажей всплывают как пузыри у них над головами. Это неудоб-но, когда несколько человек пытаются раз-говаривать одновременно, так как теряется последовательность разговора; приходится все равно обращаться к чату, и пузыри оста-ются не у дел. В игре присутствует много неиграющих персонажей (NPC), которым можно задавать вопросы и получать ответы на них. Если над головой одного из таких персонажей – зеле-ный восклицательный знак, то это обычно означает, что он хочет вам что-то сказать или, чаще, подсказать какое-либо действие. Внутри Incarnum это может быть предложени-ем набрать воды для нимф, попросить мате-рию, из которой кто-нибудь сделает флаг, и даже умереть, чтобы посмотреть на жизнь с другой стороны! Это делается, конечно, для того, чтобы облегчить игру, и нужно провести немало времени в Incarnum, прежде чем осме-литься войти в город Astrub. новые приключения в будущем. Самое глав-ное, доступ к Dofus можно получить бесплат-но, хотя количество серверов для этого огра-ничено. Но даже стоимость годовой подписки для полного доступа в 60 большинству игро-ков не покажется чрезмерной. Итак, можем мы рекомендовать Dofus или нет? Зависит от ваших ожиданий. Если вам больше нравится полное погружение, то оста-вайтесь лучше с Second Life или World of Warcraft. Но новичкам в ролевых играх, несом-ненно, стоит попробовать Dofus. Независимо от уровня игровой квалификации, вы всту-пите в живое игровое сообщество и получите захватывающий сюжет, с которыми в ближай-шие несколько месяцев уж точно не соскучи-тесь. LXF Сюжет 8/10 Графика 6/10 Продолжительность 10/10 Цена 10/10 Dofus Приятная игра, нам она очень нравит-ся – но есть еще, над чем поработать. Рейтинг 8/10 Вердикт Разработчик: Ankama Сайт: www.dofus.com Цена: 60 за годовую подписку, возможны варианты. Вдали появился Дарт Вейдер (угрожающая черная фигура в кружке), правда, на сей раз без своего лазерного меча. Пора одеться и вооружиться! Хотя игра и основана на Flash, но и у нее есть минимальные и реко-мендуемые системные требования. Непонятно, почему обделили пользователей PowerPC Mac, указав лишь требования к PC. Dofus без запинки работал на нашем компьютере с 2.8-ГГц Pentium 4, гигабай-том ОЗУ и широкополосным подключением, используя Ubuntu 7.04 и Flash-модуль, добытый в репозитории Multiverse. Системные требования Минимальные требования: Pentium III 700МГц 128MБ ОЗУ 56K модем Рекомендуется: Pentium III 1ГГц 256MБ ОЗУ Широкополосное подключение14 Linux Format Июль 2007 Обзоры Принтер Вкратце… Функциональность 8/10 Производительность 9/10 Простота использования 9/10 Цена 7/10 HP LaserJet 2700n Безупречная машина. При умеренной цене на картриджи могла бы выйти в мировые лидеры. Рейтинг 8/10 Вердикт Производитель: HP Сайт: www.hp.com Цена: $700 без НДС Вы просили побольше об устройствах? Получайте: Пол Хадсон исследует новейший цветной лазерный принтер бюджетного класса… HP LaserJet 2700n web-сервер, позволяющий настроить качество печати, параметры бумаги и параметры сети. Так как экран на устройстве слишком мелкий и читать на нем трудно, web-интерфейс – более удоб-ный способ навигации в массе доступных параметров. Чистая победа Нужна скорость? 20 черно-белых и 15 цветных стра-ниц в минуту вас вполне устроят. Оборотная сторона такой скорострельности – неимоверная быстрота, с которой расходуется тонер: расходы на замену карт-риджей придется подсчиты-вать чуть ли не по окончании настройки. И здесь вас ожи-дает шок: каждый из четырех картриджей обойдется при-мерно в $150. Да, да, полная замена будет стоить столько же, сколько сам принтер. Будем справедливы, те же накладные расходы понесут и пользователи Windows. Но вернемся к самому интересному: будет ли отличаться качество печати на Linux по сравнению с Windows и OS X? Мы распе-чатали несколько пробных страниц с текстом и фото и раздали их всем окружающим на «дегустацию». И что в итоге? Большинство не смогло заметить разницу. Печать обычного текста под Linux столь же безупречна, как в других ОС. Мы заметили некоторое ухудшение каче-ства при печати изображений. Но даже это спорно, так как причиной могли быть недо-статки ПО: F-Spot и Gimp хороши, но… все-таки не Photoshop. Кроме того, различия были настолько малозаметны, что никто их не обра-щал на них внимания до тех пор, пока мы сами не ткнули пальцем в легкое искажение мелкой детали одной из тестовых страниц. HP достигла такого качества, поместив добрую часть кода своего драйвера в ядро Linux, а также вложив прогрессивные техно-логии цветной печати в само устройство, отче-го выиграли все. Именно для этого в принтер встроен процессор 300 MГц, а при большой нагрузке на печать мы рекомендовали бы установить 64 MБ ОЗУ. Та часть драйвера, которую HP не смогла открыть, видимо, не оказала существенного влияния на результат. LaserJet 2700n можно приобрести за $560 без НДС [в РФ – в районе $700, – прим.ред.], Интересно, одинаково ли один и тот же принтер работает под Linux и под Windows? По уверениям HP, ее драйверы принтеров содержат код, раскрыть который компания не может, поэтому разум-но было бы предположить, что в Linux прин-тер будет работать хуже, чем на Windows или OS X. А вот и нет: LaserJet 2700n, новей-ший цветной лазерный принтер HP бюджет-ного класса, печатает почти идентично на любой предложенной платформе. Более того, настроить его под Linux гораздо проще. Как все современные принтеры, LaserJet 2700n «понимает» Ethernet и USB. Это уже зву-чит обнадеживающе для Linux-пользователей: ведь, как и многие другие устройства, принте-ры, подключенные к Ethernet, «просто работа-ют», не требуя для себя особых драйверов. Дело упрощается еще и тем, что для HP есть особая панель инструментов, предуста-новленная в Ubuntu, которая просканировала нашу сеть на предмет наличия принтеров, нашла LaserJet и автоматически организо-вала его взаимодействие со всеми наши-ми программами (Fedora тоже сработала без запинки). Панель автоматически считывает уровни тонеров в каждом картридже и напоминает номер модели, чтобы при снижении уровня можно было заранее заказать замену. Да, на Windows все эти инструменты тоже есть, но их установка занимает около 10 минут и требует копирования на винчестер около 100 MБ дан-ных. За это время мы распечатали несколько десятков пробных страниц на Linux! Еще одна тонкая штучка – доступ к систе-ме управления принтером через встроенный и это безумно мало, с учетом скорости и каче-ства работы устройства. Картриджи дороги, но зато получается превосходный текст и высо-кокачественные изображения (пусть не струй-ного качества), а настроить принтер может даже ребенок. LXF Цветной лазерный принтер, не разрушающий семейный бюджет до покупки картриджей. Можно сравнить с любым хорошим струйным принтером. «За $600 хотелось бы чего-то покруче LCD-дисплея как у калькулятора и четырех крошечных навигационных кнопок». Майк считает… Пробные страницы на Linux вышли не хуже, чем под Windows и OS X. Были бы только картриджи подешевле… Инструментальная панель HP разыскала устройство и автоматически настроила его. Для более тонкой настройки пользуйтесь web-интерфейсом.Июль 2007 Linux Format 15 Дистрибутив Linux Обзоры Вкратце… Функциональность 8/10 Производительность 8/10 Простота использования 8/10 Документация 8/10 Mandriva 2007 Spring Free Крепкий дистрибутив с несколькими реальными новшествами, но сделать предстоит еще очень многое. Рейтинг 8/10 Разработчик: Mandriva Сайт: www.mandriva.com Цена: Бесплатно под GPL Вердикт Metisse способен вскружить голову, но что стоит за внешним блеском? Интересуется Ник Вейч. Mandriva 2007 Spring Freeтать без проблем, для бесплатной же версии необходимые драйверы придется, как всегда, загружать самому. Приятная новинка – Drakvirt, менеджер ПО виртуализации. В отличие от соперников, он умеет настраивать разные решения, включая VirtualBox и VMware, хотя для серьезной рабо-ты Xen от Red Hat все же его превосходит. Остальное – не столько инновация, сколь-ко коммерциализация. Интеграция ПО для телефонных переговоров Wengo – это хоро-шо, но только для тех, кто согласен оплачи-вать счет Wengo. Для любого дистрибутива жизненно важ-ны повседневные задачи: можно ли правильно настроить свое оборудование, инсталлировать ПО и добиться реальной продуктивности? Mandriva использует Urpmi для управления пакетами. Это прекрасный инструмент для выбора ПО в процессе инсталляции, но он несовершенен. Существуют проблемы с уста-новкой в качестве обязательных даже таких зависимостей, которые всего лишь желатель-ны. Каталог Urpmi стремительно устаревает, как и актуальные репозитории, что приводит к проблемам при загрузке нового ПО – это особенно заметно в первые несколько недель после выхода версии. Некогда, желая получить новей-шее ПО, да такое, чтоб работало (чаще, чем нет), все обращались к Mandrake. Пока другие дистрибутивы дожи-дались стабильности ПО и всесторонней про-верки обновленных ядер, команда Mandrake много работала над включением в дистрибу-тив последних новинок, твердо веря в то, что их можно заставить функционировать. Теперь это лишь воспоминания. Такие дистрибутивы, как Fedora и Ubuntu, обрели известность бла-годаря удобству и грамотному подбору ПО, в то время как версии Mandriva постепенно утратили былой задор и остроту. Сможет ли 2007 Spring Free исправить положение? К сожалению, нет, хотя без новинок не обошлось и на этот раз. Прыжок вперед Гвоздь программы – Metisse, собственное изобретение Mandriva для трехмерных рабо-чих столов. Надо сказать, Metisse – это не просто украшение, а попытка усовершенство-вать продуктивность работы. Здесь приме-няется несколько новых функций, включая девять виртуальных рабочих столов, способ-ных действовать, как один большой экран. Но вот в пользе вращающихся окон и прочих при-бамбасов мы не совсем уверены. Наиболее заметная проблема версии Free – то, что широко разрекламированные преиму-щества Mandriva в действительности не так легко получить. Возьмем Metisse. Сведения о нем появляются уже на этапе инсталляции. Есть даже специальный сеанс настройки X для работы с ним (или для доводки Beryl/Compiz). А потом оказывается, что работать с Metisse может не всякая видеокарта, и похоже, что для свободной версии выбор ограничивается чипсетами Intel. Предельно ясно, почему не включены драйверы Nvidia (иначе версия не была бы свободной), но выяснять, «почему оно не работает», предоставляется самому пользователю. Вариант Powerpack, в котором драйверы Nvidia присутствуют, должен рабо-Отчаянный смельчак легко может загру-зить пакеты Cooker для Mandriva, где всегда есть новейшие версии ПО. По крайней мере, были. Падающая популярность Mandriva при-водит к тому, что количество новых пакетов постоянно сокращается. Но Mandriva еще повоюет. Очевидно, что умы, стоящие за ним, умеют делать хорошие дистрибутивы. Чтобы получить превосходный, нужно только чуть поднажать. LXF Передовой дистрибутив для рабочего стола – см. подробности на стр. 32! «Приятная новинка – Drakvirt, менеджер ПО виртуализации.» Все гладко и удобно, но нет прежнего напора. Неужели так – лучше? На DVD16 Linux Format Июль 2007 Обзоры Пакет обработки цифрового звука Вкратце… Функциональность 9/10 Производительность 9/10 Простота использования 7/10 Документация 9/10 EnergyXT 2 Использует эффекты реального време-ни и синтезаторы в той же манере, какой годами наслаждались пользователи Windows и OS X. Рейтинг 9/10 Вердикт Разработчик: XT Software Сайт: www.energy-xt.com Цена: 39 Изучаем интерфейс EnergyXT «Открывает целый мир возможностей, и вы от него никогда не откажетесь.» Освободите музыку из плена треков и фейдеров. Грэм Моррисон рассматривает программу, создающую мелодию прямо на экране. EnergyXT 2Live, чем к Ardour: данные каждой дорожки можно редактировать прямо из окна аранжи-ровки, не надо открывать всякий раз новое окно. Это делает работу интуитивно понятной, а интерфейс удобным. Например, во время создания дорожки ударных можно добавлять каждый удар одним щелчком, а громкость регулировать, поднимая и опуская ползунок. На дорожке MIDI можно визуально отобра-жать ноты и данные контроллера в одном окне, можно даже нажимать на клавиши вир-туальной клавиатуры, чтобы воспроизводить ноты в реальном времени. При необходимости более тонкого контроля, двойной щелчок на области данных откроет окно точного редак-тирования расположения и продолжитель-ности нот. Творческое конструирование Главное достоинство EnergyXT – унаследован-ный от предшественницы модульный принцип строения. Переключившись с окна аранжи-ровки (под названием Sequencer) на окно графиков (Comps), вы увидите графичес-кое представление своей настройки. Каждая дорожка – модуль со входом и выводами для аудио и MIDI-данных. Виртуальные кабе-ли соединяют модули друг с другом и с сек-венсором, но эту раскладку нетрудно изме-нить по своему вкусу. В EnergyXT встроено три модуля: секвенсор, используемый в окне аранжировки, модуль эффектов и синтеза-Сначала EnergyXT была перво-классным инструментом для MS Windows. С ее помощью можно было собрать коллекцию программных син-тезаторов и аудиоэффектов в единственном окне, используя вывод одного процесса в качестве входа для другого, как это делается в модульном синтезаторе. Полученные тво-рения можно было затем использовать как источники звука для программ звукозаписи или даже самой EnergyXT, свободу творчества ограничивала лишь производительность про-цессора. EnergyXT принесла своему автору, Йоргену Аазе [Jоrgen Aase], большой успех, а он уже планировал необычное продолжение: поддержку Linux. И вот перед нами специальная Linux-версия EnergyXT 2 – правда, она выглядит несколько пугающе. Основное окно выглядит примерно так же, как окно аранжировки в большинстве подобных программ, от свобод-ной Ardour до индустриального лидера Ableton Live. Дорожки аудио, ударных и MIDI-данных располагаются друг над другом, а данные дорожек блоками уходят вправо. А вот и то, что приближает EnergyXT 2 скорее к Ableton тор/сэмплер. Синтезатор хорош, его можно редактировать в реальном времени, меняя тембр звучания от резких отрывистых звуков до теплых, похожих на аналоговые, всплесков. С помощью модуля эффектов звуки обогаща-ются прерываниями, реверберацией, фазовы-ми и хоровыми эффектами. Кому этого мало, может загрузить множество других эффектов и синтезаторных модулей, полученных пере-компиляцией под Linux модулей Windows VST. Особенно привлекательна коллекция ‘MDA’ Пола Келлета [Paul Kellet], содержащая широ-кий диапазон аудиоэффектов и пару замеча-тельных синтезаторов. Существует обратная зависимость между гибкостью программы и простотой ее исполь-зования, поэтому работать с приложениями такой модульности всегда сложно. Просто стянув все модули в окно аранжировки, вы обманете себя мыслью о том, что это всего лишь обыкновенная музыкальная программа. Но одно лишь нажатие кнопки Comps откроет вам целый мир возможностей, от которого вы никогда не откажетесь ради обычного ввода ноты за нотой. Может быть, вы и не закончите свою симфонию, зато получите массу удо-вольствия в процессе творчества. LXF Конфигурацию виртуальных подключений всей оснастки можно свободно менять. Модульный музыкальный комплекс с эффектами реального времени и программными синтезаторами. См. также: Ardour или LMMS. Синтезатор реального времени В EnergyXT встроен свой программируе-мый синтезатор. Запас эффектов Звуки можно украсить различными аудиоэффектами. Редактор ударных Удары добавляются простыми щелчками на дорожке ударных. Матричное окно Чтобы точнее управлять редактированием, откройте новое окно. Синтезатор JX10… …нет, все-таки загрузка инструмен-тов по выбору – это здорово. Управление данными Можно редактировать кривые громкости и другие управляющие данные. Сэмплер Каждый удар барабана имеет собственный сэмпл. Матричный редактор Ноты можно добавлять и редактировать в главном окне.Июль 2007 Linux Format 17 Эмулятор Обзоры Вкратце... Последние двенадцать месяцев Грэм Моррисон страдал по Oblivion. Благодаря новой версии Cedega он, кажется, получит новую игрушку. Cedega 6 название и нажав Play. Защиту от копирова-ния Cedega берет на себя, используя техноло-гию, лицензированную производителем (одна из причин того, что Cedega не свободна), и через несколько секунд появляется панель настройки Oblivion. Даже на выверенном ПК с Windows для окончательной настройки игры понадобятся некоторые усилия. В игре При низком разрешении 800х600 и среднем уровне качества, Oblivion выдавал в сред-нем 29 кадров в секунду. При том, что наша видеокарта на сегодня не самая мощная (см. Начинка нашего PC, вверху справа), это сов-сем не плохо. Увеличение разрешения до 1280х760 и включение одного эффекта Bloom уменьшило число кадров в секунду лишь на 10. В общем, игра идет, как полагается, кроме наиболее интенсивных боевых сцен, хотя нам так и не удалось заставить работать в Cedega рендеринг высшего качества HDR. Но вот интересный вопрос: с какой скоростью игра идет на Windows? Мы установили Windows и Oblivion на тот же компьютер, запустили с теми же настройками и обнаружили, что на Windows скорость увеличилась почти на 40%: до 48 кадров в секунду. Видеокарты недешевы. Если вам удалось добыть серьезное устройство, необходимое для новейших игр уровня Oblivion, то вы не станете мириться со снижением производи-тельности, как бы ни была хороша Cedega. Восемнадцать месяцев назад мы рас-сматривали 5-ю версию Cedega. Благородный труд TransGaming по переносу Windows-игр на Linux увенчался 6-й версией. Нумерация у версий Cedega необыч-ная. Программа непрерывно развивается, а пользователи покупают подписку на услуги, что позволяет им не только постоянно полу-чать обновленные версии, но и голосовать за игры, поддержку которых они хотели бы получить. Нельзя купить версию 6, продается лишь подписка. Если TransGaming увеличивает номер вер-сии, это значит, что достигнута некая важная веха в развитии программы. Вехой для вер-сии 6 стала Oblivion, популярнейшая игра от Bethesda Softworks, вышедшая в прошлом апреле. Важной вехой Oblivion сделала не популярность, а тот факт, что это одна из кра-сивейших и требовательных к ресурсам игр. Она заставляет попотеть даже консоли Xbox 360 и PS3, что уж говорить о нашем скромном Linux-компьютере. Но чтобы извлечь что-нибудь из Cedega, Linux-компьютер должен быть не таким уж скромным. Без хорошей видеокарты от Nvidia не обойтись. Версия 6 заявляет об улучшении поддержки ATI, но, если честно, мы не реко-мендуем пользоваться ею, пока не появится нормальный драйвер от ATI/AMD. Инсталлятор программы небольшой – основные файлы загружаются им с сайта TransGaming автома-тически. Двоичные пакеты имеются для любо-го крупного дистрибутива, включая Red Hat, Fedora, Mandriva, Debian и Ubuntu, проблем этот способ инсталляции не вызывает. Установка Windows-игр сводится к простому нажатию непомерно огромной кнопки Install в менеджере игр Cedega, выборе профиля игры из выпадаю-щего меню, вставке CD/DVD в привод и нажа-тию Continue (Продолжить). Прежде чем начать магические процедуры установки, Cedega нахо-дит инсталляционный файл на диске. На нашем тестовом компьютере инстал-ляция Oblivion заняла почти полчаса – рез-кий контраст с восе-мью минутами для Windows, подор-вавший нашу веру в производительность игры. Не было про-блем с инсталляци-ей – и на том спаси-бо. Любую игру из коллекции можно запустить, выделив ее Но для нерегулярного Linux-игрока Cedega – единственная возможность запустить клас-сную игру вроде Oblivion. Уже то, что она вообще работает – поразительное достиже-ние. LXF Подробнее о кроссплатформенной магии см. стр. 40. Играйте в Windows-игры под Linux. В данной версии добавлена поддержка Battlefield 2142, World of Warcraft и Madden 07. См. также: Crossover Linux от CodeWeaver. Чтобы создать эту чудную графику, TransGaming ввела поддержку Shader Model 2.0. Запуск игры в окне не влияет на производительность, а вот от Beryl – эффект негативный. AMD Athlon 64 X2 5000+ (Cedega использует только одно ядро) 1Гб ОЗУ Nvidia 7600GS 256Мб ОЗУ (PCIe) Наш ПК Функциональность 9/10 Производительность 7/10 Простота использования 8/10 Документация 9/10 Cedega 6 Технически впечатляет, неплохо для эпизодического использования, но требу-ет мощного оборудования. Рейтинг 8/10 Вердикт Разработчик: TransGaming Сайт: www.transgaming.com Цена: $5 в месяц (минимальная подписка – три месяца)Paul Blachford 18 Linux Format Июль 2007 Наш выбор Каждый месяц мы сравниваем тонны ПО – а вы можете отдыхать! Сравнение FilesAnywhere c. 19 FlipDrive c. 19 IBackup c. 20 IceBackup c. 21 Rsync.net c. 22 XDrive c. 21 Про наш тест... Тестирование первоначально проводилось на Kubuntu 7.04 Feisty Fawn, с использова-нием Mozilla Firefox (v2.0.0.3) и Konqueror (v3.5.6) из KDE. Версия Java была 1.4.2. Важно было учесть, много ли предоставля-ется пространства для хранилища и какие протоколы передачи данных доступны, так как большее их число дает больше гибкос-ти. Мы также хотели узнать расценки на тот или иной сервис, и существуют ли «побо-ры» сверх абонентской платы. Безопасность любой резервной копии – ключевой вопрос. В идеале данные должны шифроваться перед передачей, но скорость сервиса тоже важна: мы использовали быс-трую (8 Mбит в прямом канале и 1 Mбит в обратном) ADSL-линию, чтобы увидеть, насколько приемлемы скорости. Известно, каким обременительным считают резерви-рование многие пользователи и админист-раторы, поэтому регистрировались просто-та в использовании и качество документа-ции. Наконец, мы учитывали кросс-плат-форменную совместимость сервиса: хоро-шо ли он работает с Linux, и есть ли ориен-тированная на Linux документация. Резервирование данных – будь то фотки, привезенные из отпуска тетей Дженни, или платежные ведо-мости предприятия – важнейшая обязанность, которой часто пренебрегают. При этом оправдываются затратами, слож-ностями и предположением, что потеря дан-ных – весьма маловероятное событие, которое уж с вами-то никогда не случится. Однако люди разумные, вроде читателей Linux Format, как минимум планируют запус-тить регулярную процедуру резервирования, а то и прикидывают: не использовать ли онлайн-резервирование для усовершенство-вания этой операции? Большинство читате-лей, попавших на наши страницы, знают, что данные при онлайн-резервировании переда-ются через Интернет на систему хранения провайдера, а не на локально присоединенные физические носители вроде компакт-дисков, внешних жестких дисков или магнитных лент. Тогда вам уже не надо беспокоиться об утрате резервных копий из-за кражи или пожа-ра, и вы сможете употребить свои ресурсы на другие важные дела. Сюда входит регулярная проверка (вправду ли сохранены те данные, которые вы считаете сохраненными) и пла-нирование операций восстановления данных, если немыслимое событие произойдет. В слу-чае беды следует просто переустановить ОС, получить доступ к онлайн-службе резервиро-вания и восстановить ваши данные. Что предлагается? Онлайн-резервирование обычно предлагает три вида методов сохранения и восстановле-ния данных. Во-первых, имеется web-интер-фейс, когда отдельные файлы загружаются с помощью HTTP, а множественные файлы/каталоги – с использованием Java-апплета. Второй метод использует программу-клиента, запущенную на вашем компьютере. Лучшие клиенты предлагают всяческие встроенные функции: например, включение задачи резер-вирования в расписание или опцию использо-вания нескольких наборов файлов для выпол-нения разных задач резервирования. Ну и в-третьих, часто можно обратиться к службе, используя FTP, WebDav или rsync. FTP-клиенты существуют почти для каждой платформы, да и найти подходящие клиен-ты для WebDav или rsync также не соста-вит труда. Это – идеальный способ осущест-влять резервирование в кросс-платформен-ном окружении. Надеемся, что один из сервисов, пред-ставленных здесь, подойдет для вас или для вашей организации. Что ж, поглядим! Горя желанием избавиться от своих 8-дюймовых дискет, Крис Хауэллс оглядел сервисы, позволяющие сохранять данные по сети. Онлайн-резервирование Июль 2007 Linux Format 19 Онлайн-резервирование Сравнение FilesAnywhere – базирующаяся в США служба, предлагающая разнообразные протоколы передачи данных, равно как и проприетарные Windows-приложения. Как водится для сервисов, базирующихся в США, оплата принимается в американских долларах, и проживающие за пределами США при обра-щении в службу поддержки могут столкнуться с проблемой часовых поясов, поскольку офи-сы FilesAnywhere открыты только в дневное время США. Было приятно увидеть Java-апплет для SFTP, то есть вам не надо покидать браузер, чтобы насладиться безопасными FTP-загруз-ками. Апплет работал неплохо, хотя имел раздражающую привычку открывать окошко для каждого переданного файла, вмешива-ясь во все, что бы мы ни делали. Вместо него можно использовать командную строку SFTP-клиента, что придает определенную степень гибкости. Отличный web-интерфейс дает доступ к файлам через браузер. Он имеет много функций и хорошо оформлен, а Java-опция загрузки означает, что вы можете загружать и целые каталоги, и отдельные файлы, исполь-зуя HTTP. Нам понравилась функция Media Gallery, делающая миниатюры изображений для FilesAnywhere беглого просмотра перед скачиванием. Впечатляет также функция Zip And Download, автоматически сжимающая весь каталог в zip-файл для скачивания: очень удобно, и должно ускорить загрузку. Существует множество способов совмес-тного пользования файлами: FileShare посы-лает по электронной почте ссылку на файл для скачивания, GroupShare позволяет раз-делять файлы с другими пользователями FilesAnywhere, и можно даже создать DropBox, чтобы получать файлы от других людей. Но это еще не все. WebFolders предлага-ют получить доступ к службе через протокол WebDav, и имеется функция Mobile Access, объявленная совместимой с мобильными телефонами BlackBerry и Windows. Функция WebDav превосходно работала в Konqueror с одноименным KIO slave. Пользоваться ею несложно, и служба оформлена на уровне, с большим выбором доступных протоколов. Так как же мы оценим FilesAnywhere? По боль-шому счету, мы ожидаем, что она привлечет Вам правда нужны ваши файлы везде? Web-интерфейс упрощает загрузку и управление файлами: для загрузки нескольких файлов используется интерфейс Java. FlipDrive позиционируется скорее как система совместного использования файлов, а не решение для резервиро-вания. Например, можно загрузить большие файлы для общего доступа вместо рассылки по e-mail с риском того, что прикрепленный файл повесит почтовый сервер адресата. FlipDrive использует систему загрузки фай-лов, основанную на web-браузере. Интерфейс дает возможность создавать каталоги, загру-жать новые файлы и, естественно, скачивать ваши файлы. Есть еще и удобная функция поиска по имени файла. Загружать файлы мож-но двумя методами. Первый – простой метод на базе HTTP, а второй – система ‘Power Upload’, использующая Java-апплет. Этот апплет позво-ляет загружать сразу несколько файлов и ката-логов. Оба способа предоставляют сведения по количеству переданных данных и времени, оставшемуся до окончания операции. Система справки эффектна: это видеопо-собие, сделанное на Macromedia Flash. Есть FlipDrive также функция фотогалереи, хотя она показа-лась нам не такой интуитивной, как остальной сайт; и, похоже, нельзя добавить в галерею уже загруженные фото. Совместно использовать файлы с тре-тьими лицами легко, при этом уведомление посылается на электронную почту получате-ля. Файл можно скачать пять раз за 24 часа – не особенно щедро. Наряду с совместным использованием файлов и резервировани-ем, сайт FlipDrive предлагает и другие сер-висы, а именно календарь и адресную книгу. Интуитивный и хорошо оформленный, кален-дарь также имеет функцию извещения по электронной почте; это удобно, если вы посто-янно забываете о чьем-нибудь дне рождения. Щеколда-защелка, другая служба резервирования. FilesAnywhere Впечатляющий сервис со множеством элегантных свойств; браво. Рейтинг 8/10 FilesAnywhere Сайт: www.filesanywhere.com Цена: От $3.95 в месяц Вердикт FlipDrive Хорошо оформленное приложение, с хорошим базовым сервисом совместного использования файлов и резервирования. Рейтинг 8/10 FlipDrive Сайт: www.flipdrive.com Цена: От $4.95 в месяц Вердикт FlipDrive предлагает фотогалереи, к которым можно дать открытый доступ. «FilesAnywhere дает отличный доступ к файлам из браузера.» «FlipDrive – система и общего доступа к файлам, и резервирования.» продвинутых личностей: документация вся на месте, но в ней мало пошаговых инструкций, а без них некоторым не обойтись.20 Linux Format Июль 2007 Сравнение Онлайн-резервирование IBackup – это сервис от Pro Softnet Corporation из Калифорнии. Он предлагает три вида учетных записей. План Economy включает только хранение и имеет самую низ-кую цену, план Enhanced – продукт средней категории, а план Workgroup предлагает боль-шую часть функций по самой высокой цене. Некоторые возможности, стандартные для плана Workgroup, в учетных записях Economy и Enhanced доступны как необязательные дополнения. Наше первое впечатление было очень пози-тивным: всеобъемлющий диапазон предлагае-мых протоколов – просто блеск! Регистрация, однако, разочаровала нас приглашением ска-чать приложения для резервирования IBackup для Microsoft Windows, тогда как наш браузер был Mozilla Firefox под Linux. Вернувшись на главную страницу, мы смог-ли задействовать основной сервис IBackup, состоящий из простой системы загрузки фай-лов через web. Сервис работает адекватно, но по-настоящему подходит только тем, у кого есть несколько файлов, не нуждающихся в особо частом резервировании. Интерфейс довольно интуитивен и обеспечивает нор-мальные средства управления файлами, такие как переименование и перемещение. Облом с папками Если вам нужно сделать резервную копию большого числа файлов, вас порадует, что можно резервировать папки целиком, исполь-зуя WebDav-подобную систему. После ввода имени пользователя и пароля мы получили ошибку HTTP 403 ‘Permission denied’. Мы было не сильно огорчились, поскольку пре-дыдущая страница предупреждала, что перед использованием этой функции следует уста-новить расширение Openwebfolder для Firefox. Но увы, оно не помогло. Затем мы перешли на Konqueror, где есть хорошая встроенная поддержка WebDav. Это также не дало результата, IBackup выдавал сообщение ‘Browser not supported’. Для пользователей Windows IBackup пред-лагает функцию сетевого диска под назва-нием IDrive – увесистое 10-МБ приложение. Оно позволяет обращаться к сервису как к обычному диску под Windows. Мы надеялись, что эта функция основана на SMB-протоколе, обычно используемом в сетевых дисках под Windows – он хорошо поддерживается в Linux; и просчитались. Мы проглядели весь сайт, чтобы поболь-ше узнать о совместимости с Linux. К нашему удивлению, оказалось, что поддерживается rsync – довольно умный протокол, стара-IBackupющийся минимизировать количество пере-даваемых данных; неплохое решение при резервировании сотен мегабайт ежедневно. Он порадовал нас отличной работой. IBackup позволяет запускать rsync через Stunnel, ради шифрования данных. Совместное использование файлов Чтобы дать другим доступ к вашим данным, предлагаются различные функции. Есть функ-ция Private Share, позволяющая вам совмест-но использовать файлы с другим пользовате-лем IBackup. Вдобавок функция Sub-Account открывает файлы для третьих лиц, что, одна-ко, требует дополнительной платы $5 в месяц за каждый Sub-Account. Поскольку третьим лицам дается возможность изменять файлы, предусмотрена блокировка: изменения, сде-ланные третьей стороной, не перезаписыва-ются изменениями, сделанными другой тре-тьей стороной. Одна уникальная возможность нас заин-триговала. Она касается выполнения перво-начальной резервной копии, с использова-нием внешнего жесткого диска или серве-ра, который затем переправляется в IBackup и вносится в систему хранения компании. Последующие резервирования, производи-мые приложениями Windows, Mac OS X или rsync, передают только те данные, что были изменены. IBackup также предлагает проприетарное Windows-приложение для создания резер-вных копий. Оно полнофункционально, и Нет, это не очередной продукт Apple... IBackup Хороший диапазон протоколов, но сервис не так отполирован, как остальные. Рейтинг 7/10 Сайт: www.ibackup.com Цена: От $9.95 в месяц Вердикт Web-интерфейс IBackup толково разработан. включает массу интересных деталей: напри-мер, экономит трафик и время путем пере-дачи только изменившейся части файлов. Программа-клиент также дает специальную поддержку для резервирования баз данных Microsoft Exchange и Microsoft SQL Server. А раз уж имеется клиент для Mac OS X, было бы очень приятно увидеть в будущем клиента и для Linux. IBackup хранит свои данные на серве-рах, находящихся в США. В общем, на нас произвела сильное впечатление техническая сторона сервиса IBackup, но способ его пре-доставления впечатляет куда меньше: он вряд ли подойдет технически неопытным пользо-вателям. Хотелось бы, чтобы информация о функциях, доступных для учетной записи, была ясно изложена на сайте – например, что-бы узнать о возможности доступа к серверам Ibackup через rsync, нам пришлось порыться в документации.Июль 2007 Linux Format 21 Онлайн-резервирование Сравнение На весьма профессионально выгля-дящем сайте IceBackup специально оговорено, что их сервис поддержи-вает все дистрибутивы Linux. Впечатляет сам набор поддерживаемых операционных сис-тем, включающий Windows, Mac OS X, Solaris и Novell NetWare. Сначала нам показалось странным, что размер клиента для Linux такой большой, при-мерно 30 МБ. Он содержит как консольную версию, так и версию для X11. Мы честно следовали всем (довольно скверным) инструкциям, но нам, тем не менее, не удалось разрешить странную ошибку Java, якобы связанную с файлом, не включенным в дистрибутив. Провозившись с этой пробле-мой несколько часов, мы пришли к выводу, что совместимость IceBackup с Linux не так хороша, как обещано. Тогда мы перешли к консольной версии. Следуя опять-таки неадекватным инструкциям, мы не сумели исправить ошибку ‘Configuration File NOT Created’. К сожалению, других сооб-щений не поступило – а было бы весьма инте-ресно узнать, почему же все-таки не создался файл конфигурации. Клиент для Windows поживает существен-но лучше: он набит функциями, осуществляю-щими различные настройки резервирования IceBackupи планирование таковых; зато он не отоб-ражает скорость передачи данных, так что очень сложно оценить процент завершения и понять, сколько еще осталось ждать, а это раздражает. Впечатляет то, что клиент позволяет непо-средственно подключаться к серверам MySQL и Oracle для их резервирования – это сущест-венно упрощает задачу создания резервных копий серверов баз данных, поскольку нет необходимости проводить собственное резер-вирование при помощи Cron и mysqldump. Отчеты о состоянии, где перечисляются каталоги, помещенные в резервную копию, приходят по электронной почте, независимо от успешного либо неудачного завершения операция. Это приятная деталь, но опять раз-дражает отсутствие информации о том, сколь-ко времени длилось резервирование, и какие скорости передачи при этом достигались. Клиент довольно прост в использовании, но явно нацелен на тех, кому нужно серьезное решение для резервирования. Из-за сложнос-Выручит ли вас это ледяное решение? Клиент IceBackup для Windows создает log-файл, и вы можете узнать, что происходит. Если вы возжелаете попользовать-ся XDrive, придется завести учетную запись AOL. Ясно, насколько сильно ориентирован на США этот сервис: требует-ся вводить телефонный номер и почтовый индекс в формате США, а где ж их взять, коли у вас их нет. XDrive щедро дарит 5 ГБ для бесплатного хранения, а 50 ГБ стоят всего $9.95. Халява – это святое, и XDrive – единственный подоб-ный сервис, предлагающий бесплатно значи-тельное место для хранения. После входа на сайт вам предоставляется меню Launchpad, предлагающее выбор: либо открыть виртуаль-ный жесткий диск, либо запустить Xdrive-шоу. Последнее – это новаторский метод созда-ния слайд-шоу из рисунков и музыки, иде-ально работающий с Firefox – он основан на Macromedia Flash. Загрузка файлов может осуществляться двумя способами. Первый, Basic, использует простую HTTP-передачу. Он прилично работа-ет для отдельных файлов, и даже предостав-XDrive ляет информацию о ходе загрузки. Второй метод называется Accelerator Plus; он пре-доставляет хорошие скорости – наша ADSL-загрузка добралась до 100 Kб/сек. Главный его козырь – способность загружать целые каталоги за один раз. После загрузки фай-лов XDrive работает весьма интеллектуаль-но, обеспечивая предпросмотр для больших рисунков. Также имеется функция поиска. Интересна обнаруженная нами функ-ция закладок, где можно хранить Закладки/Избранное web-браузера. В настоящий момент, однако, поддерживается только импортирова-ние закладок Internet Explorer. Сервис корректно работал с Firefox, а вот Konqueror, к сожалению, отказал в защищен-ном входе. Это не драйв, это XDrive. IceBackup Продукт для Linux и техническая поддержка сильно разочаровывают. Рейтинг 3/10 Сайт: www.icebackup.net Цена: От $14 в месяцВердикт XDrive Реализовано несколько очень удобных домашним пользователям функций. Рейтинг 7/10 Сайт: www.xdrive.com Цена: бесплатен в базовом варианте Вердикт Accelerator Plus обеспечивает высокую скорость загрузки. «Полный список поддерживаемых ОС впечатляет.» «XDrive щедро дарит 5 ГБ на бесплатное хранение.» ти используемых концепций планирования и файловых наборов, для новичков это непод-ходящий выбор.22 Linux Format Июль 2007 Сравнение Онлайн-резервирование Освоим жаргон rsync – утилита для эффективного обме-на данных между сайтами. Важно, что пере-сылаются только различия между разными версиями файла, и если файл был изменен совсем немного, то следующее резервиро-вание выполняется гораздо быстрее. SSH обозначает Secure SHell, удаленную систему доступа, широко используемую при администрировании Unix-серверов. В отличие от раннего Telnet, данные здесь шифруются. SFTP – SSH-протокол передачи файлов, который работает путем туннелирования данных передаваемых файлов через SSH-соединение, обеспечивая невозможность перехвата файлов. SCP (Secure Copy Protocol) – другой спо-соб передачи файлов через SSH-соединение. Строгий сайт сразу переходит к тех-ническим деталям – на фоне назой-ливо-рекламных сайтов конкурентов это бодрит – и мы были мгновенно очарова-ны предложениями сервиса Rsync.net. Столь же приятно смотрится документ об усло-виях обслуживания, написанный для людей без юридической практики: безо всякой там неудобочитаемой зауми, которой часто зло-употребляют подобные документы. Rsync.net имеет три центра данных: два в США, один в Швейцарии. В этом году так-же планируется расшириться в Индию и на Тихоокеанское побережье. Есть даже опция выбора центра данных, где бы вы хотели хра-нить ваши файлы – европейцы, скорее всего, предпочтут Швейцарию, чтобы снизить время ожидания. Другая интересная функция – «гео-дублированная файловая система», которая автоматически воспроизводит данные на дру-гом месте. Это снижает вероятность причине-ния вреда вашим данным стихийными бед-ствиями типа наводнений. Rsync.net не снабжает программами для доступа к сервису, но рекомендует пользовать-ся решениями третьих фирм. Следовательно, вашим вкусам угодят в любом случае, будь вы поклонником хоть консольных FTP-клиентов, хоть графических клиентов rsync. Rsync.net нацелен скорее на опытных поль-зователей Unix, чем на желающих просто сохранить пару-тройку файлов, и предлагает ряд протоколов, большая часть которых под-Rsync.net держивает шифрование. Проще всех – ста-рый добрый FTP и WebDav. Для продвинутых пользователей предлагается множество про-токолов туннелирования посредством SSH, включая rsync, SFTP и SCP. Для тех, кто хочет поиграть со следующим поколением интер-нет-адресации, имеется IPv6. Друзья администратора Rsync.net предлагает несколько приятных функций, включая возможность отобра-жать учетную запись WebDav как диск под Windows, то есть служба будет выглядеть под Windows просто как новое имя диска в дереве. Пользователи Unix могут с помощью SSHFS создавать виртуальную файловую систему. Поясним, что SSHFS передает данные по про-токолу SSH, а выглядит как обычная локально примонтированная файловая система. Для настройки SSHFS под Linux и FreeBSD име-ются инструкции. Не забыта и OS X для Apple Mac: даны инструкции по настройке Finder для обеспечения прямого доступа к сервису через рабочий стол OS X. Для создания резервных копий компания рекомендует утилиту под названием Duplicity (http://duplicity.nongnu.org). Duplicity применя-ет GNU Privacy Guard, GnuPG, для шифрования данных с использованием Pretty Good Privacy (PGP). Для эффективного управления переда-чами сжатых резервных копий служит librsync, при этом гарантировано, что при последую-щих актах резервирования будут передаваться только изменения файлов. Как и следовало ожидать, Rsync.net дает хорошие инструкции по использованию ути-литы rsync под Windows, Mac и Linux, приводя прямые примеры требуемых настроек. Даны также ссылки на подходящие версии rsync для Windows и OS X. Еще нам понравились обещания, касающиеся поддержки – она будет осуществляться инженерами, а не техника-Предлагая больше, чем просто rsync. rsync.net Отличный сервис, адресованный опытным пользователям и профессионалам. Рейтинг 8/10 Сайт: www.rsync.net Цена: От $1.60 в месяц Вердикт «SSHFS представляет Rsync. net как виртуальную файловую систему.» Размеры файлов и данные об использовании учетной записи можно узнать через SSH. ми поддержки первого уровня, способными разве что читать по бумажке. Каждый, кому хоть раз приходилось тратить время на теле-фонные разговоры с технической поддерж-кой, без сомнения, ощутит признательность. Документация на сайте тоже весьма обшир-ная, хотя и нацелена на технически грамотных людей. Помимо технической части, Rsync.net пред-лагает различные денежные премии за улуч-шение кодов сообществом – в частности, кода Duplicity, выпущенной под GPL. Также приятно видеть, что имеются скидки на пользование этим сервисом для разработчиков открытых приложений. В целом, качество Rsync.net произвело на нас отличное впечатление: это гибкая систе-ма, которой можно пользоваться из целиком открытой среды. Нельзя сказать, что Rsync.net отличается простотой: сервис – не для нович-ков, но это простительно, поскольку не они основные потребители Rsync.net. Rsync – просто инструмент для регулярного резервного копирования серверов. Июль 2007 Linux Format 23 Онлайн-резервирование Сравнение Обратная Пользуетесь ли вы онлайновыми службами резервирования? Нам будет интересно узнать, какого типа онлайновую систему вы используете, и почему. Поделитесь вашим мнением и опытом на letters@linuxformat.ru. Службы онлайн-резервирования Rsync.net 8/10 Вердиктфактор, который следует принять во внимание при выборе сервиса онлайн-резервирования – объем передаваемых данных. Rsync.net явно указывает, что объем прак-тически не ограничен, а два других сервиса, XDrive и FlipDrive, придерживаются политики «честного использования». По правде сказать, нас обеспокоила та часть пользовательского соглашения XDrive и FlipDrive, которая, не оговаривая точных зна-чений лимита, грозит прекращением обслужи-вания за использование «значительно боль-ших объемов, чем остальные потребители сервиса». Две службы понравились нам значитель-но больше остальных. Первой стал Rsync.net, отличающийся серьезным подходом, что вно-сит приятное разнообразие. Мы считаем, что это отличное решение в финансовом плане – хранение 1 ТБ стоит $640 в месяц при неогра-ниченных передачах данных – хотя он потерял очки из-за сложности в использовании. Также приятно видеть систему загрузки, основанную на web, и кое-какую документацию, ориенти-рованную на менее опытных пользователей. Второй оказался FilesAnywhere. Им лег-ко пользоваться, и он хорошо документиро-ван – то самое, что нужно менее опытному пользователю. Мы также обнаружили, что FilesAnywhere предлагает отличные возмож-Мы рассмотрели несколько серви-сов резервирования, которые четко направлены на две разных катего-рии: тем, кто просто хочет изредка сбрасывать куда-нибудь несколько файлов, возможно, для совместного использования с другими, и тем, кому нужно регулярно резервировать большие объемы данных. Если вы входите в первую категорию, можете положиться на сервисы, предостав-ляемые XDrive, FlipDrive и FilesAnywhere. Пользователей, желающих сохранять боль-шие массивы данных на более регулярной основе, заинтересуют сервисы от IBackup, Rsync.net и IceBackup. Наряду с требуемым объемом дискового пространства для хранения, еще один важный Поддержка и сервис Rsync.net впечатляют с любой стороны. Можете выбрать, где хранить ваши данные: в США или в Европе. Сервис Доступное пространство Цена HTTP WebDav FTP rsync Проприетарный клиент Работа с Konqueror Работа с Firefox Совместное использование файлов Фото-галерея Скорость Стоимость передачи данных Files Anywhere 5ГБ-500ГБ 100 MБ $4/месяц, 50 ГБ $70/месяц Только Windows Плохо Хорошо Хорошо Не указано FlipDrive 25MБ-100ГБ 25 MБ $5/месяц, 100 ГБ $20/месяц Плохо Хорошо Отлично Политика честного исполь-зования IBackup 5ГБ-300ГБ 5 ГБ $10/месяц, 300 ГБ $300/месяц Хорошо Хорошо Отлично Не указано IceBackup 500MБ-100ГБ+ 500 MБ $14/месяц, 100 ГБ $280/месяц + $50 за установку Windows/Linux/OS X Не работает Не работает Хорошо Не указано Rsync.net 1ГБ-1TБ+ 1 ГБ $1.6 /месяц, 1000 ГБ $640/месяц Не работает Не работает Отлично Без ограничений XDrive 5ГБ-50ГБ 5 ГБ бесплатно, 50 ГБ $10/месяц Только Windows Плохо Приемлемо Хорошо Политика честного исполь-зования ности для совместного использования файлов с другими пользователями и хороший выбор протоколов. Цены повыше, чем у других сер-висов, но вполне приемлемы. Если цена для вас – главная забота, рекомендуем обратиться к куда более дешевому FlipDrive. Весьма неутешителен тот факт, что нема-ло онлайн-сервисов, протестированных нами, на практике оказались несовместимыми с Linux из-за использования проприетарных Windows-клиентов. Однако в будущем следу-ет присмотреться к сервису Mozy (www.mozy. com), чьи создатели обещают родной Linux-клиент уже в этом году. LXF FilesAnywhere хорошо выполняет операции с различными типами файлов, создавая миниатюры для рисунков. Таблица характеристик24 Linux Format Июль 2007 Помните ли вы, как устанавливали Linux в первый раз? Вы вставля-ли дискету и перезагружались, затем вводили таинственные команды для разбиения диска на разделы, установки ядра и приложений и настройки загруз-чика. После этого часами настраивали Х Window, модем, звуковую карту, прин-тер... Если вам везло и ваши устройства были дружелюбны к Linux, то, потратив все выходные, вы получали пригодную к использованию систему. К 2007 г. многое изменилось. Ведь каждый дистрибутив Linux теперь предла-гает простой установщик в стиле «щелкай и выбирай», с практически идеальным определением устройств и рабочим сто-лом с тысячами приложений. Обретенное удобство привлекло много новых пользо-вателей, ранее сторонившихся не в меру технической системы. Что же дальше? Успех небольшого чис-ла малых дистрибутивов (вроде Linux Mint, Sabayon Linux и PCLinuxOS) говорит о том, что новичкам нужны три вещи: преднастро-енные современные видеокарты и драйве-ра беспроводных сетей, модули браузеров, позволяющие без проблем воспроизво-дить популярные сетевые медиа-форматы, и поддержка несвободных аудио-и видео-форматов, вроде MP3. Держимся за принцип? Из основных дистрибутивов Linux, только Ubuntu и Mandriva расценивают это как важные вещи. Остальные продолжают (в той или иной мере) придерживаться «пра-вильного» подхода, не поступаясь принци-пами свободного ПО. Хотя это и заслужи-вает уважения, но в битве за рынок – по крайней мере для домашнего пользовате-ля – эти дистрибутивы теряют шансы пере-манить в Linux побольше людей. ladislav.bodnar@futurenet.co.uk Когда Red Hat прекратила выпуск сво-бодно доступного Red Hat Linux, раз-ветвив его на Fedora Core и Red Hat Enterprise Linux, многие были разгневаны. «Нам не нужна поддержка!» – восклицали одни, обсуждая дороговизну корпоративного решения. «Fedora недостаточна хороша!» – жаловались другие на новый непротестиро-ванный дистрибутив с малым временем жиз-ни. В 2003 г., когда Red Hat была самым попу-лярным Linux-дистрибутивом в мире, многие были не готовы к такому шагу компании из Северной Каролины. К счастью, причиной недовольства была ОС с открытым кодом, а не лицензируе-мый, патентованный проприетарный про-дукт. Первым, кто извлек из этого выгоду, был Джон Моррис [John Morris], систем-ный администратор публичной библиотеки в Дериддере, США. Библиотека не могла запла-тить за лицензию за корпоративное решение Red Hat с поддержкой для каждого рабочего места, поэтому Моррис пересобрал исходные тексты, свободно доступ-ные на сервере Red Hat, и выпустил свой продукт под именем White Box Enterprise Linux. За ним последовали схожие проекты. Работа была не очень сложной; она включала удаление всех упоми-наний о товарных знаках Red Hat, компиляцию исход-ного кода в двоичные пакеты и размещение результа-тов на загрузочном носителе для простой установки. Приобретая известность, эти клоны RHEL различались по уровню коммерциализации и изменениям, но имели одну общую черту: они предлагали минимум пять лет обновлений безопасности и исправлений, как и «насто-ящий» Red Hat Enterprise Linux. Сглаживание углов Эти проекты были спорными. Хотя перекомпиляция исходного кода Red Hat не была противозаконной, некоторым было трудно принять факт, что любой вла-делец компилятора мог легко создать ОС, в разработку которой были вложены тысячи человеко-часов Red Hat. Проекты-клоны отвечали, что они просто предоставля-ют сервис для малого бизнеса, которому не по карману Red Hat Enterprise Linux. Сама Red Hat не жаловалась, утверждая, что ее настоящая ценность – техническая поддержка, а не сам продукт, но юристы компании заставили часть этих проектов удалить любые ссылки на Red Hat с официальных web-сайтов. С годами некоторые из родившихся проектов вос-пользовались доступностью исходного кода для про-дажи своих клонов Red Hat с недорогой поддержкой. Позднее, Oracle, гигант баз данных, сделала большую заявку на этом рынке, объявив о доступности «улучшен-ного» клона RHEL с программой поддержки под назва-нием Oracle Unbreakable Linux. Однако наиболее популярным среди клонов RHEL остается проект CentOS. Это полностью свободный дис-трибутив сообщества с довольно быстрыми обновле-ниями безопасности для все трех его поддерживаемых версий. В настоящее время CentOS также предлагается некоторыми лидерами web-хостинга как альтернатива продуктам Red Hat уровня предприятия, и он также был одним из первых проектов, успешно пересобравших последний релиз RHEL 5 в CentOS 5.0. Не будучи прием-лемым для компаний с сотнями сложных компьютерных систем, CentOS и подобные клоны могут помочь малому бизнесу, нуждающемуся в стабильной ОС с долгосроч-ными обновлениями безопасности. www.centos.org Как и его знаменитый предок, CentOS предоставляет несколько собственных инструментов администрирования сервера. Ежемесячная сводка новостей дистрибутивов Linux Distrowatch CentOS 5.0 Лидер среди ОС, перекомпилированных из переком-пиляций Red Hat Enterprise Linux. Топ-клон ЛАДИСЛАВ БОДНАР основатель, начальник, редактор и сотрудник DistroWatch.com. Дружелюбие LinuxИюль 2007 Linux Format 25 Distrowatch К ло ны RHEL Освежающе классный Linux Mint – один из сюрпри-зов 2007 года. Проект затевался просто как web-сайт для нович-ков Linux, но его основатель, Клеман Лефевр [Clement Lefebvre], скоро определил общую жалобу тех, кто пер-вый раз попробовал Linux: отсутствие поддержки популярных медиаформа-тов в большинстве дистрибутивов. В результате он задался целью перера-ботки Ubuntu в дистрибутив, который включал бы все стандартные медиа-кодеки. Позднее он добавил дополни-тельный глянец, типа собственных тем, поддержки стандартных беспроводных сетевых карт и полезных модулей рас-ширения для браузеров. Linux Mint моментально стал хитом. Последняя версия, ‘Bianca’, осно-вана на Ubuntu 6.10. Подобно Ubuntu, она поставляется в виде LiveCD с воз-можностью установки на жесткий диск и предпочитает Gnome, но на этом сходство заканчивается. Собственный набор приложений содержит несколько занятных элементов, вроде медиа-про-игрывателя Amarok (KDE-приложение), тогда как другие приложения, типа OpenOffice.org, представлены более свежими, чем в Ubuntu, версиями. Но более всего притягивает новых пользователей в Linux Mint поддержка MP3-музыки, зашифрованных DVD и Fedora без Core Fedora 7 В этом тяжеловесном дистрибутиве больше приложений и LiveCD с возможностью установки. В соответствии со старой систе-мой нумерации версий Red Hat, эта версия ее свободного дис-трибутива должна была быть версией «точка-ноль». В отличие от своего пред-шественника, стабилизационного рели-за, предполагавшего формирование прочной основы для Red Hat Enterprise Linux 5, Fedora 7 неприкрыто экспери-ментальна. Просматривая информацию о выпуске, более чем ясно видишь, что как только RHEL 5 вышел в свет, команда разработчиков Fedora получи-ла больше свободы для воплощения эксцентричных идей и эксперименталь-ных функций в новом продукте. Даже беглый взгляд на сервер загрузок Fedora говорит о масштабе изменений, представленных в Fedora 7. Старые каталоги ‘core’ и ‘extras’ сли-ты в огромный репозиторий из более чем 7000 программных пакетов. Он содержит последнее ядро 2.6.20, пос-ледний релиз X.org 7.2, три современ-ных графических окружения (Gnome 2.18, KDE 3.5.6 и Xfce 4.4), стреми-тельно набирающие популярность тех-нологии трехмерного рабочего стола Beryl и Compiz, последний OpenOffice. org 2.2, виртуализацию Xen и стан-дартный набор настольных, сервер-ных, мультимедийных приложений и средств разработки. Другая важная функция – офици-альный LiveCD, способный также слу-жить и установочным диском. LiveCD поставляется в Gnome-и KDE-вариан-тах, и содержит установщик Anaconda. Пользователям со скоростным интер-нет-соединением несомненно понра-вится эта опция; вместо загрузки боль-ших образов DVD, они могут просто вставить LiveCD и установить дополни-тельные пакеты из сети. Fedora 7 содержит несколько более тонких улучшений, вроде ускорен-ных загрузки и установки пакетов, но больше всего, несомненно, запомнят-ся великое объединение программных пакетов и удаление из имени пристав-ки «Core». www.fedoraproject.org другого популярного медиа-контента «из коробки». Браузер Firefox также содержит длинный список дополне-ний, таких как Flash, Java, QuickTime, RealPlayer и Windows Media Player. Утилита под названием MintConfig поможет с установкой драйверов бес-проводной сети, монтированием раз-делов или настройкой управления питанием. MintDesktop проведет миг-рантов с Windows через другие голо-воломные задачи. Linux Mint [mint – «мята», англ. ] – освежающее явление на сцене дистри-бутивов. Если вы новичок в Linux или у вас есть друзья или родственники, которые не очень-то ладят с компью-терами, то Linux Mint может быть пре-красной OC для старта. www.linuxmint.com У Linux Mint милый рабочий стол, с улучшенным меню «Старт». Впечатляющий дизайн предназначен для привлечения большего числа настольных пользователей. Хит-парад дистрибутивов Кроме CentOS, варианты Red Hat Enterprise Linux предлагают несколько других проектов. Большинство из этих дистрибутивов доступны для свободной загрузки, хотя некоторые из начи-нающих, ради выгодного бизнеса, предлагают установочные диски и обновления безопасности за небольшую ежемесячную плату. Ниже в таб-лице приведен полный список дистрибутивов, специализирующихся в пересборке RHEL. На момент написания, только CentOS и StartCom выпустили версии, основанные на RHEL 5, но остальные, похоже, уже готовы к этому. 1 Ubuntu 2,912 2 SUSE 2,065 3 PCLinuxOS 1,522 4 Fedora 1,497 5 SimplyMepis 1,232 6 Debian GNU/Linux 1,107 7 Mandriva 995 8 Sabayon Linux 906 9 Damn Small Linux 801 10 Mint 752 DistroWatch.com определяет популярность дистрибутивов, основываясь на числе визитов на страницу каждого дистрибутива. Хотя это не дает представление о действительном числе установок, но показывает, какие дистрибутивы более востребованы за данный промежуток времени. 10 самых посещаемых страниц на DistroWatch.com с 4 апреля по 3 мая 2007 г. (среднее число визитов в день) Дистрибутив Linux Mint 2.2 Кодовое имя Bianca, мультимедиа-вари-ант Ubuntu, который «просто работает». Число визитов CentOS Чистая пересборка RHEL без значительных улучшений; проект свободного сообщества. StartCom Enterprise Linux Предоставляет чистую пересборку и мультимедийное издание; бесплатен. Scientific Linux Пересборка RHEL, дополненная научными и другими приложениями. Lineox Полукоммерческий проект, основанный в Финляндии (www.lineox.net); чистая пересборка; очень быстрые обновления. Pie Box Enterprise Linux Коммерческий проект, базирующийся в Великобритании (www.piebox.org); предлагает медиа и обновления за небольшую месячную плату. Oracle Enterprise Linux Пересборка CentOS с различными улучшениями; предлагает дешевую поддержку (www.oracle.com/technologies/linux). Fermi Linux Пересобранный Scientific Linux, усиленный дополнительными функциями безопасности; бесплатный. White Box Enterprise Linux Чистая пересборка RHEL; первый созданный клон RHEL; бесплатный. X/OS Linux Голландский проект; чистая пересборка RHEL; бесплатный. Black Orion Enterprise Linux Коммерческий проект Linux (www.blackorion.com); чистая пересборка RHEL. Дистрибутив Описание26 Linux Format Июль 2007 Интервью Андреас Типальдос Photography: Jena Cumbo «Где-то будет лучше сервер Novell, где-то – Red Hat, а где-то – Windows. Каждый потребитель выбирает то, что подходит его бизнесу.» О СМЕШАННЫХ СЕТЯХИюль 2007 Linux Format 27 Андреас Типальдос Интервью Нечистые мысли Вы, вероятно, знаете Xandros как фирму, которая в 2001 г. купила Corel Linux, основанный на Debian. Фактически, ее инженеры по-прежнему создают настольный дистрибутив, собирающий немало похвал за свое исключительное друже-любие. Сама же Xandros критикуется за невнимание к сооб-ществу и закрытость кода некоторых программ. Но недавно глава компании Xandros, Андреас Типальдос, привел ее в корпоративные воды, начав производство серверных и бизнес-дистрибутивов, а так-же инструментов для администраторов, работавших Windows. Типальдос, ветеран технологии и инвестор, основавший Ximian и CodeWeavers, не оправдывается за то, что ориентируется на пользователя и концентрирует внимание на интуитивном гра-фическом интерфейсе, «к великому огорчению аcов командной строки», как говорит он. Возможно, это не соответствует вашему представлению о чистоте свободного ПО, но Типальдос отстаивает ту точку зрения, что подобный прагматичный подход – луч-ший способ перехода на Linux. Ник Вейч встретился с ним, чтобы узнать больше. Linux Format: У вас есть какие-либо выводы по поводу сделки между Novell и Microsoft? Андреас Типальдос: Я думаю, частично они заключаются в том, что Microsoft не в восторге от Linux, это очевидно. С другой стороны, они касаются минимизации урона. Если вы – пользователь… LXF: Полагаю, им известно, что практически все их клиенты на рынке серверов пользуются тем или иным Linux. AT: Видите ли, я прошел весь путь проприетарных платформ, когда были Wang, DEC, Data General, IBM Series 1, а затем мы перешли на открытые системы – Unix и Linux – и даже на другие платформы в прочих областях, например, в базах дан-ных. И я считаю, что реальность такова: никто не сумеет заставить пользователя принять стандарт. У Goldman Sachs и других моих клиентов, в центрах обработки данных используется Red Hat, а для идентификации – Active Directory, и это факт. Мне говорят: «Знаете, они должны работать вместе: вам не удастся заставить нас ограничиться чем-то одним». Так что я думаю, частью [этого союза] является то, что Microsoft осознает или принимает тот факт, что Linux никуда не денется. LXF: Вот интересно: вопрос интеллектуальной собственности (ИС) висит над Linux. Наступит ли день, когда он исчезнет? AT: Я мыслю реалистично: по мере того, как время идет, и Linux понемногу превра-щается в стандарт, кто будет его отменять? То же случилось и с Windows: спустя Интервью Андреас Типальдос считает, что не все пред-приятия хотят или могут ограничиться чистым Linux. Если Linux – как и его фирма, Xandros – хочет преуспеть, сказал он Linux Format, при-дется признать, что наш мир – это мир сме-шанных платформ.28 Linux Format Июль 2007 Интервью Андреас Типальдос какое-то время она стала стандартом, несмотря на все эти проблемы с монополиз-мом и прочим. И никуда ее не деть, иначе рухнет мировая экономика. Чем дальше, тем более спорным становится этот вопрос. И есть еще один момент: предположим, что вы – Microsoft. Вы предъявите иск Goldman Sachs, чтобы они прекратили пользоваться Linux из-за проблемы с ИС? Вы бы выиграли битву, но проиграли войну. Я думаю, большая опасность исходит от SCO и иже с ними. LXF: Потому что им больше терять нечего? AT: Именно. Не представляю, чтобы Microsoft предъявила иск крупным клиентам, хотя они и пытаются выиграть PR-битву за ИС. Потому что, как вы сказали, им есть, что терять: в конце концов, потребитель обидится. Реальность такова, что это – гетерогенный мир, мир смешанных платформ, у потребителя свои заботы, и всякий, кто не принимает их в расчет, наносит вред самому себе. Война проприетарного и открытого, кото-рая длится уже тридцать-сорок лет, научила нас этому. Где сегодня DEC? Где сегодня Wang? Где Data General? Этого не произойдет. Где-то лучше использовать сервер Novell, где-то – сервер Red Hat, где-то, возможно, все еще подходит Sun, а где-то – Windows. Каждый потребитель выбирает то, что нужно его бизнесу. И вы не можете попро-сить их что-то порушить. LXF: По-вашему, Xandros отличается от Novell или Red Hat философией? AT: Я думаю, то ценное, что предлагаем мы, разработчики дистрибутивов, заключа-ется в нашем вкладе в сообщество – улучшении продукта, или участии в его разра-ботке – и в обеспечении добавленной стоимости [эх] поверх всех усилий сообще-ства, чтобы этот продукт, эта платформа быстро прижилась в реальном мире. Наша точка зрения заключается в признании двух простых истин: а) мир гете-рогенен, б) не стоит тратить время на то, чтобы соединять или интегрировать что-то – все должно быть в духе «Plug and Play». Вы не можете заявить: «Ну, ладно, берите Linux, но вам понадобятся пятеро инженеров, чтобы его установить, и еще трое, чтобы сообразить, что делать, если завтра система откажет». Если у вас есть администраторы, привыкшие к Windows, вам придется использовать их. Так что наша основная философия – это сосуществование, взаимодействие, интеграция и использование имеющихся умений и навыков. Возьмем рынок малого и среднего бизнеса (SMB). Это в первую очередь рынок Windows Server. Почему так? А потому, что большинство поставщиков решений имеет больший навык работы в Windows, чем в Linux. Они не могут позволить себе сертифицироваться у Red Hat или найти инженеров с сертификатом Red Hat, пре-жде чем продать сервер за $500. Они не могут прийти к своему клиенту и сказать: «Кстати, вам будет нужен навык работы в Linux или администраторы с опытом работы в Linux». Это сокращает долю Linux на данном рынке. Вы можете исполь-зовать Linux в центре обработки данных в Goldman Sachs или в Citigroup, или еще где-нибудь, но там зачастую он просто приходит на смену Unix – и поэтому уже есть необходимые навыки. На самом деле, если Xandros и нам подобные хотят способствовать развитию Linux, надо не просто улучшать открытый код, а в первую очередь – создать инстру-менты. Если у меня есть программисты, которые будут делать патчи к ядру, разве это более ценно, чем создание неких инструментов, [таких, чтобы] вдруг весь мир смог использовать Linux? LXF: Это зависит от того, что делают ваши патчи к ядру! AT: Я считаю, что мы должны заниматься и тем, и другим. Дело ведь не в том, что-бы просто брать открытый код, упаковывать и отдавать кому-то. LXF: Сколько у вас разработчиков? AT: По-моему, у нас почти 60 человек в США, несколько в Европе, и около 15 в Индии. LXF: И Xandros явно больше не является просто компанией по разработке настольных дистрибутивов? AT: Нет, нам удалось усовершенствовать то, чего мы добились в этой области и создать сервер-ный продукт для рынка SMB [Xandros Server], с которым может работать администратор Windows. Например, если у вас есть небольшая компания, и вам надо изменить один сервис на своем сервере – допус-тим, брандмауэр – вам (в отличие от инженера) незачем знать, что если вы внесе-те это изменение, то надо поправить что-то и в этом месте, и в том месте, и еще в десяти местах, чтобы все заработало. А если вы – инженер и сделали изменение в одном месте, вдруг вам звонит жена и говорит: «У нас ребенок заболел, приезжай домой»? Надо срочно встать и ехать, а пока вы вносили изменение здесь, все в целом вышло из строя. LXF: Вы считаете, что основной барьер, который мешает людям принять Linux – их страх, что у них нет нужных знаний и умений? AT: Конечно. Но я думаю, что для рабочих столов тот факт, что некоторые упро-щают использование своего продукта, делают его более «Plug and Play», означает, что пользователю не придется учиться чему-то новому – больше нет командной строки и т.п. Это также означает, что создатели приложений могут сказать: «Я могу выпустить свой продукт под Linux, потому что сейчас стали покупать больше машин с Linux», что само по себе в какой-то степени подталкивает производителей ПК к тому, чтобы поразмыслить над этим. Но на самом деле, это Уловка-22 [название романа Джозефа Хеллера, используемое для обозначения ситуации, не имеющей решения, – прим. пер.], проблема курицы и яйца. На предприятии, или в сфере SMB, я считаю, переходу будет способствовать создание инструментов, которые позволят снизить стоимость управления. Я не хочу запоминать пять вещей, без которых ничего не заработает. Нужно взять кусок там, кусок сям? Нет уж, упростите это для меня. Предоставьте мне это в интуитив-но понятном виде, простом и ориентированном на бизнес. Я не желаю знать, что там внутри. LXF: Вам просто нужна маленькая симпатичная панель управления, чтобы вы мог-ли видеть, например, Email – да, мне это нужно; Sharing – да, частично нам это пона-добится; и кнопку «Все Исправить», на случай неполадок. AT: Верно. Вы хотите сказать: «Запихайте все в черный ящик и позвольте мне заняться управлением в целом, невзирая на то, на каком сервере это находится». Это и есть реальный мир. Вот этого вы и хотите, будучи пользователем, в противо-положность мне, который говорит вам, что для управления разными серверами надо помнить об определенных инструментах. Вот в чем заключается наша идея: есть одна-единственная панелька. Этот «черный ящик» превращается в движок, и затем может работать на Novell, Windows, Linux или даже в браузере, и соединяться с вашими инструментами управления [Типальдос подразумевает Xandros BridgeWays, кросс-платформенный набор инструментов системного администратора]. LXF: Могу ли я задать вам один вопрос об этом? Что произойдет, если на ваш сервер Red Hat установить исправление безопасности, которое изменит работу BridgeWays? Как тогда оно будет работать? «Мы не можем пойти и заняться тем же, чем занимаются все подряд.» О СТРАТЕГИИ XANDROSИюль 2007 Linux Format 29 Андреас Типальдос Интервью AT: Ну, как бы вы поступили на данный момент? Вы бы отправились на сайт Red Hat Network, взяли оттуда заплатку и распространили ее. И вам бы следовало пом-нить, что в другом отделе у вас стоит Novell, а в третьем – Xandros, а еще некоторые работают в Windows. Почему бы не обладать одной консолью – вроде капитанского мостика – и говорить с него: «Отправляйтесь на Red Hat, возьмите патч и отправь-те его на серверы Red Hat; затем идите на Novell, получите патч и отправьте его на серверы Novell; и то же самое для Windows»? Иными словами – заставьте работать ПО, не занимайтесь этим вручную. LXF: Да, я понимаю. AT: Мы полагаем, что наш вклад в развитие Linux таков: люди хотят, чтобы мы облегчили их жизнь. Они хотят, чтобы у них был выбор, но только не ценой ослож-нений. Если им сказать: «Вот, у вас есть выбор, но теперь вам придется освоить еще одно руководство», они вам ответят: «Знаете что? Я лучше останусь при сво-ем. Лучше я обновлю мой Windows PC до Vista вместо того, чтобы учиться чему-то новому». LXF: По вашему мнению, в Linux на данный момент слишком большой выбор из-за большого количества дистрибутивов? Не стал бы мир проще, если бы имелись только SUSE, Red Hat... AT: Думаю, эволюция нас научила тому, что в некий момент происходит уничтоже-ние и консолидация. Сейчас IBM и HP и другие проталкивают исключительно Red Hat и Novell. Очень трудно становиться третьим выбором. LXF: Однако же HP сейчас поддерживает еще и Debian. AT: Правильно. Я думаю, что, если у вас на самом деле появится то, что я описал раньше [философия laissez-faire Типальдоса («пусть делают как знают»), – прим. пер.], вы сможете позволить себе такой выбор. Круг сужается потому, что никто не может позволить себе слишком широкий выбор. Сколько раз вы приходили в мага-зин и говорили: «Жаль, что у вас не 2 продукта, а 22? Надо узнавать обо всех фун-кциях и свойствах, сравнивать… просто скажите мне, что делать». Так что я думаю, выбор будет ограничен, если на самом деле ценой, которую вам придется заплатить за этот выбор, будет сложность. Наш подход, как мы полагаем, заключается в поддержке большего выбора. Но, в конце концов, для многих компаний станет трудно выжить, если они не смогут поддерживать солидных исследований и разработок. Я хочу сказать, что никто не сравнится своим богатством с Red Hat или Novell. У большинства дистрибутивов нет солидных ресурсов. В нашем случае, на исследования и разработку ушло $60 млн. Но многие ли могут себе позволить потратить 60 млн.? Чтобы и дальше наращи-вать свою ценность, требуется много денег, и вы не можете позволить себе быть, как все. Я думаю, это все приведет ко все большей консолидации и уменьшению выбора. По-моему, это также приведет ко все большей концентрации на повышении качества и дополнительных возможностях. LXF: Что вы думаете об Ubuntu сейчас, когда у них появилась LTS-версия с долго-срочной поддержкой, которая в большей степени ориентирована на рынок серве-ров, чем рабочих столов? AT: Ясно, что Ubuntu стал феноменом, и это хорошо для нашей индустрии. Но в конечном итоге все опять сводится к основному вопросу: если вы – глава отдела продаж в крупном инвестиционном банке в Лондоне или Нью-Йорке, станете ли вы рисковать своей работой, или своими клиентами, и строить бизнес только на Open Source потому, что вашим технарям больше нравится Ubuntu, чем OpenSUSE или Red Hat? Я думаю, что в конце концов все хотят стабильности, им нужна добавлен-ная ценность на OSS, поэтому... LXF: Однако же, в какой-то степени эта проблема изначально присутствовала и у SUSE и у Red Hat. Если бы вы работали в крупном банке, стали бы вы рисковать своей работой, выбирая какой-то там Linux со всякой ерундой, в то время, как все вокруг… AT: Тут есть разница. Red Hat были первыми на рынке, у них был миллиард долла-ров в банке, и они могли использовать эти свои ресурсы. За всем этим стояла фир-ма. Если вы возглавляли некую инфраструктуру в Deutsche Bank, вы могли позво-нить Мэтту Зулику [Matt Szulik, глава Red Hat], и если ему требовалось прислать вам целую армию инженеров, он их присылал. А теперь наоборот, представьте, что некто сообщает вам, что скачал OpenSUSE, Xandros или Ubuntu, и теперь вся ваша важнейшая система торговли теперь работает на нём. Вы говорите: «Минуточку, а если ты завтра уйдешь, что тогда будет? У меня останутся те, кто работает в Windows – к кому мне обращаться?» LXF: Ubuntu определенно много сделал для рабочих столов. AT: Конечно. Debian по-прежнему остается самой успешной платформой, и, воз-можно, Ubuntu подталкивает Debian к тому, чтобы заявить: «Ладно, пусть будут более регулярные обновления, и т.п.» Но для меня… Если я скажу вам «Cisco», что вы подумаете? Cisco – это фирма, которая была создана поверх открытой систе-мы – TCP/IP. Но вы думаете о дополнительных функциях и качестве. Или возьмите Oracle. Это фирма, созданная благодаря документу о реляционных базах данных, опубликованному IBM 30 лет назад. Но ценность Oracle не в том, сколько изменений они внесли в фундаментальную концепцию реляционных БД. Вот почему, в конеч-ном итоге, наш подход заключается в том, чтобы содействовать переходу на Linux посредством дополнительных возможностей и качества, которые упрощают внед-рение. Мы не можем пойти и заняться тем же, что делают все подряд. В Red Hat делали это, в Novell делали это, Ubuntu делает это сейчас – «Вот вам Open Source, и мы даем вам договор на поддержку». И у вас есть Oracle. LXF: Да, мне очень интересно, как сыграет Unbreakable Linux от Oracle. Скажите мне, как вы думаете, где будет Xandros в это же время в следующем году? AT: Мы надеемся увидеть плоды своих воззрений: увеличить долю Linux в SMB-сфере и затем – улучшить интероперабельность в корпоративной среде. На данный момент мы работаем в Европе, и мы расширяемся: мы уже работаем в Латинской Америке. Мы хотим, чтобы на нас смотрели не просто как на фирму, делающую настольные решения, но как на фирму, которая [распространяет] свои достижения на сервера, на уровень управления, на уровень приложений. Точно также Microsoft начинала с рабочих столов, а превратилась в компанию серверов и приложений. Я хочу, чтобы о нас думали так: «Red Hat, Novell… Xandros». Это основная проблема позиционирования, проблема имиджа, но во-вторых, мы хотим, чтобы люди смогли увидеть, как организации работают с нашими продуктами. И я верю, что если так и будет, мы внесем свою лепту, выравнивая поле рынка таким образом, чтобы люди не боялись, что у них появятся сложности, если они перейдут на Linux. Так что мы несем Linux туда, где его раньше не было. Это как Starship Enterprise… LXF30 Linux Format Июль 2007 Что за штука… E E 0.9.1b на DVD Значит, вы не шутили, говоря об этом в про-шлом номере? Ничуть. В LXF93 мы рассматривали D, созданный на замену C и C++. Теперь мы говорим о E. Язык на замену D? А я-то думал, что D – это новый язык! Вы правы, D и в самом деле новый язык – но E совсем не предназначен для его замены. D способен заменить C потому, что похож на него лингвистически и тоже компилируется в высокоэффективный машинный код. Язык E, напротив, интерпретируемый (во всяком слу-чае, пока), вдобавок он совершенно не похож на C по стилю программирования – фактически, это странная смесь Java и Python. Предупреждая ваши вопросы: нет, тот E, о котором мы с вами говорим, не имеет ничего общего с языком программирования E, некогда быв-шим основным на Amiga. На другой напрашивающий-ся вопрос: да, нам бы тоже хотелось, чтобы создатели языков программирования были чуть более изобрета-тельны в выборе названий! Хорошо, хорошо. Но чем же E отличается от остальных языков программирования? E предназначен для безопасного распределенного про-граммирования, и это его козырь: единственная про-грамма может работать на многих машинах. А разве этого не было раньше? Пока мы тут разговариваем, мой SETI@Home занят поиском внеземных цивилизаций… На языках Java и C++ распределенное программиро-вание реализовывалось индивидуально каждым про-граммистом. В E распределенное программирование – это стандарт, потому что объекты… Опять эти объекты! Объясните мне, наконец, почему все современные языки программиро-вания – объектно-ориентированные? Хорошо, давайте остановимся на этом. Да, E – объект-вы это делаете, я тут же отдаю вам LXF90, и все довольны. Теперь вооб-разите следующий код: someobject->doStuff(). В большинстве языков программирования (включая E) программа не будет продолжена до тех пор, пока someobject не выполнит свой метод doStuff(). В E это называется прямым вызовом функции. Но в E есть и другой способ, под названием «отложенный вызов», то есть вызов, не блокирующий работу программы. Ого, а это еще что? Давайте вернемся немного назад. Так вот, someobject->doStuff() исполняется немедлен-но, вынуждая остальную часть программы ждать. Отложенные вызовы, которые выглядят примерно так: someobject<-doStuff(), не требуют мгновенного исполнения. Фактически, вы говорите: «someobject, когда будет возможность, пожалуйста, выполните doStuff()». В результате программа, сделавшая этот вызов, беспрепятственно продолжает свою работу. Ага! Проблема налицо: что произойдет, когда doStuff() вернет нужное значение? Извиняюсь, создатели E тоже об этом подумали! Если вы попытаетесь воспользоваться результатом, воз-вращенным doStuff(), во время выполнения непря-мого запроса, то фактически получите обещание, что нужное значение будет (при необходимости) вычис-лено. Обещание не будет выполнено до тех пор, пока doStuff() не будет реально вызвана и не возвратит нуж-ное значение, а до тех пор у вас будет лишь его «заго-товка». Но зато обещание гарантирует, что вы получите нужное значение в будущем, а пока работа программы будет продолжена так, словно оно уже известно. Как-то в голове не укладывается. Бесспорно, уяснить это непросто. Вспомните пример с журналом – мы просим LXF91, но, посколь-ку некий человек не хочет отдавать его сразу, вместо журнала мы получаем обещание. Для нас оно в пер-спективе равносильно LXF91, и мы смело отдаем это-му человеку свой LXF90. Как только это произойдет, обещанное воплотится в реальный LXF91. Ладно, поверю вам на слово, что все это рабо-тает. Расскажите еще что-нибудь про E – только попроще, пожалуйста! но-ориентированный язык. Фактически, он более объ-ектно-ориентированный, чем другие языки програм-мирования, потому что все в E подчинено OOП. Сейчас завою… Да ладно, это я так, про себя. Итак, E предна-значен для OOП, и не напрасно: именно объекты при-дают ему вычислительную мощь. Например, объект 1 работает на компьютере 1, а объект 2 на компьютере 2. Если объект 1 вызывает метод объекта 2, то E автома-тически формирует запрос, отправляет сообщение по сети и возвращает результат обратно. E-программист даже не обязан знать, где находятся объекты – на его машине или на чужих: E берет все это на себя. [фырканье] Хм, еще того не легче: а как же безопасность? Создатели E позаботились об этом заранее – все сетевые сообщения шифруются и недоступны посторонним. Ладно, объекты, может, и не столь ужасны. Зато я уверен, что обмен сетевыми сообщениями абсолютно всегда приводит к взаимным блокировкам и зависанию. На самом деле это не так – у E нет таких проблем. Ой ли? А вы уверены, что мы говорим об одном и том же? Конечно, уверен: взаимная блокировка возникает, скажем, тогда, когда у меня есть LXF90, а мне нужен LXF91; у вас же, наоборот, есть LXF91, а вам нужен LXF90. Никто из нас не хочет отдавать свой номер, не получив чужого – вот вам и тупик. Ну что, на одном языке мы с вами говорим? Вроде да. И как E это удается? Магия! Точнее, колдовство под названием «обе-щания», позволяющее мне пообещать отдать вам свой LXF90, если вы отдадите мне LXF91. Как только Это действительно язык программирования нового образца, или просто продол-жение алфавитной линии C и D? Пол Хадсон все объяснит… Что за E? штука… «E имеет все средства управления, обычные для других языков, но некоторые операторы доработаны для удобства восприятия.»E Что за штука… Июль 2007 Linux Format 31 Обе версии свободны? Конечно – под Mozilla Public License. Круто. Пару слов напоследок? Если вы хотите узнать об этой теме подробнее, можете посетить такие сайты: www.erights.org – офи-циальная страница, www.skyhunter.com/marcs/ewalnut. html – бесплатный онлайн-учебник по E, и www.combex. com/tech/edesk.htm – домашняя страница CapDesk, рабочей среды, полностью написанной на E, чтобы доказать высокий уровень его безопасности. Спасибо. Итак, через месяц говорим об F? Поживем – увидим… LXF PHP. Например, если необходимо, чтобы функция обрабатывала только числа, можно указать это прямо: все входящие данные будут конвертироваться в этот формат. Если конверсия невыполнима, E выбрасывает исключение. Если кто-нибудь – только не я – захочет попро-бовать E, как это можно сделать? Лучшая версия E построена на основе Java, что имеет два основных достоинства. Во-первых, она может рабо-тать везде, где есть Java, то есть на Linux, Windows, OS X, мобильных телефонах – да где угодно. Во-вторых, вы получаете функциональность Java простым импор-том библиотек. Это означает, что в E можно пользо-ваться Swing, если захочется – до тех пор, пока вы не поймете, что используемые вами классы Java ничего не получают от распределенной мощи E. Но я ненавижу Java! Не беспокойтесь: вам и вашим друзьям – Java-ненавистникам будет приятно узнать, что существует версия E на Common Lisp, которая действует примерно так же – минус поддержка Java, конечно! Как вам вот это: в нем остались все средства управ-ления, к которым вы привыкли в других языках про-граммирования, например if, try, catch, finally, while и for. Но некоторые операторы для удобства восприятия несколько доработаны. Например, чтобы избежать путаницы между = и = =, E перенял подход Pascal и использует := для присваивания, а = = для сравне-ния (сам по себе знак = больше не применяется). E, в основном, обходится без переменных с типом (string, integer и т.п.), так как подразумевается автоматичес-кое преобразование типов. Например, если добавить к строке число, то E конвертирует число в отдельную строку, а затем объединит обе строки. А разве языки без типов не усложняют программирование? Это распространенная точка зрения, и, во избежание проблем, E снабжает программиста «предохраните-лями» типов, напоминающими признаки классов в 32 Linux Format Июль 2007 Супертест. Дистрибутивы FREE! FREE! Linux предлагает целый калашный ряд дистрибутивов, подхо-дящих к любому ПК – этот выбор есть часть прелести Open Source. Однако, при таком богатстве (по оценкам – не менее 400 видов) как избежать неправильного выбора? Фактически дистрибутивы Linux сильно отличаются своим подхо-дом к безопасности, размером, производительностью, совместимос-тью с аппаратным обеспечением и десятком других ключевых фак-торов, которые волнуют людей. Тем не менее люди часто выбирают дистрибутив из-за более яркой темы рабочего стола или из-за номера, большего на 0.1 – то есть по совершенно неуместной причи-не. Нет, мы, конечно, не хотим сказать, что уродливый рабочий стол лучше приятного, но что если у перво-го чаще выпускаются заплатки по безопасности, он вдвое быстрее загружается, правильно определяет ваше оборудование или имеет гораздо большее сооб-щество? Существует множество вещей, не учитываемых в номере версии, но они-то и определяют разницу между хорошим дистрибутивом и великолепным дистрибутивом. На следующих восьми страницах мы сравним восемь лучших дис-трибутивов и проверим, как они соотносятся по безопасности, про-изводительности, совместимости, доступности приложений и сооб-ществу, чтобы вы смогли найти идеальный дистрибутив для ваших целей. Конечно, у каждого свои представления о «лучшем дистрибу-тиве», так что мы выбрали восемь дистрибутивов, самых популярных на момент написания статьи: Debian, Fedora, Mandriva, PCLinuxOS, Sabayon, Slackware, OpenSUSE и Ubuntu. Некоторые остались за бор-том: SimplyMepis и Linspire были отброшены из-за близости с Ubuntu; Gentoo – из-за того, что его ответвление, Sabayon, похоже, превзошел его в популярности; а дистрибутивы для предприятий отсеяны, потому что это все-таки иная категория. Чтобы помочь усмотреть различия между дистрибутивами, мы собрали 16 тестов, охватывающих широкий предметный диапазон. Например, сколько портов открыто по умолчанию? Как быстро запус-кается OpenOffice.org? Велико ли сообщество у дистрибутива? Все это размещено под следующими заголовками: безопасность, совмес-тимость с оборудованием, производительность, сообщество и выбор пакетов, и вы сможете увидеть, как каждый дистрибутив соотносится с остальными и, надеемся, найти то, что вам нужно. Заметим: при любом сравнении дистрибутивов, какому-то придется быть последним. Если таковым оказался ваш любимый дистрибутив (мы не будем делать поб-лажек), утешьтесь тем, что даже последний из восьми все-таки попал в лучшие 2% дистрибутивов Linux! Если заглянуть за номера версий, то каковы реальные различия между лучшими на сегодняшний день дистрибутивами? Пол Хадсон, Грэм Моррисон и Ник Вейч найдут для вас идеальный Linux... КОНКУРС дистрибутивов При любом анализе дистрибутива следует обозначить, что именно исследовалось. Мы тестировали: Debian 4.0, Fedora Core 6, Mandriva 2007, PCLinuxOS 2007 TR4, Sabayon 3.3, Slackware 11, SUSE 10.2 и Ubuntu 7.04. Все они устанавливались на одно и то же оборудование, с использованием опций по умолчанию. Контроль версийИюль 2007 Linux Format 33 Дистрибутивы. Супертест «Команда Fedora распознала проблему, упущенную всеми остальными.» Безопасность Правда ли, что Linux неуязвим? Неправда. Некоторые дистрибутивы даже не имеют брандмауэра... Прошли те времена, когда Linux был операционной системой типа «поставил-и-забыл», которая – если вы следили за обновлениями – была в основном защищена от негодяев. Вероятно, ключ к защищен-ности Linux в том, что его традиционно устанавливали пользователи более высокого полета. Менее опытных пользователей отпугивали странные установщики, ад RPM, несовместимость с Windows и нехват-ка простых в использовании утилит настройки. То есть под Linux в большинстве своем работали люди с техническим опытом, а не те, кто дважды щелкает по файлу ILOVEYOU.vbs. Но ситуация меняется: хотя мы и не собираемся повторять заез-женную фразу «этот год будет годом Linux для настольных систем!», несомненно, сейчас пользователи настольных компьютеров переходят на Linux чаще, чем когда-либо. В результате системы безопасности Linux проверяются по полной программе. Хорошо ли защищен Вася Новичков от опасностей со стороны Интернета? Чтобы определить это, мы учли следующее: Как быстро выходят заплатки по безопасности для данного дистрибутива? Сколько интернет-портов открыто в стандартной конфигурации? Позволяет ли дистрибутив легко настроить брандмауэр, если тако-вой имеется? Какое дополнительное ПО по безопасности входит в дистрибутив? Можно подумать, что результаты будут близки друг к другу, пос-кольку все дистрибутивы основаны на одних и тех же базовых при-ложениях. Но это не так: мы проверили одну конкретную уязвимость (CVE-2006-1861) и обнаружили, что разница в выходе заплаток соста-вила шокирующие 55 дней. Самый быстрый, Ubuntu, имел доступную заплатку через 13 дней, а самому медленному, Slackware, потребова-лось 68. Хуже того, похоже, что PCLinuxOS даже не выпускает бюл-летени по безопасности, то есть вы никогда не узнаете, где слабые места вашей системы. Fedora – единственный поставщик, у которого есть оправдание медленной реакции, поскольку при исправлении этой проблемы команда распознала другую, которую упустили все осталь-ные, и другим поставщикам позже пришлось выпускать заплатку для CVE-2006-3467. Что касается брандмауэров, мы считаем недопустимым, что мно-гие дистрибутивы поставляются без активизированного брандмауэра. Slackware – наихуд-ший из них, так как прославился не только отсутствием брандмау-эра, но и тем, что име-ет целых пять портов, открытых всему миру. Ubuntu также страдает отсутствием брандмауэра, но у него хотя бы нет открытых портов, то есть риск атаки минимизирован. На другом краю шкалы расположились Fedora, SUSE и Mandriva, при этом дистрибути-вы заперты так крепко, что машина при сканировании кажется завис-шей. Fedora возглавляет список, поскольку при выключении брандмау-эра сервисов остается всего ничего, тогда как SUSE и Mandriva оставля-ют X11 открытым. Заметим: мы не рекомендуем отключать брандмауэр для ваших личных целей! Безопасность: итоги 1 SUSE 2 Mandriva 3 Fedora 4 Ubuntu 5 Debian 6 PCLinuxOS 7 Sabayon 8 Slackware Число дней между сообщением об ошибке (19 мая 2006 г.) и выпуском заплатки поставщиком. Скорость исправления ошибок UbuntuDebian MandrivaSUSE SabayonFedora SlackwarePCLinuxOS Число портов, открытых в стандартной установке дистрибутива. Результат сканирования портов FedoraSUSE MandrivaUbuntuDebian PCLinuxOSSabayon Slackware Простота настройки 1 SUSE 2 Fedora 3 Mandriva 4 PCLinuxOS 5 Ubuntu 6 Debian 7 Sabayon 8 Slackware Дней Открытых портов 8 июня 10 июня 12 июня 27 июня 9 июля 18 июля 26 июля (данных нет) Показывает, легко ли настроить брандмауэр через графическое приложение.Mandriva, как всегда, щеголяет классными утилитами настройки оборудования. 34 Linux Format Июль 2007 Супертест. Дистрибутивы об к яет тр оборудования. т ро оборудования Mandriva, как всегда, щеголя классными утилитами наст б кят оборудования ndriva, егда ndriva, егда щ литами , щ ассными литами ссными ndr FREE! FREE! Совместимость с оборудованием Вопрос на миллион. Какой дистрибутив cработается с вашим оборудованием? Большинство дистрибутивов Linux лезут из кожи вон, чтобы поддержи-вать как можно больше устройств, и ситуация сейчас намного лучше, чем раньше. Но, к сожалению, все еще бывает и так, что единственный способ проверить работоспособность чего-нибудь – это его попробо-вать. И даже если вам удалось заставить ваше устройство работать в вашей системе, нет гарантии, что оно заработает у другого. Природа Linux такова, что все можно заставить работать почти на всем, а число возможных сочетаний оборудования практически бесконечно. По этой причине мы не могли взять и протестировать каждую мыс-лимую аппаратную комбинацию. Результаты были бы интересными, но они не сказали бы вам, заработает ли ваш новый USB-что-то-там на самом свежем дистрибутиве. Вместо этого мы сосредоточились на ядре Linux как на сердце каждой системы. Именно в ядре содержит-ся большая часть драйверов, требу-ющихся для работы оборудования. Подавляющая часть драйверов реа-лизуется как модули ядра, при этом каждый модуль обслуживает одно устройство. Подсчет числа модулей, входящих в дистрибутив – хороший способ оценить спектр поддержи-ваемого оборудования. Аналогично, глубина может оцениваться по вер-сии ядра. Чем новее ядро, тем более вероятно, что оно содержит обнов-ленные драйверы, исправленный код и улучшенную поддержку новых устройств. У каждого дистрибутива свой подход к включению драйверов. Например, Fedora всегда была осторожна в этом вопросе, ибо драй-веры способны нарушить стабильность. Если устройство работает под этим дистрибутивом, у вас будет меньше проблем, чем в Ubuntu, который шлет все предосторожности лесом и включает поддержку на 50% больше устройств (если сравнивать последние версии). Подход Ubuntu хорош для любителей новизны, но он утрачивает прелесть, если вам требуется, чтобы машина работала 12 месяцев подряд без перезагрузки. Однако модули ядра – еще не вся сказка. Многие дистрибутивы для предприятий имеют свою собственную базу данных по совмести-мости, чтобы помочь бизнесу принять обоснованные решения насчет оборудования, перед тем как вставлять установочные диски. Fedora, SUSE и Mandriva публикуют списки официально поддерживаемого оборудования, обязанного работать с данным дистрибутивом. Жаль, что Linux-сертификация оборудования не стала стандартом. Но теперь, когда можно купить компьютеры Dell с предустановленным Ubuntu, существует стандартная аппаратная платформа, на которую можно опереться, и совместимость все время растет. Что нам действительно нужно от производителей оборудования, так это чтобы они обратили внимание на Linux и открыли свою интеллектуальную собственность и аппаратные спецификации для разработчиков, которые желают писать драйверы. Это ведь не только поможет повысить продажи, но и значи-тельно упростит нам жизнь. Количество модулей ядра для устройств в стандартной поставке. Драйверы-модули Ubuntu PCLinuxOSSUSEDebian MandrivaSabayonFedora Slackware Количество официально поддерживаемых архитектур CPU (x86, Itanium и пр.) Поддержка платформ Ubuntu PCLinuxOSSUSEDebian MandrivaSabayonFedora Slackware Версия ядра 1 Ubuntu ...........................2.6.20.15 2 Sabayon........................2.6.20.3 3 Debian ...........................2.6.18.4 4 PCLinuxOS ...................2.6.18.4 5 SUSE ..............................2.6.18.2 6 Fedora ...........................2.6.18.1 7 Mandriva ......................2.6.17.13 8 Slackware ....................2.4.33.3 Оборудование: итоги 1 Ubuntu 2 Debian 3 SUSE 4 PCLinuxOS 5 Sabayon 6 Fedora 7 Mandriva 8 Slackware Текущий итог 1 SUSE ________ 2 Ubuntu ________ 2 3 Debian ________ 2 4 Mandriva ______ 2 5 Fedora ________ 2 6 PCLinuxOS ____ 7 Sabayon ______ 8 Slackware _____ Версия ядра Linux, включенного как стандартное. Число платформ Тысяч модулейИюль 2007 Linux Format 35 Дистрибутивы. Супертест Почему Red Hat 7.2 спокойно работала при 64 MБ памяти на Pentium первого поколения, а Fedora Core 6 еле ползет на всем, что хуже, чем 1.8-ГГц Pentium 4 с 256 MБ оперативки? Сравнение, правда, не совсем справедливое: хотя они запускают одни и те же основные програм-мы и одинаково хороши для тех же задач, FC6 и другие современ-ные дистрибутивы делают сильный упор на хороший внешний вид и применение последних технологий, экономящих время. Beagle – хоть и полезен – означает загрузку Mono для работы с .NET; GTK 2 – хоть и красив – подразумевает отображение виджетов с использованием Cairo для красивых сглаженных линий. Потом, конечно, есть еще и Compiz... Но каждый дистрибутив работает с этими компонентами по-своему. Некоторые, например, Fedora и SUSE, похоже, включают их все, а затем бросают все силы на борьбу с перерасходом ресурсов. Другие, такие как PCLinuxOS и Slackware, приняли более зкономный подход: началь-ная конфигурация делается легковесной, но позволяет вам добавлять другие функции самостоятельно. Для проверки производительности мы учли 4 фактора: как долго устанавливается каждый дистрибутив (вплоть до первого приглаше-ния входа в систему), сколько времени занимает загрузка (опять-таки, до появления экрана входа), насколько быстро выполняется холодная загрузка OpenOffice.org (то есть непосредственно после перезагрузки), и сколько свободной оперативной памяти имеется в системе сразу пос-ле перезагрузки (измерялось с помощью free -m). Мы обнаружили заметные различия в производительности. Три теста на скорость показали, что самые быстрые дистрибутивы работают почти в 2 раза быстрее, чем самые медленные, а самый жадный до памяти дис-трибутив съедает ее на 120 МБ больше, чем самый неприхотливый, даже при отсутствии запущенных пользовательских приложений. Все это показывает, что правильным выбором дистрибутива мож-но добиться многого, независимо от имеющегося оборудования. Наши тесты проводились на двухядерном Intel Core 2 Duo с тактовой частотой 2 ГГц и 1024 MБ ОЗУ, со свежими версиями каждого дистрибутива. В итоге обнаружено, что PCLinuxOS 2007 лидирует по общей произво-дительности: время установки менее семи минут весьма эффектно, особенно если учесть, что стандартные программы типа OOo включены в поставку. PCLinuxOS занял первое место и по количеству свободной оперативной памяти: ему удалось переплюнуть даже супер-умеренный Slackware, что было для нас большим сюрпризом. Будучи ближай-шей родней PCLinuxOS, Mandriva также хорошо показала себя, имея наименьшее время загрузки. На другом конце шкалы расположились Sabayon и Fedora, с одинако-во плохими результатами всех наших тестов. SUSE – почти на дне табли-цы – хотя бы быстрее загружает раз запущенные приложения, что изви-няет его за тягучую установку и полусонную загрузку. А вот по части пот-ребления оперативной памяти Fedora просто распоясалась: чтобы просто добраться до рабочего стола Gnome, потребовалось 202 MБ из 1 ГБ ОЗУ, и это объясняет, почему 512 MБ – трезвая рекомендация для Core 6. Время установки PCLinuxOSUbuntuDebian MandrivaSlackwareFedoraSUSE Sabayon Время загрузки MandrivaDebian PCLinuxOSSlackwareUbuntuFedoraSUSE Sabayon Производительность: итоги Текущий итог 1 Ubuntu _______ 1 2 SUSE ________ 1 3 Mandriva _____ 1 4 PCLinuxOS ____ 2 5 Debian _______ 2 6 Fedora _______ 1 7 Sabayon ______ 8 Slackware _____ Производительность Параметры компиляции, версии ядра, конфигурация жесткого диска и прочее – все это влияет на работу дистрибутива. 1 PCLinuxOS 2 Mandriva 3 Ubuntu 4 Slackware 5 Debian 6 SUSE 7 Fedora 8 Sabayon Минуты Секунды Запуск OOo SUSE MandrivaPCLinuxOSUbuntu SlackwareSabayonFedoraDebian Время, требуемое для уста-новки по умолчанию с исполь-зованием рекомен-дуемых опций. Время, про-ходящее от приглаше-ния Grub до графичес-кого экрана входа в систему. Время первого запуска OpenOffice. org («холодный старт»). Секунды Свободная память PCLinuxOSSlackwareUbuntu MandrivaDebianSUSE SabayonFedora МБ Сколько памяти, в МБ, остается свободной после запуска.36 Linux Format Июль 2007 Супертест. Дистрибутивы FREE! FREE! «Это не строгая наука, но она близка к правде.» Сообщество Одному всего не сделать – лучшие дистрибутивы имеют больше пользователей, больше поддержки и всякого такого. Большое значение в Linux придается понятию сообщества: коопера-ция и прочие прелести. Но в нашем тесте мы все это проигнориру-ем. Мы просто хотим узнать, что сообщество может сделать для вас. Процветание сообщества означает, что вашей ОС уделяется много вни-мания со стороны поставщиков и web-провайдеров; сообщество может служить источником советов и подмоги в беде и снабжать вас свежими интересностями из мира Open Source. Расчет силы сообщества, с любой степенью точности, – слож-ная задача, поскольку способ измерения отсутствует. Для наших целей мы рискнули выдумывать формулу, способную дать ответ: Сообщественность = Популярность * Поддержка * Активность. Примерно так. Теперь, зная формулу, остается лишь определить значения соответствующих величин. Чуете, в чем проблема? Но кое-что померить можно. Допустим, популярность: Distrowatch.com на своем сайте подсчитывает количество посещений домашних страниц про-ектов. Есть также статистика на сайте www.linuxformat.co.uk и данные от проекта LinuxCounter. Годится не вся статистика: например, Linux Counter (http://i18n.counter.li.org) не имеет данных о двух членах нашего списка. Так что мы привели все значения к диапазону от 0 до 100 и усреднили по чис-лу источников данных для тех дистрибу-тивов, у которых более одного источника. Фактически это означает, что часть чисел «надежнее» других, но также и то, что для большинства проектов ни один источник данных не является слишком определяющим. Самый популярный дистрибутив определен; а как тогда изме-рить поддержку? Она имеет две формы: взаимопомощь, которую мы измерили по анализу трафика на разных форумах, и официальная поддержка – время, затраченное на выпуск обновлений и прочего. Наконец, мы учли возможность платной поддержки. Существуют кон-сультанты, предлагающие поддержку практически любой версии Linux, но мы должны отдать должное дистрибутивам, которые обеспечива-ют свою собственную платную службу поддержки. Неудивительно, что дистрибутивы с «большим именем» с корпоративной поддержкой хорошо котируются в этой категории. Например, Mandriva имеет очень хорошо развитое «клубное» сообщество (требующее, однако, подпис-ки); у Fedora есть обширная Вики. По части активности, мы измерили такие вещи, как объем сопро-вождаемых пакетов (то есть contrib’ов или RPM’ов от третьих лиц), доступность пакетов для ключевых приложений и прочее. Результаты довольно интересны по нескольким причинам. Наш способ подсчета очков не дает преимущества более новым дистрибу-тивам (таким, как Ubuntu и PCLinuxOS), которые имеют больше теку-щих откликов, но которым недостает предыстории таких старых проек-тов, как Slackware и Debian. В общем, в этой категории он не является строго научным, но, вероятно, настолько близок к нему, насколько возможно. Сообщество: итоги 1 Ubuntu 2 SUSE 3 Debian 4 Fedora 5 Mandriva 6 Slackware 7 PCLinuxOS 8 Sabayon Текущий итог 1 Ubuntu ________ 2 SUSE _________ 3 Debian ________ 2 4 Mandriva ______ 1 5 PCLinuxOS ____ 1 6 Fedora ________ 7 Slackware _____ 8 Sabayon ______ 1 Текущий итог UbuntuDebianSUSEFedora SlackwarePCLinuxOSMandrivaSabayon Поддержка SUSE SlackwareUbuntu MandrivaFedoraDebian PCLinuxOSSabayon Очков Очков Активность Debian MandrivaUbuntuFedoraSUSE PCLinuxOSSlackware Sabayon Нормирована на 100, усреднена по множеству источников. Очков Нормирована на 100, усреднена по множеству источников. Нормирована на 100, усреднена по множеству источников.Можете не любить Yast, но его утилита управления пакетами дает кучу информации по программам, доступным в SUSE. Июль 2007 Linux Format 37 Дистрибутивы. Супертест FREE! FREE! Эта категория довольно сложна для оценки, поскольку одни люди предпочитают «тощие-и-легкие» дистрибутивы, где можно устано-вить приложения по мере надобности, другим же нравятся системы, напичканные возможностями, чтобы менеджер пакетов и запускать не пришлось. Наш взгляд на это таков, что дисковое пространство сей-час фактически бесплатно – если у вас есть жесткий диск по крайней мере на 40 ГБ (это на данный момент доступно практически всем), вы сможете установить сколь душе угодно приложений, не задумываясь о расходе места, так что чем больше пакетов – тем лучше. Если же вы намерены использовать Linux на старой машине или хотите хранить множество больших файлов (видео, музыки или фото), тогда о диско-вом пространстве стоит побеспокоиться. Среди тестовых дистрибутивов при стандартной установке меньше всех места на диске занял PCLinuxOS, чей совокупный программный вес составляет чуть меньше 2 ГБ. На другом конце шкалы – Sabayon с почти 9 ГБ приложений, устанавливаемых по умолчанию (чем и объ-ясняется длительность инсталляции этого дистрибутива). Конечно, это стандартная установка, во время которой мы щелкали OK или Next, всякий раз соглашаясь на рекомендуемую опцию. Некоторым важен размер собственно установки, но для нас глав-ным было узнать, много ли приложений можно достать, пользуясь менеджером пакетов дистрибутива. И снова налицо широкий разброс: Slackware сполз на последнее место с жалкими 544 доступными паке-тами (это число можно повысить до 1 351, если включить неофици-альные пакеты с www.linuxpackages. net), а Debian научил всех жить, обес-печив по умолчанию 18 059 пакетов. Ubuntu имеет такой же охват, но офи-циально поддерживается только его треть. С точки зрения подбора паке-тов единственный сюрприз преподнес Slackware, использующий злополуч-ный пакет KOffice вместо OpenOffice. org – такой выбор только в нем и сделан. Наконец, многих интересует еще один фактор: как часто они смо-гут получать новые приложения; и для его оценки мы подсчитали чис-ло выпусков каждого дистрибутива (стабильных и не очень) с 1 января 2006 г. Debian ожидаемо оказался в конце этого списка, а победителем, к изумлению, стал SUSE – во многом благодаря его новой политике присвоения двузначных номеров релиз-кандидатам, не говоря уже об альфа-и бета-версиях. Если вы фанат инноваций, этот супербыстрый цикл обновлений идеально подойдет вам. Всем остальным он просто поможет убедиться, что перед финальной версией исправлено столько ошибок, сколько возможно. Размер установки по умолчанию PCLinuxOSDebianUbuntu MandrivaFedoraSUSE SlackwareSabayon Доступные пакеты DebianFedora PCLinuxOSUbuntu*SUSE MandrivaSabayon Slackware Приложения: итоги Текущий итог 1 Ubuntu ________ 2 SUSE _________ 3 Debian ________ 4 PCLinuxOS ____ 1 5 Mandriva ______ 1 6 Fedora ________ 7 Slackware _____ 8 Sabayon ______ Выбор приложений Компиляция собственного приложения – штука медленная и подверженная ошибкам, так что выбор дистрибутива, способного делать это за вас – важен... 1 Ubuntu 2 PCLinuxOS 2 Debian 4 Fedora 4 SUSE 6 Mandriva 7 Sabayon 8 Slackware Объем, ГБ Тысяч пакетов Частота обновлений SUSE UbuntuSabayonMandrivaFedora PCLinuxOSDebian Slackware Столько дискового пространс-тва (в ГБ) занимает стандартная установка. Столько пакетов программ доступно из коробки. Столько выпусков дистрибути-ва сделано с 1 января 2006. Количество релизов * Указаны только официально поддерживаемые. Дополнительные пакеты доступны в репозиториях Debian.38 Linux Format Июль 2007 Супертест. Дистрибутивы Сводная статистика Сильные и слабые стороны каждого дистрибутива и расширенная таблица характеристик, чтобы дать пищу вашему уму... Debian Fedora Mandriva PCLinuxOS Sabayon Slackware SUSE Ubuntu Б C По Вп Пр Безопасность )Б) Сообщество (С) Поддержка оборудования (По) Выбор приложений (Вп) Производительность (Пр) Б C По Вп Пр Б C По Вп Пр Se C По Вп Пр Б C По Вп Пр Б C По Вп Пр Б C По Вп Пр Se C По Вп Пр Легенда: *Указаны только официально поддерживаемые. Дополнительные пакеты доступны в репозиториях Debian.. Debian Fedora Mandriva PCLinuxOS Sabayon Slackware SUSE Ubuntu Версия 4 Core 6 2007 Spring 2007 TR4 3.3 11 10.2 7.04 Дата выхода 8/4/07 24/10/06 10/4/07 26/4/07 16/3/07 2/10/06 8/12/06 13/4/07 Сайт www.debian.org fedoraproject.org www.mandriva. com http://www. pclinuxos.com/www. sabayonlinux.org www.slackware. com www.novell.com/linux/www.ubuntu. com/Стандартный рабочий стол Gnome Gnome KDE KDE KDE KDE Gnome/KDE Gnome Производных 124 51 12 0 0 46 4 24 Архитектур 12 3 2 1 2 1 3 3 Управление пакетами apt Yum/RPM urpmi/RPM apt Portage Tarball Yast/RPM Synaptic/apt Размер (ГБ) 2.12 2.58 2.39 1.95 8.94 3.28 3.23 2.31 Пакетов (устанав-ливаемых) 18,059 6,427 4,392 6,237 1,908 544 5,108 5,132* Ядро 2.6.18.4 2.6.18.1 2.6.17.13 2.6.18.4 2.6.20.3 2.4.33.3 2.6.18.2 2.6.20.15 X.org 7.1 7.1 7.2 7.1 7.2 6.9.0 7.2 7.2 GTK 2.8.20 2.10.4 2.10.11 2.10.6 2.10.7 2.8.20 2.10.6 2.10.11 KDE 3.5.5 3.5.4 3.5.6 3.5.6 3.5.6 3.5.4 3.5.5 3.5.6 Важнейшая статистика для восьми тестированных дистрибутивовИюль 2007 Linux Format 39 Дистрибутивы. Супертест Запускайте ваш почтовый клиент и готовьте убийственные тирады: у нас есть победитель, и имя ему – Ubuntu. Но, надеемся, вы поняли смысл наших диаграмм и таблиц – и то, как мы пришли к этому заклю-чению: Ubuntu не только лидировал в трех тестах из пяти, но и попал в верхнюю часть двух оставшихся таблиц, что и гарантировало ему побе-ду. Бедняга Sabayon, с другой стороны, стал последним или почти пос-ледним в нескольких группах – это показывает, что следует приложить больше усилий, чтобы помочь ему догнать самые лучшие дистрибути-вы, представленные здесь. На диаграммах слева хорошо видно, что у каждого дистрибути-ва есть по крайней мере одна слабая сторона – даже Ubuntu уступил Fedora и SUSE в безопасности, и это позор, потому что пользователям Ubuntu, безусловно, нужен хороший брандмауэр. У SUSE главная про-блема – производительность: следует поработать, чтобы уменьшить потребление памяти. Если бы SUSE не ухитрялся выпускать два дист-рибутива каждые три месяца, он занял бы более низкое место в про-граммной категории и, несомненно, уступил бы в финальной таблице второе место Debian. Конечно, если кто-нибудь другой задался бы целью оценить эти дистрибутивы, он, наверное, выбрал бы иные тесты и пришел бы к немного другим итогам. Мы же представили здесь данные, которые могут помочь вам принять свое собственное решение. Надеемся, вы его уже сделали. Что вам нравится в вашем дистрибутиве больше всего? Не убедили ли мы вас подумать о замене? И что следовало бы учесть, а мы этого не сделали? Присоединяйтесь к нашей дискуссии на www.linuxformat.co.uk/distrochat и дайте нам знать! LXF Итоги Один дистрибутив явно правит, но кое-кто дышит ему в спину... Финальный итог 1 Ubuntu 2 SUSE 3 Debian 4 PCLinuxOS 5 Mandriva 6 Fedora 7 Slackware 8 Sabayon1 3 2 Лауреаты конкурса дистрибутивов40 Linux Format Июль 2007 Neil Bartlett При всех достоинствах Linux и всем многообразии созда-ваемых для него программ приходится признать, что для разработки ПО платформа Windows остается более предпочтительной. И хотя разработчики Open Source тру-дятся не покладая рук, чтобы предоставить нам свободную альтер-нативу популярным программам Windows (в виде Firefox, OpenOffice. org и Scribus), в некоторых случаях полноценного эквивалента просто нет. Linux-версий нет как для крупных программ (Photoshop и Microsoft Office), так и для тысяч мелких. Впрочем, выход есть. Это Wine. Сегодня речь пойдет не о напитках [Wine (англ.) – «вино», – прим. перев.], хотя после бутылки-другой, принятой за один вечер, тоже может показаться, что вы играете в Quake 8 на Atari ST [популярная в 1985–1990 годах модель настольного ком-пьютера с процессором Motorola, – прим. перев.] в своем домике на Венере. Мы поговорим об одной программе, с помощью которой дру-гие программы, написанные для Windows, можно запускать в Linux. В традиционном для Unix стиле аббревиатура Wine расшифровыва-ется рекурсивно: «Wine – Это Не Эмулятор» (‘Wine Is Not an Emulator’). Но разве Wine не эмулирует Windows? Нет. На самом деле, эмуляторы воссоздают работу устройства или программы полностью, а Wine лишь предоставляет «слой совместимос-Windows в Wine Никак не можете расстаться с любимым Windows-приложением? Вам поможет Wine. О нем-то и расскажет Майк Сондерс в первой из двух статей о достижении кросс-платформенной нирваны. ти» между Linux и программами Windows. Когда приложение Windows говорит: «Я хочу открыть файл», Wine перехватывает это сообщение и преобразует его в системный вызов, понятный ядру Linux. Это означает, что для запуска программ Windows вам не потребуется ни установлен-ной Windows, ни виртуальной машины типа VMware или Qemu. Хотя Wine разрабатывается с 1993 года (www.winehq.org), его состо-яние далеко от совершенства: некоторые программы Windows работа-ют безукоризненно, другие – с небольшими проблемами, а третьи – не запускаются вовсе. Казалось бы, после десяти лет разработки любая программа должна работать идеально, однако в случае с Wine есть два всегда актуальных препятствия: 1 Недокументированные возможности Windows Wine воссоздает в Linux программный интерфейс приложения (API) Windows, но посколь-ку многие системные вызовы в Windows недостаточно описаны в доку-ментации или совсем не документированы, разработчикам Wine прихо-дится воспроизводить их функционал самостоятельно. 2 Новые версии Windows В далеком 1993 году разработчикам нуж-но было обеспечивать совместимость с Windows 3.1. Через несколько лет им было нужно эмулировать API Windows 95. Каждый раз, когда полная совместимость с текущей версией Windows почти достигнута, выходит новая версия, и все начинается сначала... Wine 0.9.40 WineTools 0.9jo-III На DVDКросс-платформенная нирвана: Wine Июль 2007 Linux Format 41 Таким образом, лучшее, что вы можете сделать – это установить Wine и попробовать запустить некоторые Windows-приложения в Linux с его помощью. Вы увидите, что одни программы работают прекрасно, другие – нет, но если обновлять Wine регулярно (новый релиз выхо-дит чуть ли каждую неделю), то результат не заставит себя ждать. На следующих страницах мы рассмотрим инсталляцию Wine и попробуем запустить некоторые программы. Установка Как мы уже говорили, Wine – это программа, которая предоставляет «слой совместимости» для запуска приложений Windows в Linux. На самом деле, это программа и набор библиотек, эмулирующих библио-теки DLL в Windows. К счастью, ее установка очень проста. Правильнее всего использовать менеджер пакетов вашего дистрибутива; установи-те все пакеты, найденные по запросу ‘Wine’ (обычно это wine, winelib и/или winetools). Если вы не знаете что делать или версия Wine ниже 0.9.1, возьмите последнюю версию программы из раздела Система на второй стороне нашего DVD. Например, если вы используете Ubuntu, скопируйте файлы .deb с нашего DVD в свой домашний каталог и выполните команду sudo dpkg -i *.deb Система запросит пароль пользователя, затем Wine будет установ-лен. Если ваш дистрибутив использует RPM, скопируйте файлы .rpm в свой домашний каталог и выполните команды su rpm -ivh *.rpm По запросу системы введите пароль пользователя root, и програм-ма будет установлена. Еще одним вариантом является сборка Wine из исходных текстов. Предварительно убедитесь в том, что в систе-ме установлены компилятор GCC и пакеты разработки для X-сервера. Скопируйте файл wine-0.9.39.tar.bz2 из раздела Система/Wine нашего DVD в свой домашний каталог и выполните команды tar xfvj wine-0.9.40.tar.bz2 cd wine-0.9.40/./configure make depend && make Если во время выполнения команды ./configure появились сообще-ния о неразрешенных зависимостях, установите недостающие инстру-менты разработчика с помощью менеджера пакетов. Например, если появилось сообщение об отсутствии заголовочных файлов X-сервера (Can’t find the X development headers), поищите пакеты вроде ‘xorg’ или ‘x11’ и установите те из них, названия которых заканчиваются на ‘-dev’ или ‘-devel’. После этого снова выполните команду ./configure. Используйте команду sudo bash (в Ubuntu) или su (в других дист-рибутивах) для начала сеанса работы под пользователем root, затем выполните команду make install Программа Wine и ее библиотеки будут установлены в каталог /usr/local. Поздравляю – все готово! Если вы добавили Wine с помощью менеджера пакетов, он может оказаться в каталоге /usr, но вам не сле-дует об этом беспокоиться. Как это работает Теперь давайте протестируем свежую версию Wine, запустив какое-нибудь простое приложение. На второй стороне нашего диска в раз-деле Система/Wine вы найдете файл notepad-install.exe. Скопируйте его в свой домашний каталог и введите в окне терминала следующую команду wine notepad-install.exe На экране промелькнут несколько строк отладочного текста, затем появится окно установщика Notepad++. Это текстовый редактор для Windows, возможности которого не идут ни в какое сравнение с Notepad от Microsoft. Кроме того, его маленький размер в данном слу-чае имеет значение. Итак, программа для Windows идеально работает Microsoft Office. Microsoft Office 2000 работа-ет отлично, с Office XP есть некоторые пробле-мы, а о поддержке Office 2007 сейчас даже не думают. Word XP работает отлично, хотя и медленно. Internet Explorer. Даже не думайте об исполь-зовании седьмой версии браузера, если не знаете, как с помощью Wine убедить установ-щик в том, что он запущен на подлинной сис-теме Windows. Версию 6.0 можно использо-вать для тестирования создаваемого вами web-сайта. Adobe Dreamweaver. Восьмая версия, один из последних релизов Dreamweaver, работает вполне прилично, хотя операции копирования и вставки могут вызвать ошибки. Чтобы уста-новить Dreamweaver, может потребоваться несколько попыток. Adobe Photoshop. При работе с версиями 7 и CS (8) проблем почти нет. В версии CS2 иногда возникают ошибки с расширениями и клави-шами быстрого доступа. Quicken. Хотя в версии 2002 года не очень хороши шрифты и есть проблемы с печатью, в целом пакет работает стабильно по сравнению с другими релизами. Apple iTunes. Не стоит пробовать версию 7.0. Версии 4.9 и 6.x вполне работоспособны, хотя есть проблемы с передачей файлов и воспро-изведением треков. Сейчас поддержка iTunes оставляет желать лучшего. Half-Life 2. Работает очень хорошо, хотя число кадров в секунду ниже, чем в Windows, и есть проблемы с графикой. Вообще говоря, лучше использовать более старые версии программ, потому что свежие релизы могут работать с кучей ошибок или не запуститься совсем. Поддержка игр, использующих DirectX, постоянно улучшается, поэтому если программе хотя бы года три, никаких проблем, скорее всего не будет. Вот список наиболее популярных приложений, совместимых с Wine: Что можно запускать? Когда-то для этого требовались часы упорной работы, а сейчас мы можем запускать известные программы с помощью нескольких команд. Проверим Wine: Notepad++ запускается, значит, Wine успешно установлен, и можно пробовать другие приложения..Кросс-платформенная нирвана: Wine 42 Linux Format Июль 2007 в Linux! Как вы уже поняли, для запуска программы Windows в Linux используется команда wine . После завершения установщика запустится редактор Notepad++. С его помощью мы постараемся понять, как работает Wine. Начнем с открытия файла (пункт меню File > Open). Нетрудно заметить, что Wine отображает папку My Documents на домашний каталог пользователя, а диск Z: – на корень файловой системы (/). Но куда указывает диск C:? При первом запуске Wine создает в вашем домашнем каталоге папку .wine. В ней располагаются файлы реестра, в которых хранятся настройки программ, и подкаталог drive_c. Он и выступает в роли дис-ка C: для приложений Windows, запускаемых с помощью Wine. Здесь же располагаются файлы установленных нами программ. Так, в drive_c можно обнаружить каталог Program Files, а в нем – папку Notepad++, в которой находятся файлы только что установленного текстового редактора. Итак, диск Z: указывает на дерево файловой системы Linux, и мы можем обращаться к файлам ОС Linux из программ Windows, а диск C: – на каталог, который содержит файлы установленных программ (это подкаталог drive_c каталога .wine в домашнем каталоге пользова-теля). Если вы захотите запустить Notepad++ снова, используйте коман-ду wine следующим образом: wine .wine/drive_c/Program\ Files/Notepad++/notepad++.exe То же самое относится и к другим программам. После установки приложения найдите его исполняемый файл в папке .wine/drive_c. Затем вы сможете запустить программу. Для этих целей можно также приспособить ярлык на рабочем столе. Если на компьютере установле-на Windows, можно зайти в ее каталог (он обычно находится в дирек-тории /media или /mnt) и попробовать «на зуб» стандартные программы. Например, для запуска классической игры Солитер используется команда [/media/hda2 надо заме-нить на точку монтирования в вашей системе, – прим. ред.] wine /media/hda2/windows/system32/sol.exe Пример: Photoshop Вам уже хочется запустить свои любимые приложения? Но, как мы уже говорили, некоторые программы работают отлично, а другие – с большим трудом. Поэтому остается только пробовать, скрестив пальцы. База данных прило-жений Wine (http://appdb.winehq.org) содержит список из сотен поддерживаемых программ, для каждой из которых указана «совместимость». Там вы сможете найти необхо-димую программу. Самые популярные программы описаны во врезке «Что можно запускать?» на стр. 41. Сейчас мы установим Adobe Photoshop 7. Конечно, это не самая последняя версия известного графического редактора, но она очень хорошо работает в Wine. Скопируем установочные файлы с дистрибу-тивного диска в папку Photoshop в домашнем каталоге. Запустим тер-минал и выполним следующие команды cd Photoshop wine Setup.exe Появится окно инсталлятора, который проведет нас через все эта-пы установки. Он скопирует файлы Photoshop в виртуальную папку Windows .wine/drive_c и добавит информацию о нем в файлы реестра (они также расположены в папке .wine). Как только инсталлятор завер-шит работу, мы сможем запустить Photoshop командой wine .wine/drive_c/Program\ Files/Adobe/Photoshop\ 7.0/photoshop.exe Вот и все! Photoshop работает в Linux. И очень неплохо: некоторые диалоги долго открываются, и окно с инструментами появляется сразу на всех виртуальных рабочих столах, но в остальном – очень удобно. Однако мы можем сделать еще кое-что... Советы по настройке Закройте все запущенные в Wine программы и введите winecfg в окне терминала. Появится окно Windows-программы, позволяющей зада-вать различные настройки Wine, повышающие совместимость и произ-водительность. Мы изучили советы других пользователей по оптими-зации запуска Photoshop 7 (их можно найти на странице http://appdb. winehq.org) и хотим поместить все панели инструментов Photoshop в одно рабочее пространство. Для этого выберем вкладку Графика (Graphics), затем Эмулировать виртуальный рабочий стол (Emulate A Virtual Desktop) и установим его разрешение в 1024 x 768. Запустим Photoshop снова, и voil – он в отдельном окне! Мы боль-ше не увидим следов его панелей инструментов после переключения рабочего стола. Попробуйте запустить другие программы, и вы оцените все удобство Winecfg – раньше на правку конфигурационных файлов приходилось тратить кучу времени, а сейчас практически все настройки можно изменять с помощью графического интерфейса. На вкладке Приложения (Applications) можно даже изменить версию Windows, которую эмулирует Wine (например, установить Windows 98 вместо 2000). Эта возможность особенно полезна при запуске старых программ. Вот как выглядит оптимальный способ запуска приложений Windows с помощью Wine: найти рекомендации по запуску этого приложения в базе данных на сайте, посмотреть на результаты тестов для этого при-ложения и изменить необходимые настройки в Winecfg до установки Существуют также коммерческие версии Wine, которые используют ту же кодовую базу, но добавляют удобства – в них вам не придется открывать командную строку, чтобы запустить Windows-программу. В отличие от свободного Wine, эти решения фокусируются на поддерж-ке вполне определенного набора приложений, зато достигают лучшей совместимости с ними. CrossOver Linux от CodeWeavers (www. codeweavers.com) – это модификация Wine, оптимизированная для запуска популярных программ, среди которых Office 2003/XP, iTunes и Lotus Notes. Он также поддерживает расширения браузера, в том числе проигрыва-тели форматов QuickTime и Windows Media. Разработчики CrossOver концентрируют свои усилия на улучшенной (по сравнению с Wine) поддержке этих программ. Если вы пользуе-тесь только ими, то CrossOver Linux за $40 – прекрасная альтернатива полноценной копии Windows. Хотя CrossOver поддерживает и некоторые игры, «хардкорным геймерам» гораздо лучше подойдет Cedega (www.transgaming.com). Эта программа, ранее известная как WineX, пред-назначена для запуска игр, в том числе World of Warcraft, Oblivion, Civ IV и многих других (полный список можно посмотреть на сайте программы). Мы уже рассказывали о Cedega в этом меся-це и в предыдущих обзорах, и ее производи-тельность произвела на нас впечатление – часто невозможно понять, запущена игра в эмуляторе или в настоящей Windows. На момент написания статьи годовая подписка на Cedega стоила $60, и с учетом ее высоких темпов развития, это почти даром. CrossOver и Cedega Хотя при работе с WineTools иногда возникают проблемы, с их помощью установить и запустить известные программы очень просто.Кросс-платформенная нирвана: Wine Июль 2007 Linux Format 43 или запуска программы. Если установить программу не получается и на компьютере установлены две операционные системы, можно попро-бовать запустить ее прямо с раздела, на котором установлена Windows (мы проделали это с Солитером). Раздел Windows обычно смонтирован в папке /mnt или /media. Итак, давайте вспомним основные моменты: для запуска програм-мы используется команда wine , файлы виртуальной Windows хранятся в папке .wine/drive_c в домашнем каталоге пользо-вателя, а для настройки параметров запуска программ в соответствии с описанием программы в базе данных Wine нужно ввести команду winecfg. Для запуска установленной программы можно не пользовать-ся командной строкой. Достаточно создать ярлык для исполняемого файла программы, который находится в папке .wine/drive_c, и пропи-сать в нем команду для запуска программы в Wine, например: wine /home/username/.wine/drive_c/myprog.exe Небольшой совет: если после установки новой программы Wine перестает нормально работать, удалите папку .wine в своем домаш-нем каталоге. Она будет создан снова при следующем запуске Wine. Конечно, все остальные программы придется переустанавливать, но это полезно знать на случай, если ваш Wine «прикажет долго жить». Установка с WineTools Хотя установка программы из окна терминала – дело нехитрое, WineTools (www.von-thadden.de/Joachim/WineTools) использует для это-го графический интерфейс, управляемый с помощью меню. Скопируйте архив winetools-0.9jo-III.tar.gz из раздела Система/WineTools на второй стороне нашего DVD на жесткий диск и введите в окне терминала сле-дующие команды: tar xfvz winetools-0.9jo-III.tar.gz cd winetools-0.9jo-III Начните сеанс работы с правами пользователя root с помощью команды sudo bash (Ubuntu) или su (в других дистрибутивах), затем введите ./install. После этого введите exit для окончания сеанса root. Введите wt, и на экране появится первое диалоговое окно установщи-ка. Выберите базовую установку (Base Setup), затем обновите каталог .wine (Update An Old Fake Windows Drive). После этого на экране появит-ся окно базовой установки (Base Setup). В этом окне нужно щелкнуть главное меню (Main Menu). В режиме установки протестированного ПО (Install Tested Software) можно добавлять различные приложения, которые будут загружены из Интернета или взяты с CD/DVD-диска. Например, если выбрать Acrobat Reader в меню Player, WineTools загрузит инсталлятор этой программы, покажет все зависимости и запустит установщик. Обратите внимание, что в некоторых случаях WineTools потребуется установка DCOM98 и Internet Explorer необходимой версии, это можно сделать в меню базовой установки (Base Setup). И это тот случай, ког-да совместное использование Wine и WineTools может вызвать про-блемы – так наш компьютер завис при установке DCOM98, но будем надеяться, что в будущих версиях Wine и/или WineTools эта проблема будет решена. Несмотря на некоторые шероховатости, многие про-граммы отлично работают, кроме того, WineTools избавляет нас от необходимости поиска нужного .exe-файла при загрузке программы из Интернета. Будущее Wine А что же Microsoft? Компания пока не сделала официальное заявле-ние о проекте Wine, но службы Windows Update и Windows Genuine Advantage уже проверяют системный реестр на наличие ключей Wine и блокируют все обновления системы в слу-чае их обнаружения. Для большинства из нас это не пробле-ма – отдельные программы Windows гораздо важнее послед-ней версии дефрагментатора диска. Тем не менее, это говорит о том, что Microsoft очень внимательно следит за развитием Wine. Многообещающим проектом из мира Wine является Wine-Doors (www.wine-doors.org), программа для Gnome, которая рас-ширяет функционал WineTools и еще больше упрощает установку программ Windows в Wine. На момент написания статьи не было даже версии 0.1, и исходный код был доступен только через SVN, но первый релиз может появиться очень скоро. Следите за информацией на сайте проекта. Между тем, разработчики Wine прокладывают дорогу к версии 1.0. Мы ждали ее многие годы, но с выпуском Windows Vista момент выпуска снова может быть ото-двинут. Впрочем, в сохранении номера 1.0 для пол-ноценной работающей версии нет ничего зазорного. Расскажите нам о том, как вы установили Wine – наши форумы www.linuxforum.ru открыты для обмена поло-жительными эмоциями, помощи, если что-то не получается, и других вопросов по запуску разных программ Windows в Wine. Удачи! LXF С помощью Wine можно запускать как серьезные программы, так и игры, например, Half-Life 2. Winecfg позволяет настроить Wine без утомительного ручного редактирования конфигурационных файлов.44 Linux Format Июль 2007 FOSS вне Linux Neil Bartlett FOSS за пределами Linux Игнорировать существование альтернативных операционных систем все еще трудновато. Но даже в бесплодной пустыне закрытой ОС встречаются оазисы, где цветет свободное ПО. За ними наблюдает Грэм Моррисон. них производителей поддерживать программы, которые мы использу-ем в Linux. Если бы браузер Mozilla Firefox не снискал популярности, у многих сайтов до сих пор были бы проблемы с совместимостью, а формат OpenDocument не был бы одобрен как стандарт ISO. Ну, а поль-зователи старинной OS/2 от IBM не смогли бы запускать передовые приложения из мира открытого ПО, например, Scribus. Разрабатываем свободно Самое большое преимущество открытого ПО для закрытых платформ в том, что даже если вы не выбираете, в какой операционной системе работать (например, в офисе или в кафе), вы можете воспользовать-ся теми же программами, что и дома. Для многих проектов доступны версии, скомпилированные под другие ОС, и, что удивительно, неко-торые программы работают в Windows или OS X гораздо лучше, чем в Linux. Многие приложения проще установить и выполнить их обнов-ление. Однако именно Linux предоставляет разработчикам плодород-ную почву, на которой всходят ростки многих открытых проектов. Это сочетание средств разработки, сообщества и желания предоставить свободную альтернативу другой ОС движет вперед весь процесс разви-тия открытого ПО. Оно также вынуждает крупные компании, такие как Apple и Microsoft, пересмотреть свое отношение к Open Source, что не может не радовать. Для всех программ, кроме Ardour и Seashore, существуют версии под Windows и Mac. Ardour 0.99.3 Audacity 1.2.6 Inkscape 0.45.1 Blender 2.43 Gimp 2.2.x Scribus 1.3.3.x Seashore 0.1.9 Между двумя группами сторонников открытого про-граммного обеспечения уже давно ведется дискуссия, в основе которой один вопрос: доступность свободно-го ПО на закрытых платформах способствует разви-тию Open Source или сдерживает его? Некоторые, в их числе Ричард Столлмен, считают, что возможность запуска свободного и открытого ПО (Free and Open Source Software, FOSS) в таких операционных системах, как Microsoft Windows и Apple OS X, уменьшает число желающих попробовать Linux. Другие полагают, что доступность свободного ПО для закрытых систем дает шанс позна-комиться с ним и тем, у кого иначе не было бы такой возможности. Это положительно сказывается на качестве проектов с открытым исход-ным кодом и их разнообразии. Хороший пример здесь – Inkscape. Для этой программы доступны двоичные сборки, скомпилированные для Windows, OS X и Linux, а девиз «Рисуй свободно» (Draw Freely) на сайте программы и в окне «О программе» говорит сам за себя. К счастью, свобода заразительна. За последние годы некоторые свободные и бесплатные приложения для Windows и OS X стали неза-менимыми для многих. Хотя люди и не вникают в идеологию, стоящую за бесплатными офисными пакетами, первоклассными web-браузера-ми или сетевыми стеками Samba, большее число пользователей озна-чает лучшее тестирование, б льшую известность и заставляет сторон-на DVDИюль 2007 Linux Format 45 FOSS вне Linux После установки Windows многие из нас первым делом загружают свежую версию Firefox. Windows-редакция браузера функционально аналогична Linux-версии, и после ее загрузки и установки вы можете пользоваться Firefox точно так же, как делали это в Linux. По соображе-ниям безопасности Firefox более предпочтителен, чем браузер, постав-ляемый с Windows по умолчанию. Кроме того, он содержит средства блокировки всплывающих окон и нежелательных апплетов. Одним из наиболее важных расширений Firefox, которое позволяет синхронизировать закладки, историю и даже cookies между нескольки-ми установленными копиями браузера, является Google Browser Sync. Доступны версии для Windows, OS X и Linux. Все данные пользователя связываются с его учетной записью в Google и хранятся на web-серве-ре. Мы бы не стали доверять генератору прибыли Google историю всей своей жизни в сети – но ограничившись только закладками, вы получи-те весьма полезный инструмент, особенно если на подбор информации были потрачены годы. Вторая программа, которую необходимо установить в Windows – это OpenOffice.org. Подобно Firefox, этот набор офисных приложений вполне привычен и работает в Windows точно так же, как и в Linux. Это прекрасная альтернатива другим офисным пакетам, которые сто-ят больших денег. Поскольку Firefox и OpenOffice.org основаны на кроссплатформен-ных библиотеках, их проще всего запустить в Windows. С другими при-ложениями, основанными на различных технологиях Linux, начинаются сложности. Одним из наиболее известных примеров является GIMP, прекрасный графический редактор. GIMP в Windows GIMP использует библиотеку GTK 2, которая настолько глубоко инте-грировалась в рабочий стол Linux, что сама стала им. Многие функци-ональные возможности GNOME реализуются именно GTK. К счастью, библиотека портирована как под Microsoft Windows, так и под Apple OS X. Она необходима для работы GIMP на этих системах. В разных операционных системах библиотека GTK используется по-разному. В Windows GTK «встроена» в приложение и обычно устанав-ливается в виде библиотеки DLL в каталог программы. Следовательно, FOSS в Windows 3 Загружаем GNOME Выберите из списка необходимые пакеты и нажмите кнопку Далее (Next). Cygwin загрузит около 1 ГБ файлов, затем на рабочем столе будет создан ярлык для запуска GNOME. 2 Определяем список пакетов Выберите ближайший репозиторий с пакетами Cygwin. Дополнительные репозитории для сборок GNOME и KDE можно указать вручную. После этого программа установки загрузит список пакетов. 1 Устанавливаем Cygwin Cygwin транслирует системные вызовы POSIX в Windows и, таким образом, создает окружение для работы Linux-программ. Начнем с загрузки и запуска исполняемого файла Cygwin. к библиотеке невозможен общий доступ, но нет и конфликта версий, когда различ-ные приложения требуют GTK разных версий. Установщик GIMP от Джерни Симончича [Jernej Simoncic] содержит библиотеку GTK 2 для Windows (5,5 МБ) и испол-няемые файлы GIMP (2 МБ). Установка GTK и GIMP производится из единого exe-файла, загрузить который можно с сайта SourceForge. Иногда может потребоваться установка одного или несколь-ких дополнительных пакетов. Например, вместе со Scribus, лучшей настольной издательской системы с открытым исходным кодом, потребуется установить Ghostscript для импорта и печати в форматы PostScript и EPS. Инсталлятор автоматически загрузит необходимый файл и распакует его в каталог программы. После этого Scribus будет работать точно так же, как и в Linux. Для работы Windows-версии Pidgin, программы, ранее известной как Gaim, тоже необходим GTK. Кстати, библиотека Pidgin использует-ся и другой известной [свободной, – прим. ред.] программой обмена сообщений Windows – Miranda. Еще два полезных приложения – аудио-редактор Audacity и векторный графический редактор Inkscape – также очень популярны и имеют мало конкурентов. Дополнительно можно загрузить VST Enabler – компонент Audacity, который позволяет использовать в программе любой из сотен свобод-но распространяемых звуковых эффектов VST. Это большое преимущество по сравнению с версией для Linux. Между тем, разработчики Inkscape заявили, что они хотят сделать Inkscape доступным всем пользовате-лям – независимо от платфор-мы – и вкладывают большие усилия в унификацию пользо-вательского интерфейса. Шаг за шагом: Запускаем GNOME в Windows Многие открытые приложения устанавливаются в Windows одним щелчком мыши. От Firefox и OpenOffice.org до X11 и GNU Make.46 Linux Format Июль 2007 FOSS вне Linux Запишите портированные версии этих открытых программ на USB-брелок – и будете чувствовать себя в Windows и OS X, как дома: Работать с открытым ПО в Microsoft Windows более или менее прос-то. Свободные приложения загружаются и устанавливаются точно так же, как и обычные программы, и пользователь привыкает к ним, просто освоив новый интерфейс. В Apple OS X все обстоит несколько по-другому. OS X – изящная операционная система, которая использует очень строгий и тщательно проработанный подход к интерфейсу пользовате-ля. Хотя GNOME и стремится копировать его, современным открытым программам очень не хватает изящества и продуманности дизайна приложений OS X. Но забудем на мгновение об эстетической стороне вопроса, ведь OS X – это максимально близкий аналог Linux, который можно купить за деньги. Больше X, чем X11 Поскольку Apple OS X является Unix-подобной операционной системой, эта платформа отлично подходит для запуска открытого ПО. OS X вклю-чает бесплатный инструментарий разработчика, и Apple даже исполь-зует свободные компоненты в ключевых областях своей системы. Мы говорим о сетевом стеке Samba, web-сервере Apache и KHTML. Однако из-за различий между OS X и Linux ситуация на Mac’ах несколько усложняется. Многие открытые приложения, включая те, что используют GTK, требуют X11-совместимой графической подсисте-мы. В Linux этот слой реализуется X-сервером, и мы рассматриваем X Window System как данность. А в OS X используется собственный дви-жок для отрисовки графики. Тем не менее, вы можете установить X-сервер и тут. Необходимые архивы можно загрузить с web-сайта Apple или найти на дисках, которые поставлялись вместе с вашим Intel Mac. Процесс займет продолжительное время, поскольку OS X должна пройти все этапы процедуры установки. Если вам повезло инсталли-ровать OS X «с нуля», сразу же выберите X-сервер наряду с другими пакетами. Если же вы тяготеете к продуктам сообщества, попробуйте XDarwin, базирующийся на исходном коде XFree86. Совместимость с X11 высоко ценится разработчиками – изменения в исходном коде программ, необходимые для их компиляции под X-сервер в Apple OS X, незначительны, а функциональные возможности приложений точно такие же, как и в Linux. Наберите man startx в окне терминала, и вы поймете, что мы имеем в виду. Inkscape и Scribus Благодаря тому, что приложения портируются достаточно просто, в OS X вы сможете пользоваться б льшим количеством открытых про-грамм, чем в Windows. GIMP и Inkscape являются достаточно крупными проектами, и для каждого из них есть сборки и установочные пакеты для OS X. С другой стороны, Scribus предъявляет особые требования – ему нужен процессор PowerPC, а производительность на компьюте-рах Intel будет гораздо ниже, потому что на них будет использоваться встроенный в OS X эмулятор PowerPC Rosetta. Несмотря на это, портированные в OS X приложения, которые используют X-сервер, ведут себя «как положено». Они даже выглядят как приложения OS X, за исключением одной детали: для работы с буфером обмена, копирования, вставки и других операций использу-ются другие сочетания клавиш (например, Ctrl+X вместо Apple+X для команды «вырезать»). Кроме того, теряется интеграция приложений с рабочим столом, поскольку сами приложения не знают, в какой операционной системе они выполняются. Например, вы не сможе-те перетащить файлы на палитру инструментов GIMP, как в Linux или Windows – вам придется воспользоваться маленьким значком в док-панели. Многие приложения используют достаточно простой графический интерфейс, и для них не нужен X-сервер. Эти программы «просто будут работать». Среди них VLC – пожалуй, самый универсальный проигры-ватель мультимедиа, и два лучших виртуальных планетария: Stellarium Кроссплатформенный Gimp http://gimp-win.sourceforge.net Blender www.blender.org Inkscape www.inkscape.org Scribus www.inkscape.org VLC www.videolan.org Audacity http://audacity.sourceforge.net Firefox и Thunderbird www.mozilla.com OpenOffice.org www.openoffice.org Если бы свободные астрономические программы, такие как Celestia, были платными, их вряд ли ожидал бы большой успех. FOSS в OS X Версии Inkscape для OS X необходим X-сервер. От Celestia и Stellarium до Fink и Macports.Июль 2007 Linux Format 47 FOSS вне Linux Звуковой редактор Ardour использует версию Jack из OS X. и Celestia. Эти приложения безупречно работают в OS X и Windows и являются хорошей рекламой для Open Source. Благодаря тому, что Trolltech выпустила версию библиотеки Qt под лицензией GPL, в OS X доступны все возможности MythTV – программы, разработка кото-рой под Windows потребовала бы нечеловеческих усилий из-за стро-гих правил использования библиотек, конфигурационных файлов и каталогов, применяемых в Windows. Trolltech смогла в максимальной степени использовать схожесть Linux и OS X, чтобы упростить процесс сборки приложения из оригинального исходного кода. X-терапия Для некоторых разработчиков дополнительный слой, который появля-ется в OS X с установкой X-сервера, стал дополнительной проблемой. В результате появились проекты, реализующие версии открытых прило-жений, «родные» для OS X. Самый известный из них, NeoOffice, пред-ставляет собой OS X-редакцию OpenOffice.org. Сразу после выхода оче-редного релиза OpenOffice все «внутренности» программы «переносят-ся» в приложение OS X. Так, NeoOffice располагает панель меню вверху экрана, а также использует шрифты и драйвера принтера из OS X. Для запуска NeoOffice не нужен X-сервер. Однако версия NeoOffice всегда отстает на одну или две от текущей версии OpenOffice.org, например, актуальный релиз NeoOffice – 2.1 beta. Разработчики Seashore пытаются снять зависимость от X-сервера у другого популярного открытого приложения. За этим непривлекатель-ным названием скрывается проект, реализующий «родную» для OS X версию GIMP. В отличие от NeoOffice, в Seashore не стараются пере-нести в проект каждую новую возможность своего открытого собрата. Например, в нем нельзя управлять рендерингом шрифтов. Но наиболее важные функции (палитры слоев и кистей, а также фильтры, которые нам так нравятся в GIMP) сохранены. Некоторые приложения работают в OS X значительно лучше, чем в Linux. Среди них Ardour, уникальный многодорожечный звуковой редактор. Для работы Ardour необходимы X11 и аудиосервер Jack. Версия Jack для OS X устанавливается одним пакетом, так что эта про-цедура здесь в тысячу раз проще, чем в Linux. И поскольку все Mac’и используют один и тот же Core Audio API, Jack безо всяких потерь внед-ряется в звуковую подсистему. Пользоваться одним из самых мощных из свободно распространяемых звуковых редакторов в OS X гораздо проще. Надеемся, что это сделает и его установку в Linux еще проще. Для достижения лучшей совместимости и большего выбора сво-бодных программ в OS X существуют два проекта, которые позволяют портировать приложения Linux и запускать их без особых усилий. Это Fink и Macports. Оба они организуют в OS X Linux-подобную среду раз-работки и используют менеджер пакетов для установки приложений и исходных текстов в Linux-подобное рабочее пространство. Fink даже устанавливает утилиту управления пакетами apt-get, которая работает точно так же, как и в Debian (Macports использует для тех же целей команду port). В результате вы максимально приближаетесь к работе в Linux на компьютере Mac без необходимости использовать двойную загрузку или виртуальную машину. Этот вариант вполне жизнеспосо-бен, если по каким-то причинам вы вынуждены работать в OS X. С правильно сконфигурированной средой разработки вы сможете загружать свежие версии приложений и компилировать их совместно с библиотеками Fink. Таким образом, вы сможете запускать приложения, которые не были портированы под OS X, например, GnuCash. LXF 3 Запускаем и готово! После установки приложение можно запустить из окна терминала. В нашем примере, для этого используется команда nethack. 2 Выбираем метод установки Каждый из выбранных пакетов может быть установлен либо в виде двоичного файла, либо собран из исходных текстов. Зависимые пакеты будут загружены из репозиториев в Интернете и установлены автоматически. 1 Находим программу Fink включает менеджер пакетов с графическим интерфейсом, наподобие Synaptic. Он позволяет обновлять установленные пакеты и добавлять новые путем выбора их из списка или поиска файлов. Шаг за шагом: Установка Nethack с помощью Fink На дешевом Mac Mini можно пользоваться MythTV – идеальной программой для просмотра ТВ. Компилировать ее не придется.48 Linux Format Июль 2007 Пусть Google поработает Давным-давно, на заре развития web, Марк Андрессен [Marc Andressen] сделал громкое заявление о том, что Netscape превратит MS Windows в «набор слабо отлаженных драй-веров устройств». Подразумевалось, что браузер освобо-дит нас от тирании операционной системы. Что ж, возможно, все полу-чилось не вдруг, но по крайней мере рассвет этого дня уже заметен, благодаря последним web-приложениям и самому примечательному из них – Google Docs & Spreadsheets. Эти инструменты Google не являются свободными, и их код не открыт, но Google интенсивно использует свободное ПО и вносит большой вклад в такие проекты, как Mozilla, Wine и OpenOffice.org. Вдобавок мини-пакет Docs & Spreadsheets представляет самую круп-ную установку инструментов, совместимых с форматом файлов OOo. Тем самым база для ODT, формата сравнительно скромно представлен-ного офисного пакета, расширилась за счет инструментария одного из самых влиятельных создателей программного обеспечения на планете. Если вы привязаны к ООо, но считаете небесполезным иметь доступ к мобильным офисным инструментам через такой сервис, как Google, узнайте на следующих страницах, какие из ваших любимых функций поддерживаются. Docs & Spreadsheets принадлежат к относительно новой категории ПО, зависящей от Ajax, чье полное название (Asynchronous JavaScript and XML) напоминает о том, что это – хитроумное использование JavaScript. JavaScript, конечно же, встроенная в браузер технология: код загружается вместе с web-страницей и исполняется локально. Исторически, проблема JavaScript – совместимость между разны-ми браузерами: код, работающий в Netscape, мог отказать в Internet Explorer, и наоборот. Создание кросс-браузерного JavaScript сейчас стало намного проще, но все же лучше оставайтесь с Firefox. Да, мы в курсе, что Opera и Konqueror почти полностью совместимы с ним, одна-ко, к несчастью, это то же самое, что быть почти беременной. Если вы попробуете использовать инструменты Google в Konqueror или Opera, то получите предупреждение, что попробовать-то можно, но поддерж-ка, вероятно, не сработает. Мыслить по-новому Интерфейс Web-Ajax имеет наследственные ограничения – и Google даже не пытался сквозь них пробиться. Но считать web-инструмента-рий Google соперником Microsoft Office – все равно, что считать теле-видение соперником радио: это просто совершенно иной подход. Почти наверняка роль полновесных приложений для рабочих столов будет продолжать расти. Например, электронная почта, основанная на web, в основном используется частными лицами, поскольку корпорации неохотно отдают e-mail на откуп другим компаниям по соображениям конфиденциальности и безопасности. Но преимущества web-инстру-ментов сделают их незаменимыми для громадного количества людей. Одно из ключевых свойств, стимулирующих их использование – легкость и простота взаимодействия и публикации документов в Web. Для большинства людей смысл создания таблиц и документов состоит в том, чтобы показать их другим людям, ради комментариев и взаимо-действия с ними. В наши дни эта задача из тяжкой поденщины превра-тилась в пару щелчков по клавишам. В будущем люди будут оглядываться на цикл «Print, Post, Return» с тем же изумлением, с каким инопланетяне Cadbury Smash наблюдали за процессом чистки картошки и превращения ее в пюре. Основанная на web публикация – главная альтернатива традиционному подходу. Пока что налицо существенные ограничения на действия, которые можно производить с содержимым, но в какой-то мере эта пробле-ма будет решена благодаря широкополосному доступу и грамотному программированию. Инструменты на базе web, может, и низки по своим функциям, зато высоки по минимализму; а уж по части совместной работы им просто нет равных, утверждает Маркус Грин. Пусть Google поработаетИюль 2007 Linux Format 49 Пусть Google поработает Ассортимент инструментов Google оказывается больше и больше вся-кий раз, когда вы обращаетесь к нему: в нем появились календарь, сетевой фотоальбом Picasa и Gmail, но сейчас нас интересуют офисные приложения, начиная с модуля таблиц. С помощью Google Spreadsheets вы можете загружать документы или создавать их на лету через web-интерфейс. Система распознает файлы Calc от OpenOffice.org и MS Excel и пытается сохранить их структуру. Мы говорим «пытается», поскольку некоторые функции теряются, а некоторые реализованы лишь частично. Сохраняется самое основное из тривиальной таблицы: тип шрифта – жирный, курсив, подчеркивание; простейшие формулы, такие, как сложение и арифметические и основные функции. Однако поддержка чуть более сложных функций уже нуждается в заплатках. Google Spreadsheets не поддерживает макросы (VBA), условное форматирование или именованные диапазоны, и обладает неполной функциональностью для графиков, позволяющей создавать таковые в модуле страницы, но, похоже, лишающей готовых графиков под-гружаемые таблицы. Ограничения на графики – солидный недостаток, ибо визуальное представление данных является невероятно ценным инструментом, помогающим лучше понять их смысл. Excel и OpenOffice.org поддерживают весьма полезную функцию, именуемую условным форматированием, с помощью которой, напри-мер, можно выделить все отрицательные величины красным цветом. Увы, при загрузке в модуль таблицы Google условное форматирова-ние теряется. Возможно, неким признаком незрелости программы является отсутствие поддержки создания именованных групп ячеек. Если работаешь с чем-то большим, нежели тривиальная таблица, име-нованные группы делают формулы куда понятнее. А именно, вместо использования адресов ячеек можно обозначить их диапазон удобо-читаемым ярлыком. Вместо формулы =SUM(C10:C12) назовите группу ячеек C10:C12 именем наподобие houserent («квартплата») и измени-те формулу на =SUM(houserent). В Google Spreadsheets именованные группы создавать нельзя, но если вы загрузите таблицу из Excel или OpenOffice.org, имена сохранятся, и использующие их формулы про-должают работать. Где мое автозаполнение? Автозаполнение означает, что вы можете ввести величины из некой серии в две ячейки, а затем перетащить в другие ячейки, и они будут заполняться автоматически, используя последовательность. Например, в Excel или OOo, введя в одну ячейку ‘Jan’ (янв), а в следующую – ‘Feb’ (фев), вы можете перейти в соседние ячейки, и они будут заполняться так: ‘Mar’ (март), ’Apr’ (апр), ‘May’ (май) и т.д. Это работает для несколь-ких видов последовательностей, например, дней недели или цифр. Модуль таблиц Google не поддерживает этот вид автозаполнения. Чтобы вчерне решить этот вопрос, вам, возможно, придется открыть модуль Calc в OpenOffice.org, сгенерировать автозаполнение ряда вели-чин, а затем вставить их в таблицу Google. Google Spreadsheets поддерживает сортировку данных в одной колонке, но не поддерживает фильтров. В стандартных электронных таблицах фильтры позволяют легко находить данные. Обычно их используют для поиска данных по одному критерию – «показать всех клиентов, в колонке адреса которых стоит Йорк» – но самые современ-ные таблицы позволяют легко создавать достаточно сложные запро-сы, типа «показать всех клиентов с фамилией Смит, проживающих в Йорке или Лидсе». Это значительный пробел в наборе инструментов, который скорехонько заметят даже те, кто пользуется таблицами лишь эпизодически. Недавно добавленная функция создания диаграмм пока что довольно ограниченна. Сохраняются ли в этом онлайн-приложении графики и форматирование? Google Spreadsheets Зачем нужны тэги? Оба инструмента Google обладают одной любопытной особенностью: в них нет сохранения документов в структуре каталогов – в наше время все делается через тэги. Тэги – это сейчас горячая новость, потому что они используются на сайтах социальных сетей для общения, и они замечательно удобны как способ организации документов. Это отлич-но: иерархическая организация документов – не священная корова; на самом деле, она создает немалые ограничения, поскольку файл может находиться только в одной директории, а ведь его, возможно, нужно отнести более чем к одной категории. Используя тэги, можно припи-сать файлу более одного понятия. Например, данная статья может иметь тэги Статьи, Техническая информация и Linux. Вставка формулы в таблицу из списка функций. Бизнес для зевак Хотя блокировка всплывающих окон в наших браузерах и защищает нас, пользователей Linux, от онлайн-рекламы, стоит помнить, что Google занимается рекламой, и перед ним стоит цель, чтобы как можно больше глаз увидело его страницы. Подобно интерфейсу ‘lo-fi’ его офисных инструментов, чисто текс-товая реклама Google создана, чтобы быть эффективной, но ненавязчивой. В данный момент инструменты Docs & Spreadsheets не содержат никакой рекламы – в отличие от системы Gmail. Возможно, реклама появится в будущем, а может, Google считает, что эти инструменты и сами способны привлечь поль-зователей, чтоб они и дальше выбирали про-граммы Google. Многие пользователи прохо-дят через учетную запись Gmail, чтобы попасть в Docs & Spreadsheets, и пока они находятся в системе Gmail, их глаза упираются в несколь-ко тактичных рекламных объявлений Google, а счетчик впечатлений от Google вновь накручи-вает обороты.50 Linux Format Июль 2007 Пусть Google поработает Часть пакета Google под названием Docs уходит корнями во Writely, старый текстовый редактор для web. Google поглотил создателя Writely, Upstartle, весной 2006, и следующей осенью выпустил Docs вместе со Spreadsheets. Подобно модулю Spreadsheets, Google Docs – минима-листский продукт: он не годится для работы с большими документами или для издательского дела. Ну, по крайней мере, в интерфейсе вы не запутаетесь. Он позволяет просто ввести текст, произвести минималь-ное форматирование и проверку орфографии и сохранить его, да еще можно вставить таблицы и ссылки. Эта программа включает исполь-зование стандартных уровней заголовков – с первого по третий, но не позволяет создавать стили, настраиваемые пользователем. Немалое преимущество – то, что ваша работа всегда у вас под рукой. Данная статья была создана и отредактирована с помощью Google Docs, и доступ к ней был получен с трех разных машин в разных местах и из Linux, и из Windows – в Google Docs отсутствует проблема совместимости формата файлов. А еще здесь до смешного просто раз-делять доступ к документу. Если вы нажмете на Collaborate, ваши дру-зья и коллеги получат возможность просматривать документ и вносить в него изменения, а вы потом увидите все внесенные ими изменения, до последнего бита, и решите, стоит ли их сохранять. Вам не придет-ся возиться с флэш-картами, дискетами и прочими устройствами для переноса данных. Модуль Google Docs ограничивает размер файла до 500 Кб, чего, вероятно, достаточно для большинства людей и большин-ства целей. Чтобы вы яснее представили себе, сколько это, сообщаем, что документ, содержащий 50 000 слов и несколько рисунков, занима-ет приблизительно 1000 Кб. Функция проверки орфографии работает отлично. Более ранние версии придерживались стандарта американского английского (US English), но, похоже, это уже исправили. Есть также функция, позво-ляющая добавлять слова в ваш личный словарь. При запуске проверки орфографии слова подчеркиваются, а если нажать на подчеркнутое слово, появится контекстное меню со списком вариантов правописания или функцией добавления в словарь. Это явно лучший интерфейс, чем отдельная обработка слов, подобная OpenOffice.org или MS Word. Проверка грамматики отсутствует, но есть функции предпросмот-ра и печати, и вы можете сохранить свой документ в формате PDF или ODT-формате OpenOffice.org. Будь вы пользователем Windows MS Office, одна лишь функция создания файлов в формате PDF стала бы отличной причиной помчаться за учетной записью. Помогите! На каждой странице Docs & Spreadsheets есть ссылка на файл подсказ-ки, но, честно говоря, эта подсказка не слишком хороша. Так, напри-мер, подсказка по формулам выдает следующую информацию: «Google Docs & Spreadsheets поддерживает свыше 200 функций формул (например,. «=sum(A1:A10)»), что позволяет вам импортиро-вать и производить довольно сложные расчеты в своей таблице. Для доступа к общим функциям перейдите на вкладку «Формулы» или нажмите на ссылку «more», чтобы просмотреть полный список поддер-живаемых функций и легко вставить их в редактируемую ячейку». Инструментам Docs & Spreadsheets не хватает документации от тре-тьих лиц, и мы подозреваем, что потенциальные авторы жаждут погля-деть, как пойдут дела у продукта, прежде чем приняться за книги. Вот пример форматирования текстового документа. Интересно, использовал бы это Керуак, чтобы в наши дни написать «В дороге» [Д.Керуак – писатель-легенда «спонтанной прозы», – прим. пер.]? Google Docs Использование меню тэгов в модуле Documents. Меню File для модуля Documents. Как приступить к работе Чтобы использовать Docs & Spreadsheets, вам нужно создать учетную запись в Google. Она даст вам доступ к сервисам Google, а прямая ссылка — это http://docs.google.com. Если вы уже являетесь пользователем Gmail, вам просто надо кликнуть по ссылке на Docs & Spreadsheets в стандартном почтовом интер-фейсе. Бесплатный вариант пользователя даст вам 2 ГБ пространства, а для текстовых доку-ментов это огромный объем. Если вы его пре-высите, Google предложит объем 10 ГБ Premier Edition за $50 в год. См. www.google.com/a/help/intl/en/admins/editions_spe.html.Июль 2007 Linux Format 51 Пусть Google поработает Google – не монополист рынка приложений на базе web: среди его конкурентов – офисный пакет Zoho (www.zoho.com) и ThinkFree (www. thinkfree.com). Вообще-то, если сравнивать только по функциям, эти продукты еще и круче инструментов Google. В отличие от Google, Zoho не жалуется, если вы пытаетесь зайти в программу через Opera под Linux или Konqueror. Но, к сожалению, и работать нормально в любом из перечисленных браузеров она не будет. Пакет Zoho включает приложение для создания презентаций и мно-жество инструментов помельче, а также текстовый редактор и редак-тор таблиц (хотя Google недавно объявил о добавлении к своим серви-сам программы для создания презентаций на базе web). Интерфейс у модулей Zoho намного более лощеный, чем у инструментов Google, и реализует больше функций, которых как-то ждешь от программы для рабочих столов. Модули копируют интерфейс отдельных приложений: например, кнопки текстового редактора напоминают кнопки в Excel или OOo. Вкладки в редакторе таблиц имеют скошенные края, и в нем есть панель ввода формул. Инструменты Zoho немного напоминают ком-поненты Office 97, тогда как инструменты Google выглядят так, словно создавались для текстового интерфейса. Мы подозреваем, что за красивость инструментов Zoho нужно рас-плачиваться временем, требуемым на их закачку, однако с учетом каче-ства соединения современного Интернета это не должно стать чересчур дорогой ценой. Таблицы Zoho обладают функцией автозаполнения, которая работает точно так же, как и подобная функция в MS Office и OOo. Более важно, что таблицы Zoho поддерживают неплохую часть графической функциональности стандартных электронных таблиц. Можете выбрать область данных с помощью мыши и нажать на кнопку создания графика, и запустится соответствующий мастер. Апплеты – ваши друзья Инструменты ThinkFree интересны тем, что они выходят в двух верси-ях. Одна – это набор инструментов HTML/Ajax, работающий таким же образом, как Zoho и Google Docs, а другая называется «Java-апплет». Если вы скрипнули зубами при мысли о Java-апплетах, не торопитесь делать выводы – это не те апплеты, с которыми мучился ваш дедуш-ка. Использование Java позволяет создавать намного более сложные и тонкие приложения и интерфейсы, чем HTML/Ajax. Инструменты ThinkFree больше остальных соответствуют интерфейсу оффлайновых приложений, однако цена, которую приходится платить за загрузку кода апплета – это производительность. Ни Zoho, ни ThinkFree даже не пытаются предложить пользовате-лям свободу, присущую свободному ПО или лицензиям GPL или BSD. Google дает доступ к некоторым исходным инструментам в своих сис-темах, но не предлагает ничего такого, чтобы каждый мог настроить дубликат этой системы. Просто чтоб придраться Конечно же, во всех упомянутых нами инструментах есть недостатки и ограничения. Но на самом деле, это уже просто придирки. С тем же успехом можно пожаловаться на то, что вместе с купленным телевизо-ром не доставили даму, продающую в фойе кинотеатра мороженое во время антракта, или что размер изображения не достигает 30 футов в высоту. Это, конечно, прискорбно, но пренебрежимо по сравнению с тем, что теперь вы можете развлекаться, рассевшись у себя дома, а для просмотра фильма не надо платить за билет. Ценность web-приложений будет расти, поскольку они предлагают такое потрясающее удобство, как распределенный и универсальный доступ. Возможно, недостаток лоска у инструментов Google компенси-руется связанным с ними брэндом. Для пользователей Linux, доволь-ствующихся Firefox, эти инструменты предлагают весьма солидные преимущества. LXF Как видите, пользовательский интерфейс ThinkFree более утончен, чем его эквивалент в Google. Есть и корпоративная версия. Вас не привлекают инструменты Google? Познакомьтесь с другими онлайн-решениями. Альтернативы Мнение от OpenOffice.org Майкл Микс [Michael Meeks] – глава группы OpenOffice.org в Novell. Беспокоит ли его рост популярности инструментов Web 2.0? «В то время, как коли-чество и возможности офисных онлайн-при-ложений Web 2.0 про-должает увеличивать-ся, остаются как минимум несколько проблем, скрывающихся за фасадом – напри-мер, редактирование текста: многие из «текс-товых редакторов» – это просто обертка на HTML, что очень сильно затрудняет редакти-рование мощного WYSIWYG-документа. Сложность представляют и серьезные вычис-ления, и экранный рендеринг. При всем при том вполне очевидно, что они весьма привлекательны для множества мел-ких задач, и что, так же как с wiki, я думаю, эти парни проглотят задачи редактирования/обра-ботки более простых документов. Что интерес-но, некоторые из них используют за сценой OpenOffice.org для конверсии документа, так что на каком-то этапе ООо будет усовершен-ствован благодаря этому. В частности, они должны извлекать пользу из постоянно про-должающейся работы Novell над OpenXML и взаимодействия с форматами Microsoft вооб-ще. Но все же, по-моему, маловероятно, что web-приложения как-то повредят открытому ПО. К тому времени, как они станут популяр-ными, люди уже сами смогут писать собствен-ные web-приложения, что – в настоящий момент – кажется вполне реальным, в отличие от возможности переписать ООо.» Тех, кого огорчает отсутствие инструмента для создания презентаций от Google, может заинтересовать модуль ZohoShow.52 Linux Format Июль 2007 Web-сервер Web-сервера бывают разные – получше, похуже или вовсе предназначенные для решения нескольких типов задач. Выбрать web-сервер, полностью соответствующий имен-но вашим нуждам, просто необходимо: от этого во многом зависит, насколько хорошо – эффективно и удобно для пользователей – будет функционировать ваш web-ресурс. Соответственно, правильный выбор и поддержка web-сервера – известная «головная боль» почти всех администраторов в мире. В заголовок данной статьи вынесено назва-ние продукта, который мы будем рассматривать; наверное, однознач-но назвать его «мечтой администратора» – некоторое преувеличение. Но, без сомнения, Nginx – неплохой выбор для попытки приблизиться к главному желанию сисадмина почти любого ресурса: стабильно и эффективно работающему web-серверу. Кое-что о Nginx Прежде чем говорить об этой разработке, давайте разберемся, что же такое Nginx и какова его история. Nginx – HTTP-сервер (и одновременно – почтовый прокси-сервер, но об этом позже). Сразу же уясните для себя важную деталь: Nginx не является стандартным web-сервером в том смысле, в каком боль-шинство читателей могут его воспринять, т.е. Nginx не может служить функциональной заменой, например, Apache или IIS. В сущности, Apache и Nginx находятся «по разные стороны баррикад». Здесь умес-тно вспомнить модель «front-end/back-end»: соответственно, Apache будет относиться к back-end, а Nginx – к front-end. Данные продукты предназначены для выполнения задач различных типов – это очень важно. Почему мы говорим исключительно об Apache? Да потому, что Nginx работает только под Unix/Linux системами. Теперь об истории проекта. Nginx начал разрабатываться Игорем Сысоевым (одним из администраторов Rambler’а) весной 2002 года. Проект стал использоваться на различных серверах (в частности, в том же Rambler’е) задолго до официального релиза, состоявшегося 4 октября 2004 года, и до своего обнародования Nginx уже прошел серьезное тестирование. По данным, собранным и организованным Алексеем Тутубалиным, в марте 2006 года щелчок по «Черному квад-рату» (http://www.rukv.ru) приводил к отклику Nginx в 9,8%, а в мар-те 2007 – уже в 22,7% случаев (речь идет о виртуальных серверах). Помимо Rambler’а, стоит упомянуть о Mamba и Peterhost, на чьих сер-верах также функционирует Nginx. Когда пригодится Nginx? В чем преимущества использования модели «front-end/back-end»? Основное – значительно б льшая эффективность работы, чем в других – стандартных и привычных – схемах использования того же Apache; но отнюдь не во всех. Прежде всего необходимо учесть, что использование обсуждаемой модели будет уместно только применительно к серверам с высокой нагрузкой, оправдывающей использование подобного рода средств. Под «высокой нагрузкой» следует понимать количество http-запросов, превышающее 10–12 в секунду. Соответственно, если такой нагрузки на сервер нет, то лучше не строить работу сервера по принципу «frontenndback-end»; это решение может привести и к некоторому замедле-нию работы (хотя и довольно незначительному): ведь Nginx – допол-нительный «пропускной пункт» на пути к back-end’у и к увеличению потребления памяти и т.д. Не стоит использовать Nginx там, где в нем нет нужды, чтобы не винить в неудобствах и неувязках продукт и его разработчика. Что умеет Nginx? Итак, какие возможности предоставляет данный продукт? Nginx – это и HTTP-сервер, и почтовый прокси-сервер. Поэтому рассматриваемые возможности оправданно разбить на категории согласно двум фун-кциональным направлениям Nginx. Начнем с HTTP-сервера, в числе функций которого: Обслуживание статических запросов. Конкретнее, это «передача» пользователю статических html-страниц, графических изображений и прочего контента. Второе – обслуживание запросов на индексные фай-лы. Данная функциональность реализуется модулем ngx_http_index_ module: он обслуживает запросы, оканчивающихся слэшем (“/”). Новая серия! Ультрабыстрый открытый web-сервер – отечественная разработка ЧАСТЬ 1 Интернет немыслим без web-сервера. 60-70 процентов узлов Сети обслуживаются Apache, а как живут оставшиеся 20-30 процентов? Валерия Комиссарова знает ответ. Наш эксперт Валерия Комиссарова Эксперт Cnews, дипломированный администратор и разработчик решений на C#, Валерия с интересом следит за развитием Unix и умеет по достоинству оценить существующие для него решения. Nginx:Июль 2007 Linux Format 53 Web-сервер Автоматическое создание списка файлов; это задача модуля ngx_ http_autoindex_module, который выполняет автоматическое создание листинга каталога. Запрос попадает к модулю в том случае, если у компонента ngx_http_index_module возникли проблемы с поиском индексного файла. Ускоренное проксирование без кэширования, выполняемое моду-лем ngx_http_proxy_module. Он обладает большим количеством дирек-тив, с помощью которых можно настроить параметры процесса. В сле-дующий раз мы рассмотрим этот вопрос более подробно. Особого внимания заслуживают функции/модули, касающиеся обеспечения отказоустойчивости виртуального сервера и распре-деления нагрузки. Данная функциональность связана с модулем ngx_http_upstream. Предусмотрена еще и поддержка SSL. Что же касается «почтовой» функциональности, то здесь имеются возможности для нормальной работы с IMAP, POP3, SMTP, а также SSL. Среди поддерживаемых методов аутентификации: LOGIN для IMAP, USER/PASS, APOP, AUTH LOGIN PLAIN CRAM-MD5 у POP3, и AUTH LOGIN PLAIN CRAM-MD5 у SMTP. Чего Nginx «не умеет» и вряд ли будет «уметь»? Судя по «настрою» разработчика, о .htaccess придется забыть. Не стоит надеяться и на поддержку CGI. Что осталось добавить? Возможность обновления исполняемого файла Nginx и его настроек без остановки процесса обслуживания клиентов; высокая модульность. Среди приятных «мелочей» – быстрая ротация журналов, ведение отладочного журнала, и перенаправление ошибок (например, 404). Почему Nginx так быстро работает? А теперь давайте посмотрим, почему Nginx (как и сама модель «frontenndback-end») работает быстро и эффективно (Nginx действительно быстр, это не «слухи»). Можно поставить вопрос и так: почему разде-ление обязанностей между Apache/Nginx обеспечивает большее быст-родействие, чем в схеме работы без последнего? Почему – если сравнивать работу Apache без Nginx и в связке с Nginx в ситуации со статическим контентом – второй вариант быстрее (иногда это заметно больше, иногда меньше, но чувствуется всегда)? Рассмотрим, что такое модель prefork(ed), используемая в Apache 1.3. Мы имеем один главный процесс, который при получении входящих запросов создает требуемые дочерние процессы с помощью fork (). Такой подход традиционен, и в то же время является одним из худших по производительности/эффективности. Почему? Происходит серь-езный перерасход системных ресурсов (думаю, не нужно объяснять сущность работы fork()). И бороться с тем, что множество дочерних процессов (число которых, понятное дело, растет с числом запросов) стремительно поглощает системную память, негативно влияет на про-изводительность и в разы снижает удобство работы с ресурсом, очень трудно. Что же нам предложит Nginx? FSM! Аббревиатура расшифро-вывается как Finite State Machine – автоматы с конечным числом состо-яний, иначе – КА (конечные автоматы). Несмотря на ряд ограничений, в ситуации с Nginx FSM полностью себя оправдывает. FSM – довольно сложная вычислительная модель; ей посвящен не один толстый книж-ный том; ну, а мы просто посмотрим, что еще используется в отноше-нии скорости в Nginx, и к какому результату, заметно отличающемуся от prefork(ed)-модели, это все приводит. Nginx использует kqueue (на системах Free/Net/Open BSD и Mac OS X) – механизм оповещения определенного процесса о конкретных событиях, произошедших в ядре ОС. Применение kqueue, в частности, позволяет избавиться от большого количества «лишних» вызовов некоторых функций. Также используются epoll и rtsig (в ОС Linux), sendfile (для Linux, FreeBSD, Solaris). На примере kqueue очевидно направление этих функций. Главное – результат: радикальное умень-шение количества «съедаемой» памяти, увеличение быстродействия и т.д., со всеми вытекающими последствиями. Эффективность модели «front-end/back-end» напрямую следует из осуществления значительного снижения воздействия негативных сто-рон prefork(ed) Apache. Разделение труда между front-end и back-end дает радикальное уменьшение числа переключений контекста и коли-чества потребляемой памяти. На самом деле возможностей у Nginx намного больше, чем здесь описано. Говорить о них можно если и не бесконечно, то достаточно долго. Но задача данной статьи – рассказать, насколько многообразен и качественен этот web-сервер; детальному рассмотрению процесса установки и настройки Nginx будет посвящена следующая статья. LXF мечта сисадмина Через месяц Мы установим Nginx и научимся настраивать его в ряде типовых ситуаций.54 Linux Format Июль 2007 ЭмуляцияСквозь время За последние десятилетия в мире создавалось много уникальных ком-пьютерных систем. В туманном Альбионе за домашним компьютером Клайва Синклера выстраивались огромные очереди жаждущих запо-лучить в дом электронного помощника стоимостью менее 100 фунтов (что в 1982 году, как и сейчас, примерно равнялось $200), имеющего цветное изображение и ввод команд BASIC одним нажатием клавиши. Покупателей не пугали ни низкое качество сборки компьютеров, ни ошибки, обнаруженные в уже проданных экземплярах, ни даже недо-деланное ПЗУ этой машины. И их можно было понять: за 99,95 фунтов купить полноценный цветной чудо-компьютер, в то время как другие модели стоили от 400 – чем не находка? За покупкой, правда, надо было идти не в компьютерный магазин, а в книжный. А толпы фанатов Apple II (представлявшей собой уже готовое устройство, а не набор Apple I типа «собери-сам») боготворили свою машину, созданную двумя Стивами (Возняком и Джобсом) – и было за что. Во времена, когда домашние компьютеры делали первые шаги, Apple II позволяла выполнять даже такие фантастические вещи, как самостоятельную оцифровку звука. Чуть позднее (в 1984 году), первые обладатели легендарного Макинтоша гордились графическим интерфейсом этой машины – даже несмотря на то, что экран, встроенный в компьютер, был совсем небольшим (конечно, по сравнению с диагональю современных мони-торов) и черно-белым. Впрочем, и внутри Apple разработкой Macintosh занимались элитные сотрудники (большей частью – пришедшие из проекта Lisa); тех же, кто продолжал работать над приносящей основ-ную прибыль Apple II, Джобс считал неудачниками (но это уже другая история). И, конечно, первая игра для Макинтош – Alice – была по-настоящему хороша. В том же 1984 году в Нью-Йорке был продемонстрирован прото-тип машины, повергший в шок невероятной мощью даже видавших виды журналистов: сверхбыстрая графика, потрясающий звук, много-задачная операционная система, манипулятор «мышь» и 4096 цветов на экране. Конечно же, это была Amiga. Мультимедиа в 1984 году! У вас и сегодня может отвалиться челюсть при виде живого видео со стерео-звуком, легко демонстрируемого с 880-килобайтной дискетки на пол-ный экран машины с процессором в 7 МГц. Плавно и без тормозов. Неугомонный Синклер представил общественности новый компью-тер Sinclair QL – призванный затмить 32-битной мощью медленные IBM PC. Именно его, замечу, в свое время приобрел Линус, соблазнившись теми самыми 32 битами. Позже он купил себе IBM PC и подарил нам Linux. И это было только начало. Сегодня, в отличие от тех времен, когда мир полнился гениальны-ми идеями о создании новых домашних компьютеров, все значительно скучнее: максимум, из чего можно выбирать – это x86 или... или... x86. Последний оплот альтернативности для домашнего пользователя – Mac – пал под натиском Intel-совместимости в 2005 году. Ну, мы расстраиваться не будем. Во-первых, Linux – сам по себе вещь весьма увлекательная, конструктор для взрослых: можно вечно собирать и разбирать. А во-вторых, все те замечательные машины, что некогда имели армии фанатов, теперь доступны посредством эмуля-ции. Разве могли бы вы мечтать о двадцати, а то и тридцати уникаль-ных компьютерных системах прямо в вашей комнате? Речь идет об эмуляторах – специальных программах, виртуаль-но воссоздающих легендарные компьютерные системы. Превратить ваш мега-супер-компьютер в старый добрый ZX Spectrum или Commodore 64 – да нет проблем! Только не рвите на себе волосы – процесс обратим, в отличие от лысины. Где вы, бравые пилоты Elite с BBC? У вас есть еще один шанс испы-тать судьбу, сражаясь у далеких звезд, заправляя под завязку топливные баки от раскаленных светил или кроша астероиды в погоне за удачей. И не только пилоты. Миллионы людей, переживавших приключе-ния юной Занции в Кирандии, Джеймса Понда или Сквола – все мы снова можем вернуться в этот чудесный мир благодаря эмуляции. Все, что для этого нужно – Linux и эмуляторы. В Linux работают десятки тысяч игр. Александр Супрунов проложит вам путь к ним. Дополнительная информация Конфигурация тестовой машины: Процессор: AMD Sempron 3000+ (1600 МГц) ОЗУ: 512 MБ DDR PC-3200 Видеокарта: 128 MБ GeForce 5200 Сияй, безумный бриллиант! FUSE 0.8.0.1 E-UAE 0.8.29 ZSNES 1.51 PCSX2 0.93 MAME и SDLMAME 0.116 DOSBox 0.70на DVD ЭмуляцияИюль 2007 Linux Format 55 Эмуляция Совет Альтернативой FUSE может стать запуск одного из Windows-эмуляторов (рекомендуем отечественный ZXMak – http://zxmak.narod.ru/) в WINE. Если у вас достаточно мощный процессор, можете запустить в DOSBox классический эмулятор Шалаева. ZX Spectrum Эмулятор: FUSE Сайт: fuse-emulator.sourceforge.net В мире существует чрезвычайно большое количество фанов ZX Spectrum. Несмотря на весьма скромные, я бы даже сказал, чрез-мерно ограниченные технические параметры компьютера, игры с этой платформы по-прежнему вызывают живой интерес, бесконечно скачи-ваются из сети Интернет и покупаются на CD-дисках. Все дело в том, что они, в отличие от современных высокобюджетных коммерческих блокбастеров, имеют совершенно непередаваемую атмосферу. Положа руку на сердце, скажите, неужели в играх с абсолютной свободой действий в пределах 48 Кб, типа Elite, вам на самом деле будет важна графическая составляющая? Заметьте, когда к вашему потрепанному кораблю с трех направлений подбираются сговорившие-ся космические пираты, нещадно поливающие обшивку смертоносны-ми лучами, а защитные экраны сдаются один за другим, в голове бьет-ся только одна мысль: «Ох, дотянуть бы до станции типа Кореолис». Или, например, где вы встретите игру, в которой путешественник во времени (Уинтроп) попав из ХХ века в XXV, не желает возвращаться назад, даже несмотря на то, что в его теле в 20 веке сейчас находится человек из 25 столетия. Ваша задача – в течении 30 минут успеть убе-дить путешественника, что мир будущего не столь уж прекрасен, как видится ему. Да! Когда в арсенале лишь крохотный объем памяти домашнего ком-пьютера, программисты способны на чудеса при создании новых игр. Ну, что же, возможно я вас убедил попробовать пару хитов из звездной копилки ZX Spectrum. А возможно, вас убеждать и не надо было. Так или ина-че, для того, чтобы превратить ваш современный компьютер в медленного неповоротливого монстра нам понадо-биться хороший эмулятор. На эту роль больше всего, на мой взгляд, подходит Free Unix Spectrum Emulator – FUSE. Он предоставляет такой же комфорт работы с воссозданной ретросистемой, как и лучшие представители эмуляторов из мира Windows и способен работать как одна из следующих моделей: Spectrum 16K/48K/128K/+2/+2A/+3/+3e/SE, Timex TC2048/TC2068, Pentagon 128 и Scorpion ZS 256. FUSE поддерживает загрузку запакованных файлов, воспроиз-водит звук через OSS (Open Sound System) и эмулирует основные органы управления: джойстики Kempston, Sinaclair и Cursor. Для сборки FUSE из исходников потребу-ется несколько библиотек: libgcrypt, libpng, libxml2 и zlib, которые, вероятно, уже есть в вашей системе. На этапе настройки (./configure) можно включить поддержку фрей-мбуфера, SDL, SVGAlib или GTK. FUSE легко пользоваться, в чем можно убедиться, взглянув на снимки экрана. Основные настройки расположились на вкладках File, Options, Machine, Media, Help. Обратите внимание, что любому пункту меню можно назначить горячие клавиши, просто нажав их в тот момент, когда курсор находится на интересу-ющем пункте. Вкладка Help содержит картинку с раскладкой клавиатуры ZX Spectrum. Не забывайте, что в этом компьютере набор команд производится не посим-вольно, а нажатием одной или нескольких клавиш. Например, чтобы напечатать слово LOAD достаточно нажать клавишу J. На вкладке File доступна одна из самых используемых опций: Open. Как следует из названия, она позволяет открыть образ игры в эмулиру-емой машине. Здесь же вы сможете сохранить снимок экрана или сде-лать снимок памяти, который позволит вам начать игру в следующий раз с того же места. Во вкладке Options скомпонованы основные настройки – полное раздолье для любителей все подстраивать под себя. Переназначайте клавиши, изменяйте ПЗУ машины, скорость эмулируемого компьютера (разгоните ZX Spectrum!) и многое другое. Во вкладке Machine можете изменить модель. Если вы захотите запустить модели +3 и +3е, то вам понадобиться еще одна специфичес-кая библиотека – lib765, которая доступна по адресу: http://www.seasip. demon.co.uk/Unix/LibDsk/. Общая инструкция по работе с эмулятором может выглядеть так: во вкладке File выберите пункт Open и щелкните на интересующем вас образе (поддерживаются .Z80 – снимки памяти или .TAP – образы аудиокассет). Затем играйте и наслаждайтесь! Alien8 – звезды, космос, роботы – что может быть увлекательнее.56 Linux Format Июль 2007 ЭмуляцияCommodore AMIGA Эмулятор: E-UAE Сайт: www.rcdrummond.net/uae Прототип компьютера Amiga был впервые продемонстрирован на выставке Consumer Electronics Show 4 января 1984 года в Нью-Йорке, в Линкольн-центре. В качестве демонстрации по экрану летал белый шар в красную клетку, с грохотом ударяясь о края экрана («Bouncing Ball»). Мнение присутствующих, после технологического шока, свелось к тому, что наступила новая компьютерная эра. В продажу уникальный компьютер попал в 1985 году и благода-ря фантастической мощи использовался многими исключительно для игр. В его основе лежал центральный процессор Motorola 68000 7 МГц, но это была исключительно быстрая машина, обладающая многозадачной операционной системой AmigaOS с революционной библиотекой Intuition, ориентированной на работу с манипулятором типа «мышь». Секрет этой мощи крылся в уникальных специали-зированных чипах Agnus, Portia и Daphne, использовавшихся для вывода графики, звука, управления портами и экраном. Они поз-волили в 1985 году легко выполнять на несравенно более дешевой Commodore AMIGA ту же работу, что и на компьютерах стоимостью 50 000 долларов. AMIGA стала активно использоваться для созда-ния видео-эффектов в ультрамощных блокбастерах Терминатор 2, Джеймс Бонд, Вавилон 5 и других. Причем в Вавилоне 5, благодаря мощи объединенных компьютеров Amiga, впервые удалось на экране отобразить более 100 космических кораблей – на тот момент совер-шенно невиданное зрелище! А теперь немного сухих технических данных. Commodore AMIGA способна отображать до 4096 цветов (режим HAM – Hold and Modify), демонстрировать живое видео на полный экран, проигрывать многоканальный звук (в формате MOD), выво-дить одновременно на экран окна в разном разрешении и просто убивать наповал многозадачностью, ориентированной на применение в настольных системах. На этом компьютере очень много высоко-классных красивых игр (достаточно назвать Lion Heart, Brian The Lion, Stardust) и уникальных программ (Deluxe Paint, Lightwave 3D, Directory Opus), которые постоянно пытаются воссоздать на современных систе-мах, но пока безрезультатно (пример: замена Directory Opus 4 – файло-вый менеджер Gentoo). Все эти скины для проигрывателей, перетаскивание контента на иконку программы для запуска и многое другое уже давным-давно было на Amiga. Аудио воспроизводилось без участия центрального процессора, видео – аналогично, поэтому пользователи Amiga всегда работали под фоновую музыку. Всего при создании Amiga было реали-зовано более 50 ноу-хау, позже запатентованных. Все модели Amiga можно глобально разделить на два поко-ления машин. Первое – на чипсетах OCS (Original Custom Chip)/ECS (Extended Custom Chip) – это A1000/2000/3000/500/500+/600. Второе – на революционном чипсете AGA (ранее AA), где были сняты ограничения на количество цветов, серьезно увеличена скорость – A4000/A1200/A5000 и т.д. Модели A1000/2000/3000/4000 были профессиональными маши-нами в корпусах настольного типа с возможностью расширения. Модели A500/500+/600/1200 умещались в клавиатуре и предоставля-ли ту же мощь за значительно меньшие деньги. Присутствовали также и возможности расширения, хотя и не в таком объеме, как у профес-сиональных вариантов. Большое распространение на платформе Amiga получили акселера-торы, увеличивающие мощность домашней Amiga в 5, 10 и даже 50 (!) раз. В нашей стране хитом был Blizard 68030 50 МГц благодаря невы-сокой цене и отличному быстродействию. Ввиду высокой сложности платформы, на сегодня существует всего два основных эмулятора Commodore AMIGA: xfellow и UAE. Я же рекомендую E-UAE, основанный на UAE. Он имеет совершенно фантастическую совместимость с легендарной машиной и способен изменять настройки в процессе работы. Эмуляция потребует обра-за ПЗУ Amiga – kickstart. Для игр, созданных для первых чипсетов OCS или ECS, часто достаточно kickstart v1.3, для ECS-основанных игр – kickstart v2.0, а для AGA-игр – kickstart v3.0. Следует отметить, что зачастую ECS и AGA-версии одной игры существенно различают-ся – дабы показать пользователю все прелести AGA-чипсета. Самые первые игры для Amiga – в основном, примитивные пор-ты с ATARI ST не раскрывали возможностей супермашины. А вот с конца 80-х – начала 90-х графика просто поражает: посмотрите на SuperStardust и Kid Chaos. Хочу добавить, что я был счастливым обладателем Commodore AMIGA 600HD (выпуска 1992 года) – чему безмерно рад, так как сей факт внес в мою жизнь громадное количество положительных эмоций. E-UAE обладает великолепным графическим интерфейсом, поэтому настроить его не составит труда. Только обратите внимание: эмулятор стоит на паузе, и для начала его работы надо кнопку паузы отжать. Привожу несколько стандартных конфигураций для настройки популярных машин. Конфигурация 1 (AMIGA 600): Chip Mem: 2 МБ (расширенная на 1 МБ для уменьшения количества подгрузок) Slow Mem: нет Fast Mem: нет Kickstart ROM: Kickstart v.2.0 (версия 37175) CPU Model: 68000 (Accuracy: normal /Speed: Approximate 7 Mhz) Chipset Model: ECS Sprite Collisions: Full Пренебрежение этим пунктом может повысить скорость эмуляции, но в таких играх, как Deluxe Galaga, вы обнаружите, что пули перестали причинять врагам повреждения, а призы не подбираются. Обратите внимание, что включение галочки Immediate Blits может Июль 2007 Linux Format 57 Эмуляция нарушить некоторые эффекты в играх (например, в Elfmania перестают низвергаться водопады). Sound: Stereo (Accurate, 16 bit) В настоящей Amiga звук 8-битный. На более мощных моделях с AGA-чипсетом пользователи стали использовать драйвер AHI, позво-ляющий получить 12-битный звук, но поверьте, и при 8 битах «амиж-ный» стереозвук великолепен и просто завораживает своим каче-ством, приятным тембром и своеобразной «хрипотцой» на высоких частотах. Звук на Amiga – как вино с хорошей выдержкой: пьянит с первого глотка. Управление: выбирайте – Numeric pad или джойстик (если есть). Конфигурация 2 (AMIGA 1200): Chip Mem: 4 МБ (по умолчанию продавалась с 2 МБ на борту, но добавление еще 2 МБ увеличивало скорость A1200 в 2 раза!) Slow Mem: нет Fast Mem: 8 Kickstart ROM: Kickstart v3.0 (A1200) rev 39.106 (512k) CPU Model: 68020 Chipset Model: AGA Sprite Collisions: Full Sound: Stereo (Accurate, 16 bit) Почти все игры на Amiga рассчитаны на использование джойстика (без него на настоящей Amiga играть не получится). Я первое время использовал джойстик от ZX Spectrum, но спустя некоторое время переделал геймпад от SEGA Megadrive. Если вы выбрали Numeric pad, клавишами управления будут: 8 – вверх, 2 – вниз, 4 – влево, 6 – вправо, 5 – огонь. Дополнительными клавишами могут быть: Space (использование бонусов в Brian the Lion), 0 (Ins), Shift (совместно со стрелками влево-вправо – смена оружия) и другие. Общий принцип управления таков: Без нажатой клавиши «огонь» – движение и прыжки. Нажатие клавиши «огонь» и любой другой – новое действие. Могу сказать, что такое управление действительно удобно (на джойсти-ке) – оценить правоту слов можно, поиграв в знаменитую «амижную» драку Body Blows. Качество графики на Amiga изумляет и завораживает. Я использо-вал и использую очень много различных игровых систем, но если и в 2007 году я в тридцатый раз прохожу Stardust или Banshee, то, вероят-но, в этом действительно что-то есть. SUPER NINTENDO Эмулятор: ZSNES Сайт: www.zsnes.com Если бы Фусадзиро Ямаучи {Fusajiro Yamauchi] не играл в карты, не было бы Super Nintendo. Забыл добавить – «в 1889 году». А если уж быть совсем точным – не начни он продавать игральные карты, вырезанные из коры тутового дерева, не основал бы и компанию Nintendo Koppai. Как вы знаете, эволюция сделала из обезьяны человека. Так и компания по продаже карт превратилась в мегамонстра электронных развлечений Nintendo Co. Ltd. Нас же интересует продукция этой ком-пании, а точнее, SNES. Игровая приставка Super Nintendo была задумана как убийца SEGA Megadrive/Genesis. И убийца был создан – правда, довольно странный. SNES поступила в продажу, когда MD существовала уже около трех лет – для приставки весьма солидный возраст. Чем же должна была блеснуть новая система, чтобы не осрамиться перед старичком? Безусловно, 256-цветной графикой и потрясающим звуком. К сожалению, SNES обладала крайне слабым центральным про-цессором – всего 3,58 МГц. Из-за такого досадного ограничения на приставке очень много красивых, задумчивых игр, а вот боевики, где врагов укладывают пачками в вагоны и на экране сверкают десятки взрывов, увы, можно по пальцам пересчитать. Из за чего захочется поиграть под Linux в SNES-овские игры? О-о-о! Один SuperMetroid чего стоит – превосходная научно-фантастическая похлебка с путешествиями на чужие планеты. А ведь есть еще Final Fantasy 5, Chrono Trigger, Flinstones, Final Fight 2 и другие шедевры. Нам здорово повезло: для Linux существует лучший эмулятор этой консоли – ZSNES. ZSNES – открытый эмулятор Super Nintendo Entertainment System, написанный на ассемблере, C и C++. Его создает достойная команда программистов – zsKnight, _Demo_, pagefault, Nach и lheubt. Эмулятор великолепен: он справляется почти со всеми игра-ми для SNES, включая уникальную Star Ocean, и уверенно движется к 100% совместимости. Пока еще не доведена до совершенства эмуляция специальных чипов, встраиваемых в некоторые картриджи, чтобы удивить игроков видеоэффектами и объемной графикой. Но даже такой известный чип, как SuperFX, воспроизведен на 90%. Это означает, что вероятность най-ти «ром» с игрой, который был бы не по зубам ZSNES, крайне мала. Если вы все же жаждете увидеть это своими глазами – в качестве примера приведу Batman returns. Но, разумеется, игры, созданные для использования совместно со спецчипами, более требовательны к ресурсам вашего компьютера. В среднем, необходима машина с процессором частотой от 500 МГц (при использовании X) или 266 МГц (без X), 64 МБ ОЗУ. Также очень жела-тельна 3D-видеокарта. ZSNES может использовать (по вашему желанию) билинейную фильтрацию, позволяя насладиться гладкой (без пикселизации) кар-тинкой и фантастической плавностью. Эмулятор обладает превосходным интуитивно понятным графичес-ким интерфейсом и может работать как в окне, так и в полноэкранном режиме. Из интересных дополнений отмечу возможность наполнить задний план эффектами вроде снега или кругов на воде. Иными словами, несколько тысяч превосходных игр ждут не дож-дутся возможности украсить экран вашей Linux-машины и украсть у вас пару тысяч часов свободного времени.58 Linux Format Июль 2007 ЭмуляцияДля сборки ZSNES из исходных кодов понадобится установить ассемблер nasm. После запуска ZSNES вы увидите окно с надписью, приглашаю-щей нажать клавишу Space. Далее выберите пункт GAME –> LOAD и в открывшемся диалоге выбора файлов выделите «ром» с игрой. Я запустил великолепный платформер The Flinstones. После запуска игры первым делом подстройте эмулятор. Нажмите ESCAPE и выберите меню CONFIG. Здесь нас больше всего интересует пункт VIDEO. Он открывает окно с двумя вкладками – MODES и FILTERS. В MODES можно выбрать разрешение окна и режим (полноэкранный /оконный). В FILTERS для борьбы с пикселями отметьте пункт BILINEAR FILTER – это превосходный вариант получить изображение игры, схо-жее с тем, что можно наблюдать на телевизоре с подключенной насто-ящей SNES. Если вам покажется, что музыкальное сопровождение в играх звучит недостаточно хорошо, это можно легко исправить в меню CONFIG –> SOUND: изменяйте частоту дискретизации [sampling rate] вплоть до 48 000 Гц, добавляйте surround – в общем, делайте, что душа пожелает. Стандартное управление (по умолчанию это курсорные клавиши и Z/X/S/A/D/C) изменяется в меню CONFIG –> INPUT – настройте клавиши «под себя», а лучше подключите геймпад! Дополнительные клавиши, используемые эмулятором: F1 – быстрое меню к основным опциям. F2 – сохранить игру. F3 – выбрать другой слот для сохранения (от 0 до 9). F4 – загрузить ранее сохраненную игру. P – пауза. И вот теперь, после Putty Squad, Rock‘n’Roll Racing, Final Fantasy, Alien 3, Prince of Persia, Tetris Attack… у вас все еще хватает наглости говорить, что под Linux нечем заняться серьезному человеку? Ну что же, тогда держитесь! SONY PLAYSTATION 2 Эмулятор: PCSX2 Сайт: www.pcsx2.net Если вы думали, что под эмуляторами можно играть только в ретро-игры, то, мои дорогие, вы жестоко ошибались. Хотите попробовать игры с SONY Playstation 2 на вашем Linux? Тогда – за дело! На момент написания статьи для нас вышла специальная новейшая версия PCSX2 0.93 c обновленными модулями дополнений (plugins). Пользователи Windows могут только молча завидовать, так как для них пока един-ственный вариант – довольствоваться старой версией. 0.93 – эксклю-зив, выпущенный специально для Linux. PCSX2 – это эмулятор, позволяющий реально играть в Playstation 2-игры на PC уже сегодня. Это – событие. Обратите внимание, с какой помпой в этом году был выпущен для PC-совместимых компьюте-ров порт Resident Evil 4 – и вот игра работает на PCSX2! Как и Final Fantasy X! И Tekken 4! Для нормальной полноскоростной эмуляции компьютера Amiga с 7-MГц процессором требовался Pentium 150 MГц при использовании эмулятора xfellow или 800 MГц с UAE, поэтому, надеюсь, вы понимае-те, какой компьютер нужен для эмуляции 300+ MГц монстра. Пугаться особо не стоит, но очень рекомендуются процессоры с двумя ядрами (например, Pentium D 925 или Core 2 Duo). Также для работы PCSX2 (а точнее, видеомодуля ZeroGS KOSMOS OpenGL 0.96.2) вам потребуется специфическая библиотека libCG.so. Взять готовый RPM-пакет с ней можно на сайте NVIDIA. Эмулятор использует для своей работы систему дополнительных модулей, отвечающих за поддержку различных устройств – вероят-но, это лучший способ совершенствовать эмуляцию консоли. Отсюда вытекает, что если вы не удовлетворены работой какого-либо устрой-ства, то попробуйте другой модуль. Перед началом игры лучше снять образ с игрового диска. Для этого отлично подойдет модуль EFP Iso CDDVD Driver 0.60. Выбрав его, ука-жите в настройках, что хотите снять образ, и наберитесь терпения: это достаточно долгий процесс. Альтернативный вариант: воспользуйтесь стандартным K3b. Кроме того, обратите внимание на имя вашего DVD-устройства (внимание: игры с PS2 поставляются на DVD-дисках) – не исключено, что оно отличается от указанного в настройках. Обычно это /dev/hdc, но его можно точно определить, профильтровав вывод команды dmesg (dmesg | grep hd). Ваша видеокарта должна поддерживать 3D-ускорение (проверьте его наличие: glxinfo | grep direct). И, наконец, любителям Beryl (к коим отношусь и я) рекомендую на время работы эмулятора отключить трехмерный рабочий стол во избе-жание падения производительности. После всего вышесказанного могу только добавить, что проект PCSX2 находится в разработке уже 4 года, и с каждым выпуском количество играбельных шедевров увеличивается. PCSX2 выпускает-ся по лицензии GPL, то есть все факторы для весеннего оптимизма присутствуют. Ну что же, бежим за охапкой дисков от PS2 и устанавливаем в привод! Перед покупкой не мешает ознакомиться со списком совмес-тимости игр на сайте PCSX2.net. А Final Fantasy X или Devil May Cry 3 хватайте, не раздумывая. Если какой-то файл пока не работает – не расстраивайтесь, а наберитесь терпения. Думаю, через год накопится уже внушительная подборка игр, нормально работающих в PCSX2. Совет Длиннющие ролики в RPG-играх можно быстро прокрутить увеличив скорость эмуляции удержанием клавиши “~”. Совет Для корректной работы Final Fantasy X необходимо применить fix нажатием клавиши F9.Июль 2007 Linux Format 59 Эмуляция MS DOS /IBM PC Эмулятор: DOSBox Сайт: dosbox.sourceforge.net Ах, эти прежние деньки. Медленные компьютеры. Comanche Overkill, Flashback, Jill of the Jungle... DOSBox предлагает вернуть их, благодаря отличной эмуляции старых IBM PC. Под ним у меня запустилось больше игр, чем на настоящем 386SX 40МГц, но вам понадобится мощный компьютер. Если на столе анти-квариат в духе Pentium III–500, то можно рассчитывать на приемлемую скорость работы программ, написанных для 286-х машин (Prehistorik 2, Flashback: тоже неплохо). Реально, желательно иметь 2000 МГц. После запуска DOSBox на экране появится знакомый «черный экран» с приглашением z:\> внизу. Это виртуальный диск, созданный самим «досбоксом». Его содер-жимое можно просмотреть, дав команду dir (не мучайте ls). Нам же интересно увидеть свои данные из домашней директории (например, из папки games). Для этого выполните команду: mount c /home/пользователь/games Появится виртуальный диск С:, включающий содержимое games. Перейдем на него: с: Содержимое, как мы уже знаем, можно просмотреть командой dir. Я, к примеру, увидел у себя каталог Gods с игрой Gods и зашел в него командой cd Gods (автодополнение по TAB работает!), а затем запустил исполняемый файл, напечатав: gods.exe. Просто? На самом деле проще было зайти в папку в вашем любимом файло-вом менеджере GNOME/KDE и щелкнуть на исполняемом файле, зара-нее ассоциировав его с DOSBox, но... Что если это CD-версия игры? Если для игры необходим CD-ROM, дайте команду (при условии, что физический привод имеет точку монтирования /media/cdrom): mount d /media/cdrom -t cdrom Не сработает – попробуйте такой вариант: mount d /media/cdrom -t cdrom -usecd 0 Но с DOSBox можно использовать и обычные ISO-образы. Не знаю, насколько это правильный путь, но всегда их снимал командой: cat /dev/hdc >/home/user/disk.iso и проблем не имел. Монтирование ISO в DOSBox также не вызывает труда: imgmount d /home/user/myiso.iso -t iso В эмуляторе используются горячие клавиши: Alt+Enter – переход в полноэкранный режим и обратно; CTRL+F4 – смена подключенных ISO-образов; CTRL+F5 – сделать снимок экрана; CTRL+F6 – старт/стоп записи звука в файл WAV; CTRL+F7 – уменьшить количество пропускаемых кадров; CTRL+F8 – увеличить количество пропускаемых кадров; CTRL+F9 – выход из эмулятора; CTRL+F10 – включение мыши, если она автоматически не подключилась; CTRL+F11 – замедлить эмуляцию; CTRL+F12 – ускорить эмуляцию. Для любителей покопаться в настройках есть файл dosbox.conf. В нем можно изменить многие параметры – в том числе объем памяти и качество звука. В принципе, стоит также включить использование OpenGL для борьбы с пикселизацией и получения гладкой картинки. Надеюсь, после прочтения этого небольшого руководства вы смо-жете играть в любимые DOS’овские игры под Linux. Есть очень много отличных игр, те же Jill of The Jungle или Jazz Jack Rabbit, аналогов которым нет на других системах. Сияй, безумный бриллиант Завершая этот краткий экскурс, я хотел бы сказать, что коснулся лишь верхушки гигантского айсберга под названием «Эмуляция». Заметьте, мы пока даже не произнесли имена таких мегасистем, как SONY Playstation, Nintendo 64, NeoGeo, ATARI Jaguar 64, ATARI ST, X68000, PC98 и даже существовавшей 32-битной приставки виртуальной реаль-ности Virtual Boy, ощутить объемность игр с которой можно и сегодня. Но об этом и многом другом – в следующий раз. А пока, надеюсь, вы прониклись идеей, что эмуляция – это еще одна грань, заставляющая безумно сиять бриллиант GNU/Linux. LXF Аркадные автоматы Эмулятор: MAME Сайт: www.mame.net Если вы соскучились по хорошей стрелялке, где от вас требуется толь-ко давить на курок, а шедевры типа Hunt for Red October или Tyrian дав-но пройдены и пылятся в глубине шкафа – обратите внимание на игры с аркадных автоматов. Эти совершенно потрясающие устройства с невероятной мощью были нацелены на брутальное удержание игрока возле себя путем овладения его разумом через игры. Впрочем, мы это уже видели в фильме «Последний звездный боец», и если после прохождения всех уровней нагрянут инопланетяне – я вас предупреждал. И снова пользователям свободных ОС здорово повезло. В нашем арсенале есть совершенно фантастический эмулятор гигантского количества игровых автоматов – MAME. Его разработкой занимают-ся, как водится, гениальные программисты. Релизы выходят один за другим: добавляются новые игры, улучшается эмуляция и скорость работы трехмерных игр. Можно даже сказать, что MAME – самый потрясающий эмуляционный проект в истории. К сожалению, графического интерфейса MAME не предоставляет, но можно воспользоваться одной из оболочек. Кстати об оболоч-ках: свою совместимость с XMAME заявляют многие, но разработ-ка последнего практически заморожена. Активно развивается порт SDLMAME, его-то и имеет смысл установить к себе в систему. Я собирал версию 0.112 из исходных текстов. Получившийся дво-ичный файл файл назывался mamepm. Чтобы запустить игру, доста-точно набрать: mamepm /путь к игре/игра. Если в системе установлен Beryl, то разумнее задействовать мощь 3D-видеокарты для отображения игр и увеличить размер окна (менять размер окна можно прямо в запущенной игре). Строка ниже запускает игру Armed Formation – ураганную косми-ческую стрелялку: ./mamepm /путь к игре/armedf.zip -video opengl -window -maximize Для игры в полный экран: ./mamepm /путь к игре/armedf.zip -video opengl Количество поддерживаемых МАМЕ игр приближается к пяти тыся-чам, и это реальные шедевры игростроения. Аркадные версии Contra, Final Fight, Mortal Kombat просто обязаны быть пройдены. Думаю, я помог вам найти способ скоротать ближайшие выходные. Полезные ссылки: www.zophar.net старейший эмуляционный сайт. linuxemu.retrofaction. com эмуляционный Linux-сайт. www.mameworld.net MAME-ресурс. www.pbernert.com/– сайт с модулями для PCSX2. developer.nvidia. com/object/cgtoollkit15#downloads библиотека Cg для ZSNES.Июль 2007 Linux Format 61 3D modelling tool Reviews 62 Файлообменник Нет, это не очередной материал в пику RIAA – Энди Ченнел расскажет о легальном обмене файлами с помощью FTP и сетевых сервисов. 66 Макрос OOo Если вы устали смотреть на колонки цифр, Марк Бэйн покажет, как упростить себе жизнь с помощью OOo. Откиньтесь на спинку кресла и наслаждайтесь! В этом выпуске... 70 Сетевая безопасность с Wireshark Почти ничего из того, что вы передаете по сети, не шифруется – так что ваши пароли может подсмотреть кто угодно. Грэм Моррисон покажет, как успеть раньше хакеров. 74 Взламываем SHA1 Метод грубой силы – путь истинных мачо. Пол Хадсон сделает из вас настоящих C#-программистов, черт побери! 78 JavaScript: живописный Web Не умеете программировать, но хотите прославиться на всю Сеть? Дэн Фрост подскажет крутую технологию с минимумом кодирования. 82 Настоящий GNOME Андрей Боровский расскажет о буфере обмена, VFS и других вещах, отличающих игрушечные программы от настоящих. 86 Команды и фабрики Заводы – рабочим, фабрики – классам! Антон Черноусов сделает Адресную книгу вдвое гибче, применив всего два новых паттерна. 90 Программирование для LaTeX Не нравятся стандартные команды LaTeX? Определите свои – Евгений Балдин проведет вас по всему пути – от счетчика до пакета на CTAN. 94 Тренируем электронную подпись Довольно теории! Узнайте, как использовать электронную подпись в стандартных Linux-приложениях: прочтите очередной учебник Андрея Боровского! 98 Путь аниматора История игрушек тесно переплетается с историей Debian, а на что повлияет ваш мультфильм? Петр Семилетов расскажет о монтаже анимации в Cinelerra. 101 OpenVPN за 10 минут Любите делать все из командной строки? Валентин Яценко научит как создавать VPN-соединения и защищать свои данные от злоумышленников. Наши эксперты помогут вам с любым приложением Linux Учебники Совет месяца: Настольные жесты Третья стадия? ЕВГЕНИЙ БАЛДИН Начинал с Агатов. Когда-то даже знал, что такое Робик. В мае-месяце случилось неверо-ятное. Дело даже не в том, что ведомство Германа Грефа в лице его зама Андрея Шаронова раскритикова-ло безумный план закупки программного обеспечения для школ и рекомендовало обратить внимание на открытые програм-мы вообще и на GNU/Linux в частности, а Министерство финансов прислушалось. Работа у Минэкономразвития такая – счи-тать деньги, а Министерства финансов – их не давать. Удивительно, что даже и возра-зить этому никто ничего внятно не смог и, надеюсь, не сможет. Дело отнюдь не в отсутствии лоббистов – этого добра было хоть отбавляй. Но уж больно беспечно эти лоббисты себя вели – по-хозяйски. Само существование свободного программного обеспечения показало, что пресловутой монополии-то и нет. Конечно, везде стоит, как правило, сами знаете что, но никого не могут обязать и дальше сидеть на этой «игле». Альтернатива есть! Однако само позиционирование как альтернативы – это, к сожалению, недо-статочное условие для развития свобод-ного сообщества. Нужны адепты в хоро-шем смысле этого слова. Чтобы появились тысячи, следует для начала «напрячься» для единиц. То есть – опять в школу. Оглянитесь вокруг и, если у вас есть родс-твенники в образовательных учреждениях, помогите им на этом пути. Кстати, родс-твенники среди учителей не обязатель-ны – ученики тоже годятся. И если первых может и не быть, то вторых вполне можно завести. E.M.Baldin@inp.nsk.su Он похлопал Бога Солнца по плечу. – Эй, солнышко! Когда бог обернулся, Ом сломал рог изобилия об его голову. Терри Пратчетт. Мелкие боги. Почти все Советы месяца так или иначе связаны с командной строкой. Все потому, что это универсальный инструмент, включенный во все дистрибутивы Linux, одинаково полезный как для профи, так и для новичков. Это не значит, что мы в LXF проводим свои дни в Bash – как и многие пользователи, мы предпочтем хороший GUI вводу пары-тройки команд. Просто Советы для графи-ческих инструментов писать сложнее – существует мно-жество способов решения одной и той же задачи, и каждый предпочитает что-то свое. Но если и есть какая-то одна функция какой-то одной среды, которую неза-служенно забывают, то это панель Действия ввода в Центре Управления KDE. Она не бросается в глаза и вы, вероятно, никогда на ней не останавливались. Однако, десять минут, потраченные на знакомство с предлагае-мыми опциями, могут изменить ваш рабочий стол. Первое, что можно сделать с помощью Действий ввода – это назначить соответствие между жестами мышью и клавиатурными комбинациями. Представьте: легкий взмах курсором – и вы перемещаетесь между просмотренными web-страницами. А поскольку Konqueror – это не только браузер, но и файловый менеджер, вы можете применить данный подход и к локальной файловой системе. Чтобы воплотить вышесказанное в жизнь, откройте панель Действия ввода – она находится в категории Региональные настройки Центра управления KDE. Выберите из списка действий Росчерки Konqueror и убе-дитесь, что флажок Выключено не установлен. Затем укажите требуемое действие (Вперед/Назад – хороший кандидат для первой попытки) и перейдите на вкладку Росчерки. Здесь необходимо изобразить мышью фигу-ру, соответствующую действию, при этом правую кнопку нужно держать зажатой. По нашему мнение прочерк слева направо хорошо подходит для функции Вперед, а справа налево – для Назад. Повторите каждый жест три раза, и постарайтесь, чтобы вышло похоже. Наконец, нажмите Применить и наслаждайтесь!62 Linux Format Июль 2007 Учебник Первые шаги Часть 1: Совместное использование по FTP Что вам нужно? Файлы. Когда они вам нужны? Сейчас! Энди Чeннел покажет вам, как добраться до них из любого места... Первые шаги Советы для тех, кто только начинает знакомиться с Linux Месяц назад Мы осветили темные углы и секреты файловой системы Linux. Как и многие системы передачи информации, FTP основан на техно-логии клиент-сервер. Это означает, что в любой транзакции участвуют два элемента: сервер (приложение, запущенное на удаленное машине) и клиент (приложение, запущенное на локальном компьютере). Мы соединяем последний с первым, чтобы посылать и принимать дан-ные. Поскольку более вероятно, что мы будет больше времени тра-тить на доступ к файлам, чем на предоставление доступа, то сначала рассмотрим клиент. При помощи этого ПО вы можете подключаться к удаленному серверу и работать с файлами так (в соответствии с пра-вами доступа к серверу), как будто они находятся у вас на локальной машине. Для Linux имеется множество клиентов, как графических, так и для командной строки. Мы, неизбежно, заинтересованы в графичес-ких клиентах, наиболее яркие примеры которых – GFTP, IglooFTP, KFTPGrabber и Konqueror. На нашем уроке я использую Ubuntu, но эти приложения доступны для многих популярных дистрибутивов. Вы вполне можете установить подходящий клиент при помощи вашего обычного менеджера пакетов. Именно так я выбрал GFTP (просто пото-му, что это наиболее популярный клиент для Ubuntu), но процесс не зависит от того, какой пакет вы решили установить. В Ubuntu выполните Приложения > Добавить/Удалить и просмотри-те страницу Интернет в поисках соответствующих программ. Выберите их, щелкнув на флажке, рядом с ними, щелкните на кнопках Применить и OK и подождите, пока приложение загрузится и установится. По завершении вы сможете найти приложение в меню Приложения > Интернет. Запустите его. Большинство FTP-клиентов в главном окне имеют две панели, плюс стандартную панель инструментов. В GFTP левая панель отображает локальную файловую систему, а правая – удаленную файловую систе-В вашем дистрибутиве должно быть много FTP-клиентов.. Вы, поди, думаете: да ладно, не расскажет же он нам, как бес-платно загрузить полные версии Spiritualized или Шрэк Третий? И вы правы. Фраза «совместное использование файлов» имеет столь же безупречную репутацию, как Тони Сопрано, но мы говорим не о совместном использовании файлов в духе Kazaa или Gnutella, а о том, что называется «личное удаленное использование файлов». То есть получение доступа к вашим собственным файлам из любой точ-ки мира. Урок состоит из двух частей. В первой рассматривается то, что называется File Transfer Protocol (FTP), как со стороны сервера, так и клиента, а во второй, более короткой, мы рассмотрим кое-какие методы хранения файлов и документов в сети, чтобы не настраивать каждый раз ПК, а то и держать его дома постоянно включенным, для возможности доступа к вашей информации в дороге. Оба этих подхода к личному удаленному использованию файлов полезны. Один хорош, когда у вас много файлов, которые должны быть постоянно под рукой, а другой выгоден, когда ваши нужды не требуют много места – хотя, используя данные методы, вы можете хранить в сети до 1 ГБ – но вы предпочитаете упрощать себе жизнь. Оба подхода имеют свои плюсы и минусы, если вы хотите использовать свои файлы совместно с друзья-ми и коллегами (коль скоро у вас есть права на раздачу этих файлов), и я упомяну их по ходу рассказа. Система: Файлы Наш эксперт Энди Ченнел Энди делает свои первые шаги в Linux уже шесть лет, а технологиями интересуется еще со времен Dragon 32Июль 2007 Linux Format 63 Первые шаги Учебник Исследуем интерфейс GFTP На DVD GFTP 2.0.18 в общем доступе 1 Параметры соединения Здесь вы настраиваете сервер, к которому подключаетесь. В данном примере я соединяюсь с FTP-сайтом Gimp, чтобы установить послед-нюю версию. Здесь размещены (слева направо): кнопка Соединение/Отключение, адрес сервера, номер порта (обычно здесь стоит 21), имя пользователя и пароль, а также выпадающий список для определения протокола соединения. Наконец, у правого края находится кнопка для полной остановки любой активности. 2 Локальная файловая система Это работает так же, как и файл-менеджер вроде Nautilus или Konqueror. Вы можете, если хотите, копировать и вставлять файлы внутри этой системы обычным способом. 3 Кнопки Разместить [Push] и Скачать [Pull] Если протащить и бросить слишком трудно, то выделите файл, кото-рый хотите передать в локальную или удаленную файловую систему, а затем нажмите соответствующую кнопку для его размещения на серве-ре или загрузки в вашу файловую систему. 4 Удаленная файловая система Это файловая система сервера, к которому вы подключились. Хотя она выглядит точно так же, как и локальная, ваши возможности изменять что-либо ограничены правами, которые определяет администратор. Так, например, для FTP-сервера Gimp мы свободно можем скачивать файлы с сервера, но не можем что-либо разместить на нем и не можем изменять саму структуру файловой системы. 5 Панель активности В основном, это журнал всех действий, выполняемых клиентом. Это то место, куда следует посмотреть в первую очередь при возникновении проблем, и он также полезен, если вы хотите точно знать, что вы, соб-ственно, делаете. 1 2 3 4 5 му (если вы соединены с удаленным сервером). В этих панелях можно перемещаться так же, как и в обычном менеджере файлов. Например, дважды щелкните на каталоге, чтобы просмотреть его содержимое; чтобы вернуться назад к дереву, дважды щелкните на двух точках (..) в верхней части окна. Хотя эти окна отображают разные вещи, между ними можно перетаскивать файлы: так, в верхней врезке (на которой показан GFTP, соединенный с FTP-сервером Gimp), я могу перенести последнюю версию Gimp (или любой другой файл) напрямую в любой каталог моей локальной файловой системы точно так же, как с одного диска на другой. На самом деле, именно это я и делаю, только вмес-то путешествия по шлейфам в моем ПК, файлы перемещаются в сети Интернет. FTP-клиент во многом схож с web-браузером. Вы вводите адреса и просматриваете документы, только они не отформатированы для отоб-ражения, как это сделано на web-страницах. GFTP даже имеет функцию закладок, которые вы можете использовать, чтобы вернуться к часто посещаемым сайтам (например, на ваше персональное место для раз-деляемых файлов), не вводя каждый раз все детали. Размещение файлов Установив и настроив клиент, разберем другую сторону, то есть сервер. Поскольку Linux заслужил свою репутацию на обслуживании файлов, то вы можете ожидать большого числа доступных FTP-серверов, и будете правы. Однако вместо выбора одного из стандартных пакетов типа PureFTP или GProFTPd я собираюсь обратиться к небольшому приложению под названием CrossFTP (www.crossftp.com). В отличие от стандартных FTP-серверов в Linux, это приложение изначально разра-батывалось как графическое, поэтому имеет очень приятную оболочку, используемую для настройки и управления. К тому же CrossFTP явля-ется полностью кроссплатформенным, поскольку разрабатывается на Java и выпускается по открытой лицензии Apache. CrossFTP устанавливается прямо с web-сайта проекта, и, если ему позволить, размещает ярлык на рабочем столе. Дважды щелкните на нем для запуска графического интерфейса. После этого ныряйте в приложение и жмите кнопку Запустить сервер [Start Server] – и если у вас Windows, он, вероятно, заработает. Однако Linux больше заботит-ся о безопасности и резервирует порты с малыми номерами (то есть те, через которые к вам могут подключиться другие компьютеры) для пользователя root [это не совсем так: подключение возможно к любому порту, но только приложениям, работающим от имени root, дозволено использовать порты с номерами меньше 1024 – а именно в этот диа-пазон попадают стандартные порты большинства популярных служб, в частности, FTP, – прим. ред. ]. Как я уже говорил, FTP обычно соеди-няется по порту 21, и вы должны быть суперпользователем, чтобы запустить сервер с этими настройками. Дабы не заниматься ерундой, намного проще выбрать порт соединения с большим номером, напри-мер, 8021. Чтобы сделать это, нажмите кнопку Настройка [Configure] в главном окне и введите ‘8021’ в строке Порт [Port]. Для закрытия окна настроек нажмите OK, а затем попытайтесь вновь нажать Запустить сервер [Start Server]. Получилось!64 Linux Format Июль 2007 Учебник Первые шаги У CrossFTP простой интерфейс, и он работает в любой ОС, способной выполнять Java. GFTP (клиент) успешно подсоединился к CrossFTP (сервер), и общая папка стала доступной. Неважно, аппаратный у вас брандмауэр или программный – вы не сможете подключиться, пока не настроите все правильно. Если вы храните документы в сети или открыли доступ к ним на вашем ПК из сети, чрезвычайно важно иметь сильный пароль в виде комбинации букв и цифр, желательно не составляющей словарное слово. Можете также предусмотреть и шифрование. Скорая помощь решен всем (Anyone), то есть разрешить подключение по этому пор-ту, минуя брандмауэр. Схожую процедуру необходимо проделать и с аппаратным брандмауэром, но для этого следует обратиться к прила-гаемой документации. Например, в моем маршрутизаторе Linksys нуж-но указать номер порта, намеченного к открытию, а затем определить компьютер в сети (по IP-адресу), к которому следует перенаправлять эти подключения. Другая область, на подробное обсуждение которой в данной статье нет места – это динамический DNS. Большинство интернет-провайде-ров предоставляют IP-адрес – это уникальный адрес для вашего ком-пьютера – на основе общего пользования, так что адрес 82.167.55.03 сегодня у вас, а завтра перейдет к другим клиентам. Это изрядно затрудняет подключение к вашему частному серверу. Выходов здесь два. Первый – запросить у провайдера статический IP-адрес; но про-вайдер может за это дополнительно подоить ваш кошелек. Второй, более дешевый способ – использовать динамический DNS, подписав-шись на службу динамической пересылки IP-адреса, типа No IP (www. noip.com). Вам предоставят приложение, которое будет запускаться при каждой загрузке, записывать текущий IP-адрес и отсылать его серверу имен. Вторая часть этой службы предоставляет вам доменное имя (что-то типа bob-smith.hopto.org), связанное с информацией, присылаемой на сервер первой программной частью. Теперь вы сможете исполь-зовать ваш FTP-клиент для входа на ftp.bob-smith.hopto.org, а служба автоматически перенаправит вас к верному IP-адресу, и вы доберетесь до своих файлов. Следующий этап – добавление одного или нескольких пользова-телей и назначение им паролей и домашних каталогов. FTP-серверы обычно запирают пользователей «в песочнице», чтобы они не могли получить доступ к внешним каталогам, в частности, настройкам серве-ра. К тому же, добавляя имена пользователей и пароли, мы повышаем шансы защитить наши файлы от чересчур любопытных. В левой части окна CrossFTP выберите вкладку Пользователи [Users]. Создадим одного пользователя на базе основного пользовате-ля этой локальной машины, а внутри его каталога /home – каталог спе-циально для разделяемых файлов. Для начала запустите ваш обычный менеджер файлов, перейдите в /home/username и создайте каталог с именем вроде /share. Теперь вернитесь в CrossFTP и введите имя поль-зователя и пароль, да посильнее, поскольку каталог может быть досту-пен из Интернета. Прямо под строкой Корневой каталог [Root Directory] находится кнопка Обзор [Browse]. Щелкните на ней, а затем через окно выбора файлов перейдите к желаемому каталогу. Нажмите кноп-ку Разрешить [Enabled], чтобы сделать его активным, затем, если вы собираетесь изменять файлы в каталоге удаленно, установите опцию Права на запись [Write Permission]. Можно, конечно, оставить эту опцию не установленной, если вы собираетесь при удаленном досту-пе только читать файлы или создаете открытый каталог для работы коллег или широких масс. Введя все что полагается, нажмите кнопку Сохранить [Save], и на этом все. Вы готовы к подключению. Собрать все вместе Для тестирования, создадим локальное соединение. Во-первых, возь-мите пару файлов и поместите их в ваш каталог /share. Теперь запус-тите установленный и настроенный ранее FTP-клиент (GFTP). Добавьте следующие параметры: Host: localhost, Port: 8021, User: имя пользова-теля в соответствии с произведенными настройками, Password: пароль. Теперь нажмите кнопку Соединение [Connect], и – с Богом... Слева вы должны увидеть всю свою файловую систему, а справа – содержимое каталога /share. Хотя мы и подключились локально, процесс удаленного подключе-ния практически таков же, за исключением нескольких принципиаль-ных отличий и чуть большей сложности. Эти сложности обусловлены двумя вещами: безопасностью и принципом работы Интернета. Во-первых, следует настроить ваш брандмауэр, разрешив подключение к порту 8021. Как это сделать, зависит от того, программный ли у вас брандмауэр или он является частью маршрутизатора. В Firestarter, популярном брандмауэре для Linux, вам необходимо произвести изме-нения внутренней политики, путем Добавления (Add) Новой службы (New service) и указания, что это FTP, номер порта 8021 и доступ раз-Июль 2007 Linux Format 65 Первые шаги Учебник Через месяц Научимся создавать классные меню для ваших DVD. Хочу предупредить... Сетевые хранилища – это здорово, но всегда существует шанс, что компа-ния, поддерживающая сервис, прогорит или откажет в бесплатных услугах. Вот несколько правил, которые стоит соблюдать, чтобы не остаться у раз-битого корыта. 1 Выберите авторитетный сервис. Например, Google или Yahoo! весьма стабильны. Если вы должны работать с новичком, посетите форум компа-нии и посмотрите отзывы других. 2 Рассматривайте это как кратковременное хранилище. Размещайте доку-менты, которые могут понадобиться вам для конкретного задания, и регу-лярно выполняйте оффлайн-резервирование. 3 Постарайтесь объединить оба описанных метода. Используйте защищен-ные разделы платного web-хостинга для хранения данных в сети и работай-те с ними при помощи FTP-клиента. 4 Подумайте о платных службах. Иногда вы действительно получаете что-Ваш ящик [box] имеет несколько функций стандартного файл-то очень нужное за свои деньги. менеджера – у всех бывают скрытые таланты. Часть 2: Использование сетевых сервисов Для быстрой загрузки ваших файлов весьма полезно держать Java-апплеты в активном состоянии. Если вы часто обращаетесь к файлам с вашего домашнего ПК, то FTP – хорошее решение; но если вам изредка необходим доступ к нескольким документам, то они могут быть скормлены какому-нибудь сетевому хранилищу, и тогда будут доступны с любого ПК. Сетевые хранилища существуют уже десятилетия, но лишь недавно хранение и трафик настолько подешевели, что это стало реальным вариантом. Более того, Web 2.0 как таковой означает, что вы сможете получить доступ к вашим документам и даже редактировать их, не покидая уютного Firefox. Нечего и говорить, что такой тип сервиса предполагает наличие широ-кополосного доступа в Интернет – передача файлов при помощи старого доброго dial-up, похоже, будет весьма утомительной. Важно также не забывать о безопасности, то есть обеспечить разумные имя пользователя и пароль и не размещать важную информацию вроде финансовых доку-ментов или компрометирующих изображений (вас и секретарши) в Сети. Я выбрал для использования www.box.net по ряду причин: у него есть несколько интересных функций кроме обычного хранения; похоже, он переживет следующий крах дот-комов; и он бесплатен (о других опциях см. наше Сравнение на стр. 18). Первым делом посетите сайт и заре-гистрируйтесь. Сервис предлагает 1-ГБ хранилище бесплатно, с ограниче-нием на размер индивидуальных файлов в 10 МБ и общий месячный тра-фик в 10 ГБ. Вы платите за расширение хранилища и снятие ограничений на трафик, за возможность открывать дочерние учетные записи и отмену ограничения скорости; однако бесплатный сервис вполне сгодится боль-шинству пользователей – включая нас. После регистрации и входа, вы будете перенаправлены к «ящику» [‘box’] с именем MyFiles, в котором вам и следует хранить свои файлы. Очевидно. Внутри этого пространства вы можете выполнять обычные для файл-менеджера операции: создание и удаление каталогов и файлов, их переименование, перемещение и поиск. Давайте добавим несколько файлов. Имеется несколько способов сделать это. Первый и простейший – щелкнуть на ссылке Upload New Files [Выгрузить новые файлы], что предоставит вам на выбор два варианта. Первый – щелкнуть на кнопке Add [Добавить], это приведет к выводу стандартного окна выбора файла. Вы можете пометить несколько фай-лов подряд (то есть стоящих в списке один под другим), щелкнув на пер-вом файле, или выбрать разрозненные файлы, используя клавишу Ctrl и мышь, и затем вновь щелкнуть на кнопке Выбрать [Select] для загрузки их в ваш «ящик». Более интересная опция – выбор Drag-n-Drop в диало-говом окне. При этом запускается небольшой Java-апплет, который вы можете сохранить в активном состоянии на вашем рабочем столе, что позволит вам просто перекидывать файлы прямо в его окно. Нажмите кнопку Добавить [Add], и они будут загружены автоматически. Оба этих способа загружают файлы в каталог, для которого они были применены. Есть еще и третий способ, который хорош, если вы в дороге: отошли-те файл по почте на адрес upload@box.net из-под вашей учетной записи, и он будет добавлен в папку Upload From Email [Выгружено по e-mail]. Позднее, при следующем входе, вы сможете переместить его в соответ-ствующее место. Сервис Box.net оснащен несколькими весьма интересными опциями совместного использования файлов зарегистрированными пользовате-лями и случайными посетителями, и начал вводить полезные функции редактирования, которые позволяют, например, открыть текстовый доку-мент в текстовом online-процессоре Zoho Writer и затем сохранить его в вашем ящике. Какой же метод лучше: FTP или сеть? Полностью настроенный FTP-сервер не только обеспечивает больший контроль над вашими данными с точки зрения безопасности, но также заставляет лучше понять, как взаи-модействуют ваша ОС и окружающий мир. Сетевые хранилища обеспечи-вают быстрый результат и, возможно, за ними будущее, когда вся «теку-щая работа» переберется в сетевые репозитории. Независимо от вашего конечного выбора – а может, вы выберете ком-бинированный вариант – вы получите приятное ощущение того, что ваши важные документы находятся на расстоянии одного щелчка. LXF66 Linux Format Июль 2007 Учебник Автоматизируем Openoffice.org Calc: Макрос для Автоматизируем Openoffice.org Пишем полезные макросы для таблиц Перелопатили все биржевые котировки, только чтоб убедиться: BMW вам уже не купить? Марк Бэйн упростит вам жизнь... Взглянув на экран котировок, вы увидите ссылку Скачать Данные [Download Data]. По ней мы добудем URL самих данных: http://download. finance.yahoo.com/d/quotes.csv?s=MSF.L&f=sl1d1t1c1ohgv&e=.csv. А зачем нам URL? Затем, что теперь можно в любой момент набрать его в браузере. Времени тут экономится немного, но главное – начать. На следующем шаге мы сэкономим гораздо больше времени. Если вы нажмете на Скачать Данные или напечатаете URL, Calc загрузит CVS-файл в мастер импорта. С его помощью вы можете указать раз-делители данных в файле OpenOffice.org (в нашем случае это, очевид-но, будут запятые), а затем OOo поместит каждое поле в свой столбец. Пока ничего нового – вы, возможно, проделывали такое уже сотни раз. Но вместо ручного ввода лучше написать макрос. Первый макрос Вы уже поняли, что можно получить котировки акций, написав сим-вол, представляющий фирму, как часть URL в вашем браузере, а затем загрузить их как CSV-файл в OOo Calc через мастер импорта. Теперь, прежде чем писать макрос для импорта, проанализируем импортируе-мые данные. Заметьте, что поля, которые скачиваются, определяются параметром ‘f’ в URL. Поэкспериментировав с ними, вы поймете, как работает каждое из них, но сейчас нам нужны только три: ‘s’, название фирмы, ‘l1’, последняя цена продажи, и ‘d1’, последняя дата сделки. Таким образом, наш URL превращается в http://download.finance.yahoo. com/d/quotes.csv?s=MSF.L&f=sl1d1&e=.csv, его мы и будем использо-вать в макросе. ОК, пора писать макрос. Откройте OpenOffice.org (неважно, какое приложение – сгодится Calc или Writer), затем нажмите Tool > Macros > Organize Macros > OpenOffice.org Basic. Здесь есть список языков на выбор (Basic, Python, BeanShell или JavaScript), но нам сейчас нужен Basic. Появится диалоговое окно, в нем надо нажать на кноп-ку Organizer. Откроется другой диалог, со вкладкой Module; выберите пункт Standard. Вы, небось, уже недоумеваете: да зачем вообще? – а дело-то простое. Standard – библиотека; в библиотеках хранятся моду-ли; в модулях хранятся макросы. Дошло? Тогда жмите на New, чтобы создать свой собственный модуль в библиотеке Standard. Нажав на New, вы увидите, что OOo предложит имя вашему моду-лю: ‘Module1’. Не используйте его. Довольно нудно работать с модуля-ми, названными Module1, Module2, Module3, и так до бесконечности. Лучше дать модулю значимое имя – например, свой я назвал ‘lxf94’ (угадайте, почему). В новом модуле нажмите Edit, и OOo откроет экран редактирования Basic – именно тут мы и создадим макрос. Тут вы обнаружите, что OpenOffice.org уже создал для вас макрос Надеюсь, ваши акции поживают лучше, чем мои – если нет, вам остается только ронять слезы в пиво. Но не падайте духом! Здесь в Linux Format мы, может, и не улучшим ваши навыки по прогнозированию котировок, зато вы с ходу будете видеть, насколь-ко плохи ваши дела. Поможет, конечно же, OpenOffice.org. На нашем уроке мы сперва рассмотрим, как загрузить финансовую статистику с сайта прямо в таблицу Calc; затем – как по этим данным построить график; а в завер-шение научимся все это делать автоматически. Фактически, вы сумеете это делать, даже не открывая OOo (кроме как для просмотра результа-тов). Вообще-то, говоря, что вам не придется открывать OpenOffice.org, я имею в виду, что нужно будет написать пару макросов – но затем вы и вправду сможете обрабатывать данные без открытия OOo. В любом случае, перво-наперво найдем финансовую статистику. У вас могут быть свои источники – ну, а мы воспользуемся финансовым порталом Yahoo Finance. Если вам безразличны финансовые сводки, не спешите захлопнуть страницу: навыки, полученные здесь, применимы и к другим источникам данных. Однако для целей нашего урока, алч-ность – это хорошо! Получаем данные Вы найдете Yahoo Finance по адресу http://finance.yahoo.com, им довольно легко пользоваться – там есть окошко, содержащее слова Enter Symbol(s) [Введите Символ(ы)] и кнопка с названием Get Quotes [Получить котировки]. Все, что вам надо сделать, это ввести символ компании, в которой вы заинтересованы; Yahoo Finance предоставляет ссылку, которая даст вам этот символ. Например, символ Microsoft на Лондонской фондовой бирже – MSFL. Как только вы введете этот сим-вол и нажмете Получить Котировки, вы увидите самые последние дан-ные о фирме. А сейчас начнется самое интересное: скачаем их! Скачайте с Yahoo Finance в таблицу OpenOffice.org котировки акций в виде CSV-файла. Марк Бэйн Свою первую программу Марк написал еще для ZX81. Он много лет работает с Unix и Oracle, а также читает лекции и пишет книги. Наш экспертИюль 2007 Linux Format 67 Автоматизируем Openoffice.org Учебник Код примеров статьи На DVD чтения данных На этом уроке мы использовали текущие котировки акций, но ничто не мешает исследовать исторические данные для каждой фирмы. Скорая помощь с именем Main. Предупреждаю: не путайте его с Main, знакомым вам по другим языкам программирования. Здесь это просто пустой макрос, чтобы OpenOffice.org было с чем работать, когда вы нажмете кнопку запуска (на ней изображены угол страницы и стрелка, указывающая вниз). На самом деле OOo запустит первый же макрос, который найдет в модуле. Например, если поместить Main1 выше Main, то он и будет запущен. Вооруженные этими знаниями, мы готовы писать макрос (помести-те этот код после процедуры Main): Function open_csv_file (url as String) as Object Dim oProperty(0) as New com.sun.star.beans.PropertyValue oProperty(0).Name = “FilterOptions” oProperty(0).Value = “44” open_csv_file = starDeskTop.loadComponentFromUrl(url, “_ blank”, 0, oProperty()) End Sub Созданная функция загружает любой CSV-файл без всякого масте-ра импорта, используя свойство FilterOptions при установке его значе-ния в 44. Почему 44? Потому что 44 – это код ASCII для… верно, для запятой. А зачем здесь функция? Затем, что open_csv_file создает объ-ект – сам документ – а нам потребуется к нему доступ из кода. Если вы теперь попробуете запустить код, то ничего не произойдет – потому что Main пока ничего не содержит. Заставим его поработать: Sub Main Dim oDoc as Object oDoc = open_csv_file _ (“http://download.finance.yahoo.com/d/quotes. csv?s=MSF.L&f=sd1l1&e=.csv”) End Sub Теперь при нажатии на кнопку запуска произойдет следующее: после пары секунд ожидания (в зависимости от скорости соедине-ния) появится файл Calc, содержащий последние цены на акции для Microsoft на Лондонской фондовой бирже. Уже неплохо, но вы явно думаете «Не проделывать же это для каждой из моих акций – хорошо бы отобразить сразу весь мой портфель.» Отлично, этим и займемся. Макрос для групповухи Мы уже видели, как легко автоматизировать загрузку данных по одной фирме. Чтобы сделать тоже самое для их группы, надо просто раз-житься новым символом и добавить его в URL. Например, если нас интересует Novell, добавим символ NOVL; наш URL станет таким: http://download.finance.yahoo.com/d/quotes.csv?s=MSF.L&s=NOVL&f=sd1l1&e=. csv. Ради этой новой информации модифицируем наш код. Начнем с добавки новой процедуры – она упростит нам жизнь: Sub download_stock_price(companySymbols) Dim oDoc as Object Dim cSymbols as String, oUrl as String cSymbols = join(companySymbols, “&s=”) oUrl = “http://download.finance.yahoo.com/d/quotes.csv?s=” _ & cSymbols & “&f=sl1d1&e=.csv” oDoc = open_csv_file(oUrl) End Sub Вы заметите, что новый макрос принимает companySymbols как параметр – это будет массив, содержащий список кодов фирм. Процедура соединяет все символы в единую строку (с &s= между каждым символом), а затем создает правильный URL для заготовлен-ной нами функции open_csv_file. После создания нового макроса изме-ним процедуру Main, чтобы она принимала массив фирм: Sub Main download_stock_price(array(“MSF.L”,”NOVL”)) End Sub Когда на этот раз вы нажмете кнопку запуска, то увидите файл Calc, содержащий детали всех фирм, указанных в списке – и, конечно, можете добавить столько символов фирм, сколько душе угодно. Сохраняем файл Следующий этап автоматизации – сохранение файла на жесткий диск. Чтобы это сделать, опять напишем макрос: Sub save_file_as_ods(doc as Object, directory as String, prefix as String) Dim oUrl as String oUrl = convertToUrl(directory & “/” & prefix & “.ods”) doc.storeAsUrl(oUrl,Array()) End Sub Здесь следует обратить внимание на пару моментов: во-первых, на функцию convertToUrl. При открытии и закрытии файлов макросу тре-буется имя файла в определенном формате – и convertToUrl делает для вас это преобразование. Во-вторых, вы увидите, что наравне с ка-Без макроса вам придется проходить через мастер импорта Calc. Используем crontab Если вы новичок в crontab, то поля и звездочки могут вас озадачить. Однако порядок полей довольно прост: 1 Минуты (0–59) 2 Часы (0–23) 3 Число (1–31) 4 Месяц (1–12) 5 День недели (0–6, где 0 означает воскресенье) 6 Запускаемая команда Звездочка означает «запускать в любом случае» – так, * в третьем поле означает «запускать каждый день месяца». Вы также можете использовать комбинации чисел в полях: 1,3,10–20 (снова в 3-м поле) будет означать «запускать по первым и третьим числам и каждый день с 10-го по 20-е».68 Linux Format Июль 2007 Учебник Автоматизируем Openoffice.org талогом и префиксом файла (то есть именем файла без расширения ‘.ods’) процедуре также передается doc. Это имя объекта, созданного с помощью функции open_csv_file. Далее вам надо немного изменить функцию download_stock_price. Добавьте следующую строку в конец процедуры: save_file_as_ods(oDoc, “/tmp”, “test_lxf94”) На этот раз, запустив Main, вы увидите, что ваш документ переиме-нован в test_lxf94, а если вы заглянете в каталог /tmp, то найдете файл test_lxf94.ods, который (если его открыть) покажет свежескачанные данные. В командную строку! В начале этой статьи я говорил, что все это можно делать, не открывая OpenOffice.org (кроме как для просмотра результата). Давайте выясним, как этого достичь. Узнав, как автоматически открывать и сохранять наш файл, вы сумеете это сделать и без отображения результатов. Начнем с добавления строки кода в конец макроса download_stock_price: oDoc.close(true) Она всего-навсего закрывает документ. Если вы запустите Main, то увидите, что документ откроется и сразу же закроется. Зачем мы нача-ли с этого? Да просто чтобы удостовериться, что у нас не останется никаких сессий в фоновом режиме, когда мы приступим к изменениям, которые спрячут наш документ. Вы уже знаете, как открыть CSV-документ, не используя мастер импорта, установкой соответствующих свойств, и, по-моему, нетрудно сообразить, что открытие документа в невидимом режиме происходит точно так же. Итак, назад к функции open_csv_file. Сначала переопре-делим свойства, намеченные для использования: Dim oProperty(1) as New com.sun.star.beans.PropertyValue Затем укажем детали для нового свойства: oProperty(1).Name = “Hidden” oProperty(1).Value = True Проделав изменения в коде, нажмите на кнопку запуска... и опять ничего. Не пугайтесь. Проверьте: bainm@aeneas:~> ls -l /tmp/test_lxf94.ods -rw-r--r--1 bainm users 6455 2007-04-23 09:00 /tmp/test_lxf94.ods Теперь запустите макрос и снова проверьте. Вы увидите, что файл действительно изменился: bainm@aeneas:~> ls -l /tmp/test_lxf94.ods -rw-r--r--1 bainm users 6454 2007-04-23 09:01 /tmp/test_lxf94.ods Это значит, что вы можете запускать процессы незримо, но (в настоящий момент) надо держать OpenOffice.org открытым, чтобы запускать макрос. А надо ли? Нет! Закройте все экземпляры OOo и наберите в командной строке: scalc -headless “macro:///Standard.lxf94.Main” Абсолютно ничего не произойдет – вы даже не увидите экрана OpenOffice.org. Однако если вы запустите ls -l и посмотрите на файл, то заметите перемены. Для завершения процедуры автоматизации, создадим задачу Cron: тогда уже не придется беспокоиться о запуске макроса. Например, пос-тавим задание Cron на запуск каждый день в 8:45, и в 9 утра к вашему приходу уже будет новый файл. Чтобы это сделать, откройте команд-ную строку. Наберите crontab -e, а затем: 45 8 * * * scalc -headless “macro:///Standard.lxf94.Main” Далее нажмите Control-D, чтобы сохранить файл Cron. И все – загрузка ваших котировок полностью автоматизирована. Представляем графики Каждый знает, что «лучше один раз увидеть»… это же касается и гра-фиков. Не знаю, как насчет вас, но я понимаю графики лучше, чем голые цифры – а у нас пока что есть только цифры. Давайте преоб-разуем данные. Вы ведь умеете создавать график в OpenOffice.org, правда? Просто выбираете ячейки, которые хотите использовать в качестве диапазона, нажимаете на Insert Chart и следуете инструкциям – нет ничего проще. Но разве это не утомительно? Я думаю, вы согласитесь, что это еще один кандидат на автоматизацию. Очевидно, не помешает создать про-цедуру для рисования графика, но прежде чем это сделать, немного изменим исходный код. Для начала, мы не будем закрывать документ в процедуре download_stock_price: REM oDoc.close(true) Затем перестанем прятать документ в open_csv_file: oProperty(1).Name = “Hidden” oProperty(1).Value = False Это значит, что мы можем разрабатывать новый код, не открывая сохраненный файл, чтобы увидеть эффект. Но тогда по окончании не забудьте включить функции закрытия документа и скрытия отображе-ния. Если вас это устраивает, создайте новую процедуру: Sub insert_chart (doc as Object, cTitle as String) End Sub а затем вставьте новую строку в download_stock_price: insert_chart (oDoc, “My Shares”) Вам надо поместить ее до выражения save_file_as_ods. Теперь подумаем о том, какой код добавить в новую процедуру. Если вам случалось вручную создавать график по скачанным дан-ным, то вы уже поняли, что есть проблема: ключ не имеет говорящего имени (он просто пишет Столбец B). Это, конечно, потому, что ключ появляется из строки-шапки – но в нашем случае это тоже данные. Чтобы это исправить, напишем макрос для вставки заголовка: Sub insert_chart (doc as Object, cTitle as String ) Dim oSheet as Object, oCell as Object oSheet = doc.Sheets(0) oSheet.getRows.insertByIndex(0,1) oCell = oSheet.getCellByPosition(1,0) oCell.String = “Share Value” End Sub Объясняю, что здесь происходит: мы выбираем первый лист табли-цы, затем вставляем новую строку, а затем устанавливаем содержимое B1 в Share Value. Если вы запустите Main и затем вручную создадите график, то уви-дите, что столбец значений будет назван Share value. Начало хорошее; теперь пусть макрос создает график сам. Первое, что необходимо выявить макросу, это количество используемых данных: r = 1 На нашем уроке мы отключали Скрытый режим, но если вы собираетесь делать это довольно часто, то можете поменять код, чтобы сделать этот аргумент необязательным: Function open_csv_file (url as String, Optional show_form as Boolean) as Object Dim oProperty(1) as New com.sun.star.beans.PropertyValue if ismissing(show_form) then show_form = False end if oProperty(0).Name = “FilterOptions” oProperty(0).Value = “44” oProperty(1).Name = “Hidden” if (show_form) then oProperty(1).Value = False else oProperty(1).Value = True end if open_csv_file = starDeskTop.loadComponentFromUrl(url, “_ blank”, 0, oProperty()) End Function Только помните, что по умолчанию документ останется невидимым, а если вы захотите его все же узреть, просто измените код в open_csv_file на oDoc = open_csv_file(oUrl, True) Необязательный ввод Можно быстро добраться до Органайзера, нажав на Tools > Macros > Organize Dialogs, а затем перейдя на вкладку Module. Скорая помощьИюль 2007 Linux Format 69 Автоматизируем Openoffice.org Учебник oCell = oSheet.getCellByPosition(0,r) while oCell.String <> “” r = r + 1 oCell = oSheet.getCellByPosition(0,r) wend С помощью этой информации определим диапазон данных в таблице: Dim oRange as Object Dim oRangeAddress as Object oRange = oSheet.getCellRangeByPosition(0,0,1,r – 1) oRangeAddress = oRange.getRangeAddress Теперь мы можем определить данные по x и y в объекте CellRangeAddress: Dim oCellRangeAddress(1) as New com.sun.star.table. CellRangeAddress ‘Set X axis oCellRangeAddress(0).Sheet = oRangeAddress.Sheet oCellRangeAddress(0).startColumn = oRangeAddress. endColumn oCellRangeAddress(0).endColumn = oRangeAddress.endColumn oCellRangeAddress(0).startRow = oRangeAddress.startRow oCellRangeAddress(0).endRow = oRangeAddress.endRow ‘Set Y axis oCellRangeAddress(1).Sheet = oRangeAddress.Sheet oCellRangeAddress(1).startColumn = oRangeAddress. startColumn oCellRangeAddress(1).endColumn = oRangeAddress. startColumn oCellRangeAddress(1).startRow = oRangeAddress.startRow oCellRangeAddress(1).endRow = oRangeAddress.endRow Следующий шаг – определение области для графика. Вы обнару-жите, что размер по умолчанию довольно мал, так что сделаем его побольше: Dim oRect as New com.sun.star.awt.Rectangle oRect.Width= 20000 oRect.Height = 10000 Прямо сейчас мы можем написать код, рисующий график: Dim oCharts as Object oCharts = oSheet.Charts oCharts.addNewByName(cTitle, oRect, oCellRangeAddress(),TRUE,TRUE) Вы можете запустить макрос, если хотите – и появится график. Однако работа еще не кончена: например, хорошо бы написать назва-ние графика и обозначить оси X и Y… Dim oChart as Object oChart = oCharts.getByName(cTitle).embeddedObject oChart.HasMainTitle = True oChart.Title.String = cTitle oChart.diagram.HasXAxisTitle = True oChart.diagram.XAxisTitle.String = “Company Symbol” oChart.diagram.HasYAxisTitle = True oChart.diagram.YAxisTitle.String = “Closing Value” Теперь у вас есть полностью автоматизированная система для ска-чивания котировок ваших акций и создания по ним диаграммы. Все, что вам осталось сделать, это включить автоматическое закрытие и скрытие экрана... а на следующее утро встать, выпить кофе и посмот-реть на результаты усердной работы. «Погодите!» – слышу я ваш крик, «Мне не нравится диаграмма из столбиков – желаю, чтоб данные отображались в виде пончика; как насчет этого?» Да легко, хоть и не столь очевидно. Мы использовали тип графика по умолчанию, а чтобы использовать любой другой тип, укажите oChart.diagram = oChart.createInstance(“com.sun.star.chart. DonutDiagram”) Вот полный список доступных типов графиков: AreaDiagram, BarDiagram (по умолчанию), DonutDiagram, LineDiagram, NetDiagram, PieDiagram, StackableDiagram, StockDiagram и XYDiagram. Теперь можете вытворять что угодно. Можете загрузить CSV-файл прямо в Calc, можете создать любой график по данным, и все это – автоматически, без ввода данных. На данном уроке мы занимались Yahoo Finance, так как он свободно доступен и использует CSV-формат. Вы можете, конечно, использовать любой CSV-файл, то есть любой источник данных, при условии, что они загружаются в OpenOffice.org – например, приложить этот метод к базам данных. Но если вы примени-те эти приемы на деле для анализа ваших котировок и урвете крупный куш, уж не забудьте, кто научил вас уму-разуму! LXF С минимумом усилий создан красивый график, показывающий, как скверно живется вашим акциям. Победа!70 Linux Format Июль 2007 Учебник Анализ пакетов Грэм Моррисон Разработчик свободных программ, фанат KDE и энтузиаст электронной музыки. Он обсуждал синтезаторы не с одним ведущим членом сообщества FOSS. Наш эксперт Часть 1: Перехват данных анализатор. Такие приложения захватывают необработанные биты и байты потока данных, пока они передаются по вашей сети, и анализи-руют их для определения используемого сетевого протокола. Затем вы можете «пройти по следу» сетевого соединения и отследить пути вза-имодействия между клиентом и сервером. На этом уроке я собираюсь открыть вам глаза, чтобы вы поня-ли, насколько в действительности доступны в сети ваши данные. Используя анализатор, мы захватим стандартные пакеты, пересылае-мые, когда вы пользуетесь клиентом мгновенных сообщений Gaim для общения с друзьями; затем выделим текст сообщений и убедимся, что он действительно открыт для просмотра всем желающим. Будет полез-но хоть чуть-чуть понимать, как работает сеть, но экспертом быть не обязательно. На самом деле, просмотр сетевых пакетов и точный ана-лиз того, что передается по проводам и в эфире вокруг вас – превос-ходный способ обучения. Самый популярный анализатор для Linux – инструмент под назва-нием Wireshark, но более вероятно, что вы слышали об инструменте под названием Ethereal. На самом деле Wireshark – это и есть Ethereal, а имя поменялось после того, как главный разработчик, Джеральд Комбс [Gerald Combs], сменил работодателя. Его бывшая компания имела права на имя Ethereal, но не на код приложения, выпущенный под лицензией GPL. Поэтому все, что Комбс должен был сделать после ухода – это настроить новый репозиторий Subversion для своей соб-ственной версии исходного кода и придумать новое имя. В июне 2006 г. Ethereal превратился в Wireshark. Для перехвата пакетов вашей сети Wireshark использует системную библиотеку под названием libpcap. Если вы используете какой-то экзо-тический сетевой протокол, не поддерживаемый libpcap, то Wireshark также не сможет ничего выяснить. Но тем, кто использует специали-зированные сетевые протоколы, которые даже libpcap не понимает, вряд ли понадобится наш урок. Теперь, когда вы знаете всю подоплеку, давайте начнем. Wireshark: Ловите Анализ пакетов Узнайте из первых рук, как легко шпионить в сети Исследуя вашу сеть, можно добыть массу полезной информации. Грэм Моррисон применит пакетный анализатор, чтобы продемонстрировать беззащитность ваших данных. Не нужно быть специалистом по сетям, чтобы интересоваться их мониторингом. Столь же необязательно родиться крутым хакером. Ясное представление о процессах, происходящих в вашей сети, способствует её максимальной защищенности. Оно даже может подвигнуть вас на полезные действия. Но для понимания этих процессов, вы должны достаточно близко познакомиться с пакетами, пересылаемыми в вашей сети, чтобы видеть их в упор. Для этой работы есть только один инструмент, и он известен как «сниффер» [«обнюхиватель», ищейка, англ.] пакетов или сетевой Важнейшее решение при сетевом анализе – где запускать сниффер. Для личных экспериментов лучше всего сделать это на вашей соб-ственной машине. Если же вы хотите анализировать реальный мир данных вашей сети, запустите Wireshark на сервере. Это означает, что любой клиент (не только ваша машина), использующий сервер для передачи данных «в» и «из» Интернет(а), будет виден приложению захвата пакетов. Но ввиду неэтичности этого занятия, нужны веские основания для подобных действий. После выбора машины для работы настает момент установки Wireshark посредством менеджера пакетов. Сниффер включен во мно-жество дистрибутивов по умолчанию и является самодостаточным приложением, использующим GUI для выполнения всех задач – в отли-чие от многих других инструментов системного администрирования. Хотя вам, может быть, стоит поискать ‘Ethereal’: системы вроде Ubuntu используют это старое имя для обеспечения совместимости пакетов. Wireshark требует запуска с привилегиями системного администра-тора – что обычно означает запуск приложения от имени root. Если вы беспокоитесь о проблемах безопасности, связанных с запуском такого низкоуровневого инструмента на критичном для системы сервере (чего вы не должны делать в любом случае), хорошим компромиссом может быть запустить Wireshark на краткое время, для захвата достаточного количества сетевых данных, и использовать приложение на пользова-тельском уровне для их анализа. Можно захватывать данные с любого установленного сетевого устройства, включая беспроводные и Ethernet-карты.Июль 2007 Linux Format 71 Анализ пакетов Учебник На DVD Wireshark 0.99.5 (в каталоге Ethereal) данные в сети моих контактов. Есть и другие вещи, которые стоит попробовать, от просмотра нескольких защищенных и не защищенных сайтов (попро-буйте купить что-либо в сети!) до передачи/приема электронной почты. Но помните: все, что вы делаете, будет захвачено Wireshark. Когда вы сочтете, что накопили достаточно данных для анализа, просто остано-вите ведение журнала. После этого Wireshark загрузит данные в глав-ное окно. Надзор за устройствами Вы можете запустить Wireshark из командной строки, набрав wireshark. Через пару мгновений появится его GTK 2-интерфейс. На данный момент он больше похож на шестнадцатеричный/двоичный редактор, чем на инструмент анализа сети, просто потому, что пока не содержит данных. Получение данных для приложения – следующий шаг. Щелкните на первой иконке панели инструментов или выберите Интерфейсы [Interfaces] в меню Захват [Capture]. В открывшемся окне будет приведен список всех имеющихся сетевых устройств. В нем также начнется вывод числа пакетов, проходящих через каждое устройство. Этот список полностью зависит от конфигурации вашей системы. Если ваша машина использует беспроводное подключение к сети, вы, веро-ятно, увидите устройства wifi0 или ath0; если проводное, то скорее всего они будут озаглавлены eth0 или, для второй карты, eth1. Другие стан-дартные устройства – slip0 и ppp0 для соединений по последовательной линии, используемой в dialup-сетях (помните такие?) [помним, помним. ppp0 – частый гость на компьютерах современных домашних пользова-телей, использующих для доступа к провайдеру протоколы PPTP или PPPoE, а также услуги сотовых сетей GPRS/CDMA, – прим. ред.] Вы также увидите еще два устройства. Одно из них будет обозначе-но как lo, это стандартное кольцевое устройство, реализованное в ядре Linux для тестирования: оно соответствует локальной машине. Другое обозначено как anу – это мета-устройство, используемое Wireshark для объединения всех сетевых подключений к машине. Оно пригодится, если вам необходимо захватывать все, а объем генерируемых данных может оказаться не поддающимся обработке. Намного легче начать с порта, который, как вы точно знаете, используется определенными протокола-ми, и только потом перейти к захвату данных с других интерфейсов. Захват без разбора Щелчок на кнопке Подготовка [Prepare] рядом с интересующим вас уст-ройством позволит вам произвести тонкую настройку процесса сбора данных. Большинство опций можно оставить как есть, но пару из них вы, вероятно, захотите изменить. Наиболее важный параметр обозна-чен как Захват пакетов без разбора [Capture Packets In Promiscuous Mode]. Во включенном состоянии он позволяет Wireshark перехваты-вать и сохранять каждый отдельный байт сетевого пакета на самом нижнем уровне. Вне этого режима важная информация о пересылке может быть упущена. Но может ли ваша система работать в нем или нет, зависит от имеющегося драйвера Ethernet, хотя большинство уст-ройств этот режим поддерживают. Другой важный параметр на этой странице назван Обновлять список пакетов в реальном времени [Update List Of Packets In Real Time]. Вероятно, вам не следует пользоваться им при первых попытках применения Wireshark, но он очень полезен при быстром анализе. По своей сути он позволяет вам пощупать и просе-ять сетевые данные без предварительного их захвата – ценно, если вы хотите заметить некоторую специфическую активность в сети. Внимание, эксперимент! Удовлетворившись настройками для выбранных вами устройств, нажмите или кнопку Старт [Start] на странице настройки, или кнопку Захват [Capture] в списке интерфейсов. После этого Wireshark запи-шет каждый байт данных, прошедший через ваше сетевое устройство. Чтобы повысить ценность этого упражнения, не мешает сделать через ваше сетевое соединение что-нибудь интересное. Лично я запустил клиента мгновенных сообщений Gaim и начал разговор с одним из Не захватывайте слишком много данных. Помните: Wireshark сохраняет все. Если вы загружаете файл в 10 ГБ, Wireshark захватит и его. Скорая помощь Тактика защиты от вторжений Простые электронные письма, мгновенные сооб-щения, путешествие в Web, VNC, IRC, Telnet. Эти протоколы передают данные в простом тексто-вом формате, и данные легко прочтет любой, кто может запустить Wireshark в вашей сети и потра-тить время на сбор сотен передаваемых пакетов. Вот почему персональные данные, вроде деталей банковского счета и информации о кредитных картах, и даже ваше имя и адрес на самом деле не должны пересылаться через незащищенное интернет-соединение. По этой причине и возникло множество шиф-рованных интернет-протоколов. Наиболее общим примером является HTTPS, безопасная версия протокола передачи гипертекста (HTTP), он используется везде: от интернет-банков до сете-вых магазинов. То же делает VPN, обеспечивая туннель для удаленной сети через незащищен-ный уровень (Интернет) к локальному компьюте-ру – подробности см. на стр. 101 или в LXF93. Любой взломавший соединение увидит разве что зашифрованные пакеты VPN, и не сможет узнать что-либо без взлома ключа шифрования. А это уже совсем другая тема. Советы по поддержанию безопасности Всегда используйте HTTPS для передачи важ-ной информации через Web. Используйте SSH для удаленных соединений, желательно с авторизацией по ключу. Туннелируйте незащищенные протоколы, вроде VNC, через ваше SSH-соединение. Переключитесь на протокол с шифрованием для отсылки и приема почты. Находясь в режиме захвата без разбора, ваше сетевое устройство «ловит» все пакеты, независимо от адреса отправителя и получателя. Мессенджеры типа Gaim посылают сообщения как простой текст, и любой владелец инструмента типа Wireshark может их читать.72 Linux Format Июль 2007 Учебник Анализ пакетов Часть 2: Анализ данных Сетевые данные – это двоичные данные; вы вряд ли что-либо поймете, загрузив их в текстовый редактор. Сила Wireshark в его способности декодировать информационные поля, содержащиеся в захваченных двоичных данных. Путем поиска определенных шаблонов в данных, Wireshark может точно определить тип используемого протокола, а по нему извлечь необходимую дополнительную информацию. Главное окно данных в Wireshark (см. ниже) показывает разборку содержимого каждого пакета сетевых данных, которые Wireshark уме-ет распознавать. Первый левый столбец – порядковый номер пакета, в соответствии с его получением. Рядом находится время получения пакета. Справа от времени расположены IP-адреса отправителя и получателя, найденные в пакете – откуда пакет послан и куда направ-ляется. Столбец Протокол [Protocol] отображает аббревиатуру найден-ного протокола для пакета, а в последнем столбце выводится ценная информация, извлеченная благодаря тому, что Wireshark распознал протокол, и какие данные в пакете наиболее полезны. Фильтр свирепствует Вся эта информация весьма объемна. Для работы с ней Wireshark имеет отличный фильтр, основанный на простом синтаксисе, для уменьшения путаницы на экране; он действительно выделяет пакеты, достойные интереса. Вы можете ввести фильтр напрямую в область поиска над списком пакетов, но для начала проще нажать кнопку Фильтр [Filter] слева от этого поля: здесь имеется несколько стан-дартных примеров фильтров, наряду с полезным мастером созда-ния и сохранения собственных. Поэкспериментируйте с примерами. Набрав, допустим, ip.addr = = 192.168.0.1, вы получите список только тех пакетов, отправителем или получателем которых является адрес 192.168.0.1 (полезно, если вы хотите проверить отдельного клиента в вашей сети). ip.addr – это поле фильтра, и вы увидите полный спи-сок 44 185 возможных вариантов, поддерживаемых Wireshark, нажав Справка > Поддерживаемые протоколы [Help > Supported Protocols] и выбрав вкладку Отобразить поля фильтра [Display Filter Fields]. Но пока мы ограничимся одним протоколом, а именно, исполь-зуемым MSN Messenger для связи с клиентами. Обычно Wireshark определяет используемые протоколы путем поиска по номеру порта в информации пакета, и вы можете увидеть список 820 распознавае-мых протоколов, открыв Справка > Поддерживаемые протоколы [Help > Supported Protocols]. Тот, который нас интересует, обозначен как MSNMS – MSN Messenger Service. Можно отфильтровать список паке-тов по этому протоколу, набрав в фильтре msnms. Вы заметите, что поле фильтра окрашивается красным, когда невозможно выполнить фильтр, и зеленым, когда основные ключевые слова распознаны. Введите msnms и нажмите Применить [Apply]; список пакетов обно-вится, чтобы показать саму MSN-сессию, записанную в пакетах (для обзора выполняемого процесса, см. врезку «Шаг за шагом»). Щелчок на заголовке поля Номер пакета [Packet Number] отсортирует пакеты в порядке их получения, облегчив рассмотрение потока соединения. Первым делом в глаза бросается то, что сама передача представляет собой обмен данных между вашим локальным клиентом и различ-Список пакетов Каждый захваченный пакет будет помещен в этот список, вместе с IP-адресами отправителя и получателя. Изучаем интерфейс Wireshark Фильтр данных Используйте любой из сотен поддерживаемых протоколов для тонкой настройки вашего списка пакетов. Информация Wireshark строит предположения о типе информации. Редактор выражений Используйте мини-программирование для поиска конкретных деталей в ваших данных. Список заголовков Общая информация об используемом протоколе для каждого пакета отображается здесь. Данные пакета Декодированное содержимое пакета отображается в этой панели. Вы можете сохранить захваченные Wireshark’ом данные для дальнейшего анализа. Это полезно, когда вы хотите проследить проблемы сети или в дальнейшем ссылаться на полученные данные. Скорая помощьИюль 2007 Linux Format 73 Анализ пакетов Учебник ными MSN-серверами. Вы можете заметить это по перепрыгиванию вашего IP-адреса из поля Отправитель [Source] в поле Получатель [Destination], поскольку пакеты пересылаются и принимаются между двумя машинами. Вы также можете увидеть ход транзакции. Сперва пакеты содер-жат очень мало информации: первые два просто проверяют версию MSN-протокола, используемую обеими машинами. Первый важный пакет в наших захваченных данных – это третий. Он высылается нашим клиентом и содержит передачу инициализации для MSN-соединения. В него включено имя пользователя, а для большинства MSN-записей это просто адрес на Hotmail. Хорошо уже и то, что не показывается пароль. Это потому, что большинство соединений для аутентифика-ции MSN Messenger по умолчанию используют протокол с шифрова-нием – HTTPS, и эти данные не прочесть как обычный текст. Если же вы используете обычную HTTP-аутентификацию, то ваш пароль будет как на ладони. Послание в бутылке Успешное соединение сопровождается сообщением сервера USR OK, это примерно 15-й пакет в нашей подопытной сессии. Вот где начи-наются интересные вещи. Список контактов, появляющийся в нашем клиенте сообщений, хранится на MSN-сервере. Это означает, что для отображения в Gaim его нужно переслать вашему клиенту с сервера. Вполне очевидно, что пакеты, посылаемые сервером за сообщением USR OK, будут почти целиком набиты электронными адресами – неве-роятно ценный ресурс для любого злоумышленника. Все, что ему сле-дует сделать, это часок позаписывать данные в интернет-кафе, и он получит тысячи электронных адресов для своих целей. Мало того: он также сможет кое-что сообразить о связи между адресами, что значи-тельно облегчит успех методов социальной инженерии. После заполнения списка контактов, следующее действие, которое вы увидите в журнале, это открытие разговора с одним из них. Дамп данных Wireshark ясно покажет, что оно произошло, поскольку MSN сервер посылает сообщение RINGING, почти как телефон. Двумя паке-тами позднее контакт ответит сообщением JOI. Это говорит о том, что удаленный клиент сообщений присоединился к нашему локальному клиенту для беседы. Сразу после этого мы получаем пакет, содержа-щий строку X-MMS-IM-Format. Это часть протокола MSN Messenger, помещаемая в начале каждого сообщения, пересылаемого между двумя клиентами. Согласно спецификации протокола MSN Messenger, тело сообщения следует далее в простом текстовом формате – да так оно и есть. Сразу же после заголовка идет частное содержание сообщения. Просмотр ваших интимных разговоров вне контекста и в доступном виде, естественно, заставит вас задуматься о последствиях использования общественных сетей для обмена мгновенными сооб-щениями. Таким способом вы можете захватить целые беседы, и если вы воспользуетесь захватом пакетов вместе со взломанной точкой беспроводного доступа, то сможете незаметно войти в курс дел всех своих соседей. Надеюсь, весь этот процесс напугал вас достаточно, чтобы вклю-чить наконец для своей точки доступа WPA-шифрование (вы же знае-те, что WEP небезопасен, так ведь?) и, может быть, даже использовать зашифрованные каналы связи при необходимости пользования откры-той сетью. Однако анализ пакетов – штука захватывающая, а иногда и необходимая для проверки совместимости версий в таких протоколах, как Samba. LXF Конечный результат проекта – умение подслушивать IM-беседы: горький опыт, способный заставить вас усилить безопасность. Можно просмотреть заголовок каждого захваченного пакета, сдвигая вниз разделитель панелей над списком пакетов. Шаг за шагом: Следим за интернет-беседой 1 Определим сессию В журнальном интерфейсе Wireshark, найдите точку, где клиент и сервер начинают обмен пакетами. 2 Найдем подключение клиента Следуйте по списку пакетов обмена, пока не найдете пакет, содержащий сигнал ‘JOI’. 3 Проглядим пакеты сообщений Выполните правый щелчок на этом пакете и выберите Follow TCP stream, чтобы увидеть текст беседы.74 Linux Format Июль 2007 Учебник Mono-Мания Месяц назад Ради практики в ООП мы создали клон Civilization. Mono: Работаем Mono-Мания Программирование на современной платформе для новичков Два ядра позволяют сделать больше – по крайней мере, так уверяет отдел маркетинга Intel. Проверим это вместе с Полом Хадсоном. процесса работают «потоки», которые представляют собой отдельные задачи внутри программы, способные работать параллельно с другими задачами. Однако даже самый красивый и изящный в мире код на C#, содержащий только один поток, использует всего четверть от четы-рехъядерной мощи. На нашем уроке вы изучите, как создавать потоки в Mono, для запуска приложения одновременно на нескольких ядрах. Чтобы сде-лать тему более захватывающей, создадим «взломщика» хэшей SHA1. SHA1 – это алгоритм хэширования, спроектированный для создания 40-символьной уникальной последовательности битов из входного текста. Хэши обычно используются для проверки целостности информации – если вы скачаете 4-ГБ образ DVD, у которого искажен 1 КБ информа-ции, то полученный хэш SHA1 будет совершенно отличаться от исход-ного. SHA1 и другие функции часто используются для хранения паро-лей, так как исходное значение пароля по хэшу не восстановить – хотя можно генерировать SHA1-ключи для всех возможных строк, чтобы увидеть совпадения. Но сначала займемся чем-нибудь попроще. Попасть в квадрат Первым нашим проектом этого урока будет возведение в квадрат 1000 чисел. Мы начали с такого примера, потому что его очень лег-ко распараллелить: не требуется обмена данных между потоками. Создайте новое консольное C# приложение в MonoDevelop, назовите его Hackaday и поместите следующую строчку вверху его cs-файла: using System.Threading; Магическая строка using позволит нам использовать потоки. Нам также потребуется 4 переменных: одна будет отслеживать, сколько чисел надо создавать, другая будет отвечать за количество потоков, третья установит, сколько чисел генерировать на поток, а четвертая будет хранить генератор случайных чисел. Без первых трех перемен-ных на самом деле можно обойтись, записав их как константы, но потом с ними уже не поиграешь! Итак, добавьте четыре переменных до определения метода static void Main(): static int NumsToGenerate = 1000; static int NumThreads = 4; static int NumsPerThread; static Random Rand = new Random(); Начинается настоящее дело: создание потоков. Каждый созданный поток будет выполнять метод, который определим мы. Метод может быть каким угодно, принимать любые параметры и даже вызывать другие методы. Но пока будем проще: пусть каждый поток пробегает в цикле от 0 до NumPerThread, генерирует число от 1 до 1000, затем возводит в квадрат и выдает результат. Вот этот метод: static void DoFunk() { for (int i = 0; i < NumsPerThread; ++i) { int num = Rand.Next(1, 1000); Console.WriteLine(“Thread #{0} says: {1} squared is {2}”, Thread.CurrentThread.Name, num, num * num); Дивлюсь я на мою жену. Я при переходе улицы с трудом успе-ваю поглядеть в обе стороны, а она способна гладить, гово-рить по телефону и смотреть телевизор одновременно. Она правда думает обо всем сразу, или ее мозг мгновенно переключается с задачи на задачу? Долгое время компьютеры были ограничены только последним вариантом. На вашей системе Linux одновременно работает около 100 программ. Вам видны лишь некоторые из них, вроде X или Nautilus, но есть еще и другие – апплет громкости, syslogd, Metacity, D-BUS, Cron и так далее. Большую часть времени они бездействуют в фоновом режиме, но когда два или более вступают в дело одновременно, ваш процессор начинает ими жонглировать. Обычный стандартный про-цессор без включенного Hyperthreading может выполнять только один процесс в заданный момент времени. Чтобы избежать подвисания при запуске OpenOffice, каждый про-цесс получает период времени – доли секунды, обычно менее 100 мс – на выполнение кода. По истечении этого времени процесс приостанав-ливается, и свой квант времени получает другая программа. Если квант равен 100 мс, то за секунду успевают поработать десять различных программ; человеку за этим не уследить, и ему кажется, что все они работают одновременно. Так продолжалось много лет; но на новых двух-и многоядерных чипах от AMD и Intel или любой старой SMP-системе с двумя физи-ческими одноядерными процессорами все по-другому. Эти устройства могут действительно исполнять множество процессов сразу, благода-ря наличию нескольких чипов: двухъядерный чип может выполнять два процесса одновременно, а четырехъядерный – четыре. Внутри Пол Хадсон полагает, что Mono – лучшая вещь со времен мультфильма Pinky and the Brain, и сейчас поддерживает два проекта на основе Mono на SourceForge. Наш экспертИюль 2007 Linux Format 75 Mono-Мания Учебник с потоками Вот так параллельность! Мы здесь обсуждаем так называемые «ошеломляюще параллельные» алгоритмы, которые хорошо распределяются по процессорам, так как каждая операция абсолютно не зависит от остальных. Как легко представить, не много задач попадает в эту категорию: физика частиц – да, фракталы – да, и несколько других классов. А вот со сжатием видео уже не все просто, потому что большинство кодеков кодируют изменения с предыдущего кадра, и вы не можете сжать кадр до того, как был обработан предыдущий. Использование ключевых кадров смягчает проблему, но есть задачи – в основном криптография, поблочное шифрование с обратной связью – которые нипочем не распараллелить. И все-таки не беспокойтесь, если ваше приложение не может быть распараллелено на 100%. Если вы создали шахматную программу, которая выполняет в одном потоке все, кроме ИИ компьютера, который в фоновом потоке будет искать наилучший ход, это уже неплохо. } } DoFunk() – не очень конкретное имя, но так как мы будем исполь-зовать его во многих программах, сойдет и оно! Основная идея в том, что каждый их четырех потоков будет прокручивать 250 случайных чисел и выдавать квадрат каждого из них. Каждый поток будет ссы-латься сам на себя с помощью Thread.CurrentThread, и в этом случае мы считываем Name – строку, назначаемую каждому потоку для упро-щения отладки. Синтаксис {0}, {1}, {2} – просто быстрый способ написать сложные вызовы WriteLine() за один раз: Mono автоматически подставляет пара-метры, то есть замещает {0} на Thread.CurrentThread.Name, {1} на num, {2} на результат num*num. Остается только метод Main(), которому надо вычислить, сколько чисел должен обработать каждый поток, затем создать потоки и запус-тить их. При создании каждого потока в его конструктор передается имя метода, который мы хотим запустить. Вы все поймете, взглянув на код – вот он: static void Main(string[] args) { NumsPerThread = NumsToGenerate /NumThreads; for (int i = 0; i < NumThreads; ++i) { Thread thread = new Thread(DoFunk); thread.Name = Convert.ToString(i); thread.Start(); } } Итак, считая от 0 до 4, создадим поток и велим ему запустить метод DoFunk(), а назовем его по номеру итерации, на которой он создается. Хотя все потоки будут созданы, ни один их них не запустится до тех пор, пока не будет вызван метод thread.Start(), после которого они начнут выполнять методы DoFunk(). Нажмите F5, чтобы собрать и запустить программу, и увидите вихрь чисел в окне вывода результатов. Разделяй и… разделяй Вы заметите четыре важных момента в работе программы: 1 Каждый поток имеет доступ к генератору случайных чисел Rand и NumThreads, потому что они помечены как ‘static’, то есть каждый поток может читать и писать их. 2 Каждый поток создает собственные случайные числа. Это пото-му, что переменная num объявлена локально в каждом потоке, поэтому у них есть по копии этой переменной, чтобы ей управлять. 3 При выводе программы вы заметите, что потоки не выводят каждый по строке, типа 012301230123. Более вероятно, что сначала поток 0 напечатает десять строк, затем поток 1 напечатает 10 строк, и так далее, то есть 0000000000111111111122222222223333333333. 4 Программа hackaday.exe ждет, пока все потоки не закончат свою работу. Пункт 1 показывает, что потоки могут иметь общие переменные. В этом разница между процессами и потоками: порождаемые про-цессы независимы, а потоки разделяют большинство своих данных. Исключения составляют переменные, объявленные локально, как, например, num. Пункт 3 иллюстрирует то, что говорилось о квантах времени выше: каждый поток получает свой квант и исчерпывает его, чтобы передать работу следующему потоку. Пункт 4 возник потому, что по умолчанию .NET создает не фоно-вые (foreground) потоки и не позволит завершить программу, пока они не отработают. Фоновые потоки, напротив, автоматически закан-чивают работу, когда завершается родитель-ский процесс. Попробуйте перед thread.Start() набрать thread.isBackground=true; затем пере-запустите программу. На этот раз програм-ма завершится быстрее: создав все потоки, Main() завершится, и потоки автоматически ликвидируются. Сконцентрируемся на пункте 1, так как вопрос разделения данных – один из самых сложных. На техноязе то, чем мы занимаемся, называется потокобезопасность, и означает, что ваше приложение не сломается, если два потока попытаются сделать одно и то же в один момент. Что если два потока вдвоем примутся читать статическую переменную? Чтение переменных менее проблемно, но тоже небезо-пасно: легко нарваться на «состояние гонки» [race condition]. Не буду объяснять, что это такое, сейчас: из кода все станет ясно. Для начала попробуем безопасным образом писать в переменные из потока. Наш старый код генерировал случайные числа для возведе-ния в квадрат, но сейчас мы собираемся создать список из целых чисел (об этом см. LXF92), и каждый поток будет считывать первый элемент из списка, удалять его и затем возводить в квадрат. Нам не нужна ситуация, когда все четыре потока прочитают первый элемент, затем поток 0 удалит его, поток 1 примется удалять следующий элемент, поток 2 – еще один, а поток 3 – еще один, и выйдет, что мы сосчитали квадрат для первого числа 4 раза, уничтожили 2-й, 3-й и 4-й элементы, сосчитали квадрат для 5-го элемента… и так далее. C# позволяет легко разрешить эту проблему с помощью выраже-ния lock, отмечающего критические секции кода. Внутри критического блока в заданный момент времени может находится только один поток. Любой другой поток, дойдя до lock-секции, будет ждать, пока первый поток не выйдет из нее. Отсюда следует, что нам надо блокировать любые общие переменные, прежде чем изменять их, чтобы предотвра-тить двойные изменения. «Вот это и называется гонкой: потоки стараются опередить друг друга, и результат непредсказуем» Mono 1.2.3.1 MonoDevelop 0.13 Код примеров статьи На DVD76 Linux Format Июль 2007 Учебник Mono-Мания Блокировка потоков Так как мы будем использовать коллекцию List, надо добавить новое выражение в секцию using: using System.Collections.Generic; Удалите все ранее определенные переменные и вставьте следующее: static List Numbers = new List(); Метод Main() должен подготовить 2000 чисел для Списка. Так как мы удалили все переменные, число потоков будет зашито в програм-му в виде константы. Вот новый код Main(): public static void Main(string[] args) { for (int i = 0; i < 2000; ++i) { Numbers.Add(i); } for (int i = 0; i < 4; ++i) { Thread thread = new Thread(DoFunk); thread.Name = Convert.ToString(i); thread.Start(); } } Серьезная работа возложена на метод DoFunk(): ему надо выта-щить число из списка и возвести его в квадрат, блокировав при этом список Numbers, чтоб не вмешались другие потоки. Вот как выглядит код DoFunk(): while (Numbers.Count > 0) { lock (Numbers) { int Num = Numbers[0]; Numbers.RemoveAt(0); Console.WriteLine(“Thread #{0} says: {1} squared is {2}”, Thread.CurrentThread.Name, Num, Num * Num); } } Цикл будет выполняться, пока в Numbers остаются числа. Но первым делом надо заблокировать список – lock(Numbers). Первый поток, который доберется до этого кода, обнаружит, что Numbers свободен, и заблокирует его. Другие потоки обнаружат, что Numbers заблокирован первым потоком, и не пойдут дальше, пока первый поток не снимет блокировку. Первый поток прочтет первое число, удалит его из списка, возведет в квадрат и выведет на экран, затем, достигнув конца блока lock, освободит Numbers. Второй поток обна-ружит, что Numbers свободен, заблокирует его, выполнит свою рабо-ту, и так далее. Попробуйте запустить и посмотреть, что случится. Все выглядит замечательно до тех пор, пока вы не дойдете до кон-ца, когда вы увидите следующее: Unhandled Exception: System.ArgumentOutOfRangeException: Argument is out of range. Parameter name: index at System.Collections.Generic.List`1[System.Int32].get_Item (Int32) [0x00000] at hackaday.MainClass.DoFunk () [0x00000] at (wrapper delegate-invoke) System.MulticastDelegate:invoke_ void () Китайская грамота, да? Что ж, так нам пытаются сообщить, что возникло «состояние гонки». То есть два потока (или более) парал-лельно пытаются достичь одного результата, и мы из-за непред-сказуемой работы планировщика виртуальной машины получаем неожиданные результаты. Взгляните на код – в частности, на метод DoFunk(). Проблема находится в строке int Num = Numbers[0] – там, где вызывается внутренний метод Mono get_item(). Посмотрим, что здесь может вызвать проблему. Нашли? Если нет, давайте я покажу, что происходит в случае двух потоков исполнения: 1 Поток 1: Numbers > 0. 2 Поток 1: Numbers свободен. Блокируем его. 3 Поток 2: Numbers > 0. 4 Поток 2: Numbers блокирован. Ждем. 5 Поток 1: Взять первое число, удалить, возвести в квадрат и вывести на экран. 6 Поток 1: разблокировать Numbers. 7 Поток 2: Numbers свободен. Блокировать его. 8 Поток 1: Numbers > 0. 9 Поток 1: Numbers блокирован. Ждем. 10 Поток 2: Взять первое число, удалить, возвести в квадрат и вывести на экран. 11 Поток 2: Разблокировать Numbers. ... и так далее. Но в конечном счете произойдет следующее: 1 Поток 1: Numbers свободен. Блокируем его. 2 Поток 2: Numbers > 0. 3 Поток 2: Numbers блокирован. Ждем. 4 Поток 1: Взять первое число, удалить, возвести в квадрат и вывести на экран. 5 Поток 1: Разблокировать Numbers. 6 Поток 2: Numbers свободен. Блокируем его. 7 Поток 1: Numbers не больше 0. Закончили. 8 Поток 2: Взять первое число... БАЦ! В этой последовательности, Numbers начинает с ровно одним оставшимся элементом, и поток 1 его блокирует. В то же время поток 2 проверяет Numbers на наличие элементов, и его ждет успех – так как Numbers все еще содержит число. Но заблокировать Numbers он не может, поэтому ждет. Поток 1 продолжает работу, удаляет пер-вый элемент и возводит его в квадрат, затем разблокирует Numbers. Поток 2 теперь блокирует Numbers, думая, что там еще остались числа, и пытается считать оттуда, затем отбрасывается исключе-ние ‘System.ArgumentOutOfRangeException’, так как Numbers[0] не существует. Если запустить программу несколько тысяч раз, обнаружится, что она не всегда завершается аварийно. Полный произвол: поток 1 может заблокировать Numbers и удалить последнее значение до того, как поток 2 сможет прочитать оставшееся число элементов. Вот почему это зовется ситуацией гонки: потоки забегают один за другой, и между проверкой значения и его использованием может случиться все что угодно. Решение проблемы состоит в том, чтобы проверить значение Numbers сразу после получения блокировки, чтобы учесть случай отсутствия чисел. Добавьте следующую строку сразу после вызова lock: if (Numbers.Count == 0) break; Теперь запуск программы увенчается успехом, так как мы устра-нили ситуацию гонки. В белых перчатках Пришла пора для главного проекта месяца: взлома SHA1 методом грубой силы. Породим 26 потоков (по одному на каждую букву алфа-вита), затем заставим их считать SHA1-хэш для всех возможных слов, начинающихся с этой буквы. Программа прочтет из командной строки максимальный размер слова и хэш SHA1, и остановится, как только Ваше домашнее задание Вы заметили, что я предоставил вам отнюдь не оптимальный алгоритм для взлома SHA1, и не случайно: это Linux Format, а не Black Hat Format. Однако для вас будет интересным упражнением проверка времени, которого потребует ваша атака на SHA1. Три совета начинающим: 1 Ширина охвата (‘a’,’aa’,’ab’,’ac’) лучше, чем глубина (‘a’,’aa’,’aaaa’,’aaab’). 2 Изменение одной строки может сократить поиск 5-символьного слова с 22 секунд до 0.4 секунды. 3 Много потоков может навредить производительности – разве что у вас куча процессоров. 4 Постоянное выделение переменных – пустая трата времени. Достигнув хороших результатов, поместите свой код на форум Linux Format, чтобы другие смогли оценить вашу работу (www.linuxforum.ru). Дерзайте! Имя потоку дается только один раз, поэтому сразу выберите что-то значимое. Скорая помощьИюль 2007 Linux Format 77 Mono-Мания Учебник Через месяц Упростим доступ к базе: скрестим SQL и C#. найдет слово, соответствующее хэшу. Максимальный размер слова будет использоваться для ограничения пробных входов: например, если максимум установить на 4, то поток проверит сначала ‘aa’, ‘aaa’, ‘aaaa’, ‘aaab’, ‘aaac’... ‘aaay’, ‘aaaz’, ‘aaba’ и так далее до ‘azzz’. Здесь не хватит места для всей программы, потому что она зани-мает около 90 строк (вы найдете ее на диске). Но прежде чем браться за дело, обсудим несколько важных моментов: 1 Программа ожидает на входе 2 параметра: максимальный размер создаваемого слова и хэш, которому оно должно соответствовать. Если параметры не предоставлены, программа завершается. Заметим, что метод DoFunk() – точнее, любой метод, который поток выполняет при своем запуске – должен не иметь параметров, либо принимать только один параметр. Если надо передать несколько параметров, следует создать класс, содержащий все необходимые данные, а затем передать объект этого класса в поток. 2 Main() создает 26 потоков, по одному на каждую букву алфавита. Это делается следующим образом: буква ‘a’ преобразуется к целому значению в кодировке ASCII, затем добавляется число i и опять пре-образуется в букву. I находится в диапазоне от 0 до 25, что дает нам ‘a’,’b’,’c’ и т.д. Затем оно передается в thread.Start(). 3 Созданные потоки помещаются в список с незатейливым именем Threads. 4 Причина, по которой мы отслеживаем потоки – мы хотим, чтобы программа дождалась всех потоков, а потом уж продолжила свою работу. Для этого и метод thread.Join(): он ждет завершения потока. 5 Это, в свою очередь, сделано ради подсчета, сколько времени потребуется для завершения работы всех потоков. Если мы не сдела-ем Join() для каждого потока, Main() продолжит выполнение и спута-ет нам хронометраж. 6 Подсчет хэша SHA1() на .NET – штука мучительная, и я решил эту проблему, написав вам в помощь небольшой метод. Чтобы посчитать SHA1-хэш любого слова, просто отправьте ее в метод Sha1(). Откинув все это в сторону, вы увидите, что метод DoFunk() порази-тельно мал. На самом деле он только принимает параметр (начальную букву), а затем вызывает другой метод. Но обратите внимание на то, как он принимает параметр типа object, затем преобразует его (char) в символ. Это неизбежность в .NET, но ее легко обойти. DoFunk() вызывает NextLetter(), передает ей начальную букву и номер 2. Второй параметр – это уровень, то есть размер слова. Если мы велим программе искать слова максимальной длины 6, то цикл пойдет, обнаружит, что уровень (2) меньше или равен максиму-му (6) и войдет в цикл от 0 до 25, а затем перезапустит себя. Вот как будет выглядеть поток вычислений после вызова NextLetter(“a”,2): if (2 <= 6) { for each alphabet letter { string = “a” + letter; hash = Sha1(string); if (hash is what we’re looking for) { print happy message } else { print sad message } NextLetter(string, 3); } О да, рекурсивная функция может здорово надсадить мозги, но самый простой способ понять ее работу – рассовать повсюду выво-ды сообщений Console.WriteLine(), чтобы проследить внутреннюю логику. Если вы поняли, как генерируются входные слова, дальше все просто. Программа использует потоки, и так как потоков 26, она будет плавно рассредотачиваться при добавлении процессоров – даже четырехъядерную машинку обеспечит работой под завязку! Вы може-те видеть результат на экранном снимке внизу. Заметьте, как другие 24 потока выводят сообщения, найдя соответствие. Это в чистом виде гонка. Короче, многопоточность не так уж сложна – по крайней мере, если вы разобрались с блокировками, гонками, присоединениями и фоновыми потоками. Верно? Согласны? LXF Наш готовый проект считает SHA1-ключи для всевозможных комбинаций букв и ищет соответствие. Обратите внимание, как 24 других потока выводят сообщения, когда таковое найдено. Представляем SHA2 SHA1 – не особенно сильный алгоритм хэширования, и он уже не рекомендуется экспертами по безопасности. Однако С# предлагает поддержку для более мощных хэш-функций, включая семейство SHA2 с невероятно сильным SHA512. Конечно, имейте в виду, что наша «лобовая атака» годится только для паролей, так как у большинства пользователей пароли короче 8 символов. На попытку найти совпадение для более длинного сообщения, например, электронного письма, потребовались бы годы. Помните, что блокировки заставляют потоки простаивать, так как только один поток может находиться в критической секции. Чем меньше блокировок, тем быстрее будет работать ваш код. Скорая помощь78 Linux Format Июль 2007 Учебник Hardcore Linux Ден Фрост Дэн работает в Брайтоне техническим директором 3ev, агентства по разработке web-приложений. Он работал на проекте CMS TYPO3, а в настоящий момент занимается CMS-приложением ‘Involve’ для 3ev. Наш эксперт те – это пустая область с границей, так как наш код устанавливает тэг canvas, но ничего другого не делает: просто обозначает пустой холст на странице. Самое интересное начинается в JavaScript. JS используется для рисования линий, кривых, областей и изображений на объекте canvas. Чтобы создать две линии, добавьте это в только что созданный файл и обновите страницу в Firefox: Давайте разберемся. Сначала мы получаем HTML-элемент (или узел) по id ‘canvas’. Затем из элемента canvas мы получаем контекст-ный объект, его мы рассмотрим далее. Объект используется для соб-ственно рисования. Вот и все, что необходимо для применения тэга canvas: HTML-тэг и немного JavaScript. Вся ваша разработка может вестись с помощью Firefox и тестироваться вне сервера, так как логика и рисование нахо-дится на стороне клиента. Но что мы можем? Чтобы подстрекнуть свое воображение, гляньте на панель Dashboard от Apple (сайт www.apple. com/macosx/features/dashboard). Кроме того, всплывает масса мелких примеров: от реализации Paint (CanvasPaint) до восхитительных игр вро-де Blobsallad (http://blobsallad.se) и Canvascope (www.abrahamjoffe.com. au/ben/canvascape). Программировать с помощью canvas совсем не сложно – мой при-мер это доказывает. Но если вам неохота писать тысячи строк лапше-образного кода для отрисовки сложного извива ДНК, поможет объек-тная модель. Наша следующая задача – поместить функциональность canvas в очень простой (50 строк) модуль, для упрощения управления фигурами. Расширяем холст Спецификация на canvas определяет множество функций для рисо-вания простых фигур и линий, вроде прямоугольников, дуг и кривых второго порядка, которые можно комбинировать для создания более сложных, изощренных фигур. По мере того, как я буду описывать раз-личные функции и возможности тэга, копируйте их в ранее созданный файл, чтобы понять смысл функций и как их использовать. Фактически мы рисуем не на объекте canvas, а на его 2D-контексте. Чтобы получить контекст canvas, мы используем функцию getContext. Контекст – это объект, содержащий функции для рисования линий, блоков цветных изображений и так далее. Линии он называет штриха-ми [stroke], а цветовые блоки – заливкой [fill]: Canvas: Холст Hardcore Linux Проверьте себя как продвинутого пользователя Новый HTML-элемент canvas позволяет программировать графику в браузере. Дэн Фрост покажет вам, как использовать этот мощный тэг. Рисование графики на web-страницах обычно отдавалось на откуп Flash или библиотекам на стороне сервера. Больше тако-му не бывать! Забудьте зависть и удовлетворите свои амбиции стать художником – по крайней мере в Firefox и Opera, благодаря тэгу . Впервые введенный фирмой Apple, этот тэг предоставляет програм-мисту холст, чтобы рисовать на нем прямые, дуги, квадраты и так далее. Комбинируя простые элементы, можно получать блестящие результа-ты – как, вы узнаете чуть позже. В настоящий момент тэг canvas поддер-живается браузерами Firefox, Opera, Safari и включен в спецификацию HTML 5 группой WHATWG (Web Hypertext Application Technology Working Group – Рабочая группа по технологии гипертекстовых приложений), что вселяет надежду на его грядущую повсеместную реализацию. В качестве краткого введения, на данном уроке я собираюсь показать, как создать простые фигуры с помощью тэга canvas, поместить эти фигуры в объектную модель и, наконец, сделать их интерактивными. Привет, мир графики Чтобы работать с тэгом canvas, достаточно создать небольшой HTML-файл и открыть его в Firefox. Для начала рассмотрим несложный при-мер. Тэг canvas добавляется на страницу обычным образом. Атрибуты «ширина» и «высота» говорят сами за себя; но вы также можете вклю-чить стандартные HTML-атрибуты, типа class, id, style и других: Добавьте этот кусок кода на пустую HTML-страницу и откройте ее в браузере с помощью File > Open (Файл > Открыть). Все, что вы види-Месяц назад Мы использовали Blender и Python для создания каркаса чата.Июль 2007 Linux Format 79 Hardcore Linux Учебник для web-картин var canvas = document.getElementById(‘canvas’); ctx = canvas.getContext(“2d”); ctx.strokeRect(50, 50, 100, 100); ctx.stroke(); ctx.fillRect(100, 100, 100, 100); ctx.fill(); Большая часть функций понятна: strokeRect() рисует прямоуголь-ник, fillRect() его заполняет. У strokeRect() и fillRect() похожие пара-метры – x и y верхнего левого угла прямоугольника, а также ширина и высота. Canvas ведет отсчет от левого верхнего угла, то есть 50, 50 означает 50 пикселей слева и 50 пикселей сверху. Тем, кто привык мыслить в терминах координат обычных графиков, тут легко и запу-таться! Заметим также, что нам надо вызывать функции .stroke() и .fill(). Не забудьте это сделать, иначе останетесь с пустым холстом. Цвет линий и заливки устанавливается на холсте с помощью lineStyle и fillStyle, которые принимают похожие аргументы. Самый простой способ ввести цвет – указать его: ctx.lineStyle=’red’ – или обозначить шестнадцатеричным числом: ctx.lineStyle=’#a0b0c0’;. Для получения прозрачности предусмотрен альфа-канал в функции rgba(), принимающей четыре параметра: красный, зеленый, синий и альфа. Например: ctx.lineStyle = ‘red’; ctx.fillStyle = ‘rgb(200, 100, 0, 0.5)’; Когда две линии пересекаются, стиль их сочленения можно выбрать с помощью lineJoin: ctx.lineJoin = ‘curve’; Две последние важные концепции – перенос и поворот. Перенос – это передвижение в другую точку холста; поворот, очевидно, и есть поворот холста. Оба действия производятся до того, как вы начнете рисовать. Например, если вы хотите нарисовать прямоугольник под 45°, то сначала вам надо добавить функцию поворота: ctx.rotate(-45 * Math.PI /180); ctx.strokeRect(50, 50, 100, 100); ctx.stroke(); Все эти настройки внутри холста, то есть lineStyle, fillStyle, поворот и перенос, можно сохранять в стеке состояний, а потом брать их отту-да. Это позволяет понаделать кучу стилевых настроек, а затем разом их отменить, закончив рисование: ctx.save(); //Сохранить текущее состояние, чтобы мы могли его восстановить ctx.rotate(-45 * Math.PI /180); ctx.lineStyle = ‘blue’; ctx.strokeRect(50, 50, 100, 100); //нарисовать прямоугольник ctx.stroke(); ctx.restore(); //восстановить lineStyle и поворот Функции save и restore очень полезны, если вы производите много переносов и поворотов: они избавят вас от необходимости держать в памяти всю серию изменений. Рисование фигур Чтобы создать коллекцию фигур-шаблонов, заготовим пару полезных объектов: обертку холста и обертку фигуры. Обертка фигуры пред-ставляет наибольший интерес – она инкапсулирует различные слож-ные фигуры. Обертка холста будет следить за размещением фигур на холсте. function draw() { ic = new iCanvas(‘canvas’); //добавьте здесь все свои фигуры setupInteraction(); } function setupInteraction() { /* мы рассмотрим ее позднее*/} iCanvas = {}; iCanvas = Class.create(); iCanvas.prototype = { /* ..вырезано.. */} //используется для инкапсуляции фигур iShape = {}; iShape = Class.create(); iShape.prototype = { /** ..вырезано... **/} //рисование будет проходить в этой функции renderShape : function() { }, } Полная версия исходного кода доступна по адресу www.linuxformat. co.uk/mag/canvas.htm, но единственной важной частью является renderShape(), так как все, что мы будем туда писать, будет родным кодом холста – другие функции (например, drawShape()) добавляются для упрощения кодирования. JavaScript сопровождается HTML-страницей, которая вызывает функцию draw() в момент загрузки. Следующий пример немного прояснит ситуацию. Нарисуем простой прямоугольник – скопируйте следующий код в функцию draw() выше, где написано добавьте здесь все свои фигуры. Он создает экземпляр класса shape и использует функцию strokeRect(). Для рисования фигуры вызывается функция drawShape обертки холста: box = new iShape(); box.renderShape = function() { //this.c это контекст холста this.c.fillRect(0, 0, 100, 100); this.c.strokeRect(0, 0, 100, 100); this.c.stroke(); } ic = new iCanvas(‘canvas’); //теперь рисуем фигуры ic.drawShape(box, {x : 200, y : 100}); ic.drawShape(box, {x : 100, y : 100}); ic.drawShape(box, {x : 250, y : 150}); Нарисовав объект, превратите его шаблон для многократного использования.80 Linux Format Июль 2007 Учебник Hardcore Linux Для глаза использованы кривые второго порядка, радиальные градиенты и дуги. Я вызывал drawShape несколько раз, чтобы показать, как можно повторно использовать фигуру после ее создания. Просто передайте объект и некоторые новые ссылки, и готово – получена новая копия фигуры. Все, что делается с тэгом canvas, можно, по большей части, зало-жить в объект фигуры и повторно использовать его на холсте. Теперь нарисуем более сложный пример: дачный домик. Это всего лишь набор прямоугольников и треугольников: house = new iShape(); house.renderShape = function() { this.c.fillStyle = ‘white’; this.c.fillRect(0, 0, 100, 100); //ставим белый фон this.c.strokeRect(0, 0, 100, 100); this.c.fill(); this.c.strokeRect(20, 60, 20, 40); //дверь //окна this.c.fillStyle = “rgba(0, 0, 250, 0.3)”; this.c.fillRect(60, 60, 20, 20); this.c.fillRect(20, 20, 20, 20); this.c.fillRect(60, 20, 20, 20); this.c.fill(); this.c.fillStyle = “rgba(250, 0, 0, 0.3)”; this.c.moveTo(0,0); this.c.lineTo(50,-30); this.c.lineTo(100,0); this.c.fill(); this.c.stroke(); } fillStyle использует функцию rgba(), позволяющую нам устано-вить прозрачность. Вы можете установить прозрачность «для всего» с помощью .globalAlpha=0.5;. Часть lineTo рисует отрезок на холсте [от текущего положения] до точки (x,y). В данном примере мы используем ее для рисования крыши. Как и в предыдущем примере, мы можем повторно использовать объекты на холсте с помощью функции drawShape(). Написав ic.drawShape(house, {x : 200, y : 100}); ic.drawShape(house, {x : 300, y : 100}); ic.drawShape(house, {x : 400, y : 100}); вы отстроите целую уличку. Градиенты, дуги и кривые Градиенты используются как стили заливки – создайте объект гра-диента и используйте его для установки fillStyle перед рисованием. Градиенты можно сделать как линейными, так и радиальными, с помощью функций createLinearGradient и createRadilGradient соот-ветственно. Сам градиент – это набор цветовых переходов, добав-ляемых с помощью addColorStop. Увидеть – значит понять; вот и посмотрите на градиент от красного до зеленого, затем синего и, наконец, белого. gradbox = new iShape(); gradbox.renderShape = function() { var gradient = this.c.createLinearGradient(0, 0, 0, 100); //создать градиент – градации от x1,y1 до x2,y2 gradient.addColorStop(0, ‘red’); gradient.addColorStop(0.25, ‘green’); gradient.addColorStop(0.75, ‘blue’); gradient.addColorStop(1, ‘white’); this.c.fillStyle = gradient; this.c.fillRect(0, 0, 100, 100); } ic.drawShape(gradbox, {x : 300, y : 300}); Функция createLinearGradient задает направление градиента – в нашем случае, вертикальное, от 0,0 до 0,100. Каждая из строк .addColorStop устанавливает цвет в соответствующий точке. Ноль (начало) – это красный, сливающийся с зеленым на четверти пути (0.25), затем синий на трех четвертях и белый в конце (1). Поиграйте с цветами и значениями в addColorStop – например, попытайтесь изме-нить 0.25 на 0.5, а 0.75 на 0.9. Радиальные градиенты работают так же, как и линейные, исполь-зуя «цветовые шаги», но создаваемый градиент не вертикальный, а проходящий от центра одного круга до границы другого, следующим образом: gradblob = new iShape(); gradblob.renderShape = function() { var gradient = this.c.createRadialGradient( 50, 50, 1, 50, 50, 100 ); gradient.addColorStop(0, ‘rgba(0,0,228,1)’); gradient.addColorStop(1, ‘rgba(228,0,0,0.5)’); this.c.fillStyle = gradient; this.c.fillRect(0, 0, 100, 100); } ic.drawShape(gradblob, {x : 200, y : 200}); Синтаксис примерно тот же, так что можете сразу начинать экспе-рименты с радиальными градиентами. Их можно даже создавать меж-ду двумя не выровненными окружностями – попробуйте установить this.c.createRadialGradient(50, 50, 1, 5, 5, 100). Теперь займемся кривыми. Тэг canvas предлагает несколько спосо-бов создания кривых, одна из которых – дуга, позволяющая рисовать круги на холсте: this.c.arc(50, 50, 20, 0, 2*Math.PI, false); Первые и второй аргументы определяют центр дуги, а третий – радиус. Четвертый аргумент – угол начала дуги, пятый – конца. Шестой определяет, рисовать круг по часовой стрелке или против. Чудненько. Но для рисования более сложных кривых лучше исполь-зовать quadraticCurveTo или bezierCurveTo. В следующем примере мы возьмем quadraticCurveTo и нарисуем глаз, точнее, верхнее и нижнее веки. Потом, чтобы правильно выровнять глаза, повернем холст на 45° с помощью функции rotate(). Аргументами для quadraticCurveTo являются координаты x и y исходной точки и точки назначения. Точка назначения определяет, куда вести кривую. Если вы незнакомы с таким типом кривых, пос-мотрите, как меняется кривая при изменении первых двух аргумен-тов. Добавив градиент к дугам, нарисуем пару-тройку вытаращенных глаз: eye = new iShape(); eye.renderShape = function() { this.c.save(); this.c.beginPath(); this.c.translate(0, 35); this.c.rotate(-45 * Math.PI /180); this.c.moveTo(0, 0); this.c.quadraticCurveTo(100, 0, 100, 100); this.c.quadraticCurveTo(0, 100, 0, 0); this.c.stroke(); this.c.closePath(); this.c.beginPath(); //рисуем дугу this.c.arc(50, 50, 20, 0, 2*Math.PI, false); this.c.globalAlpha = 0.5; var g = this.c.createRadialGradient( 50, 50, 1, 50, 50, 20 ); g.addColorStop(0, ‘rgba(0,0,228,1)’); g.addColorStop(1, ‘rgba(228,199,0,0)’); //this.c.fillStyle = ‘green’; Функции save() и restore() позволяют восстанавливать перенос, поворот, стиль линии и другие настройки, не запоминая каждую из них. Сохраните холст с базовой позицией и стилем, и после рисования окружности, дома, диаграммы или чего угодно вы сможете вызвать restore() и вернуться в исходное Скорая помощьИюль 2007 Linux Format 81 Hardcore Linux Учебник Через месяц Сложные скрипты DCOP* (*если они не заработают, придумаем что-нибудь другое) Попробуйте еще Не останавливайтесь на достигнутом – попробуйте другие функции... createPattern() превращает изображения или другие объекты canvas в шаблоны для многократного использования. clearRect(x2,y1,x2,y2) очищает кусок холста. clip() создает путь отсечения так, что вы можете ограничить холст определенной фигурой, например, кругом или сложным многоугольником. Проект завершен: несколькими строками кода вы можете создавать простые приложения для рисования любых изображений и диаграмм. Ресурсы http://developer.mozilla.org/en/docs/Canvas_tutorial Руководство от Mozilla, описывающее все доступные функции. http://canvaspaint.org Полюбуйтесь на canvas-версию старой программы Paint. www.whatwg.org/specs/web-apps/current-work/#the-canvas WHATWG-спецификация canvas. this.c.fillStyle = g; this.c.fill(); this.c.stroke(); this.c.closePath(); this.c.restore(); } ic.drawShape(eye, {x : 100, y : 100}); ic.drawShape(eye, {x : 300, y : 100}); Вы, наверное, заметили, что мы ввели новые функции для глаза: beginPath() и closePath(). Path, контур – это то, что функции fill() и stroke() заполняют и вдоль чего рисуют. На глазе мы закрыли один путь и начали другой, так как круги посреди глаза не соединяются с кривыми второго порядка, образующими верхнюю и нижнюю часть глаза. Закомментируйте this.c.closePath() и this.c.beginPath() посреди глаза и посмотрите на результат: у вас получится линия от левой сто-роны глаза до центра окружности. Так как путь между концом кривой и началом дуги не закрыт, метод stroke соединяет их. Изображения можно помещать на холст с помощью drawImage(). Эта функция принимает в качестве аргументов объект изображения JavaScript и x /y координаты, но если вы хотите избежать возникнове-ния исключения «не доступно», изображение должно быть загружено до drawImage(). Далее, как и с линиями и заполнением, вы можете повернуть холст до того, как нарисуете изображение, используя функ-цию .rotate(): this.c.rotate(-45 * Math.PI /180); Взаимодействие с холстом Картинки рисовать мы научились. Но ключевая задача сети – обеспе-чить взаимодействие пользователя с объектами. На нашем уроке мы реализовали возможность создания копий фигур всего одной строкой кода, drawShape(). Форма каждого объекта может быть сколь угод-но сложной – изображение, кривые, штрихи и так далее. Чтобы пре-вратить этот скромный базис в простую программу рисования, надо просто следить за событиями мыши. Я собираюсь использовать Script. aculo.us, коллекцию интерфейсных библиотек JavaScript, для отслежи-вания событий мыши, а код поставляется вместе с примером на сайте. Вы можете использовать любую подобную среду. Цель этого примера – рисовать фигуру на холсте по щелчку мыши с помощью drawShape(). На текущий момент единственной фигу-рой является домик. Мы будем слушать любые щелчки мыши для id canvas. function setupInteraction() { currentDrawShape = house; new Event.observe( ‘canvas’, ‘click’, function(evt) { ic.drawShape(currentDrawShape, {x : Event.pointerX(evt), y : Event.pointerY(evt)}); } ); } Вызов setupInteraction() в конце функции draw() позволяет поме-щать объекты на холст с помощью мыши. Пока от него мало проку, разве что вы затеяли нарисовать много-много домиков. Куда полезнее будет позволить пользователю самому выбирать из доступных фигур-шаблонов – как в Dia или OmniGraffe. На уровне кода, для того, чтобы изменить изображение, которое мы рисуем, достаточно изменить зна-чение currentDrawImage. Поэтому, если вы добавите строку currentDrawShape = eye; в setupInteraction(), то будете рисовать глаза вместо домов. Включим функцию addOption() для добавления фигуры в перечень шаблонов: function addShapeOption(shape, name) { shapeOptions[name] = shape; $(‘slist’).innerHTML += ‘

  • ’+name+’
  • ’; } Это хороший способ для пользователя выбрать текущий шаблон currentDrawShape, и все, что нам надо сделать для активации опции, это вызвать функцию addShapeOption(theShapeObject, ‘name of object’); В заключительной версии исходного кода на сайте каждая фигу-ра сама добавляет себя в список, а пользователь может из него выбирать. Тэг canvas будет одним из самых интересных добавлений в спе-цификацию HTML, c учетом огромного интереса к нему в так называ-емых средах Web 2.0. Ныне доступные примеры покамест довольно примитивны, но потенциал огромен. Уже создаются библиотеки для графиков, и комбинируя их с простыми действиями, можно добиться поразительных – и полезных – приложений. LXF82 Linux Format Июль 2007 Учебник GTK+ В прошлый раз мы начали работу над демо-приложением GNOME – текстовым редактором. До сих пор в этой программе собственно «гномовского» было не так уж много: только код инициализации. На этот раз мы рассмотрим некоторые функции, отно-сящиеся исключительно к GNOME; но сначала – немного визуального программирования. Редактирование меню Заготовка главного меню нашей программы содержит пункт Вид (View), однако само это меню пустое. Добавим в меню Вид новую команду Шрифт..., позволяющую выбрать шрифт для отображения текста. Щелкните правой кнопкой мыши по строке главного меню в окне формы приложения и в открывшемся контекстном меню выбери-те команду Правка меню... (Рис. 1). Рис. 1. Редактор меню Glade. Список названий пунктов меню отражает существующие между ними иерархические отношения. Сдвиг строки вправо означает переход к следующему уровню вложенности меню. С помощью кнопок Добавить и Добавить подчиненный в меню можно добавить новый пункт. При добавлении нового подчиненного пункта необходимо указать для него родительский пункт меню. Если мы потом передумаем, то с помощью клавиш навигации сможем переместить уже созданный пункт в другую группу или на другой уровень вложенности. Раскрывающийся список Встроенный элемент позволяет присво-ить новому пункту меню свойства одного из стандартных элементов меню (эти встроенные элементы используют пункты меню, созданные автоматически). Строка ввода Метка позволяет указать название пун-кта меню. Нижний дефис в названии пункта меню отмечает подчерк-нутый символ, который нужно вводить в сочетании с Alt для быстрого доступа к этому пункту. Строка ввода имя позволяет указать имя объ-екта GtkImageMenuItem, соответствующего пункту меню. В строке вво-да Обработчик указывается имя функции-обработчика сигнала activate, посылаемого командой меню. Комбинированный раскрывающийся список Иконка позволяет указать пиктограмму, которая будет отобра-жаться рядом с командой меню. Можно загрузить собственную пикто-грамму из файла либо использовать одну из стандартных пиктограмм, установленных в системе. Для создаваемого нами пункта меню Шрифт... выберем стандарт-ную пиктограмму gtk-select-font. Остальные элементы редактора меню нам сейчас не интересны, так что мы их опустим (читателю, как всег-да, рекомендуется обратиться к документации). Щелкните кнопку OK. Теперь у нас есть новая команда меню, для которой нужно написать обработчик (функция on_fontselect_activate()). Для выбора шрифта используйте уже знакомое нам диалоговое окно GtkFontSelectionDialog. Полный код обработчика вы найдете на диске, мы на нем останавли-ваться не будем. Буфер обмена GTK+ и GNOME Интерфейс буфера обмена в GTK+ основан на структуре GtkClipboard. Мы получаем доступ к этой структуре с помощью функции gtk_ clipboard_get(). Первый вызов gtk_clipboard_get() создает экземп-ляр структуры, которая переходит под управление GTK+ (так что мы не должны удалять ее явным образом). При последующих вызовах gtk_clipboard_get() возвращает указатель на существующую структуру GtkClipboard. При работе с X Window следует учесть, что система поддерживает как минимум два буфера обмена (теоретически их может быть и боль-ше). Если вы используете команду меню Правка | Копировать, данные обычно попадают в буфер обмена, связанный с атомом CLIPBOARD. В то же время любые данные, выделенные мышью в окне X-программы, заносятся в буфер обмена, связанный с атомом PRIMARY (вставка дан-ных из этого буфера обычно выполняется с помощью щелчка средней кнопкой мыши). Вообще говоря, X-программы вольны интерпретиро-вать оба буфера так, как им заблагорассудится. На практике это иног-да приводит к тому, что результаты вставки данных из буфера обмена оказываются несколько неожиданными. Погружение GTK+ Разработка переносимых приложений с графическим интерфейсом пользователя ЧАСТЬ 8 Мы уже успели замочить ножки в океане возможностей, которые предоставляет GNOME – и сейчас самое время зайти поглубже. Андрей Боровский проверяет, теплая ли водичка. Месяц назад Мы изучали среду Anjuta и невзначай написали простой текстовый редактор.Июль 2007 Linux Format 83 GTK+ Учебник Код примеров статьина DVD в GNOME Интерфейс буфера обмена GTK+ позволяет работать со всеми буферами обмена X. GTK+ поддерживает размещение данных в буфе-рах обмена в нескольких форматах и отложенную запись. Организовать передачу данных между буфером обмена и экземп-ляром GtkTextBuffer очень просто. Ниже приводится текст обработчика сигнала меню copy1_activate нашего текстового редактора (этот сигнал генерирует команда Правка | Копировать). void on_copy1_activate (GtkMenuItem * menuitem, gpointer user_data) { char * atom = gdk_atom_name(“CLIPBOARD”); GtkClipboard * cb = gtk_clipboard_get(atom); g_free(atom); gtk_text_buffer_copy_clipboard(textbuffer, cb); } Вызывая gtk_clipboard_get(), мы передаем этой функции X-атом, идентифицирующий буфер обмена, который мы хотим открыть, и получаем строку с именем атома с помощью функции gdk_atom_ name(). Функция gtk_text_buffer_copy_clipboard() копирует в буфер обмена строку текста, выделенную в текстовом буфере GtkTextBuffer (программно или с помощью интерфейса пользователя). Первым параметром функции, копирующей данные, должен быть указатель на объект GtkTextBuffer, вторым параметром – указатель на объект GtkClipboard. Для вставки данных из буфера обмена в текстовый буфер применяется функция gtk_text_buffer_paste_clipboard(), которой, поми-мо прочего, следует передать итератор, указывающий, где именно в тексте должна быть вставлена строка из буфера обмена (при использо-вании текстового буфера вместе с GtkTextView вместо итератора функ-ции можно передать NULL). Разумеется, у буфера обмена есть и собственный API, который можно применять независимо от других компонентов GTK+/GNOME. Для передачи в буфер обмена строки текста в общем случае использу-ется функция gtk_clipboard_set_text(). Первым параметром этой функ-ции должен быть указатель на объект GtkClipboard. Второй и третий параметры, соответственно, строка текста с нулевым конечным симво-лом и длина строки в байтах (напомню, что в GTK+ и GNOME по умол-чанию используется кодировка UTF-8). Для передачи в буфер обмена растрового графического объекта служит функция gtk_clipboard_set_ image(). У этой функции всего два параметра: указатель на объект GtkClipboard и указатель на объект GdkPixBuf, содержащий данные растрового изображения. Если вы хотите поместить в буфер обмена данные в нескольких форматах или реализовать отложенную запись, все становится более сложным. В этом случае ваша программа должна объявить системе, что она готова передать в буфер обмена данные в определенных фор-матах и зарегистрировать функции обратного вызова, которые будут выполнять их фактическую обработку. Когда данные понадобятся, эти функции будут вызваны системой. Рассмотрим пример – фрагмент программы, копирующей в буфер строку текста: void cb_get_func(GtkClipboard * clipboard, GtkSelectionData * selection_ data, guint info, gpointer user_data) { char * str = “Данные для буфера обмена”; gtk_selection_data_set_text(selection_data, str, strlen(str)); } void cb_clear_func(GtkClipboard * clipboard, gpointer user_data) { //Nothing to do } void on_copy1_activate (GtkMenuItem * menuitem, gpointer user_data) { static const GtkTargetEntry targets[] = { { “UTF8_STRING”, 0, GDK_TARGET_STRING } }; char * atom = gdk_atom_name(“CLIPBOARD”); GtkClipboard * cb = gtk_clipboard_get(atom); g_free(atom); gtk_clipboard_set_with_data(cb, targets, 1, cb_get_func, cb_clear_func, NULL); } Процесс записи данных в буфер обмена инициирует все тот же обработчик on_copy1_activate(). Регистрация форматов данных в буфере обмена начинается с создания списка форматов в виде мас-сива структур GtkTargetEntry. Мы немного упростили себе жизнь за счет того, что сконструировали этот массив (который в нашем случае состоит из одного элемента) статически. В сложных программах спи-сок форматов, в которых копируются данные, может быть заранее неизвестен, и тогда его придется создавать динамически, с помощью интерфейса структуры GtkTargetList. Получив указатель на объект GtkClipboard, мы вызываем функцию gtk_clipboard_set_with_data(). Эта функция регистрирует список фор-Рис. 2. Рис. 3.84 Linux Format Июль 2007 Учебник GTK+ матов данных, которые программа может передать в буфер обмена (третий параметр функции – количество элементов в массиве targets), и передает системе адреса двух функций обратного вызова. Первая функция (cb_get_func()) будет вызвана для того, чтобы передать в буфер обмена данные в запрошенном формате. Вторая функция (cb_ clear_func()) должна оповестить программу о том, что содержимое буфера обмена было перезаписано другим приложением (и ресурсы, выделенные нашей программой для буфера обмена, можно освобо-дить). Последний параметр функции gtk_clipboard_set_with_data() – указатель, который будет передан функциям обратного вызова: его можно использовать для передачи функциям произвольных данных. Поскольку в нашем примере мы не выделяли динамически никаких ресурсов для работы с буфером, в функции cb_clear_func() не нужно ничего и высвобождать. Рассмотрим подробнее функцию cb_get_func(). Помимо проче-го, этой функции передается указатель на объект GtkSelectionData. Данные записываются в буфер с помощью функций, связанных с этим объектом. Для записи данных в текстовом формате используется функция gtk_selection_data_set_text(). Запись в буфер обмена растро-вой картинки выполняется функцией gtk_selection_data_set_pixbuf(), а для передачи списка ссылок на ресурсы (сетевые или файловые) применяется функция gtk_selection_data_set_uris(). Обратите внима-ние на параметр info функции cb_get_func(). Этот параметр содержит идентификатор формата, в котором система желает получить данные. Поскольку мы зарегистрировали только один формат, значение info можно не проверять. В параметре user_data функциям обратного вызо-ва передается указатель на дополнительные данные. Зарегистрировать форматы данных и функции обратного вызова можно также с помо-щью функции gtk_clipboard_set_with_owner(), которая отличается от gtk_clipboard_set_with_data() только тем, что в качестве дополнитель-ного параметра функциям обратного вызова передается указатель GObject *, а не gpointer. Для вставки данных из буфера обмена также реализованы два интерфейса. Вы можете зарегистрировать функцию, которая будет вызвана системой при появлении в буфере обмена данных. Регистрация функций обратного вызова для вставки данных выполняется с помо-щью функций семейства gtk_clipboard_request_XXX(). Хотя функция обратного вызова регистрируется gtk_clipboard_request_XXX() для приема определенного типа данных, она будет вызвана в ответ на передачу в буфер любых данных. Если в буфере обмена появились данные в неподходящем формате, функции обратного вызова будет передано значение NULL. Если вы не хотите иметь дело с обратными вызовами, воспользуйтесь функциями gtk_clipboard_wait_for_text() и gtk_clipboard_wait_for_image() и им подобными. Эти функции сами возвращают данные из буфера обмена и не требуют использования обратных вызовов. Виртуальная файловая система GNOME Как и KDE, GNOME стремится объединить файловые ресурсы сети и локальные файловые ресурсы в единое файловое пространство. С этой целью в GNOME, как и в KDE, реализован дополнительный уро-вень абстракции поверх файловой системы. Виртуальная файловая система GNOME (GNOME VFS) предоставляет единый интерфейс про-граммирования для доступа к самым разным ресурсам, которые могут быть представлены в виде файлов, а также включает множество функ-ций, упрощающих работу с файлами. Рассмотрим функцию open_file() нашего текстового редактора (листинг сокращен): void open_file(char * file_name) { GnomeVFSHandle * file_handle; GnomeVFSFileInfo * file_info; GnomeVFSFileSize bytes_read; gpointer buf; if (gnome_vfs_open(&file_handle, file_name, GNOME_VFS_OPEN_READ) != GNOME_VFS_OK) { //Сообщить пользователю об ошибке. } strncpy(filename, file_name, 256); gtk_text_buffer_set_text(textbuffer, “”, 0); file_info = gnome_vfs_file_info_new(); gnome_vfs_get_file_info_from_handle(file_handle, file_info, GNOME_VFS_FILE_INFO_DEFAULT); buf = g_malloc(file_info.size); gnome_vfs_read(file_handle, buf, file_info.size, &bytes_read); gtk_text_buffer_set_text(textbuffer, buf, bytes_read); g_free(buf); gnome_vfs_file_info_unref(file_info); gnome_vfs_close(file_handle); gtk_text_buffer_set_modified(textbuffer, FALSE); } Функции GNOME VFS API объявлены в заголовочном файле libgnomevfs/gnome-vfs.h (сама библиотека libgnomevfs включена в про-ект приложения GNOME, созданный в Anjuta, по умолчанию). Систему GNOME VFS следует инициализировать при помощи функции gnome_ vfs_init() (эту функцию достаточно вызвать один раз). По окончании работы с GNOME VFS мы вызываем функцию gnome_vfs_shutdown(). Для работы с файлами GNOME VFS предоставляет набор функций, похожих на функции POSIX. Файл открывается с помощью функции gnome_vfs_open(). В отли-чие от функций POSIX, gnome_vfs_open() не возвращает дескриптор файла: функция возвращает константу, указывающую статус завер-шения операции. Роль дескриптора файла при работе с функциями GNOME VFS выполняет значение типа VFSHandle (адрес переменной, в которую будет записан указатель на переменную типа VFSHandle, передается функции gnome_vfs_open() в первом параметре). Второй параметр gnome_vfs_open() – имя открываемого файла, а в третьем параметре функции передаются флаги, описывающие то, для чего открывается файл (GNOME_VFS_OPEN_READ – для чтения, GNOME_ VFS_OPEN_WRITE – для записи, и т.д.). Вы можете преобразовать дескриптор файла в VFSHandle с помо-щью функции gnome_vfs_open_fd(). Функция gnome_vfs_read() пред-назначена для чтения данных из файла. Как и gnome_vfs_open(), она возвращает информацию о статусе выполняемой операции. Все остальные результаты передаются через параметры. Первый параметр gnome_vfs_read() – указатель на VFSHandle файла, из которого нужно читать данные. Далее следуют указатель на буфер для данных, раз-мер буфера и указатель на переменную, в которую функция запишет, сколько байтов ей удалось прочитать. Для записи данных использует-ся функция gnome_vfs_write() с тем же списком параметров, что и у gnome_vfs_read(). Закончив работу с файлом, мы закрываем его, используя функ-цию gnome_vfs_close(). Получить информацию об открытом файле (по крайней мере, о файле локальной файловой системы) можно с помощью функции gnome_vfs_get_file_info_from_handle(). Ее первым параметром должен быть указатель на идентификатор открытого фай-ла VFSHandle, вторым параметром – указатель на экземпляр структуры GnomeVFSFileInfo, в который будут записаны сведения о файле, а тре-тьим параметром – комбинация флагов, указывающих, какие именно данные мы хотим получить. Экземпляр GnomeVFSFileInfo создается с помощью функции gnome_ vfs_file_info_new(). Функция gnome_vfs_file_info_unref() уменьшает внутренний счетчик ссылок структуры GnomeVFSFileInfo и удаляет структуру при обнулении счетчика. Структура GnomeVFSFileInfo содер-жит множество полей, но не все они заполняются по умолчанию (это сделано, в том числе, ради быстродействия). Специальные флаги заставляют функцию gnome_vfs_get_file_info_from_handle() возвра-щать дополнительные сведения о файле. Помимо функции gnome_vfs_ get_file_info_from_handle(), есть еще функция gnome_vfs_get_file_info(), позволяющая получить информацию о файле, заданным своим име-нем. Для работы со структурой GnomeVFSFileInfo определено несколь-Июль 2007 Linux Format 85 GTK+ Учебник GnomeVFSResult res; if ((res = gnome_vfs_directory_open(&handle, dir_name, GNOME_VFS_ FILE_INFO_FOLLOW_LINKS)) != GNOME_VFS_OK) { g_print(“failed to open the directory: %s\n”, gnome_vfs_result_to_string(res)); return res; } file_info = gnome_vfs_file_info_new(); while ((res = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK) { g_print(“name: %s\n”, file_info->name); g_print(“type: “); switch(file_info->type) { case GNOME_VFS_FILE_TYPE_REGULAR: g_print(“file\n”); break; ... case GNOME_VFS_FILE_TYPE_UNKNOWN: g_print(“unknown\n”); break; } g_print(“size: %lli\n\n”, file_info->size); gnome_vfs_file_info_clear(file_info); } gnome_vfs_directory_close(handle); gnome_vfs_file_info_unref(file_info); if (res != GNOME_VFS_ERROR_EOF) { g_print(“Error reading the directory: %s\n”, gnome_vfs_result_to_string(res)); return res; } return 0; } Мы открываем директорию для чтения с помощью функции gnome_vfs_directory_open(). Открытая директория идентифицируется в GNOME VFS значением типа GnomeVFSDirectoryHandle (адрес перемен-ной, которой должен быть присвоен указатель на это значение, пере-дается как первый параметр функции gnome_vfs_directory_open()). Во втором параметре функции передается имя директории, которую вы хотите открыть, а в третьем – набор флагов, определяющих, какие дан-ные о дочерних элементах директории вы хотите получать (эти флаги – того же типа, что и флаги функции vfs_get_file_info()). Как и все функции GNOME VFS API, gnome_vfs_directory_open() воз-вращает численный код, свидетельствующий о том, была ли она выпол-нена и какие возникли ошибки. Мы можем получить соответствующую этому коду строку пояснения на английском языке с помощью функ-ции gnome_vfs_result_to_string(). Когда работа с директорией законче-на, она закрывается с помощью функции gnome_vfs_directory_close(). Для чтения содержимого директории предназначена функция gnome_ vfs_directory_read_next(), которая записывает в переменную file_info информацию о следующем элементе каталога и возвращает значение GNOME_VFS_ERROR_EOF, если прочитана вся директория. Мы считы-ваем информацию о директории из полей file_info. Если одна и та же структура GnomeVFSFileInfo используется в программе несколько раз, перед повторным использованием ее следует очищать с помощью функции gnome_vfs_file_info_clear(). Конечно, в программах GNOME можно обойтись и без GNOME VFS, но использование этой системы позволяет значительно расширить функциональность программы без особых трудозатрат со стороны программиста. Библиотеки GNOME VFS – лишь часть обширного набо-ра библиотек GNOME. Вспомогательным библиотекам GNOME будет посвящена следующая, заключительная статья этой серии. LXF ко дополнительных функций, более или менее подробное описание которых можно найти в документации GNOME. Чтобы создать новый или перезаписать уже существующий файл, применяется функция gnome_vfs_create(). Первые три параметра у этой функции те же, что и у gnome_vfs_open(). В четвертом параметре функции передается значение типа gboolean, указывающее, должна ли функция перезаписать файл, если он уже существует. В пятом пара-метре следует передать маску разрешений для создаваемого файла. У функций GNOME VFS, работающих с именем файла в текстовом фор-мате, есть аналоги с окончанием _uri. Этим функциям вместо строки с именем файла передается указатель на структуру GnomeVFSURI, кото-рая упрощает работу с универсальными идентификаторами ресурсов. В чем же преимущество функций GNOME VFS API перед функция-ми POSIX? Предположим, нам нужно загрузить в с Web-сайта документ www.somesite.com/somefile.txt. Нет ничего проще – открываем файл для чтения: gnome_vfs_open(&file_handle, “http://www.somesite.com/somefile.txt”, GNOME_VFS_OPEN_READ); Префикс http://надо указывать обязательно, иначе система не узна-ет, какой модуль виртуальной файловой системы должен использо-ваться для загрузки ресурса. Дальше данные можно считывать с помо-щью gnome_vfs_read(). Загрузить файл на FTP-сайт тоже очень просто. Создаем или перезаписываем файл, например: gnome_vfs_create(&file_handle, “ftp://user:password@somesite.com/home/user/somefile.txt”, GNOME_VFS_OPEN_WRITE, FALSE, 0666); Затем данные записываются в новый файл с помощью gnome_ vfs_write() (для работы с идентификаторами FTP-ресурсов лучше использовать структуру GnomeVFSURI и соответствующие функции). Благодаря GNOME VFS мы получаем возможность использовать еди-ный интерфейс и одну программную логику для доступа к самым раз-ным ресурсам. Отличия могут быть связаны только с быстродействием. Если программа ориентирована прежде всего на работу с локальными файлами, чаще используют блокирующие функции в главном пото-ке (как и мы в рассмотренном примере). Если программа нацелена на работу с ресурсами Глобальной сети, лучше использовать потоки GNOME или асинхронные функции ввода/вывода GNOME VFS. Единый интерфейс работы с разными ресурсами реализуют моду-ли GNOME VFS. Модули GNOME VFS поддерживают работу с HTTP, FTP, защиту данных с помощью SSL и низкоуровневую работу с сокетами. Вообще говоря, модули GNOME VFS позволяют представить в виде файловых систем множество самых разных источников данных, а если нужного именно вам модуля в системе нет, вы можете написать его сами – это не так уж и трудно. GNOME VFS позволяет конвейеризовать консольные утилиты прямо в строке идентификатора ресурса c помо-щью разделителя #. Таким образом, можно приказать системе, чтобы она загрузила с web-сайта архив tar.gz, распаковала его на лету и пере-дала программе данные для чтения. С помощью GNOME VFS можно работать с MIME-типами, осущест-влять мониторинг изменения файлов, директорий и монтирования файловых систем и многое-многое другое. Есть у GNOME VFS и набор специальных функций для работы с директориями. Рассмотрим фрагмент консольной программы (гра-фический интерфейс? Зачем нам графический интерфейс?) scandir. Функция scan_directory(), определенная в этой программе, сканирует директорию, имя которой передано ей в ее единственном параметре, и распечатывает данные о содержащихся в этой директории файлах. Рассмотрим сокращенный листинг этой функции (полный вариант, как всегда, на диске). int scan_directory(char * dir_name) { GnomeVFSDirectoryHandle * handle; GnomeVFSFileInfo * file_info; Через месяц Мы разберемся с наиболее интересными библиотеками GNOME и подключим к работе C++.86 Linux Format Июль 2007 Учебник Серверные приложения на Java Код примеров статьина DVD Вместо предисловия В предыдущей статье мой коллега Александр Бабаев рассмотрел воп-росы организации и использования БД в Java-приложениях, и в том числе вопросы подключения к БД посредством ConnectionPool. Сегодня мы рассмотрим применение двух паттернов, безуслов-но, оказавших огромное воздействие на проектирование систем – Command и Factory Method. Их применение позволит сделать ваше приложение расширяемым. Команды В LXF92 мы кратко описали стратегии, предназначенные для реализа-ции «Контроллера», и обещали более подробно рассмотреть стратегию Command and Controller. Чтобы выполнить это обещание, нам придется сначала познакомиться с паттерном Command. Задача, которая стоит перед контроллером (сервлетом) при полу-чении управляющего сигнала, как правило, заключается в выполнении последовательности действий, часто атомарной (т.е. обрабатываемой как единое целое). Например, в сервлете AddressBookServlet, реали-зованном в предыдущей статье, метод handleEdit вызывается, когда адрес на который обращается пользователь – это “/edit”. К сожалению, на примере AddressBookServlet мы видим, что при увеличении функциональности web-приложения растёт и количество методов, реализованных в сервлете; класс «засоряется», код стано-вится менее структурированным и читабельным. Решить проблемы с кодом можно, «обернув» методы в специальные классы, которые будут выполнять атомарные операции и предоставлять сервлету стан-дартный интерфейс, предназначенный для этих целей. Для выполнения поставленной задачи воспользуемся паттерном Command. Команды удобны прежде всего тем, что они маскируют конкретную реализацию, находящуюся за интерфейсной прослойкой. Интерфейс остается одним и тем же, независимо от того, с чем работает коман-да [1]. public interface Command { public void execute() throws Exception; } Выше представлен простой интерфейс Command всего с одним методом execute(), который и олицетворяет идею одноименного пат-терна. Он будет нашим стандартым интерфейсом. Более сложная реа-лизация интерфейса включает метод unexecute(). Класс, реализующий интерфейс Command, инкапсулирует в методе execute() обозначенные выше атомарные операции, а в методе unexecute() реализуется меха-низм отмены. Часто методы execute() и unexecute() называют do() и undo(), соответственно. Выделим команды, которые нам необходимо реализовать (отметим удачное разделение на методы): Add, Auth, Edit, View, Remove. Учитывая то, что у наших команд будут некоторые идентичные методы и атрибу-ты, предлагаю создать абстрактный класс AbstractHTTPCommand, в котором они будут собраны. Класс будет реализовывать интерфейс Command, и его наследование автоматически позволит обеспечить необходимый уровень интеграции. Итак, в основе каждой команды Команды и фабрики Java Enterprise Edition Учимся писать клиент-серверные приложения на Java ЧАСТЬ 6 Антон Черноусов готов познакомить вас с очередной партией паттернов, которые помогут сделать ваши приложения еще более гибкими и расширяемыми. Месяц назад Мы освоили подключение к базам данных.Июль 2007 Linux Format 87 Серверные приложения на Java Учебник будет лежать абстрактный класс AbstractHTTPCommand, в котором реализован интерфейс для выполнения операций (на Рис. 1 вы можете видеть диаграмму классов команд нашего приложения). Рис. 1. Диаграмма классов. Определим общие методы для абстрактного класса: initCommand() – предназначен для инициализации команды, makeDataToView() – для подготовки данных для отображения в случае их изменения, outputPage() – метод для переадресации пользователя (он будет пере-несен из AddressBookServlet без изменений) и другие. Ниже представ-лена реализация методов initCommand() и makeDataToView(): protected void initCommand(ServletContext sc, HttpServletRequest aRequest, HttpServletResponse aResponse, String viewPath, String resultPath, String errorPath) { this.setSc(sc); this.setARequest(aRequest); this.setAResponse(aResponse); this.setResultPath(resultPath); this.setErrorPath(errorPath); this.setViewPath(viewPath); } public void makeDataToView() { Map numbers = new HashMap(); Map comments = new HashMap(); for (Map.Entry entry : _addressBook.getContacts().entrySet()) { numbers.put(entry.getKey(), entry.getValue().getNumber()); comments.put(entry.getKey(), entry.getValue().getComment()); } aRequest.setAttribute(“numbers”, numbers); aRequest.setAttribute(“comments”, comments); if (aRequest.getAttribute(“message”) == null) { aRequest.setAttribute(“message”, “”); } } Метод makeDataToView() – существенная часть метода handleView() класса AddressBookServlet. Вы можете удивиться, для чего метод initCommand() содержит так много параметров; это необходимо для того, чтобы в момент создания команды полностью передать ей всю необходимую для ее выполнения информацию. Параметры viewPath, resultPath и errorPath появились не случайно – они предназначены для адресов (видов, если использовать термины MVC), используемых в случае простого отображения данных, удачного и, соответственно, неудачного выполнения команды. Перейдем к реализации самих команд. Рассмотрим, например, метод execute() класса EditHTTPCommand. Он практически полно-стью соответствует первоначальному методу handleEdit класса AddressBookServlet, исключая переадресацию пользователя на кон-кретный вид. public void execute() throws Exception { if (aRequest.getParameter(“number”) == null) { _addressBook.removeContactByNumber(aRequest.getParameter(“ number”)); aRequest.setAttribute(“message”, “Не определено, что редактировать”); outputPage(this.getErrorPath(), aRequest, aResponse); } else if (aRequest.getParameter(“edited”) != null) { _addressBook.editContactByNumber(aRequest. getParameter(“edited”), aRequest.getParameter(“name”), aRequest.getParameter(“number”), aRequest.getParameter(“comment”)); aRequest.setAttribute(“message”, “Контакт \”” + aRequest.getParameter(“name”) + “\” отредактирован”); makeDataToView(); outputPage(this.getResultPath(), aRequest, aResponse); } else { Contact contact = _addressBook.getContactByNumber(aRequest.getParameter(“nu mber”)); aRequest.setAttribute(“action”, “edit”); aRequest.setAttribute(“edit.name”, contact.getName()); aRequest.setAttribute(“edit.number”, contact.getNumber()); aRequest.setAttribute(“edit.comment”, contact.getComment()); outputPage(this.getViewPath(), aRequest, aResponse); } } Остальные команды реализуются аналогичным образом. Исключение из общего процесса рефакторинга кода составит коман-да ViewHTTPCommand, для которой уже реализована большая часть функционала: public void execute() throws Exception { makeDataToView(); outputPage(this.getViewPath(), aRequest, aResponse);} Выполнение любой команды унифицировано и будет выглядеть следующим образом: Command cmd; cmd = new EditHTTPCommand(this.getServletContext(), aRequest, aResponse, “edit.jsp”, “view.jsp”, “view.jsp”); try { cmd.execute(); } catch (Exception e) { e.printStackTrace(); } После создания всех команд контроллер должен преобразиться: лишние методы уйдут, а его главная функция – управление – будет восстановлена: private void handle(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletException, IOException { aRequest.setCharacterEncoding(“utf-8”); String target = aRequest.getRequestURI().substring(aRequest.getContextPath(). length()); Command cmd; if (target.equals(“/”)) { cmd = new ViewHTTPCommand(this.getServletContext(), aRequest, aResponse, “index.jsp”, null, null); } else if (“/add”.equals(target)) { 88 Linux Format Июль 2007 Учебник Серверные приложения на Java cmd = new AddHTTPCommand(this.getServletContext(), aRequest, aResponse, “edit.jsp”, “view.jsp”, null); } else if (“/view”.equals(target)) { cmd = new ViewHTTPCommand(this.getServletContext(), aRequest, aResponse, “view.jsp”, null, null); } else if (“/edit”.equals(target)) { cmd = new EditHTTPCommand(this.getServletContext(), aRequest, aResponse, “edit.jsp”, “view.jsp”, “view.jsp”); } else if (“/remove”.equals(target)) { cmd = new RemoveHTTPCommand(this.getServletContext(), aRequest, aResponse, null, “view.jsp”, null); } else if (“/auth”.equals(target)) { cmd = new AuthHTTPCommand(this.getServletContext(), aRequest, aResponse, “auth.jsp”, “index.jsp”, “auth.jsp”); } else { cmd = new ViewHTTPCommand(this.getServletContext(), aRequest, aResponse, “view.jsp”, null, null); } try { cmd.execute(); } catch (Exception e) { //oopst... e.printStackTrace(); } } С одной стороны, от внедрения паттерна Command в наше web-приложение мы получили следующие преимущества: управление сосредоточилось в одном месте (в методе handle(), представленном выше), код стал более структурированным. С другой стороны, мы пока не добились возможности полного отторжения продукта от разработ-чика (при котором исходный код не передается заказчику), так как для изменения функциональности или доработки приложения (как минимум, при добавлении новой команды) необходимо производить перекомпиляцию. В принципе, ничего непреодолимого нет, в любую программу мож-но внести исправления, но в одни они вносятся проще, чем в другие. Поставим себе задачу сделать внесение исправлений в наше приложе-ние простым. Для этого нам надо: Вынести связи между адресами, командами и видами за пределы приложения. Заложить возможность создания экземпляра команды при наличии ее названия. Изменить процесс вызова конкретной команды, чтобы при расши-рении приложения (дополнении новых команд) не требовалось вно-сить изменения в уже существующий код. Хранение настроек команд Для решения первой из поставленных задач мы не будем «изобретать велосипед» и воспользуемся средствами конфигурирования web-при-ложения. В файл web.xml введем параметры для нашего контроллера: AddressBook ABServlet AddressBookServlet / root rootCommand ViewHTTPCommand rootView index.jsp rootResult null rootError null 0 Для каждого адреса вводится параметр, который мы будем назы-вать ключом (для «/» это «root»). Ключ с добавлением суффикса (Command, View, Result, Error) обозначает конкретный параметр, значе-ние которого мы будем извлекать прямо в приложении. Для получения необходимых данных можно воспользоваться следующим кодом (хотя мы в дальнейшем будем действовать по-другому): ServletContext sc = this.getServletContext(); String key = sc.getInitParameter(“/”); String commandName = sc.getInitParameter(key + “Command”); String commandView = sc.getInitParameter(key + “View”); String commandResult = sc.getInitParameter(key + “Result”); String commandError = sc.getInitParameter(key + “Error”); Аналогичные настройки необходимо сделать для всех адресов, с которыми работает наше приложение («/», «/add», «/auth», «/edit», «/remove», «/view»). Включение в файл конфигурации этих значений поз-волит настраивать web-приложение без исправлений в коде. Создание экземпляра класса по имени Экземпляр класса можно создавать при наличии полного имени, запи-санного в строке, с помощью методов forName() и newInstance() клас-са Class (например, для класса Date: Object o = Class.forName(“java.util. Date”).newInstance()). Если при создании объекта на основе имени класса конструктору необходимо передать ряд параметров, то вос-пользоваться данным методом нельзя, но создать объект возможно с помощью класса java.lang.reflect.Constructor, например: Class c = Class.forName(key); Class[] parameterTypes = new Class[3]; parameterTypes[0] = String.class; parameterTypes[1] = String.class; parameterTypes[2] = String.class; Constructor constructor = c.getConstructor(parameterTypes); Object[] args = new Object[3]; args[0] = “par1”; args[1] = “par2”; args[2] = “par3”; Object o = constructor.newInstance(args); Давайте разберем приведенный пример. Сначала мы создаем экземпляр класса Class по имени key, далее выделяем массив из типов параметров в том количестве и последовательности, как они идут в нужном нам конструкторе. Используя метод getConstructor(), в качест-ве параметра которому мы передаем наш массив, получаем экземпляр класса Conctructor. Если у Conctructor вызвать метод newInstance(args), то мы получим требуемый класс. Осталось разобраться с последней проблемой, в решении которой нам поможет паттерн Factory Method. Фабрика команд Суть паттерна Factory Method заключается в том, что его реализа-ция позволяет создавать экземпляры конкретных объектов, причем в этом случае сохраняется зависимость от абстрактных интерфейсов. Следовательно, данный шаблон в значительной мере может пригодить-ся в процессе активной разработки приложений, при которой конкрет-ные классы обладают высоким уровнем изменчивости, что и требуется для решения последней задачи [2]. Если мы применим идею паттерна Factory Method для создания фабрики команд к нашему web-приложению, оно приобретет свойство Июль 2007 Linux Format 89 Серверные приложения на Java Учебник расширяемости за счет слабосвязанности классов (см. Рис. 2), т.е. класс AddressBookServlet напрямую не будет связан с конкретными командами, а будет взаимодействовать с ними посредством Command и CommandFactory. Ниже представлен ключевой метод getCommand() класса CommanFactory, в котором согласно параметру name извлекаются настройки из файла конфигурации web-приложения и создается экземпляр необходимой команды (метод реализован не оптимально): public Command getCommand(String name, HttpServletRequest aRequest, HttpServletResponse aResponse) { if (name != null) { if (config.getInitParameter(name) != null) { try { String key = config.getInitParameter(name); Class cmd1 = Class.forName(config.getInitParameter(key + “Command”)); try { Class[] parameterTypes = new Class[6]; parameterTypes[0] = ServletContext.class; parameterTypes[1] = HttpServletRequest.class; parameterTypes[2] = HttpServletResponse.class; parameterTypes[3] = String.class; parameterTypes[4] = String.class; parameterTypes[5] = String.class; Constructor constructor = cmd1.getConstructor(parameterTypes); Object[] args = new Object[6]; args[0] = sc; args[1] = aRequest; args[2] = aResponse; args[3] = config.getInitParameter(key + “View”); args[4] = config.getInitParameter(key + “Result”); args[5] = config.getInitParameter(key + “Error”); Command cmd = (Command) constructor. newInstance(args); return cmd; } catch (Exception e) { e.printStackTrace(); return null; } } catch (ClassNotFoundException e) { e.printStackTrace(); return null; }}} return null;} Добавим последний штрих в web-приложение – изменим метод handle класса AddressBookServlet, чтобы он работал с созданной фабрикой: Command cmd; CommandFactory cf = new CommandFactory(this.getServletConfig(), Через месяц Мы приблизим web-приложения к обычному пользователю при помощи технологий AJAX. 1 Тейт, Б. Горький вкус Java: Библиотека программиста. – СПб: Питер, 2003. – 333 с. 2 Мартин, Р.С. Быстрая разработка программ: принципы, примеры, практика. – М.: Издательский дом «Вильямс», 2004. – 752 с.: ил. this.getServletContext()); cmd = cf.getCommand( aRequest.getRequestURI().substring(aRequest.getContextPath().length()), aRequest, aResponse); if (cmd == null) { cmd = cf.getCommand(“/”, aRequest, aResponse); } try { cmd.execute(); } catch (Exception e) { //oopst... e.printStackTrace(); } Предложенная реализация закрывает для пользователя вызов не описанных в конфигурации адресов. Что дальше? Основной целью этой статьи было знакомство с паттернами Command и Factory Method, с чем мы неплохо справились, а заодно провели модернизацию web-приложения. Создание экземпляров команд на основе файла конфигурации web-приложения, наверняка, не самая хорошая идея: более правиль-но выносить их настройку в отдельный файл (который кстати, можно будет менять из самого приложения, необходимо лишь реализовать соответствующие функции). Одно из улучшений, которое можно про-извести – это изменить сами команды: сделать их stateless, то есть не хранящими внутри себя сведения о состоянии. Это улучшение позво-лило бы создать экземпляры команд один раз и использовать их и по мере необходимости. Отметим, что применяя предложенные методы, можно создать приложение, модификация которого возможна без остановки его выполнения, так сказать, «на лету», но это уже тема тема отдельной статьи. LXF Литература Рис. 2. Диаграмма классов, применение фабрики команд.90 Linux Format Июль 2007 Учебник LaTeX Месяц назад Мы разобрались со структурой книжных таблиц и их версткой в LaTeX. LaTeX не просто даёт возможность набирать текст – он позволяет его программировать, а следовательно, перекладывать часть своей работы на компьютер. Привычка думать – одна из самых необычных особен-ностей разумного человека. Она позволяет экономить силы и время. Создаём свои … …команды, окружения и прочее. Возникшая в процессе набора про-стенькая надоедливая проблема наверняка решена, и не один раз. С другой стороны, при нарастающей квалификации бывает проще изоб-рести этот велосипед заново в удобной на текущий момент форме, например: \newcommand{\ee}{\ensuremath{e^{+}e^{-}}\xspace} Новые команды часто создаются для комбинаций, используемых исключительно в математическом окружении. Команда \ensuremath обеспечивает это окружение независимо от текущего режима: \(J/\psi\to\ee\) является одним из подвидов \ee-рассеяния. J/ψ → e+e− является одним из подви-дов e+e−-рассеяния. Рис. 1. Команда \xspace из одноимённого пакета добавляет в конце коман-ды пробел в случае, если за ней не следует знаков препинания, то есть избавляет от необходимости самому вставлять явный пробел после команды. Имеются три основные структуры, которые позволяют создавать свои или переименовать уже имеющиеся макросы: \newcommand{«команда»}[N][«зн. по ум.»]{«определение»} \renewcommand{«команда»}[N][«зн. по ум.»]{«определение»} \providecommand{«команда»}[N][«зн. по ум.»]{«определение»} \newcommand определяет новую команду. Если такая команда уже существует, то при компиляции генерируется ошибка. \renewcommand переопределяет уже существующую команду. В свою очередь, \providecommand создаёт новую команду, если на момент описания такой команды не было, и ничего не делает в противном случае. В каждом из этих макросов есть два обязательных параметра: это имя команды и её описание. Если команде необходимо передать пара-метр/параметры, то первый необязательный аргумент (N) должен при-нять значение от одного (1) до девяти (9). В LXF85 (см. прилагаемый диск) обсуждался макрос для дублирования знака в формуле при пере-носе её на следующую строку (\(a+b\hm{=}c\)): \newcommand*{\hm}[1]{#1\nobreak\discretionary{}% {\hbox{$\mathsurround=0pt #1$}}{}} Вместо знака решётки (#) с цифрой после него при компиляции макроса подставляется соответствующий параметр. В данном случае параметр был только один, и можно сказать, что его значение сохраня-ется в «переменной» #1. Звёздочка (*) в конце макроса \newcommand налагает на пере-даваемый параметр команды \hm дополнительное условие: в нем не должно быть пустых строк и команды \par. В некоторых случаях это упрощает отладку кода. Наличие второго необязательного параметра в макросах определе-ния новых команд позволяет определить первый параметр создавае-мой команды как параметр по умолчанию: \newcommand{\exmpl}[1][умолчанию]% {<<значение по #1>>} Сравните \exmpl{} и \exmpl[требованию]. Сравните «значение по умолчанию» и «значение по требованию». Рис. 2. Для определения нового окружения используется команда \newenvironment, например: \newenvironment{outlined}{\hrule\begin{center}}% {\end{center}\smallskip\hrule} \begin{outlined} Выделенный текст. \end{outlined} Выделенный текст. Рис. 3. Формальное описание этой команды похоже на описание \newcommand: \newenvironment{«окружение»}[N][«зн. по ум.»]% {«код, открывающий окружение»}% {«код, закрывающий окружение»} Точно так же, как и в случае \newcommand, созданному окружению Начала Компьютерные TeXнологии Учимся использовать культовую систему вёрстки ЧАСТЬ 11 Завершая этот длинный цикл статей, Евгений Балдин посмотрит на LaTeX глазами профессионального программиста. Когда придумываешь что-то сам, высок шанс ничего не придумать. Но когда живёшь чужим умом, уж точно ничего не придумаешь. Никогда не делай того, что делают другие. Это на 100% обрекает на неудачу. Герш Ицкович БудкерLaTeX Учебник Июль 2007 Linux Format 91 программирования можно передавать параметры. Подставлять параметры можно только в коде, открывающем окружение. Кроме создания нового окружения, можно также переопределять уже имеющиеся с помощью аналогичной команды \renewenvironment. В разделе, посвящённом описанию презентационного класса beamer (LXF85), упоминалось ещё об одной возможности создавать новые именованные окружения с помощью команды \newtheorem: \newtheorem{Texmpl}{Пример} \begin{Texmpl}[Теорема Пифагора]\label{th:1} Пифагоровы штаны во все стороны равны. \end{Texmpl} \begin{Texmpl}\label{th:2} Мудрость ограничена, а глупость бесконечна. \end{Texmpl} Можем сослаться первую теорему:~\ref{th:1}, а можно и на вторую:~\ref{th:2} Пример 1 (Теорема Пифагора). Пифагоровы штаны во все сторо-ны равны. Пример 2. Мудрость ограниче-на, а глупость бесконечна. Можем сослаться первую теоре-му: 1, а можно и на вторую: 2 Рис. 4. Команда \newtheorem имеет две формы: \newtheorem{«теорема»}[«существующая теорема»]{«заголовок»} \newtheorem{«теорема»}{«заголовок»}[«имя счётчика»] Каждая из форм имеет по два соответствующих обязательных аргумента и по одному необязательному. В первом случае это имя уже существующей теоремы, с которой следует иметь совместную нумерацию. Во втором случае в качестве необязательного парамет-ра передаётся имя уже существующего счётчика, на основе которого строится нумерация. О том, что такое счётчики и как их определять, речь пойдёт далее. Счётчики и другие переменные «Другие переменные» уже обсуждались в разделе Определённые «размеры» и переменные «длины» (LXF89). Операции с этими переменными выполнялись с помощью команд \newlength, \setlength и \addtolength. Аналогично, в LaTeX представлена и целочисленная ариф-метика с использованием счётчиков в качестве переменных: \newcounter{MyCount}\setcounter{MyCount}{5} Значение MyCount равно \arabic{MyCount}, или~\alph{MyCount}, или \Asbuk{MyCount}.\par \addtocounter{MyCount}{1550} \arabic{MyCount} эквивалентно \Roman{MyCount}. Значение MyCount равно 5, или e, или Д. 1555 эквивалентно MDLV. Рис. 5. Новый счётчик создаётся с помощью команды \newcounter. При создании он инициализируется нулём. Создание счётчика является глобальной операцией, то есть при компиляции информация о нём не исчезнет, даже если новый счётчик был определён внутри окру-жения. Для присвоения счётчику другого значения используется команда \setnewcounter, а для изменения на какое-то определённое число – \addtocounter. В отличие от длин, основная роль которых – помнить размеры определённого бокса, счётчики используются для отображения какой-либо структурной информации. Поэтому особое внимание уделяется представлению значения счётчика в тексте. Чтобы просто отобразить численное значение счётчика с помощью арабских цифр, используется команда \arabic{счётчик}. Для римской числовой нотации необходимо воспользоваться командой \Roman и \roman – заглавные и строчные буквы соответственно. Счётчик может быть также представлен буквой алфавита: \alph – латинская строчная, \asbuk – кириллическая строчная и \Asbuk – кириллическая заглавная. В стандартных классах уже определён набор счётчиков, в которых хранятся номера страницы (счётчик page), раздела (соответственно, счётчики part, chapter, section, subsection, subsubsection и т.д.), под-строчного примечания (счётчик footnote), плавающих окружений (счёт-чики figure и table) и формул (equation). При создании счётчика также автоматически создаётся команда с префиксом \the перед именем счётчика. Вызов такой команды выводит значение счётчика. При выво-де номера раздела, плавающего объекта, уравнения и тому подобного используются именно такого рода команды, поэтому, переопределив \the-команду, можно немного изменить стиль, например, следующая команда предписывает в дальнейшем маркировать все страницы в римском стиле: \renewcommand{\thepage}{\Roman{page}} На базе счётчиков можно организовывать иерархические структу-ры, то есть можно указывать зависимости: \newcounter{Main}\addtocounter{Main}{10} \newcounter{Dep}[Main]\addtocounter{Dep}{10} Было: \theMain.\theDep\par \stepcounter{Main} Стало: \theMain.\theDep Было: 10.10 Стало: 11.0 Рис. 6. При создании нового счётчика можно создать связь с уже сущест-вующим, указав имя существующего счётчика в качестве необязатель-ного параметра. В примере выше счётчик Dep зависит от счётчика Main. Эта связь проявляется в том, что при увеличении значения базового счётчика (Main) на единицу с помощью команды \stepcounter подчинён-ный счётчик (Dep) обнуляется. Обычно новый счётчик устанавливают в подчинение счётчикам разделов (section). Команда \refstepcounter{счётчик} отличается от \stepcounter тем, что помимо обнуления всех зависимых счётчиков, \refstepcounter опреде-ляет значение, выводимое командой ссылки \ref, как текст, создавае-мый \the-командой: % окружение “Задача” \newcounter{Problem}[section] \renewcommand{\theProblem}{\thesection.\arabic{Problem}} \newenvironment{Problem}[0]{% \par\refstepcounter{Problem}% \theProblem\,}% {\par}% Здесь определено окружение Problem и одноимённый счёт-чик. Счётчик Problem зависит от счётчика раздела. Вывод счётчика \theProblem переопределён как номер раздела, за которым следует уже Цикл «Компьютерные TeXнологии» в PDFНа DVD92 Linux Format Июль 2007 Учебник LaTeX сам счётчик. Внутри окружения счётчик Problem увеличивается на еди-ницу с помощью команды \refstepcounter{счётчик}. Результат использо-вания нового окружения представлен в следующем примере: \begin{Problem}\label{ex:1} Задача раз \end{Problem} \begin{Problem}\label{ex:2} Задача два \end{Problem} Ссылки на раз~\ref{ex:1} и два~\ref{ex:2}. 11.2.1 Задача раз 11.2.2 Задача два Ссылки на раз 11.2.1 и два 11.2.2. Рис. 7. При работе с переменными LaTeX также могут помочь следующие пакеты: calc Макропакет из коллекции tools для арифметических вычисле-ний, уже упоминавшийся в разделе calc (LXF89). Этот пакет перео-пределяет команды типа \newcounter так, что в них можно использо-вать арифметические выражения, хотя и с некоторыми ограничениями. Подробности в файле calc.pdf. ifthen Макропакет, в котором определены команды условного пере-хода \ifthenelse и цикла \whiledo. Подробности в файле ifthen.pdf. Также можно присмотреться к усовершенствованной версии этого пакета xifthen. fmtcount Представляет различные форматы (двоичный, восьмерич-ный, шестнадцатеричный и т.д.) отображения счётчиков (fmtcount.pdf). multido Определяет оператор цикла \multido (multido.pdf). tokenizer Позволяет разбивать текстовые списки на элементы (tokenizer.pdf). totpages Даёт возможность узнать число страниц в документе и тому подобную информацию (totpages.pdf). xkeyval Улучшенная версия пакета keyval, который позволяет пере-давать/принимать в качестве параметров пары значений «key=value» (xkeyval.pdf). Создаём свой пакет Предположим, что вы уже владеете искусством программирования в среде LaTeX. Чтобы распространить свои наработки, следует органи-зовать исходные тексты в удобном для дальнейшей поддержки, пере-даче и установке виде. Можно и не стараться, если вас не интересует конечный результат, но знать, как правильно устроен пакет, полезно и новичку, так как эффективное обучение программированию напрямую связано с изучением уже существующего кода. В LaTeX-сообществе принято распространять свои пакеты и доку-ментацию к ним в виде автономных файлов с расширением dtx (DTX-файлы). Для автоматической установки пакетов используются инструкции, записанные в файлах с расширением ins (INS-файлы). Для более подробной информации следует обратиться к инструкции «How to Package Your LaTeX Package», созданной Скотом Пакиным [Scott Pakin]. Файл dtxtut.pdf, как обычно, можно найти в стандартной поставке LaTeX или на CTAN. Вместе с документацией идут файлы при-меров [c]skeleton.dtx и [c]skeleton.ins. За работу с DTX-файлами отвечает пакет doc и сопутствующая ему утилита DOCSTRIP (файл docstrip.pdf). Основная идея пакета doc состо-ит в совмещении кода с документацией, что облегчает поддержку и развитие пакета. Установочный INS-файл Для извлечения кода и документации из DTX-пакета следует напи-сать специальный установочный файл. Набор инструкций достаточно стереотипен: %% Стандартный копирайт по выбору (рекомендуется LPPL/GPL) %% %% Первый шаг -загрузка DOCSTRIP. \input docstrip.tex %% Подробный отчёт о каждом шаге хорош только когда пакет %% отлаживается. \keepsilent %% Директория, в которую устанавливается пакет. Имя %% директории является относительным по отношению к %% базовой директории $(TEXMF). \usedir{tex/latex/{«имя пакета»}} %% Определение преамбулы, которая вставляется во все %% сгенерированные файлы. Обычно это информация об авторе %% и пожелания пользователям. \preamble Текст преамбулы \endpreamble %% Извлечение файлов пакета из dtx. Основной шаг, %% который может повторяться несколько раз. \generate{\file{«извлекаемый файл»}{\from{«dtx-файл»}{метка}}} … … %% Информация для пользователя. Всегда что-то полезно сказать %% после установки. \obeyspaces \Msg{****************************************************** **} \Msg{* Здорово, что Вы поставили этот пакет. *} \Msg{* Прочитайте документацию перед использованием! *} \Msg{****************************************************** **} %% Метка конца установочного файла. \endbatchfile Пакетный DTX-файл Пакетный DTX-файл содержит в себе и код с комментариями, и текст описания пакета. Структура DTX-файла позволяет получить печатную документацию после прогона через LaTeX. Код с комментариями тоже может стать частью документации. Это шаг по направлению к «грамот-ному программированию» [literate programming]. Наличие комментариев в коде заставляет повторять процедуру ком-пиляции дважды. В первый раз отрабатывается LaTeX-код, а затем ком-ментарии. Во втором случае знак % перед комментарием игнорируется, и текст комментария передаётся на вход LaTeX, если он (комментарий) не окружён командами \iffalse-\fi. Пролог В начале следует, естественно, добавить информацию об авторе: %\iffalse meta-comment % Этот текст не обрабатывается LaTeX’ом. Слово meta-comment %добавлено просто для удобства чтения кода человеком и %означает, что этот текст предназначен именно для него (человека). %\fiВ ins-файле в команде \generate использовался параметр «метка». Он говорит DocStrip, что следует выбирать строки, которые следуют за комментарием и конструкцией <метка> или между тэгами <*метка> и Внимание! Политика создания названий команд в TeX-подобной среде такова, что для новых пакетов необходимо придумывать новые команды. Это сделано для обеспечения абсолютной совместимости сверху вниз. К сожалению, подобная политика в случае бездумного использования слов может при-вести к «захватыванию» подходящих сочетаний. Примером правильного именования служит пакет listings, где вместо, казалось бы, подходящего по названию окружения listing используется lstlisting.LaTeX Учебник Июль 2007 Linux Format 93 . Далее идёт код заголовка пакета, соответствующего метке «метка»: % \iffalse %<метка> \NeedsTeXFormat{LaTeX2e} %<метка> \ProvidesPackage{«имя пакета»} %<метка> [<ГГГГ>/<ММ>/<ДД> v<версия> <краткое описание>] Строчку «<ГГГГ>/<ММ>/<ДД> v<версия> <краткое описание>» нуж-но заменить на дату, версию и краткое описание, соответственно. Закончить пролог необходимо следующими словами, создающими основную документацию: %<*driver> \documentclass{ltxdoc} \usepackage{«имя пакета»} \begin{document} \DocInput{«dtx-файл»} \end{document} % % \fi Это единственная часть, относящаяся к документации, которая не начинается со знака комментария (%). В прологе можно указывать ещё некоторое количество инструкций, уточняющих формат создаваемой документации. Пользовательская документация Прежде всего, следует учесть, что подавляющий объём описаний для пакетов LaTeX сделан на английском языке. Для этого есть довольно веские основания, связанные с размером англоязычной аудитории. Написание документации для DTX-пакета ничем не отличается от написания обычного LaTeX-документа, за тем исключением, что не сле-дует забывать о знаке комментария (%) в начале строки: % \title{Пакет \textsf{«имя пакета»}} % \author{«Ваше имя» \\ \texttt{«Ваш e-mail»}} % \maketitle % текст документации К стандартным LaTeX-командам секционирования уровня paragraph добавляются \DescribeMacro{макрос} и \DescribeEnv{окружение}. Код с комментариями Даже если допустить, что лучшая документация для программис-та – это сам код, то для нормального человека описательный текст все равно будет предпочтительнее. Проблема совмещения кода и описания является основной причиной возникновения «грамотного программирования». Код обычно начинается сразу же за пользовательской документацией: %\StopEventually{\PrintIndex} %% Описание окружения. %\begin{environment}{«имя окружения»} %% Аналогично, существует окружение macros, для описания %% новых команд. % \begin{macrocode} «Здесь идёт код, вида:» \newenvironment{«имя окружения»}{начало}{окончание} % \end{macrocode} %\end{environment} … %\Finale \endinput Команда \StopEventually{} отмечает начало кода и принимает в качестве параметра команду, которую следует выполнить в конце доку-ментации – например, распечатать алфавитный указатель \PrintIndex. Любой код следует обрамлять с помощью окружения macrocode. Это позволит включить его в печатную документацию. Есть две особен-ности для этого окружения, которые следует учитывать: Между % и \begin{macrocode} должно быть ровно четыре (4) пробе-ла. Аналогичное правило действует и для \end{macrocode}, Внутри этого окружения не должно быть текста, начинающегося с %. Внутри окружений environment и macros может быть несколько вставок кода и текста. Пакетирование Часто LaTeX-пакеты распространяются в виде одного DTX-файла. Существует способ включить установочный INS-файл в файл пакета: %<*batchfile> \begingroup «Содержание ins-файла» \endgroup % Следует только убрать заключительную команду \endbatchfile, что-бы LaTeX мог скомпилировать остальное. Всё. Для распространения свой пакет лучше всего поместить на CTAN. Для выгрузки следует обратиться к ресурсу http://www.ctan.org/upload. Всегда необходим краткий README с описанием. Собранная документация в виде PDF-файла также является хорошим тоном. Напутствие Документируйте каждый шаг. Пишите как можно больше качественно-го текста, так как его мало не бывает. Живучесть программы определя-ется не только кодом, но и описанием. «Светлое будущее» за грамот-ным программированием. LaTeX-цикл в Linux Format подошёл к концу. Честно говоря, я сам за это время узнал много нового для себя. Надеюсь, мне удалось поде-литься этими знаниями с вами. В этой информации нет никакой чёрной магии – всё просто и логично, и эта информация полезна, так как поз-воляет автоматизировать одно из самых сложных ремёсел человечес-кой цивилизации – создание книг. Пишите тексты, большие и малень-кие: они не пропадут. LXF94 Linux Format Июль 2007 Учебник Электронные подписи Как получить сертификат Выбор способа получения сертификатов зависит от целей их исполь-зования. Если сертификаты используются для безопасной перепис-ки несколькими людьми, которые знакомы между собой «в реале» (сотрудники небольшой компании, например), ничто не мешает им воспользоваться «самопальными» сертификатами, сгенерированны-ми с помощью утилиты openssl (как это делается, я расскажу чуть ниже). Если сертификат необходим для обмена сообщениями с незна-комыми людьми в глобальной Сети, следует обратиться в один из оте-чественных или зарубежных удостоверяющих центров (УЦ). Наконец, если сертификат требуется для взаимодействия с госструктурами РФ, его следует получать в одном из УЦ, утвержденных нашими госу-дарственными органами (см. врезку «Особенности национальной сертификации»). Получение бесплатного сертификата Удостоверяющие центры работают на коммерческой основе, но полу-чить сертификат, удостоверенный УЦ, можно и бесплатно (такая услуга предоставляется частным лицам и некоммерческим проектам многими крупными УЦ). Возможности применения бесплатных сертификатов несколько ограничены по сравнению с коммерческими – дело, разуме-ется, не в самих сертификатах, а в уровне услуг, предоставляемых УЦ. Обычно бесплатные сертификаты можно получать в онлайн-режиме, откуда следует, что по умолчанию бесплатный сертификат связыва-ет с открытым ключом только те данные, которые могут быть прове-рены онлайн (то есть адрес электронной почты или доменное имя). Например, для удостоверения того, что некий адрес электронной почты действительно принадлежит лицу, обратившемуся за сертификатом, на этот адрес высылается письмо с запросом. Чтобы получить пра-во вписать в сертификат дополнительные сведения, которые нельзя проверить по Сети, придется предпринять дополнительные усилия (см. врезку «Как попасть в сети доверия»). Наибольшей известностью среди УЦ, предоставляющих часть услуг бесплатно, пользуются три: Thawte Consulting, CAcert и Comodo Group. У каждого из этих УЦ есть свои достоинства и недостатки. Компания Comodo Group (известная многим благодаря своему бесплатному брандмауэру для Windows) использует для распростра-нения сертификатов возможности браузера Internet Explorer, поэтому ее услуги для нас не подходят (разумеется, установив сертификат в браузере Windows, его потом можно «перетащить» в любую другую программу, в том числе и на платформу Linux, но мы, конечно, этого делать не будем). УЦ CAcert поддерживает и Windows, и Linux, и вообще предоставля-ет самый широкий спектр бесплатных услуг, но корневые сертификаты (КС) от CAcert не предустановлены в популярных браузерах и почтовых клиентах (по крайней мере, на данный момент), а это значит, что для удостоверения вашего сертификата CAcert вашему контрагенту придет-ся самому устанавливать КС от CAСert. Далеко не каждый пользователь согласится что-то там устанавливать из Интернета, тем более что сооб-щения браузеров, не обнаруживших КС, выглядят пугающе. Например, IE 7 вообще советует уносить ноги с сайта CAcert (Рис. 1). УЦ Thawte (основанный, кстати, небезызвестным Марком Шаттлвортом и проданный затем компании VeriSign) – большое имя в мире цифровых сертификатов – предоставляет бесплатные сертифи-каты для удостоверения электронной почты (но не для SSL). Этот УЦ позаботился о том, чтобы его сертификаты можно было установить в любой системе, кроме того, КС от Thawte предустановлены практичес-ки во всех программах, которые работают с цифровыми сертификата-ми. Если сертификат нужен вам для подписи и шифрования частной почты, бесплатные сертификаты Thawte – лучший выбор. Недостатком Thawte можно назвать то, что при выдаче бесплатных сертификатов не поддерживаются самостоятельно сгенерированные запросы на получе-ние сертификатов (см. ниже), вдобавок Thawte не поддерживает уста-новку сертификатов в Konqueror. Это означает, что для установки бес-платных сертификатов Thawte нужно использовать Firefox или Opera. Защити ID в Сети Разбираемся с электронной подписью и учимся использовать ее для защиты персональных документов ЧАСТЬ 2 Настало время подкрепить полученные знания практикой. Андрей Боровский расскажет как получить цифровой сертификат и использовать его в популярных открытых приложениях. In Web we trust. Девиз сетей доверия. Особенности национальной сертификации По вполне понятным причинам государства контролируют (по крайней мере, отчасти) примене-ние систем шифрования своими гражданами, и наше государство не является исключением. Если я правильно понимаю соответствующие законы нашей страны (а я не претендую на абсо-лютно правильное их понимание), пользоваться программами, прошедшими государственную сертификацию, обязательно только внутри государственных органов РФ и при взаимодействии с таковыми. В остальных случаях пользователь вправе защищать свои данные теми средствами, которыми он располагает. Удостоверяющие центры в нашей стране есть, и их немало. В числе предлагаемых ими алгоритмов и протоколов электронной подписи можно найти как определен-ные ГОСТами, так и описанные в различных RFC и FIPS. В качестве материала для размышлений (а возможно, и для медитации) привожу Статью N 5, пункт 2, Федерального закона от 10 января 2002 года «Об электронной цифровой подписи»: «При создании ключей электронных цифровых подписей для использования в информационной системе общего пользования должны применяться только сертифицированные средства элект-ронной цифровой подписи. Возмещение убытков, причиненных в связи с созданием ключей электронных цифровых подписей несертифицированными средствами электронной цифровой подписи, может быть возложено на создателей и распространителей этих средств в соответствии с законодательством Российской Федерации». С текстами законов РФ, регламентирующих использование электронной цифровой подписи и некоторых других средств, можно ознакомиться, например, на сайте www.ekey.ru/lib/1. Месяц назад Мы разобрались с «теорией цифровых сертификатов».Июль 2007 Linux Format 95 Электронные подписи Учебник Рис. 1. «Недоверенный» сертификат. Получение сертификата по Сети Существует две схемы получения сертификатов онлайн. В первом варианте и сертификат, и пара ключей генерируются вашим браузе-ром и отправляются на сайт УЦ. Когда ваш сертификат появится на сайте УЦ, вы сможете установить сертификат (и прилагающийся сек-ретный ключ) в вашем браузере. Чтобы импортировать сертификат и секретный ключ (СК) в Firefox, достаточно щелкнуть по ссылке, указы-вающей на сертификат на сайте УЦ. Учтите, что хотя ваш сертификат будет храниться на сервере УЦ, СК к сертификату вы можете получить только один раз, после чего УЦ его «забудет» (а без СК сертификат бесполезен). Второй вариант – создать запрос на получение сертификата с помо-щью утилиты openssl и отправить его на сайт УЦ (похоже, что Konqueror не умеет генерировать правильные запросы на получение сертификата, так что если вы не пользуетесь Firefox или Opera, этот вариант – для вас). Запрос на получение сертификата представляет собой документ, подписанный с использованием секретного ключа из новой пары клю-чей. Чтобы создать запрос на получение сертификата, нужно сгенери-ровать ключи: openssl genrsa -out client.key 2048 Секретный ключ сохраняется в файле klient.key (там же, на самом деле, сохраняется и открытый ключ, без которого СК тоже бесполезен). Последнее число в строке команды – длина ключа в битах, определя-ющая его стойкость. Запрос на получение сертификата (файл csr) создается с помощью команды: openssl req -new -key client.key -out client.csr Во время создания запроса на получение сертификата утилита попросит вас ввести несколько параметров, важнейшими из которых (коль скоро речь идет о бесплатных сертификатах) являются Common Name и Email Address (для сертификата, удостоверяющего почтовый адрес, в обоих параметрах указываем свой e-mail). Содержимое фай-ла client.csr следует передать удостоверяющему центру. Сертификат, который выпустит УЦ, в этом случае, скорее всего, будет доступен вам в виде файла (в формате PEM или CRT). Сохраните этот файл на диске, и помните, что без файла, содержащего секретный ключ, файл серти-фиката не имеет особой ценности. Установка сертификатов в программах Linux Многими популярными программами Linux поддерживаются цифро-вые сертификаты X.509. Мы рассмотрим их установку и использова-ние в программах KMail, Thunderbird и в пакете OpenOffice.org. Чтобы иметь возможность подписывать собственные сообщения, вы долж-ны установить в программах секретный ключ и сертификат, удосто-веряющий соответствующий ему открытый ключ. Для шифрования сообщений, предназначенных другим людям, достаточно установить сертификаты ваших корреспондентов (из этих сертификатов почтовая программа извлечет необходимые для шифрования открытые ключи). Сертификат вашего корреспондента вы можете получить, например, вместе с письмом, содержащим его электронную подпись. Для установки и хранения сертификатов вместе с секретными ключами мы воспользуемся форматом PKCS#12 (см. врезку «Файлы сертификатов X.509»). Импортировав личный сертификат и секрет-ный ключ с сайта УЦ в браузер Firefox, вы можете экспортировать его в виде пакета PKCS#12 с помощью менеджера сертификатов. В окне Настройки Firefox перейдите в группу настроек Дополнительно, открой-те вкладку Шифрование и щелкните кнопку Просмотр сертификатов. В открывшемся окне менеджера сертификатов выберите ваш сертификат и щелкните кнопку Резервная копия. Вам будет предло-жено указать пароль для защиты секретного ключа, после чего файл PKCS#12 можно будет сохранить на диске. С помощью менеджера сертификатов вы можете также импортировать пакет PKCS#12 в бра-узер Firefox. Если вы получили сертификат и секретный ключ в формате PEM, можете воспользоваться утилитой openssl для преобразования его в PKCS#12. В окне консоли скомандуйте (мы сохраняем пакет PKCS#12 под именем cert.p12): openssl pkcs12 -in cert.pem -export -out cert.p12 где cert.pem – файл с сертификатом и ключом в формате PEM, а cert.p12 – новый файл в формате PKCS#12. свои данные Файлы сертификатов X.509 Получение, выдача, передача и резервное копирование сертификатов и секретных ключей сопровождаются сохранением их данных в специ-альных файлах. Чаще всего для этого используются файлы со следу-ющими расширениями: *.cer – сертификат, сохраненный в стандарте CER. Может включать сертификат, секретный ключ, путь сертификации. *.der – сертификат, сохраненный в стандарте DER. Может включать сертификат, секретный ключ, путь сертификации. *.crt – файл сертификата в формате CER, DER или Netscape. *.pem – сертификат в кодировке Base64. Может также включать пол-ный путь удостоверения сертификата и секретный ключ. *.p8 – файл, содержащий секретный ключ, защищенный по стандарту PKCS#8. *.p12 (в Windows используется расширение *.pfx) – файл сертификата, защищенный по стандарту PKCS#12. Может включать сертификат, секретный ключ, путь сертификации.96 Linux Format Июль 2007 Учебник Электронные подписи При наличии сертификата и секретного ключа в формате *.crt, вы также можете преобразовать их в формате PKCS#12 с помощью openssl: openssl pkcs12 -in cert.crt -export -out cert.p12 Если сертификат и секретный ключ хранятся в разных файлах (например, вы сгенерировали ключи сами, а потом создали запрос на получение сертификата), команда создания пакета PKCS#12 будет выглядеть иначе: openssl pkcs12 -export -in cert.pem -inkey client.key -out cert.p12 Здесь cert.pem – файл сертификата, загруженный с сайта УЦ, а client.key – файл секретного ключа, который вы создали для генерации запроса на получение сертификата. Во всех случаях утилита openssl предложит вам указать пароль для защиты пакета PKCS#12. Установка сертификата в KDE/KMail Чтобы импортировать пакеты сертификатов и секретных ключей из файлов PKCS#12 (и других форматов) в KDE, достаточно открыть файл сертификата в менеджере Konqueror и щелкнуть кнопку Import (при этом будет запрошен пароль, защищающий пакет PKCS#12). Импортировать сертификаты в KDE можно также с помощью програм-мы Kleopatra (Рис. 2). Рис. 2. Kleopatra. Программа потребует пароль, которым защищен пакет PKCS#12, затем предложит указать дважды новый пароль для сохранения дан-ных в настройках KDE. Установить сертификат в KDE можно также с помощью центра управления рабочим столом KDE. В окне центра управления перейдите в группу Security & Privacy -> Crypto, откройте вкладку Your Certificates и воспользуйтесь кнопкой Import для импор-тирования сертификата из файла. При этом программа спросит, дол-жен ли данный сертификат быть доступен KMail. Импортировав сертификат в KDE, вы можете настроить клиент KMail для работы с ним. В окне Edit Identity перейдите на вкладку Cryptography (Рис. 3) и выберите сертификат для подписи сообщений по протоколу S/MIME (S/MIME signing certificate) и шифрования сообщений (S/MIME encryption certificate). При установке сертификата для электронной под-писи в KMail нужно следить за тем, чтобы почтовый адрес, включенный в сертификат, совпадал с адресом, для которого выполняется настрой-ка, иначе почтовый клиент адресата выдаст сообщение о подлоге. Если вы подписываете письмо электронной подписью, KMail потребует у вас пароль, которым защищен соответствующий секретный ключ. Ситуация несколько усложняется, если вы устанавливаете личный сертификат, заверенный корневым сертификатом, отсутствующим в вашей системе. Чтобы установить в KDE, например, КС от CAcert, его нужно сначала импортировать так же, как и личный сертификат. После этого необходимо добавить цифровой отпечаток SHA-1 корневого сертификата в список доверенных сертификатов gpgsm (список отпе-чатков доверенных сертификатов хранится в файле ~/.gnupg/trustlist. txt). Получить отпечатки SHA-1 всех установленных сертификатов вы можете с помощью команды gpgsm --fingerprint Консольные утилиты gpgsm и gpg-agent выполняют все действия, связанные с обработкой сертификатов X.509 и связанных с ними ключей в KDE, программа KMail запускает их как внешние процессы. Посмотреть сообщения, выдаваемые этими утилитами, и выявить при-чину возможных сбоев можно с помощью программы KWatchGnuPG (Рис. 4). Рис. 4. Окно KwatchGnuPG. Установка сертификата в Thunderbird Установка сертификата и секретного ключа из файлов PKCS#12 в Thunderbird выполняется с помощью менеджера сертификатов этой программы (Thunderbird мог бы и сам извлекать сертификаты из хра-нилища Firefox, но он этого не делает). Откройте в Thunderbird окно Preferences, перейдите в группу Privacy, откройте вкладку Security и вызовите менеджер сертификатов, щелкнув кнопку View Certificates. Теперь вы можете добавить сертификат, щелкнув кнопку Import. В процессе установки сертификата и секретного ключа из пакета PKCS#12 Thunderbird спросит у вас два пароля – мастер-пароль, кото-рый программа использует для защиты хранящихся в ее настройках секретных ключей, и пароль, которым защищен пакет PKCS#12. Если вы используете сертификат CAcert, вам необходимо также установить КС CAcert. (КС доступен на сайте CAcert, его следует устанавливать точно так же, как и личный сертификат). Установив КС, перейдите на вкладку Authorities в окне менеджера сертификатов, найдите в списке нужный КС, щелкните кнопку Edit и установите флажок This Certificate Can Identify Mail Users. При отправке подписанного сообщения из Thunderbird следите за тем, чтобы почтовый ящик, с которого вы посылаете сообщение, сов-падал с почтовым ящиком, указанным в сертификате. Так же, как и KMail, клиент Thunderbird, перед тем как подписать сообщение, запра-шивает пароль, защищающий секретный ключ. Рис. 3. Окно настройки шифрования в Kmail.Июль 2007 Linux Format 97 Электронные подписи Учебник Подпись почтового сообщения с помощью openssl Если ваша любимая почтовая программа не поддерживает сертифика-ты X.509 напрямую, это еще не значит, что вам нельзя ими пользовать-ся. С помощью утилиты openssl и пакета «сертификат + СК» в формате PEM (такой пакет можно создать, например, с помощью программы Kleopatra), вы можете подписывать почтовые сообщения, сохраненные в файле на диске: openssl smime -sign -in message.eml -out message-signed.eml -signer cert.pem -noverify Опция -noverify отключает проверку сертификата, удостоверяюще-го подпись. Файл message-signed.eml будет содержать подписанное сообщение. Другие опции openssl позволяют встроить эту утилиту в цепочку программ, выполняющих создание и отправку сообщений. Советую ознакомиться с документацией к этой мощной утилите. Использование сертификатов в OpenOffice. org Программы из пакета OpenOffice.org могут использовать для подписи документов ключи и сертификаты, установленные в браузере Firefox (OpenOffice умеет извлекать сертификаты из хранилища Firefox авто-матически). Если ваш личный сертификат не установлен в Firefox, вы можете установить его с помощью менеджера сертификатов Firefox, описанного выше. Чтобы подписать документ в OpenOffice.org, необхо-димо выбрать команду меню File | Digital Signatures и в открывшемся окне щелкнуть кнопку Add. Будет открыт список личных сертификатов, в котором можно выбрать сертификат/ключ для подписи. О том, что документ OpenOffice подписан и цифровая подпись цела, свидетельствует пиктограмма в строке состояния окна OpenOffice, изображающая документ с красной печатью (если изменить подписан-ный документ, этот значок исчезнет). Желтый треугольник с восклицательным знаком на пиктограм-ме свидетельствует о том, что проверить подлинность сертификата, подтверждающего подпись, не удалось. Такое может произойти, если соответствующий КС не установлен, или для него не установлено право удостоверения сертификата, предназначенного для подписи контента. Для исправления этой ошибки откройте окно менеджера сертифи-катов Firefox и перейдите на вкладку Центры сертификации. Если КС для вашего сертификата отсутствует, его следует установить в Firefox. Если нужный КС установлен, выделите его в окне менеджера сертифи-катов и щелкните кнопку Изменить. Установите флажки Этот сертифи-кат может идентифицировать пользователя электронной почты и Этот сертификат может идентифицировать программное обеспечение. Жирный восклицательный знак на пиктограмме, отображающей состояние подписи документа OpenOffice, свидетельствует о том, что структура подписи была нарушена (или удостоверяющий корневой сертификат не валиден). LXF Как попасть в «сети доверия»? Если вы хотите внести в бесплатный цифровой сертификат какие-либо сведения о себе помимо адреса электронной почты, необхо-димо убедить УЦ в достоверности этих сведений. Для этого вам придется лично встретиться с кем-то, кому УЦ доверяет. Даже если вы сами не можете посетить УЦ, выдающий бесплатные сертификаты, отчаиваться не стоит: вполне возможно, что УЦ уже пришел к вам. Для удостоверения сертификатов «на местах» многие УЦ создают сети доверия (Webs of Trust, WoTs). Сети дове-рия есть и у CAcert, и у Thawte. Сеть доверия – это группа частных лиц, которые пользуются доверием УЦ (назовем их нотариусами). Нотариусы сетей доверия участвуют в процессе удостоверения дополнительных сведений о владельцах сертификатов, а также в удостоверении новых нотариусов (в результате чего сеть доверия может расти «сама собой»). Рассмотрим в качестве примера работу сети доверия Thawte. Чтобы получить право добавить свое имя в цифровой сертификат Thawte, необходимо встретиться лично с несколькими нотариуса-ми Thawte из WoT и представить им по два документа с фотогра-фиями (а также передать копии этих документов), удостоверяю-щих вашу личность (один из документов должен быть упомянут в вашей учетной записи Thawte). Почему нужно встречаться с несколькими нотариусами WoT? Как и многие другие УЦ, Thawte измеряет доверие пунктами [assertion points]. Нотариусы WoT не удостоверяют вас сами, они лишь присваивают вам определенное количество пунктов дове-рия. Чтобы внести имя в свой сертификат Thawte, вы должны набрать 50 пунктов, а чтобы самому стать нотариусом – 100 пунк-тов. В то же время каждый нотариус Thawte WoT может присвоить вам от 10 до 35 пунктов, не более (данное ограничение затрудняет обретение доверия путем подкупа нотариусов, использования личных связей с нотариусами, давления на них и т.п.). Все это немного напоминает ролевую игру с пунктами «экспы». Хорошо еще, что для получения вожделенных пунктов доверия не требу-ется выиграть поединок на пластиковых мечах! Нотариусы Thawte WoT есть и в нашей стране (по крайней мере, в крупных городах; более точную информацию вы можете полу-чить, зарегистрировавшись на сайте Thawte). Некоторые нотариу-сы предоставляют свои услуги бесплатно, другие – за скромное вознаграждение (1–2 у.е.). Если удостоверение с помощью нота-риусов вам не подходит, Thawte предлагает и другие способы идентификации (например, с помощью доверенных третьих лиц), но стоить это будет дороже. Напомню, что речь идет только о сертификатах Thawte, выдаваемых бесплатно. Полностью ком-мерческий сертификат Thawte можно получить, обратившись к представителю Thawte (в России, например, в компанию РБК). Матерые пользователи OpenPGP часто смотрят свысока на цифровые сертификаты X.509. Тем не менее, именно сертифика-ты этого формата властвуют за пределами Linux, а потому мы должны использовать их в общении с не-линуксоидами. В конце концов, уважение к чужим традициям – важнейший принцип доб-рожелательного общения.98 Linux Format Июль 2007 Учебник Cinelerra В этой статье мы поглядим, насколько Cinelerra пригодна для создания и монтажа анимации. Безусловно, Cinelerra – не гра-фический редактор и не предоставляет возможности рисовать мультик по кадрам. Все графические материалы надо подготовить в других программах. Например, вы можете создать анимацию в каком-нибудь пакете 3D-графики и вывести последовательность кадров в виде нескольких сотен (или даже тысяч) TIFF-изображений. Другой вариант – вы покад-рово нарисовали движущегося персонажа при помощи планшета, а теперь хотите поместить своего героя на статичный фон или видео-подложку. Либо – вы делаете пластилиновый мультфильм. Слоеный пирог При работе с Cinelerra анимацию можно разделить на, скажем так, послойную и покадровую. Что я подразумеваю под послойной ани-мацией? Допустим, вы хотите сделать сцену – зеленый холм, над ним встает солнце. Вам необязательно покадрово рисовать холм и солнце в разных положениях – низко, выше, еще выше и так далее. Можно поступить проще . Рисуете холм. Зеленая травка, небо прозрачное. Сохраняете как полноцветный PNG. Отдельно делаете файл с небом – залейте все изображение одним цветом или какой-либо текстурой. После этого в новом файле рисуете на прозрачном фоне солнце и тоже сохраняете в формате PNG. Можете сделать еще и облака, опять-таки каждое на прозрачном фоне. Затем расположите картинки на дорожках в Cinelerra следующим образом: Сначала, на самой нижней дорожкой, в нижнем слое, небо; Затем – солнце; После него – холм.; Облака можете ставить как «под» холм, там и над ним (если они не будут у вас двигаться вровень с землей). В окне монтажного стола должно получиться примерно следующее (да простит меня читатель за наивность картинки, но я не художник): Рис. 1. Теперь надо поработать в окне Составителя (Composer). Используя проектор (см. LXF93), размещаем по вкусу облака и солнце. Получается вот что: Путь Cinelerra Обработка видео средствами открытой программы для нелинейного монтажа ЧАСТЬ 3 Cinelerra – это не Synfig и не Blender, но смонтировать в ней небольшой мультфильм вполне возможно. Особенно если вы, как и Петр Семилетов, предпочитаете не рисовать, а лепить... Месяц назад Мы научились обращаться с камерой и проектором.Июль 2007 Linux Format 99 Cinelerra Учебник Рис. 2. Что до анимации, то она достигается за счет автоматизации. Вы можете автоматизировать проекторы облаков и солнца, тем самым перемещая объекты по экрану. Облака будут плыть по небу, солнце – всходить или заходить по вашему желанию. А на изображение холма и неба можно наложить какой-нибудь эффект, изменяющий цвета, и таким образом делать утро, день и вечер, тоже автоматически. Иллюзия глубины Послойное построение сцены позволяет использовать в анимации параллакс. Согласно определению, данному в русской Википедии, параллакс – это «изменение видимого положения объекта относи-тельно удаленного фона в зависимости от положения наблюдателя». Параллакс использовался в старых играх-бродилках для консолей, в нынешних Java-играх для сотовых, да и в обычной мультипликации применяется довольно часто. Допустим, есть некий пейзаж – перечис-ляю объекты послойно, по мере приближения к зрителю: 1 Небо с облаками. 2 Горы. 3 Роща вдали. 4 Деревья ближе. 5 Кусты на переднем плане. Мы хотим плавно панорамировать этот пейзаж горизонтально. При смещении камеры, небо может быть статичным либо перемещаться незначительно (относительно кадра), горы будут перемещаться отно-сительно кадра чуть быстрее, роща – еще быстрее, и так далее. Это создает у зрителя иллюзию глубины пространства. Итак, чем глубже находится слой, тем медленнее он движется. Как сделать параллакс в Cinelerra? С послойным составлением кад-ра мы уже разобрались. Осталось только обратить внимание на неко-торые подробности. Чем ближе слой, тем большего размера он должен быть. Пример: есть два слоя, на одном фоновый пейзаж, на другом – деревья. Пусть панорама длится пять секунд. За эти пять секунд вам надо будет пере-местить виртуальную камеру слоя с деревьями на большее расстояние, чем виртуальную камеру слоя с пейзажем. Поэтому передний слой должен быть шире, чем фоновый. Чтобы перемещать слои относитель-но кадра (положения наблюдателя), можно применять такие средства Составителя, как Проектор или Камера. Мне кажется, что логичнее пользоваться последним. По кадрам Теперь поговорим о покадровой анимации. Допустим, у вас есть тысяча кадров, каждый в виде PNG-или TGA-файла. Вам нужно как-то помес-тить их всех на дорожку в Cinelerra и монтировать с другими последо-вательностями кадров или с видео. аниматора «Нам помнится, вороне...» Создать пластилиновый мультфильм, хоть это и трудоемко, вообще-то по плечу каждому чело-веку, если, конечно, у этого каждого есть цифровой фотоаппарат, чтобы снимать покадрово пластилиновое действо: рисовать умеют не все, а слепить какую ни на есть фигурку с руками-ногами – дело нехитрое. Вот несколько советов, если вы решите этим заняться: 1 В качестве костей скелета используйте обычные канцелярские скрепки. Их можно соединять друг с другом – получатся суставы, и можно делать руки и ноги, подвижные в коленях и локтях. 2 Если вы хотите монтировать фигуры на некой подложке, то фон надо сделать однотонным, чтобы потом его вырезать (см. LXF92). В домашних условиях однотонный фон сделать сложно: плохое освещение, кроме того, будет мешать тень (снимать придется так, чтобы на фон не падали тени от фигур). Неоднородный тон надо будет вырезать в GIMP’е вручную, в каждом кадре-файле, а потом сохранить в полноцветный PNG с прозрачным фоном. 3 Приступая к съемке, надо соотнести количество кадров в секунду в вашем Cinelerra-проекте с тем, что вы снимаете. Допустим, в Cinelerra у вас задано 25 кадров в секунду. Это значит, что для плавной анимации длительностью в 1 секунду вам надо снять фотоаппаратом 25 кадров. Другие 25 – это пойдет уже вторая секунда анимации. Подход трудоемкий. Если для вас приемлема некоторая дерганность движений, можно снимать по 15, даже 13 кадров для каждой секунды и монтировать их в Cinelerra таким образом, чтобы эти 13 кадров отображались 25 раз вместо 13.100 Linux Format Июль 2007 Учебник Cinelerra Первое желание – это импортировать кадры как любой другой материал. Но в таком случае в окне Resources на странице Media будет тысяча файлов. Размещать их на дорожке, мягко говоря, не совсем удобно. К счастью, Cinelerra может работать с так называемыми toc-файлами. Toc – это сокращение от Table Of Contents, то есть «оглав-ление». Toc-файл – обычный текст, содержащий список имен файлов. Он также имеет заголовок, в котором указывается частота кадров и их размер (разумеется, все кадры последовательности должны быть одного размера). Можно создавать toc-файлы вручную, но среди пользователей Cinelerra популярна утилита Seven Gnomes (http://www.roxton.kiev.ua/sevengnomes.html), которая предоставляет для этих целей удобный графический интерфейс. В Seven Gnomes надо в основном (и единс-твенном) окне перейти на вкладку Index images list и бросить на открывшуюся страницу папку с кадрами из любого файлового менед-жера. После этого начнется создание toc-файла. Здесь же, на страни-це Index images list, задается его имя (можно использовать как просто имя файла, так и полный путь) и частота кадров. Размер кадра опре-деляется программой автоматически. Если не указан полный путь к создаваемому toc-файлу, то файл будет создан в каталоге, где распо-ложены файлы с кадрами. -Рис. 3. Seven Gnomes была написана мною пару лет назад в ходе работы над пластилиновым мультиком, а потом, после взятия ее на вооруже-ние сообществом пользователей и разработчиков Cinelerra, несколько раз обновлялась. Для сборки программы из исходных текстов нужен только GTK+ 2.x. И еще кое-что о Seven Gnomes. При повторном создании toc-файла для одного и того же каталога, старый toc-файл затирается и не попа-дает в список файлов (что непременно произошло бы при создании toc-файла вручную). Seven Gnomes, как и Cinelerra, «понимает» кадры в таких форматах, как TGA, TIFF, PNG и JPEG. Перетаскивать надо не отдельные файлы, а именно каталог. Итак, тем или иным способом toc-файл получен; что делать даль-ше? Импортируйте его в проект Cinelerra как обычный видеофайл. Toc-файл появится в списке Media окна Resources. Можете обращаться с ним как с любым другим видеофайлом или одиночным кадром – то есть располагать на дорожке, перемещать, усекать и так далее. Подведем итог. В Cinelerra можно использовать и послойную, «программную» анимацию, и покадровую. Можно также сочетать оба подхода. Если вы смотрите мультфильмы, то наверняка заметили, что сцены бывают сделаны несколькими способами: На статичном фоне – покадрово анимированные персонажи. На фоне с параллаксом – покадрово анимированные персонажи. Реже (как более трудоемкая работа) – покадрово анимирован и фон, и персонажи. Cinelerra подходит для всех трех пунктов. Отведенное мне место подходит к концу, и напоследок я хочу дать несколько советов. Не забывайте об эффекте Rotate – с его помощью можно вращать объекты на произвольный угол (хотя в документации сказано, что доступны только 4 значения: 0, 90, 180 и 270 градусов). Для импортированных одиночных кадров можно задать длитель-ность по умолчанию. Делается это в Preferences > Recording > Images > Import images with a duration of <...> seconds. Допустим, вы поставили там 5 секунд и импортировали какой-нибудь PNG-файл. Теперь поме-щаем его на дорожку – и видим: картинка заняла на дорожке ровно 5 секунд. Дополнительных эффектов в анимации можно достичь, экспери-ментируя с ползунком прозрачности на дорожке, а также с режимами наложения (overlay). При автоматизации Проектора или Камеры, помните, что когда вы включаете режим Generate keyframes while tweaking (нужная для этого кнопка выглядит как ключик), то ключевой кадр в текущем положе-нии курсора в момент включения не создается! Он появляется толь-ко при последующем перемещении курсора и передвижении Камеры или Проектора, поэтому автоматизацию надо делать, условно говоря, с конца. Например, есть солнце, и мы хотим переместить его снизу вверх: Помещаем его внизу. Включаем «ключик». Ключевой кадр в положении солнца «внизу» не создался. Смещаем курсор вправо на N секунд, помещаем солнце в верхнюю точку его траектории. Автоматически создается ключевой кадр. Смещаем курсор влево (к началу анимации солнца). Помещаем сол-нце вниз. Вот теперь-то и создается первый ключевой кадр, с указани-ем Проектору, что солнце надо выводить внизу кадра. Если вы снимите собственный мультфильм и смонтируете его в Cinelerra, не забудьте сообщить нам об этом (letters@linuxformat.ru) – видеотека нашего главного редактора вот-вот закончится. LXF Через месяц От мультфильмов к документалистике: мы займемся монтажом видео. Во славу альфа-канала Как вы могли заметить, послойная анимация возможна благодаря под-держке прозрачности в формате PNG. Напомню, что PNG позволяет хра-нить изображения в двух цветовых режимах. Первый – он используется в основном в Сети – это режим палитры, а второй – с 24-битным цветом, что соответствует стандартному BMP. Прозрачность PNG вообще можно использовать для разных нужд. Например, взять изображение телевизора, прорезать в экране дырку (то есть сделать область, занимаемую экраном, прозрачной), и потом в этот телевизор что-то «вставить» – а на деле прос-то разместить дорожку с телевизором над видеоподложкой.Июль 2007 Linux Format 101 OpenVPN за 10 минут Примеры конфигурационных файлов на DVD VPN – Virtual Private Network, Виртуальная Частная Сеть – тех-нология, позволяющая соединять между собой локальные сети и отдельные компьютеры, находящиеся на расстоянии тысяч километров друг от друга; подключаться к локальной сети через Интернет, используя шифрованный канал связи, организовывать безо-пасный туннель для передачи важных данных... Возможности приме-нения VPN безграничны! Вам необходимо соединить офисы в разных концах страны единой сетью, не прокладывая километры кабелей? Вы хотите подключаться к домашней локальной сети из Интернет-кафе? Требуется передать важные данные на большое расстояние без риска утечки информации? Может быть, большинство данных, которые вы передаете через Интернет, составляют тайну, и их необходимо обе-зопасить? Если вы хотя бы на один вопрос ответили утвердительно, VPN – это именно то, что вам нужно! OpenVPN за 10 минут Технология VPN во многом напоминает перевозку денег в бронированной инкассаторской машине по улицам многолюдного города. Но какую модель следует выбрать, чтобы ваши ценности не достались злоумышленникам? Спросите у Валентина Яценко. Шаг 1: Устанавливаем Пакеты с OpenVPN доступны для большинства распространенных дистрибутивов, в том числе для RedHat/Fedora, Mandriva, OpenSUSE, Slackware, Debian и Ubuntu. Если OpenVPN не включен в ваш любимый дистрибутив, попробуйте поискать пакет на rpmfind.net (для систем, использующих RPM) или linuxpackages.net (Slackware и производные) Наконец, программу можно загрузить в исходных текстах с официаль-ного сайта (openvpn.net). Почему OpenVPN? Существует множество реализаций VPN, самые популярные из них – PPTP, FreeS/WAN и OpenVPN. Почему же в этой статье мы рассмотрим именно последний вариант? PPTP навевает мысли о Microsoft, FreeS/WAN давно не обновлялся – на его официальном сайте сказано, что последняя версия датируется 22 апреля 2004 года, более того, даль-нейших обновлений FreeS/WAN не будет, а это, согласитесь, недопус-тимо для проекта, одной из целей которого является обеспечение безопасности... OpenVPN же активно развивается и регулярно обнов-ляется, использует стойкие криптографические алгоритмы и предла-гает множество способов идентификации, в том числе комбинирован-ных, что немаловажно для безопасности. Кроме того, OpenVPN рабо-тает на большинстве распространенных платформ – Linux, Windows 2000/XP, OpenBSD, FreeBSD, NetBSD, Mac OS X, Solaris, благодаря чему его можно использовать в гетерогенных сетях. Все это, безусловно, делает OpenVPN лучшим выбором для организации VPN. Для установки OpenVPN также необходимо установить OpenSSL (openssl.org) и liblzo (http://www.oberhumer.com/opensource/lzo), кото-рые есть во многих дистрибутивах. Для работы OpenVPN нужен модуль ядра tun. Он присутствует в большинстве систем, но если команда modrpobe tun завершается с ошибкой «Can’t locale module tun», вам придется пересобрать ядро – о том, как это сделать, под-робно рассказано в LXF89. Необходимо включить опцию CONFIG_ TUN (Device Drivers –> Network device support –> Universal TUN/TAP device driver support). Если вы собираетесь использовать OpenVPN постоянно, пропиши-те модуль tun в /etc/modules для автоматической инициализации при загрузке либо включите его непосредственно в ядро. В противном случае перед запуском OpenVPN вам нужно будет загружать модуль tun самостоятельно (командой modprobe tun). Если вы планируете предоставлять клиентам доступ в Интернет через VPN, необходимо настроить NAT (Network Address Translation). Скорее всего, это уже сделано за вас разработчиками дистрибутива, но на случай возник-новения проблем имейте в виду, что нам потребуется опция CONFIG_ IP_NF_TARGET_MASQUERADE (Networking –> Networking options –> Network packet filtering –> IP tables support –> Full NAT). Для работы с NAT используется утилита iptables (см. LXF87/88), которая, ско-рее всего, уже установлена в вашей системе. Проверьте это и, в случае необходимости, добавьте ее через менеджер пакетов вашего дистрибутива.102 Linux Format Июль 2007 OpenVPN за 10 минут Шаг 2: Создаем ключи Итак, OpenVPN установлен. Что дальше? В первую очередь необходимо создать ключи и сертификаты для сервера и клиентов. Скрипты, облег-чающие эту задачу, находятся в каталоге easy-rsa (см. врезку «Где же easy-rsa?» внизу). В первую очередь, отредактируйте расположенный в нем файл vars. Установите значения переменных: KEY_COUNTRY – равным двухсимвольному коду вашей страны (для России это RU). KEY_PROVINCE – названию вашего региона (например, Moscow region или MSK). KEY_CITY, соответственно – ваш город (скажем, Moscow). KEY_ORG – организация (OpenVPN Solutions подойдет). KEY_EMAIL – ваш e-mail адрес (me@my.e-ma.il). Все эти данные необходимы для генерации сертификатов и ключей в соответствии со стандартом, поэтому оставлять какие-то переменные пустыми нельзя. Также можно изменить параметр KEY_SIZE, отвечающий за размер ключей (максимальный размер ключа, поддерживаемый OpenVPN – 2048 бит). Далее необходимо инициализировать переменные, используемые при создании публичного ключа командой . ./vars и, на всякий случай, удалить существующие ключи командой ./clean-all После этого следует сгенерировать корневой сертификат (см. LXF93): ./build-ca В процессе выполнения последнего скрипта вам будет задано несколько вопросов. Нужно ввести только Common Name для серти-фиката (например, RootCA), все остальные параметры уже заданы в качестве переменных окружения скриптом vars. После создания корневого сертификата необходимо сгенериро-вать для сервера секретный ключ. В этом вам поможет скрипт buildkeeyserver. Как и в предыдущем случае, для большинства вопросов можно оставить ответы по умолчанию. На вопрос о Common Name введите “server”, на два последних вопроса (подписать ли сертифи-кат и – каламбур, но перевод именно такой – сертифицировать ли его) ответьте утвердительно; когда вас спросят о пароле (“A challenge password”) – введите пароль для ключа сервера (запоминать его не нужно). Наберите ./build-key-server server Далее, создайте ключи для необходимого количества клиентов. Эта процедура аналогична созданию ключа для сервера, за исключением того, что для клиентов ключи создаются скриптом build-key, а не buildkeeyserver. У каждого ключа, конечно же, должно быть указано свое значение в поле Common Name: ./build-key clientname Если вы хотите защитить паролем ключи клиентов, воспользуйтесь вместо build-key скриптом build-key-pass. И наконец, в довершение ко всем сертификатам и ключам необхо-димо создать файл параметров Диффи [Diffie] и Хеллмэна [Hellman]. Алгоритм Диффи и Хеллмэна позволяет обмениваться секретными ключами по небезопасным каналам. Для их генерации запустите скрипт build-dh без параметров: ./build-dh Этот процесс занимает определенное время, поэтому владельцам слабых компьютеров стоит попить чаю, вместо того чтобы просто сидеть и ждать окончания работы скрипта. Если вам уже надоело возиться с ключами, сертификатами и про-чим – не падайте духом: осталось только скопировать нужные фай-лы на клиентские компьютеры. Клиентам необходимы следующие файлы: ca.crt (Root CA certificate) необходим серверу и всем клиентам, он не является секретным. clientname.crt (сертификат клиента clientname) необходим только клиенту clientname, он не является секретным. clientname.key (ключ клиента clientname) необходим только клиенту clientname, это секретный ключ. Эти файлы можно найти в подкаталоге keys каталога easy-rsa. Где искать easy-rsa? Каталог easy-rsa может находиться в /usr/share/doc/openvpn-2.0, /usr/share/doc/openvpn, /usr/share/doc/openvpn/examples или в /usr/share/doc/packages/openvpn – в зависимости от дистрибутива. Его также можно найти в архиве с исходными текстами. Не обязательно создавать корневой сертификат вручную. Подробности см. на стр. 94 Скорая помощьИюль 2007 Linux Format 103 OpenVPN за 10 минут Шаг 3: Настраиваем Итак, у нас есть все необходимые для работы OpenVPN файлы – все, кроме конфигурационных, созданием которых мы и займемся. Начнем с сервера. Для создания новых конфигурационных файлов удобно использовать примеры из поставки OpenVPN, они находятся в подка-талоге sample-config-files каталога OpenVPN (../sample-config-files, если вы находитесь в каталоге easy-rsa). В принципе, можно использовать стандартный конфигурационный файл для сервера, изменив некото-рые параметры. Вот список этих параметров (некоторые из них, напри-мер, port и protocol, изменять не обязательно): ca – полный путь до корневого сер