> Прикладные программы для Linux Основная особенность программного обеспечения Linux -- многообразие продуктов, решающих сходные задачи, особенно если дело касается области, в которой существует _несколько_ подходов к их решению. Открытая модель разработки программ, позволяет любому выбрать самый подходящий для него инструмент и развивать именно его. Поэтому список проектов, так или иначе связанных с Linux, насчитывает десятки (или даже сотни) тысяч наименований. # выборка неполная, темы не все, не надо упрекать Гуревича, что он не сказал про вашу любимую тулзу Конечно же, работа с самой операционной системой не может быть самоцелью. Все усилия по изучению операционной системы Linux и основных утилит нужны для того, чтобы впоследствии наилучшим образом решать в этой операционной системе любые из своих прикладных задач, разрешимых при помощи компьютера. Для очень многих задач достаточно стандартных инструментов Linux и текстового редактора, однако есть случаи, в которых всё-таки необходима специальная прикладная программа, именно для этого предназначенная, или в которых специальная программа удобнее комбинации стандартных утилит. # Всё меняется, особенно передовые технологии, так что советы могут устареть, некие инструменты могут укрутиться и~т.~п. Этот раздел посвящён краткому обзору <прикладных программ|прикладная программа> для Linux, специально предназначенных для решения самых разных пользовательских задач. Вошедший сюда материал нужно воспринимать только как пример, демонстрацию того, что и как можно делать в Linux, но вовсе не исчерпывающий список. В отличие от основных принципов устройства системы или стандартных утилит, которые не изменяются (почти) в течение десятилетий, прикладное программное обеспечение -- это область, где всё меняется очень быстро. Технологии, сегодня считающиеся самыми передовыми, уже через несколько месяцев могут устареть. Вместе с ними могут устареть использующие их программы, а другие программы могут, наоборот, перейти в разряд наиболее современных и развитых. Поэтому перечисленные здесь прикладные программы -- это не безусловная рекомендация, а довольно случайная выборка, отражающая текущее состояние дел в разработке приложений для Linux. Самый лучший способ найти и выбрать самые подходящие прикладные программы для своих задач -- посоветоваться с людьми, которые решают подобные задачи в Linux в настоящее время -- и попробовать. # /*G*/ Коротко: программы для Linux -- это _не_ LInux, они могут все сразу даже в один дистрибутив не входить, см. @.Linux@ Нужно отдавать себе отчёт в том, что прикладные программы для Linux не являются частью самой Linux, поэтому любой из названных ниже программ может не оказаться в каком-то из конкретных <дистрибутивов|дистрибутив> Linux. Но почти наверняка в любом дистрибутиве найдётся не меньше одной или нескольких программ для решения каждой из перечисленных ниже прикладных задач. Чтобы не загромождать изложение, мы остановимся лишь на самых распространённых программных продуктах, входящих во многие дистрибутивы Linux. >> Рабочий стол # Критерий выбора: нужны ли X, нужен ли toolbar, нужен ли "desktop", эстетические Первое, что стоит сделать, начав постоянно использовать Linux -- организовать для себя удобное ``рабочее место'': подобрать и настроить программы, с которыми приходится работать каждый день. Рабочее место в Linux может выглядеть очень по-разному. Можно вовсе обойтись без графического интерфейса, используя только текстовый терминал для управления системой. Такой выбор будет правильным, если рабочее место находится на сервере, подключённом к сети Internet, доступ к которому осуществляется только при помощи ^ssh^ или аналогичных клиентов удалённого доступа. Впрочем, некоторые пользователи предпочитают работать в текстовом интерфейсе, возможно, по эргономическим причинам -- ничто не отвлекает? Если графический интерфейс используется, то и в этом случае есть огромный выбор, как его организовать. Прежде всего, решить: нужно ли устраивать ``<рабочий стол|>'' (для этого подходят GNOME, KDE, XFCE) или можно обойтись возможностями одного из развитых диспетчеров окон (Enlightenment, FVWM2, WindowMaker и многие другие). Помимо функциональности, в выборе графической среды решающее значение могут сыграть и эстетические критерии. Дальше всех в этом направлении продвинулась среда Enlightenment, работа с которой в некоторых вариантах настройки количеством украшений и эффектов напоминает участие в компьютерной игре (скорее всего, сетевой). >>> Диспетчеры файлов # Специфические для десктопов, mc Многие пользователи привыкли оперировать с файлами и каталогами как с наглядными штучными объектами (папками и документами), они могут выбрать для себя программу, которая позволяет наглядно и поштучно работать с объектами файловой системы -- <диспетчер файлов|> (file manager). Поскольку представление файлов и каталогов как папок и документов нужно в первую очередь в рамках метафоры рабочего стола, то и диспетчеры файлов для Linux разрабатываются прежде всего как приложения той или иной среды рабочего стола. В частности, и в KDE, и в GNOME есть свои диспетчеры файлов -- ^konquеror^ и ^nautilus^ соответственно, которые по совместительству служат www-броузерами. Такое совмещение функций вполне логично, поскольку в среде рабочего стола нужно представлять доступные локальные и удалённые ресурсы как единое пространство, наполненное объектами, которыми можно манипулировать, можно ``открывать'', т. е. запускать соответствующее приложение для просмотра и/или редактирования. Для многих пользователей наиболее удобный способ работы с файловой системой -- ``классический'' двухпанельный диспетчер файлов, работающий в текстовом режиме (в терминале) -- Midnight Commander (название утилиты -- ^mc^)[[Пользователи, знакомые с MS-DOS, вспомнят Norton Commander, а пользователи помоложе -- Far Manager.]]. Его функциональность также шире просто операций с файлами -- он позволяет открывать файлы для просмотра и редактирования, вызывать вспомогательные программы для работы с архивами (и даже ``заходить'' в архивы, как в каталоги), передавать данные по сети и~т.~п. Midnight Commander имеет также неплохой встроенный текстовый редактор, опять-таки ``классического'' стиля. # Картинко-ориентированные (всякие gqview) Далеко не всё, что нужно делать в Linux, в среде ^mc^ так же удобно, как и в полноценной командной строке. Кроме того, при работе с _графическими_ файлами сильно не хватает представления этих файлов в виде миниатюр (thumbnails), чтобы выбирать среди них по содержимому, а не только по имени. Такими возможностями обладают многочисленные графические диспетчеры файлов; помимо тех, что включены в среды KDE и GNOMe, есть множество независимых: dfm (похожий на диспетчер файлов OS/2), emelFM2, EZFM и X Northern Captain (двухпанельные, причём автор последнего -- наш человек из Дубны), gentoo и worker (двухпанельные, в стиле диспетчера файлов DirectoryOpus из AmigaOS), FSV и XCruiser (трёхмерные! причём последний похож скорее на космический симулятор). Среди них встречаются и ориентированные специально на просмотр изображений, такие как GQView, endeavour, gview, qiv, xzgv и некоторые другие, -- с возможностями слайд-шоу, автоматического изменения размера, показа картинки на полный экран и~т.~п. >>> Эмулятор терминала # Специфические для десктопов, xterm, uterm, rxvt Даже для такой на первый взгляд тривиальной функции, как эмуляция терминала для X Window System, существует целый круг программ. Самая стандартная из них поставляется вместе с XOrg -- ^xterm^. Вариант ^xterm^, поддерживающий отображение шрифтов в кодировке UNICODE, вызывается командой ^uxterm^. Однако каждое приложение, организующее среду рабочего стола, включает собственный <эмулятор терминала|>, внешний вид и поведение которого настраивается централизованно вместе со всеми остальными приложениями рабочего стола. Есть и другие эмуляторы терминала, не связанные с конкретным рабочим столом, к таким относится ^9term^, повторяющий возможности ``окна'' системы Plan9, ^mlterm^, имеющий многоязыковую поддержку, ^rxvt^ -- очень нетребовательный к ресурсам эмулятор терминала, или его потомки, наподобие ^aterm^. # /*G*/ screen как замеена виртуальной конcоли: одно окно, presistent+detach/attach Большое количество терминальных окон на рабочем столе может образоваться, даже если раскладывать их по разным виртуальным экранам. Некоторые версии ^xterm^ (например, ^konsole^), позволяют открывать окна ``стопками'', переключаясь между ними с помощью ``закладок'', как в записной книжке. #FIXME: перенести в более подходящее место (в другой документ) #Если основная работа происходит на удалённом компьютере, и каждый ^xterm^ соответствует сеансу удалённой работы, можно пойти и другим путём. Устанавливается _одно_ соединение с удалённым компьютером, а _там_ запускается эмулятор терминала ^screen^. Эта программа не взаимодействует с графической средой. Она просто открывает требуемое число <псевдотерминалов|псевдотерминал>, и в каждом из них запускает по командному интерпретатору. Ввод со стандартного ввода попадает на тот псевдотерминал (``экран''), который ^screen^ считает ``видимым'', а вывод происходит на всех экранах независимо. С помощью управляющего символа "^A" этой утилите подаются команды -- переключиться на следующий экран ("^A^N", при этом пользователь увидит то, что на этот экран выводилось), открыть новый ("^A^C") и~т.~п. #Типичное применение ^screen^ -- в одном окне запущен текстовый редактор, в другом -- командная строка. Удобство дополняется тем, что от работающего ^screen^ можно ``отсоединиться'' ("^A^D"), при этом пользователь может прервать терминальный сеанс и пойти спать, а интерпретатор командной строки и редактор будут работать на удалённом компьютере, как ни в чём не бывало (но, конечно, не будут проявлять никакой активности). Когда пользователь вернётся, он вновь присоединится к удалённой машине и ``подключится'' к работающему ^screen^ (команда ^screen -R^), и продолжит работать с редактором и командной строкой. >> Сеть >>> WWW-броузеры # Mozilla, Firefox WWW-броузер -- программа для просмотра гипертекста, доступного через Internet -- на сегодня чуть ли не самое важное приложение для персонального компьютера. Сегодняшний должен ``уметь'' гораздо больше, чем просто отображать страницы HTML и переходить по гиперссылкам. Фактически, на него ложится задача работы данными Internet во всём их многообразии, сюда входит и поддержка постоянно развивающихся стандартов, и обеспечение безопасности, и многое другое. В Linux есть довольно большой выбор www-броузеров, однако первым действительно современным свободным приложением для работы с Internet стала Mozilla, а затем её потомки, которые сегодня вполне успешно конкурируют с аналогичными коммерческими программами. Mozilla -- это целый пакет приложений для работы с Интернетом: мощный, насыщенный функциями коммуникационный центр для персонального компьютера. В состав пакета входит броузер, программа для работы с электронной почтой и редактор www-страниц. История Mozilla началась в 1998 году, когда фирма Netscape опубликовала исходные тексты своего броузера Netscape Navigator. Одно из важных свойств пакета Mozilla -- его принципиальная расширяемость. В Mozilla реализован язык XUL на основе XML, при помощи которого очень легко разрабатывать дополнительные компоненты Mozilla, ориентированные на выполнение специальных функций. #Mozilla Firefox Более современен FireFox, разрабатываемый командой Mozilla на основе исходных кодов, соответствующих только WWW-броузеру. Остальная часть FireFox написана полностью на XUL, поэтому разработка этой молодой программы идёт существенно бодрее и проще, её настройка считается самой гибкой среди www-броузеров, а главное, любой желающий может написать на высокоуровневых языках программирования XUL/JavaScript и опубликовать свой модуль расширения (т. н. plugin; на сегодня таких модулей известно более полутораста). # Специфические для десктопов (conquerror и nautilus в гноме) # текстовые (lynx,[e]links) О www-броузерах, разработанных специально для той или иной среды рабочего стола, уже шла речь выше (они превосходно справляются с ролью файловых диспетчеров). Важная разновидность www-броузеров -- текстовые броузеры, т. е. те, которые могут быть запущены в любом текстовом терминале Linux. Самый старый и известный из них, один из прототипов современных www-броузеров -- Lynx. Он не имеет возможности отображать графическую информацию, но отлично поддерживает HTML, формы и таблицы. Современные версии поддерживают также соединения, защищённые при помощи SSL. Links -- это текстовый броузер, на первый взгляд очень похожий на Lynx, но все же несколько отличающийся от него: . умением работать с таблицами и фреймами; . отображением цветов, указанных в HTML-странице; . использованием выпадающих меню (как в Midnight Commander); . возможностью загрузки файлов в фоновом режиме. # /*G*/ FTP и offline-HTTP: ftp, lftp, wget Помимо возможности _просмотра_ WWW-страниц часто выпадает необходимость их ``скачивания'', т. е. записи в файл. Это же относится и к ресурсам, доступным по протоколу FTP. Все описанные выше броузеры способны записывать HTTP- и FTP-ресурс в файл, но для удобной работы из командной строки они, как правило, непригодны. Кроме старой и весьма простой утилиты ^ftp^, имеются два её мощных расширения: ^lftp^ и ^wget^. Обе утилиты поддерживают как FTP, так и HTTP, причём ^lftp^ может работать, как и ^ftp^, в режиме ``оболочки'', а ^wget^ предназначена именно для работы из командной строки. Если при получении файлов с какого-то сервера или группы серверов необходимо описывать множество исключений (чтобы не скачать лишнего), выполнять какие-то действия (например, заполнять формы или выполнять java-сценарии), можно воспользоваться более сложными программами ^pavuk^ или ^httrack^. >>> Почтовые программы # /*G*/ Thunderbird, Sylpheed Подобно тому, как Firefox возрождает WWW-ипостась Mozilla, Thunderbird повторяет -- и расширяет -- почтовую составляющую Mozilla. Большинство сказанного о Thunderbird на сегодня справедливо и для MozillaMail. Так же, как и в Firefox, в Thunderbird используется часть исходного кода Mozilla, которая работает с сетью (на этот раз -- с отсылкой почты и доступом к почтовым ящикам), а интерфейс и архитектура приложения в целом -- переделаны для того, чтобы избавиться от стародавних частей Netscape и облегчить дальнейшую разработку. Thunderbird (как и MozillaMail) обладает самым мощным на сегодняшний день встроенным антиспам-фильтром. Если непрошеная почта всё-таки попадает в ваш почтовый ящик, просто показывайте её Thunderbird со словами ``это -- спам!''. Через некоторое время программа сама научится отличать непрошеную почту от полезной. Как и Firefox, Thunderbird легко расширять собственными модулями, написанными на высокоуровневых языках, и можно очень гибко настраивать. Ещё один <почтовый клиент|>, несколько уступающий Thunderbird по возможностям, но превосходящий его по быстродействию, называется Sylpheed. Интерфейс этой программы весьма похож на стандартную почтовую программу для Windows, Outlook Express, что может помочь избежать лишних хлопот при смене операционной системы. Автор этой программы, Хироюки Ямамото, человек аккуратный и пунктуальный, так что некоторый недостаток возможностей (эта программа умеет столько же, сколько и Outlook Express) компенсируется безотказной работой и гибкой системой интеграции с другими утилитами системы (антивирусом, антиспам-фильтром и~т.~п.). Кроме того, существует ветка Sylpheed, называемая Sylpheed-Claws, в которой проходят проверку все нововведения. Стабильная версия Sylpheed-Claws работает ничуть не хуже авторской Sylpheed, а возможностей у неё больше. # Специфические для десктопов (kmail и evolution в гноме) Поскольку управление электронной перепиской -- одна из задач рабочего стола, в каждой среде рабочего стола есть свой собственный почтовый клиент. Почтовый клиент для KDE называется KMail, он поддерживает как локальную доставку почты, так и множество почтовых протоколов (POP3, IMAP, SMTP). Почтовый клиент для GNOME называется Evolution, он интегрирован с календарём, адресной книгой и претендует на функции индивидуальной ``записной книжки''. # текстовые (pine/mutt) Электронная переписка сама по себе не требует графического интерфейса, для чтения и написания электронных писем вполне достаточно возможностей терминала и текстового редактора. Среди текстовых почтовых клиентов для Linux наиболее известны Mutt и Pine, оба очень функциональны, поддерживают множество протоколов и форматов почтовых ящиков, хорошо настраиваются. Требовательным пользователям, которые хотят иметь возможность изменять внешний вид и способ работы почтового клиента, дополнять его сценариями и получать от почтовых служб всё, что те могут дать, рекомендуется Mutt. Тем же, кому главное -- просто получать, читать и отправлять почту (со всеми полагающимися удобствами), стоит начать с Pine. Любители Emacs используют встроенный в него модуль GNUS, весьма богатый функциями. >>> Обмен сообщениями # /*G*/ psi, sim (kde), gaim (gnome), xchat Если компьютер подключён к Internet постоянно, бывает удобно пользоваться службами, передающими сообщения в реальном времени (instant messaging service). Таких служб довольно много, самая популярная из них -- ICQ. Множественность объясняется тем, что в большинстве случаев этот сервис предоставляется _централизованно_, какой-нибудь крупной корпорацией. Во многих случаях _серверы_ этих служб не доступны под свободной лицензией. Исключение в ряду ``собственников'' -- служба Jabber, основанная на полностью открытом протоколе XMPP. Jabber позволяет любому сообществу создавать собственные сервера, управляемые собственными администраторами. Сам Jabber-сервер имеет возможность соединять своих клиентов не только с другими Jabber-серверами, но и со службами ICQ, MSN, Yahoo и AIM. В Linux есть несколько клиентских программ для обмена мгновенными сообщениями. Особняком стоят клиенты IRC (_I_nternet _R_elay _C_hat), службы с более долгой историей и сложным протоколом (имеется в виду и сетевой протокол, и протокол работы пользователя в IRC). Psi -- удобный графический клиент сети быстрого обмена сообщениями Jabber (а значит, по всем протоколам, которые поддерживает выбранный Jabber-сервер). Psi поддерживает такие возможности Jabber, как одновременная работа с несколькими серверами, конференции, криптозащиту передаваемой информации (через SSL и GnuPG), работу через HTTP(S) прокси-сервер и~т.~д. SIM -- многопротокольный клиент обмена мгновенными сообщениями. Поддерживаются протоколы ICQ, Jabber, MSN, AIM, YIM, а также LiveJournal. Кроме того, имеется множество модулей, реализующих дополнительные возможности. Есть вариант SIM, ориентированный на среду KDE. ``Прицельно'' на среду KDE ориентирован и другой мощный клиент, имеющий поддержку также и IRC, -- Kopete. На среду Gnome ориентирован Gaim -- наиболее мощный и наиболее гибко настраиваемый клиент. Имеет модули доступа почти ко всем мыслимым протоколам, позволяет писать сценарии на Perl и TCL. Для IRC есть и специальные клиенты: ChatZilla (как можно догадаться из названия, он ``встроен'' в Mozilla, но доступен и как дополнение к Firefox) или X-Chat -- весьма мощная программа, ориентированная на ``хитрости'' IRC. [<Предупреждение!> Обмен информацией и бессмысленными текстами при помощи любой из перечисленных служб, а также телефона, _не заменяет_ человеческого общения! Помните, что компьютер передаёт только данные, но не эмоции.] # /*G*/ текстовые centericq, licq, irssi Не обойдён стороной и интерфейс текстовой консоли: CenterICQ, поддерживающий несколько протоколов (среди них Jabber и IRC); licq, обладающий как текстовым, так и графическим интерфейсами (следовательно, им можно пользоваться и находясь за рабочей станцией, и дистанционно); irssi, нацеленный на службы типа IRC (на сегодняшний день поддерживаются IRC, SILC и ICB), и~т.~д. >> Офисные программы # OOo Важной частью современной рабочей станции являются так называемые офисные средства обработки информации. Под <офисными приложениями|офисные приложения> обычно понимают стандартный набор из текстового процессора, средства работы с электронными таблицами, средства создания презентаций, средства для работы с базами данных. Все перечисленные офисные приложения входят в пакет OpenOffice.org -- это свободный набор офисных программ, не уступающий по возможностям несвободному Microsoft Office, а кое в чём даже превосходящий его. Например, частность, которая может иметь очень важное значение: компонент OpenOffice.org OpenWriter позволяет экспортировать документы непосредственно в формат PDF. Интерфейс OpenOffice.org устроен принципиально так же, как и у аналогичных продуктов Microsoft, так что пользователю, привыкшему к Microsoft Office, не составит большого труда перейти к работе в OpenOffice.org. Кроме того, OpenOffice.org позволяет работать со всеми форматами файлов Microsoft Office. История OpenOffice.org напоминает историю Mozilla: поначалу проект (под именем StarOffice) развивался закрыто, без доступа мирового программистского сообщества к исходным текстам. Однако в 2000-м году компания Sun Microsystems открыла исходные тексты программного продукта, образовав OpenOffice.org. Так же, как и в случае Netscape/Mozilla, пара StarOffice/OpenOffice.org использует двойное лицензирование, дающее право как свободного доступа к исходным текстам, так и использования их в закрытых коммерческих продуктах. # упомянуть koffice/abiword По возможностям OpenOffice.org остаётся самым развитым и полным офисным пакетом для Linux, однако есть и другие офисные средства. В частности, офисный пакет Koffice, ориентированный на среду KDE, в котором есть примерно тот же набор офисных приложений, что и в OpenOffice.org. Кроме того, есть отдельные офисные приложения, не составляющие пакетов -- словарный процессор Abiword и электронные таблицы GNUmeric. >> Графика # по мелочи (или причёсанное под) -- под каждый desktop Чем проще пользовательская задача, тем больше программ под Linux её решают. В частности, манипуляция геометрическими фигурами с возможностью изменения их параметров (цвета, размера и~т.~п.), хранением набора фигур в файле и преобразованием получившегося изображения в растровый формат -- довольно простая задача, требующая аккуратной реализации основных функций какой-нибудь высокоуровневой библиотеки (или двух -- интерфейсной и графической). Неудивительно, что редакторы с подобными возможностями есть и для каждого рабочего стола, и независимо от них. Это утверждение относится и к ещё более простым программам работы с растровой графикой. Ниже описаны только существенно более сложные программы. >>> Векторная графика <Векторной графикой|векторная графика> называется способ работы с изображениями, при котором оно представлено в виде фигур, каждая из которых имеет собственное описание (тип, размеры, кривизну или иные параметры составных частей, их цвета, способ представления и~т.~п.). Некоторые графические устройства (например, распознающие формат PostScript) умеют сами интерпретировать описания фигур, для других необходимо заранее просчитать и сформировать картинку программным путём. >>> Работа с PostScript и PDF # ghostscript, gv, psutils Современная полиграфия уже не мыслится в отрыве от компьютеров, все допечатные материалы обычно существуют в электронной форме, и именно электронные документы подаются на печатающие устройства для вывода. Причём для современной полиграфии de facto стандартом является формат PostScript. PostScript -- это язык описания страницы, позволяющий представить любые полиграфические материалы в векторном формате (однако он допускает и включение растровых фрагментов). Файл в формате PostScript фактически представляет собой программу, описывающую, какие действия нужно произвести, чтобы получить требуемый вывод. Профессиональные печатающие устройства умеют самостоятельно интерпретировать документы на языке PostScript. PDF (_P_ortable _D_ocument _F_ormat, переносимый формат документов) создан на основе языка PostScript. Его основная задача -- обеспечить одинаковый внешний вид документа в любой операционной системе. В PDF есть специальные возможности для публикации документов в Сети, в частности, поддержка гиперссылок, а некоторые возможности языка PostScript оттуда, наоборот, исключены. Ghostscript -- интерпретатор языка описания страниц PostScript и файлов в формате PDF (формат переносимых документов). Ghostscript преобразует PostScript во многие растровые форматы, подходящие для вывода данных на экран или на принтер, не поддерживающий PostScript. Обычно Ghostscript используется для просмотра файлов PostScript и для печати на принтерах, не поддерживающих язык PostScript, GhostScript используется множеством приложений для вывода данных на печать. Графический интерфейс для GhostScript предоставляет программа GhostView (команда ^gv^), она позволяет отображать документы в форматах PostScript и PDF в графической среде X Window System. Для различных манипуляций с файлами в формате PostScript предназначен пакет утилит командной строки ^psutils^, с их помощью можно выбрать, переупорядочивать, масштабировать страницы в PostScript-файлах, изменять параметры текста и делать многое другое. # xpdf, упомянуть об acrobat Специально для просмотра PDF-файлов предназначена программа xpdf, она позволяет переходить по гиперссылкам в документе, просматривать структуру документа, производить поиск и поддерживает сглаживание шрифтов. На основе исходных текстов xpdf создана библиотека poppler, предназначенная для отрисовки PDF, которая стала основой других популярных приложений для просмотра PDF: kpdf (компонент графической среды KDE, отличается более богатыми интерфейсными возможностями) и Evince. Многие дистрибутивы Linux включают Acroread -- версию известного приложения Adobe Acrobat для Linux, однако, в отличие от названных выше, оно является несвободным программным продуктом. >>> Диаграммы Отдельно стоит упомянуть редакторы диаграмм и блок-схем, которые часто смешивают с обычными редакторами векторной (плакатной) графики. Между тем, задачи у них разные: если для плакатной графики главное -- построение ``картинки'', соответствующей задумке автора по _внешнему виду_, то в диаграмме автора более беспокоит _логическое_ соответствие изображения проекту и его _наглядность_. Поэтому при построении диаграммы много внимания уделяется ``стрелочкам'' и прочим соединительным линиям, оптимальному размещению объектов на странице, типизации объектов и~т.~п. Самая старая из подобных утилит, xfig, и по сей день активно используется, формат её диаграмм распознают многие средства работы с векторной графикой. Более мощной является утилита Dia, возможности которой продолжают расти (среди проектов: перевод диаграмм, представленных в нотации языка моделирования программных продуктов UML, непосредственно в текст программ на C++ и других языках). Аналогом Dia для KDE является встроенная в пакет KOffice утилита Kivio. >>> Плакатная графика # /*G*/ sodipodi, inkscape, Karbon14 Что же касается собственно векторной (плакатной) графики, то и здесь есть из чего выбирать. Например, Inkscape -- программа векторного рисования общего назначения. Она использует в качестве формата собственных файлов W3C SVG и обладает не только полным набором базовых функций работы с векторными объектами и слоями, но и рядом функций, аналогов которым нет и в крупных закрытых продуктах, таких как Adobe Illustrator или Corel DRAW. Кроме того, в ней реализован механизм расширений, благодаря которому к программе можно дописать новые функции на языках Perl, Python и Ruby. Непосредственный предок, от которого ``отпочковался'' Inkscape -- программа Sodipodi, обладающая сходными возможностями и более продолжительной историей. Многообещающе выглядит проект Skencil, позволяющий редактировать некоторые виды PostScript-файлов. Среда KDE также имеет ``свой'' редактор векторной графики, Karbon14, входящий в состав семейства программа KOffice. >>> Растровая графика <Растровая графика|растровая графика> означает работу с изображением, представленным в виде матрицы точек (``пикселей''). Это значит, что при сильном увеличении границы любого объекта будут выглядеть ``лесенкой'' из точек (в отличие от векторного представления, где увеличение повышает качество изображения). С другой стороны, растр -- удобный для компьютерной обработки формат представления фотографий, сделанных от руки рисунков и прочих изображений, которые нельзя расчленить на отдельные фигуры. # Gimp В GNU/Linux есть развитые средства для редактирования растровой графики. Самым мощным из них является GIMP (_G_NU _I_mage _M_anipulation _P_rogram). С её помощью пользователь сможет редактировать изображения, создавать логотипы и другие графические элементы, особенно полезные при создании Web-страниц. GIMP включает много инструментов и фильтров, аналогичных тем, которые можно найти в коммерческих графических редакторах, а также несколько возможностей, эксклюзивных для этой программы. GIMP предоставляет возможность работать с цветовыми каналами, уровнями изображения, накладывать эффекты, сглаживать шрифты и конвертировать изображения в разные форматы. В GIMP имеется собственный язык программирования сценариев (на основе Scheme), на котором можно создавать довольно замысловатые дополнения к основной программе. Такие дополнения можно писать также на Tiny-Fu (облегчённая версия Script-Fu), Python, Perl и C#. Недостаток GIMP -- слабая поддержка цветовой модели CMYK, используемой в полиграфии, поэтому в электронной документации, редактировании изображений для www-страниц и прочих областях, не имеющих дела с бумагой, его применяют чаще. # ImageMagick Очень полезен набор утилит для обработки графики из командной строки -- ImageMagick. В этот набор входят утилиты для отображения (^display^), преобразования (^convert^) изображений, захвата изображений с экрана (^import^) и даже собственный интерпретируемый язык программирования, Magick Scripting Language. Для полуавтоматического перевода из растрового представления в векторное существует несколько специальных утилит, например, autotrace/autofig или potrace. >>> Трёхмерная графика Для Linux создано несколько программных пакетов, работающих с пространственными представлением объектов. # /*G*/ blender, povray Исходные тексты одного из самых мощных пакетов трёхмерного моделирования, пересчёта (рендеринга) и анимации -- Blender -- в 2002 году были открыты и весь проект полностью переведён под свободную лицензию. Авторы Blender пришли к выводу, что открытая разработка _инструмента_ более эффективна и прибыльна для тех, кто этим инструментом (а не его продажей) зарабатывает. Для этого пришлось выкупить находящиеся в собственности спонсоров части проекта у хозяев за сумму сто тысяч евро. Искомую сумму предоставило сообщество пользователей Blender, уже тогда немалое: каждый внёс сколько смог, и менее чем за два месяца денег на счёте оказалось достаточно. С тех пор круг пользователей и возможности Blender продолжают постоянно расти. Для выполнения задач, совмещаемых Blender, есть и отдельные программные средства. Например, популярный пакет трассировки лучей (трёхмерного проектирования и сценографии) POV-Ray, с помощью которого создаются проекты удивительной сложности и красоты (например, перевод картины Уильяма Марлоу ``Каприччо'' в трёхмерное представление -- с тем только, чтобы из определённой точки _повторить_ её). Многие графические редакторы имеют встроенные средства анимации, а иные (как, например, CinePaint, называвшийся ранее FilmGimp) специально разрабатываются для покадровой обработки видео. # OpenGL Не стоит забывать, что популярный нынче стандарт OpenGL -- открытый; он разрабатывался для UNIX-подобных систем и используется большим числом программ для Linux (в том числе и Blender). К сожалению, производители _аппаратного_ обеспечения (видеокарт), как правило, скрывают не только устройство своих карт, но даже и способ их низкоуровнего использования. Поэтому в открытом доступе оказываются лишь готовые драйверы (без исходных текстов) к _некоторым_ версиям ядра Linux и определённым сборкам XOrg. Отображение трёхмерных объектов с пересчётом на программном уровне пока работает существенно медленнее, хотя ничуть не хуже, поэтому используя OpenGL для игр и прочих программ, требующих действительно быстрой работы графической подсистемы, нужно всегда помнить о необходимости получить -- возможно, несвободный -- драйвер. >> Мультимедиа >>> Музыкальные шкатулки # xmms, beep, xmp... много # под десктопы Программ-проигрывателей звуковых файлов в Linux не перечесть. Очевидный лидер по популярности среди них -- XMMS (_X_ _M_ulti _M_edia _S_ystem). Помимо основной функции -- играть музыку (поддерживается множество форматов) -- в нём реализовано немало звуковых и визуальных эффектов благодаря большому количеству расширений. Интерфейс XMMS аналогичен интерфейсу не менее популярного в системах Windows приложения WinAMP (кстати, XMMS умеет использовать ``шкурки'' WinAMP2). Почти не уступает XMMS его ``брат'' BEEP, использующий графическую библиотеку GTK2, а не GTK. Есть и другие программы, которые ничуть не хуже этих играют музыку. Обычно каждая среда рабочего стола реализует собственный проигрыватель звуковых файлов, хотя бы для того, чтобы воспроизводить собственные звуковые эффекты, связанные с различными системными событиями, однако с их помощью прослушивать файлы может и пользователь. # текстовые: mpg123.321, mikmod, tmidity... море! Очевидно, что для прослушивания звука совсем не обязательно использовать графический интерфейс, поэтому в Linux есть большое количество терминальных утилит для воспроизведения звука. Некоторые из них, например, ^mpg123^, ^mpg321^, ^ogg123^ или ^splay^, предназначены для проигрывания оцифрованного звука (возможно, в сжатых форматах), другие, такие как ^lazy^ или ^cd-console^, управляют музыкальными лазерными дисками, есть утилиты, играющие музыку в нотном (midi) и других форматах -- ^timidity^ (она отличается тем, что преобразует ноты, записанные для инструментов в оцифрованное звучание этих инструментов, а значит, не требует MIDI-устройства), ^mikmod^ (распознаёт множество форматов: MOD, STM, S3M, XM и т.д.), ^sidplay^ и прочие. Чтобы пользователь не запутался, специальные оболочки, например ^mpfc^ или ^cplay^, предоставляют общий интерфейс ко всем консольным проигрывателям. >>> Музыкальные редакторы Часть профессиональных музыкантов предпочитает использовать для записи и сведения многоканального звука дорогие специализированные цифровые станции: в этом повинна и реклама, и низкое, с точки зрения профессионала, качество звука большинства звуковых карт в компьютерах общего назначения. Несмотря на это и для таких компьютеров существует немало программ, работающих со звуком на профессиональном уровне. Такие программы можно разделить на две категории: нотные редакторы, задача которых -- создание, редактирование, запись и нотное представление _музыкальных композиций_, и звуковые редакторы для собственно звука, а также преобразования его, наложения эффектов и~т.~п. >>> Нотные редакторы # /*G*/ RoseGarden, noteedit, muse В операционных системах, основанных на GNU/Linux, также присутствуют мощные программы для редактирования музыки и звука. Пожалуй, самым известным из них является Rosegarden. Программа изначально разрабатывалась для профессиональных <мультимедиа|>-станций от Silicon Graphics и работала на операционной системе IRIX, потом она была перенесена на Linux, а исходные тексты программы были открыты. Сегодня Rosegarden представляет из себя развитый MIDI- и аудиосеквенцер, нотный редактор, а также редактор общего назначения для сочинения и редактирования музыки. Он прост в изучении и идеально подходит для композиторов, музыкантов или студентов музыкальных специальностей, работающих в маленькой студии или записывающихся дома. Noteedit -- нотный редактор (редактор партитур), основанный на MIDI-библиотеке TSE3. Он может писать и читать MIDI-файлы и сигналы от внешней MIDI-клавиатуры. Системные MIDI-устройства используются для воспроизведения нотной записи. Имеется возможность сохранить партитуры в формате MusiXTeX или Lilypond для последующего вывода на печать. MusE -- это MIDI-секвенсер в стиле Cubase/Logic Audio, поддерживающий ввод MIDI-событий с клавиатуры и последующее их редактирование в нотном редакторе, матричном редакторе, редакторе списка событий и редакторе ударных инструментов. >>> Редакторы и фильтры оцифрованного звука # /*G*/ audacity, sweep Популярный свободный редактор звука -- Audacity. Он умеет записывать звук сразу в форматы WAV, AIFF, AU, IRCAM или MP3. В нём есть всевозможные инструменты для редактирования записанного звука, в том числе встроенный редактор амплитуды, настраиваемый режим отображения спектрограммы и средства частотного анализа звуковых дорожек. Встроенные простейшие аудиоэффекты включают усиление баса, WahWah, удаление шума и т. д. Audacity поддерживает модульные дополнения, в которых обычно поставляются более сложные аудиоэффекты. В список поддерживаемых форматов модулей входят VST, LADSPA и Nyquist. Sweep -- это многоканальный звуковой редактор, в котором реализованы все основные операции, такие как удаление, копирование, вставка и применение эффектов, оформленных в виде плагинов, к любой части звукового файла. Примерно теми же возможностями обладают и другие редакторы звука -- Rezound, WaveSurfer и GNUSound. # /*G*/ sox, wavesurfer Как и в случае с другими мультимедиа-форматами, в Linux существуют терминальные утилиты для обработки звука, не требующие графического интерфейса. Основной пакет терминальных утилит для работы со звуком называется SOX, в него входят утилиты для преобразования, записи и проигрывания звуковых файлов, поддерживается множество форматов. При помощи консольных утилит можно также сжимать звуковые файлы в различные форматы с потерей качества. Содержимое файла, сжатого ``с потерей качества'', может быть неотличимо на слух от содержимого исходного файла: алгоритмы преобразования учитывают человеческую физиологию, например, формат MP3 не воспроизводит слишком высоких звуков, а слишком низкие не разделяет на два канала. Смысл термина ``потеря качества'' -- в том, что из упакованного файла _исходный_ восстановить уже нельзя. Сжатие с потерей качества можно настраивать на определённую мощность потока упакованных данных: чем больше данных можно передавать в единицу времени, тем чище звук, поэтому такие форматы подходят для передачи по сети (например, интернет-радио). Основные форматы с потерей качества -- это MP3 (с ним работают упаковщики lame/toolame, bladeenc) и OGG Vorbis (утилита oggenc). Эти форматы (особенно OGG) хорошо подходят для упаковки качественной музыки. Файлы в формате OGG, упакованные семикратно (192 kbp/s), почти неотличимы на слух от исходных. Если необходимо сжать звук с ощутимой потерей качества (но без потери членораздельности и раз в двадцать), можно использовать другие форматы -- gsm, aiff, adpcm, speex (сжатие речи) или bonk. Последний формат -- нестандартный, он поддерживается одноимённой утилитой и отличается большой гибкостью, так как может работать и в режиме ``сжатие без потерь''. Для сжатия без потерь разработан специальный формат -- FLAC, его распознают многие программы (в том числе и утилиты от авторов этого формата -- flac и metaflac) и даже аудиоустройства. >>> Видеопроигрыватели # xine, mplayer, avifile Наиболее полнофункциональным и удобным ``домашним кинотеатром'' для Linux является программа xine. Xine поддерживает mpeg-2 и mpeg-1 (включая DVD) потоки, MPEG-4 и другие форматы. Альтернативный ему универсальный проигрыватель -- MPlayer. Существует приложение для проигрывания видеопотока, получаемого по Сети -- VideoLAN (^vlc^), которое работает с форматами MPEG1, MPEG2, MPEG4 (также известный как DivX) и DVD. # /*G*/ vlc, xawtv/v4l Xawtv -- программа для просмотра и записи видеопотоков Video4Linux, то есть программа для просмотра ТВ. Xawtv использует набор графических элементов Athena. Может использоваться совместно с VDR для просмотра цифрового спутникового, кабельного и эфирного ТВ формата DVB. >>> Видеоредакторы и конвертеры # /*G*/ LiVES, gstreamer, kino В Linux есть выбор средств для преобразования и обработки видео. LiVES (the Linux Video Editing System) претендует на звание простого, но мощного средства редактирования и эффект-обработки видео. Базируясь на GTK+, оно использует для работы такие широко распространённые средства, как MPlayer/mencoder и ImageMagick (в будущем, возможно, GStreamer и Xine). В настоящий момент рекомендуется использовать LiVES для работы с небольшими файлами. GStreamer представляет собой библиотеку для обработки медиапотоков, основанное на идее объединённых в графы фильтров, обрабатывающих медиаданные. Приложения, использующие эту библиотеку, смогут производить любую обработку медиаданных от обработки звука до проигрывания видео. Модульная архитектура позволяет реализовать поддержку любого нового формата данных, просто установив соответствующее расширение. Kino -- это нелинейный редактор цифрового видео (DV) для GNU/Linux. Он хорошо интегрирован с IEEE 1394 и позволяет захватывать изображение, управлять VTR, и записывать на камеру. Этот редактор записывает видео на диск в формате AVI в кодировках type-1 DV и type-2 DV. # /*G*/ transcode, mjpegtools, ffmpeg, mencode Существуют терминальные утилиты для обработки видеопотока, например, пакет transcode. Кодирование и декодирование видеопотока осуществляется с помощью загружаемых модулей. Также поддерживается загрузка внешних фильтров. В число модулей входят: модули импортирования из DVD, элементарных MPEG (ES) и программных потоков (VOB), видео в формате MPEG, цифрового видео (DV), потоков YUV4MPEG, поддержка формата файлов NuppelVideo и необработанных потоков видео; модули для записи DivX, OpenDivX, DivX 4.xx или несжатых файлов AVI с MPEG, звука в форматах AC3 или PCM; дополнительные модули для записи отдельных кадров (PPM) или потоков YUV4MPEG. Пакет transcode содержит набор утилит для демультиплексирования (^tcdemux^), выделения (^tcextract^) и декодирования (^tcdecode^) видеопотока, исследования (^tcprobe^) и сканирования (^tcscan^) ваших файлов и пост-обработки файлов AVI, изменения заголовков файлов AVI (^avifix^), соединения нескольких файлов в один (^avimerge^) или разделения большого файла на несколько AVI-файлов меньшего размера (^avisplit^) для размещения на CD. Ffmpeg -- это ``сверхзвуковой'' кодировщик/декодировщик видео и звука, работающий в режиме реального времени, а также потоковый сервер и преобразователь различных звуковых и видеоформатов. Ffmpeg умеет захватывать видеосигнал из источника Video4Linux и преобразовывать его в файлы различных форматов на основе компенсирующего кодирования DCT/motion. Звук при этом сжимается по алгоритму MPEG-2 или алгоритму, совместимому с AC3. >>> Запись CD и DVD # k3b и xcdroast Для записи дисков и сопровождающих запись задач в Linux есть как минимум два приложения с графическим интерфейсом: входящее в комплект приложений для KDE ^k3b^ и написанное на GTK ^xcdroast^. Фактически, оба этих приложения -- это графические оболочки над терминальными утилитами для записи CD и DVD, в первую очередь ^cdrecord^ и ^cdrdao^, которыми можно пользоваться и непосредственно из командной оболочки. ^cdrecord^ -- утилита для записи дисков с цифровыми данными, в нём реализована полная поддержка аудио-, смешанных, мультисессионных и CD+ дисков. ^cdrdao^ -- программа записи аудиодисков в одну сессию позволяет управлять областями в начале дорожек данных (длиной до 0, ненулевые аудиоданные) и, например, международными стандартными кодами записи. Все данные, которые будут записаны на диск, должны быть описаны в текстовом файле. Аудиоданные могут быть в форматах WAVE или raw. # грабберов -- море Помимо того, для Linux есть множество программ, позволяющих производить обратную операцию: считывание данных с аудиодиска в файл, такие программы называются грабберами (grabber). Один из удобных грабберов с графическим интерфейсом -- Grip. >> Издательские системы # TeX, laTeX Подготовка печатных документов и оригинал-макетов изданий -- хоть и не очень распространённое, но важное приложение компьютера. В Linux самой известной и системой подготовки качественных документов, пригодных к печати в типографии, является TeX. TeX -- это фактически специализированный язык программирования, специально разработанный для описания типографского набора. Документ в TeX представляет собой текст, сопровождённый командами, указывающими, какое форматирование следует произвести. Возможности TeX очень широки, однако для того, чтобы их использовать в полной мере, требуются довольно серьёзные познания в нём. Чем шире познания -- тем легче, быстрее и удобнее готовить документы в ТеХе и тем лучше их качество. Обычно TeX используется совместно с пакетами форматирования более высокого уровня, например, LaTeX. LaTeX -- это комплекс написанных на языке TeX макропакетов, предоставляющих удобные средства для решения типичных задач оформления печатных изданий. В LaTeX определено оформление для нескольких стандартных классов документов. # LyX LyX -- это современных подход к написанию документов, разрывающий с устаревшей парадигмой использования компьютеров как пишущих машинок, применяемой в большинстве других систем подготовки документов. Он разработан для тех, кто хочет получить профессиональное качество документа при печати, не тратя при этом много времени и усилий, и не становясь специалистом по полиграфическому оформлению. Основное новшество в LyX -- это WYSIWYM (What You See Is What You Mean -- вы видите то, что вы имели в виду), которое означает, что автор сосредотачивается над своей работой, а не над деталями оформления документа. Это позволяет продуктивно работать, оставляя заключительное оформление специальному движку (такому как LaTeX), который специально разработан для подобных задач. С LyX автор может сконцентрироваться на содержании своей работы и позволить компьютеру взять большинство забот об оформлении на себя. # прочее (scribus) В Linux есть по крайней мере одна программа для визуальной подготовки оригинал-макетов, аналогичная <издательским системам|издательские системы> Adobe PageMaker, QuarkXPress и подобным -- ^scribus^. Возможности его могут быть более ограничены, чем у перечисленных коммерческих аналогов, однако он распространяется свободно и в настоящее время активно разрабатывается. >> Нельзя объять необъятного # Что не вошло? Средства разработки: ЯП и модули к ним, библиотеки; всяческие внешние устройства и работа с ними; БД и прочие серверы в составе сложных проектов; а также игры (вот здесь мельком рассказать про эмуляторы и про пересадку программы под dosbox, о которой в комментариях вначале) В этот краткий и фрагментарный обзор не вошли собственно инструменты для разработки программного обеспечения, которые развиты в Linux чуть ли не лучше, чем все остальные приложения, поэтому написать краткий обзор для них гораздо сложнее. Не сказано ничего о серверах баз данных (не не потому, что таких серверов нет!) и серверах приложений в составе сложных проектов. Обойдены вниманием и игры -- любой читатель этого раздела сможет самостоятельно решить, сколько внимания и каким из них уделять. # Напоследок: apt-cache search+google Напоследок повторим: главной целью приведённого обзора приложений для Linux было показать, что приложения есть и их много, нужно только достаточно внимательно искать -- и нужное обязательно найдётся. В ALT Linux для поиска доступен очень удобный инструмент -- менеджер пакетов APT и команда ^apt-cache search^. Поскольку в современные дистрибутивы Linux входят тысячи пакетов, почти наверняка среди них найдётся нужное приложение. Кроме того, любому пользователю Internet доступен поисковый сайт @http://google.com@, наиболее подходящий для поиска чего бы то ни было, а для поиска существующих приложений для Linux можно воспользоваться специализированными сайтами -- @http://rpmfind.net@, @http://freshmeat.net@, @http://rpm.pbone.net@ или сайтом, посвящённым выбранному дистрибутиву. # Напоследок: везде есть выбор! Обратите внимание, что все названные в этой лекции приложения -- это свободно распространяемые и разрабатываемые программы, если не оговаривается обратное. Характерная черта свободного программного обеспечения состоит в том, что если для решения какой-то задачи есть одно свободное приложение, то всегда есть и несколько других, так что пользователь всегда может выбрать себе приложение по вкусу, а если подходящего не обнаружится -- изменить для себя одно из уже существующих или даже написать новое. В конце концов, нет ничего дороже и милее сделанного собственными руками велосипеда.