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

KBasic Gnuplot Школа LXF LXFDVD

LXF122
Решите проблемы Runtu Office Pro
лицензирования ПО
Легкая ОС для

LXF Сентябрь 2009


офисных компьютеров

с помощью
ПЛЮС: OpenSolaris 2009.06
Sabayon 4.2 TinyCore Linux

профессионалов! Главное в мире Linux


Сентябрь 2009  № 9 (122)

Linux против Windows 7


Linux vs
Операционная система GNU/Linux и свободное программное
обеспечение помогут вам с минимальными затратами
решить проблему лицензирования программного
обеспечения, повысить безопасность и надежность
вашей компьютерной сети.

Windows 7
Компания ГНУ/Линуксцентр предлагает

Gnuplot
вам внедрение ОС GNU/Linux и свободного
программного обеспечения, реализацию
и техническую поддержку сложных технических

OpenSolaris
решений на базе свободного ПО, обучение ваших
сотрудников — как пользователей, так и технических
специалистов.

Познакомьтесь со свободными

Incognito
С НАШЕЙ ПОМОЩЬЮ ВЫ СМОЖЕТЕ:
� оптимизировать затраты на лицензирование ПО за счет максимально
возможного использования свободного ПО;
программами, оставляющими
Редмонд далеко позади

KOffice 2.0
� существенно сократить время системных администраторов,
затрачиваемое на устранение последствий деятельности вирусов
и сбоев в программном обеспечении.

ТИПОВЫЕ ПРОЕКТЫ: СРЕДИ

Python
� миграция рабочих станций и серверов с Microsoft Windows на GNU/Linux;
НА ШИ Х К Л
ИЕНТОВ
Видеоплейеры
� Прави
тельство
� установка 1С на серверах и рабочих станциях � Прави
тельство
Московс
кой обла
сти;
:
Ни жегор

Lua
Не в чем смотреть
под управлением GNU/Linux; � а дмин одской о
истрация бласти;
Приморс Чер
� миграция с Microsoft Windows Active Directory кого кра ниговского райо
� Мини я; на
фильмы? Смотрите сюда! с. 14

Scilab
на Mandriva Directory Server; стерс
Са ха (Як тво финансов ре
� миграция с Microsoft Exchange на Zimbra; у тия); спублики
� В ла д и
восто
� внедрение интернет-телефонии на базе Asterisk; универси кский государств
� внедрение свободной CRM-системы SugarCRM;
� создание кластеров высокой доступности;
� групп
� компа
тет эконо
а компан
ния «Азб
ий «ИМА
Г»;
е
мики и се нный
рвиса; OpenVPN OpenSolaris
� реализация терминальных решений; � компа
ния «Бес
ука мебе
тли — вы
ли»; Примените свои Linux-навыки
и д ругие
� создание порталов любой сложности на базе свободных
CMS-систем — Joomla, Drupal, Plone;
организа ставочны
ции разл е матери
ичного п а лы» к другой Unix-подобной ОС с. 30
рофи ля.
� внедрение защищенных систем на основе сертифицированного ФСТЭК ПО.

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


в компаниях различного профиля поможет выбрать оптимальное
Кто здесь? Спасите Windows! Python
сочетание свободного и коммерческого программного обеспечения, Работайте в сети со 100%-ной Прочтите это, если двойная if (you.love_coding):
подходящее именно для вашей организации, а также поможет избежать анонимностью с. 34 загрузка стала одинарной с. 84 turn_to(с72)
техничеких и организационных проблем при внедрении свободного ПО.

Если вы хотите создать открытый В каталоге агентства «Роспечать» — подписной индекс 20882
В каталоге «Пресса России» — подписной индекс 87974
Департамент внедрений компании ГНУ/Линуксцентр
Телефон в Москве: (499) 271-49-54,
ЗВОНИТЕ проект, не позволяйте вашему эго
в Санкт-Петербурге: (812) 309-06-86 СЕЙЧАС! преграждать ему путь.
Расмус Лердорф про PHP с. 28
 Приветствие

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

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

Кто мы
Весь этот ме­сяц наш Грэм во­зил­ся с Windows 7 и по­лу­чил
до­воль­но не­ожи­дан­ные ре­зуль­та­ты. А ка­кая та­кая функ­ция

И вновь
в Linux за­став­ля­ет поль­зо­ва­те­лей Windows пла­кать го­рю­чи­ми
сле­за­ми от за­вис­ти?

про­дол­жа­ет­ся бой
Поч­ти три го­да на­зад (точнее, в ав­г у­сте 2006 го­да) мы раз­би­ра­лись,
Нейл Бот­вик
«чем Linux кру­че Vista». Про­шло не так уж мно­го вре­мени, и Linux сно­ва
Грэм Мор­ри­сон Майк Сон­дерс
Чув­ст­во мо­раль­ной В его на­зва­нии есть Ко­ман­да ls. Что, она встре­тил­ся с Windows на страницах LXF ли­цом к ли­ц у, но на сей раз его
от­вет­ст­вен­но­сти. бу­к­ва ‘X’, как у дру­гих у них уже есть? Ну, так со­перник но­сит бо­лее про­за­ич­ное имя: Windows 7.
Моя ду­ша не про­ кру­тых штук: X-лу­чей, они и до man-стра­ниц
да­ет­ся. X-фай­лов... ско­ро дой­дут. Тогда, в LXF82, мы от­ме­ча­ли несо­мнен­ный при­ори­тет Linux в об­ласти трех­
мер­ных ра­бо­чих сто­лов, сравнивая Xgl и Aero; про­во­ди­ли ана­ло­гии ме­ж ­д у
Beagle и функ­ци­ей ме­ню По­иск в Vista; со­от­но­си­ли вид­же­ты ра­бо­че­го сто­ла
с SuperKaramba и про­чи­ли Linux свет­лое бу­д у­щее. Наш вер­дикт зву­чал так: «Vista
бу­дет по­следней Windows, вы­пу­щен­ной при столь боль­шой до­ле рын­ка. Сле­д ую­
ще­му ре­ли­зу Windows – ко­то­рый, по-ви­ди­мо­му, со­сто­ит­ся око­ло 2012 го­да – при­
дет­ся яро­ст­но сра­жать­ся, что­бы не стать про­сто по­следним.»
Что же, на­до при­знать, что мы слег­ка по­го­ря­чи­лись. Пусть Vista и не оп­рав­да­
Эф­ра­ин Эн­д­рю Гре­го­ри Эн­ди Чен­нел ла на­дежд соз­да­те­лей, но вы­ход ее по­сле­до­ва­те­ля со­сто­ит­ся на два го­да рань­ше
Эр­нан­дес-Мен­до­са В Linux есть web-брау­ KDE 4. Нет, я не из­де­
Он го­то­вит эн­чи­ла­да зер, а в Windows 7 – ва­юсь, но я рас­про­
на­ме­чен­но­го на­ми сро­ка, да и ры­ноч­ная до­ля Windows не пре­тер­пе­ла столь серь­
имен­но так, как я нет. Вот, соб­ст­вен­но, бо­вал его и те­перь ез­ных из­менений. За­то за про­шед­шие три го­да стал дру­гим Linux-ланд­шафт:
люб­лю. Что значит, и все. не мо­гу жить Xgl усту­пил ме­сто Compiz-Fusion, SuperKaramba – плаз­мои­дам KDE 4. За­нят­но,
«ка­кое от­но­ше­ние»?! по-дру­го­му.
что Beagle по-прежнему оста­ет­ся на по­ве­ст­ке дня, и мы все так же ждем от него
«ре­шаю­ще­го рыв­ка».
Со­стя­зание ме­ж ­д у Windows 7 и Linux обе­ща­ет быть бо­лее серь­ез­ным, как
с той, так и с дру­гой сто­ро­ны. В де­ти­ще Microsoft поя­ви­лось несколь­ко доста­точ­
но ин­те­рес­ных функ­ций; сло­во ‘Linux’ те­перь то­же на слу­х у у мно­гих. Но фее­ри­
че­ских по­бед (или про­ва­лов) ждать все же не сто­ит – ду­ма­ет­ся, это бу­дет про­сто
Эн­ди Хад­сон Ник Вейч еще один ви­ток в эво­лю­ции опе­ра­ци­он­ных систем.
Дэ­вид Кар­трайт
А я за­ви­дую всем этим Brewtarget. Он... ык... Ко­ман­да apt-get install
ви­ру­сам в Windows. луччий... [эх] Ты ме­ня free-stuff. Ча­сы раз­ Валентин Синицын, главный редактор
За­ра­жен­ная ма­ши­на – ува­жа­ешь? вле­че­ний на лю­бой
хо­ро­ший по­вод ни­че­го вкус по це­не ин­тер­ info@linuxformat.ru
не де­лать. нет-тра­фи­ка.

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


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

Сентябрь 2009 Linux Format      1


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

Обзоры
Fedora 11 ������������������������������� 8

Linux
На­ши лю­би­мые го­лов­ные убо­ры: шля­па
Шер­ло­ка Хол­мса, ко­те­лок, а те­перь еще
и фет­ро­вая. Сво­бод­ное ПО еще ни­ко­гда
не пред­ла­га­ли но­сить, ли­хо за­ло­мив на­бок.
против

Windows 7
Все, что мо­жет
пред­ло­жить Ред­монд,
С Fedora вы вы­гля­ди­те мод­но про­тив все­го
(а так­же функ­цио­наль­но и сво­бод­но).
луч­ше­го в Linux с. 20
KBasic 1.89f � ������������������������� 10
QBasic, Visual Basic 6 и Visual Basic .NET
в од­ном фла­ко­не, под Linux и по сво­бод­ной
ли­цен­зии? Удив­ля­ет уже отсутствие пу­та­ницы
во всех этих диа­лек­тах.

Что за штука... Gnuplot с. 36


Со­ци­аль­ный
ра­бо­чий стол
Бу­ду­щее со­ци­аль­ных се­тей,
У нас такое чувство, что в последние на сей раз – свет­лое с. 40
Gnuplot

годы Basic для Linux не создавал только


ленивый.

Runtu Office � �������������������������� 11


До вы­хо­да Windows 7 ос­та­ют­ся счи­тан­ные
ме­ся­цы, и мно­гие из нас за­да­ют­ся во­про­сом:
а нель­зя ли по­лу­чить та­к ую же глян­це­вую
чер­ную па­нель, но на ста­ром обо­ру­до­ва­нии?

AVG Anti-Virus 8.5 ����������������� 12


Еще один ан­ти­ви­рус для, сла­ва Бо­г у, Чис­ла + строч­ки = изящ­ные гра­фи­ки.
не гре­ша­щей этой за­ра­зой Linux-плат­фор­мы.

Люди говорят

Ка­ко­го чер­та
я вка­лы­ваю
за этих ти­пов?
Командная строка — это круто,
но у конкурентов есть графический
Я их да­же не знаю.
интерфейс.
Рас­мус Лер­дорф рас­сер­дил­ся с. 28

2      Linux Format Сентябрь 2009


Runtu Office Pro
Сис­те­ма для «ра­бо­чих ло­ша­док»
OpenSolaris 2009.06 Доб­ро по­жа­ло­вать в иные ми­ры!
Incognito Сде­лай­те свое пре­бы­ва­ние в се­ти
по­ис­ти­не ано­ним­ным.
Sabayon 4.2 На­сла­ди­тесь кра­со­та­ми Linux
и пре­вра­ти­те свой ПК в ме­диа-­центр.
...и мно­го че­го еще!  с. 100

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


На­чи­наю­щим

Срав­не­ние: ви­део­плей­е­ры  � � � � � � � � � � � � � �  14 Tonido и Firestarter ��������������� 48


Со­бе­ри­те во­д я­ные па­ры в свое соб­ст­вен­ное
Хо­ти­те смот­реть лю­би­мые филь­мы в истинно сво­бод­ном ок­ру­же­нии? об­ла­ко, а по­том на­строй­те бранд­мау­эр.

Мы под­бе­рем для вас под­хо­дя­щий ин­ст­ру­мент. GIMP


Сверх­ско­рость ��������������������� 52
При­сое­ди­няй­тесь к нам в пу­те­ше­ст­вии че­рез

OpenSolaris ����������������� � � � � � � � � � � � � � � � � � �  30
про­стран­ст­во и вре­мя к по­след­не­му ру­бе­ж у
ком­пь­ю­тер­ной гра­фи­ки.

При­ме­ни­те свои Linux-на­вы­ки к дру­гой сис­те­ме – заодно подрасте­те Raw-съем­ка


Циф­ро­вые не­га­ти­вы ������������ 56
в гла­зах дру­зей-ха­ке­ров. По­мо­жем вам по­лу­чить хо­ро­ший ре­зуль­тат
при не очень хо­ро­ших сним­ках, не при­бе­гая
к до­ро­го­стоя­щим па­ке­там.

Incognito ���������������������� � � � � � � � � � � � � � � � � �  34 OpenOffice.org-1


Дос­т уп к дан­ным ����������������� 60
Ано­ним­ная ра­бо­та в Се­ти на­хо­дит­ся от вас на рас­стоя­нии Из­вле­ки­те дан­ные из ODF-фай­ла
LiveCD и на­строй­ки в BIOS. и об­ра­бо­тай­те их ав­то­ма­ти­че­ски.
Мо­жет, и не­эс­те­тич­но, но за­то де­ше­во,
на­деж­но и прак­тич­но.

Подпишись
OpenOffice.org-2
Рас­ши­ре­ние на Python ��������� 64
Нау­чи­те от­кры­тый офис­ный па­кет кон­вер­
ти­ро­вать ва­лю­ты по кур­су Цен­тро­бан­ка РФ,

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


ис­поль­зуя EuroOffice Extensions Creator.

PDF-версию журнала в подарок!


Се­ти
Рас­ши­рим ох­ват � ������������������ 68
По­лу­чай­те безо­пас­ный дос­т уп к ре­сур­сам
www.linuxformat.ru/subscribe/ ло­каль­ной се­ти че­рез Ин­тер­нет бла­го­д а­ря
OpenVPN и IPSec.
Python
Постоянные рубрики Го­во­ря­щие тви­ты ����������������� 72
Скре­стим Python и Twitter, что­бы ва­ши
се­те­вые дру­зья за­го­во­ри­ли ме­тал­ли­че­ским
Но­во­сти ������������������������ 4 От­ве­ты ����������������������� 88 Че­рез ме­сяц �������������� 112 го­ло­сом ро­бо­та Вер­те­ра.
О ро­ли лич­но­сти в сво­бод­ном Про­бле­мы Linux ре­ше­ны: По­ка вы чи­тае­те эти стро­ки,
про­ек­те, вой­ны web-брау­зе­ров, от об­нов­ле­ний Firefox и со­вме­ст­ной мы го­то­вим для вас LXF123.
Lua
SUSE Studio плюс Google Wave: ра­бо­ты с Mac OS X до спи­сков ASpell. Встраи­вае­мые скрип­ты � ������� 76
мы его ви­де­ли! Про­пус­ти­ли но­мер? ���� 113 Ес­ли ва­ше при­ло­же­ние до­рос­ло до то­го,
Hotpicks ���������������������� 94 Же­лае­те знать, с че­го на­ча­лась что­бы иметь соб­ст­вен­ную сис­те­му сце­на­ри­ев,
Ин­тер­вью LXF ������������ 28 Луч­шие в ми­ре про­грам­мы за­ин­те­ре­со­вав­шая вас се­рия ста­тей? Lua – пер­вое, на что вам сто­ит взгля­нуть.
Рас­мус Лер­дорф, соз­да­тель PHP, с от­кры­тым ко­дом. Вам сю­да! Scilab
рас­ска­зы­ва­ет о том, что бы­ло,
и рас­су­ж ­да­ет о том, что бу­дет. Диск Linux Format ����� 100 Па­кет рас­ши­ре­ний  ��������������� 80
Рас­ши­ре­ние – девиз это­го но­ме­ра
Со­дер­жи­мое двух­сто­рон­не­го DVD
(или, по край­ней ме­ре, данной ко­лон­ки).
Что за шту­ка �������������� 40 под мик­ро­ско­пом.
Что­бы под­твер­дить это, мы на­пи­шем
Не­ко­то­рые на­зо­вут пре­иму­ще­ст­вом
Facebook, Twitter и тому по­доб­ных Шко­ла LXF ���������������
NEW! 108 па­кет рас­ши­ре­ний для Scilab.
возможность их вы­к лю­чить. Подарок к новому учебному году – Hardcore Linux
Так что же хо­ро­ше­го в со­ци­а ль­ном наша образовательная рубрика Чи­ним Windows-раз­де­лы ����� 84
ра­бо­чем сто­ле? вернулась. Александр Поносов Linux-гу­ру мо­жет все – и не толь­ко в Linux.
и Андрей Казанцев подводят Уз­най­те, как по­чи­нить Windows-раз­дел,
Руб­ри­ка си­сад­ми­на � ���� 42 промежуточные итоги школьного ес­ли Windows уже не за­гру­жа­ет­ся.
До­б­рый док­тор чи­та­ет вслух проекта и сравнивают школьные
man-стра­ни­цы и раз­би­ра­ет­ся, дистрибутивы. Наша команда всегда
что сде­лал для нас про­ект GNU рада подписать вас на LXF.
за по­след­ние 25 лет. Электронная версия в подарок!

Сентябрь 2009 Linux Format      3


Новости

Новости
ГЛАВ­Ное: Лю­ди и про­ек­ты Web-брау­зе­ры: про­гно­зы и тен­ден­ции
Со­бе­ри­те се­бе ди­ст­ри­бу­тив Google Wave: пер­вые впе­чат­ле­ния

О ро­ли лич­но­сти Рубрику ведет


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

Ч
и­та­те­ли, сле­д я­щие за но­во­стя­ ка ста­ви­ли под во­прос су­ще­с тво­вание их невоз­мож­но. По­ла­гаю, ли­де­ры сво­бод­
ми он­лайн-пор­та­лов, на­вер­ все­го про­ек­та – я имею в ви­де де­тек­ ных про­ек­тов долж­ны на­хо­дить некий ра­
ное, уже до­га­д а­лись, о чем пой­ тив­ную (и тра­ги­че­скую) исто­рию Ган­са зум­ный ком­про­мисс с осталь­ной коман­
дет речь. По­во­дом для напи­сания за­мет­ки Рай­зе­ра [Hans Thomas Reiser], соз­д а­те­ дой раз­ра­бот­чи­ков и не ста­вить под удар
ста­ло недавнее «ис­чез­но­вение» осно­ва­те­ ля ReiserFS. Из по­с ледних со­бы­тий так­ свое де­ти­ще из лич­ных по­бу­ж ­дений. Соб­
ля и еди­но­лич­но­го ру­ко­во­ди­те­ля CentOS ствен­но, ес­ли вер­нуть­ся к си­т уа­ции во­
Лэн­са Дэ­ви­са [Lance Davis]. Че­рез Дэ­ви­
са шли все по­жерт­во­вания, а кро­ме то­
«Всегла найдутся круг CentOS, так все и по­лу­чи­лось – Лэнс
Дэ­вис пе­ре­д ал пра­ва на то­вар­ные зна­
го – он яв­лял­ся един­с твен­ным вла­дель­
цем до­ме­на centos.org, прав на то­вар­ные
люди, готовые ки и ло­го­ти­пы ди­ст­ри­бу­ти­ва со­об­ще­ству
раз­ра­бот­чи­ков и сей­час за­нят ре­шением
зна­ки (вклю­чая эмб­ле­мы) ди­ст­ри­бу­ти­ подхватить “знамя”.» на­ко­пив­ших­ся труд­но­стей. Го­во­ря в бо­лее
ва, и во­об­ще был неза­менимым для про­ ши­ро­ком смыс­ле – осно­ваний для паники
ек­та че­ло­ве­ком. По­ка ру­ко­во­ди­тель ак­ же при­хо­дит в го­ло­ву слу­чай с Ала­ном нет: ес­ли про­ект востре­бо­ван, все­гда най­
тив­но уча­с тво­вал в жизни CentOS – все Кок­сом [Alan Cox], ко­то­рый пе­ре­с тал дут­ся лю­ди, го­то­вые под­хва­тить «упав­
бы­ло нор­маль­но. Од­на­ко во вто­рой по­ло­ занимать­ся раз­ра­бот­кой под­систе­мы TTY шее зна­мя».
вине ию­ля Лэнс «про­пал», и раз­ра­бот­чи­ по­с ле кри­ти­ки со сто­ро­ны Ли­ну­са Тор­
ки не мог­ли с ним свя­зать­ся. Есте­ствен­но, вальд­са [Linus Benedict Torvalds]. Конеч­но,
возник­ли серь­ез­ные про­бле­мы, ко­то­рые GNU/Linux из-за это­го не ум­рет, но со­гла­ Что бы­ло: Кон­фе­рен­ция на Про­тве
раз­ре­ши­лись по­с ле то­го, как Дэ­вис «на­ си­тесь, не очень при­ят­но, когда ве­д у­щие
шел­ся». Мож­но при­вести и дру­г ую си­ раз­ра­бот­чи­ки яд­ра пре­кра­щ а­ют под­держ­ Когда: 27–28 ию­ля 2009 го­да сан­д­ры Па­ню­ко­вой о ди­ст­ри­
туа­цию, когда про­бле­мы од­но­го че­ло­ве­ ку сво­их про­д ук­тов. Где: г. Обнинск (Ка­луж­ская бу­ти­ве ALT Linux Children и Иго­
об­ласть) ря Во­ронина – об ис­поль­зо­вании
На­после­док сто­ит ска­зать о Пат­ри­ке
Успеш­но про­шла Шестая кон­фе­ бес­про­вод­ных рас­пре­де­лен­ных
Фоль­кер­дин­ге [Patrick J. Volkerding], осно­ рен­ция раз­ра­бот­чи­ков сво­бод­ сен­сор­ных се­тей, в том чис­ле
ва­те­ле и ру­ко­во­ди­те­ле ком­пании Slackware ных про­грамм на Про­тве, ко­то­ в шко­лах. Так­же ве­лось ак­тив­ное
Linux, Inc. Пат­рик еди­но­лич­но оп­ре­де­ рая тра­ди­ци­он­но ор­ганизу­ет­ся об­су­ж ­дение в ку­луа­рах.
ля­ет судь­бу од­но­имен­но­го ди­ст­ри­бу­ти­ ком­панией ALT Linux. В этом го­ Те­зи­сы док­ла­дов мож­но
ду в двух­днев­ной кон­фе­рен­ раздобыть по ад­ре­су:
ва. И хо­тя про­блем здесь по­ка не пред­ http://www.altlinux.ru/media/
ции (как обыч­но, про­хо­див­шей
ви­дит­ся, но ес­ли он внезап­но пе­ре­станет в г. Обнин­ске) уча­ство­ва­ли око­ло protva6‑final_main.pdf
занимать­ся про­ек­том – Slackware, ско­рее 50 че­ло­век. По ма­те­риа­лам www.altlinux.ru
все­го, ум­рет. Один раз над про­ек­том уже Боль­шин­ство уча­стников Фо­то: Алек­сан­д­ра Па­ню­ко­ва
прие­ха­ли не впер­вые, но есть
на­вис­ла уг­ро­за – де­ло бы­ло в 2004 го­д у –
и де­бю­тан­ты, в том чис­ле и сре­ди
но, сла­ва бо­г у, тогда все обош­лось. док­лад­чи­ков. На­при­мер, пред­ста­
В об­щем, когда судь­ба раз­ра­бот­ ви­тель ком­пании «Мо­то­те­ле­ком»
© Hungarian Unix Portal

ки пол­но­стью за­ви­сит от од­но­го че­ло­ве­ Ар­тем Ма­ко­вец­кий рас­ска­зал


ка, это не очень хо­ро­шо. С дру­гой сто­ро­ о раз­ра­бот­ке те­ле­ком­муника­
ци­он­ных ре­шений на сво­бод­
ны, чем стал бы Linux без та­ких лю­дей,
ном ПО, вы­звав боль­шой ин­те­рес
как Тор­вальдс или Фоль­кер­динг? Ведь слу­ша­те­лей.
сво­бод­ный про­ект – это не кор­по­ра­ция, Ак­т у­а ль­ная на се­го­дняшний
где все под­чи­ня­ют­ся ру­ко­во­дству по дол­ день те­ма ис­поль­зо­вания СПО Ин­фор­ма­ци­он­ным
Алан Кокс боль­ше не за­ни­ма­ет­ся под­ спон­со­ром кон­фе­рен­ции
в об­ра­зо­ва­тель­ных уч­ре­ж ­дениях
систе­мой TTY в Linux — те­перь эта за­да­ча гу служ­бы. И здесь про­сто необ­хо­дим ли­
бы­ла оз­ву­че­на в док­ла­дах Алек­ был и наш жур­нал.
Гре­га Кроа-Харт­ма­на [Greg Kroah-Hartman]. дер, за ко­то­рым пой­д ут лю­ди; за­ста­вить

4      Linux Format Сентябрь 2009


 Новости

Боль­ше брау­зе­ров,
хороших и раз­ных
Те­ма web-брау­зе­ров давнень­ко не поднима­лась на страницах Но­во­стей LXF,
а ме­ж­ду тем для это­го есть хо­ро­ший по­вод: в по­следний день ию­ля
со­стоя­лось мил­ли­ард­ное ска­чи­вание Mozilla Firefox.

Э
то зна­ме­на­тель­ное со­бы­тие про­ SELinux или AppArmor. Хо­чет­ся на­де­ять­ся,
изош­ло че­рез ме­сяц по­сле вы­хо­ что раз­ра­бот­чи­ки по­пу­ляр­ных ди­ст­ри­бу­ти­
да оче­ред­но­го ре­ли­за – 3.5. Од­ вов уч­т ут по­следние со­бы­тия и ста­нут уде­
на­ко паль­му пер­вен­ства по ко­ли­че­ству лять боль­ше внимания на­строй­ке систем
за­гру­зок (8 мил­лио­нов раз в су­тки) по- безо­пас­но­сти в сво­их про­д ук­тах, что на­
прежнему дер­жит вер­сия 3.0. Она да­же по­ зы­ва­ет­ся, «из ко­роб­ки». Дру­гих ва­ри­ан­тов
па­ла в Книгу Ре­кор­дов Гиннеса. По­следний ре­шения про­бле­мы я не ви­ж у – уяз­ви­мо­
ре­лиз Firefox «оси­лил» толь­ко 4 мил­лио­на сти в кли­ент­ских при­ло­жениях бу­д ут на­хо­
за­ка­чек в су­тки. Тем не менее, мил­ли­ард­ дить и в бу­д у­щем, это неиз­беж­но.
ный ру­беж – это серь­ез­но. Но хва­тит о гру­ст­ном. По­го­во­рим луч­
К со­жа­лению, с безо­пас­но­стью Firefox ше о пер­спек­ти­вах раз­ви­тия брау­зе­
де­ла об­сто­ят не так хо­ро­шо, как с его по­пу­ ров. Са­мое зна­чи­тель­ное, на мой взгляд,
ляр­но­стью у поль­зо­ва­те­лей. Толь­ко в ию­ со­бы­тие – соз­дание в рам­ках Mozilla ра­бо­
ле бы­ли об­на­ру­же­ны две кри­ти­че­ские уяз­ чей груп­пы, занимаю­щей­ся до­бав­лением
ви­мо­сти, по­зво­ляю­щие зло­умыш­леннику в Firefox воз­мож­но­сти об­ра­бот­ки со­дер­
вы­полнить про­из­воль­ный код в кон­тек­ жи­мо­го несколь­ки­ми про­цес­са­ми од­но­
сте брау­зе­ра ли­бо вы­звать крах при­ло­ вре­мен­но. По мнению стар­ше­го раз­ра­бот­
Вот так, воз­мож­
жения. Пер­вая бы­ла свя­за­на с некон­тро­ чи­ка XULRunner Бенд­жа­ми­на Смед­бер­га та­там неко­то­рых тестов, до­ля Firefox
но, бу­дет вы­гля­
ли­руе­мым пре­вы­шением дли­ны стро­ки, [Benjamin Smedberg], это по­зво­лит улуч­ деть Firefox че­рез на рын­ке сей­час со­став­ля­ет око­ло 30 %)
вто­рая – с пе­ре­полнением бу­фе­ра в функ­ шить ста­биль­ность, безо­пас­ность и про­ год-дру­гой. то­же не сто­ят на месте. Кор­по­ра­ция
ции document.write(). Обе уяз­ви­мо­сти обу­ из­во­ди­тель­ность брау­зе­ра. Соб­ствен­но, Google в бли­жай­шем бу­д у­щем планиру­
слов­ле­ны на­ли­чи­ем серь­ез­ных про­блем здесь все оче­вид­но – Mozilla го­то­вит­ ет вы­пустить Chrome. При­том поль­зо­ва­те­
в реа­ли­за­ции движ­ка JavaScript. Са­мое лям бу­д ут доступ­ны вер­сии не толь­ко для
обид­ное то, что дол­гое вре­мя эти ошиб­ки
оста­ва­лись неис­прав­лен­ны­ми, и раз­ра­бот­
«Непробиваемых Windows, но и для Linux. Кро­ме то­го, ком­
пания планиру­ет до кон­ца го­да вы­пустить
чи­ки Firefox ре­ко­мен­до­ва­ли поль­зо­ва­те­
лям воз­дер­жать­ся от по­се­щения незна­
программ в природе ори­ен­ти­ро­ван­ный на ра­бо­т у с он­лайн-сер­
ви­са­ми ди­ст­ри­бу­тив Linux. Но­вую опе­ра­
ко­мых сай­тов, а так­же восполь­зо­вать­ся не бывает.» ци­он­ную систе­му так и на­зва­ли: ChromeOS
до­полнением NoScript. (LXF121). Оче­вид­но, что ее ин­тер­фейс бу­
Во­об­ще, на уяз­ви­мо­сти в брау­зе­ ся к вы­хо­д у Google Chrome, в ко­то­ром эта дет осно­ван на брау­зе­ре Google и ори­ен­ти­
рах июль был «уро­жай­ным». Кро­ме функ­ция уже реа­ли­зо­ва­на. Кро­ме то­го, ро­ван на ра­бо­т у с web-при­ло­жения­ми.
Firefox, в но­во­стях за­све­ти­лись KHTML сто­ит от­ме­тить бур­ное раз­ви­тие JetPack – Раз­ра­бот­ка про­чих аль­тер­на­тив­ных
и WebKit – ошиб­ки в об­ра­бот­ке циф­ро­вых но­во­го API, уп­ро­щаю­ще­го раз­ра­бот­к у рас­ брау­зе­ров идет не та­ки­ми бы­ст­ры­ми тем­
сим­воль­ных ссылок по­зво­ля­ли вы­пол­ ши­рений для Firefox, а так­же до­полнения па­ми. Тем не менее, я бы не стал сбра­сы­
нить на ата­к уе­мой систе­ме про­из­воль­ный Weave 0.5, ко­то­рое по­зво­ля­ет безо­пас­но вать со сче­тов про­грам­мы, осно­ван­ные
код. Есте­ствен­но, про­бле­ма бы­ла ак­т у­ со­хра­нять поль­зо­ва­тель­ские дан­ные в Се­ на KHTML или WebKit. Но основ­ные тен­
аль­ной для всех брау­зе­ров, осно­ван­ных ти (вклю­чая па­ро­ли, за­к лад­ки и так да­лее). ден­ции раз­ви­тия аль­тер­на­тив­ных брау­зе­
на этих движ­ках (в том чис­ле, для Safari По­ми­мо про­че­го, Weave те­перь мо­жет ис­ ров свя­за­ны не с ними. В ско­ром вре­мени
от Apple). Июль­ская «эпи­де­мия» не за­тро­ поль­зо­вать­ся на мо­биль­ном брау­зе­ре нас ожи­да­ет бит­ва «ти­та­нов» – Mozilla
ну­ла толь­ко Opera. Тем не менее, уяз­ви­мо­ Fennec, ко­то­рый, кста­ти ска­зать, не те­ря­ет и Google. В обе­их ком­паниях это пре­крас­но
сти в Opera об­на­ру­жи­ва­ли ранее. вре­мени и уже сей­час по­ка­зы­ва­ет непло­хие понима­ют и го­то­вят­ся к схват­ке – ак­ти­ви­
По­следние со­бы­тия лишний раз под­ ре­зуль­та­ты в тестах. Еще в Mozilla ре­ши­ли за­ция про­цес­са раз­ра­бот­ки Firefox на­гляд­
твер­ж да­ют ту мысль, что непро­би­вае­ за­менить тра­ди­ци­он­ные вклад­ки на что- но ил­лю­ст­ри­ру­ет этот мо­мент. Ра­зу­ме­ет­ся,
мых брау­зе­ров (да и во­об­ще про­грамм) то бо­лее функ­цио­наль­ное – по это­му по­ про­гно­зы де­лать по­ка ра­но, но мне ка­жет­
в при­ро­де не бы­ва­ет, и для обес­пе­чения во­д у был да­же про­ве­ден кон­к урс. Прав­да, ся, что все кон­чит­ся по­яв­лением еще од­но­
безо­пас­но­сти ком­пь­ю­те­ра со­вер­шен­но до де­ла по­ка не дош­ло, но уже оче­вид­но, го ли­де­ра и уве­ли­чением до­ли аль­тер­на­
недоста­точ­но уста­но­вить в систе­ме «на­ что ин­тер­фейс Firefox в бли­жай­шие го­ды тив­ных брау­зе­ров на рын­ке, что не мо­жет
деж­ное» ПО. Про­бле­му нуж­но ре­шать ком­ силь­но из­менит­ся. не ра­до­вать. Ка­кие диа­грам­мы на­ри­су­ют
плекс­но, тем бо­лее, что в GNU/Linux есть Кон­к у­рен­ты са­мо­го по­пу­ляр­но­ пор­та­лы, занимаю­щие­ся сбо­ром ста­ти­сти­
для это­го все необ­хо­ди­мое – ска­жем, го аль­тер­на­тив­но­го брау­зе­ра (по ре­зуль­ ки – де­ло не столь важ­ное.

Сентябрь 2009 Linux Format      5


Новости

1...5 – на­чи­наю со­би­рать!


К
он­лайн-сер­ви­сам ав­то­ма­ти­зи­ зе Linux: Android и Moblin, и ожи­да­ет­ся вы­
ро­ван­ной сбор­ки при­ло­жений ход еще од­ной – ChromeOS. Все они встраи­ В Санкт-Пе­тер­бур­ге
для различных ди­ст­ри­бу­ти­вов вае­мые: это ско­рее сред­ства раз­ра­бот­чи­ка,
бу­дут раз­ви­вать
мы уже при­вык­ли. При­ме­р – openSUSE чем го­то­вый ди­ст­ри­бу­тив с ин­стал­ля­то­
сво­бод­ное ПО
Build Service, способный го­то­вить па­ке­ ром. При наличии пре­д уста­нов­лен­ной сис- Ком­па­ния «ГНУ/Ли­нукс­центр» и Пра­ви­тель­
ты для openSUSE, SUSE Linux Enterprise, темы все хорошо; а ес­ли вы хо­ти­те по­ста­ ст­во Санкт-Пе­тер­бур­га под­пи­са­ли со­гла­ше­
ние о взаи­мо­по­ни­ма­нии и со­труд­ни­че­ст­ве
Debian/Ubuntu, Red Hat/Fedora и Mandriva вить Android или Moblin на свой нет­бук
в об­лас­ти раз­ви­тия, ис­поль­зо­ва­ния и раз­
Linux с ав­то­ма­ти­че­ским раз­ре­шением за­ са­мо­стоя­тель­но, но спе­ци­а ль­ный ди­ст­ри­ ра­бот­ки сво­бод­но­го про­грамм­но­го обес­
ви­си­мо­стей. бу­ти­в для него не создан? Вряд ли мно­гие пе­че­ния в Санкт-Пе­тер­бур­ге. Со­гла­ше­ние,
Еще од­ин по­доб­ный про­ек­т, Launchpad пустят­ся изучать SDK только­ ради про­ под­пи­сан­ное сро­ком на пять лет, пре­д у­
PPA, несколь­ко скромнее – он под­дер­ бы систе­мы. Будь у Google или Intel web- смат­ри­ва­ет ша­ги, на­прав­лен­ные на по­пу­ля­
ри­за­цию сво­бод­но­го ПО и ор­га­ни­за­цию об­
жи­ва­ет сбор­к у па­ке­тов толь­ко для ак­т у­ ин­тер­фей­с для соз­дания ди­ст­ри­бу­тива ме­на опы­том, под­го­тов­к у го­су­дар­ст­вен­ных
аль­ных вер­сий Ubuntu. Кста­ти, ком­пания встраи­вае­мой систе­мы к данной ма­ши­не, слу­жа­щих, пре­по­да­ва­те­лей го­су­д ар­ст­вен­
Canonical недав­но опуб­ли­ко­ва­ла ис­ход­ про­бле­м бы не было. Соф­т­вер­ные ги­ган­ты ных уч­ре­ж ­де­ний сред­не­го про­фес­сио­наль­
ный код всех ком­понен­тов плат­фор­ пока не спешат с анон­сом по­доб­ных про­ но­го и выс­ше­го об­ра­зо­ва­ния, а так­же по­
этап­ное вне­дре­ние GNU/Linux и сво­бод­но­го
мы Launchpad под ли­цен­зи­ей GNU Affero ек­тов, но, ду­маю, это во­прос ближайшего
ПО в об­ра­зо­ва­тель­ных уч­ре­ж ­де­ни­ях.
General Public License вер­сии 3. вре­мени. Да и сер­ви­сы по из­го­тов­лению В на­стоя­щее вре­мя Санкт-Пе­тер­бург
Но сей­час появился сер­ви­с сборки ди­ст­ри­бу­ти­вов для кон­крет­ных за­да­ч най­ уже об­ла­да­ет срав­ни­тель­но раз­ви­той эко­
на за­каз не дво­ич­ных па­ке­тов, а це­ дут себе спро­с, а зна­чит, ждите анон­сов си­сте­мой сво­бод­но­го ПО. Даль­ней­шее рас­
лых ди­ст­ри­бу­ти­вов: это про­шед­ший ста­ и от ве­д у­щих «дистро­строи­те­лей». ши­ре­ние его ис­поль­зо­ва­ния бу­дет спо­
соб­ст­во­вать раз­ви­тию эко­но­ми­ки го­ро­д а
дию тести­ро­вания про­ект SUSE Studio 1.0 и сни­же­нию за­трат го­су­дар­ст­вен­ных, об­
(www.susestudio.com). Через удоб­ный web- ра­зо­ва­тель­ных и ком­мер­че­ских ор­га­ни­за­
ин­тер­­фей­с поль­зо­ва­тель мо­жет соз­дать ций на за­к уп­к у про­грамм­но­го обес­пе­че­ния
на ба­зе SUSE Linux систе­му с лю­бым на­бо­ ино­стран­ных про­из­во­ди­те­лей, что осо­бен­
но важ­но в пе­ри­од ми­ро­во­го эко­но­ми­че­
ром ПО, по­лу­чив Live CD/DVD, об­раз диска
ско­го кри­зи­са. В свою оче­редь, под­к лю­че­
или USB-на­ко­пи­те­ля, а так­же об­ра­зы вир­ ние ака­де­ми­че­ской сре­ды и про­грам­ми­стов
ту­а ль­ных ма­шин VMWare и Xen. SUSE Studio
к раз­ра­бот­ке сво­бод­но­го ПО бу­дет спо­соб­
от Novell — поч­ти ст­во­вать раз­ви­тию от­рас­ли ин­фор­ма­ци­он­
Ин­те­рес­ный под­хо­д; при­том на фо-
то же са­мое, что ных тех­но­ло­гий РФ.
не про­ек­тов по сбор­ке па­ке­тов у ­не­го есть Revisor от Red Hat, По ма­те­риа­лам http://www.linuxcenter.
за­нят­ные пер­спек­ти­вы. Недав­но на рын­ке толь­ко в Ин­тер­не­те ru/lib/press/St-Peterburg_Linuxcenter.phtml
поя­ви­лись две лю­бо­пыт­ные систе­мы на ба­ и с ро­бо­та­ми.

Google Wave: иг­руш­ка


или кор­по­ра­тив­ный сер­вис?
11
ав­г у­ста мне уда­лось по­бы­ на­зы­ва­ет­ся «Wave» (Вол­на). Что же она со­ ме­ре ор­ганиза­ции «вы­ез­да на шаш­лы­ки».
вать на за­кры­той ин­тернет- бой пред­став­ля­ет? Все сра­зу: внут­ри Вол­ А са­мое глав­ное – кор­по­ра­ция обе­ща­ет дать
сес­сии Google, по­свя­щен­ной В от­ли­чие ны мо­жет быть обыч­ный текст, со­об­щения web-раз­ра­бот­чи­кам от­кры­тый API для ин­те­
Wave. Сра­зу раз­оча­рую чи­та­те­лей, жду­ от Microsoft, Google ча­та, объ­ек­ты сер­ви­сов Google (на­при­мер, гра­ции Wave в их соб­ствен­ные про­ек­ты.
щих сен­са­ци­он­ных под­роб­но­стей: к уже не вынуждает кар­ты), фо­то­гра­фии, го­ло­со­вания и мно­гое В об­щем, Wave – имен­но то, что нуж­
имею­щей­ся в Се­ти ин­фор­ма­ции мне до­ба­ обозревателей дру­гое. Кста­ти, воз­мож­но­стей для кол­лек­ но со­вре­мен­ным оби­та­те­лям Се­ти, и, по­
вить по­ка нече­го. За­то уда­лось по­лу­чить ри­со­вать эк­ран­ные тив­ной ра­бо­ты Wave пре­достав­ля­ет мно­же­ ла­гаю, сер­вис завоюет ог­ром­ную по­пу­
сним­ки но­вей­ших
от Google тесто­вый доступ к ре­сур­су Wave ство – нам их про­де­мон­ст­ри­ро­ва­ли на при­ ляр­но­сть. При­том не толь­ко у фи­зи­че­ских
про­дук­тов от ру­ки.
Sandbox (http://wavesandbox.com), и в од­ лиц. При до­бав­лении необ­хо­ди­мо­го функ­
ном из сле­дую­щих вы­пусков мы опуб­ли­к у­ цио­на­ла он мо­жет быть ис­поль­зо­ван как
ем бо­лее под­роб­ный об­зор но­во­го сер­ви­са. аль­тер­на­ти­ва до­ро­го­стоя­щим сред­ствам
В основ­ном нам по­ка­зы­ва­ли web-ин­ кол­лек­тив­ной ра­бо­ты вро­де Microsoft
тер­фейс Wave. По­сле за­груз­ки web-при­ Exchange. Ду­маю, ход раз­ви­тия Wave бу­
ло­жения поль­зо­ва­тель ви­дит стан­дарт­ный дет на­по­ми­нать эво­лю­цию Gmail: вна­ча­ле
на­бор объ­ек­тов: ок­но на­ви­га­ции, кон­так­ «об­кат­ка» сер­ви­са на фи­зи­че­ских ли­цах,
тов, за­го­лов­ков, а так­же ок­но про­смот­ за­тем – до­ра­бот­ка функ­цио­на­ла и вклю­
ра и ре­дак­ти­ро­вания со­об­щений. По­ка чение Wave в кор­по­ра­тив­ные про­дук­ты
все, как обыч­но. От­ли­чия на­чи­на­ют­ся, ес­ ком­пании. Дру­гих ва­ри­ан­тов я не ви­ж у, хо­
ли при­смот­реть­ся к «со­об­щению» внима­ тя офи­ци­а ль­ных ком­мен­та­ри­ев по это­му
тельнее. Соб­ствен­но, это да­же нель­зя счи­ по­во­ду по­ка не бы­ло. По­ка же нам оста­ет­ся
тать со­об­щением – в тер­ми­нах Google оно толь­ко ждать и сле­дить за но­во­стя­ми.

6      Linux Format Сентябрь 2009


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

Алексей Федорчук
Его слабости — mass
storage, разметка
диска и файловые
системы.

Ку­да раз­ви­вать­ся
сво­бод­но­му ПО? Сегодня мы рассматриваем:
Е
сть та­кая по­ро­да лошадей – Fedora 11 ������������������������������������������������������� 8 Runtu Office ���������������������������������������������� 11
ахал­­те­кин­цы: это оп­ти­маль­ные Сде­лав но­вую фай­ло­вую систе­му ext4 вы­бо­ром по умол­ Ди­ст­ри­бу­ти­вов для офис­ных ма­шин су­ще­ству­ет нема­
бое­­вые кони, их экстерь­ер сло­ чанию, Fedora под­твер­ди­ла свой ста­т ус пе­ре­до­вой и все- ло; да­вай­те попы­та­етм­ся по­нять, чем этот от­ли­ча­ет­ся
таки ста­биль­ной систе­мы. А вот что у нас с удоб­ством ис­ от осталь­ных.
жил­ся минимум две с по­ло­ви­ной ты­
поль­зо­вания?
ся­чи лет на­зад. Ни уба­вить, ни при­ба­
вить нечего. Прав­да, на­ши доб­ле­ст­ные KBasic 1.89f ������������������������������������������������ 10 AVG 8.5 ��������������������������������������������������������� 12
ми­чу­рин­цы, при­вык­шие око­ла­чи­вать Сто­ит ли про­грам­ми­ро­вать на Basic в 2009 го­д у? Чис­ло ком­мер­че­ских ан­ти­ви­ру­сов для Linux вот-вот пре­
гру­ши... сами знае­те, чем... пы­та­лись В Microsoft по­ла­га­ют, что да, а зна­чит, мир сво­бод­но­го ПО вы­сит чис­ло из­вест­ных для него ви­ру­сов. AVG – оче­ред­
опять дол­жен «дог­нать и пе­ре­гнать». Вот толь­ко сто­ит ли ной иг­рок, вы­пустив­ший бес­плат­ную вер­сию для до­
их улуч­шать. Выходи­ло «как все­гда».
пе­ре­го­нять? машнего поль­зо­вания.
Мысль об ахал­те­кин­цах по­сещает
меня всякий раз, когда я смот­рю KBasic 1.89f c. 10 Runtu Office c. 11
на кар­ди­наль­ные улуч­шения сво­бод­
но­го ПО. По­следний свер­шив­ший­ся
факт в этой об­ласти – KDE 4. Пер­вый
из ожи­дае­мых – GNOME 3.
Я понимаю: раз­ви­тие и KDE 3,
и GNOME 2 дош­ло до той чер­ты, ког-
да оста­ет­ся толь­ко вы­иски­вать ошиб­
ки, по­ли­ро­вать ме­ло­чи... и про­чая
косме­ти­ка. Да, это по­лез­но для поль­
зо­ва­те­ля, но смер­тель­но скуч­но для
раз­ра­бот­чи­ка. Осо­бен­но тако­го, ко­
му раз­ра­бот­ка – спо­соб са­мо­реа­ли­
Про­грам­ми­ро­вать на Basic с KBasic для Linux Runtu Office Pro пытается вдохнуть новую жизнь
за­ции, а не ба­наль­ное зашибание
мож­но бес­плат­но и с ком­фор­том. в повидавшие виды конторские «пишущие машинки».
денег на росте поль­зо­ва­тель­ской ба­
зы. Вспомним, ин­тен­сив­но ли раз­ви­
ва­лись по­следние пол­то­ра де­сят­ка лет
find или grep? Не боль­ше, чем ахал­- Наш вердикт: Пояснение
те­кин­цы за ты­ся­че­ле­тия су­ще­ство­ва­
ния сво­ей по­ро­ды. А при­чина та же. Все попавшие Выдающиеся
Это у ком­мер­че­ско­го ПО все­гда в обзор продукты
оцениваются
решения могут
получить престиж-
Вердикт
есть пер­спек­ти­вы роста: вот при­ по одиннадцати- ную награду «Top
крутим к скром­ной ути­лит­ке по­иска балльной шкале Stuff». Номинан-
Google Earth
Разработчики: Google
фай­лов функ­ции ме­ди­а­-п­лей­е­ра и ко­ (0 – низшая оцен- тами становятся
Сайт: http://earth.google.com
фе-в-по­стель-по­да­вал­ки, а затем убе­ ка, 10 – высшая). лучшие из луч-
Цена: Бесплатно по закрытой лицензии
Как правило, ших – просто высо-
дим поль­зо­ва­те­ля, что без этой са­мой Функциональность 10/10
учитываются кой оценки здесь
по­да­вал­ки ему ну никак «ни в жисть». функциональ- недостаточно. Производительность 9/10
А что де­лать соф­т у сво­бод­но­му, ность, производительность, Рассматривая свободное Простота использования 9/10
простота использования и цена, ПО, мы обычно указываем Оправданность цены 9/10
по оп­ре­де­лению ори­ен­ти­ро­ванному
а для бесплатных программ – предпочтительный дистрибу- Если весь мир – сцена, то Google
на опти­маль­ное ре­шение за­да­чи, Earth – театр. Простая в использова­
еще и документация. Кроме тив. Иногда это означает ком-
а не на фигур­ный под­стриг ка­пусты? того, мы всегда выставляем пиляцию из исходных текстов, нии, захватывающая и ободряюще
Не это ли – глав­ный внут­ренний общую оценку, демонстри- но если разработчики рекомен- практичная программа.

тор­моз для раз­ви­тия FOSS?


alv@posix.ru
рующую на­ше отношение
к продукту.
дуют Autopackage, мы следуем
этому совету. Рейтинг 9/10

Сентябрь 2009 Linux Format      7


Обзоры Ди­ст­ри­бу­тив Linux

Fedora 11
Спар­танец Leonidas на сей раз по­бе­дит? Ник Вейч вре­за­ет­ся в фа­лан­ги функ­ций,
про­ве­ряя бое­спо­соб­ность но­вой вер­сии Fedora.

L
eonidas – один­на­дца­тая по сче­
Вкратце ту вер­сия ОС Fedora (не исклю­чаю,
что это имя да­но в честь ца­ря Спар­
На­столь­ный ты, ко­то­рый со свои­ми вои­на­ми по­гиб,
ди­ст­ри­бу­тив но не сдал­ся при Фер­мо­пи­лах; а мо­жет
для мас­со­во­го
быть, имел­ся в ви­ду дорогой Леонид Иль-
ис­поль­зо­ва­ния.
По час­ти сер­ ич). Ди­ст­ри­бу­тив, по хо­ду, до­пускал и про­
ве­ров, об­ра­ти­ сче­ты, но те­перь его сме­ло мож­но на­звать
тесь к Red Hat одним из луч­ших во­пло­щений идеи сво­
и CentOS. Дру­гие бод­но­го ПО. Fedora 10 был за­ме­ча­тель­но
на­столь­ные
ди­ст­ри­бу­ти­вы:
ста­биль­ным ре­ли­зом с ог­ром­ным ко­ли­че­
OpenSUSE������
, Man-
���� ством об­нов­лений; Leonidas обе­ща­ет стать
driva и Ubuntu. как минимум не ху­же.
Уста­нов­ка систе­мы ожи­дае­мо про­
ста. Ин­стал­ля­то­ры обыч­но ба­лан­си­ру­
ют ме­ж ­ду об­лег­чением про­цес­са и бо­гат­
ством вы­бо­ра для опыт­ных поль­зо­ва­те­лей,
Ключевое ПО На­сла­ж­дай­тесь ра­бо­той в KDE 4.2; прав­да, без под­гон­ки все же не обой­дет­ся.
а в Fedora 11 един­ствен­ное на­ре­кание по
Яд­ро 2.6.29.4 это­му эта­пу ка­са­ет­ся управ­ления раз­де­ла­ Аль­тер­на­ти­ва ин­стал­ля­ци­он­но­му CD – про­хо­дит столь глад­ко, что его не стыд­
Gnome 2.26 ми: по умол­чанию ди­ст­ри­бу­тив но­ро­вит от­ за­пуск Live CD и уста­нов­ка пря­мо с него. Для но по­ка­зать и друзь­ям-«яб­лочникам».
KDE 4.2.2 тя­пать се­бе глав­ный за­гру­зоч­ный диск или но­у т­бу­ков имен­но та­кой путь и ре­ко­мен­ Плав­ный пе­ре­ход от эк­ра­на PC POST
Firefox 3.5 beta 4 за­местить имею­щ ую­ся Linux-систе­му. Вы­ ду­ет­ся: пре­ж ­де чем за­ти­рать вин­че­стер, к ок­ну вхо­да в систе­му занима­ет не бо­лее
Thunderbird 3.0 бор руч­ной на­строй­ки вы­во­дит на гра­фи­ непло­хо бы про­ве­рить но­вин­к у на на­ли­чие 25 се­к унд – это на на­шей тесто­вой ма­шине
beta 2 че­скую про­грам­му раз­бив­ки диска, поль­ уз­ких мест. Как и пре­ж ­де, доступ­ны Live (а вот у Ubuntu он длит­ся 31 се­к ун­д у). Ве­
OOo 3.1 зо­вать­ся ко­то­рой не все­гда так про­сто, как CD со стан­дарт­ным Gnome и аль­тер­на­тив­ ро­ят­но, вас оза­да­чит по­яв­ление но­во­
X.Org 1.6.1.901 хо­те­лось бы. За­то под­дер­жи­ва­ют­ся лю­бые ным (весь­ма пи­кант­ным) KDE; несо­мнен­ го ор­га­на управ­ления над спи­ском имен
на­ко­пи­те­ли, вклю­чая iSCSI. но, вско­ре поя­вят­ся ва­ри­ан­ты и для са­мых поль­зо­ва­те­лей. Он зна­ме­ну­ет вклю­чение
зкзо­ти­че­ских нужд. в Fedora 11 под­держ­ки вхо­да по от­пе­чат­

«PackageKit плот­но Гру­зим­ся бы­ст­рее


ку паль­ца (при на­ли­чии со­от­вет­ствую­ще­
го обо­ру­до­вания) – см. www.reactivated.
ин­тег­ри­ро­ван в сре­ду По­сле уста­нов­ки ста­но­вит­ся еще ин­
те­реснее: нов­ше­ства про­яв­ля­ют­ся еще
net/fprint/wiki/Supported_devices.
Уве­ли­чение ско­ро­сти частич­но обу­
ра­бо­че­го сто­ла.» до вхо­да в систе­му. Про­цесс за­груз­ки слов­ле­но вы­бо­ром по умол­чанию фай­ло­

Шаг за шагом: Вир­ту­аль­ные ма­ши­ны – это про­сто

От­крыть Virt-Manager За­дать на­строй­ки Ус­та­но­вить


Virtual Machine Manager (он же Virt-Manager) об­лег­ Не­об­хо­ди­мо вы­де­лить па­мять, на­стро­ить на­ко­пи­ За­гру­зи­те ISO-об­раз, ин­стал­ли­руй­те ОС по се­ти или
ча­ет на­строй­к у и управ­ле­ние вир­т у­а ль­ны­ми ма­ши­ тель и ус­та­но­вить па­ра­мет­ры се­ти для гос­те­вой ОС. с ре­а ль­но­го уст­рой­ст­ва; ре­зуль­тат по­лу­чи­те че­рез
на­ми на ба­зе Qemu, Xen или KVM. счи­тан­ные ми­ну­ты.

8      Linux Format Сентябрь 2009


 Ди­ст­ри­бу­тив Linux Обзоры

Об­нов­ле­ние с Fedora 10
Ко­гда-то при об­нов­ле­нии сис­те­ су­пер­поль­зо­ва­те­ля yum update,
мы нуж­ны бы­ли сталь­ные нер­вы за­тем yum clean all. Затем устано-
и трой­ной уро­вень ре­зерв­но­го ко­ вите пакет preupgrade и выполните
пи­ро­ва­ния. Ну, ко­пи­ро­ва­ние ни­к то одноименную команду, что­бы за­
не от­ме­нял, а вот об­но­вить сис­те­му вер­шить про­цесс. На чис­той сис­
в на­ши дни ста­ло го­раз­до про­ще: те­ме про­блем быть не долж­но. За­
по­мо­г ут ус­та­но­воч­ные но­си­те­ли труд­не­ния воз­мож­ны, толь­ко ес­ли
или ме­нед­жер па­ке­тов. В по­след­ вы ус­та­нав­ли­ва­ли мно­го ПО не че-
нем слу­чае за­пус­ти­те от име­ни рез ме­нед­же­р па­ке­тов.

вой систе­мы ext4. Цир­к у­ли­ру­ют све­дения


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

Хо­чу MP3!
Бы­ва­ет, но­вич­ки пу­га­ют­ся, об­на­ру­жив, что
Fedora на­ко­нец по­лу­чил сред­ст­во управ­ле­ния дис­ка­ми: это Palimpsest.
в Linux нет «обыч­ных» для ста­рой систе­
мы ве­щей (на­при­мер, про­смот­ра DVD-
филь­мов или воспро­из­ве­дения MP3). ру­жить, что дель­та-об­нов­ления недоступ­ креп­ко дру­жит с Gnome, а мно­го лет на­зад
Fedora лег­ко ис­пра­вит этот недоста­ток, ны. Ссыл­ка на то, что по­вы­шение на­груз­ да­же от­ка­зы­ва­лась вклю­чать KDE в офи­
ес­ли под­к лю­чить внешнее хранили­ще (ти­ ки на про­цес­сор и систе­му вво­да-вы­во­да ци­а ль­ные ре­ли­зы из-за опо­ры на несво­
па RPM Fusion). PackageKit в но­вой вер­сии на сто­роне сер­ве­ра об­хо­дит­ся «до­ро­же» бод­ную (тогда) биб­лио­те­к у Qt. Хо­тя KDE
ди­ст­ри­бу­ти­ва плот­но ин­тег­ри­ро­ван в сре­ тра­фи­ка, го­дит­ся толь­ко как вре­мен­ная был офи­ци­а ль­но при­знан еще до за­пуска
ду ра­бо­че­го сто­ла – на­при­мер, по­про­буй­ Грэм от­го­вор­ка. Не за го­ра­ми вы­ход OpenOffice. про­ек­та Fedora, он все еще вы­гля­дит как
те воспро­из­ве­сти WMV-файл на ба­зо­вой
сказал... org 3.2… пред­ставь­те се­бе, сколь­ко вре­ сбо­к у при­пе­ка – про­сто не тот уро­вень
систе­ме, и Totem (стан­дарт­ный ви­део­плей­ «И не хо­чет­ мени сбе­ре­жет дель­та-об­нов­ление! за­бо­ты и ин­те­гра­ции. Как ра­бо­чий стол
ер) не уй­дет в от­каз, а вы­зо­вет­ся найти ся, а при­дет­ся Linux, KDE ра­бо­та­ет непло­хо, но его связь
необ­хо­ди­мый ко­дек. PackageKit об­ра­тит­ся со­гла­сить­ся
с Ни­ком. Вре­мя
Мой ком­пь­ю­тер с систем­ны­ми ин­ст­ру­мен­та­ми неор­ганич­
к менед­же­ру па­ке­тов, и тот доста­вит необ­ Еще один слу­чай хо­ро­шо за­бы­то­го ста­ро­ на. На­при­мер, по­про­буй­те пе­ре­к лю­чить­
за­груз­ки, ста­
хо­ди­мые ком­понен­ты. В на­стоя­щее вре­мя биль­ность и мо­ го: об­нов­лен слой ап­па­рат­ных аб­ст­рак­ций ся в KDE на но­вый се­анс и по­смот­ри­те, что
та­кой ме­ханизм дей­ству­ет в от­но­шении ау­ ре па­ке­тов – все (Hardware Abstraction Level, HAL), что за­ по­лу­чит­ся. Ес­ли вы хо­ти­те сде­лать KDE
дио- и ви­део­фор­ма­тов, а так­же шриф­тов. это впе­чат­ля­ет. метнее все­го по DeviceKit, ва­ри­ан­т у су­пер- основ­ным ра­бо­чим сто­лом, непло­хо бы
Это под­во­дит нас к па­ке­там – един­ Но у ме­ня HAL для блоч­ных уст­ройств, с при­ят­ной сна­ча­ла по­про­бо­вать его на Live CD.
не бы­ло про­блем
ствен­ной об­ласти, в ко­то­рой основ­ные с KDE 4.2.2!»
обо­лоч­кой под на­званием Palimpsest. На­ В осталь­ном же Leonidas – вполне
Linux-ди­ст­ри­бу­ти­вы по­ка­мест раз­ли­ча­ звание про­ис­хо­дит от спо­со­ба по­втор­но­го достой­ный и об­стоя­тель­ный ди­ст­ри­бу­
ют­ся. Поч­тен­ный (хо­тя и не по­чи­тае­мый) ис­поль­зо­вания пер­га­мен­та или воско­вых тив. Ко­му-то не по ду­ше вклю­чение бе­
менед­жер па­ке­тов Yum по­лу­чил под­держ­ таб­ли­чек в древ­но­сти: со­скре­сти ста­рые та-вер­сий (в пер­вую оче­редь Firefox 3.5),
ку в ви­де Presto (не пу­тай­те с од­но­имен­ной надпи­си и пи­сать сно­ва. Palimpsest учи­ты­ но ба­ланс ме­ж ­д у но­ва­тор­ством и ста­биль­
иг­ро­вой биб­лио­те­кой). Этот мо­дуль рас­ши­ ва­ет уст­рой­ства, под­к лю­чен­ные к систе­ но­стью не на­ру­шен. Но­вую вер­сию не на­
рения под­дер­жи­ва­ет дель­та-RPM’ы, уско­ ме, и раз­ре­ша­ет поль­зо­ва­те­лю (на­звав­ше­ зо­вешь про­ры­вом, как бы­ло с Fedora 8 или
ряю­щие систем­ные об­нов­ления: вме­сто му па­роль) фор­ма­ти­ро­вать, мон­ти­ро­вать 10, но иногда мел­кий шаг луч­ше боль­шо­
пол­ной за­груз­ки ПО доста­точ­но ска­чать и раз­мон­ти­ро­вать их. Ка­за­лось бы, ку­ го скач­ка.
и уста­но­вить из­менения. Fedora из­ряд­ да уж без это­го; но про­шлые вер­сии
но от­стал по этой части, к то­му же функ­ Fedora стра­д а­ли от­сут­стви­ем дан­но­го
ция не ак­ти­ви­ру­ет­ся по умол­чанию – па­кет ин­ст­ру­мен­та. Вердикт
yum-presto при­дет­ся уста­но­вить са­мо­стоя­ Кро­ме то­го, DeviceKit сле­дит
тель­но. Офи­ци­а ль­ные зерка­ла под­дер­жи­ за со­стоянием при­во­дов и RAID-мас­ Fedora 11
ва­ют дан­ный ре­жим, но при ис­поль­зо­вании си­вов и вы­во­дит по­лез­ные пре­д у­пре­ Раз­ра­бот­чик: Red Hat
локаль­но­го ре­по­зи­то­рия вы мо­же­те об­на­ ж­дения о пе­ре­рас­пре­де­лении ис­пор­ Сайт: www.fedoraproject.org
чен­ных сек­то­ров. А мож­но вы­полнить Це­на: бес­плат­но на ус­ло­ви­ях
не­сколь­ких сво­бод­ных ли­цен­зий
с его по­мо­щью ин­тел­лек­т у­а ль­ную про­
Мень­ше – луч­ше вер­к у на­ко­пи­те­ля вруч­ную, или про­сто Функ­цио­наль­ность
Про­из­во­ди­тель­ность
8/10
10/10
по­слу­шать «пес­ню» мно­го­диско­во­го вин­
Про­сто­та ис­поль­зо­ва­ния 8/10
Од­ной из ос­нов­ных за­д ач Fedo-����� спе­циа­ли­за­ции, не нуж­но гру­ че­сте­ра на 10 000 об/мин при ак­тив­ной До­ку­мен­та­ция 9/10
ra счи­т а­ет­ся соз­д а­ние уни­вер­ зить весь ре­по­зи­то­рий. ра­бо­те го­ло­вок. Дру­гие ди­ст­ри­бу­ти­вы яв­но под
саль­но­го ди­с т­ри­бу­т и­ва, при­спо­ Ми­ни­маль­ный объ­ем дис­ко­вой Одним из глав­ных дости­жений Leonidas уг­ро­зой: сво­бо­до­лю­би­вый при­вер­
соб­ляе­мо­го к лю­бой мыс­ли­мой па­мя­ти для ус­та­нов­ки Fedora 11
объ­яв­ле­но вклю­чение KDE 4.2: он и прав­ же­нец Gnome этак до­убун­ту­ет­ся
ра­бо­те. Это од­на из при­чин раз­ уре­зан до 500 МБ – за­про­сто уме­ до вер­ши­ны хит-па­ра­да.
бив­к и па­ке­тов на те­ма­т и­че­ские стит­ся на не­боль­шом уст­рой­ст­ве да здесь, и ра­бо­та­ет достой­но. Соз­да­ет­
груп­пы: что­бы до­бить­ся нуж­ной с флэш-на­ко­пи­те­лем или нет­бу­ке. ся, од­на­ко, впе­чат­ление, что поль­зо­вать­
ся им никто осо­бо не со­би­ра­ет­ся. Red Hat
Рейтинг 9/10
Сентябрь 2009 Linux Format      9
Обзоры Сре­да про­грам­ми­ро­ва­ния

KBasic 1.89f
Алек­сандр Бик­ме­ев скло­ня­ет­ся к мнению, что у Gambas по­ка что нет серь­ез­ных
по­во­дов для бес­по­кой­ства.

Я
зык про­грам­ми­ро­вания Basic ход­ные тек­сты чуть бо­
Вкратце был соз­дан спе­ци­а ль­но для лее ста­рой вер­сии. Так­же
це­лей обу­чения про­грам­ми­ на сай­те со­дер­жит­ся
Кросс-плат­ ро­ванию. В на­стоя­щее вре­мя его по­ пусть не все­объ­ем­лю­-
фор­мен­ная сре­да
зи­­циониру­ют как иде­а ль­ное сред­ство бы­ щая, но все-та­ки доста­
раз­ра­ботки,
на­пи­сан­ная ст­рой раз­ра­бот­ки. Нель­зя ска­зать, что это точ­ная для освоения
на Qt и со­вмес­ ложь – важ­но лишь оп­ре­де­лить­ся с мас­ сис­те­мы до­к у­мен­та­ция.
ти­мая с Visual шта­ба­ми и на­зна­чением при­ло­жения. Кро­ме то­го, в са­мой
Basic 6.0/.NET По­сколь­к у мно­гие поль­зо­ва­те­ли IDE име­ет­ся мно­же­ство
на уров­не син­так­
си­са. См. так­же:
Windows по все­му ми­ру пи­шут неболь­ го­то­вых при­ме­ров, ко­-
Gambas. шие про­грам­мки для сво­их нужд на Visual то­рые мож­но от­крыть
Basic, то пе­ре­ход на дру­г ую систе­му ка­ и за­пустить на вы­-
жет­ся им неце­ле­со­об­раз­ным. Те­перь мож­ полнение (см. ме­ню
но ска­зать, что и этот барь­ер сло­ман! Examples).
Зна­комь­тесь: KBasic – кросс-плат­фор­ Внеш­не ин­тег­ри­ро­ван­ная сре­да раз­ра­бот­ки на­по­ми­на­ет
мен­ная ин­тег­ри­ро­ван­ная сре­да раз­ра­бот­ Глад­ко бы­ло Microsoft Visual Studio — или Qt Designer.
ки (IDE) для Linux/Windows/Mac OS X, соз­ на бу­ма­ге
дан­ная на ба­зе Qt4 и ис­поль­зую­щая свой Ес­ли внима­тель­но при­смот­реть­ся к при­ве­ то­до­полнения ко­да сра­ба­ты­ва­ет ред­ко
диа­лект язы­ка Basic. Од­на­ко ком­пи­ля­ ден­но­му эк­ран­но­му сним­к у, то ста­но­вит­ся и не име­ет го­ря­чей кла­ви­ши.
тор/ин­тер­пре­та­тор язы­ка име­ет три ре­жи­ яс­но, что KBasic име­ет сред­ства для ра­бо­ В-треть­их, бы­ст­ро­дей­ствие... оно за­
ма ра­бо­ты: KBasic (свой соб­ствен­ный диа­ ты с ба­за­ми дан­ных – так оно и есть. KBasic став­ля­ет за­д у­мать­ся о це­ле­со­об­раз­но­сти
лект, частич­но со­вмести­мый с VB.NET), Old име­ет пре­крас­ную под­держ­к у встро­ен­ применения дан­ной сре­ды. Вы­полнение
Basic (со­вместим с VB6) и Very Old Basic ной СУБД (SQLite) и MySQL, а так­же масте­ тесто­во­го при­ме­ра (генера­ция двух мат­риц
(со­вместим с QBasic). ра для соз­дания форм и от­че­тов. Про­стую слу­чай­ных чи­сел раз­мер­но­сти 300 × 300
Как вид­но по ил­лю­ст­ра­ции, IDE на­по­ обо­лоч­к у для вво­да дан­ных в таб­ли­ц у с по­сле­д ую­щим их пе­ре­мно­жением) за­
ми­на­ет Microsoft Visual Studio .NET. Име­ MySQL и от­чет мы изготови­ли за несколь­ ня­ло в KBasic око­ло 270 се­к унд, тогда как
ет­ся ок­но со­дер­жи­мо­го про­ек­та [Project ко ми­нут. Вслед­ствие сво­их Qt-корней, его бли­жай­ший Linux-кон­к у­рент, Gambas,
Window], обо­зре­ва­тель кол­лек­ции объ­ек­ KBasic под­дер­жи­ва­ет раз­ра­бот­к у лока­ли­ управ­ля­ет­ся при­мер­но за 25. На­бор вид­
тов [Browser], ок­но свойств, па­лит­ра ком­ зуе­мых при­ло­жений. Име­ют­ся и сред­ства же­тов так­же небо­гат: пре­ж ­де все­го, нет
понен­тов и т. д. В ре­жи­ме ре­дак­ти­ро­вания от­лад­ки. таб­лич­но­го ком­понен­та, что стран­но
ко­да в окне свойств ото­бра­жа­ет­ся пол­ Но ес­ли даже на Солн­це есть пят­на, при на­ли­чии средств для ра­бо­ты с ба­за­
ный спи­сок объ­ек­тов и пе­ре­мен­ных, а в ре­ то и у KBasic их нема­ло. Во-пер­вых, за­ ми дан­ных.
жи­ме ди­зайнера фор­мы – свой­ства вы­де­ яв­лен­ная со­вмести­мость обес­пе­чи­ва­ет­ В це­лом, как сре­да раз­ра­бот­ки для про­
лен­но­го ком­понен­та. Сле­д у­ет от­ме­тить, ся толь­ко на уровне син­так­си­са, да и то стых про­ек­тов или обо­ло­чек баз дан­ных,
что Windows-вер­сия уже ру­си­фи­ци­ро­ва­ с ого­вор­ка­ми. При им­пор­те про­ек­та VB KBasic за­слу­жи­ва­ет внимания. Кро­ме то­
на, а вот в Linux-вер­сию русскую лока­ли­ 6.0, KBasic ав­то­ма­ти­че­ски за­ме­ня­ет на­ го, пе­ре­дел­ка имею­щих­ся обу­чаю­щих ма­
за­цию по­ка что не до­ба­ви­ли. звания со­бы­тий и ти­пов на соб­ствен­ные, те­риа­лов по VB не зай­мет мно­го вре­мени.
С офи­ци­а ль­но­го сай­та мож­но ска­чать но при этом опуска­ет неиз­вест­ные ему А это, со­гла­си­тесь, то­же плю­с.
дво­ич­ные сбор­ки KBasic для трех ука­зан­ кон­ст­рук­ции и аб­со­лют­но не понима­
ных опе­ра­ци­он­ных систем, а так­же ис­ ет ко­ди­ров­ки win-1251. За­пуск по­лу­чен­ Вердикт
но­го про­ек­та при­во­дит к мно­го­чис­лен­
ным ошиб­кам. Ес­ли же пи­сать про­грам­му KBasic 1.89f
Свойства навскидку с ну­ля, то все ра­бо­та­ет.
Раз­ра­бот­чик: Bernd Noetscher’s
Во-вто­рых, об­щение с са­мой IDE KBasic Software
достав­ля­ет нема­ло хло­пот. Ес­ли щелк­нуть Cайт: www.kbasic.com
на икон­ке в па­лит­ре ком­понен­тов, а за­ Це­на: Бес­плат­но по GPLv3 (Linux),
24,95 ев­ро (дру­гие ОС)
тем на фор­ме, то со­от­вет­ствую­щий ком­
понент поя­вит­ся на фор­ме; од­на­ко ес­ли Функ­цио­наль­ность 6/10
Про­из­во­ди­тель­ность 3/10
вы за­хо­ти­те из­менить раз­мер соз­дан­но­го
Про­сто­та ис­поль­зо­ва­ния 7/10
ком­понен­та или пе­ре­местить его, то при­ До­ку­мен­та­ция 8/10
дет­ся вновь пе­рей­ти на па­лит­ру ком­понен­
Со­вмес­ти­мость с VB 6.0 Под­держ­ка SVG тов и на­жи­мать на икон­к у с изо­бра­жением
Ес­ли вы ище­те при­выч­ное
Basic-ок­ру­же­ние для про­стых про­ек­
KBasic по­ни­ма­ет син­так­сис Как и мно­гие со­вре­мен­
про­грамм, на­пи­сан­ных на ные сре­ды раз­ра­бот­ки (но стрел­ки [Select]. В про­тив­ном слу­чае ка­ж- тов, то это ваш ва­ри­ант. Для серь­ез­
ных ра­бот по­ка еще сы­ро­ва­то.
Visual Basic 6.0, но ес­ли вы не ста­рые реа­ли­за­ции Ba­
��� ­дый щел­чок в лю­бом месте фор­мы бу­дет
ис­поль­зуе­те ком­по­нен­ты
ActiveX – из­ви­ни­те.
sic), KBasic мо­жет раз­ме­щать
на фор­ме SVG-гра­фи­ку.
при­во­дить к до­бав­лению но­во­го ви­зу­а ль­
но­го ком­понен­та. Кро­ме то­го, систе­ма ав­
Рейтинг 5/10
10      Linux Format Сентябрь 2009
 Ди­ст­ри­бу­тив Linux Обзоры

Runtu Office
Гри­го­рий Рудниц­кий раз­би­ра­ет­ся: мо­жет ли быть успеш­ной офис­ная систе­ма,
в ко­то­рой нет пась­ян­са?

U
buntu еще нет и пя­ти, а он уже
Вкратце ­за­вел де­сято­к «де­тей» – и «за­кон­
ных» (офи­ци­а ль­но под­держи­вае-
Лег­кая Linux- ­мых Canonical), и «по­боч­ных» (раз­ви­вае­
сис­те­ма для мых эн­т у­зиа­ста­ми и ком­пания­ми по все­му
офис­но­го при­ме­
не­ния. См. так­же: ми­ру). В их числе – Runtu Linux, соз­да­вае­
Xubuntu. мый в России од­но­имен­ной коман­дой.
На са­мом де­ле, Runtu – це­лая линей­
ка ОС. Мно­гие из них еще в ста­дии ак­тив­
ной раз­ра­бот­ки и не до­стигли фи­наль­но­го
ре­ли­за, но неко­то­рые уже мож­но по­про­
бо­вать и оценить. Со вре­менем это се­
мей­ство вклю­чит не толь­ко стан­дарт­ный
ди­ст­ри­бу­тив для на­столь­ных ПК и офис­
ную систе­му, но так­же сбор­ки для сер­ве­
ров и нетбу­ков.

Уме­рен­ность во всем Ра­бо­чий стол Runtu Office на ба­зе LXDE с виду очень по­хо­ж са­ми-знае­те-на-что.
В линей­ке Ubuntu есть ди­ст­ри­бу­тив для
ста­рых ма­шин – Xubuntu с Xfce 4, что впол-
не спра­вед­ли­во. Ведь да­же GNOME «под­­ ны про­прие­тар­ные про­шив­ки. Раз­де­лы от­вет; а для тех, кто бо­лее-менее зна­ком
тор­ма­жи­ва­ет» на ПК с 512 МБ ОЗУ, а уж NTFS то­же рас­по­зна­ют­ся, но для их пра­ с Ubuntu, ника­кой до­к у­мен­та­ции и не нуж­
о KDE 4 нече­го и го­во­рить. За­частую офис­ виль­ного мон­ти­ро­ва­ния и ото­бра­жения но. Од­на­ко раз­ра­бот­чи­ки усердно пишут
ные ком­пь­ю­те­ры не модернизируют го­ ки­рил­ли­цы в на­званиях фай­лов и па­пок ру­ко­во­дство поль­зо­ва­те­ля, оно долж­но
да­ми, да и зачем? На­бор тек­стов, элек­ на­до вы­з­вать ути­ли­т у Disk Manager, ак­ти­ уви­деть свет в ок­тяб­ре. Мож­но при­об­ре­
трон­ная поч­та, web, об­щение по ICQ – вот, ви­ро­вав в ней оп­цию «Вклю­чить под­держ­ сти и услу­ги ком­мер­че­ской под­держ­ки.
по­жа­луй, и все, что нужно стан­дарт­ному ку запи­си».
офис­ному «тру­женику». По­это­му раз­ра­ Ка­кой же офис­ный ком­пь­ю­тер без Ско­ро на ва­ших эк­ра­нах
бот­чи­ки Runtu пред­ла­га­ют сре­ду полег­ под­к лю­чения к до­ме­ну Microsoft Active Пожалуй, эта об­лег­чен­ная ве­рсия Ubuntu
че – LXDE (с аль­тер­на­ти­вой в ви­де се­ан­ Directory? Дан­ная функ­ция реа­ли­зо­ва­ для ма­ло­мощ­ных офис­ных ком­пь­ю­те­ров
са OpenBox). За па­кет­ную осно­ву взят на и в Runtu Office, бла­го­да­ря Likewise имеет непло­хие пер­спек­ти­вы. Поддерж­ка
Ubuntu 8.04.3 LTS, Canonical бу­дет его под­ Open. Соб­ствен­но Windows-при­ло­жения Windows XP ско­ро пре­кра­тится, а но­вая
держивать вплоть до 2011 го­да. Но Runtu за­пускаются через ста­рый до­б­рый Wine, Windows 7, хоть и слывет менее алч­ной
не по­ла­га­ет­ся толь­ко на «ро­ди­тель­ский» так­же пред­ла­гае­мый «из ко­роб­ки». Поль­ до ре­сур­сов, чем Vista, все же «прожор-
ре­по­зи­то­рий и ра­бо­та­ет над соз­данием зо­ва­те­лям, при­вык­шим к штат­но­му Про­ ­ливее» XP. Вы­бор ме­ж ­ду полным об­нов­
соб­ствен­но­го. Еще од­на прият­ная осо­бен­ воднику Windows, на­вер­ня­ка по­нра­вит­ся лением пар­ка ком­пь­ю­те­ров и од­ной безвоз­
ность Runtu Office – на­ли­чие спе­ци­а ль­но­го фай­ло­вый менед­жер PСManFM с похо­жим мездной ОС не столь оче­виден, и Runtu
масте­ра пер­во­го за­пуска, по­зво­ляю­ще­го ин­тер­фейсом. Кро­ме то­го, с его по­мо­щью Office ж­д­ет ин­те­рес­ное бу­ду­щее.
ска­чать и уста­но­вить по­лез­ные, но несво­ мож­но под­к лю­чать­ся к се­те­вым ре­сур­сам.
бод­ные ком­понен­ты (в том чис­ле Adobe Для об­нов­ления па­ке­тов и уста­нов­ки
Flash или Unrar). но­во­го ПО служат при­выч­ны­е сред­ства­ – Вердикт
У Runtu Office есть два ва­ри­ан­та: об­лег­ Synaptic или Apt-get (плюс GDebi для ло-
чен­ный, где в ка­че­стве офис­но­го па­ке­та каль­ных па­ке­тов). Раз уж ди­ст­ри­бу­тив
идет AbiWord со то­ва­ри­щи, и про­фес­сио­ пред­на­зна­чен для офиса, игр в нем нет,
Runtu Office
наль­ный, с OpenOffice.org 3.1 от ком­пании но при же­лании их мож­но до­ба­вить: сек­ Раз­ра­бот­чик: Runtu
«Ин­фра-ре­сурс». Вме­сто Firefox поль­зо­ ре­та­рям и менед­же­рам то­же иногда на­до Сайт: http://www.runtu.org
Це­на: Бес­плат­но
ва­те­ли Runtu Office по­лу­чат Galeon, поч­то­ рас­слаб­ить­ся. А по­смот­реть фильм и по-
вый кли­ент – Sylpheed (мно­гие хва­лят его ­слу­шать му­зы­к у они смо­г ут без лишних Функ­цио­наль­ность 8/10
Про­из­во­ди­тель­ность 10/10
за с­хо­дство с The Bat!), а для об­щения – манипу­ля­ций: MPlayer с пол­ным набором
Простота ис­поль­зо­ва­ния 9/10
стан­дарт­ный Gaim (не Pidgin). ко­де­ков и Audacious стоят по умол­чанию. До­ку­мен­та­ция 7/10
В тести­ро­ван­ной на­ми сбор­ке не бы-
Ори­ги­наль­ные ре­шения ло русскоя­зыч­ной до­к у­мен­та­ции в HTML- Ин­те­рес­ная, хо­тя и не сто­про­цент­
ная за­ме­на тра­ди­ци­он­ным офис­ным
Уста­нов­ка систе­мы про­ис­хо­дит так же, как фор­ма­те: для справ­ки при­хо­ди­лось вызы­ ОС от Microsoft.
и в Ubuntu. Обо­ру­до­вание рас­по­зна­ет­ся вать кон­соль­ную ути­ли­т у man. Впро­чем,
без про­блем, включая и бес­про­вод­ные се­
те­вые адап­те­ры, для ко­то­рых в Linux нуж­
на фо­ру­ме все во­про­сы про ди­ст­ри­бу­ти­в
на­хо­д ят опе­ра­тив­ный и ис­чер­пы­ваю­щий
Рейтинг 8/10
Сентябрь 2009 Linux Format      11
Обзоры Ан­ти­ви­рус

AVG Anti-Virus 8.5


Ма­янк Шар­ма про­тести­ро­вал оче­ред­ной сканер для «ви­ру­сонепроницае­мой»
плат­фор­мы, и был изум­лен уви­ден­ным.

П
о­ка в ге­те­ро­ген­ных се­тях оста­ют­
Вкратце ся NTFS-раз­де­лы, ком­пании-про­
из­во­ди­те­ли ан­ти­ви­русно­го ПО
AVG Free об­ бу­д ут вы­пускать сканеры для Linux. Неуди­
ла­да­ет все­ми ви­тель­но, что фир­ма AVG Technologies, раз­
функ­ция­ми ан­
ти­ви­ру­са про­
ра­бот­чик по­пу­ляр­но­го AVG Anti-Virus, до­ба­
фес­сио­наль­но­го ви­ла в бу­кет вер­сии 8.5 и Linux-ва­ри­ант.
уров­ня, вклю­ AVG Anti-Virus Free Edition 8.5 for
чая «про­зрач­ Linux (да­лее со­кра­тим его до AVG Free) –
ный» и поч­то­
не пер­вый сканер для Linux от этой ком­
вый ска­не­ры.
См. так­же: ClamAV пании. Доступ­ны дво­ич­ные ар­хи­вы для
и BitDefender. 32‑ и 64‑бит­ных ар­хи­тек­т ур, в Linux-
и FreeBSD-ва­ри­ан­тах; сам же сканер на­бит
функ­цио­наль­но­стью по уши. Увы, он со­
вер­шен­но непри­го­ден для ис­поль­зо­вания
«це­ле­вой ау­ди­то­ри­ей».
Со­глас­но ли­цен­зи­он­но­му со­гла­шению
AVG, Linux-сканер пред­на­зна­чен толь­ко
для ча­ст­но­го при­менения в неком­мер­че­
ских це­лях. Ду­шев­но. Но... без гра­фи­че­ Яко­бы «до­маш­ний» ан­ти­ви­рус AVG Free ли­шен гра­фи­че­ско­го ин­тер­фей­са.
ско­го ин­тер­фей­са обыч­ный поль­зо­ва­тель
вряд ли спра­вит­ся с доб­рой дю­жи­ной Хо­ро­шая но­вость: AVG Free на­страи­ ка­ж ­дой про­грам­мы, так что вы по­лу­чи­те
де­мо­нов и ин­ст­ру­мен­тов сканиро­вания. ва­ет­ся все­го одним ин­ст­ру­мен­том. Пло­ по од­но­му про­то­коль­но­му фай­лу на ка­ж­
Чтоб жизнь не ка­за­лась ма­ли­ной, к ска- хая но­вость: ин­ст­ру­мент управ­ления на­ дый де­мон и на ка­ж ­д ую ути­ли­т у AVG.
неру не при­ло­же­но Ру­ко­во­дство поль­зо­ва­ строй­ка­ми не ра­бо­та­ет в ре­жи­ме масте­ра, Про­бле­ма AVG Free – несо­от­вет­ствие
те­ля. Про­грам­ма вы­во­дит лишь крат­кий а лишь принима­ет из­менения, ука­зан­ воз­мож­но­стей ПО спо­соб­но­стям це­ле­вой
текст со спи­ском всех де­мо­нов и пред­-­ ные че­рез клю­чи. А па­ра­мет­ров, ме­ж ­д у ау­ди­то­рии. Ес­ли бы речь шла о про­фес­
ла­га­ет об­ра­щать­ся «за под­роб­ны­ми све­ про­чим, око­ло 300. Есть фильтр поч­то­ сио­наль­ном ис­поль­зо­вании на сер­ве­рах
дения­ми» к их man-страницам. вых со­об­щений для сканиро­вания SMTP- ком­мер­че­ских ор­ганиза­ций, мы бы стер­пе­
Как лю­бое ува­жаю­щее се­бя при­ло­ тра­фи­ка на ви­ру­сы, спам и фи­шинг. Ну, ли и за­цик­лен­ность на команд­ной стро­ке.
жение команд­ной стро­ки, AVG пе­ре­на­сы­ это-то непло­хо: вла­дель­цы соб­ствен­ных Жаль, но тут жи­во вспо­ми­на­ют­ся
щен клю­ча­ми и оп­ция­ми. На­при­мер, ска- SMTP-сер­ве­ров оста­нут­ся до­воль­ны. пер­вые ком­мер­че­ские при­ло­жения для
нер, ра­бо­таю­щий по за­про­су, име­ет око­ло Linux – недо­де­лан­ные и неот­де­лан­ные
20 клю­чей, и нема­ло из них при­дет­ся ис­ Скан по за­про­су вер­сии Windows-ана­ло­гов, вы­ва­лен­ные
поль­зо­вать для про­вер­ки ар­хи­вов и до­к у­ Од­на из глав­ных функ­ций AVG Free – «про­ на поль­зо­ва­те­лей Linux ра­ди де­ше­во­го
мен­тов с мак­ро­са­ми или про­пуска фай­ зрач­ный» сканер, кон­тро­ли­рую­щий от­кры­ пиа­ра. Они не за­жи­лись на све­те. Бо­юсь,
лов с ука­зан­ны­ми рас­ши­рения­ми. А на все тие и ко­пи­ро­вание фай­лов. Един­ствен­ное и этот не за­жи­вет­ся.
про все – толь­ко од­на команд­ная стро­ (но весь­ма важ­ное) за­ме­чание: что­бы за­
ка; гиб­кость кон­тро­ля обо­ра­чи­ва­ет­ся дей­ство­вать эту воз­мож­ность, при­дет­ся
кош­ма­ром. ском­пи­ли­ро­вать мо­д уль яд­ра RedirFS. Вердикт
Встро­ен­ный планиров­щик за­даний по­
ка не спо­со­бен вклю­чать в распи­сание AVG Anti-Virus Free Edition 8.5
Аль­тер­на­ти­вы сканиро­вание систе­мы. И в до­вер­шение for Linux
все­го, про­грам­ма не уме­ет ле­чить, по­ Раз­ра­бот­чик: AVG Technologies
Про­ве­рить сканер на эф­фек­ ко Kaspersky, опе­ре­жая F-Prot, ме­щать в ка­ран­тин и да­же уда­лять за­ра­ Сайт: http://free.avg.com
тив­ность непро­с то, да и безу­ Sophos и Symantec. Це­на: бес­плат­но для ис­поль­зо­ва­ния
жен­ные фай­лы. Об­на­ру­жив уг­ро­зу, она
в не­ком­мер­че­ских це­лях
преч­ных сравнитель­ных тес- Но, на фоне Bit­Defender вы­во­дит пол­ный путь к ин­фи­ци­ро­ван­но­
тов для них не при­д у­ма­но. AVG, и ClamAV, AVG осо­бо не сия­ет Функ­цио­наль­ность 7/10
как и BitDefender, «зна­ет в ли­ да­же функ­цио­наль­но­стью. Од-
му фай­лу – и остав­ля­ет вас на про­из­вол Про­из­во­ди­тель­ность 7/10
цо» зна­чи­тель­но боль­ше ви­ру­ ним из дости­жений AVG счи­ судь­бы. Простота ис­поль­зо­ва­ния 0/10
сов, троя­нов и дру­гой нечисти, та­ет­ся «про­зрач­ный» сканер, Но еще ху­же сканер, ра­бо­таю­щий по До­ку­мен­та­ция 0/10
чем от­кры­тые аль­тер­на­ти­вы (на­ ко­то­ро­го нет в бес­плат­ной вер­ за­про­су: он тиш­ком за­но­сит все све­дения Мощ­ный, бо­га­то ос­на­щен­ный
при­мер, ClamAV). Од­на­ко тесты, сии Bit­Defender – за­то он есть ска­нер. На бе­ду, це­ле­вой ау­ди­то­рии
о за­ра­жен­ных фай­лах в жур­нал. И сно­ва
про­ве­ден­ные Untangle, по­с тав­ в ClamAV. Окон­ча­тель­но гу­бит AVG он «не по зу­бам».
щи­ком се­те­вых шлю­зов, по­ка­ неумение са­мо­стоя­тель­но рас­ осложнения: AVG Free ве­дет от­дель­ные
за­ли, что ClamAV усту­па­ет толь­ прав­лять­ся с ин­фек­ци­ей. жур­на­лы для ка­ж ­до­го поль­зо­ва­те­ля (в об-­
ще­ствен­ном и лич­ном ва­ри­ан­тах) и для
Рейтинг 3/10
12      Linux Format Сентябрь 2009
Сравнение
Каждый месяц мы сравниваем тысячи
программ – а вы можете отдыхать!

Ви­део­плей­е­ры
Воо­ру­жив­шись хру­стя­щим поп­кор­ном, Ма­янк Шар­ма пе­ре­тря­хи­ва­ет
ре­по­зи­то­рии ди­ст­ри­бу­ти­вов в по­ис­ках луч­ше­го ви­део­плей­е­ра для Linux.

Про наш тест…


Тести­ро­вать ви­део­плей­е­ры ве­се­ло!
Про­иг­ры­ва­те­ли для Linux ра­бо­та­ют
с одними и те­ми же ко­де­ка­ми и биб­лио­
те­ка­ми, и воз­мож­но­сти по фор­ма­там
у них схо­жи. По­это­му оцен­ка оп­ре­де­ля­
ет­ся глав­ным об­ра­зом про­из­во­ди­тель­
но­стью. Что­бы оценить пе­ре­па­ды про­из­
во­ди­тель­но­сти, мы бу­дем ис­поль­зо­вать
две ма­ши­ны – де­ше­вый но­у т­бук 1,4‑ГГц
Celeron с 1 ГБ ОЗУ и двухъ­я­дер­ный ком­
пь­ю­тер с 4 ГБ ОЗУ.
По­сколь­к у про­тести­ро­вать все
ко­де­ки и фор­ма­ты вряд ли по­лу­чит­ся,
ог­раничим­ся наи­бо­лее по­пу­ляр­ны­ми,
та­ки­ми как AVI, MPEG, MP4, OGG, MKV,
FLV, WMV и т. д. Ис­поль­зу­ем фай­лы раз­
но­го раз­ме­ра: одни по­лу­че­ны из DVD
вме­сте с суб­тит­ра­ми, дру­гие име­ют
несколь­ко зву­ко­вых до­ро­жек, а тре­
тьи – мно­го­языч­ные суб­тит­ры.
В до­полнение к по­к уп­ным дискам,
мы так­же ис­поль­зу­ем па­ру DVD, запи­
сан­ных с по­мо­щью K3b, с ме­ню, соз­дан­
ны­ми в DVDAuthor.

В
и­део­плейер, по­жа­луй, од­но из су­ поч­ти со все­ми. Кро­ме функ­ции про­иг­ Но раз­ра­бот­чи­ки Linux не лю­бят, когда
Наш ще­ственней­ших при­ло­жений ра­ ры­вания локаль­ных фай­лов, ви­део­плей­ их за­пу­ги­ва­ют: они при­ме­ня­ют биб­лио­те­
выбор бо­че­го сто­ла. Он ну­жен всем, е­ры так­же уме­ют принимать по­то­ко­вое ку libdvdcss – это ре­шение для об­хо­да за­
Helix/Real и ед­ва ли най­дет­ся ди­ст­ри­бу­тив, где ве­щание, а неко­то­рые по­мо­г ут вам ор­ щи­ты на шиф­ро­ван­ных DVD, по­лу­чен­ное
Player с. 18 он не был бы пре­д уста­нов­лен. Вы мо­же­те ганизо­вать его са­мо­му. об­рат­ным ин­жинирин­гом, хо­тя, к со­жа­
MPlayer с. 17
Ogle с. 18
ду­мать, что по­пу­ляр­ность ви­део­плейе­ра Когда-то де­ла об­стоя­ли со­всем по-дру­ лению, неза­кон­ное во мно­гих стра­нах. До­
Totem с 16 пря­мо про­пор­цио­наль­на чис­лу под­дер­жи­ го­му. Воспро­из­ве­дение DVD бы­ло слож­ ба­вим, что раз­лич­ные плейе­ры при­ме­ня­ют
VLC с. 15 вае­мых им фор­ма­тов, но для ме­ди­а­-плей­­- ной за­да­чей, и немно­гие ви­део­плейе­ры об­щие ком­понен­ты. MPlayer, VLC и Xine бе­
Xine с. 16
е­ров под Linux это не так, по­сколь­к у наи­ под Linux де­ла­ли это без оши­бок. Раз-­ рут мно­го ко­де­ков из libvcodec и libvformat,
бо­лее по­пу­ляр­ные из них справ­ля­ют­ся ­ра­бот­ка та­кой про­грам­мы тре­бу­ет гер­к у­ле­ по­ро­ж ­ден­ных FFmpeg, а Totem мож­но на­
сов­ых уси­лий, а раз­лич­ные за­ко­ны не де­ стро­ить на ис­поль­зо­вание Xine для про­иг­

«Ви­део­плейер – одно ла­ют жизнь лег­че. Поч­ти все DVD за­щи­ще­


ны с по­мо­щью Content Scrambling System
ры­вания ме­диа.
Итак, возь­ми­те DVD и за­па­си­тесь
из су­ще­ст­вен­ней­ших (CSS), и Фо­рум DVD ре­ша­ет, мож­но ли ва­
ше­му ме­ди­а-­плейе­ру про­иг­ры­вать за­щи­
поп­кор­ном, а мы вы­ясним, ка­кой плей­
ер яв­ля­ет­ся луч­шим сре­ди имею­щих­ся
при­ло­же­ний.» щен­ные DVD или нет. под Linux.

14    Linux Format Сентябрь 2009


 Ви­део­плейеры Сравнение

VLC Media Player


Ви­део­плей­ер для лю­би­те­лей ин­туи­тив­ных при­ло­жений.

Д
о­воль­но лег­ко счесть VLC ря­до­ VLC 1.0 уже про­
вым плейе­ром, по­сколь­к у он име­ ник в до­ма, хо­тя это
ет при­выч­ный ин­т уи­тив­ный ин­тер­ еще толь­ко ре­лиз-
кан­ди­дат.
фейс. Но под раз­лич­ны­ми ме­ню и кноп­ка­ми
спря­та­на мощ­ная ло­шад­ка, ко­то­рая тру­
дит­ся для про­иг­ры­вания лю­бо­го фай­ла –
доступ­но­го локаль­но, по се­ти или с оп­ти­че­
ско­го но­си­те­ля – со скром­ной про­сто­той.
По­доб­но MPlayer и поч­ти всем при­лич­
ным ви­део­про­иг­ры­ва­те­лям, VLC за­им­ству­ет
ко­де­ки в биб­лио­те­ке libavcodec из FFmpeg,
на­ря­ду с мно­же­ством дру­гих мо­ду­лей,
в том числе Cinepark, libmpeg, MAD и Vorbis.
Вы мо­же­те най­ти VLC в ре­по­зи­то­ри­
ях ва­ше­го ди­ст­ри­бу­ти­ва, хо­тя неко­то­рые
из них не содержат libdvdcss, что пре­пят­
ству­ет воспро­из­ве­дению за­шиф­ро­ван­ных
DVD. VLC распозна­ет раз­лич­ные фор­ма­ты
суб­тит­ров и при­спо­соб­лен для про­иг­ры­ кад­ри­ро­вания и де­ин­тер­лей­син­га. Что­бы VLC – гра­фи­че­ский ин­ст­ру­мент, но он
вания филь­мов со зву­ко­вы­ми до­рож­ка­ми оты­скать эти функ­ции, в деб­ри уг­луб­лять­ся управ­ля­ет­ся и из команд­ной стро­ки. На­при­
на несколь­ких язы­ках. не надо: про­сто раскрой­те основ­ной ин­тер­ мер, пе­ре­ко­ди­руя фай­л с FFmpeg, мож­но на­
Луч­шее в VLC – его ин­т уи­тив­ность фейс поль­зо­­ва­те­ля, и они поя­вят­ся, причем пра­вить вы­ход на VLC, ор­ганизо­вав пред­
в воспро­из­ве­дении по­то­ко­вых ау­дио/ вме­сте со встро­ен­ным эквалайзером. про­смотр в про­цес­се пе­ре­ко­ди­ров­ки.
ви­део. (В про­шлом ты­ся­че­ле­тии для про­ VLC по­став­ля­ет­ся с на­бо­ром ин­тер­фей­
иг­ры­вания по­то­ка вам бы по­тре­бо­вал­ся сов для раз­ных це­лей. Гра­фи­че­ская обо­
до­полнитель­ный сер­вер­ный ком­понент.) лоч­ка по умол­чанию – wxWidgets; кро­ме то­ Вердикт
VLC уме­ет еще со­хра­нять се­те­вые по­то­ го, есть Qt-ин­тер­фейс, плюс па­кет на 19 МБ,
ки и пе­ре­ко­ди­ро­вать их в дру­гой фор­мат, со­дер­жа­щий бо­лее 50 ски­нов, а так­же web- VLC
хо­тя и не до­тя­ги­ва­ет до транско­де­ра об­ще­ ин­тер­фейс, для за­груз­ки плей-листа или
Вер­сия: 0.9.9
го на­зна­чения. про­иг­ры­вания фай­лов по се­ти. VLC мож­но Сайт: www.videolan.org/vlc
По­доб­но MPlayer, VLC спо­со­бен так­же управ­лять жестами мы­ши, привя­за­нными Це­на: Бес­плат­но под GPL
про­иг­ры­вать непол­ные или по­вре­ж ­ден­ к функ­ция­м типа «иг­рать сле­д ую­щий трек/ За­слу­жен­но по­пу­ля­рен, но ино­гда
ные фай­лы, и вдо­ба­вок пред­ла­га­ет ав­то­ про­пустить трек», «иг­рать бы­ст­рее/мед­лен-­ спо­со­бен «по­да­вить­ся» оп­ре­де­лен­
ны­ми ви­део, осо­бен­но на ста­ром
ма­ти­че­ски ис­пра­вить их. Сре­ди про­че­го, нее», «уве­ли­чить/умень­шить гром­ко­сть»
ком­пь­ю­те­ре.
он под­дер­жи­ва­ет мно­же­ство стан­дарт­ных и «пе­рейти по ау­дио­до­рож­кам и суб­тит­
фильт­ров пост-об­ра­бот­ки для ре­г у­ли­ров­
ки кон­тра­ста и яр­ко­сти, пе­ре­во­ра­чи­вания,
рам». Управ­ление эти­ми воз­мож­но­стя­ми
осу­ще­ств­ля­ет­ся че­рез ок­но На­строй­ки.
Рей­тинг 9/10

Шаг за ша­гом: Соз­да­ем по­то­ко­вое ви­део

Вы­бе­ри­те файл для ве­щания Как соз­дать по­ток Вы­бор ин­кап­су­ля­ции


Для соз­дания по­то­ко­во­го ви­део, пе­рей­ди­те в File > Как толь­ко вы вы­бе­ре­те файл, VLC по­про­сит вас На­конец, от вас по­тре­бу­ет­ся ука­зать фор­мат
Wizard [Файл > Мастер] и ука­жи­те Пе­ре­дать в сеть ука­зать один из трех ме­то­дов пе­ре­да­чи по­то­ко­ по­то­ка. Вы­бе­ри­те OGG, ес­ли он досту­пен. Вот
[Stream To Network] в поя­вив­шем­ся диа­ло­го­вом во­го ви­део. Мож­но спо­кой­но вы­брать HTTP, ес­ли и все. Дру­гие мо­г ут под­к лю­чать­ся к ва­ше­му по­то­к у,
окне. За­тем вы­бе­ри­те файл обыч­ным об­ра­зом вы не в кур­се, что оз­на­ча­ют осталь­ные. ука­зав в сво­их плейе­рах http://<ваш-ip-ад­рес>:8080
и от­меть­те суб­тит­ры, ес­ли они есть.

Сентябрь 2009 Linux Format    15


Сравнение Ви­део­плейеры

Xine
Изы­скан­ный кок­тейль GUI и CLI.

X
ine – один из ста­рей­ших ви­део­ помож­ет вы­би­рать фай­лы, доступ­ные ло-
плейеров, доступ­ных под Linux: каль­но или с раз­лич­ных оп­ти­че­ских но­си­
его корни ухо­д ят во вре­ме­на, те­лей, про­иг­ры­вать по­то­ко­вые ви­део и по­
когда воспро­из­ве­дение DVD тре­бо­ва­ло уг­ лу­чать доступ к фай­лам че­рез Samba.
луб­ления в HOWTO. В от­ли­чие от прин­ци­па Xine пол­но­стью управ­ля­ет­ся с кла­виа­
VLC «все-в-од­ном», Xine сле­ду­ет мо­дуль­ ту­ры, но ка­ж ­дая оп­ция доступ­на и из кон­­-
ной фи­ло­со­фии, от­де­ляя основ­ной дви­жок тек­ст­но­го ме­ню по пра­во­му кли­к у; управ­
от функ­цио­наль­ных при­мо­чек, по­став­ляе­ ление воз­мож­но еще и с LIRC-со­вмести­мо­
мых как рас­ши­рения. Дви­жок вы­пол­ня­ет го ин­фра­крас­но­го дистан­ци­он­но­го пуль­
за­да­чи вро­де син­хрониза­ции ау­дио и ви­ та. Xine уме­ет вести пе­ре­да­чу на несколь­ко
део и ди­ри­жи­ру­ет ком­муника­ция­ми ме­ж­ монито­ров че­рез ныне при­знан­ную уста­
ду мо­ду­ля­ми Xine. рев­шей Xinerama.
Вход­ные мо­д у­ли ра­бо­та­ют как про­ Од­но из луч­ших свойств Xine – ав­то­­
клад­ка ме­ж ­д у физическим источником ма­ти­че­ское ис­прав­л­ение непо­ладо­к в син-
Xine ба­зи­ру­ет кон­
ви­део (DVD, VCD и т. п.) и Xine. Де­мик­се­ры ­хрониза­ции по­вре­ж ­ден­ных ви­део­фай­лов,
и де­ко­де­ры оп­ре­де­ля­ют, как об­ра­щ ать­ и он неплохо с этим справ­ля­ет­ся. Пре­д­
фи­гу­ра­ции на опы­
те поль­зо­ва­те­ля,
Вердикт
ся с раз­ны­ми фор­ма­та­ми фай­лов, а за­ у­смот­рен скрипт ди­аг­но­сти­ки, ко­то­рый на­чи­ная от Но­вич­ка
тем пе­ре­д а­ют дан­ные для про­иг­ры­вания при­го­дит­ся при про­бле­мах с воспро­из­ до Вла­сте­ли­на из­ Xine
в Xine. Де­ко­де­ры оп­ти­ми­зи­ро­ва­ны для ве­дением ви­део. Па­ра­мет­ры на­строй­ки вест­ной час­ти Все­ Вер­сия: 1.1.162
лен­ной. Сайт: www.xine-project.org
раз­лич­ных рас­ши­рений CPU. Xine тщательно про­ду­ман­ы. Це­на: Бес­плат­но под GPL
Xine ис­поль­зу­ет биб­лио­те­ки дру­гих Для поль­зо­ва­те­лей, же­лаю­щих
про­ек­тов – liba52, libmpeg2, FFmpeg, libmad,
FaaD2 и Ogle, и по­лу­ча­ет дво­ич­ные ко­де­
«Xine ав­то­ма­ти­че­ски по­лу­чить от­по­ли­ро­ван­ный мощ­ный
GUI, с пол­ным кон­тро­лем од­ним
ки Windows из w32codecs. Кроме гра­фи­ ис­прав­ля­ет не­по­лад­ки щелч­ком кноп­ки.

че­ского ин­тер­фей­са, плейер име­ет мно­


же­ство дру­гих обо­ло­чек. Ин­т уи­тив­ный ­ UI в син­хро­ни­за­ци­и.» Рей­тинг 9/10

Totem
Доста­точ­но функ­цио­на­лен для вклю­чения в ваш ди­ст­ри­бу­тив.

Е
с­ли вы поль­зо­ва­тель од­но­го Totem управ­ля­ет­ся кла­виа­т у­рой, мы­
из основ­ных ди­ст­ри­бу­ти­вов Linux, шью или че­рез LIRC-со­вмести­мый пульт
то шан­сы, что Totem у вас уже есть, ДУ. Прав­да, че­рез ин­тер­фейс доступ­ны
до­воль­но ве­ли­ки. Totem – ви­део­плейер не все функ­ции. На­при­мер, ес­ли Totem
по умол­чанию под Gnome, и вхо­дит поч­ти не под­гру­зил ва­ши суб­тит­ры ав­то­ма­
во все по­пу­ляр­ные ди­ст­ри­бу­ти­вы, вклю­ ти­че­ски, при­дет­ся сде­лать это вруч­ную
чая Ubuntu, Mandriva и Fedora. из команд­ной стро­ки.
Тес­ная ин­те­гра­ция Totem с Gnome Totem ра­бо­та­ет на осно­ве муль­ти­
име­ет неоспо­ри­мые пре­иму­ще­ства. Фай- ме­дий­но­го кар­ка­са GStreamer, ко­то­рый
­ло­вый менед­жер Nautilus ото­бра­зит пре­достав­ля­ет все его ко­де­ки и драй­
кар­тин­ки пред­про­смот­ра ви­део­фай­лов ве­ры. Мо­д уль рас­ши­рения GStreamer
и под­роб­но­сти: ис­поль­зуе­мые ко­де­ки, раз­ FFmpeg так­же вклю­чен в сбор­к у и до­бав­
мер, про­­дол­жи­тель­ность и т. д. Во мно­гие ля­ет ко­де­ки из про­ек­та FFmpeg. Кро­ме то­
При на­ли­чии со­от­
ди­ст­ри­бу­ти­вы так­же вклю­ча­ет­ся мо­дуль го, есть мо­д уль рас­ши­рения Pitfdll, даю­
рас­ши­рения Totem Firefox для про­иг­ры­ щий доступ к дво­ич­ным фай­лам, в том
вет­ст­вую­ще­го мо­
ду­ля рас­ши­ре­ния,
Вердикт
вания ви­део пря­мо в брау­зе­ре. чис­ле Quicktime QTX или Directshow/DMO Totem мо­жет вы­
Луч­шее, что мож­но от­ме­тить в Totem – DLL. Это по­зво­ля­ет про­иг­ры­вать про­прие­ во­дить ан­но­та­ции Totem
то, что его внешне про­стой и стро­гий ди­ тар­ные фор­ма­ты фай­лов, вро­де WMV9 в ду­хе те­ле­стра­ Вер­сия: 2.26.1
зайн вме­стил до­воль­но мно­го функ­ций. и Intel Indeo 5. то­ра по­сред­ст­вом Сайт: www.gnome.org/projects/totem
Gromit. Це­на: Бес­плат­но под GPL
На­при­мер, вы без про­блем пе­ре­да­дите
Вы­да­ет ви­део в раз­лич­ных фор­ма­
ви­део на несколь­ко монито­ров Xinerama,
не поза­бы­в об уст­рой­ствах, под­к лю­чен­ных
«Про­стой и стро­гий тах и мо­жет за­хва­ты­вать ау­дио, но на
дан­ный мо­мент до­воль­но не­ста­би­лен.
че­рез TV-вы­ход. Во вре­мя про­смот­ра мож­ ди­зайн Totem вме­стил
но на­страи­вать яр­кость, кон­траст и на­сы­
щен­ность ви­део. мно­го функ­ций.» Рей­тинг 7/10
16    Linux Format Сентябрь 2009
 Ви­део­плейеры Сравнение

MPlayer
Зай­ца даль­ше не гоним!

В
и­ди­мо, ни од­ной техниче­ской ста­
тьи по муль­ти­ме­диа не напи­сать
без упо­ми­нания все­объ­ем­лю­ще­го
MPlayer, и не без при­чи­ны. Его мощь вы­
хо­дит за рам­ки че­ло­ве­че­ско­го понима-
ния, но мы точ­но зна­ем, что он мо­жет про­
иг­ры­вать поч­ти все фор­ма­ты и на лю­бой
плат­фор­ме.
MPlayer вклю­ча­ет на­бор род­ных ко­де­
ков в libavcodec, при­хва­чен­ных из про­ек­та
FFmpeg, на­ря­ду с на­бо­ром дво­ич­ных ко­де­
ков для про­иг­ры­вания ви­део в про­прие­тар­
ных фор­ма­тах. С этим на­бо­ром, вы мо­же­
те за­пих­нуть в него все ва­ши MPEG, AVI,
ASF, WMV, RM, QT, MP4, OGG, MKV и FLV,
и он про­иг­ра­ет их все.
Ре­ко­мен­дуе­мый спо­соб упот­реб­ления
MPlayer – сбор­ка из ис­ход­ных тек­стов, для
бо­лее плот­ной ин­те­гра­ции с ва­шим обо­
Пер­вая вер­сия
ру­до­ванием. Но для стан­дарт­ных ком­пь­ мы­ши, джой­сти­ка или ин­фра­крас­но­го Спо­со­бов мо­ди­фи­ци­ро­вать про­иг­ры­
MPlayer бы­ла
ю­те­ров на Intel/AMD мож­но взять MPlayer усерд­но со­б­ра­на пуль­та че­рез LIRC. вание ви­део с по­мо­щью раз­лич­ных ау­дио-
с ре­по­зи­то­ри­ев ва­ше­го ди­ст­ри­бу­ти­ва, по­ за 30 ми­нут! Бла­го­да­ря наличию libdvdread и libdb- и ви­део­фильт­ров здесь нема­ло. Мож­но
сколь­к у он уже оп­ти­ми­зи­ро­ван для по­ dcss, MPlayer не ис­пы­ты­ва­ет за­труднений вы­ре­зать ку­сок из ви­део­фай­ла, уве­ли­чить
пуляр­ных муль­ти­ме­дий­ных рас­ши­рений с про­иг­ры­ванием DVD. Ском­пи­ли­ро­вав его его, пе­ре­вер­нуть или ото­бра­зить зеркаль­
(MMX2, SSE2, Enhanced 3DNOW! и пр.). с libdvdnav, вы так­же об­за­ве­де­тесь на­ви­га­ но, или уве­ли­чить об­ласть по­ка­за ви­
Све­жие вер­сии MPlayer слег­ка раз­гру­зят ци­ей по ме­ню DVD. Лег­ко вы­бирать сре­ди део, что­бы пе­ре­местить суб­тит­ры в чер­
ваш CPU, пе­ре­да­в часть ра­бот по де­ко­ди­ мно­же­ства ау­дио­по­то­ков и на­пра­влять ау­ ные по­ля внизу. Ра­зо­брав­шись с оп­ция­ми
ро­ванию ви­део гра­фи­че­ско­му про­цес­со­ру дио в систе­му объ­ем­но­го зву­чания. Доступ­ на от­дель­ном филь­ме, мож­но со­хранить
со­вре­мен­ных ви­део­карт Nvidia. Все­объ­ем­ ны и дру­гие трю­ки: на­при­мер, пе­ре­ме­щение на­строй­ки в кон­фи­г у­ра­ци­он­ном фай­ле,
лю­щая при­ро­да MPlayer объ­яс­ня­ет­ся чис­ ка­на­лов с од­но­го ди­на­ми­ка на дру­го­й. а зна­чит, пре­д у­смот­реть ин­ди­ви­ду­а ль­ные
лом драй­ве­ров, с ко­то­ры­ми он ра­бо­та­ па­ра­мет­ры для всех ва­ших ви­део.
ет – в диа­па­зоне от обыч­ных VESA и X11 Нет ин­дек­са — нет MPlayer уме­ет пе­ре­да­вать ви­део­по­
до бо­лее эк­зо­тич­но­го OpenGL, на­ря­ду проблем то­ки по се­ти че­рез про­то­ко­лы HTTP, FTP,
со спе­ци­а ль­ны­ми драй­ве­ра­ми для ви­део­ MPlayer да­ет боль­шое пре­иму­ще­ство MMS или RTSP/RTP, а так­же ра­бо­тать че­
карт от ATI, Nvidia, Matrox и дру­гих. в про­иг­ры­вании локаль­ных ви­део­фай­лов, рез про­кси. Мож­но восполь­зо­вать­ся под­
В основ­ном MPlayer управ­ля­ет­ся с по­ да­же по­вре­ж ­ден­ных. Ошиб­ки в ви­део­ держ­кой про­то­ко­лов – на­ря­ду с чтением
мо­щью команд­ной стро­ки, хо­тя раз­ра­бот­ фай­лах по­яв­ля­ют­ся до­воль­но лег­ко. Ес­ли ви­део из стан­дарт­но­го вво­да – что­бы про­
чи­ки занима­ют­ся и GUI, ко­то­рый мож­но вы об­менивае­тесь ви­део­фай­ла­ми – есте­ иг­ры­вать фай­лы в про­цес­се ска­чи­вания
при­вести к сво­ему вку­су, вы­брав из мас­сы ствен­но, ле­галь­но – с ва­ши­ми друзь­я­ми, их с FTP. MPlayer так­же мо­жет со­хра­нять
раз­лич­ных ски­нов. Про­грам­ма под­дер­жи­ MPlayer ра­бо­та­ет или соз­дае­те их с по­мо­щью ка­ме­ры, а за­ транс­ли­руе­мые в Ин­тернете ро­ли­ки, а ес­
ва­ет OSD (On Screen Display) и ви­зу­а ль­но под Linux, Windows, тем де­ли­те на ку­соч­ки или пе­ре­дае­те че­ ли ваш ТВ- или ра­дио­тюнер со­вмести­мы
ото­бра­жа­ет ре­зуль­тат из­менения па­ра­мет­ Mac, AmigaOS, рез USB, в ско­ром вре­мени вы вы­ясните, с Video4Linux, MPlayer по­зво­лит смот­реть
ров. MPlayer мож­но управ­лять с по­мо­щью Syllable и да­же что ин­дек­сы у них уте­ря­ны. Про­иг­ры­ или запи­сы­вать транс­ля­ции. Воз­мож­но­сти
Nintendo Wii!
вать­ся-то они бу­д ут, толь­ко нель­зя боль­ без­гранич­ны!
ше пе­ре­ма­ты­вать их впе­ред или на­зад…
ну, то есть, ес­ли не ис­поль­зо­вать MPlayer:
он уме­ет воспро­из­во­дить фай­лы и без ин­ Вердикт
дек­сов. Мож­но да­же воссоз­дать недостаю­
щую ин­дек­са­цию с по­мо­щью встро­ен­но­го
Mencoder.
MPlayer
Дру­гая нередкая ошиб­ка – рас­со­гла­со­ Вер­сия: Еже­днев­ные сним­ки с SVN
Сайт: www.mplayerhq.hu
вание ви­део и ау­дио. Опять-та­ки, ес­ли кон­
Це­на: Бес­плат­но под GPL
вер­ти­ро­вать ви­део из DVD с суб­тит­ра­ми,
воз­мож­но, по­на­до­бит­ся под­гон­ка вре­мени Ха­рак­те­ри­сти­ки это­го ви­део­плей­
е­ра не­срав­нен­ны: он спра­вит­ся
по­ка­за по­следних. Обе за­да­чи лег­ко ре­ со всем, что только в го­ло­ву взбредет.
ша­ют­ся с по­мо­щью MPlayer. Кста­ти о суб­
тит­рах: этот плейер под­дер­жи­ва­ет боль­ше
фор­ма­тов суб­тит­ров, чем вам из­вест­но.
Рей­тинг 9/10
Сентябрь 2009 Linux Format    17
Сравнение Ви­део­плейеры

Ogle DVD Player


Его вре­мя бы­ло... и про­шло.

П
е­ред по­яв­лением Xine был Но… ста­рей­ший DVD-плейер под Linux
Ogle. И он имел ма­ги­че­скую си­лу до­жи­ва­ет свой век. Зна­менитый вы­бор уг­
под­держ­ки та­ких DVD-функ­ций, ла об­зо­ра не ра­бо­та­ет во вре­мя про­смот­ра.
как несколь­ко то­чек об­зо­ра. Вдо­ба­вок эта и ряд дру­гих осо­бен­но­стей
Да­же по­сле по­яв­ления дру­гих ме­диа­­ по части DVD – на­при­мер, гла­вы и ме­ню –
плейе­ров Ogle про­иг­ры­вал DVD на­мно­ доступ­ны и в дру­гих ме­ди­а-­плейе­рах, с бо­
го луч­ше, чем лю­бой из них. Ogle счи­та­ет­ лее ши­ро­ким спек­тром функ­ций.
ся пер­вым плейе­ром с пол­ной под­дер­жкой До­ба­вим к от­ме­чен­но­му ряд оши­бок
ме­ню DVD под Linux. Воз­мож­но, это прав­ в по­следнем ре­ли­зе, и по­лу­чит­ся, что от
да, по­то­му что дру­гие бы­ли в осно­ве сво­ей про­грам­мы проку мало. На­при­мер, Ogle
плейе­ра­ми для про­иг­ры­вания всех ти­пов дол­жен про­иг­ры­вать VOB-фай­лы, ско­пи­-
ау­дио и ви­део, а Ogle специализиро­вал­ся ро­ван­ные на вин­че­стер, но эта функ­ция,
на воспро­из­ве­дении DVD. по­хо­же, не ра­бо­та­ет. Ин­ст­ру­мен­тов управ-
В ре­по­зи­то­ри­ях ва­ше­го ди­ст­ри­бу­ти­ва ­ления на­строй­ка­ми нет, и даже об­ра­ще-
Не дай­те кноп­ке
на­вер­ня­ка най­дут­ся раз­ные вер­сии Ogle, ние к Прав­ка > Па­ра­мет­ры UI [Edit > UI
от неоп­ти­ми­зи­ро­ван­ной до со­б­ран­ной Properties] не влеч­ет ника­ких из­менений.
На­зад вас оду­ра­
чить!
Вердикт
с под­держ­кой MMX. Ogle вклю­ча­ет свой На­конец, нет управ­ления в пол­но­эк­ран­
GUI в от­дель­ном па­ке­те, а для про­иг­ры­ ном ре­жи­ме: для про­смот­ра но­во­го DVD Ogle
вания за­шиф­ро­ван­ных DVD по­на­до­бит­ся при­дет­ся пе­ре­за­пускать Ogle, и пе­ре­ход Вер­сия: 0.9.2
libdvdcss. на­зад не ра­бо­та­ет. Сайт: www.dtek.chalmers.se/group/dvd
Це­на: Бес­плат­но под GPL
Про­стой ин­тер­фей­с Ogle по­зво­ляет
Не­ко­гда вер­ши­на про­иг­ры­ва­те­лей
в ходе воспро­из­ве­дения DVD ме­нять гла­вы
и суб­тит­ры или вы­би­рать, ка­кой ау­дио­по­
«Зна­ме­ни­тый вы­бор уг­ DVD под Linux, но не уг­нал­ся за бы­ст­
рым раз­ви­ти­ем дру­гих плейе­ров.
ток про­иг­ры­вать. В филь­ме с несколь­ки­ми ла об­зо­ра не ра­бо­та­ет
точ­ка­ми об­зо­ра мо­жно ме­нять ра­к урс, что
по­ка­мест весь­ма про­бле­ма­тич­но в VLC. в ре­жи­ме про­смот­ра.» Рей­тинг 5/10

Helix Player и RealPlayer


Ре­аль­но ли они воспро­из­во­дят?

П
ро­ект Helix раз­ра­ба­ты­ва­ет­ся под­дер­жи­вае­мы­ми в Helix, но еще иг­ра­ет
RealNetworks, ко­то­рая ис­поль­ MP4, Flash Video, WMV9 и раз­лич­ные вер­
зу­ет соз­дан­ный им код для сво­ сии RealVideo, хо­тя AVI, MPEG и DVD все
их про­прие­тар­ных при­ло­жений, вклю­чая рав­но оста­ют­ся за бор­том.
ме­ди­а-плейер RealPlayer. Helix, как и RealPlayer, позволяет уста­
Helix Player – от­кры­тый ме­ди­а-­плейер но­вить мо­д уль рас­ши­рения для брау­зе­ра
на базе Helix Client, ко­то­рый, по све- в про­цес­се ин­стал­ля­ции; оба так­же под­
дениям RealNetworks, по­став­ля­ет­ся где- дер­жи­ва­ют плей-листы. У них оди­на­ко­вые
то в 350 мил­лио­нов те­ле­фо­нов. Несмот­ря па­ра­мет­ры на­строй­ки, ко­то­рые доста­точ­но
на это дости­жение, Helix Player воспро­из­ про­дви­ну­ты: на­при­мер, мож­но ука­зать до­
во­дит лишь ог­раничен­ное чис­ло ме­диа- пусти­мую сте­пень на­груз­ки при воспро­из­
форма­тов. ве­дении фай­лов.
Со­глас­но до­к у­мен­та­ции, Helix Player Глав­ная цель обо­их плейе­ров – рабо-
RealPlayer для
спо­со­бен про­иг­ры­вать HTTP��������������
������������������
-по­ток, одна- та с по­то­ками от сер­ви­са Real SuperPass.
ко в дан­ной вер­сии как-то непо­хо­же, что Од­на­ко в них недоста­ет функ­ций, доступ­
Linux — по­ка что не­
при­ви­ле­ги­ро­ван­ная
Вердикт
это ра­бо­та­ет. Он под­дер­жи­ва­ет фор­ма­ты ных обыч­ным плейе­рам – на­при­мер, пост- вер­сия его со­бра­та
плей-листов RAM и RPM от Real, а так­же об­ра­бот­ки ви­део; и ну­ж ­да в них от­па­да­ет, под Windows. Helix/RealPlayer
про­иг­ры­ва­ет их RTSP-по­то­ки. Helix име­ет по­сколь­к у про­прие­тар­ные фор­ма­ты Real Вер­сия: Helix/RealPlayer 11 Gold 1.1
под­держ­к у ко­де­ка H.263, ис­поль­зуе­мо­го умеют про­иг­ры­вать и дру­гие плей­е­ры. Сайт: http://player.helixcommunity.org
Це­на: Бес­плат­но под GPL и дру­ги­ми
в ви­део для Flash, но не мо­жет про­иг­ры­
ли­цен­зия­ми
вать FLV с YouTube, как и AVI, MPEG, MP3,
и DVD. Един­ствен­ный фор­мат, воспро­из­во­
«Helix Player уме­ет Оба плейе­ра вы­хо­дят за рам­ки кон­
тен­та RealMedia, но лишь слег­ка.
ди­мый здесь без про­блем – это OGG. про­иг­ры­вать ма­ло
RealPlayer for Linux ра­бо­та­ет чуть луч­
ше. Он справ­ля­ет­ся со все­ми фор­ма­та­ми, ме­диа-­фор­ма­тов.» Рей­тинг 5/10
18    Linux Format Сентябрь 2009
 Ви­део­плейеры Сравнение


Ви­део­плей­е­ры

Вер­дикт
MPlayer 9/10
П
о­сколь­к у у со­вре­мен­ных видео­ грам­мы. MPlayer так­же име­ет очень гиб- сти, способные кон­к у­ри­ро­вать с MPlayer
плейе­ров управ­ление не про­ ­кий ин­тер­фейс управ­ления из команд­ной и VLC – на­при­мер, управ­ление, «дру­же­
ще, чем у Бо­ин­га 747, до­воль­ стро­ки и раз­но­образные GUI. люб­ное» к мы­ши. Прав­да, од­но из его
но ло­гич­но, что, при­вык­нув к сво­ему, VLC с го­да­ми при­об­рел ре­пу­та­цию досто­инств яв­ля­ет­ся так­же и недостат­
вы вряд ли станете его ме­нять. Но нам- плейе­ра «иг­ра­ет все, что про­иг­ры­ва­ет­ся». ком. Раз­де­ляя яд­ро и функ­цио­наль­ность,
то нуж­но вы­брать один, и хо­тя три ли­де­ У него хо­ро­ший, мощ­ный GUI и от­лич­ Xine об­лег­ча­ет жизнь раз­ра­бот­чи­кам;
ра – MPlayer, VLC и Xine – весь­ма близ­ки, обыч­ные же поль­зо­ва­те­ли, на­про­тив, об-
мы от ду­ши ре­ко­мен­д у­ем MPlayer за его
со­лид­ную про­из­во­ди­тель­ность и изо­би­
«От ду­ши ре­ко­мен­ду­ем речены по­сто­ян­но сле­дить за биб­лио­те­ка­
ми и мо­д у­ля­ми рас­ши­рения. Вдобавок это
лие оп­ций.
Да­же на ста­рых ма­ши­нах, вро­де на­ше­
MPlayer – за его про­из­ влия­ет на про­из­во­ди­тель­ность и чре­ва­то
по­лом­ка­ми.
го но­у т­бу­ка на ба­зе Celeron, MPlayer спо- во­ди­тель­ность и опции.» Луч­шее в Totem – то, что он по умол­
со­бен од­но­вре­мен­но про­иг­ры­вать па­ру AVI чанию вклю­чен в боль­шин­стве ди­ст­ри­
и DVD. При воспро­из­ве­дении мы не стал­ки­ ное воспро­из­ве­дение, хо­тя и за­ви­ся­щее бу­ти­вов. Totem удо­бен в ис­поль­зо­вании
ва­лись со сбоя­ми син­хрониза­ции, несмот­ от обо­ру­до­вания. Сле­ди­те за его раз­ви­ти­ и идеа­лен для про­иг­ры­вания без за­тей. Ин­
ря на несколь­ко пе­ре­мо­ток впе­ред и на­ ем: он бли­зит­ся к вы­пуску ре­ли­за 1.0. тер­фейс у него прост, а ко­ли­че­ство функ­
зад – раз­ве что при несколь­ких про­го­нах Xine сто­ит где-то ме­ж ­д у MPlayer ций вполне доста­точ­но для управ­ления
впе­ред уве­ли­чи­лось вре­мя от­к ли­ка про­ и VLC. У него есть оп­ции и воз­мож­но­ основ­ны­ми ас­пек­та­ми при воспро­из­ве­
дении ви­део. Но хо­тя он и по­зво­ля­ет вам
вы­брать ме­ж ­д у дву­мя оди­на­ко­во функ­
цио­наль­ны­ми движ­ка­ми, он не под­хо­дит
фа­на­там ши­ро­ких воз­мож­но­стей.
Ogle, Helix и RealPlayer, ог­раничен­ные
сво­ей уз­кой спе­циа­ли­за­ци­ей, за­кры­ва­
ют ты­лы. Но хо­ронить их не сто­ит: вдруг
вы на­ткнетесь на DVD, про­иг­ры­вае­мый
толь­ко в Ogle, или файл в но­вом фор­ма­
те RealMedia, ко­то­рый по зу­бам толь­ко
RealPlayer.

Обратная связь
Мо­д уль­ный плей­ер – иде­а л ва­шей
меч­ты? Счи­тае­те ли вы, что «боль­
шие маль­чи­ки» че­рес­чур жир­ны или
вам пре­тит идея, что Ogle вы­шел
из ми­ло­сти? При­шли­те свое мне­ние
MPlayer поставляется с Mencoder, од­ной из луч­ших ути­лит для пе­ре­ко­ди­ро­ва­ния. на letters@linuxformat.ru

Таб­ли­ца функ­ций
Название Ли­цен­зия AVI MPEG WMV CD/DVD Тит­ры Мно­го­эк­ Ау­дио Плей-лист Ски­ны На­строй­ка
ран­ность

MPlayer GPL Под­роб­ная


VLC GPL Уме­рен­ная

Xine GPL Под­роб­ная


Totem GPL Сла­бая
Ogle GPL Ни­ка­кой

Helix/RealPlayer GPL Сла­бая

Сентябрь 2009 Linux Format    19


Linux про­тив Windows 7

Linux про­тив

Windows 7
По­доб­но Рок­ки Баль­боа, Грэм Мор­ри­сон вер­нул­ся на ринг,
что­бы по­ме­рить­ся си­ла­ми с по­след­ним чем­пио­ном от Microsoft.

W
indows 7 от Microsoft долж­на вый­ти 22 ок­тяб­ря, менее вер­шен­но от­крыт. Из ко­роб­ки, Linux да­же мо­жет по­хва­стать луч­шей, чем
чем че­рез три го­да по­сле ре­ли­за Windows Vista. В по­пыт­ у Windows, под­держ­кой муль­ти­ме­дий­ных фор­ма­тов, и мо­жет стать един­
ке сде­лать про­цесс мак­си­маль­но от­кры­тым, и, ве­ро­ят­но, ствен­ным спо­со­бом ис­поль­зо­вать ста­рое обо­ру­до­вание по мак­си­му­му,
что­бы обезо­па­сить се­бя от пе­рио­ди­че­ско­го непо­па­дания осо­бен­но когда но­вый драй­вер для Windows 7 от­сут­ству­ет.
в це­ле­вую ау­ди­то­рию, Microsoft сде­ла­ла тесто­вые вер­сии сво­ей по­следней
опе­ра­ци­он­ной систе­мы доступ­ны­ми всем же­лаю­щим. Бес­плат­но, бо­лее Пре­ду­пре­ж­ден — зна­чит, воо­ру­жен
чем на год… и, не утер­пев, мы про­смот­ре­ли ре­лиз-кан­ди­дат и сравни- На про­тя­жении жизнен­но­го цик­ла Windows 7, бес­по­кой­ство об­ще­ства
ли его с со­вре­мен­ны­ми ди­ст­ри­бу­ти­ва­ми Linux. о ча­ст­ной жизни, управ­лении циф­ро­вы­ми пра­ва­ми и за­кры­тых об­нов­лениях
Для нас уже ста­ло тра­ди­ци­ей про­ти­во­постав­лять по­след­нюю вер­сию долж­но по­мочь Linux вы­расти как аль­тер­на­ти­ве, когда поль­зо­ва­тель за­хо­
Windows на­шей ста­рой ис­пы­тан­ной ОС. И не по­то­му, что мы хо­тим пре­ чет кон­тро­ли­ро­вать свое обо­ру­до­вание и ПО. Сей­час Microsoft дей­ству­ет
вознести ха­рак­те­ри­сти­ки Windows или раз­жечь спо­ры о том, что луч­ше, куда бо­лее тех­но­ло­гич­но, чем де­вять лет на­зад, когда вы­шла Windows XP.
а что ху­же. Речь идет о понимании рын­ка и кон­к у­рен­ции. Microsoft Windows, Ев­ро­пей­ская ко­мис­сия по­тра­ти­ла мно­го вре­мени, уси­лий и денег, пре­
безуслов­но, са­мая рас­про­странен­ная ОС на планете, а мы, как поль­зо­ва­ сле­д уя Microsoft за некон­к у­рент­ное по­ве­дение, и это долж­но по­вли­ять
те­ли Linux, долж­ны сле­дить за но­вей­ши­ми раз­ра­бот­ка­ми, тех­но­ло­гия­ми на Windows 7 в Ев­ро­пе, а так­же на осве­дом­лен­ность поль­зо­ва­те­ля в во­
и идея­ми. Это да­ет Linux луч­ший шанс расти и оста­вать­ся на пла­ву. про­сах вы­бо­ра и ком­плек­та­ции. На­при­мер, мно­гие поль­зо­ва­те­ли Windows
Од­на­ко сей­час обе опе­ра­ци­он­ные систе­мы занима­ют от­чет­ли­во раз­ные не по­доз­ре­ва­ли, что кро­ме Internet Explorer есть и дру­гие брау­зе­ры. Бла­
сег­мен­ты рын­ка. Microsoft пусти­ла Windows по чисто про­прие­тар­но­му пу­ го­да­ря ре­шениям Ко­мис­сии, в ев­ро­пей­ской по­став­ке Windows 7 еди­но­
ти и про­да­ви­ла та­кие от­но­шения с по­став­щи­ка­ми кон­тен­та и про­из­во­ди­те­ го брау­зе­ра не бу­дет, и поль­зо­ва­те­лям Windows при­дет­ся вы­би­рать его са­
ля­ми обо­ру­до­вания, что поль­зо­ва­тель ли­шен пол­но­го кон­тро­ля. Linux со­ мим. А сво­бо­да вы­бо­ра за­ра­зи­тель­на.

20      Linux Format Сентябрь 2009


 Linux про­тив Windows 7

РАУНД 1 Про­из­во­ди­тель­ность
Обе ОС обе­ща­ют ог­ром­ные улуч­шения в по­сле­дую­щие ме­ся­цы.

О
раз­но­об­раз­ных по­вы­шениях про­из­во­ди­тель­но­сти Тест Ри­чар­дса
в ка­ж ­дой сле­дую­щей ОС от Microsoft го­во­ри­лось мно­ 500
464,46
гое. По­сле яв­но за­вы­шен­ных ап­па­рат­ных тре­бо­ваний 450
441,64
Vista, Microsoft сде­ла­ла по­пыт­к у зав­лечь об­нов­ления­ми как мож­ 387,94 375,32
411,90
378,90
410,90
374,40
400
но боль­ше лю­дей. Мно­гие сравнитель­ные тесты ста­вят про­из­
во­ди­тель­ность Windows 7 вы­ше, чем у XP и Vista, и мы за­ме­ти­ 350

ли пре­восход­ство над Vista, еще ис­пы­ты­вая бе­та-вер­сию год 300

Мил­ли­се­к ун­ды
на­зад. Од­на­ко при сравнении 64‑раз­ряд­ной вер­сии Windows 7 250
с ана­ло­гич­ной вер­си­ей Ubuntu, Linux ока­зал­ся впе­ре­ди в боль­шин­
200
стве на­ших тестов, вклю­чая вре­мя за­груз­ки, вре­мя вы­к лю­чения
и ра­бо­т у фай­ло­вой систе­мы. Един­ствен­ным тестом, где Windows 7 150

су­ще­ствен­но обош­ла всех осталь­ных, был тест Ри­чар­дса [Richards 100


benchmark] об­щей про­из­во­ди­тель­но­сти систе­мы.
50
Че­рез че­ты­ре ме­ся­ца мы по­вто­ри­ли неко­то­рые из тех тестов,
на сей раз сравнив по­следний 64‑раз­ряд­ный ди­ст­ри­бу­тив Linux 0
Ubuntu Ubuntu Ubuntu Ubuntu Windows Windows Windows Windows
(Fedora 11) с ре­лиз-кан­ди­да­том Windows 7 (сбор­ка 7100). Са­мый 8.10/x86 8.10/x86-64 9.04/x86 9.04/x86-64 Vista/x86 Vista/x86-64 7/x86 7/x86-64
эф­фект­ный ре­зуль­тат для Linux был за­ме­тен на вре­мени за­груз­
ки: для по­следнего ре­ли­за Ubuntu Jaunty оно со­ста­ви­ло при­мер­ Са­мые за­мет­ные об­лас­ти, где при­ло­же­ния Windows 7 пре­вос­хо­дят Linux’овские —
но 35 се­к унд, в Fedora 11 до­тя­ну­лось до 39 се­к унд от на­жа­тия Вкл тест Ри­чар­дса и дви­жок Javascript в Firefox.
до ра­бо­че­го сто­ла. Для сравнения, в Windows 7 нам при­шлось
ждать поч­ти вдвое доль­ше, 69 се­к унд от вклю­чения до по­яв­ления вании ра­бо­та­ет Windows 7, вы вряд ли смо­же­те ис­поль­зо­вать все
ра­бо­че­го сто­ла. его воз­мож­но­сти, по­ка для ва­ше­го уст­рой­ства не ста­нут доступ­
Мы так­же об­на­ру­жи­ли, что уста­нов­ка Fedora 11 по умол­чанию, ны офи­ци­а ль­но подпи­сан­ные драй­ве­ры. На­при­мер, без драй­ве­
с ра­бо­чим сто­лом Gnome, по­треб­ля­ет зна­чи­тель­но мень­ше па­ ров DirectX 10 для ва­шей ви­део­кар­ты вы не смо­же­те вклю­чить
мя­ти, чем Windows 7, все­го 233 MБ. Windows ис­поль­зу­ет 458 MБ, эф­фек­ты ра­бо­че­го сто­ла Aero Glass, яв­ляю­щие­ся одним из луч­
чуть ли не вдвое боль­ше. ших ка­че­ств Windows 7. А что ху­же все­го, вы бу­де­те при­ко­ва­ны
к раз­ре­шению, вы­став­лен­но­му
Со­вмести­мость «Fedora 11 с Gnome для ва­ше­го монито­ра. В на­ших
Тесты и монито­ринг систе­мы – тестах мы восполь­зо­ва­лись
это лишь часть исто­рии. Ка­ж­
дая све­жая уста­нов­ка Windows
тре­бу­ет вдвое мень­ше дву­мя де­ше­вы­ми монито­ра­
ми 191D от Hanns-G. Эти уст­
ра­бо­та­ет бы­ст­ро и от­зыв­чи­ ОЗУ, чем Windows 7.» рой­ства пре­крас­но ра­бо­та­ют
во, но по­сле несколь­ких ме­ся­- под Linux, но мы не один день
цев ре­г у­ляр­но­го при­менения на­чи­на­ют про­яв­лять­ся сла­бо­сти. пры­га­ли с буб­ном, пы­та­ясь за­ста­вить их за­ра­бо­тать под Windows
За те несколь­ко недель, что мы ис­поль­зо­ва­ли Windows 7 на- 7, и в кон­це кон­цов сда­лись. Ес­ли вас рас­страи­ва­ло рас­по­зна­вание
­ря­д у с Linux, мы за­ме­ти­ли, что она бо­лее ста­биль­на, чем XP, обо­ру­до­вания в Vista, то, ско­рее все­го, те же про­бле­мы возник­нут
и рез­вее, чем Vista. У нас бы­ла толь­ко од­на про­бле­ма, с по­вре­ж­ и с Windows 7.
ден­ной фай­ло­вой систе­мой во вре­мя крэш-теста гру­бой пе­ре­за­
груз­кой ма­ши­ны; но по­сколь­к у вер­сия пред­ва­ри­тель­ная, бы­ло бы
неспра­вед­ли­во кри­ти­ко­вать за это Windows 7, по­ка не вы­шел Про­из­во­ди­тель­ность
окон­ча­тель­ный ре­лиз.
Windows 7, несо­мнен­но, луч­ше пред­ше­ственницы, и, ду­ма­ем,
мно­гие поль­зо­ва­те­ли Windows, ко­то­рые ранее неохот­но ухо­ди­ли
с XP, бу­д ут ра­ды за­пустить ее на сво­их ма­ши­нах. Глав­ное пре­иму­
ще­ство Windows – раз­но­об­ра­зие доступ­но­го ПО, и Microsoft со­би­
ра­ет­ся сде­лать ре­жим со­вмести­мо­сти с XP до­полнением к ���� Win-
dows 7 Professional и Ultimate. Ре­шение сво­дит­ся к вклю­чению
вир­т у­а ль­ной ма­ши­ны Virtual PC от Microsoft и ли­цен­зии на за­пуск
XP. Оно бу­дет не род­ным – вряд ли вы смо­же­те иг­рать в свои лю­
би­мые иг­ры – но по­зво­лит за­пускать при­ло­жения толь­ко для XP
в окне ва­ше­го ра­бо­че­го сто­ла. Это ра­зи­тель­но от­ли­ча­ет­ся от оп­ Windows 7 Linux
ро­мет­чи­во­го от­но­шения к об­рат­ной со­вмести­мо­сти в Vista. Дан­ Луч­ше на ком­плекс­ных тес­тах. Бы­ст­рее за­гру­жа­ет­ся.
Бы­ст­рее пе­ре­да­ет боль­шие Ис­поль­зу­ет мень­ше па­мя­ти.
ный шаг по­зво­ля­ет счи­тать Windows 7 об­нов­лением для мно­гих
фай­лы. Мень­ший раз­мер ус­та­нов­ки.
поль­зо­ва­те­лей XP. Фи­наль­ная вер­сия. Ши­ре со­вмес­ти­мость
По части обо­ру­до­вания это бу­дет не со­всем вер­но. Все еще на­ долж­на стать луч­ше. с обо­ру­до­ва­ни­ем.
блю­да­ет­ся из­лишнее усер­дие а-ля Vista на­счет подпи­сей драй­ За­сы­па­ние/про­бу­ж­де­ние
ра­бо­та­ет!
ве­ров и об­рат­ной со­вмести­мо­сти. Да­же ес­ли на ва­шем обо­ру­до­

Сентябрь 2009 Linux Format      21


Linux про­тив Windows 7

РАУНД 2 Вой­на ра­бо­чих сто­лов


Но­вые воз­мож­но­сти? Ин­но­ва­ци­он­ные тех­но­ло­гии? Фи! Linux бьет их всех...

Н
есмот­ря на ­уве­ли­чен­ную про­из­во­ди­тель­ность и воз­
растаю­щ ую эф­фек­тив­ность, глав­ная бит­ва за успех раз­
во­ра­чи­ва­ет­ся на ра­бо­чем сто­ле: в нем мы про­во­дим
боль­шую часть вре­мени, и ма­лые из­менения здесь чре­ва­ты ог­
ром­ной разницей в про­дук­тив­но­сти.
Windows 7 обе­ща­ет боль­шие улуч­шения, но с пер­во­го взгля­да
вполне из­винитель­но по­д у­мать, что с мо­мен­та вы­хо­да Windows
XP ма­ло что из­менилось. На­при­мер, ста­рый менед­жер уст­ройств
иден­ти­чен то­му, что был в этой уже сня­той с под­держ­ки вер­сии,
и мно­гие ас­пек­ты ра­бо­че­го сто­ла близ­ки по ду­х у прежнему. Что­
бы ра­зо­брать­ся со всем этим, возь­мем спи­сок по­лез­ных но­ви­нок
от Microsoft и сравним его с тем, что пред­ла­га­ет нам Linux.

Но­вые функ­ции, по Microsoft


На пер­вом месте улуч­шений прак­тич­но­с ти сто­ит но­вая панель
за­д ач и пол­но­эк­ран­ные пред­про­смот­ры. Сей­час ста­ло про­ще
до­ба­вить на панель за­д ач свое при­ло­жение, с по­мо­щью опе­ра­ Уже не один год поль­зо­ва­те­ли KDE и Gnome уме­ют «при­ле­п­лять»
ции под на­званием «pInning» (прика­лы­вание бу­лав­кой), и хо­ при­ло­же­ния и устройства к па­не­ли за­дач.
тя это все­гда мож­но бы­ло сде­лать по­сред­с твом Бы­с т­ро­го за­
пуска [Quick Launch], Microsoft объ­яв­ля­ет это ог­ром­ным ша­гом панели, щелкните пра­вой кноп­кой по лю­бой из оп­ций ме­ню,
впе­ред. Так­же есть дру­гое цен­ное но­во­вве­дение – боль­шие знач­ и вы смо­же­те вы­брать, ку­да имен­но по­местить икон­к у: на ра­бо­
ки. Нет, прав­д а. Еще од­но хва­ле­ное улуч­шение – миниа­тю­ра ок­ чий стол или на панель, а от­т у­да пе­ре­та­щить ее в наи­бо­лее под­хо­
на, по­яв­ляю­щ ая­ся при под­ве­дении ука­за­те­ля мы­ши к свер­ну­то­ дя­щее ме­сто. До­бав­ление пол­но­эк­ран­но­го пред­про­смот­ра в Linux
му приложению. то­же вы­пол­ня­ет­ся очень про­
Ка­ж ­дая из этих «но­ви­нок»
ка­кое-то вре­мя уже яв­ля­ет­ся
«MS на­хва­ли­ва­ет сто. Для это­го ли­бо ис­поль­
зуй­те Compiz в Gnome, ли­бо за­
ча­стью со­вре­мен­но­го ра­бо­че­
го сто­ла Linux. И хо­тя функ­ции
свою но­вую функ­цию дей­ствуй­те эф­фек­ты ра­бо­че­го
сто­ла в KDE, и в ка­ж ­дом слу­
вро­де пред­про­смот­ра миниа­ срав­не­ния окон.» чае панель по­зво­ля­ет сде­лать
тю­ры при­ло­жения из­на­чаль­ боль­шее чис­ло на­стро­ек, чем
но вхо­ди­ли в Compiz, те­перь их при­сут­ствие в ра­бо­чем ок­ру­жении ее Windows-ана­лог. В ча­ст­но­сти, в KDE мож­но ме­нять ее раз­мер,
рас­смат­ри­ва­ет­ся на­ми, как долж­ное. На­при­мер, в KDE 4.2 у вас бу­ по­ло­жение, вы­равнивание, уста­нав­ли­вать го­ри­зон­таль­но или вер­
дут ров­но столь же функ­цио­наль­ная панель за­дач, что и в ���� Win- тикаль­но и снаб­жать лю­бым чис­лом плаз­мои­дов.
dows 7, а в пе­ре­до­вых ди­ст­ри­бу­ти­вах, на­при­мер, Fedora 11, мож­но
най­ти и боль­ше улуч­шений. На­хо­д ясь в ре­жи­ме ре­дак­ти­ро­вания Jump lists
По­смот­рим, ко­го Windows 7 до­гонит и пе­ре­гонит в сво­ей но­вой
функ­ции – Спи­сках бы­ст­ро­го пе­ре­хо­да [Jump Lists]. Это спо­соб
Ин­но­ва­ции на ра­бо­чем сто­ле по­ка­зать оп­ре­де­лен­ную часть при­ло­жения в ме­ню, по­яв­ляю­щем­
ся при щелч­ке пра­вой кноп­кой на знач­ке за­пуска про­грам­мы. Про­
стей­ший при­мер – по пра­во­му щелч­к у по­яв­ля­ет­ся спи­сок недав­
но ис­поль­зо­ван­ных фай­лов, ка­ж ­дый из ко­то­рых мож­но вы­брать
и за­гру­зить. Есть да­же рас­ши­рение для Firefox. Этот фо­к ус тре­

Windows 7 Linux
По­иск по ра­бо­че­му сто­лу хо­ро­шо Nepomuk раз­мы­ва­ет гра­ни­цы
реа­ли­зо­ван и мо­жет ухо­дить ме­ж­ду ло­каль­ным и се­те­вым.
в он­лайн. Gnome Do пол­но­стью за­ме­ня­ет
Биб­лио­те­ки муль­ти­ме­диа мож­но па­нель за­дач.
при­кре­п­лять к стар­то­во­му ме­ню Вид­же­ты от Google Desktop те­перь
и па­не­ли за­дач. в Gnome и KDE.
Jump lists по­мо­га­ют серь­ез­но Поль­зо­ва­те­ли Windows те­перь мо­гут при­кре­п­лять лю­би­мые при­
по­вы­сить эф­фек­тив­ность. ло­же­ния и фай­лы муль­ти­ме­диа к па­не­ли за­дач с по­мо­щью функ­
ции pinning.

22      Linux Format Сентябрь 2009


 Linux про­тив Windows 7

Linux стра­да­ет
от не­дос­тат­ка стан­
дарт­но­го про­ни­
каю­ще­го по­ис­ка,
од­на­ко Beagle,
в об­щем, не­пло­хое
ре­ше­ние.

«Но­вая» функ­ция Show Desktop в Windows 7 де­ла­ет то же,


что уме­ют Gnome и OS X.

бу­ет взаи­мо­дей­ствия ме­ж ­д у при­ло­жения­ми и менед­же­ром окон, OS X и iPhone, несмот­ря на несколь­ко вы­со­ко­эф­фек­тив­ных реа­
и его слож­но эму­ли­ро­вать из-за нестан­дарт­ной при­ро­ды ра­бо­ ли­за­ций, этот про­стой по­иск, спо­соб­ный чи­тать до­к у­мен­ты, элек­
че­го сто­ла Linux. Нель­зя ска­зать, что Jump Lists ме­ня­ют па­ра­диг­ трон­ную поч­т у и ар­хи­вы он­лайн-пе­реписки с неко­то­рой до­лей
му ис­поль­зо­вания гра­фи­че­ско­го ок­ру­жения, но это при­ят­ное до­ ин­тел­лек­та, все еще в пу­ти. Windows со­дер­жит зна­чок по­иска
бав­ление, и очень ско­ро раз­ра­бот­чи­ки Gnome или KDE пре­тво­рят в ле­вом нижнем уг­лу, пря­мо над пик­то­грам­мой стар­то­во­го ме­
в жизнь что-нибудь по­доб­ное. ню. Он по­хож на та­ко­вой в KDE, и по­зво­ля­ет бы­ст­ро на­хо­дить ин­
В плане прак­тич­но­сти ра­бо­че­го сто­ла Microsoft на­хва­ли­ва­ет те­ре­сую­щий вас кон­тент. Вер­сия от Microsoft пред­по­ла­га­ет, что
свою но­вую функ­цию сравнения окон, под на­званием «Snaps». поль­зо­ва­тель оп­ре­де­лит биб­лио­те­ки кон­тен­та, и в ком­пь­ю­те­ре
Это по­лу-ин­тел­лек­т у­а ль­ная про­це­д у­ра за­хва­та окон: она мо­жет есть оп­ре­де­лен­ные места, ку­да вы до­пускае­те (или не до­пускае­те)
по­де­лить эк­ран на две части и рас­пах­нуть два ок­на при­ло­жения по­иско­вый дви­жок. Так­же обе­ща­но, что в Windows 7 по­иск фай­
на ка­ж ­дой по­ло­вине. Пе­ре­та­щи­те ок­но в од­ну из этих то­чек за­ лов бу­дет пе­ренесен с локаль­ных но­си­те­лей в Ин­тернет. На­при­
хва­та, ли­бо к верхнему краю, что­бы рас­пах­нуть его, ли­бо к пра­во­ мер, при по­иске фо­то­гра­фии вы мо­же­те уй­ти с локаль­ной кол­
му или ле­во­му кра­ям, для 50 % ви­да, и оно из­менит раз­мер. Хо­ лек­ции в он­лайн – ска­жем, в свою учет­ную запись на Flickr или
тя ти­по­вой ра­бо­чий стол Linux не име­ет точ­но та­кой же функ­ции, Picasa. Воз­мож­но­сти та­ко­го он­лайн-по­иска за­ви­сят от под­хо­
бо­лее ши­ро­кие воз­мож­но­сти за­хва­та окон пред­ла­га­ют и Gnome, дя­ще­го рас­ши­рения для муль­ти­ме­диа и от ин­те­ре­сую­ще­го вас
и KDE. На­при­мер, в KDE’шной панели По­ве­дение окон [Window он­лайн-ре­сур­са, но по­тен­ци­а л его, несо­мнен­но, ог­ро­мен.
Behaviour] мож­но за­дать от­дель­ные границы за­хва­та для края Ти­по­вой Linux-ком­пь­ю­тер дол­жен ид­ти в но­г у, ес­ли он со­би­
эк­ра­на, края ок­на и да­же для цен­тра дис­плея. Там так­же нема­ло ра­ет­ся кон­к у­ри­ро­вать с Windows 7 в воз­мож­но­стях по­иска. Неза­
дру­гих оп­ций для тон­кой на­строй­ки гео­мет­рии и управ­ления ок­ ви­си­мо от то­го, поль­зуе­тесь вы им или нет, это пре­крас­ная воз­
ном, вплоть до вы­бо­ра ти­пов окон, к ко­то­рым бу­дет при­ме­нять­ся мож­ность для но­вич­ков. Но­вые ре­ли­зы ди­ст­ри­бу­ти­вов, на­при­мер,
дан­ная на­строй­ка. Fedora, все еще снаб­жа­ют­ся ути­ли­та­ми по­иска ти­па Beagle, од­на­ко
до еди­но­го ре­шения для ра­бо­че­го сто­ла Linux нуж­но прой­ти боль­
Сред­ства по­иска шой путь. Раз­ра­бот­чи­ки зна­ют об этой про­бле­ме, од­на­ко коман­
Дру­гая функ­ция, ко­то­рой ра­бо­чие сто­лы Linux уг­ро­жа­ют уже да KDE, на­при­мер, пре­кра­ти­ла раз­го­во­ры об ин­тег­ри­ро­ван­ном
па­ры лет, но до сих пор не пре­доста­ви­ли – проникаю­щий по­ по­иске вплоть до вер­сии 4.4, ко­то­рая вый­дет, по­хо­же, несколь­ко
иск. Несмот­ря на то, что это фир­мен­ная чер­та ра­бо­че­го сто­ла поз­же, чем Windows 7.

Linux на мо­мент вы­хо­да Windows 7


Когда пи­са­лась эта ста­тья (июль 2009), до вы­хо­да С уче­том упо­ра, сде­лан­но­го в Windows 7 на слия-
Windows 7 оста­ва­лось еще несколь­ко ме­ся­цев. А до это­ ние локаль­ных и уда­лен­ных дан­ных, важнее все­го бу­
го вре­мени бу­дет еще несколь­ко ре­ли­зов основ­ных ди­ дет воскре­шение в KDE идеи Nepomuk – так на­зы­вае­
ст­ри­бу­ти­вов Linux, то есть у ра­бо­че­го сто­ла Linux мо­г ут мо­го «со­ци­а ль­но­го ра­бо­че­го сто­ла». Это оз­на­ча­ет связь
поя­вить­ся неко­то­рые серь­ез­ные улуч­шения. Во гла­ве локаль­ных и уда­лен­ных дан­ных, и ра­бо­чий стол бу­дет
это­го спи­ска сто­ит KDE 4.3, и по­хо­же, что коман­да KDE плав­но их ин­тег­ри­ро­вать. На­при­мер, про­де­ла­на ог­ром­
на­конец до­би­лась успе­ха. Вер­сия 4.3 бу­дет не про­сто ре­ ная ра­бо­та над ор­га­най­зе­ром Akonadi ­– Nepomuk уме­ет
ли­зом с ис­прав­лением оши­бок и боль­шим удоб­ством: ав­то­ма­ти­че­ски ана­ли­зи­ро­вать и де­лать по­мет­ки в те­ле
там до­ба­вят­ся кру­тые функ­ции и кое-ка­кие ук­ра­ша­тель­ элек­трон­но­го пись­ма. Мож­но до­бав­лять ин­фор­ма­цию
ства. Ра­бо­чий стол KDE сам по се­бе и свя­зан­ные с ним о ва­шем ме­сто­по­ло­жении, лю­д ях во­круг вас и, ска­жем,
при­ло­жения те­перь бу­дут иметь доступ к дан­ным о гео­ о ме­ро­прия­ти­ях, в ко­то­рых вы со­би­рае­тесь уча­ство­
гра­фи­че­ском по­ло­жении, на ра­дость поль­зо­ва­те­лям но­ вать – све­дения при­мер­но та­ко­го ро­да мож­но уви­деть
ут­бу­ков. На панели за­дач поя­вят­ся раз­де­ли­те­ли, и панель на сай­тах ти­па Facebook и Twitter. Есть и но­вая систе­ма
в Windows 7 останет­ся да­ле­ко по­за­ди. Раз­де­ли­те­ли по­ ме­ню, под на­званием Raptor. Она пы­та­ет­ся уга­дать, ка­
мо­г ут со­би­рать знач­ки в груп­пы, а не дер­жать их ку­чей; кие оп­ции вам нуж­ны, ис­хо­д я из то­го, что вы сей­час де­
улуч­шат­ся функ­ции управ­ления систем­ным лот­ком. Так­ лае­те. Это пе­ре­се­чение KLauncher и Gnome Do – ог­ром­ В KDE 4.3, на­ко­нец, поя­вят­ся но­вые функ­ции,
же там бу­дет мно­го но­вых вид­же­тов-плаз­мои­дов. ное усо­вер­шен­ство­вание те­к у­щей систе­мы ‘Lancelot’. на­при­мер раз­де­ли­те­ли на па­не­ли за­дач.

Сентябрь 2009 Linux Format      23


Linux про­тив Windows 7

РАУНД 3 Ба­зо­вые при­ло­жения


Как со­от­но­сят­ся друг с дру­гом основ­ные про­грам­мы для ка­ж­до­го ок­ру­жения?

Л
уч­ший при­мер ба­зо­во­го при­ло­жения, свя­зан­но­го с ОС –
это web-брау­зер. Но из-за юри­ди­че­ских спо­ров во­круг
его по­став­ки ком­панией Microsoft, Internet Explorer 8
не бу­дет так пе­ре­пле­тен с ОС, как его пред­ше­ственники. В ев­ро­
пей­ский ре­лиз брау­зер по умол­чанию во­об­ще не вклю­чен, что по­
ста­вит поль­зо­ва­те­ля пе­ред ин­те­рес­ной про­бле­мой: нет брау­зе­ра,
что­бы ска­чать се­бе брау­зер. На­вер­но, Microsoft ре­ши­ла не соз­да­
вать мощ­ных при­ло­жений для основ­ных за­дач, что­бы не на­влечь
гнев кон­к у­рен­тов или Ев­ро­пей­ской ан­ти­мо­но­поль­ной ко­мис­
сии. И хо­тя в се­го­дняшней на­сквозь он­лай­но­вой дей­стви­тель­но­
сти эти ог­раничения мо­г ут по­ка­зать­ся су­ро­вы­ми, для Linux они
су­щий по­да­рок судь­бы и пре­крас­ная воз­мож­ность про­дви­нуть
свои при­ло­жения, ин­тег­ри­ро­ван­ные с ра­бо­чим сто­лом.
В Windows 7 эти важней­шие ути­ли­ты нуж­но ска­чи­вать от­ Microsoft на­де­ет­ся, что web-при­ло­же­ния Silverlight ста­нут
дель­но под мар­кой Windows Live. На вы­бор да­ет­ся во­семь при­ не­отъ­ем­ле­мой ча­стью ло­каль­но­го и уда­лен­но­го ра­бо­че­го сто­ла
ло­жений: это по­следнее по­ко­ление Messenger, Outlook Express, Windows.
Word Pad, фильт­ра кон­тен­та и Silverlight – Microsoft-кон­к у­рен­
та Flash от Adobe. В рам­ках Linux этим про­грам­мам мож­но упо­ на со­об­щения­ми Windows Messenger. Воз­мож­но, это по­то­му, что
до­бить Pidgin или Kopete, Evolution, Kate и Gedit, DansGuardian он по­зво­ля­ет поль­зо­ва­те­лям Windows без про­блем об­щать­ся
и Moonlight. Од­на­ко от­ли­чие пред­ло­жения Microsoft в том, что с дру­ги­ми поль­зо­ва­те­ля­ми Windows, а раз со­бе­седники ис­поль­
при­ло­жения силь­но уре­за­ны: ком­пании вы­годней, что­бы вы пла­ зу­ют тот же кли­ент, ви­део или го­ло­со­вой чат за­пуска­ет­ся па­рой
ти­ли за пол­но­функ­цио­наль­ные вер­сии. щелч­ков мы­ши. На про­тя­жении мно­гих лет на­блю­дал­ся ста­биль­
ный про­гресс, хо­тя и без осо­бых ре­во­лю­ций. То же ка­са­ет­ся про­
Мгно­вен­ные сообщения грам­мы, по­став­ляе­мой с пре-ре­ли­зом Windows 7. Это та же вер­
Несмот­ря на на­ли­чие пор­тов Pidgin для Windows, мно­гие поль­ сия, что вы­пу­ще­на под на­званием Windows Live Messenger 2009
зо­ва­те­ли этой ОС все еще вы­би­ра­ют в ка­че­стве кли­ен­та об­ме­ в на­ча­ле го­да, и пер­вым, что за­ме­тит поль­зо­ва­тель Linux, бу­
дет встро­ен­ная рек­ла­ма. Вы не смо­же­те от­крыть глав­ное ок­но
или ок­но ча­та без неболь­шо­го баннера или тек­ста, ко­то­рый от­-
Срав­не­ние вер­сий вле­ка­ет ва­ше внимание.
Ес­ли вы раз­го­ва­ри­вае­те с дру­гим поль­зо­ва­те­лем Windows
Live, у вас и вправ­д у есть пре­иму­ще­ство встро­ен­но­го го­ло­со­во­
го или ви­део­ча­та, но дру­гих плю­сов по сравнению с мно­го­про­то­
коль­ны­ми кли­ен­та­ми ти­па Pidgin и Kopete у Messenger от Microsoft
нет. Kopete, в ча­ст­но­сти, пре­крас­ная про­грам­ма, по­зво­ляю­щая по­
сы­лать со­об­щения поч­ти всем, кто хо­чет их при­нять. AIM, Jabber,
Google Talk, Windows Live и да­же Facebook – все они ра­бо­та­ет бла­
го­да­ря на­бо­ру мо­д у­лей рас­ши­рения.

Windows 7 Linux
Starter: Нет Aero, и нет Starter: Linux с та­ки­ми
64-раз­ряд­но­сти. ог­ра­ни­че­ния­ми нет.
Home Basic: Раз­ра­бо­та­на Home Basic: Crunchbang
для раз­ви­ваю­щих­ся рын­ков. или Ubuntu.
Home Premium: Стан­дарт­ная Home Premium: Ра­ди ук­ра­ше­ний,
ре­дак­ция, вклю­ча­ет Aero и Touch. по­про­буй­те Mint или Kubuntu.
Professional: До­бав­лен уда­лен­ный Professional: Fedora и дру­гие
ра­бо­чий стол и шиф­ро­ва­ние пред­ла­га­ют шиф­ро­ва­ние
фай­ло­вой сис­те­мы. на эта­пе ус­та­нов­ки.
Enterprise: Под­держ­ка при­ло­же­ний Enterprise: SUSE дол­жен
Unix и кор­по­ра­тив­но­го ли­цен­зи­ сра­бо­тать­ся с Windows.
ро­ва­ния. Ultimate: Не­важ­но, ка­кой Linux
Ultimate: Как Professional, вы вы­бе­ре­те, ог­ра­ни­че­ний нет.
но для ча­ст­ных лиц. Да­же без па­ке­та Live Essentials, Windows те­перь под­дер­жи­ва­ет
биб­лио­те­ки изо­бра­же­ний с циф­ро­вых ка­мер!

24      Linux Format Сентябрь 2009


 Linux про­тив Windows 7

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


на­мно­го луч­ше.
Од­на­ко Windows Live Photo Gallery очень ско­ро­ст­ная, и это эф­
фек­тив­ный спо­соб пе­ренести фо­то­гра­фии с ва­шей ка­ме­ры в он­
лайн-ре­по­зи­то­рий за наи­мень­шее чис­ло щелч­ков мы­ши и цик­
лов CPU. Как и iPhoto, Digikam и F-Spot, она пред­ла­га­ет толь­ко
ба­зо­вые сред­ства ре­дак­ти­ро­вания: цвет, кон­траст, кад­ри­ро­вание
и уда­ление эф­фек­та «крас­ных глаз», од­на­ко есть до­сад­ные про-
колы с точ­ки зрения про­сто­ты ис­поль­зо­вания. На­при­мер, на изо­
бра­жения нель­зя на­ве­сить тэ­ги, и фо­то­гра­фии из биб­лио­те­ки
Pictures не им­пор­ти­ру­ют­ся в при­ло­жение, ес­ли они не рас­по­ло­же­
ны в ка­та­ло­ге My Pictures, что сби­ва­ет с тол­к у.

Он­лайн
Дру­гая неоче­вид­ная сто­ро­на но­вой ОС от Microsoft – уста­нов­
ка Silverlight по умол­чанию. Silverlight – это мо­д уль рас­ши­рения
к web-брау­зе­ру, а так­же по­пыт­ка Microsoft оспо­рить пер­вен­ство
Flash от Adobe, при тех же функ­ци­ях. Эта про­грам­ма по­мо­га­
ет web-раз­ра­бот­чи­кам соз­да­вать для поль­зо­ва­те­лей уско­рен­ные
и ин­те­рак­тив­ные он­лай­но­вые при­ло­жения, ко­то­рые не мо­жет по­
тя­нуть ста­рый HTML, на­при­мер, YouTube или BBC iPlayer, и пред­
став­ля­ет со­бой над­строй­к у над плат­фор­мой .NET, ис­поль­зуе­мой
как для раз­ра­бот­ки Silverlight, так и в ка­че­стве ме­то­да внесения
бизнес-ло­ги­ки в он­лай­но­вое при­ло­жение. Windows 7 бу­дет пер­вой
От­сут­ст­вие рек­ла­мы — луч­шее, что есть в кли­ен­те об­ме­на ОС Windows, где Silverlight ста­вит­ся по умол­чанию; вер­сия 3 бы­ла
мгно­вен­ны­ми со­об­ще­ния­ми Kopete (в от­ли­чие от Windows). вы­пу­ще­на в ию­ле.
Ин­те­рес­но, что Linux-вер­сия Silverlight, под на­званием
Управ­ление фо­то­гра­фия­ми Moonlight, раз­ра­ба­ты­ва­ет­ся той же коман­дой, что пор­ти­ро­ва­ла
Неваж­но чем вы поль­зуе­тесь, Digikam или F-Spot – в лю­бом .NET в Linux. Moonlight ох­ва­ты­ва­ет толь­ко часть воз­мож­но­стей,
слу­чае несо­мнен­но, что по части управ­ления фо­то­гра­фия­ми имею­щих­ся в Silverlight, но это неве­ро­ят­ная по­бе­да про­грам­ми­
поль­зо­ва­тель ра­бо­че­го сто­ла Linux обес­пе­чен луч­ше. Оба при­ стов. С ян­ва­ря 2009 он был пол­но­стью со­вместим с Silverlight
ло­жения понима­ют ши­ро­кий диа­па­зон циф­ро­вых ка­мер, по­ вер­сии 1.0; в его бе­та-вер­сии реа­ли­зо­ва­ны неко­то­рые функ­ции
зво­ля­ют ор­ганизо­вы­вать кол­лек­цию с по­мо­щью тэ­гов, ком­ из 2.0, а так­же кое-что из планируе­мо­го ре­ли­за 3.0.
мен­та­ри­ев и гео­гра­фи­че­ских дан­ных, а за­тем за­ли­вать це­лые Несо­мнен­но, что Moonlight на­хо­дит­ся да­ле­ко по­за­ди реа­ли­
ее раз­де­лы в он­лайн-ре­по­зи­то­рии фо­то­гра­фий. Для сравнения, за­ции Microsoft, но есть ку­да боль­шая про­бле­ма. Для неко­то­рых
пред­ло­жение от Microsoft ку­ поль­зо­ва­те­лей Moonlight пред­
да скромнее и слег­ка хро­ма­
ет, так как при пер­вом за­пуске
«Linux хо­ро­шо обес­пе­ став­ля­ет со­бой боль­шой ку­сок
ин­тел­лек­т у­а ль­ной соб­ствен­но­
при­хо­дит­ся за­хо­дить в ва­
шу учет­ную запись Windows
чен по час­ти управ­ле­ сти Microsoft, си­дя­щий по­сре­
ди ра­бо­че­го сто­ла Linux. Имен­
Live. Это из-за то­го, что ва­ ния фо­то­гра­фия­ми.» но по­это­му вклю­чение Mono
ша биб­лио­те­ка силь­но за­вя­ в ди­ст­ри­бу­ти­вы вро­де Fedora,
за­на на при­сут­с твие он­лайн. Фо­то­гра­фии мо­г ут пуб­ли­ко­вать­ а те­перь и Debian, вы­зва­ло ост­рые дискуссии, и ес­ли Silverlight ста-
ся в Windows Live одним щелч­ком, Flickr, Facebook и SmugMug нет глав­ной ча­стью плат­фор­мы Windows, как на­де­ет­ся Microsoft,
под­дер­жи­ва­ют­ся че­рез мо­д у­ли рас­ши­рения треть­и х лиц. Фо­то­ станет все сложнее иг­но­ри­ро­вать ее по­тен­ци­а л – как в Ин­тернете,
хостинг Picasa от Google крас­но­ре­чи­во от­сут­с тву­ет, но это, ско­ так и в ка­че­стве па­тент­ной бом­бы за­мед­лен­но­го дей­ствия.

Тронь ме­ня
Од­на из наи­бо­лее рек­ла­ми­руе­мых функ­ций но­вой ОС multi-touch уст­рой­ство под на­званием «Surface». До не-
Microsoft – воз­мож­ность управ­ления с сен­сор­но­го эк­ра­ давнего вре­мени функ­ция multi-touch не бы­ла при­ори­
на. Microsoft экс­пе­ри­мен­ти­ру­ет с сен­сор­ной тех­но­ло­ги­ей те­том для на­столь­ных Linux-систем, несмот­ря на ряд
уже мно­го лет; ее внедрение в Windows 7 бы­ло тща­тель­ но­во­стей по этой те­ме в 2007 го­д у. Спо­соб­ность стан­
но тести­ро­ва­но, улуч­ше­ны под­держ­ка обо­ру­до­вания дарт­ной ма­ши­ны от­сле­жи­вать бо­лее од­но­го кон­трол­
и спо­соб­ность рас­по­зна­вать при­косно­вение несколь­ких ле­ра бы­ла реа­ли­зо­ва­на в про­ек­те под на­званием Multi-
паль­цев. По­хо­же, сен­сор­ная панель бы­ла дви­ж у­щей си­ Pointer X (MPX), и его на­ра­бот­ки долж­ны быть сли­ты
лой ре­форм панели ин­ст­ру­мен­тов. В ста­ром во­пло­щении с ко­дом сер­ве­ра X.org вер­сии 7.5 в ав­г у­сте 2009. Од­на­ко
знач­ки бы­ли слиш­ком ма­лы, а их пе­ре­ме­щения­ми бы­ло ме­ж ­д у MPX и Surface от Microsoft есть од­но важ­ное раз­
слож­но управ­лять паль­ца­ми. В Windows 7 кноп­ки уве­ ли­чие – multi-touch да­ет толь­ко ко­ор­ди­нат­ную связь
ли­чи­лись, и воз­мож­ность раз­ме­щения поль­зо­ва­те­лем для ка­ж ­дой точ­ки. Он не мо­жет рас­по­знать фор­му
по­мо­га­ет достичь це­ли. Здесь так­же впер­вые вклю­че­на и раз­мер ка­сания, что мо­жет пре­вра­тить­ся в про­бле­му,
под­держ­ка несколь­ких ка­саний [multi-touch], а это для ес­ли Microsoft восполь­зу­ет­ся сво­им пре­иму­ще­ством.
ОС за­д а­ча по­сложнее, чем под­к лю­чение бо­лее чем од­ Са­мые мно­го­обе­щаю­щие при­зна­ки успе­ха идут от сек­
ной мы­ши: ведь паль­цев-то де­сять. Од­на­ко Microsoft по­ то­ра нетбу­ков, где воз­мож­но­сти сен­сор­ных панелей Ра­ди при­спо­соб­ле­ния к сен­сор­ным уст­ройствам
ло­жи­ла конец ри­то­ри­ке, про­де­мон­ст­ри­ро­вав уве­си­стое име­ют боль­шое бу­д у­щее. в Windows 7 по­ме­ня­ли раз­ме­ры шриф­тов и кно­пок.

Сентябрь 2009 Linux Format      25


Linux про­тив Windows 7

РАУНД 4 Опыт­ные поль­зо­ва­те­ли


По части тон­ко­го кон­тро­ля над систе­мой, по­бе­ди­тель бу­дет толь­ко один.

М
но­го лет од­ной из са­мых боль­ших пре­тен­зий к Windows ны из­бе­гать си­т уа­ции, когда поль­зо­ва­тель по­вы­ша­ет свои пол­но­
был недоста­ток раз­де­ления пол­но­мо­чий. Хо­тя в по­ мо­чия с по­мо­щью UAC, ес­ли они хо­те­ли, что­бы их про­грам­ма­ми
следних вер­си­ях име­лись учет­ные запи­си с раз­ны­ мож­но бы­ло поль­зо­вать­ся.
ми уров­ня­ми досту­па, прак­ти­че­ски все де­ла­ли се­бя ад­минист­ По умол­чанию стан­дарт­ный поль­зо­ва­тель не бу­дет иметь ад­
ра­то­ром и лов­ко об­хо­ди­ли по­пыт­ки ог­раничить пра­ва обыч­но­го минист­ра­тор­ско­го досту­па к систе­ме, как и все ви­ру­сы и троя­ны,
поль­зо­ва­те­ля. Windows 7 пы­та­ет­ся по­сту­пить по-дру­го­му, об­но­ ко­то­рых он неча­ян­но за­пустит. Конеч­но, для ли­нук­сои­дов в этом
вив User Access Control из Vista, что­бы, на­конец, Ин­тернет пе­ре­ ниче­го но­во­го нет: там груп­пы и раз­ре­шения ог­раничи­ва­ют поль­
ста­ли на­вод­нять ты­ся­чи зом­би-ком­пь­ю­те­ров под управ­лением ОС зо­ва­те­лей и про­цес­сы. Это на­ша глав­ная за­щи­та от ущерб­ных
от Microsoft. при­ло­жений, вре­д я­щих систе­ме. Да­же ес­ли учет­ная запись поль­
Идея, ле­жа­щая в осно­ве UAC, бу­дет при­выч­на для поль­зо­ва­ зо­ва­те­ля взло­ма­на и на его ра­бо­чем сто­ле люту­ет ви­рус, про­грам­
те­лей Ubuntu и OS X. Когда при­ло­жению необ­хо­дим бо­лее вы­ ма с ог­раничен­ны­ми воз­мож­но­стя­ми не смо­жет при­чинить боль­
со­кий уро­вень пол­но­мо­чий, за­про­счик па­ро­ля тре­бу­ет ау­тен­ти­ шо­го вре­да систе­ме и се­ти, хо­тя поль­зо­ва­тель­ские дан­ные мо­г ут
фи­ка­ции. В Windows Vista за­про­счик па­ро­ля вы­гля­дел не в ме­ру силь­но по­стра­дать. От­части имен­но по­это­му под Linux так ма­ло
усерд­ным, по­яв­ля­ясь ка­ж ­д ую ми­ну­т у, осо­бен­но при на­строй­ке ви­ру­сов, и ма­ло кто счи­та­ет их серь­ез­ной опас­но­стью.
обо­ру­до­вания. Эта непри­ят­ность рас­смат­ри­ва­лась неко­то­ры­ми
как пре­иму­ще­ство, по­сколь­к у раз­ра­бот­чи­ки ПО бы­ли вы­ну­ж ­де­ PolicyKit
Од­на­ко для средней на­столь­ной систе­мы на са­мом де­ле есть
User Access уг­ро­за со сто­ро­ны зло­на­ме­рен­но­го про­грам­ми­ста, при наличии
Control мо­жет у таково­го мо­ти­ва­ции. Раз­ве ма­ло на­ших поль­зо­ва­те­лей уста­
ог­ра­ни­чить об­зор нав­ли­ва­ют дво­ич­ные па­ке­ты треть­их лиц? А мно­гие ли мо­г ут
Ин­тер­не­та поль­
про­ве­рить ис­ход­ный код, ес­ли по­на­до­бит­ся? Еще боль­ший риск
зо­ва­те­лем,
а так­же дос­туп возника­ет, когда мы при­бе­га­ем к по­мо­щи sudo или за­пуска­ем
к на­строй­кам. обо­лоч­к у с ад­минист­ра­тор­ски­ми пол­но­мо­чия­ми, эф­фек­тив­но об­
хо­д я за­щи­т у, за­ло­жен­ную в систе­ме обыч­ный поль­зо­ва­тель/root.
Мно­гие ди­ст­ри­бу­ти­вы и раз­ра­бот­чи­ки ду­ма­ют, что ну­жен до­
полнитель­ный уро­вень за­щи­ты, и боль­ше все­го на UAC от Microsoft
по­хо­жа PolicyKit, из­на­чаль­но раз­ра­бо­тан­ная Red Hat, но те­перь
по­став­ляе­мая в стан­дарт­ной уста­нов­ке в Fedora, OpenSUSE
и Ubuntu. PolicyKit да­ет раз­ра­бот­чи­кам при­ло­жений (или ди­ст­ри­-
­бу­ти­вов) боль­шую сте­пень кон­тро­ля над тем, что доз­во­ле­но де­лать
при­ло­жению во вре­мя его ра­бо­ты, а что нет. На­при­мер, мож­но раз­
ре­шить поль­зо­ва­те­лю мон­ти­ро­вать съем­ное уст­рой­ство хранения
дан­ных, но не локаль­ную фай­ло­вую систе­му, пол­но­стью уст­ранив
по­тен­ци­а ль­ную опас­ность sudo. PolicyKit встро­ен в ре­лиз KDE 4.3,
PowerShell про­тив Bash то есть мно­гие про­грам­мы ад­минист­ри­ро­вания ра­бо­че­го сто­
ла KDE по­лу­чат воз­мож­ность тон­ко­го управ­ления при­ви­ле­гия­ми,
при­мер­но так же, как неко­то­рые при­ло­жения за­пра­ши­ва­ют ау­тен­
ти­фи­ка­цию в OS X. В Gnome та­кая воз­мож­ность име­ет­ся с кон­ца
про­шло­го го­да, и ее внедрение в KDE при­бли­жа­ет нас к унифи­ци­
ро­ван­но­му ра­бо­че­му сто­лу на Linux-плат­фор­ме и к унифи­ци­ро­ван­
ной систе­ме вы­полнения ад­минист­ра­тив­ных за­дач.

Он­лайн-безо­пас­ность
Несмот­ря на улуч­шения в User Access Control, Windows все еще
оста­ет­ся глав­ной ми­ше­нью для ха­ке­ров, и, зна­чит, про­вер­ка
на ви­ру­сы все­гда необ­хо­ди­ма. Впер­вые Microsoft на­ме­ре­на вклю­
чить в ОС ан­ти­ви­рус и оп­ре­де­ли­тель шпи­он­ско­го ПО. Это, ви­ди­
мо, вы­зо­вет силь­ный про­тест со сто­ро­ны ком­паний, про­из­во­д я­
щих по­доб­ные про­д ук­ты, на­при­мер, Symantec и McAfee, ведь
Windows 7 Linux они за­ра­ба­ты­ва­ют на хлеб с мас­лом на этой ды­ре в те­к у­щей за­
Встро­ен­ные скрип­ты. 30 лет усо­вер­шен­ст­во­ва­ний.
Для ото­бра­же­ния со­дер­жи­мо­го ка­ Ис­поль­зу­ет­ся поч­ти ка­ж­дым ди­ст­ щи­те Windows. Но для всех осталь­ных, на­стра­дав­ших­ся от по­
та­ло­га мож­но вве­сти ls! ри­бу­ти­вом Linux. сто­ян­ных атак со сто­ро­ны взло­ман­ных Windows-систем, вклю­
Под­свет­ка син­так­си­са. Ог­ром­ная до­ку­мен­та­ция и по­мощь чение бес­плат­ной про­грам­мы про­вер­ки на ви­ру­сы – боль­шой шаг
Уда­лен­ное вы­пол­не­ние. он­лайн.
Мо­жет при­ме­нять­ся для ад­ми­ни­ст­ впе­ред. Ре­шение от Microsoft бу­дет ча­стью за­гру­жае­мо­го па­ке­та
ри­ро­ва­ния всей сис­те­мы. ‘Security Essentials’, и она за­менит Windows Live OneCare, по­хо­жее
при­ло­жение, ко­то­рое ранее по­став­ля­лось под XP и Vista.

26      Linux Format Сентябрь 2009


 Linux про­тив Windows 7

Windows Server 2008


Windows 7 – не един­ст­вен­ная ОС, вы­пу­щен­ная во­ва­ний в Active Directory, на­ря­д у со встро­ен­ным
Microsoft в этом го­д у. В на­ча­ле го­да ком­па­ния анон­ ги­пер­ви­зо­ром для вир­т уа­ли­за­ции, под­дер­жи­ваю­
си­ро­ва­ла Windows Server 2008, и сей­час ра­бо­та­ет щим Xen. По­след­няя вер­сия Remote Desktop Protocol
над важ­ным об­нов­ле­ни­ем. Как и преж­ние вер­сии да­ет ку­да луч­шую про­из­во­ди­тель­ность для уда­лен­
вет­ки ‘Server’, эта ОС пред­на­зна­че­на для ра­бо­ты на но­го ра­бо­че­го сто­ла, чем бли­жай­ший Linux-ана­лог,
пе­ред­нем крае в ка­че­ст­ве web- или тер­ми­наль­но­го уда­лен­ный ра­бо­чий стол NX.
сер­ве­ра. Это вы­гля­дит стран­ной иде­ей, ведь Linux Windows Server 2008 со­б­ран на го­лом кар­ка­се,
уме­ет все сра­зу, но не стран­нее вы­бо­ра CentOS для без ус­та­нов­лен­но­го Windows Explorer, без Internet
web-сер­ве­ра и Fedora для на­столь­ной сис­те­мы, хо­тя, Explorer. Вся на­строй­ка про­из­во­дит­ся че­рез ко­манд­
ско­рее все­го, вы бу­де­те поль­зо­вать­ся те­ми же про­ ную стро­к у, и из раз­лич­ных ком­по­нент Server’а
грам­ма­ми. Так­же Windows Server 2008 яв­ля­ет­ся мож­но да­же со­брать Vista-по­доб­ный ра­бо­чий стол.
толь­ко 64-раз­ряд­ной. Это на­страи­вае­мая вер­сия Windows, пред­на­зна­чен­
С сер­вер­ной сто­ро­ны Windows Server 2008 пред­ ная быть за­щи­щен­ной, на­сколь­ко воз­мож­но. На жар­
став­ля­ет со­бой ку­да боль­шую уг­ро­зу для рос­та го­не ИТ-на­ро­да, у нее «мень­шая пло­щадь ми­ше­ни»,
Linux, чем ори­ен­ти­ро­ван­ная на на­столь­ные сис­те­мы Те­перь во­ин­ст­вую­щим си­сад­ми­нам на­мно­го и она соз­даст уг­ро­зу по­став­щи­кам Enterprise Linux,
Windows 7. Су­ще­ст­ву­ет мно­же­ст­во усо­вер­шен­ст­ лег­че от­клю­чать функ­ции в Windows 7. ко­зы­ряю­щим луч­шей за­щи­щен­но­стью по­след­не­го.

Microsoft осоз­на­ла не­об­хо­ди­мость пе­ре­хва­та ини­циа­ти­вы


и вклю­чи­ла про­вер­ку на ви­ру­сы в ОС.

Security Essentials от Microsoft да­ют толь­ко ба­зо­вую он­


лайн-безо­пас­ность: про­вер­ка на ви­ру­сы в ре­а ль­ном вре­мени,
монито­ринг систе­мы и сканиро­вание за­ка­чек. Это остав­ля­
ет ком­мер­че­ским ре­шениям мно­го места для за­вое­вания бо­лее PolicyKit да­ет поль­зо­ва­те­лям Fedora, OpenSUSE и Ubuntu пол­ный кон­троль над тем,
про­дви­ну­тых воз­мож­но­стей и нерв­ных поль­зо­ва­те­лей Windows. кто и что мо­жет де­лать в их сис­те­мах.
Нам, сто­ронникам Linux, не нуж­на про­вер­ка на ви­ру­сы, ес­ли
мы не по­лу­ча­ем фай­лы от поль­зо­ва­те­лей Windows, ли­бо не пе­ ПОБЕДА
ре­сы­ла­ем им. При этом для за­пуска сканера и под­дер­жания его Windows 7 про­тив Linux ЗА НАМ
в ак­т у­а ль­ном со­стоянии не рас­хо­ду­ют­ся ни цик­лы про­цес­со­ И
ра, ни до­полнитель­ная па­мять. Од­на­ко есть про­грам­мы, го­то­
вые прий­ти на по­мощь по пер­во­му зо­ву – на­при­мер, при­ло­жения Как вы мог­ли ви­деть из рас­смот­рен­ лее ин­но­ва­ци­он­ны и ме­нее ста­тич­ны. На­
от BitDefender и AVG, или бли­ста­тель­ный ClamAV. ных ха­рак­те­ри­стик, Windows 7 от­ме­че­на ши при­ло­же­ния мощ­нее, де­шев­ле и без
твер­дой от­мет­кой зре­ло­сти в раз­ра­бот­ под­во­хов, а безо­пас­ность Linux хо­ро­ша
ке Windows — имен­но это­го не хва­та­ло как ни­ко­гда. Но глав­ное, мы са­ми мо­жем
Vista три го­да на­зад. Ин­но­ва­ций ма­ло­ва­ кон­тро­ли­ро­вать бу­ду­щее Linux, и его ус­
то, за­то есть улуч­ше­ния в ста­биль­но­сти пе­хи и не­уда­чи — в на­ших ру­ках.
и про­из­во­ди­тель­но­сти сис­те­мы, что важ­
но для мно­гих поль­зо­ва­те­лей. А боль­
шин­ст­во поль­зо­ва­те­лей Windows — биз­
нес­ме­ны. Им не­ин­те­рес­ны ук­ра­ше­ния,
ин­те­гра­ция с Twitter и ап­па­рат­ные ус­ко­
ре­ния. Им нуж­на трез­вая ра­бо­чая сре­да,
не встаю­щая лю­дям по­пе­рек до­ро­ги.
И здесь-то Linux и мо­жет от­ли­чить­
ся. В Windows 7 нет ни­че­го, что не умел
бы де­лать Linux, а за­час­т ую он де­ла­ет
это луч­ше. Ком­пь­ю­те­ры с Linux бы­ст­рее
Сред­ний бранд­мау­эр в Linux го­раз­до дос­туп­нее и эф­фек­тив­нее. На­ши ра­бо­чие сто­лы бо­
для поль­зо­ва­те­лей, чем его эк­ви­ва­лент в Windows 7.

Сентябрь 2009 Linux Format      27


Вол­шеб­ник web Соз­да­тель PHP Рас­мус
Лер­дорф рас­ска­зы­ва­ет
о том, как его язык столь
стре­ми­тель­но об­рел
ми­ро­вую сла­ву,
и о том, что он вынес
из кон­ку­рент­ной борь­бы...

Рас­мус Лер­дорф [Rasmus Lerdorf], несо­ сать­ся на него, про­чи­тать его, по­местить в него со­об­щение,
мнен­но, самый зна­менитый из ны- и я все­гда на­стаи­ваю на том, что­бы весь про­цесс по­сто­ян­но был
Интервью не жи­ву­щих грен­ланд­ских ком­пь­ю­тер­ про­зрач­ным. Лю­бой мо­жет про­смот­реть ар­хи­вы спи­ска рас­сыл­
ных гениев. Соз­дав PHP в ви­де на­бо­ра ки и уз­нать, как мы при­шли к то­му или ино­му ре­зуль­та­т у.
скрип­тов-ха­ков для под­держ­ки сво­ Ну, а по­бе­ж ­да­ет код. Ес­ли спо­рят две груп­пы, но в од­ной есть
его же сай­та в 1995 го­ду, он пре­вра­тил реа­ли­за­ция, а в дру­гой нет, то по­бе­ж ­да­ет реа­ли­за­ция. И поч­
его в мощ­ный и пол­но­функ­цио­наль­ный ти неваж­но, на­сколь­ко она страш­ная: ес­ли нам нуж­на функ­ция,
язык, ко­то­рым поль­зу­ют­ся мил­лио­ны. Мы из­ло­ви­ли его, что­бы но мы не мо­жем прий­ти к со­гла­сию по ее реа­ли­за­ции, то при­мем
уз­нать, ка­кое ме­сто он занима­ет в ла­ге­ре PHP се­го­дня, и о том, лю­бо­го, кто бы ее ни вы­полнил.
ка­кие из при­ня­тых им ранее ре­шений при­ве­ли к столь по­тря­саю­
ще­му успе­х у. LXF: Да­вит ли на вас необ­хо­ди­мость быть окон­ча­тель­ным
ар­бит­ром?
Linux Format: На­сколь­ко ак­тив­но вы сей­час занимае­тесь РЛ: Еще как. Я все­гда ста­рал­ся све­сти эту роль к миниму­му,
раз­ра­бот­кой PHP? по­то­му что мне не хо­чет­ся, что­бы в боль­шин­стве слу­ча­ев по­
Рас­мус Лер­дорф: На­мно­го менее ак­тив­но, чем 10 или 15 лет следнее сло­во бы­ло мо­им. Я хо­чу, что­бы про­ект был са­мо­
на­зад, это точ­но. Но я по-прежнему еже­днев­но чи­таю спи­ски доста­точ­ным, и мне нуж­но, что­бы он дви­гал­ся сам. Ес­ли мне
рас­сыл­ки и пе­рио­ди­че­ски об­су­ж ­даю функ­ции и ис­прав­ляю при­хо­дит­ся принимать ка­ж ­дое ре­шение, струк­т у­ра ста­но­вит­ся
ошиб­ки. Лич­но ме­ня боль­ше ин­те­ре­су­ют про­бле­мы безо­пас­ немас­шта­би­руе­мой.
но­сти и про­из­во­ди­тель­но­сти. Ими я занима­юсь так же ак­тив­но, Че­с т­но го­во­ря, о мно­гих ве­щ ах я знаю недоста­точ­но. Возь­
как и пре­ж ­де. мем, на­при­мер, Sybase. Я в жизни им не поль­зо­вал­ся. И как
я мо­г у при­нять ра­зум­ное ре­шение за ис­поль­зо­вание од­но­го
LXF: А ка­ко­ва струк­т у­ра коман­ды PHP? Как-то не очень она и про­тив ис­поль­зо­вания дру­го­го с рас­ши­рением Sybase? И для
по­нят­на... мно­гих ве­щей в PHP де­ло имен­но так и об­с то­ит. Есть груп­пы лю­
РЛ: Нет ника­кой струк­т у­ры! дей, ко­то­рые спра­вят­ся с при­ня­ти­ем та­ких ре­шений на­мно­го
луч­ше ме­ня.
LXF: Кто же принима­ет окон­ча­тель­ные ре­шения?
РЛ: Мы. У нас есть спи­сок рас­сыл­ки под на­званием Internals LXF: Это и за­тор­мо­зи­ло раз­ра­бот­к у PHP 6? Она про­дол­жа­ет­ся
[Внут­ренние де­ла], и он аб­со­лют­но от­крыт – лю­бой мо­жет подпи­ уже два с по­ло­ви­ной го­да...

28      Linux Format Сентябрь 2009


 Рас­мус Лер­дорф Ин­тер­вью

РЛ: Сей­час все на­мно­го сложнее. Я занимал­ся этим в 1993–


95 го­дах, и тогда да­же не су­ще­ство­ва­ло тер­ми­на «от­кры­тый
код». Это бы­ла со­вер­шен­но но­вая об­ласть, и все, кто де­лал
что-то ин­те­рес­ное, уже вы­де­ля­лись. А сей­час так мно­го лю­дей,
и все они вы­ка­ты­ва­ют что-то но­вое; по­ра­зи­тель­но, что они спо­
соб­ны под­нять­ся и воз­вы­сить­ся над всей шу­ми­хой и над вся­ки­
ми кру­ты­ми ве­ща­ми.
Ду­маю, глав­ное, что я мо­г у ска­зать – вы­п усти­те из рук кон­
троль. Ес­ли вы хо­т и­те соз­д ать про­ект с от­к ры­т ым ко­дом, нель­
зя по­зво­лять ва­ше­м у эго пре­г ра­ж ­д ать про­ек­т у путь. Вы не мо­
же­те пе­репи­сы­вать за­п лат­к и за все­ми, вы не мо­же­те за все­ми
уга­ды­вать, и вам на­до пре­доста­вить всем кон­т роль в рав­ной
сте­пени.

LXF: А у вас был по­доб­ный мо­мент?


РЛ: Оп­ре­де­лен­но был – в 1997: прак­ти­че­ски дош­ло до то­го, что
Рас­мус ве­рит, что в здо­ро­вом про­ек­те с от­кры­тым ко­дом долж­но я чуть не убил весь про­ект, по­то­му что он стре­ми­тель­но раз­ви­
быть раз­де­ле­ние вла­стей, а не еди­но­лич­ный ли­дер. вал­ся, и мой поч­то­вый ящик ло­пал­ся от пред­ло­жений, жа­лоб,
за­пла­ток. До это­го я всем занимал­ся сам. Кто-то при­сы­лал мне
РЛ: Раз­ра­бот­к у 6 тор­мо­зит от­нюдь не при­ня­тие ре­шений, а по­ пред­ло­жения, за­плат­ки, и я пе­репи­сы­вал их так, как счи­тал пра­
иск спо­соб­ных лю­дей, ин­те­ре­сую­щих­ся Unicode-ори­ен­ти­ро­ван­ виль­ным. Я не со­гла­шал­ся с людь­ми, обо всем спо­рил, и про­сто
ным про­грам­ми­ро­ванием. Это труд­но – Unicode шту­ка непро­ уже не справ­лял­ся.
стая. Там мно­го вся­ких тон­ко­стей, а мно­же­ству лю­дей на них Я был на грани сры­ва, и ме­ня уже тошнило от все­го это­
пле­вать. С точ­ки зрения круп­но­го бизнеса, Unicode ну­жен всем, го [, я ду­мал]: «По­че­му они во­об­ра­жа­ют, что я бу­д у ис­прав­лять
но с сию­ми­нут­ной точ­ки зрения, есть мно­го лю­дей, ко­то­рые их код? Они мне за это не пла­тят. Ка­ко­го чер­та я вка­лы­ваю
без него обой­дут­ся, по­сколь­к у вы­пол­ня­ют раз­ра­бот­ки для сво­ за этих ти­пов? Я их да­же не знаю. Что во­об­ще про­ис­хо­дит?»
ей язы­ко­вой лока­ли. Вот тут и на­стал мо­мент, когда я ска­зал: «По­ра это ме­нять.
Тео­ре­ти­че­ски, все хо­тят в ито­ге пе­рей­ти на UTF-8. На­до дать тем, кто при­сы­лал за­ме­чания несколь­ко лет, доступ
Но это план из раз­ря­да «как-нибудь по­том на­до этим за­нять­ к ко­д у. Ты, па­рень, го­да­ми жа­ло­вал­ся на рас­ши­рение Oracle,
ся». В нем нет та­кой сроч­но­сти, как во мно­гих дру­гих функ­ци­ях плешь мне про­ел, вот и зай­мись-ка им сам, при­ятель. Все жа­ло­
PHP. Как толь­ко кто-то ска­жет: «Мне она нуж­на немед­лен­но», то­ бы, свя­зан­ные с Oracle, пря­ми­ком бу­д ут от­прав­лять­ся те­бе».
гда и пой­дут сдви­ги. Раз­ра­бот­чи­ки от­ве­ча­ют за это в сво­их дей­ И это ре­а ль­но во­оду­ше­ви­ло на­род. Когда они ощу­ти­ли, что те­
стви­ях, на сво­их ра­бо­чих местах, в сво­их ком­паниях. Но в РНР 6 перь ку­со­чек PHP стал их соб­ствен­но­стью, они из­менили так­ти­
это­го прак­ти­че­ски нет. По боль­шей части про­дви­жение про­ис­ ку – при­ня­лись его за­щи­щать, вме­сто то­го, что­бы жа­ло­вать­ся мне
хо­дит в круп­ных ком­паниях, ведь имен­но они за­ин­те­ре­со­ва­ны на про­бле­мы. Ока­зав­шись вла­дель­ца­ми, по­лу­чив власть, они сме-
в ин­тер­на­цио­на­ли­за­ции. нили всю ат­мо­сфе­ру. И во­об­ще все ста­ло ку­да ве­се­лее: я боль­ше
не один про­тив все­го ми­ра; те­перь у нас есть объ­е­динен­ные уси­
LXF: Ка­кие язы­ки вдох­но­ви­ли вас на раз­ра­бот­к у PHP? лия всей коман­ды.
РЛ: C и Perl. Имен­но эти язы­ки я тогда ис­поль­зо­вал. Из­на­чаль­
но я не пы­тал­ся соз­дать но­вый язык, мне про­сто ну­жен был спо­ LXF: Вы сле­ди­те за дру­ги­ми язы­ка­ми, на­при­мер, за Ruby?
соб ис­поль­зо­вать то, что я знал, для ре­шения про­бле­мы в рам­ РЛ: Я ду­маю, в по­следнее вре­мя [Ruby on] Rails немно­го за­
ках web-сер­ве­ра.. Мне не нуж­но бы­ло мно­гое из то­го, что бы­ло тух. Но­вая вер­сия, ко­то­рую они пред­ла­га­ют – ну, та, ко­то­рая
в Perl, и не нуж­на бы­ла вся эта суе­та с управ­лением па­мя­тью в С, дей­стви­тель­но бы­ст­рая [сме­ет­ся] – воз­мож­но, она бу­дет ин­
а бы­ла нуж­на уре­зан­ная вер­ те­рес­на. Од­на­ко у них есть
сия С, но не вполне Perl, ко­ O РУ­КО­ВО­ДСТВЕ ПРО­ЕК­ТОМ про­бле­мы с про­из­во­ди­тель­
то­рую я мог взять и на­це­лить
на мою за­да­чу.
«Глав­ное, что я мо­гу но­стью, со скаф­фол­дин­
гом [scaffolding] и про­чим,
Позднее язы­ка­ми, к ко­то­
рым мы об­ра­ти­лись в по­исках
ска­зать – вы­пус­ти­те и они осоз­на­ли это, и но­
вая ком­по­нов­ка бу­дет
то­го, что нуж­но сде­лать в на­ из рук кон­троль.» луч­ше.
шем объ­ект­но-ори­ен­ти­ро­ван­ Но я никогда
ном ко­де, ста­ли �������������������������������������������������
C������������������������������������������������
++ и Java���������������������������������������
�������������������������������������������
. Но это бы­ли уже дру­гие лю­ди. Я ни- не был сто­ронником генери­ро­вания ко­да – че­ст­но го­
когда не был боль­шим фа­на­том ООП – про­сто ис­поль­зо­вал его по во­ря, это про­сто пе­ре­соз­дание уже соз­дан­ных при­ло­
ме­ре на­доб­но­сти. Есть у ме­ня объ­ект, со­дер­жа­щий дан­ные, и есть жений. Ну, а скаф­фол­динг – да, на эк­ране непло­хо смот­
ме­то­ды для манипу­ля­ции ими – ну и от­лич­но. Но я никогда не был рит­ся, но по жизни я в нем не за­ин­те­ре­со­ван. И по-мо­ему,
сто­ронником сплош­но­го ООП. Ме­ня вполне уст­раи­ва­ет про­це­ мно­гие при­шли к то­му же вы­во­д у: «Да, скаф­фол­динг – это
дур­ный код, и web – это про­бле­ма нис­хо­д я­ще­го ти­па. Для ме­ня кру­то, но нам нуж­но нечто ре­а ль­ное».
име­ет смысл, что вот есть HTML, и вы вки­ды­вае­те пач­к у HTML, Ruby как язык – от­лич­ная шту­ка, я счи­таю его по-на­стоя­ще­
по­том вы­зы­вае­те функ­цию, что­бы что-то сде­лать, а по­том вы­зы­ му по­нят­ным и хо­ро­шим ин­ст­ру­мен­том. И не так уж мно­
вае­те дру­г ую функ­цию. Да, мож­но иметь объ­ект ба­зы дан­ных где- го лю­дей, ко­то­рые хо­ро­шо его зна­ют. Мно­гие при­шли
то за сце­ной, но я тер­петь не мо­г у та­кие ве­щи, как объ­ект HTML к Ruby on Rails, по­то­му что их за­во­ро­жил де­мо-ро­лик
с при­менением ме­то­да BR. и вот это «эй, вы смо­же­те соз­дать при­ло­жение все­
го за 10 се­к унд». Но как толь­ко им по­на­до­би­лось сде­
LXF: Что бы вы по­со­ве­то­ва­ли дру­гим раз­ра­бот­чи­кам по части лать что-то на­стоя­щее, они и спо­хва­ти­лись: «О черт,
соз­дания че­го-то зна­чи­тель­но­го? я не слиш­ком-то хо­ро­шо знаю Ruby!»

Сентябрь 2009 Linux Format      29


OpenSolaris

OpenSolaris:
По­про­буй­те дру­гой Unix
Дос­тиг­ли вер­шин мас­тер­ст­ва в Linux? Этим у нас не­муд­ре­но
блес­нуть – ис­тин­ные ха­ке­ры, та­кие как Ан­д­рей Со­ко­лов,
поль­зу­ют­ся на­стоя­щим Unix.
OpenSolaris

В
оз­мож­ность при­менения сер­вер­ной ОС в до­машних усло­ ав­то­ма­ти­че­ски. Ес­ли у вас на дис- 2009.06 x86
Об­раз CentOS
ви­ях очень важ­на для ее про­дви­жения. Уста­но­вив Solaris ке есть Linux, ско­пи­руй­те его файл для ти­пи­зи­ро­ван­ной
на лич­ный ком­пь­ю­тер или но­у т­бук, про­грам­ми­сты и ад­ /boot/grub/menu.lst в безо­пас­ное ме­ Linux-зо­ны
минист­ра­то­ры мо­г ут при­вык­нуть к нему и изу­чить его в луч­шем сто и до­бавь­те со­от­вет­ствую­щие
ви­де. Вот по­че­му Sun про­дви­га­ет OpenSolaris. запи­си в /rpool/boot/grub/menu.lst
Для уста­нов­ки OpenSolaris 2009.06 на x86‑й ПК необ­хо­ди­мо фай­ло­вой систе­мы Solaris по­с ле за­вер­шения уста­нов­к и.
Наш как минимум 512 МБ опе­ра­тив­ной па­мя­ти (же­ла­тель­но – не менее От­ра­бо­тав, ин­стал­ля­тор пред­ло­жит пе­ре­за­гру­зить ком­пь­
эксперт 1 ГБ) и 3–3,5 ГБ места на же­ст­ком диске, в за­ви­си­мо­сти от объ­е­ма ю­тер. Пер­вый за­пуск OpenSolaris вы­пол­ня­ет­ся немно­го доль­ше
Ан­д­рей Со­ко­лов ОЗУ. Уста­нов­ка вы­пол­ня­ет­ся с LiveCD, ко­то­рый мож­но бес­плат­но обыч­но­го, так как в это вре­мя на­страи­ва­ют­ся уст­рой­ства и сер­ви­
Ор­га­ни­за­тор и ли­ по­лу­чить по поч­те (oscd.sun.com) или ска­чать с www.opensolaris. сы и генери­ру­ют­ся клю­че­вые па­ры.
дер со­об­ще­ст­ com/get; вы так­же най­де­те об­раз на LXFDVD.
ва поль­зо­ва­те­лей
OpenSolaris го­ро­
Пер­вые ша­ги
да Ки­ро­ва с 2007 При­го­тов­ления По­с ле вхо­д а в све­жеуста­нов­лен­н ую систе­м у вы уви­д и­т е
го­д а. При за­груз­ке с LiveCD вам бу­дет пред­ло­же­но ука­зать локаль все тот же Gnome и стан­дарт­ный на­бор ПО: web-брау­зер
(в 2009.06 их 21) и расклад­к у кла­виа­т у­ры (43). В обо­их слу­ча­ях Firefox, кли­ен­т ы элек­т рон­ной поч­т ы Thunderbird и Evolution,
мож­но вы­брать русскую; пе­ре­к лю­чение раскла­док про­из­во­дит­ся ин­тернет-пейджер Pidgin (под­дер­ж и­в а­ю т­с я ICQ/Jabber/IRC
на­жа­ти­ем Ctrl+Shift. Ес­ли же вы планируе­те не толь­ко по­смот­реть, и про­чие), про­стой тек­сто­вый ре­дак­тор с под­свет­кой син­
но и уста­но­вить OpenSolaris на же­ст­кий диск, оставь­те анг­лий­ так­си­са GEdit, про­иг­ры­ва­те­ли Totem и Rhythmbox, со­б­ран­ные
скую расклад­к у, ина­че при пер­вом стар­те вы не смо­же­те вве­сти на осно­ве GStreamer (см. стр. 16), про­смотр­щик изо­бра­жений
ре­к­ви­зи­ты ла­тин­ски­ми бу­к­ва­ми: ваш вы­бор здесь влия­ет на па­ра­ и фо­то­а ль­бом gThumb, Evince для чтения PDF и PostScript и т. д.
мет­ры уста­нов­лен­ной систе­мы, но пе­ре­к лю­чение раскла­док в ней В ка­че­стве фай­ло­вой систе­мы OpenSolaris ис­поль­зу­ет ZFS,
ав­то­ма­ти­че­ски не на­страи­ва­ет­ся. ко­то­рая об­ла­да­ет мас­сой ин­те­рес­ных воз­мож­но­стей. Мы оста­­-
По­сле за­груз­ки с LiveCD на эк­ране поя­вит­ся Gnome. На ра­бо­ но­вим­ся на двух: сним­к ах (snapshots) и сжа­т ии.
чем сто­ле при­сут­ству­ет яр­лык про­грам­мы Device Driver Utility, со­ Снимок пред­став­ля­ет со­бой ко­пию фай­ло­вой систе­мы,
Device Driver Utility
лю­без­но со­об­щит, об­щаю­щей, ка­кое обо­ру­до­вание под­дер­жи­ва­ет­ся систе­мой «из ко­ доступ­ную толь­ко для чтения. Его соз­дание про­ис­хо­дит поч­
ка­кое обо­ру­до­ва­ние роб­ки», а для ка­ко­го при­дет­ся по­искать драй­ве­ры. При уста­нов­ке ти мгно­вен­но, а ме­сто на диске он на­чи­на­ет занимать толь­ко
по­тре­бу­ет до­пол­ OpenSolaris 2009.06 на три ком­пь­ю­те­ра осо­бых про­блем с обо­ при из­менении ис­ход­ной ФС (по су­ти, со­хра­ня­ют­ся раз­ли­чия ме­
ни­тель­ной на­строй­ ру­до­ванием не возник­ло, но на од­ном не оп­ре­де­ли­лась зву­ко­ ж­д у сним­ком и ее те­к у­щим со­стоянием). Доступ к фай­лам в сним­
ки. В дан­ном слу­чае вая кар­та, а на вто­ром – се­те­вая. Ниже мы по­ка­жем, как до­ба­вить ках осу­ще­ств­ля­ет­ся из ка­та­ло­га .zfs/snapshot в корне фай­ло­вой
не рас­по­зна­лась
их драй­ве­ры вруч­ную. На треть­ем, са­мом со­вре­мен­ном ПК, бы­ли систе­мы ZFS. Мож­но сде­лать от­кат к со­стоянию, за­фик­си­ро­ван­
зву­ко­вая кар­та.
опо­зна­ны все уст­рой­ства. но­му в сним­ке, или восста­но­вить из него от­дель­ные фай­лы.
Для уста­нов­ки тре­бу­ет­ся Рас­смот­рим для при­ме­ра соз­дание сним­ка до­машнего
два­ж ­ды щелк­нуть по яр­лы­ ка­та­ло­га. Для на­ча­ла вы­ясним имя фай­ло­вой систе­
ку Уста­но­вить OpenSolaris. Ин­ мы, смон­ти­ро­ван­ной на него, коман­дой zfs list. В мо­ем слу­
стал­ля­тор вы­гля­дит так же, как чае это rpool/export/home/keremet. Для соз­д ания сним­к а
и во всех пре­ды­д у­щих вер­ с именем monday вве­ди­те
си­ях. Про­це­д у­ра про­хо­дит #pfexec zfs snapshot rpool/export/home/keremet@monday
в че­ты­ре эта­па (см. врез­к у Шаг (см. стр. 33). В ре­зуль­та­те сни­мок бу­дет смон­ти­ро­ван на ка­та­лог
за ша­гом ниже). Уста­нов­щик /export/home/keremet/.zfs/snapshot/monday/. По­же­лав от­ка­тить­ся
ра­бо­та­ет око­ло 40 ми­нут, по­ к не­му, про­сто на­бе­ри­те:
пут­но де­мон­ст­ри­руя слай­ды, #pfexec zfs rollback rpool/export/home/keremet@monday
по­яс­няю­щие основ­ные воз­ Для уда­ле­ния сним­ка слу­жит ко­ман­да
мож­но­сти OpenSolaris. #pfexec zfs destroy rpool/export/home/keremet@monday
Имею­щая­ся ОС Windows Что­бы де­лать сним­ки не все­го до­маш­не­го ка­та­ло­га, а толь­ко
рас­по­зна­ет­ся ин­стал­ля­то­ром его час­ти, мож­но соз­дать в пу­ле ZFS до­пол­ни­тель­ную фай­ло­вую
и по­ме­ща­ет­ся в ме­ню Grub сис­те­му. Счи­тая, что она бу­дет на­зы­вать­ся test, ско­ман­дуй­те:

30      Linux Format Сентябрь 2009


 OpenSolaris

#pfexec zfs create rpool/export/home/keremet/test драй­ве­ры, на­хо­дит­ся по ад­ре­су http://www.sun.com/bigadmin/hcl,


В ре­зуль­та­те соз­дан­ная ФС бу­дет смон­ти­ро­ва­на на ка­та­лог но в мо­ем слу­чае ссыл­ка в HCL ока­за­лась не­ра­бо­чей. Про­бле­ма
/export/home/keremet/test, вла­дель­цем ко­то­ро­го яв­ля­ет­ся root. ре­ши­лась ус­та­нов­кой Open Sound System (OSS): в Linux эта зву­ко­
Ис­пра­вим это: вая под­сис­те­ма при­зна­на ус­та­рев­шей и за­ме­не­на ALSA, но в дру­
#pfexec chown keremet:staff /export/home/keremet/test гих Unix это не так. Я про­сто ска­чал с www.opensound.com па­кет
Ко­ман­да zfs list по­ка­зы­ва­ет, что но­вая фай­ло­вая сис­те­ма за­ фор­ма­та SVR4 (Solaris 10/11 x86/AMD64) и ус­та­но­вил его ко­ман­
ни­ма­ет 18 KБ. По умол­ча­нию сжа­тие на ней вы­к лю­че­но. Для про­ дой pfexec pkgadd -d oss-solaris-v4.1-1052-i386.pkg. По­сле это­го
вер­ки ско­пи­ру­ем в ка­та­лог test файл в фор­ма­те BMP, со­дер­жа­щий по­тре­бо­ва­лось пе­ре­за­гру­зить­ся. Тес­ти­ро­ва­ние зву­ко­вой кар­ты
чер­ный пря­мо­уголь­ник раз­ме­ром 3072×2304 – ее раз­мер уве­ли­ вы­пол­ня­ет­ся ко­ман­дой osstest, вы­даю­щей звук сна­ча­ла на ле­вую
чит­ся до 27,1 МБ. Уда­лим его и вклю­чим сжа­тие: ко­лон­к у, по­том на пра­вую, за­тем на обе.
#pfexec zfs set compression=on rpool/export/home/keremet/test Ана­ло­гич­но, с ис­поль­зо­ва­ни­ем HCL, ре­ши­лась про­бле­ма
По­сле по­втор­но­го ко­пи­ро­ва­ния ри­сун­ка раз­мер ФС ста­нет рав­ с се­те­вой кар­той. До­пол­ни­тель­но мож­но по­се­тить сайт http://
ным 1,82 МБ. Вклю­чать и вы­к лю­чать сжа­тие мож­но в лю­бой мо­ homepage2.nifty.com/mrym3/taiyodo/eng/, со­дер­жа­щий боль­шую
мент, что очень удоб­но: од­ни фай­лы (текст и т. п.) мож­но упа­ко­вы­ кол­лек­цию драй­ве­ров се­те­вых карт для Solaris.
вать, за­пи­сы­вая их при вклю­чен­ном сжа­тии, а дру­гие (JPG, MP3, На­чав ра­бо­т у, рус­скоя­зыч­ный поль­зо­ва­тель сра­зу же об­ра­
AVI) – ос­тав­лять как есть. тит вни­ма­ние на то, что не­ко­то­рые сим­во­лы вво­д ят­ся не так, как
изо­бра­же­но на кла­виа­т у­ре. На­при­мер, за­пя­тая в рус­ской рас­
Уст­ра­ним не­дос­тат­ки клад­ке – Shift+6, а бу­к­вы «Ё» во­об­ще нет. В ка­че­с т­ве ре­ше­ния
Да, имен­но так. Пре­ж ­де все­го, сле­ду­ет най­ти и ус­та­но­вить не­ пред­ла­га­ет­ся на­с тро­ить X.org и от­к лю­чить IIIM (Internet/Intranet
дос­таю­щие драй­ве­ра. Нач­нем с иден­ти­фи­ка­ции «про­блем­но­го» Input Method).
обо­ру­до­ва­ния. Это мож­но сде­лать ко­ман­дой pfexec /usr/X11/ Что­бы соз­дать кон­фи­г у­ра­ци­он­ный файл X.org, сле­д у­ет сна­ча­
bin/scanpci, вы­во­д я­щей ин­фор­ма­цию обо всех PCI-уст­рой­ст­вах. ла ос­та­но­вить сер­вер. Для это­го вы­к лю­чи­те сер­вис GDM:
Вот что она со­об­ща­ет о мо­ей ау­дио­кар­те: #pfexec svcadm disable gdm
pci bus 0x0000 cardnum 0x07 function 0x05: vendor 0x1106 Да­лее, из кон­со­ли, за­пус­ти­те Xorg -configure и ско­пи­руй­те по­
device 0x3058 лу­чен­ный файл на его за­кон­ное ме­сто. За­тем мож­но вер­нуть­ся
VIA Technologies, Inc. VT82C686 AC97 Audio Controller в гра­фи­к у:
Пол­ный спи­сок под­дер­жи­вае­мо­го обо­ру­до­ва­ния (Hardware #pfexec /usr/X11/bin/Xorg -configure
Compatibility List) со ссыл­ка­ми на сай­ты, от­к у­да мож­но ска­чать #pfexec cp xorg.conf.new /etc/X11/xorg.conf

Шаг за шагом: Ус­та­нав­ли­ва­ем OpenSolaris 2009.06

1 Диск 2 Ча­со­вой по­яс


Вы­бе­ри­те раз­дел для ус­та­нов­ки OpenSolaris или соз­дай­те та­ко­вой. Дос­т уп­ные дис­ки Здесь ука­зы­ва­ют­ся ча­со­вой по­яс, да­та и вре­мя. В верх­ней час­ти па­не­ли ото­бра­жа­ет­
и их раз­ме­ры в ГБ пе­ре­чис­ле­ны в верх­ней час­ти ок­на. Пе­ре­к лю­ча­тель ус­та­нав­ли­ва­ет­ся ся кар­та ми­ра, на ко­то­рой от­ме­че­ны круп­ные го­ро­да; вни­зу рас­по­ло­же­ны вы­па­д аю­
в од­но из по­ло­же­ний: Ис­поль­зо­вать весь диск или Раз­дел дис­ка; су­ще­ст­вую­щие пер­ щие спи­ски. Ча­со­вой по­яс мож­но вы­брать с по­мо­щью кар­ты щелч­ком по го­ро­д у, или
вич­ные раз­де­лы ото­бра­жа­ют­ся ни­же. Для вы­бо­ра раз­де­ла на­до ука­зать пункт ‘Solaris’ из вы­па­даю­щих спи­сков (ре­гио­нов, стран и ча­со­вых поя­сов). Со­дер­жи­мое ка­ж ­до­го
в вы­па­даю­щем спи­ске сле­ва: ус­та­нов­щик соз­даст на нем пул ZFS и об­ласть под­кач­ки. спи­ска оп­ре­де­ля­ет­ся вы­бо­ром в пре­ды­д у­щем.
Не за­будь­те со­хра­нить все важ­ные дан­ные!

3 На­цио­наль­ная на­строй­ка 4 Поль­зо­ва­те­ли


На дан­ном ша­ге ус­та­нав­ли­ва­ет­ся сис­тем­ная ло­каль – те­к у­щий (вы­бран­ный при стар­ Вве­ди­те па­роль су­пер­поль­зо­ва­те­ля-root, а так­же ре­а ль­ное и ре­ги­ст­ра­ци­он­ное име­на
те LiveCD) ва­ри­ант бу­дет от­ме­чен по умол­ча­нию. Ин­стал­ли­ро­вав OpenSolaris, вы смо­ обыч­но­го поль­зо­ва­те­ля и его па­роль. Вы так­же мо­же­те из­ме­нить здесь имя ком­пь­ю­
же­те из­ме­нить дан­ную на­строй­к у в лю­бое вре­мя и для кон­крет­но­го се­ан­са: дос­та­точ­ те­ра. Толь­ко не за­будь­те ука­зан­ные ва­ми ре­к­ви­зи­ты!
но на­жать кноп­к у Па­ра­мет­ры в диа­ло­го­вом ок­не вхо­да в сис­те­му.

Сентябрь 2009 Linux Format      31


OpenSolaris

#pfexec svcadm enable gdm


От­крой­те кон­фи­г у­ра­ци­он­ный файл X.org
#pfexec gedit /etc/X11/xorg.conf
и от­ре­дак­ти­руй­те сек­цию InputDevice, от­но­ся­щ ую­ся к кла­виа­т у­ре,
до­пи­сав в нее сле­д ую­щие стро­ки (LXF117):
Section “InputDevice”
...
Option “CoreKeyboard”
Option “XkbRules” “xorg”
Option “XkbModel” “pc105”
Option “XkbLayout” “us,ru(winkeys)”
Option “XkbOptions” “grp:ctrl_shift_toggle,grp_led:scroll”
EndSection
Что­бы до­ба­вить под­держ­к у бу­к­вы «Ё», по­тре­бу­ет­ся от­ре­дак­
ти­ро­вать раз­дел xkb_symbols “winkeys” в фай­ле /usr/X11/lib/X11/
xkb/symbols/pc/ru. Пред­ва­ри­тель­но его нуж­но сде­лать дос­т уп­ным Дис­пет­чер па­ке­тов бе­рет на се­бя всю чер­ную ра­бо­ту
для за­пи­си: по ус­та­нов­ке и уда­ле­нию ПО в OpenSolaris.
#pfexec chmod a+w /usr/X11/lib/X11/xkb/symbols/pc/ru
#gedit /usr/X11/lib/X11/xkb/symbols/pc/ru& тов ста­ро­го фор­ма­та (SVR4) и в крайнем слу­чае – сбор­кой из ис­
По­сле всех строк key <…> {…} (но пе­ред за­кры­ваю­щей раз­дел фи­ ход­ных тек­стов.
гур­ной скоб­кой) сле­ду­ет на­пи­сать: Пер­вым спо­со­бом, на­при­мер, уста­нав­ли­ва­ет­ся OpenOffice.org,
xkb_symbols “winkeys” { взя­тый с офи­ци­а ль­но­го сай­та. По умол­чанию, в нем от­сут­ству­
… ет про­вер­ка ор­фо­гра­фии русско­го язы­ка. Что­бы ис­пра­вить этот
key <TLDE> { [ Cyrillic_io, Cyrillic_IO недо­чет, на­до вы­брать пункт ме­ню Сер­вис > Язык > Сло­ва­ри в ин­
] }; тернет. В ре­зуль­та­те в брау­зе­ре от­кро­ет­ся сайт с рас­ши­рения­ми
}; для OOo. За­гру­зи­те от­сю­да сло­варь, за­тем вы­бе­ри­те в OOo пункт
За­крой­те GEdit и вновь сде­лай­те файл дос­т уп­ным толь­ко для ме­ню Сер­вис > Управ­ление рас­ши­рения­ми, в поя­вив­шем­ся окне
чте­ния: на­жми­те До­ба­вить и ука­жи­те ска­чан­ный файл.
#pfexec chmod a-w /usr/X11/lib/X11/xkb/symbols/pc/ru Род­ная для OpenSolaris систе­ма управ­ления па­ке­та­ми на­зы­ва­
Конеч­но, вно­сить из­менения в по­доб­ные фай­лы вруч­ную ет­ся IPS (Image Packaging System). Коман­да pkg по­зво­ля­ет соз­да­
не вполне кор­рект­но. Ско­рее все­го, про­бле­ма с бу­к­вой «Ё» бу­дет вать, уста­нав­ли­вать, искать, об­нов­лять и уда­лять па­ке­ты, пол­но­
ис­прав­ле­на в сле­д ую­щем ре­ли­зе OpenSolaris. стью про­ве­ряя за­ви­си­мо­сти ме­ж ­д у ними. В ка­че­стве гра­фи­че­ской
На­конец, пе­рей­ди­те в ме­ню Систе­ма > Па­ра­мет­ры > Се­ан­ аль­тер­на­ти­вы мож­но ис­поль­зо­вать Package Manager, имею­щий
сы и сними­те фла­жок IIIM Startup. На­строй­ка за­вер­ша­ет­ся пе­ре­ ин­т уи­тив­но по­нят­ный ин­тер­фейс а-ля Synaptic.
за­пуском X.org – на­при­мер, на­жа­ти­ем Alt+Ctrl+BackSpace. Лю­ Для по­иска нуж­ных па­ке­тов мож­но ис­поль­зо­вать ре­по­зи­
би­те­ли ре­дак­то­ра Vim, ра­зу­ме­ет­ся, мо­г ут ог­раничить­ся од­ной то­рии http://pkg.opensolaris.org, http://pkg.sunfreeware.com:9000
пе­ре­за­груз­кой. и http://blastwave.network.com:10000/.
По­сле уста­нов­ки OpenSolaris в систе­ме вы­пол­ня­ет­ся мно­ Доста­точ­но боль­шое ко­ли­че­ство про­грамм рас­про­стра­
го лишних для до­машнего поль­зо­ва­те­ля сер­ви­сов, ко­то­рые по­ ня­ет­ся в па­ке­тах ста­ро­го фор­ма­та, как OSS. Их мож­но най­
треб­ля­ют ре­сур­сы; от­к лю­чим их. Для это­го мож­но восполь­ ти на сай­тах sunfreeware.com, www.sunfreepacks.com, www.
зо­вать­ся коман­дой svcadm, гра­фи­че­ским менед­же­ром Gnome solaris4you.dk/sunsolaris.html.
(Систе­ма > Ад­минист­ри­ро­вание > Служ­бы) или бо­лее про­дви­ну­ Иногда ра­зы­скать необ­хо­ди­мое при­ло­жение для Solaris
тым smfgui (http://os-solaris.ru/pakety/system/), пре­достав­ляю­ не уда­ет­ся, од­на­ко оно су­ще­ству­ет для Linux. При­ме­ра­ми мо­
щим го­раз­до бо­лее удоб­ный ин­тер­фейс и ин­фор­ма­цию о служ­ гут слу­жить бизнес-при­ло­жения, раз­ра­бо­тан­ные на за­каз, и раз­
бах и их за­ви­си­мо­стях. лич­ное про­прие­тар­ное ПО. Та­кие про­грам­мы мож­но за­пустить
На мой взгляд, сле­д у­ет от­к лю­чать сле­д ую­щие сер­ви­сы: в OpenSolaris в так на­зы­вае­мой ти­пи­зи­ро­ван­ной зоне. На­ря­д у
 svc:/application/pkg/update:default Пе­рио­ди­че­ски про­ве­ря­ с ZFS, зо­ны (zones) – од­но из ши­ро­ко рек­ла­ми­руе­мых пре­иму­
ет на­ли­чие но­вых па­ке­тов в ре­по­зи­то­ри­ях. Ра­зу­ме­ет­ся, при этом ществ Solaris: за до­полнитель­ной ин­фор­ма­ци­ей мож­но об­ра­тить­
вы не бу­де­те по­лу­чать уве­дом­ления о них и, по­ми­мо про­че­го, мо­ ся к http://opensolaris.org/os/community/brandz/install/.
же­те про­пустить ка­кое-нибудь важ­ное ис­прав­ление. Да­вай­те рас­смот­рим, как за­пустить Linux-при­ло­жение
 svc:/network/ssh:default По­зво­ля­ет по­лу­чить доступ к ма­шине в ти­пи­зи­ро­ван­ной зоне на при­ме­ре Skype. Мож­но восполь­
по про­то­ко­лу SSH. зо­вать­ся ру­ко­во­дством, опуб­ли­ко­ван­ным на http://blogs.sun.
 svc:/system/filesystem/autofs:default От­сле­жи­ва­ет по­пыт­ки com/twisti/entry/skype_on_solaris, но есть и бо­лее про­стой спо­
досту­па к фай­ло­вым систе­мам, опи­сан­ным в фай­ле /etc/auto_ соб. Пер­вым де­лом соз­да­дим и на­стро­им зо­ну:
master, и мон­ти­ру­ет их по ме­ре необ­хо­ди­мо­сти. Раз­мон­ти­ро­вание # pfexec zonecfg -z linuxzone
про­ис­хо­дит по тайм-ау­т у. linuxzone: No such zone configured
 svc:/system/filesystem/rmvolmgr:default Несмот­ря на то, что Use 'create' to begin configuring a new zone.
в до­к у­мен­та­ции этот сер­вис опи­сан как необ­хо­ди­мый для ав­то­ма­ zonecfg:linuxzone> create -t SUNWlx
ти­че­ско­го мон­ти­ро­вания съем­ных но­си­те­лей, при его от­к лю­чении zonecfg:linuxzone> set zonepath=/export/linuxzone
«флэш­ки» мон­ти­ру­ют­ся бы­ст­рее. zonecfg:linuxzone> add net
zonecfg:linuxzone:net> set physical=rge0
До­ба­вим при­ло­жений zonecfg:linuxzone:net> set address=192.168.1.3/24
Сле­дую­щее дей­ствие – уста­нов­ка недостаю­щих при­к лад­ных про­ zonecfg:linuxzone:net> end
грамм одним из че­ты­рех доступ­ных спо­со­бов: че­рез спе­ци­а ль­ный zonecfg:linuxzone> add attr
ин­стал­ля­тор, с ис­поль­зо­ванием менед­же­ра па­ке­тов IPS, из па­ке­ zonecfg:linuxzone:attr> set name=”audio”

32      Linux Format Сентябрь 2009


 OpenSolaris

zonecfg:linuxzone:attr> set type=boolean на ко­то­рую у вас есть пол­ные пра­ва,


zonecfg:linuxzone:attr> set value=true в том чис­ле воз­мож­ность уста­нав­ли­
zonecfg:linuxzone:attr> end вать лю­бые па­ке­ты из се­те­вых ре­по­
zonecfg:linuxzone> commit зи­то­ри­ев. Так или ина­че, те­перь мы мо­
zonecfg:linuxzone> exit жем на­сла­ж ­дать­ся об­щением в Skype
Для управ­ления зо­на­ми слу­жит коман­да zonecfg. Как мож­ из OpenSolaris, по крайней ме­ре, по­ка
но ви­деть, мы соз­да­ем (create) зо­ну linuxzone ти­па ‘lx’ (Linux), его ис­поль­зо­вание в России не при­зна­
корневая фай­ло­вая систе­ма ко­то­рой (zonepath) рас­по­ло­же­на ют неза­кон­ным. Пре­д у­пре­ж ­дая ваш во­
в /export/linuxzone. За­тем к ней до­бав­ля­ет­ся под­держ­ка се­ти прос, сразу ска­ж у: увы, Windows-зо­ны
(фи­зи­че­ский ин­тер­фейс rge0 – пер­вая се­те­вая кар­та Realtek; ад­ в Solaris не пре­д у­смот­ре­ны.
рес 192.168.1.3 с маской под­се­ти 255.255.255.0) и ат­ри­бут audio, Для уп­ро­щения за­пуска Skype мож-
зна­чение ко­то­ро­го уста­нав­ли­ва­ет­ся в true – это пре­доста­вит Skype но настроить SSH-доступ к зоне по
доступ к зву­ко­вой под­систе­ме OpenSolaris. ключу и соз­дать скрипт, ко­то­рый бу­
За­тем тре­бу­ет­ся ска­чать с сай­та (или взять с LXFDVD) дет за­пускать­ся по на­жа­тию кноп­ки
http://opensolaris.org/os/community/brandz/ об­раз зо­ны centos_fs_ на панели GNOME:
image.tar.bz2 (как нетруд­но до­га­дать­ся, он ба­зи­ру­ет­ся на CentOS). #!/bin/bash
Коман­да zoneadm понима­ет толь­ко фор­мат tar.gz, так что необ­хо­ if [ “`pfexec zoneadm list -cv|grep
ди­мо выполнить перепаковку: linuxzone|awk '{print $3}'`” !=
#bunzip2 < centos_fs_image.tar.bz2|gzip > centos_fs_image.tar.gz “running” ]; then
Как и не­ко­то­рое
Установим зону с полученного образа pfexec zoneadm -z linuxzone boot;
дру­гое ПО, Skype
#zoneadm -z linuxzone install -v -d /export/home/keremet/centos_ fi; не име­ет вер­сии
fs_image.tar.gz ssh -X root@192.168.1.3 /root/skype_static-2.0.0.72-oss/skype для Solaris, но это
и за­гру­зим ее ко­ман­дой: while [ “$?” != “0” ]; do не зна­чит, что мы
#zoneadm -z linuxzone boot echo попытка соединения с зоной здесь не мо­жем его
В зо­не име­ет­ся един­ст­вен­ный поль­зо­ва­тель root с па­ро­ sleep 1; за­пус­тить.
лем root, но это­го дос­та­точ­но, что­бы под­к лю­чить­ся к ней по SSH ssh -X root@192.168.1.3 /root/skype_static-2.0.0.72-oss/skype
с X-про­бро­сом. Для про­вер­ки ра­бо­ты зву­ко­вой под­сис­те­мы в зо­ done
не мож­но ис­поль­зо­вать лю­бую ко­ман­д у, ко­то­рая вы­даст ко­рот­кий Дан­ный сце­на­рий за­гру­жа­ет зо­ну, ес­ли она еще не вы­пол­ня­
ау­дио­сиг­нал: ет­ся, и за­пуска­ет про­грам­му skype. От мо­мен­та на­ча­ла за­груз­ки
#cat /etc/passwd > /dev/dsp до под­к лю­чения по SSH про­хо­дит 5–10 се­к унд.
При помощи команды scp копируем в зону архив skype_static- Сре­ди пре­пят­ствий для ис­поль­зо­вания OpenSolaris в до­
2.0.0.72‑oss.tar.bz2 и рас­па­к у­ем его. Попытка за­пуска Skype об­ре­ машних усло­ви­ях вы­де­ля­ют слож­ность его на­строй­ки, ма­лое ко­
че­на на про­вал, по­сколь­к у в зоне от­сут­ству­ют необ­хо­ди­мые биб­ ли­че­ство игр, недоста­точ­ный объ­ем русскоя­зыч­ной до­к у­мен­та­
лио­те­ки. Коман­да ldd по­ка­зы­ва­ет, что не хва­та­ет libasound.so.2, ции, низ­к ую про­из­во­ди­тель­ность драй­ве­ра фай­ло­вой систе­мы
libXss.so.1, libXfixes.so.3, libXinerama.so.1, libstdc++.so.6. Я про­ FAT. Од­на­ко есть лю­ди, для ко­то­рых эти недостат­ки не яв­ля­ют­ся
сто ско­пи­ро­вал необ­хо­ди­мые фай­лы из Kubuntu 6.06, в ко­то­ром су­ще­ствен­ны­ми, а по­то­му вполне до­воль­ные OpenSolaris, уста­
Skype ра­бо­та­ет без про­блем. При же­лании, вы мо­же­те по­сту­ нов­лен­ным на до­машнем ком­пь­ю­те­ре. По­про­буй­те – мо­жет быть,
пить бо­лее изящ­но, ведь зо­на – это вир­т у­а ль­ная Linux-ма­ши­на, вы то­же вхо­ди­те в их чис­ло?

Сход­ст­во и раз­ли­чия
Не­смот­ря на Unix-по­до­бие, внут­ри Solaris
зна­чи­тель­но от­ли­ча­ет­ся от ти­по­во­го ди­
Од­на­ко для ря­да ин­ст­ру­мен­тов GNU-ана­
ло­ги не пре­д у­смот­ре­ны, что мо­жет вы­
Раз­ли­чия в ко­ман­дах
ст­ри­бу­ти­ва Linux. Вы мо­же­те ви­деть это звать про­бле­мы. Хо­ро­шим при­ме­ром яв­ Linux OpenSolaris На­зна­че­ние
уже по струк­т у­ре фай­ло­вой сис­те­мы и ля­ет­ся ifconfig: на­чав поль­зо­вать­ся им, вы
ос­нов­ным ко­ман­дам. Для мно­гих из них бы­ст­ро по­чув­ст­вуе­те не­при­выч­ность син­ sudo pfexec Вы­пол­нить ко­ман­д у от име­ни root
в OpenSolaris пре­д у­смот­ре­ны две вер­сии: так­си­са. Раз­ли­ча­ют­ся да­же на­зва­ния ин­
род­ная в /usr/bin и GNU – в /usr/gnu/bin. тер­фей­сов: вме­сто eth0 вы уви­ди­те nge0 apt-cache search foo pkg search -r foo По­иск па­ке­та, со­дер­жа­ще­го foo
Стре­мясь уп­ро­стить пе­ре­ход для поль­зо­ или bge0, в за­ви­си­мо­сти от драй­ве­ра се­
ва­те­лей Linux, раз­ра­бот­чи­ки по­мес­ти­ли / те­вой кар­ты. Что­бы изу­чить но­вые ко­ apt-get install foo pkg install foo Ус­та­но­вить па­кет foo
usr/gnu/bin пер­вым в пе­ре­мен­ной PATH. ман­ды, по­тре­бу­ют­ся не­ко­то­рые уси­лия.
apt-get dist-upgrade pkg image-upgrade Об­но­вить все па­ке­ты, для ко­то­рых
дос­т уп­ны све­жие вер­сии
Раз­ли­чия в фай­ло­вой сис­те­ме
lsmod modinfo Вы­вес­ти за­гру­жен­ные драй­ве­ры
Linux OpenSolaris
insmod modload За­гру­зить драй­вер
/home /export/home
rmmod modunload Вы­гру­зить драй­вер
/var/log /usr/adm, /var/adm, /var/log
top top, prstat Вы­вес­ти ин­фор­ма­цию
/tmp /var/tmp о вы­пол­няю­щих­ся про­цес­сах

free vmstat Вы­вес­ти све­де­ния


/sys /devices о вир­т у­а ль­ной па­мя­ти

cat /proc/cpuinfo psrinfo -v, cpuinfo Вы­вес­ти ин­фор­ма­цию


/dev /dev о про­цес­со­ре

ifconfig ifconfig -a Вы­вес­ти спи­сок се­те­вых


/lib/modules/foo/* /kernel/drv/* ин­тер­фей­сов

/boot/grub /rpool/boot/grub parted format От­фор­ма­ти­ро­вать диск

Сентябрь 2009 Linux Format      33


Incognito

Incognito
По сек­ре­ту,
ос­то­рож­но
При­сое­ди­няй­тесь к Ша­шан­ку Шар­ма:
он де­мон­ст­ри­ру­ет, как ма­лень­кий
ди­ст­ри­бу­тив на Live CD пре­вра­ща­ет
вас в те­не­во­го во­ро­ти­лу Ин­тер­не­та.

Н
а пер­вый взгляд, Incognito при­дет­ся по ду­ше толь­ко ро­ят­но, при­дет­ся ис­пра­вить раз­ре­шение эк­ра­на. Вы­бе­ри­те На­
за­кон­чен­ным па­ра­нои­кам, из-за то­таль­но­сти ин­ст­ру­ стро­ить ра­бо­чий стол [Configure Desktop] в кон­тек­ст­ном ме­ню
мен­тов со­кры­тия ва­ше­го пре­бы­вания он­лайн. Но эти на ра­бо­чем сто­ле. От­меть­те Эк­ран [Screen] на бо­ко­вой панели сле­
ин­ст­ру­мен­ты (а ка­ж­дый из них пред­на­зна­чен для ва и вы­бе­ри­те нуж­ный ва­ри­ант из вы­па­даю­ще­го ме­ню. За­кон­чив,
маски­ров­ки оп­ре­де­лен­но­го ас­пек­та ва­шей се­те­вой ак­тив­но­сти) на­жми­те ОК.
Наш не здесь при­ду­ма­ны. Дан­ный 430‑МБ Live CD име­ет нема­ло вер­ Раз вы уго­ди­ли в Firefox, вы на­вер­ня­ка за­хо­ти­те по­экс­пе­ри­
эксперт ных по­к лонников — но бе­зы­мян­ных, по­сколь­к у их не рас­по­знать. мен­ти­ро­вать с про­смот­ром сай­тов че­рез Tor. Что­бы сде­лать ваш
Ша­шанк Шар­ма Вот та­кое пол­ное Incognito. ин­тернет-тра­фик аноним­ным, не на­до ниче­го пропи­сы­вать или
Со­ав­тор Beginning Вы анар­хист, ра­бо­тае­те под при­кры­ти­ем, или про­сто не хо­ти­те за­да­вать ка­кие-то на­строй­ки, по­сколь­к у Tor уже за­пу­щен. Для
Fedora, и уже лет вы­да­вать свое при­сут­ствие он­лайн – с Incognito вы смо­же­те шиф­ под­твер­ж дения на­ве­ди­те кур­сор мы­ши на крас­ную кноп­к у в ви­
пять пи­шет о сво­
бод­ном ПО. Он так­
ро­вать свои бе­се­ды в IM-кли­ен­те и элек­трон­ную поч­т у; спо­кой­но де лу­ко­ви­цы в пра­вом нижнем уг­лу эк­ра­на. На­жа­ти­ем на нее за­
же уча­ст­во­вал бро­дить по Ин­тернету, не опа­са­ясь, что cookies или исто­рия брау­ пуска­ет­ся Tork, гра­фи­че­ский менед­жер аноним­но­сти.
в Linux.com. зе­ра вы­да­дут ва­ши тай­ны; и что са­мое ин­те­рес­ное – тра­фик не от­
ра­зит­ся в жур­на­ле мар­шру­тиз­то­ра. Кро­ме при­ве­ден­ных ме­то­дов, Управ­ля­ем Tor через Tork
пред­ла­га­ет­ся так­же Tor, ко­то­рый и заметает ва­ши он­лайн-сле­ды Бу­д у­чи менед­же­ром аноним­но­сти, Tork – от­нюдь не про­сто гра­
из­нут­ри Incognito. Tor футболит ин­тернет-тра­фик та­ким об­ра­зом, фи­че­ская оберт­ка для Tor. На­при­мер, ввод Аноним­но­го поч­то­во­
что IP-ад­рес, вы­даю­щий ва­ше фи­зи­че­ское ме­сто­по­ло­жение, пря­ го ад­ре­са [Anonymous E-mail] во вклад­ке Аноним­но [Anonymous]
чет­ся от внешнего ми­ра. Аноним­ны­ми ста­но­вят­ся про­смотр сай­ соз­д а­ет ин­тер­фейс для се­ти Mixminion, по­зво­ляю­щей по­сы­
тов, пе­реписка че­рез IM-кли­ен­ты, SSH и ра­бо­та с дру­ги­ми при­ло­ лать и принимать аноним­ные пись­ма. По­сколь­к у в Incognito и так
жения­ми, ис­поль­зую­щи­ми про­то­кол TCP. име­ют­ся ин­ст­ру­мен­ты для шиф­ро­вания поч­ты, и в Thunderbird,
По умол­чанию, Incognito при­вет­ству­ет вас до­к у­мен­та­ци­ей че­ и в Firefox боль­шин­ство обыч­ных поль­зо­ва­те­лей мо­г ут
рез Firefox, с раз­ре­шением 1024 × 768, по­это­му пер­вым де­лом, ве­ в Mixminion не вникать. Од­на­ко для тех, кто дол­жен ра­бо­тать –
или скры­вать­ся – по офи­ци­а ль­но­му рас­по­ря­жению, это обес­пе­
чи­ва­ет лишний слой неви­ди­мо­сти, по­сколь­к у пись­ма сна­ча­ла пе­
Tor 101 ре­д а­ют­ся че­рез сеть Tor, а за­тем че­рез сеть Mixminion.
По­доб­но се­ти Tor, Mixminion по­ла­га­ет­ся на сер­ве­ра, под­
Tor (The Onion Router – «Лу­ко­вич­ный» мар­шру­ мар­шру­ти­за­тор, ища пред­на­зна­чен­ные для дер­ж и­вае­мые во­лон­те­ра­ми, где ва­ши пись­ма «по­к у­выр­ка­ют­
ти­за­тор) сма­хи­ва­ет на ко­ро­ед­скую чер­во­то­чи­ не­го ин­ст­рук­ции, от­слаи­ва­ет оче­ред­ной уро­ ся», пре­ж ­де чем по­пасть к ад­ре­с а­т у. Ин­ди­ви­д у­а ль­ные сер­ве­ры,
ну в Ин­тер­не­те. Вхо­д я со сво­им IP-ад­ре­сом, вы вень шиф­ро­ва­ния. Tor пред­ла­га­ет «лу­ко­вич­ так­же на­зы­вае­мые мик­с а­ми [mix], по­лу­ча­ют со­об­щения, де­
вы­хо­ди­те с со­вер­шен­но дру­гим, а в про­ме­ж ут­ ную» мар­шру­ти­за­цию вто­ро­го по­ко­ле­ния, где
шиф­ру­ют их и пе­ре­д а­ют на сле­д ую­щий микс. По су­ти, ни один
ке пе­ре­се­кае­те из­ви­ли­стые по­то­ки, ме­няе­те тра­фик, пре­ж ­де чем по­пасть в пункт на­зна­че­
ка­на­лы и ста­но­ви­тесь ано­ни­мом. ния, пу­те­ше­ст­ву­ет с мар­шру­ти­за­то­ра на мар­ из мик­сов в це­поч­ке не в со­с тоянии оп­ре­де­лить от­пра­ви­те­ля или
«Лу­ко­вич­ная» мар­шру­ти­за­ция – это про­ шру­ти­за­тор внут­ри се­ти Tor. Это сеть эс­та­фе­ по­лу­ча­те­ля, так как зна­ет толь­ко сво­и х непо­сред­с твен­ных со­се­
цесс шиф­ро­ва­ния со­об­ще­ний и их пе­ре­д а­чи ты, за­пу­щен­ная во­лон­те­ра­ми со все­го ми­ра. дей. Все­гда за­пускай­те Tork че­рез икон­к у в панели за­д ач, во из­
че­рез не­сколь­ко се­те­вых мар­шру­ти­за­то­ров Дос­т уп к се­ти Tor соз­д а­ет­ся ус­та­нов­кой «лу­
бе­ж ание стар­та несколь­ких эк­зем­п ­ля­ров. Ес­ли вы по неосто­
пе­ред дос­тав­кой ад­ре­са­т у. Бла­го­д а­ря шиф­ ко­вич­но­го» про­кси (то­же под на­зва­ни­ем Tor)
ро­ва­нию, мар­шру­ти­за­то­ры не до­га­ды­ва­ют­ся на ва­шем ком­пь­ю­те­ре. рож­но­с ти за­пусти­ли Tork че­рез Ме­ню > Ин­тернет > Менед­жер
ни об от­пра­ви­те­ле, ни о по­лу­ча­те­ле. Ка­ж ­дый www.torproject.org аноним­но­с ти (Tork), за­крой­те ок­но без ка­ких-ли­бо до­полнитель­
ных дей­с твий.

34      Linux Format Сентябрь 2009


 Incognito

Ес­ли вы хо­ти­те из­менить на­строй­ки со­единения с се­тью Tor, чом есть сколь­ко угод­но, но суть все­гда при­мер­но та­кая: при от­
сна­ча­ла оста­но­ви­те ра­бо­т у Tor, на­жав на бле­стя­щ ую зе­ле­ную лу­ прав­ке со­об­щения для Аль­фа, вы шиф­руе­те его, ис­поль­зуя пуб­ Скорая
ков­к у сле­ва. По умол­чанию, при со­единении с Tor вы имее­те до- лич­ный ключ Аль­фы. Же­лая его про­честь, Аль­фа ис­поль­зу­ет для помощь
ступ к дру­гим сер­ве­рам для пе­ре­да­чи ва­ше­го ин­тернет-тра­фи­ка, де­шиф­ров­ки свой за­кры­тый ключ. Incognito вклю­
а дру­гие не мо­г ут ис­поль­зо­вать ваш IP-ад­рес для пе­ре­да­чи сво­ ча­ет еще и Vidalia
его тра­фи­ка. Для из­менения та­ко­го по­ло­жения дел, оста­но­ви­те Клю­чи, клю­чи мои... Tormanager. За­пус­
Tor и на­жми­те на кноп­к у Локаль­но [Local]. Ес­ли для ра­бо­ты с ва­ши­ми пись­ма­ми вы пред­по­чи­тае­те пол­но­ кай­те его из Ме­
ню > Ин­тер­нет >
При же­лании раз­ре­шить ва­ше­му IP-ад­ре­су об­слу­жи­вать дру­ цен­ный кли­ент ин­тер­фей­су брау­зе­ра – Incognito по­став­ля­ет­ся
Tor GUI.
гих в ка­че­стве вы­ход­но­го уз­ла, вы­бе­ри­те в спи­ске Вы­ход [Exit]. с Thunderbird и рас­ши­рением Enigmail уже уста­нов­лен­ны­ми и го­
Тем са­мым вы по­тен­ци­а ль­но рискуе­те на­влечь на се­бя гнев пра­ то­вым для вхо­да и шиф­ро­вания кор­рес­пон­ден­ции.
во­ох­ранитель­ных ор­га­нов – ведь вам неиз­вест­но, ка­кой тра­фик Спер­ва за­пусти­те Thunderbird через икон­к у на панели за­
вы толь­ко что пе­ре­да­ва­ли: вдруг вы по­мог­ли ко­му-то опуб­ли­ко­ дач. Вам бу­дет пред­ло­же­но на­стро­ить учет­ную запись – сле­д уй­те
вать со­мнитель­ные кар­тин­ки, или ин­ст­рук­цию по управ­лению ин­ст­рук­ци­ям по­мощника, и ско­ро все бу­дет го­то­во.
са­мо­ле­том, или что-нибудь кле­ветниче­ское. Ес­ли к вам по­пы­та­ При соз­дании учет­ной запи­си для нее нуж­но на­стро­ить
ют­ся при­менить санк­ции за рас­про­странение неле­галь­но­го кон­ OpenPGP. На­жми­те на кноп­ке Напи­сать [Write], и в диа­ло­го­вом
тен­та, это станет яр­кой про­вер­кой кон­цеп­ции су­дом, но, конеч­но, окне Соз­дать пись­мо [Compose Mail] за­пусти­те мастер на­строй­
мы не станем под­би­вать вас на та­кое. ки OpenPGP на­жа­ти­ем на кноп­к у OpenPGP. В диа­ло­го­вом окне
При от­кры­тии неко­то­рых сай­тов по вре­ме­нам слу­ча­ют­ся час- на­стро­ек OpenPGP поставьте га­лоч­к у на Раз­ре­шить под­держ­к у
тые вы­ле­ты из-за за­дер­жек или дру­гих оши­бок. На­при­мер, ког- OpenPGP [Enable OpenPGP support] и на­жми­те ОК. Те­перь на сво­
да бы Tor ни под­сое­ди­нял ме­ня бо­де вы­би­рай­те, подпи­сать со­
к немец­ко­му сер­ве­ру, я не по­лу­
чаю досту­па к неко­то­рым сай­
«FireGPG по­зво­ля­ет об­щение или шиф­ро­вать его.
Ес­ли для толь­ко что на­стро­
там, в том чис­ле Gmail.com,
по­сколь­к у Gmail не раз­ре­ше­
слать шиф­ров­ки ен­ной в Thunderbird учет­ной
запи­си у вас уже есть клю­чи,
но ис­поль­зо­вать та­кой до­мен с лю­бо­го web-сер­ви­са.» мо­же­те сра­зу же принимать­ся
в Гер­мании. Вме­сто него мне за от­прав­к у со­об­щений. Кро­
при­хо­дит­ся со­еди­нять­ся с mail.google.com/mail, что не слиш­ком ме то­го, ес­ли у вас име­ет­ся пуб­лич­ный ключ по­лу­ча­те­ля, вы да­же
удоб­но. А все по­то­му, что цепь, ко­то­рую соз­да­ет Tor для пе­ре­да­чи мо­же­те за­шиф­ро­вать пись­мо. На­жми­те на кноп­к у Напи­сать, ука­
мое­го тра­фи­ка, име­ет немец­кий узел на вы­хо­де. Но мож­но за­ста­ жи­те ад­рес по­лу­ча­те­ля и те­му пись­ма, за­тем на­пи­ши­те ва­ше пись­
вить Tork соз­дать но­вые це­пи для об­хо­да по­доб­ных про­блем. В ок- мо, на­жми­те на кноп­к у OpenPGP и вы­бе­ри­те Подпи­сать [Sign]. Та­
не Tork на­жми­те на кноп­к у До­полнитель­но [More Options]. Те­перь ким же об­ра­зом вы­бе­ри­те За­шиф­ро­вать [Encrypt] для то­го, что­бы
мож­но ис­поль­зо­вать кноп­к у Гра­ж ­данин из [Citizen Of] для вы­бо­ вдо­ба­вок к подпи­си еще и за­шиф­ро­вать со­об­щение.
ра дру­го­го ре­гио­на. При от­сут­ствии клю­чей для ва­шей учет­ной запи­си вы мо­же­
те по­лу­чить их пря­мо в Thunderbird, на­жав на OpenPGP > Управ­
Firefox и Tor ление клю­ча­ми [OpenPGP > Key Management]. По­сколь­к у у вас еще Скорая
Incognito по­став­ля­ет­ся с Firefox 2.0.0.16 и пред­ла­га­ет безо­пас­ нет клю­чей, вам по­мо­жет мастер OpenPGP. Вый­ди­те из масте­ помощь
ный про­смотр сай­тов бла­го­да­ря рас­ши­рениям вро­де Adblock Pro, ра и на­жми­те Генери­ро­вать > Но­вая па­ра клю­чей [Generate > New
Ге­не­ра­ция клю­
FireGPG, Torbutton и дру­гих. Од­на­ко мо­д у­ли рас­ши­рения Flash или Key Pair]. В диа­ло­го­вом окне Генери­ро­вать ключ OpenPGP на­бе­ чей – весь­ма
Java не вклю­че­ны, и вам не уда­ст­ся аноним­но смот­реть ви­део ри­те па­роль и на­жми­те Генери­ро­вать. Вро­де ниче­го не про­ис­хо­ ре­сур­со­ем­кая
ро­ли­ки на YouTube и да­же, воз­мож­но, по­се­щать неко­то­рые сай­ дит, но при­гля­ди­тесь к нижней части ок­на Генери­ро­вать ключ за­да­ча. Ма­ши­ны
ты. Но со Slashdot все бу­дет в по­ряд­ке, не пе­ре­ж и­вай­те. OpenPGP – там возник про­гресс-ин­ди­ка­тор. с ме­нее чем
512 МБ ОЗУ мо­г ут
На­вер­ное, са­мой яр­кой функ­ций яв­ля­ет­ся FireGPG, ко­то­рая по­ Неваж­но, про­смат­ри­вае­те ли вы аноним­но cайты в ин­тернет
при этом на­чать
зво­ля­ет слать email-шиф­ров­ки с лю­бо­го поч­то­во­го web-сер­ви­са, или отсылае­те шиф­ро­ван­ные пись­ма, но ес­ли у вас на уме скрыт­ за­д у­мы­вать­ся.
вклю­чая Gmail. До­к у­мен­та­ции по шиф­ро­ванию с пуб­лич­ным клю­ ность – пла­ща-неви­дим­ки луч­ше, чем Incognito, вам не най­ти.

Шаг за шагом: Шиф­ру­ем пись­мо с по­мо­щью FireGPG

1 Меню FireGPG 2 Вы­бе­ри­те пуб­лич­ный ключ 3 За­шиф­ро­ван­ный текст


Вы­бе­ри­те текст для шиф­ро­ва­ния и на­жми­те За­шиф­ FireGPG по­про­сит вас вы­брать пуб­лич­ный ключ по­лу­ Те­перь все го­то­во для от­прав­ки шиф­ро­ван­но­го со­об­
ро­вать [Encrypt] в на­строй­ках FireGPG в кон­тек­ст­ном ча­те­ля из спи­ска. Ука­зав ключ, на­жми­те ОК вни­зу ще­ния. За­пом­ни­те, что при де­шиф­ров­ке пись­ма,
ме­ню по пра­во­му щелч­к у мы­ши. FireGPG ра­бо­та­ет диа­ло­го­во­го ок­на Пуб­лич­ный ключ [Public Key]. от­прав­лен­но­го че­рез FireGPG, на­до вы­брать все
толь­ко с вы­де­лен­ным тек­стом, по­это­му не­вы­де­лен­ На на­шем эк­ран­ном сним­ке его не вид­но, но он там. со­об­ще­ние пол­но­стью, вклю­чая стро­ки BEGIN PGP
ная часть пись­ма шиф­ро­вать­ся не бу­дет. Че­ст­но! MESSAGE и END PGP MESSAGE.

Сентябрь 2009 Linux Format      35


Gnuplot

Gnuplot Gnuplot 4.2.5

Gnuplot – это боль­ше, чем про­сто плот­тер: он спо­со­бен да­же ри­со­вать гра­фи­ки,
по­ка вы спи­те. Мар­ко Фио­рет­ти изу­ча­ет его воз­мож­но­сти.

В
оз­мож­но, вы никогда не слы­ша­ли о Gnuplot рань­ше,
Наш но это не зна­чит, что про­грам­ма пло­хая. В дей­стви­тель­
эксперт но­сти, Gnuplot — очень удоб­ная ути­ли­та, ис­поль­зуе­мая
Мар­ко Фио­рет­ти для пре­об­ра­зо­вания лю­бой функ­ции или на­бо­ра чи­
ав­тор The Family сло­вых дан­ных в про­стые диа­грам­мы или гра­фи­ки. Она ра­бо­та­ет
Guide to Digital под Mac OS X, Windows и Linux, при­чем из команд­ной стро­ки — ав­
Freedom. А так­же
ак­тив­ный сто­рон­
то­ма­ти­че­ски или ин­те­рак­тив­но.
ник сво­бод­но­го ПО По­нять, как стро­ят­ся гра­фи­ки в Gnuplot, неслож­но, но сто­
и про­грам­мист. ит ли тру­дить­ся? За­чем от­хо­дить от Gnumeric или OpenOffice.org
Calc? Пре­иму­ще­ство Gnuplot за­к лю­ча­ет­ся не в по­строении кра­си­
вой диа­грам­мы, а в том, что­бы по­мочь вам по­нять скры­тое пра­
ви­ло, пря­чу­щее­ся за на­бо­ром чи­сел. В та­ком слу­чае вам нуж­на
не внеш­няя при­вле­ка­тель­ность, а воз­мож­ность бы­ст­ро­го экс­пе­ Как ди­зай­нер соз­дал 3D-объ­ект сле­ва? Ес­те­ст­вен­но,
ри­мен­та, что­бы «рас­по­знать по­ве­дение» ва­ших дан­ных, счи­та­ изу­чив его фор­му в gnuplot!
ет Фи­липп Жанер [Philipp Janert], ав­тор книги Gnuplot в дей­ствии
(Gnuplot in Action). но­стью ав­то­ма­ти­зи­ро­вать, она не тре­бу­ет мно­го ре­сур­сов и мо­жет
Gnuplot — пре­крас­ный вы­бор для по­доб­ных за­дач гра­фи­че­ ра­бо­тать на сер­ве­ре без гра­фи­че­ской обо­лоч­ки – по­лез­но, на­при­
ско­го ана­ли­за. Его команд­ная стро­ка обес­пе­чит эф­фек­тив­ное мер, при соз­дании гра­фи­ков для ин­тернет-страниц. Необ­хо­ди­
про­ве­дение бы­ст­рых ин­те­рак­тив­ных экс­пе­ри­мен­тов с дан­ны­ мые фай­лы дан­ных и коман­ды пред­став­ля­ют со­бой про­стой текст
ми лю­бо­го сор­та, от де­мо­гра­фи­че­ских тен­ден­ций до 3D-мо­де­ ASCII, а гра­фи­ки на вы­хо­де мож­но экс­пор­ти­ро­вать в лю­бой фор­
лей. По­смот­ри­те неко­то­рые из при­ме­ров ра­бо­ты с 3D на http:// мат, на­при­мер, PNG, GIF, PostScript или для LaTeX.
t-kita.net/gnuplot_povrml. По­сколь­к у дан­ные и коман­ды на­хо­дят­ся в фор­ма­те ASCII,
Гра­фи­че­ский ана­лиз мож­но вы­пол­нять да­же па­рал­ их про­из­вод­ство лег­ко взва­лить на ком­пь­ю­тер. Вы мо­же­те ис­
лель­но. Пред­ставь­те, что у вас есть 50 раз­лич­ных фай­лов поль­зо­вать Gnuplot в сце­на­ри­ях для генера­ции и встав­ки диа­грамм
с дан­ны­ми, в ка­ж ­дом из ко­то­рых – пе­ре­чень оце­нок, по­лу­чен­ных в фай­лы OpenDocument (под­робнее об ав­то­ма­ти­за­ции даль­ше).
сту­ден­том за год. Как бы­ст­ро уста­но­вить, у ко­го наи­х уд­шая успе­
вае­мость? Про­сто ве­ли­те Gnuplot соз­дать по диа­грам­ме на сту­ Ок­но тер­ми­на­ла Gnuplot
ден­та, и вы тут же по­лу­чи­те от­вет. По­смот­ри­те на снимок эк­ра­на Ес­ли вы на­бе­ре­те gnuplot, пер­вое, что вы уви­ди­те, по­сле юри­ди­че­
в верхнем ле­вом уг­лу со­седней страницы, и вы сра­зу же уви­ди­ ских и спра­воч­ных при­ме­чаний, бу­дет стро­ка вро­де этой:
те, что глав­ный ло­дырь – Сту­дент 8. Мож­но так­же от­ме­тить, что Terminal type set to _ЧТО-ТО_
со Сту­ден­том 4 слу­чи­лось что-то пло­хое по­сре­ди го­да, когда его В Gnuplot тер­ми­нал – это то ме­сто, ку­да вы­во­д ят­ся гра­фи­
оцен­ки зна­чи­тель­но ухуд­ши­лись. че­ские эле­мен­ты, соз­дан­ные с по­мо­щью ва­ших команд: это мо­
Кро­ме воз­мож­но­стей гра­фи­че­ско­го ана­ли­за, Gnuplot име­ет жет быть как но­вое ин­те­рак­тив­ное ок­но на ва­шем ра­бо­чем сто­ле,
мас­су функ­ций, для фи­зи­ков и ли­ри­ков. Про­грам­му мож­но пол­ так и файл. Окон­ные тер­ми­на­лы хо­ро­ши для бы­ст­ро­го ана­ли­за,

36      Linux Format Сентябрь 2009


 Gnuplot

По­мощь по Gnuplot
Кро­ме ре­сур­сов, ука­зан­ных на стр. 39, ния по­с ле­д у­ет спи­сок раз­де­лов ру­ко­во­дства.
Gnuplot име­ет встро­ен­ную сис­те­м у справ­ На­бе­ри­те help на­зва­ние раз­де­ла, и по­л у­чи­те
ки, ох­ва­ты­ваю­щ ую все ко­ман­ды и клю­че­ всю ин­фор­ма­цию по не­м у. Так­же мож­но под­
вые сло­ва, ко­то­рые мы ис­поль­зу­ем на на­шем пи­с ать­ся на спи­сок рас­сыл­к и на веч­но-­по­
уро­ке. На­бе­ри­те help для по­лу­че­ния справ­ пуляр­ном SourceForge (см. http://sourceforge.
ки и про­к ру­ти­те вниз: по­с ле крат­ко­го вве­де­ net/projects/gnuplot).

ду для ото­бра­же­ния или со­хра­не­ния диа­грам­мы и ее раз­мер:


set terminal <тип_тер­ми­на­ла> size 1600, 1200
set size 0.5, 1.5
Коман­да для за­дания зна­чения – set, a size оп­ре­де­ля­ет раз­мер
хол­ста. По умол­чанию, диа­грам­ма за­пол­ня­ет холст встык с граница­
ми, ес­ли вы не за­да­ли для нее дру­гой раз­мер. Пер­вая стро­ка в при­
Кто здесь са­мый не­ус­пе­ваю­щий сту­дент? Кто за­сач­ко­вал ме­ре вы­ше оп­ре­де­ля­ет об­ласть 1600 × 1200 пик­се­лей, вто­рая оз­
с се­ре­ди­ны го­да? Gnuplot и фай­ло­вый ме­нед­жер на­ча­ет, что на­ша диа­грам­ма бу­дет на­по­ло­ви­ну мень­ше ши­ри­ны
ми­гом от­ве­тят на эти во­про­сы. хол­ста, но в пол­то­ра раза боль­ше в вы­со­т у. Для со­хранения этих
или лю­бых дру­гих на­стро­ек в фай­ле кон­фи­г у­ра­ции, на­бе­ри­те
а в фай­лах пред­поч­ти­тельнее со­хра­нять ре­зуль­та­ты, пред­на­зна­ gnuplot> save set “settings.gnu”
чен­ные для по­сле­д ую­щей пуб­ли­ка­ции. а для его за­груз­ки с це­лью по­втор­но­го ис­поль­зо­ва­ния –
Го­во­ря об окон­ных тер­ми­на­лах, да­вай­те сра­зу пре­се­чем gnuplot> load “settings.gnu”
обыч­ную сре­ди но­вич­ков Gnuplot пу­таницу. Ес­ли вы пе­ре­да­ди­те Итак, мы ука­за­ли фор­мат сре­ды диа­грам­мы; те­перь нам нуж­но,
в Gnuplot файл с коман­да­ми, а тер­ми­на­лом яв­ля­ет­ся ок­но, оно поя­ что­бы ото­бра­жение бы­ло на­гляд­ным. Это мож­но сде­лать бла­го­
вит­ся и тут же ис­чезнет, по­то­му что Gnuplot за­кры­ва­ет его по­сле да­ря вто­рой груп­пе команд – они по­зво­ля­ют за­дать цвет ка­ж ­до­
вы­полнения по­следней коман­ды в фай­ле. Та­ко­го ис­хо­да мож­но му эле­мен­т у диа­грам­мы, на­звание и подпи­си осям. Цве­та оп­ре-
из­бе­жать, ес­ли по­местить в кон­це фай­ла ин­ст­рук­цию pause-1 или ­де­ля­ют­ся чи­сло­вы­ми ко­да­ми: 1 – крас­ный, 2 – зе­ле­ный, и так
до­ба­вить оп­цию -persist в команд­ной стро­ке. В пер­вом слу­чае ок­ да­лее. Пол­ный спи­сок цве­то­вых зна­чений на­хо­дит­ся в раз­де­ле
но останет­ся от­кры­тым, по­ка вы не на­жме­те Enter. Во вто­ром – справ­ки Styles; от­ме­тим толь­ко, что оп­ре­де­лен­ный цвет при­сваи­
вам по­тре­бу­ет­ся за­крыть его мы­шью. ва­ет­ся линии за­данием ко­да цве­та в ее па­ра­мет­ре linecolor.
Вы­бор фор­ма­та для конеч­но­го фай­ла за­ви­сит от то­го, в ка­ До­бав­ление надпи­сей к линиям немно­го про­ще: все, что тре­
кой до­к у­мент пой­дет диа­грам­ма и ка­кие кра­со­ты в нем необ­хо­ди­ бу­ет­ся сде­лать – это вве­сти ниже­сле­д ую­щее по­сле всех про­чих
мы. Ес­ли вам тре­бу­ет­ся изо­би­лие шриф­тов, луч­шим вы­бо­ром бу­ оп­ций, опи­сы­ваю­щих, как по­стро­ить кри­вую или по­верх­ность
дут тер­ми­на­лы PostScript или LaTeX. В по­следнем слу­чае – ес­ли (при­ме­ры – см. ниже):
тип тер­ми­на­ла уста­нов­лен в epslatex — Gnuplot не про­сто сгенери­ title “<за­го­ло­вок гра­фи­к а>”
ру­ет EPS-файл: вы еще по­лу­чи­те код TeX, под­к лю­чае­мый к основ­ Вы так­же мо­же­те до­ба­вить за­го­ло­вок всей диа­грам­ме, на­брав
но­му LaTeX-до­к у­мен­т у для вы­во­да все­го тек­ста, при­сут­ствую­ще­го set title “I am the main title”
на гра­фи­ке. Фор­ма­ты ти­па PNG боль­ше под­хо­д ят для диа­грамм, А вот ин­ст­рук­ции для за­да­ния под­пи­сей и от­ме­ток на осях:
пред­на­зна­чен­ных для встав­ки в пре­зен­та­ции или web-страницы. set xlabel “Hello, I’m the name of the horizontal Axis”
set ylabel “I define the vertical Axis instead”
Основ­ные пе­ре­мен­ные и коман­ды set xtics 1.5,0.5,3
До­воль­но пре­лю­дий: пе­рей­дем к де­лу и по­смот­рим, что на­до на­ set ytics -1,1.0,4
би­рать для то­го, что­бы Gnuplot за­ра­бо­тал. В про­грам­ме при­сут­
ству­ют три раз­лич­ных ти­па команд и пе­ре­мен­ных, ко­то­рые мож­но На­конец, по­строение!
лег­ко вве­сти в команд­ной стро­ке или со­хранить в фай­ле для по­ На­конец, су­ще­ству­ют коман­ды, ко­то­рые со­об­ща­ют Gnuplot, что
сле­дую­ще­го вы­полнения в Gnuplot: стро­ить и как это де­лать, от про­стых кри­вых или на­бо­ров то­чек
# marco -> gnuplot <файл_с_ко­ман­д а­ми> до слож­ных мно­го­цвет­ных 3D-по­верх­но­стей. Помните, что вы мо­
Пер­вые две груп­пы про­ще по­нять на при­ме­рах, по­это­му да­ же­те изо­бра­жать функ­ции, дан­ные или все вме­сте. По­строение
вай­те раз­бе­рем их. Нач­нем с клю­че­вых слов, оп­ре­де­ляю­щих сре­ функ­ций вы­пол­ня­ет­ся про­сто, а са­мые по­пу­ляр­ные, вро­де sin(x),
встрое­ны в Gnuplot. Универ­саль­ные коман­ды для ин­тер­по­ля­ции
и ап­прок­си­ма­ции дан­ных доступ­ны че­рез smooth, а коман­да fit
и ее оп­ции по­за­бо­тят­ся о под­гон­ке по ме­то­д у наи­мень­ших квад­
ра­тов. При этом вы мо­же­те бы­ст­ро за­да­вать соб­ствен­ные функ­
ции, с кон­стан­та­ми или без, ис­поль­зуя стан­дарт­ную фор­му ма­те­
ма­ти­че­ской запи­си:
gnuplot> a=5
gnuplot> b=7
gnuplot> f(x)=a*(x**2 + b*x)
Оп­ре­де­лив функ­цию, вы мо­же­те да­же вы­чис­лить ее зна­че­
ние для за­дан­но­го ар­г у­мен­та х, ска­жем, 3.025, на­брав в Gnuplot
сле­д ую­щее:
print f(3.025)
Для ов­ла­дев­ших ос­но­ва­ми, тек­сто­вая справ­ка — пре­крас­ный Стиль гра­фи­ков за­да­ет­ся че­рез клю­че­вое сло­во with. По­сколь­
ис­точ­ник со­ве­тов и ис­чер­пы­ваю­щей ин­фор­ма­ции. ку Gnuplot по­зво­ля­ет ис­поль­зо­вать крат­чай­шее од­но­знач­ное усе­

Сентябрь 2009 Linux Format      37


Gnuplot

Од­ну и ту же функ­цию мож­но вы­вес­ти мас­сой спо­со­бов: Gnuplot ис­поль­зу­ет ко­ман­ды plot и splot для по­строе­ния
из­ме­нить цвет, мар­кер и тип ли­нии на гра­фи­ке очень лег­ко. про­стых гра­фи­ков и 3D-диа­грамм, со­от­вет­ст­вен­но.

че­ние клю­че­во­го сло­ва, не­ред­ко встре­ча­ют­ся ко­ман­ды сле­д ую­ дер­жи­ва­ет и па­ра­мет­ри­че­ское за­да­ние функ­ции, ес­ли ука­зать со­
ще­го фор­ма­та: от­вет­ст­вую­щий ре­жим, и ра­бо­та­ет с 3D-гра­фи­ка­ми. Для при­ме­ра
plot sin(x) w i вы­пол­ни­те сле­д ую­щие три ко­ман­ды:
plot sin(x) w p set parametric
Они, со­от­вет­ствен­но, оз­на­ча­ют по­строение функ­ции sin(x) в ви­де plot sin(t),t**2 title ‘Parametric example’ with linespoints
се­рии им­пуль­сов ли­бо то­чек. Эк­ран­ный снимок сле­ва ввер­х у по­ка­ splot sin(u + v),v + 2, v-u title ‘LXF 3D Parametric example’
зы­ва­ет два гра­фи­ка ря­дом. Ес­ли вы хо­ти­те по­стро­ить две и бо­лее with linespoints
кри­вых на од­ном хол­сте, про­сто ука­жи­те под­ряд со­от­вет­ствую­щие
функ­ции или фай­лы с дан­ны­ми и все­ми необ­хо­ди­мы­ми оп­ция­ми, Ус­лов­ное по­строе­ние
раз­де­ляя кри­вые за­пя­ты­ми (см. снимок эк­ра­на внизу сле­ва): При же­ла­нии, вы так­же мо­же­те со­брать кри­вую из раз­ных функ­
plot sin(x) with impulses, cos(x) with lines ций. Дру­ги­ми сло­ва­ми, мож­но ис­поль­зо­вать оп­ре­де­ле­ния раз­лич­
ных функ­ций на раз­ных от­рез­ках не­за­ви­си­мой пе­ре­мен­ной х, бла­
От про­сто­го к слож­но­му го­да­ря С-по­доб­но­му тер­нар­но­му опе­ра­то­ру
Ко­ман­да plot очень мно­го­функ­цио­наль­на. Мы за­тро­ну­ли толь­ gnuplot> plot x>0 ? exp(-x) : exp(4*x)
ко ос­нов­ные дос­т уп­ные дей­ст­вия, но ес­ли вы хо­ти­те про­рвать­ся Эта ко­ман­да по­стро­ит y=exp(-x) для x>0 и y=exp(4*x) для x<=0.
в третье из­ме­ре­ние при по­строе­нии ва­шей функ­ции, вам нуж­на Та­ким же об­ра­зом мож­но на­ри­со­вать и от­дель­ный сег­мент за­дан­
ко­ман­да splot (surface plot): ной функ­ции.
splot [-0.005:0.005][-0.02:0.02][:] (100*(x + y))/(tan(x + y)**2) Gnuplot так­же мо­жет стро­ить про­из­воль­ные кри­вые по дан­
title ‘LXF 3D function example’ with lines ным в фай­лах. Име­ют­ся в ви­д у про­стые фай­лы ASCII, где чис­ла
На­брав вы­ше­ука­зан­ное, вы по­лу­чи­те гра­фик, изо­бра­жен­ный ввер­ ука­за­ны по столб­цам, раз­де­лен­ным про­бе­ла­ми или зна­ка­ми та­
ху спра­ва. Ес­ли у вас од­на из по­след­них вер­сий Gnuplot, вы так­же бу­ля­ции. Gnuplot мо­жет ис­поль­зо­вать чи­сло­вые зна­че­ния как
смо­же­те вра­щать его мы­шью, что по­зво­лит вам взгля­нуть на дан­ есть или пе­ре­да­вать их в ка­че­ст­ве ар­г у­мен­тов функ­ции. Столб­цы
ные под дру­гим уг­лом. в фай­лах дан­ных ас­со­ции­ру­ют­ся со спе­ци­а ль­ны­ми пе­ре­мен­ны­ми
Кро­ме ли­ний и то­чек, Gnuplot уме­ет стро­ить цвет­ные кон­т ур­ $1, $2 и так да­лее:
ные кар­ты, ко­то­рые бу­дут вы­гля­деть как то­по­гра­фи­че­ское изо­ plot “mydata.dat” using 3:(2*($6*$8)) with lines lw 10 title
бра­же­ние вы­сот, ес­ли за­дать пра­виль­ный ре­жим с по­мо­щью сти­ “Plot from 1st file”, “mydata2.dat” using 3:(50 +30*sin($12 +
ля set pm3d. $10)) with lines lw 10 title “Plot from 2nd file”
И это еще не все, на что спо­со­бен Gnuplot. Обыч­но 2D-функ­ции В ре­зуль­та­те по­лу­чит­ся кар­тин­ка, при­ве­ден­ная в ниж­нем ле­
за­да­ют­ся в фор­ме y=f(x), где y за­ви­сит от x. Gnuplot так­же под­ вом уг­лу сле­д ую­щей стра­ни­цы. За­ме­тим, что зна­че­ния у обе­их

На­ло­же­ние гра­фи­ков раз­ных функ­ций — ско­рей­ший спо­соб Ок­но тер­ми­на­ла по умол­ча­нию под­дер­жи­ва­ет вра­ще­ние
их срав­не­ния. 3D-гра­фи­ков мы­шью для ви­зу­аль­но­го ана­ли­за.

38      Linux Format Сентябрь 2009


 Gnuplot

кри­вых яв­ля­ют­ся функ­ция­ми из раз­лич­ных столб­цов не­об­ра­бо­ Ес­ли файл с дан­


тан­ных фай­лов, то есть вы мо­же­те сме­ши­вать дан­ные из раз­ных ны­ми со­дер­жит
фай­лов на од­ном гра­фи­ке. Это об­лег­ча­ет срав­не­ние дан­ных да­ты в лю­бом фор­
ма­те, рас­по­зна­вае­
из мно­же­ст­ва не­за­ви­си­мых ис­точ­ни­ков. Так­же мож­но сме­ши­вать
мым сред­ст­ва­ми С,
функ­ции и фай­лы дан­ных на од­ном гра­фи­ке – глав­ное, что­бы Gnuplot соз­даст
оп­ре­де­ле­ния шли пер­вы­ми в ар­г у­мен­тах для plot. пра­виль­ные под­пи­
А ес­ли ни­ка­ких функ­ций нет, и вам ин­те­рес­на толь­ко часть си у долж­ных осей.
дан­ных в фай­ле (че­рез стро­к у, на­при­мер)? Для это­го то­же име­ет­
ся клю­че­вое сло­во: every.
every 2x
every ::N::Q
Пер­вая ко­ман­да стро­ит ка­ж ­д ую вто­рую строч­к у, вто­рая –
толь­ко стро­ки с но­ме­ра­ми от N до Q. Ес­ли на­до про­пус­тить не­
сколь­ко строк в про­из­воль­ном по­ряд­ке, про­сто до­бавь­те впе­ре­ди
них ? в ка­че­ст­ве пер­во­го сим­во­ла.

А как с да­та­ми? Но са­мое за­ме­ча­тель­ное – то, что вы мо­же­те сэ­ко­но­мить ку­чу


Ес­ли в ва­шем фай­ле есть стол­бец, ко­то­рый вы хо­ти­те ис­поль­ вре­ме­ни, ге­не­ри­руя все ко­ман­ды для по­строе­ния раз­лич­ных гра­фи­
зо­вать в ка­че­ст­ве оси, а он со­сто­ит из дат или вре­ме­ни, Gnuplot ков с по­мо­щью обыч­ных скрип­тов. В ка­че­ст­ве при­ме­ра при­ве­дем
не под­ве­дет и тут. Ука­жи­те не­сколь­ко на­стро­ек: код, ге­не­ри­рую­щий все гра­фи­ки для на­ших сту­ден­тов на стр. 37:
2004-02-09 310 1 #! /bin/bash
2004-02-10 185 2 for FIL in `ls *.dat`
2004-02-11 239 3 do
2004-02-12 132 4 echo plotting $FIL
2004-02-13 85 5 gnuplot <<ENDCAT
2004-02-14 57 6 set terminal png
2004-02-15 8 7 set output “$FIL.png”
Что­бы Gnuplot рас­по­зна­вал стро­ки в пер­вом столб­це как да­ты, 8 plot [:][0:10] “$FIL” using 1:2 with lines
за­дай­те его фор­мат по­сред­ст­вом двух пе­ре­мен­ных: 9 ENDCAT
gnuplot> set xdata time 10 done
gnuplot> set timefmt “%Y-%m-%d” Эти строки от­прав­ля­ют на стан­дарт­ный ввод Gnuplot все на­хо­д я­
gnuplot> plot “time_example.dat” using 1:2 with lines lw 8 щее­ся ме­ж ­д у мар­ке­ра­ми <<ENDCAT и ENDCAT. Все про­ис­хо­дит в
title “Plotting time-dependant values” цик­ле, и при ка­ж ­дом из­ме­не­нии име­ни фай­ла за­пуск это­го скрип­
По­смот­ри­те на ре­зуль­тат на гра­фи­ке ввер­х у спра­ва, и от­меть­ та сге­не­ри­рует столь­ко гра­фи­ков, сколь­ко есть фай­лов DAT.
те, что рис­ки на оси х бы­ли сге­не­ри­ро­ва­ны ав­то­ма­ти­че­ски. По­жа­луй­ста, ос­та­но­ви­тесь на се­к ун­д у, что­бы осоз­нать,
Ес­ли зна­че­ния вре­ме­ни пред­став­ле­ны не в фор­ма­те про­стых на­сколь­ко это мощ­ный ин­ст­ру­мент. Да­же ес­ли ва­ши дан­ные сге­
дат, а как квар­таль­ные вре­мен­ные ря­ды, вам по­тре­бу­ет­ся па­кет не­ри­ро­ва­ны на ле­т у, вы мо­же­те до­ба­вить их по­сле ко­ман­ды plot
qplot по ад­ре­су http://ricardo.ecn.wfu.edu/~cottrell/qplot. (“-” оз­на­ча­ет стан­дарт­ный ввод), и Gnuplot за­гру­зит все до пер­вой
строч­ки, на­чи­наю­щей­ся с ‘e’:
Gnuplot с дру­ги­ми про­грам­ма­ми plot “-” using 1:2
Gnuplot мо­жет вы­пол­нять ко­ман­ды или чи­тать дан­ные со стан­ #XY
дарт­но­го по­то­ка вво­да, как вид­но в этом при­ме­ре: 1 1.2
# marco -> ге­не­ра­тор_дан­ных | gnuplot ко­ман­ды_gnuplot 2 4.5
Так же лег­ко за­гру­зить фай­лы дан­ных, ко­то­рые не су­ще­ст­ву­ 37
ют, но соз­да­ют­ся на ле­т у с по­мо­щью paste, cut, sed, awk или по­ 4 0.49
доб­ных ути­лит: end
plot “< paste file1.dat file2.dat” using 1:2 За­хва­ты­ваю­ще, верно? А те­перь, по­че­му бы не вне­дрить на­ши
идеи и по­смот­реть, как мож­но еще при­ме­нять Gnuplot?

Ре­сур­сы
Кро­ме офи­ци­а ль­ной до­к у­мен­т а­ции, су­ http://mathewpeet.org/computing/gnuplot. По­
ще­с тву­ет несколь­ко он­лайн-источников, лез­ные со­ве­ты для Gnuplot в ка­че­с тве ин­с т­ру­
ко­то­рые по­мо­г ут вам осво­и ть­ся мен­т а по­с троения гра­фи­ков в Octave (и LaTeX)
с Gnu­plot по­с ле изу­чения опи­с ан­ных здесь есть на www.reimeika.ca/marco/prettyplots,
основ. Встро­ен­ные функ­ции Gnuplot опи­ а http://linuxgazette.net/126/peterson.html со-
са­ны тут: http://theochem.ki.ku.dk/on_line_ держит де­т аль­ное опи­с ание, как пре­об­ра­
docs/gnuplot/gnuplot_toc.html, а от­ве­ты зо­вать урод­ли­вые фай­лы жур­на­лов Unix
на Не Часто За­д а­вае­мые Во­про­сы ищи­те в эле­г ант­ные диа­грам­мы. Ес­ли вы хо­ти­те ис­
на http://t16web.lanl.gov/Kawano/gnuplot/index- поль­зо­вать Gnuplot в ка­че­с тве по­ли­го­на для
e.html, там рас­смот­ре­ны та­к ие ве­щи, как ис­ тести­ро­вания PovRay и дру­гих гра­фи­че­ских
поль­зо­вание в тек­с те букв гре­че­ско­го ал­ при­ло­жений, зай­ди­те на www.digitalhermit.
фа­ви­т а, цвет­ные мет­к и или ис­поль­зо­вание com/linux/ray_tracing/povray/mesh.
команд Unix для пре­доб­ра­бот­к и фай­лов дан­ И на­конец, по­чи­тай­те Gnuplot в дей­ствии
ных на ле­т у. Хо­ро­ший учебник для про­дви­ Фи­лип­па Жанера из­да­тель­ства Manning
Не­важ­но, из сколь­ких ис­точ­ни­ков по­сту­пи­ли ва­ши дан­ные — ну­тых поль­зо­ва­те­лей на­хо­дит­ся по ад­ре­су Publications (www.manning.com/janert).
их мож­но сме­ши­вать, об­ра­ба­ты­вать и срав­ни­вать без про­блем.

Сентябрь 2009 Linux Format      39


Что за штука… Со­ци­аль­ный ра­бо­чий стол

Что за штука…
Со­ци­аль­ный
ра­бо­чий стол
Да­же ес­ли вы сто­ронитесь Facebook и MySpace, ваш ра­бо­чий стол
со­дер­жит нема­ло пу­тей к со­циа­ли­за­ции, по­ла­га­ет Мар­ко Фио­рет­ти.
Что зна­чит эпи­тет «со­ци­аль­ный» гие мо­д у­ли бу­д ут ин­фор­ми­ро­вать о том, Со­мнева­юсь я... а как это ра­бо­та­ет?
при­менитель­но к ра­бо­че­му сто­лу? где на­хо­д ят­ся ва­ши дру­зья, что слу­ша­ют, Доста­точ­но при­сво­ить ка­ж ­до­му
То же, что и сло­вар­ное оп­ре­де­ление: ка­кие книги чи­та­ют, ка­кие со­бы­тия со­би­ фай­лу URL. Лю­бой че­ло­век, про­смот­рев
«…име­ет от­но­шение к взаи­мо­дей­ствию ра­ют­ся по­се­тить, и т. д. до­к у­мент по это­му URL, смо­жет оста­вить
ме­ж ­д у лич­но­стью и груп­пой; стрем­лению ком­мен­та­рий или за­мет­к у, ко­то­рые тут же
объ­е­динить­ся для соз­дания устой­чи­вых Вы упо­ми­на­ли про ин­тег­ри­ро­ван­ный поя­вят­ся на ва­шем ра­бо­чем сто­ле.
взаи­мо­от­но­шений с людь­ми, близ­ки­ми по­иск и сер­финг без брау­зе­ра.
по ин­те­ре­сам». Грань ме­ж ­ду локаль­ной и он­лайн-ак­тив­ Хм. И ра­бо­чий стол пре­вра­тит­ся
но­стью во­об­ще раз­мо­ет­ся. Идея в том, что в со­ци­аль­ную спра­воч­ную служ­бу?
Ну, а для че­го та­кой ра­бо­чий стол для по­иска в Ин­тернете бу­дет боль­ше неза­ Сей­час, ес­ли у поль­зо­ва­те­ля возника­ют за­
ну­жен? чем за­пускать брау­зер: весь ра­бо­чий стол труднения, он подпи­сы­ва­ет­ся на спи­ски
Смот­ря ко­го об этом спро­сить. Со­глас­но в связ­ке с Web бу­дет дей­ство­вать как еди­ рас­сыл­ки или ищет от­ве­ты в Се­ти нау­гад,
кол­лек­тив­но­му се­те­во­му мнению, со­ци­ ная по­иско­вая ма­ши­на. Ка­ж ­дое при­ло­ часто не до­га­ды­ва­ясь о том, ка­кие из ис-
аль­ный ра­бо­чий стол мо­жет в раз­ных про­ жение бу­дет «знать», как пе­ре­да­вать фай­ точников мог­ли бы быть наи­бо­лее по­лез­
пор­ци­ях ком­биниро­вать че­ты­ре основ­ных лы в Сеть и за­гру­жать их от­т у­да, как искать ны­ми. Со­ци­а ль­ный ра­бо­чий стол мог бы
на­прав­ления. Это: но­вый ме­тод фор­ми­ро­ об­нов­ления, спра­воч­ные ма­те­риа­лы и т. п. ин­тег­ри­ро­вать ин­тер­фей­сы в при­ло­жения
вания со­ци­а ль­ных се­тей; систе­ма он­лайн- или в окон­ный менед­жер, и тогда мож­
ком­муника­ции и по­иска в Се­ти без брау­ Яс­но; а что там с об­щим досту­пом но бы­ло бы за­да­вать во­про­сы непо­сред­
зе­ров и поч­то­вых кли­ен­тов; со­вме­ст­ный и со­трудниче­ством? ствен­но дру­гим поль­зо­ва­те­лям, ли­бо ис-
доступ и ра­бо­та над до­к у­мен­та­ми; спра­ С по­мо­щью фай­ло­вых и окон­ных менед­ кать от­ве­ты в об­щей ба­зе дан­ных. Кро­ме
воч­ная су­пер-служ­ба и ин­тер­фейс для пе­ же­ров мож­но опуб­ли­ко­вать со­дер­жи­ то­го, мож­но по­лу­чать уве­дом­ления о но­
ре­строй­ки ПО под свои ну­ж ­ды. мое ва­ше­го ком­пь­ю­те­ра спо­со­бом, ко­рен­ вых шаб­ло­нах OpenOffice.org, скрип­тах, те­
ным об­ра­зом от­ли­чаю­щим­ся от нынешних мах ра­бо­че­го сто­ла и т. п.

«Из­бе­жать мо­ро­ки P2P-се­тей.


Кто-нибудь ра­бо­та­ет над этим
с вы­груз­кой фай­лов, И лю­бой смо­жет ша­рить по мо­им
дан­ным?!
сей­час?
Наи­боль­шую ак­тив­ность в этом на­прав­
открыв локальные.» Не бес­по­кой­тесь – планиру­ет­ся, так ска­ лении про­яв­ля­ют Microsoft и KDE, хо­тя
зать, рас­про­странить на весь мир пра­ их точ­ки зрения на со­ци­а ль­ный ра­бо­чий
Так ведь всё это уже есть. За­чем ва досту­па в сти­ле Unix. Вы мо­же­те раз­ стол ма­ло в чем сов­па­да­ют.
изо­бре­тать ве­ло­си­пед? граничить кон­фи­ден­ци­а ль­ные дан­ные,
Ком­пь­ю­тер­ный со­ци­а ль­ный ра­бо­чий стол све­дения «для дру­зей» и ин­фор­ма­цию, Microsoft-то чем занима­ет­ся?
спо­со­бен стать сре­дой, где вся ва­ша ак­ доступ­ную всем без исклю­чения. В основ­ном экс­пе­ри­мен­ти­ру­ет с сис­
тив­ность на Facebook, Twitter, MySpace те­мой, по­зво­ляю­щей при­сво­ить ка­ж ­до­
и т. п. бу­дет све­де­на во­еди­но, при­чем для А что я с это­го бу­ду иметь? му фай­лу на от­дель­ном ком­пь­ю­те­ре свой
это­го не по­на­до­бит­ся ни брау­зер, ни да­же Кон­фи­ден­ци­а ль­ность и удоб­ство. URL, что сде­ла­ет его доступ­ным че­рез Ин­
цен­тра­ли­зо­ван­ный пор­тал. Сто­ит ли во­зить­ся с бло­гом или учет­ной тернет. С по­мо­щью та­ких URL ав­то­ри­зо­
запи­сью на Flickr, вы­да­вая ку­чу пер­со­ ван­ные уда­лен­ные поль­зо­ва­те­ли смо­г ут
При­мер не хо­ти­те при­вести? наль­ных све­дений, толь­ко для то­го, что­ ком­мен­ти­ро­вать и по­ме­чать ва­ши локаль­
Ра­бо­чий стол мо­жет уве­до­мить вас бы ва­ши дру­зья смог­ли уви­деть несколь­ ные фай­лы.
о том, что кто-ли­бо из ва­ших парт­не­ров ко фо­то­гра­фий да про­честь па­ру фай­лов?
во­шел в Сеть; спе­ци­а ль­ный мо­дуль вы­ве­ Кро­ме то­го, мож­но из­бе­жать мо­ро­ки с ре­ А как на­счет KDE?
дет со­об­щение, когда к ва­ше­му бло­г у до­ ги­ст­ра­ци­ей, вы­груз­кой фай­лов и пр. Про­ KDE со­сре­до­то­чил­ся на по­мо­щи но­
ба­вят ком­мен­та­рий или поя­вит­ся но­вый ще от­крыть тем, ко­му вы до­ве­ряе­те, до- вым поль­зо­ва­те­лям, что­бы они из­влек­ли
пост в бло­ге парт­не­ра. Тем вре­менем дру­ ступ к части локаль­ных па­пок. мак­си­мум воз­мож­но­го из сво­их ра­бо­чих

40      Linux Format Сентябрь 2009


 Со­ци­аль­ный ра­бо­чий стол Что за штука…

сто­лов и ста­ли ак­тив­ны­ми уча­стника­ми сво­бод­но­го ПО про­цес­сы. Но и они не бу­ обес­пе­чи­ва­ет 100 %‑ную за­щи­т у лич­ной
об­ще­ствен­ных про­цес­сов. Для это­го на­ дут про­тив спра­воч­ной систе­мы. жизни и до­пуска­ет пол­ное от­к лю­чение
ме­че­но на­ла­дить пря­мые кон­так­ты ме­ж ­д у на тот пе­ри­од, когда ва­ше се­рое ве­ще­ство,
поль­зо­ва­те­ля­ми и от­крыть об­щий доступ По-мо­ему, все эти пре­ры­вания бу­дут ка­нал или ОЗУ нуж­ны вам для че­го-то по­
к ба­зе знаний. из­ряд­но раз­дра­жать, осо­бен­но тех, важнее – про­блем не бу­дет, не так ли?
кто не ис­поль­зу­ет ком­пь­ю­тер для
Есть ли ощу­ти­мые ре­зуль­та­ты? со­вме­ст­ной ра­бо­ты. Ме­ня осо­бен­но за­бо­тит сво­бо­да
В KDE 4.3 планиру­ет­ся вклю­ Ну, это нечастые слу­чаи, когда со­ци­а ль­ный вы­бо­ра и за­щи­та дан­ных…
чение кон­цеп­т у­а ль­но­го плаз­мои­да, ко­ ра­бо­чий стол бу­дет поч­ти или во­все бес­по­ Да и нас то­же, ведь со­ци­а ль­ные ра­бо­
то­рый на­ве­дет вас на дру­гих поль­ ле­зен. Конеч­но, ес­ли у вас нет по­треб­но­сти чие сто­лы спо­соб­ны не толь­ко пе­ре­нять
зо­ва­те­лей KDE в Се­ти. Раз­ра­бо­та­ны немед­ля раз­званивать о ва­шей ком­пь­ю­тер­ недостат­ки су­ще­ствую­щих со­ци­а ль­ных
про­грамм­ные ин­тер­фей­сы при­ло­жений ной дея­тель­но­сти на всю ок­ру­г у, то со­ци­ се­тей, но и усу­г у­бить их. На­при­мер, как пе­
(API) для до­бав­ления дру­гих ком­понен­ аль­ные ра­бо­чие сто­лы (или пор­та­лы – тут ренести со­ци­а ль­ные на­строй­ки с од­но­го
тов, напи­сан­ных на несколь­ких язы­ках есть разница) и прав­да мо­г ут до­са­дить. со­ци­а ль­но­го ра­бо­че­го сто­ла на дру­гой?
про­грам­ми­ро­вания. Ба­за знаний, в ко­то­
рую вхо­д ят все доступ­ные на се­го­дня све­ Кста­ти, а как быть тем, кто не си­дит Де­ло боль­шое! Взять ис­ход­ный код
дения, на­хо­дит­ся на OpenDesktop.org и Get в Се­ти в ре­жи­ме 24/7, или не име­ет да напи­сать со­от­вет­ствую­щие
Hot New Stuff (http://ghns.freedesktop.org). ши­ро­ко­по­лосно­го досту­па? фильт­ры.
То­же хо­ро­ший во­прос. Боль­шая часть Это по зу­бам толь­ко опыт­ным поль­зо­
А RSS и поч­то­вые кли­ен­ты раз­ве функ­ций со­ци­а ль­но­го ра­бо­че­го сто­ла при­ ва­те­лям. Бу­дем на­де­ять­ся, что раз­ра­
не то же са­мое де­ла­ют? но­сит поль­зу, толь­ко ес­ли ваш ком­пь­ю­тер бот­чи­ки уч­т ут эти во­про­сы с са­мо­го на­
Вы со­вер­шен­но пра­вы; но их дей­ствия по­дол­г у со­еди­нен с Ин­тернетом. Ес­ли есть ча­ла, что­бы не ослож­нять нам жизнь
ог­раничен­ы по мас­шта­бам и раз­рознен­ ог­раничения по вре­мени или по тра­фи­к у, без необ­хо­ди­мо­сти.
ны. За­да­ча со­ци­а ль­но­го ра­бо­че­го сто­ла вы ма­ло вы­иг­рае­те от все­го это­го.
в объ­е­динении всей по­доб­ной ак­тив­но­сти, Я за­ин­три­го­ван. Где бы раз­до­быть
при пол­ной про­зрач­но­сти и удоб­стве. Вы­хо­дит, в со­ци­аль­ных ра­бо­чих бо­лее под­роб­ные све­дения?
сто­лах про­к у нет? Ин­фор­ма­цию о со­ци­аль­ных ра­бо­чих сто­
Со­ци­аль­ный ра­бо­чий стол от KDE Ну, не будь­те та­ким пес­си­ми­стом – они лах Microsoft и KDE мож­но ра­зы­скать в Се­ти
ка­жет­ся непло­хим ин­ст­ру­мен­том осча­ст­ли­вят мно­гих и сде­ла­ют ра­бо­т у про­ на их об­зор­ных страницах: http://research.
для по­строения со­об­ще­ства, но, бо­юсь, дук­тивнее, при со­блю­дении несколь­ких microsoft.com/en-us/projects/SocialDesktop
поль­зо­вать­ся им бу­дут толь­ко те, кто и так клю­че­вых усло­вий. иhttp://dot.kde.org/2009/05/01/social-desktop-
яв­ля­ет­ся его ча­стью. starts-arrive, со­от­вет­ствен­но.
Вы пра­вы – зна­чи­тель­ная часть но­вых Это ка­ких же? Ес­ли вы про­грам­мист и ище­
поль­зо­ва­те­лей, что при­дут в KDE или Linux Оп­ти­ми­за­ция ре­сур­сов, кон­фи­ден­ те све­дения по дан­ной те­ме, за­гляните
в бли­жай­шие го­ды, вряд ли при­мет­ся ра­ ци­а ль­ность, сво­бо­да вы­бо­ра и со­хран­ность на www.freedesktop.org/wiki/spe­ci­fi­ca­ti­ons/
дикаль­но ме­нять свои ра­бо­чие сто­лы или дан­ных. Ес­ли со­ци­а ль­ный ра­бо­чий стол open-colla­bo­ra­tion-servi­ces или www.
ак­тив­но вли­вать­ся в тра­ди­ци­он­ные для не пе­ре­гру­жа­ет про­цес­сор, по умол­чанию opensocial.org.

Сентябрь 2009 Linux Format      41


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

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

Н
едав­но мы в се­мье об­су­ж ­да­ли по­
куп­к у циф­ро­во­го пианино (одно-
го из этих ми­лых от­бро­сов �����
Yama-
ha с кла­виа­т у­рой нор­маль­но­го ве­са) вза­мен
ста­ро­го, ко­то­ро­му уже лет 50, а то и боль­
ше. За­тея по­гиб­ла в за­ро­ды­ше, когда за­

Чет­верть ве­ка Gnu


шла речь о дол­го­веч­но­сти. Ес­ли элек­троника
но­во­го пианино вый­дет из строя че­рез
20 лет (а то и 10), смо­жем ли мы его по­

(это не Unix!)
чинить? Опять же, мне не оче­вид­но, по­че­му
ста­рое пианино нель­зя бу­дет по­чинить еще
50 лет спустя.

Циф­ро­вой век
Вот я и за­д у­мал­ся о дру­гих ас­пек­тах циф­
ро­вой дол­го­веч­но­сти. На­ши фо­то на­ших де­
GNU Что эта ан­ти­ло­па во­об­ще для нас сде­ла­ла?
тей – по боль­шей части в фор­ма­те 10 × 15.

В
Че­рез три­дцать лет мы все еще смо­жем до- по­ряд­ке при­зна­тель­но­сти за вклад GNU Раз­ные го­ло­са: Make… и ls… cp, mv и rm… head
стать их и по­смот­реть (и достанем). На­ши в сво­бод­ное ПО пред­ла­гаю вам мини- и tail, sort и gawk…
фо­то на­ших вну­ков – в циф­ро­вом фор­ма­ спек­такль. Де­ко­ра­ции: ме­ст­ный паб по­сле Редж: Ну, это все коман­ды. Но Linux-то у нас
те, и хра­нят­ся на ком­пакт-дисках. Техниче­ встре­чи LUG. на ра­бо­чем сто­ле! А для ра­бо­че­го сто­ла они ниче­
ски это со­вер­шеннее, но дол­го ли про­тянет Стен: Ты зна­ешь, что GNU 25 лет? У них на сай­те го не сде­ла­ли.
ком­пакт-диск? есть клип, где Сти­вен Фрай [Stephen Fry] рас­ска­ Джим: А как же GIMP?
Из­го­то­ви­те­ли ут­вер­ж да­ют, что CD-R жи­ зы­ва­ет про это и за­д у­ва­ет свеч­ки на тор­те. Редж: А? Да… Небось G как раз от­сю­да.
вут от 50 до 200 лет, но есть оцен­ки и на по­ Редж: А ну по­кажь! Джим: И биб­лио­те­ка Gtk. То­же вез­де нуж­на.
ря­док ниже. (Все со­гла­сят­ся, кста­ти, что для Все со­би­ра­ют­ся тол­пой во­круг iPhone Сте­на Стен: И Gnome…
боль­ше­го сро­ка служ­бы нуж­но брать дис- в пред­вку­шении про­смот­ра, но ви­део­ро­лик, вы­пу­ Редж: (по­сле дол­гой пау­зы, об­ре­чен­но) Кто-нибудь
ки выс­ше­го ка­че­ства и хранить их в тем­ном щен­ный GNU в фор­ма­те Ogg, не про­иг­ры­ва­ет­ся. хо­чет пи­ва?
про­х лад­ном месте.) И, бли­же к де­лу, най­дет­ Редж: Как все­гда! Это чер­то­во сво­бод­ное ПО все Стен: Толь­ко ес­ли его да­ют сво­бод­но, Редж. Как
ся ли при­вод для этих дисков че­рез 10 лет? вре­мя чу­дит. Вы­к ла­ды­ва­ют ви­део в фор­ма­те, ко­ сло­во.
Че­рез 20? Уже сей­час труд­но най­ти ком­пь­ю­ то­рый никто про­иг­рать не мо­жет. И во­об­ще, что Несколь­ко кру­жек спустя…
тер, на ко­то­ром мож­но про­честь 3,5‑дюй­мо­ эта GNU для нас сде­ла­ла? Стен: Ну что, зо­вем его на на­шу сле­д ую­щ ую
вые диске­ты 1980‑х. Пау­за. сходку?
Да, тео­ре­ти­че­ски CD мож­но пе­репи­сать Стен: (неуве­рен­но) Ну, есть ли­цен­зии GPL, ко­то­ры­ Редж: Ко­го?
на бо­лее со­вре­мен­ные но­си­те­ли, но мно­ ми все поль­зу­ют­ся. Это они их напи­са­ли. Стен: Это­го Ог­га… как его там… Вор­би­са.
гие ли ста­нут с этим свя­зы­вать­ся? Сколь­ким Редж: О да, это от них. GPl. Да, прав­да.
семь­ям боль­ше не слу­шать лю­би­мые пла­ Мик: Еще C-ком­пи­ля­тор. И C++.
стин­ки Эл­лы Фицд­же­ральд или ви­део­запи­си Стен: Да, Редж, не за­будь ком­пи­ля­то­ры. Когда-
Уол­тонс [The Waltons – ка­над­ская рок-груп­ то они здо­ро­во по­мо­га­ли. И ас­семб­лер, и лин­кер.
па, по­пу­ляр­ная в де­вя­но­стых го­дах про­шло­ Редж: И то вер­но. GPL и ком­пи­ля­тор C – две ве­щи,
го сто­ле­тия, – прим. пер.], по­то­му что для них ко­то­ры­ми мы обя­за­ны GNU.
нет про­иг­ры­ва­те­ля или ви­део­магнито­фо­на? Стен: (осме­лев) А еще Bash…
Это про­сто син­дром непри­ятия но­во­ Редж: Да, и Bash то­же, яс­ное де­ло.
го у свар­ли­во­го ста­ри­ка, или тут есть ка­кой- Мэт: И glibc… это всю­д у при­ме­ня­ют.
то ре­зон? Редж: Лад­но, лад­но. Glibc. Но кро­ме GPL, ком­пи­ля­ В этом го­ду GNU
то­ра C, Bash и glibc, что еще? 25 лет.

42      Linux Format Сентябрь 2009


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

Внут­ри info
Info Раз­би­ра­ем­ся с систе­мой до­ку­мен­та­ции GNU.

I
nfo – систе­ма до­к у­мен­та­ции, по­ро­ж ­ден­ная про­ек­том GNU. Это
Верх­ний уро­вень де­ре­ва info
сво­его ро­да аль­тер­на­ти­ва man-страницам, и в боль­шин­стве
систем Linux уста­нов­ле­ны и info, и man. Лю­ди из GNU ис­поль­
зо­ва­ли info для до­к у­мен­ти­ро­вания основ­ных ути­лит команд­ной Coreutils Об­щие оп­ции Пра­ва дос­ту­па
стро­ки, но раз­ра­бот­чи­ки боль­шин­ства дру­гих про­грамм пред­по­ к фай­лам
чи­та­ют man. На­при­мер, вы не най­де­те в info ни од­ной страницы
об APT, инструментарии Debian.
Файлы-резюме Вы­вод со­дер­жи­мо­го ка­та­ло­гов Ба­зо­вые опе­ра­ции
Сти­ли ин­тер­фей­сов man и info силь­но раз­ли­ча­ют­ся. Ес­ли man
по су­ти де­ла со­дер­жит «пло­ский» на­бор страниц, то в info запи­
си об­ра­зу­ют дре­во­вид­ную струк­т у­ру, по­ка­зан­ную на ри­сун­ке.
Ка­ж ­дая запись в этом де­ре­ве на­зы­ва­ет­ся уз­лом. С про­дви­жением
Вы­зов ls Вы­зов dir Вы­зов vdir
по де­ре­ву уро­вень де­та­ли­за­ции возрастает.
Хо­ро­шее ме­сто для стар­та – узел coreutils: он до­к у­мен­ти­ру­
ет боль­шин­ство ба­зо­вых ути­лит команд­ной стро­ки, та­ких как cat,
head, tail, split, wc, sort, ls, cp, ln, chown, df, date, hostname, kill и мно­ Ка­кие фай­лы Ка­кая ин­фор­ма­ция Сор­ти­ров­ка
гие дру­гие. По­пасть в него мож­но, вы­полнив коман­д у по­па­да­ют в спи­сок вы­во­дит­ся вы­во­да
$info coreutils
Вы уви­ди­те ин­фор­ма­цию об ав­тор­ских пра­вах и ме­ню под­
раз­де­лов уз­ла coreutils. Вы­брать под­раз­дел мож­но одним из двух Под­роб­но­сти Под­роб­но­сти Под­роб­но­сти
спо­со­бов: оп­ций ls оп­ций ls оп­ций ls
по­местив кур­сор в нуж­ный пункт ме­ню и на­жав Enter (пунк­ты
ме­ню – это стро­ки, на­чи­наю­щие­ся со звез­доч­ки);
коман­дой m с именем под­раз­де­ла. Info ор­га­ни­зу­ет до­ку­мен­та­цию в де­ре­во уз­лов. Для на­ви­га­ции по не­му мож­но
На­при­мер, вы­брав под­раз­дел «Вы­вод со­дер­жи­мо­го ка­та­ло­ поль­зо­вать­ся од­но­бу­к­вен­ны­ми ко­ман­да­ми.
гов», вы уви­ди­те узел, по­ка­зан­ный на ри­сун­ке. От­сю­да мож­но
про­дви­нуть­ся глуб­же, вы­брав под­раз­дел «Вы­зов ls». На схе­ме де­ страницы на Texinfo. Этот язык раз­мет­ки, по­то­мок ти­по­граф­ско­
ре­ва я от­ме­тил этот пе­ре­ход зе­ле­ной стрел­кой. го язы­ка TeX от ста­рей­ши­ны про­грам­ми­с тов До­наль­д а Кну­та,
ис­поль­зу­ет тэ­ги фор­ма­ти­ро­вания, на­чи­наю­щие­ся с @. По гру­
Ин­фор­ма­ция об info бо­му под­сче­т у, их око­ло 300, и ес­ли Texinfo ну­жен вам толь­ко
Есть встро­ен­ная функ­ция справ­ки, где опи­са­ны все вспо­мо­га­ для соз­д ания страниц info, то, по­жа­луй, не сто­ит тра­тить на не-
тель­ные кла­ви­ши info. Для ее вы­зо­ва на­жми­те ?. Ок­но раз­де­лит­ го вре­мя. На­с тоя­щее пре­иму­ще­с тво Texinfo в том, что есть ути­
ся, в сти­ле Emacs, и в од­ной из по­ло­вин бу­дет вы­ве­де­на справ­ка. ли­ты для его пре­об­ра­зо­вания во мно­же­с тво фор­ма­тов – текст,
На­жми­те Ctrl+X и 0, что­бы за­крыть вто­рое ок­но. Итак, зай­мем­ся HTML и про­с тые фай­лы info, ко­то­рые мы об­су­ди­ли, а так­же DVI,
од­но­бу­к­вен­ны­ми коман­да­ми на­ви­га­ции. Вот пол­ный спи­сок: PDF, XML и Docbook.
N Пе­ре­ход в сле­дую­щую те­му на том же уровне де­ре­ва. Ес­ли хо­ти­те уз­нать боль­ше, то пол­ное ру­ко­во­дство по info
P Пе­ре­ход в пре­ды­ду­щую те­му на том же уровне де­ре­ва. помещается по ад­ре­су www.gnu.org/software/texinfo/manual/
U Пе­ре­ход на один уро­вень вверх. info/info.html. Ру­ко­во­дство по Texinfo мож­но най­ти на сайте www.
L Пе­ре­ход к по­следнему по­се­щен­но­му уз­лу (об­ра­ти­те внима- gnu.org/software/texinfo/manual/info/texinfo.html.
ние, что «по­следний» и «пре­ды­д у­щий» – это со­вер­шен­но раз­
ные уз­лы).
m За­прос на­звания пунк­та ме­ню и пе­ре­ход ту­да.
t Пе­ре­ход на верхний узел те­к у­ще­го фай­ла info.
S За­прос стро­ки по­иска и по­иск всех уз­лов в те­к у­щем фай­ле
info по этой стро­ке.
Q Вы­ход из info.

От­ку­да бе­рут­ся страницы info?


Ес­ли вам нуж­но все­го лишь несколь­ко страниц, вы­во­ди­мых
по коман­де info, со­от­вет­ствую­щие фай­лы лег­ко соз­дать вруч­ную –
кро­ме тек­ста справ­ки, в них са­мая ма­лость раз­мет­ки, за­даю­щей
име­на уз­лов и ме­сто­по­ло­жение ссылок Next, Previous и Up. Файл
нуж­но сжать gzip (с именем ти­па foo.info.gz) и по­ло­жить в ка­та­
лог /usr/share/info. По­том нуж­но соз­дать ссыл­к у на него в фай­
ле info верхнего уров­ня, ко­то­рый обыч­но на­зы­ва­ет­ся /usr/share/
info/dir. Коман­да install-info по­мо­жет вам с этим.
В ка­че­с тве аль­тер­на­ти­вы мож­но от­крыть для се­бя це­ Про­стая стра­ни­ца info. Пунк­ты ме­ню (стро­ки, на­чи­наю­щие­ся с *) — это ссыл­ки
лый GNU-мир под­го­тов­ки до­к у­мен­та­ции и напи­сать свои info- на дру­гие уз­лы.

Сентябрь 2009 Linux Format      43


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

Про­ис­хо­ж­дение man
Man Неболь­шой экскурс в исто­рию коман­ды «man» и ин­ст­рук­ция
по чтению man-страниц и соз­данию соб­ствен­ных.

К
оман­да man го­раз­до стар­ше info. Это тра­ди­ци­он­ный спо­ ков: NAME (На­звание), SYNOPSYS (Крат­кий об­зор), DESCRIPTION
соб до­к у­мен­ти­ро­вания ути­лит Linux, осо­бен­но тех, что (Опи­сание), FILES (Фай­лы), SEE ALSO (См. так­же), DIAGNOSTICS
ра­бо­та­ют из команд­ной стро­ки. Но вы когда-нибудь ин­ (Ди­аг­но­сти­ка) и BUGS (Ошиб­ки). Он со­хра­нял­ся до man-страниц
те­ре­со­ва­лись тем, как они уст­рое­ны? System V (око­ло 1990 го­да), за исклю­чением за­го­лов­ка BUGS,
Ка­ж ­дая man-страница при­над­ле­жит к од­но­му из вось­ми раз­ ко­то­рый в до­к у­мен­та­ции AT&t был уда­лен или пе­ре­име­но­ван
де­лов. Это раз­де­ление восхо­дит ко вре­ме­нам, когда cat бы­ла еще в Caveats (пре­д у­пре­ж ­дения, по­яснения) – ви­ди­мо, из-за неже­
ко­тен­ком, хо­тя на­звания раз­де­лов с тех пор чуть из­менились. лания ком­пании при­знать, что в их ПО бы­ва­ют ошиб­ки. На man-
В со­вре­мен­ных систе­мах Linux это: странице мо­жет быть раз­дел с при­ме­ра­ми (Examples). В ру­ко­-
1 Ис­пол­няе­мые про­грам­мы или коман­ды обо­лоч­ки. ­во­д­стве GNU под­ход бо­лее ли­бе­раль­ный: там мож­но най­ти
2 Систем­ные вы­зо­вы (функ­ции, пре­достав­лен­ные ядром). та­кие за­го­лов­ки, как Overview (Об­щее пред­став­ление), Environment
3 Биб­лио­теч­ные вы­зо­вы (функ­ции в биб­лио­те­ках про­грамм). (Сре­да), Author (Ав­тор), Copyright (Ав­тор­ские пра­ва) и Reporting
4 Спе­ци­а ль­ные фай­лы (обыч­но на­хо­д ят­ся в /dev). Bugs (Как со­об­щить об ошиб­ке?).
5 Фор­ма­ты фай­лов и со­гла­шения (на­при­мер, /etc/passwd). Сек­ция SYNOPSIS – на­стоя­щее серд­це man-страницы. Здесь
6 Иг­ры. ис­поль­зу­ет­ся фор­маль­ная запись, что­бы по­ка­зать вер­ный син­
7 Раз­ное. так­сис коман­ды, и нуж­но раз­би­рать­ся в его основ­ных эле­мен­тах:
8 Коман­ды систем­но­го ад­минист­ри­ро­вания. Квад­рат­ные скоб­ки [как эти] оз­на­ча­ют необя­за­тель­ные эле­
Но­мер раз­де­ла мож­но най­ти на пер­вой стро­ке са­мой man- мен­ты. Мож­но уб­рать их, и коман­да останет­ся вер­ной.
страницы в круг­лых скоб­ках. На­при­мер, на эк­ран­ном сним­ке man- Вер­тикаль­ная чер­та оз­на­ча­ет «или». Так, [-i|-l] оз­на­ча­ет, что
страницы коман­ды odd (ниже) мы ви­дим, что она при­над­ле­жит мож­но ука­зать ключ -i или -l, но не оба сра­зу.
к пер­во­му раз­де­лу man. От­крой­те man-страницу fork, и вы пой­ Мно­го­то­чие (три точ­ки …) оз­на­ча­ет, что пре­ды­д у­щий эле­мент
ме­те, что это систем­ный вы­зов (раз­дел 2). Коман­да getpwent от­ мож­но по­вто­рить.
но­сит­ся к треть­ему Вы­де­лен­ный жир­ным шриф­том текст – это до­слов­ный текст

«Боль­шин­ст­во ко­манд раз­де­лу, fstab –


к пя­то­му, а fdisk –
коман­ды, кур­сив (или под­черк­ну­тый текст) нуж­но за­менить
под­хо­д я­щим ар­г у­мен­том.
пе­ре­пи­са­ли лю­ди из к вось­мо­му.
Неко­то­рые те­
Та­кая запись – на удив­ление мощ­ное сред­ство. Рас­смот­рим
при­ме­ры:
Фон­да сво­бод­но­го ПО.» мы вхо­д ят бо­лее ctags [-aBFtuvwx] [-f tagsfile] filename …
чем в один раз­дел. Это клас­си­че­ский при­мер из ру­ко­во­дства по SVR4. Во-пер­вых,
На­при­мер, chmod – это и коман­да, и систем­ный вы­зов. Про­сто мож­но ука­зать лю­бое со­че­тание од­но­сим­воль­ных оп­ций из на­бо­
man chmod по­ка­жет страницу из пер­во­го раз­де­ла. Ес­ли вам нуж­ ра aBFtuvwx. Идея пред­ва­рять их де­фи­сом идет с неза­па­мят­ных
на страница систем­но­го вы­зо­ва chmod, нуж­но яв­но за­про­сить вре­мен. (Кста­ти, ин­тер­пре­ти­ру­ет эти ар­г у­мен­ты са­ма коман­да,
Стан­дарт­ное ее из вто­ро­го раз­де­ла, коман­дой man 2 chmod. Ана­ло­гич­но, man а не обо­лоч­ка. Обо­лоч­ка толь­ко счи­та­ет -n обыч­ной стро­кой ар­
рас­по­ло­же­ние эле­ passwd по­ка­жет man-страницу для коман­ды passwd из пер­во­ гу­мен­та.) За­тем мож­но ука­зать оп­цию -f, за ко­то­рой долж­но ид­ти
мен­тов на man- го раз­де­ла, а man 5 passwd по­ка­жет man-страницу для фор­ма­та имя фай­ла tagsfile. В кон­це ука­зы­ва­ет­ся од­но или несколь­ко имен
стра­ни­це уп­ро­ща­ет фай­ла па­ро­лей в раз­де­ле 5. фай­лов. Имя фай­ла не на­хо­дит­ся в квад­рат­ных скоб­ках, по­это­му
на­ви­га­цию, ес­ли Man-страницы в мо­ем ру­ко­во­дстве по Unix ре­дак­ции 6 (да­ти­ оно обя­за­тель­но – сле­д у­ет ука­зать по мень­шей ме­ре од­но.
вы ра­зо­бра­лись,
ро­ван­ном 1973 го­дом) ис­поль­зу­ют стан­дарт­ный на­бор за­го­лов­ Вот весь­ма эф­фект­ный при­мер ис­поль­зо­вания вло­жен­ных
что вам на­до.
квад­рат­ных ско­бок:
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Необязательно Во-пер­вых, мож­но ука­зать -u, --utc или --universal (все они оз­
на­ча­ют од­но и то же). Этот па­ра­метр необя­за­те­лен. По­том мож­но
Может повторяться Раздел руководства
ука­зать да­т у и вре­мя. В этом слу­чае нуж­но вве­сти как минимум
Краткое описание
MMDDhhmm (ме­сяц, день, час, ми­ну­т у). По­том мож­но (но не обя­
за­тель­но) ука­зать год в ви­де двух­раз­ряд­но­го чис­ла (YY), ко­то­рый
мо­жет пред­ва­рять­ся или не пред­ва­рять­ся двух­раз­ряд­ным чис­лом
ве­ка (CC). В кон­це мож­но (но не обя­за­тель­но) ука­зать се­к ун­ды,
пред­ва­рив их точ­кой (.ss).

Боль­шая Пе­ре­запись
Боль­шин­ство ути­лит команд­ной стро­ки в со­вре­мен­ных ди­ст­ри­
бу­ти­вах Linux бы­ли пе­репи­са­ны Фон­дом сво­бод­но­го ПО (людь­
ми из GNU). Во вре­мя этой Боль­шой Пе­ре­запи­си у команд поя­ви­
лось мно­же­ство но­вых оп­ций. Ре­бя­та из GNU так­же пред­ло­жи­ли
«длин­ные» оп­ции, со­стоя­щие из двух де­фи­сов, за ко­то­ры­ми сле­
ду­ет сло­во. На­при­мер, у коман­ды ls есть оп­ция --directory, эк­ви­
Короткая опция Длинная опция ва­лент­ная обыч­ной од­но­сим­воль­ной оп­ции -d. Од­на­ко у мно­гих
«длин­ных» оп­ций нет од­но­бу­к­вен­но­го эк­ви­ва­лен­та: на­при­мер,

44      Linux Format Сентябрь 2009


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

--color и --group-directories-first коман­ды ls. По­яв­ление та­ких [ \-a | --append ] [ \-d | --delete-original ] [ -f \flbasename\fR ]
клю­чей ста­ло неиз­беж­ным, по­то­му что чис­ло па­ра­мет­ров росло, [\flFILE\fR...]
и од­но­бу­к­вен­ных мно­гим коман­дам ста­ло не хва­тать. .SH DESCRIPTION
Man-страницы GNU так­же сде­ла­ли по­пу­ляр­ной идею ука­зы­ .B br
вать в раз­де­ле SYNOPSYS не пол­ный син­так­сис коман­ды, а толь­ assists in the recycling of digital content by separating the
ко ее крат­чай­шее опи­сание. На­при­мер, SYNOPSYS для коман­ды ls ones and zeros in the named \flFILE\fR(s) (or standard input if
вы­гля­дит так: none) into two separate files.
SYNOPSYS .SH OPTIONS
ls [OPTION] … [FILE] … .TP
Все оп­ции опи­сы­ва­ют­ся да­лее в раз­де­ле DESCRIPTION (опи­ .B -a, --append
сание). Конеч­но, та­кие man-страницы бы­ли и до Linux, но ско­рее Append to the end of the output files, rather than starting
как исклю­чение, чем пра­ви­ло. Ныне так вы­гля­дит боль­шин­ство new ones
страниц. .TP
.B -d, --delete-original
Где жи­вут man-страницы? Delete the input files after the bits have been recycled
Сна­ча­ла man-страницы хранились в ка­та­ло­гах /usr/man/manx .TP
(где x – но­мер раз­де­ла), и боль­ше нигде. По­том бы­ла до­бав­ле­ .B -f
на пе­ре­мен­ная ок­ру­жения MANPATH, ко­то­рая мог­ла со­дер­жать Use
спи­ски ка­та­ло­гов для по­иска. Это уп­ро­щ а­ло ра­бо­т у с на­бо­ром .I basename
локаль­ных man-страниц от­дель­но от систем­ных. Сей­час для ука­ as the base name of the output files. The extensions.ones
зания спи­ска ка­та­ло­гов и «ото­бра­жений manpath», ко­то­рые свя­ and.zeros will be appended to form the output file names.
зы­ва­ют ка­та­ло­ги из пе­ре­мен­ной ок­ру­жения PATH с ка­та­ло­га­ми, If none is specified, a basename of \*(lrecycled\*(rq is
в ко­то­рых долж­ны на­хо­дить­ся со­от­вет­ствую­щие страницы man, assumed
при­ме­ня­ет­ся файл /etc/manpath.config. В нем так­же оп­ре­де­ля­ .SH BUGS
ет­ся по­ря­док, в ко­то­ром бу­дет про­из­во­дить­ся по­иск в раз­де­лах .B br
man-страниц. does not recycle the bits of its own code segment when
Коман­да manpath по­ка­зы­ва­ет ка­та­ло­ги, где бу­дет осу­ще­ст­в­ done, which is wasteful
лять­ся по­иск: Этот при­мер не ох­ва­ты­ва­ет все воз­мож­но­сти мак­ро­са фор­-
$manpath мати­ро­вания, но де­мон­ст­ри­ру­ет осно­вы ис­поль­зо­вания за­го­
/home/chris/man:/usr/local/man:/usr/local/share/man:/usr/share/ лов­ков и из­менение шриф­та. Что­бы уз­нать все, про­чти­те man-
man страницу groff_man.
Man-страницы в Linux так­же хра­нят­ся в сжа­том ви­де: на­при­
мер, man-страница для grep на­хо­дит­ся в фай­ле grep.1.gz (где 1 –
но­мер раз­де­ла). На­бе­гание оп­ци­он­но­сти
Раз­вернем свои соб­ствен­ные Я под­счи­тал чис­ло оп­ций, опи­сан­ных на man-страницах 16 рас­про­
Сна­ча­ла man-страницы пи­са­ли на древнем язы­ке раз­мет­ки. Как странен­ных команд, и сравнил его в трех ди­ст­ри­бу­ти­вах �������� Unix����
/���
Li-
nux. В пер­вом столб­це ниже по­ка­за­ны ре­зуль­та­ты из ру­ко­во­дства для
ни стран­но, пи­шут до сих пор! Из­на­чаль­но этот язык об­ра­ба­ты­
шестой ре­дак­ции Unix (око­ло 1975 го­да). Вто­рой стол­бец –
вал­ся од­ной из двух про­грамм «вы­пуска» [runoff]: nroff генери­ из Ру­ко­­во­дства поль­зо­ва­те­ля для System V Release 4, да­ти­ро­ван­но­го
ро­ва­ла вы­вод на эк­ран тер­ми­на­ла или про­сто­го сим­воль­но­го 1990 го­дом, а тре­тий – из Ubuntu 9.04 2009 го­да. Частич­но я ру­ко­во­д­
пе­ча­таю­ще­го уст­рой­ства, а troff – для по­пу­ляр­но­го в те дни фо­то­ ство­вал­ся соб­ствен­ным мнением на­счет то­го, что счи­тать от­дель­ной
на­бор­но­го уст­рой­ства. Эти коман­ды бы­ли одним из пер­вых при­ оп­ци­ей, поэтому чис­ла мо­г ут слег­ка пла­вать, но, ду­ма­ет­ся, об­щее на­
прав­ление по­нят­но!
ме­ров генера­ции раз­но­го вы­во­да на осно­ве од­но­го и то­го же язы­
Ко­ман­да 1975 1990 2009 (*) Об­ра­ти­те вни­
ка раз­мет­ки и ранними пред­ше­ственника­ми раз­мет­ки на осно­ве
ма­ние: это чис­ло
XML и пре­об­ра­зо­ваний XSL. Язык раз­мет­ки остал­ся, а для фор­ сat 0 5 12 для ком­пи­ля­то­ра
ма­ти­ро­вания те­перь ис­поль­зу­ет­ся коман­да groff (за­ме­на GNU для cc 6 30 >500 (*) gcc, и оно не учи­ты­
nroff и troff). ва­ет ар­хи­тек­тур­но-
cmd 2 2 7 за­ви­си­мых оп­ций.
Язык раз­мет­ки ис­поль­зу­ет­ся не в «сы­ром» ви­де, а че­рез на­
бор мак­ро­па­ке­тов. Мan-страницы фор­ма­ти­ру­ют­ся мак­ро­па­ке­ cp 0 3 28
том «man». Осталь­ные мак­ро­па­ке­ты ис­поль­зу­ют­ся для дру­гих date 1 2 9
за­дач. Я генери­ро­вал свои ис­сле­до­ва­тель­ские от­че­ты в универ­-
diff 1 15 27
­си­те­те, под­ре­дак­ти­ро­вав мак­рос ‘mm’, и да­же це­лые книги
find 15 23 80
(вклю­чая клас­си­че­скую The C Programming Language) бы­ли напи­
са­ны имен­но та­ким об­ра­зом. grep 4 8 46
Да­вай­те на­пи­шем man-страницу для во­об­ра­жае­мой (и до­воль­ ln 0 3 13
но глу­пой) про­грам­мы, ко­то­рая пе­ре­ра­ба­ты­ва­ет ненуж­ные би­
ls 10 23 58
ты. Она счи­ты­ва­ет один или несколь­ко ука­зан­ных фай­лов и соз­да­
ет два вы­ход­ных: в од­ном из них со­дер­жат­ся все ну­ли из вход­ных mkdir 0 2 6
дан­ных, в дру­гом – все единицы. Вот ис­ход­ный код для man- mv 0 2 12
страницы, ис­поль­зую­щий мак­рос «man»: ps 4 12 84
.TH br 1 “” “” “User Commands”
rm 2 3 11
.SH NAME
br \- bit recycler sort 6 14 23
.SH SYNOPSIS wc 0 3 8
.B br

Сентябрь 2009 Linux Format      45


Как новый клиент, вы можете
сэкономить 390 рублей на первом
платеже за любой из рекламируемых
здесь продуктов. Просто используйте
код ваучера 011109 при совершении
заказа. Предложение действительно
до 15 октября 2009 года.
 Учебник

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

ЕВГЕНИЙ БАЛДИН
Начинал с Агатов.
В этом ме­ся­це вы нау­чи­тесь...
Когда-то даже знал,
что такое Робик. Создавать Рисовать
облака �������������������������� 48 небеса ������������������������� 52
Облачные вычисления – не прос- Космос – зачастую последний ру-
Получилось то очередной красивый термин беж, но только не для художников
как всегда Web 3.0: Энди Ченнел покажет, как GIMP! Изобразите звездное небо
хранить ваши файлы в Интернете. и исказите его по учебнику Майкла
Плюс: межсетевые экраны. Дж Хэммела.
Сроду такого не было, и вот опять!
Виктор Степанович Черномырдин Работать с RAW- Разбирать
снимками ������������������� 56 документы OOo ��� 60

С
лухами Земля полнится: Их не зря называют цифро­выми Нужно вытащить какие-то сведе-
негативами – Александр Толстой ния из файлов OpenOffice.org Writer
в школе будет Linux. САМ
покажет, как с их помощью можно или Calc? Марко Фиоретти вскроет
указал. Только результаты получить хорошие отпечатки с пло- их для вашего удобства...
выполнения указаний САМОГО весь- хих фотографий.
ма скромные, то есть почти никаких.
Про рассылку испорченных дисков
Писать Администри­
расширения ������������ 64 ровать VPN ������������� 68
с дистрибутивами ALT по школам все ...но есть и другой путь: получить Необходимо получить доступ
читатели уже слышали, и не раз, по- к ним доступ прямо изнутри офис- к внутренним ресурсам через ки-
этому повторяться и называть винов- ного пакета! Сергей Бачурин напи- шащий опасностями Интернет? Не
ников не буду: противно. Соб­ственно шет для OOo расширение на Python. бойтесь: Нейл Ботвик и OpenVPN
с IPSec придут к вам на выручку.
говоря, ничего удивительного в бес-
пардонном освоении денежных ресур- Читать твиты Понимать
сов нет. Таких компаний сейчас море, вслух ������������������������������ 72 лунатиков ����������������� 76
и не только в ИТ. Ими управляют под- Twitter хорош, но это просто буквы. Медицина здесь ни при чем – прос-
Напрягши свой программистский то Андрей Боровский начинает се-
час весьма неглупые люди, только все
мускул, Ник Вейч заставит его гово- рию статей о встраиваемом языке
эти неглупые деятели с хорошим за- рить человеческим голосом. Почти. программирования сценариев Lua.
работком занимаются ис­к лючительно
получением денег. Понятно, что цель
коммерче­ской фирмы – прибыль; но
Расширять Чинить NTFS ����������� 84
Scilab ������������������������������ 80 Как вы думаете, какая ОС лучше
странно, что эти день­ги их не застав- Проследуйте вместе с Александром всего подходит для починки диско-
ляют отрабатывать. Бикмеевым по всем шагам созда- вых разделов Windows? Ну конеч-
В финансируемых по остаточно- ния пакета расширений для свобод- но, Linux! Маянк Шарма сообщит
му принципу бюджетных организаци- ной системы компьютерной алгеб- все подробности.
ры Scilab.
ях, например, научных, трату каждо-
го рубля, скажем, на покупку жидкого
азота, требуют документировать, объ- Совет месяца: Ключи в безопасности
яснять, что жить без этого жидкого
азота нельзя, показывать емкость, где
Шифрование надежно охраняет наши данные, но пла- USB-брелок увидит файл, но не догадается о его
этот жидкий азот хранится – и не дай той за это являются пароли и парольные фразы, кото- предназначении. Ccrypt (http://ccrypt.sourceforge.net)
Бог, он оттуда испарился, даже если рые необходимо где-то держать. Пусть GPG-ключи является здесь неплохим выбором, так как сочетает
причиной была физика. А здесь весь- имеют встроенную защиту, но как быть с осталь- стойкость шифрования и легкость объединения с tar
ма немалые деньги ушли в никуда, ными? Записать их на USB-брелок и носить с собой по принципу:
и все ответственные довольны – это кажется неплохой идеей до тех пор, пока вы не поте- tar -c file1 file2 | ccencrypt >stuff
явно пахнет сверхприбылью. ряете флэшку, и ее содержимое не станет достоянием Для дешифровки используйте:
общественности. Даже GPG-ключ окажется под угро- ccdecrypt <stuff | tar -x
А что можем сделать мы? Пре-
жде всего, не поступать так никог- зой – файл с ним легко идентифицируется, и у зло- Если же вы хотите спрятать свои данные по-насто-
умышленника будет достаточно времени для атаки ящему, используйте Steghide (http://steghide.
да самим. Не пилить, не откатывать,
по словарю. sourceforge.net). Он встраивает их внутрь другого
а делать дело: в честности двигать
Иметь зашифрованный архив с важными дан- файла: фотоснимка или аудиозаписи.
открытое программное обеспечение. ными полезно по двум причинам: во-первых, его steghide embed --embedfile stuff --coverfile
Сложно конкурировать честно, но вы- содержимое защищено паролем (в случае GPG добав- img_1416.jpg
хода нет, так как за нами будущее. ляется новый уровень безопасности), во-вторых, оно Чтобы извлечь «шифровку», наберите
E.m.Baldin@inp.nsk.su уже не является самоочевидным. Нашедший ваш steghide extract --stegofile img_1416.jpg

Сентябрь 2009 Linux Format      47


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

Tonido: Об­лач­ный
Об­лач­ные вы­чис­ле­ния не значит «уда­лен­ные»; а не соз­дать ли соб­ст­вен­ное
об­ла­ко? Свет­лым зав­тра, бла­го­да­ря Эн­ди Ченнелу, под­клю­че­ний бу­дет боль­ше.

иметь воз­мож­ность об­ме­ни­вать­ся му­зы­кой и до­к у­мен­та­ми, а так­


же уда­лен­но под­к лю­чать­ся к ка­лен­да­рю, спи­ску за­дач и дру­гим
сер­ви­сам.
На­чать сле­д у­ет с за­груз­ки при­ло­же­ния с www.tonido.com. Дос­
туп­ны па­ке­ты для Linux, Windows и Mac OS X: Linux-вер­сия пред­
став­ле­на в ви­де Deb-фай­ла, ко­то­рый мож­но ус­та­но­вить в Ubuntu
или дру­гом ди­ст­ри­бу­ти­ве на ба­зе Debian. (Поль­зо­ва­те­ли SUSE
и Fedora со­об­ща­ют об удач­ной ин­стал­ля­ции при по­мо­щи пре­об­ра­
зо­ва­те­ля Alien, соз­даю­ще­го RPM-па­кет.)
За­гру­зив при­ло­же­ние, два­ж ­ды щелк­ни­те на фай­ле, что­бы
ус­та­но­вить его. Оно пол­но­стью кон­тро­ли­ру­ет­ся из web-брау­зе­
ра, по­это­му вы­бор икон­ки Tonido (ко­то­рая поя­вит­ся в При­ло­же­
ния > Ин­тер­нет) при­во­дит к за­пус­к у стан­дарт­но­го обо­зре­ва­те­ля
с http://127.0.0.1:10001/ui/core/index.html в ад­рес­ной стро­ке. Это IP-
ад­рес ло­каль­ной ма­ши­ны (так­же мо­жет ото­бра­жать­ся localhost),
с ука­за­ни­ем пор­та дос­т у­па (10001) и пу­ти к стар­то­вой стра­ни­це.
Пер­вое дей­ст­вие – соз­да­ние но­во­го про­фи­ля сер­ве­ра, по­это­
му на­жми­те Create Profile [Соз­дать про­филь]. При этом сле­д у­
ет ука­зать имя поль­зо­ва­те­ля – оно бу­дет при­ме­нять­ся в ка­че­ст­
ве ос­но­вы для ID имя@tonidoid.com и web-ад­ре­са http://имя.tonido.
com. Кро­ме то­го, бу­дет за­про­шен па­роль и связ­ка во­прос/от­вет,
ис­поль­зуе­мая для соз­да­ния до­пол­ни­тель­но­го слоя безо­пас­но­сти
при уда­лен­ном дос­т у­пе к сер­ве­ру. При вы­пол­не­нии этих дей­ст­вий
не­об­хо­ди­мо дей­ст­вую­щее под­к лю­че­ние к Ин­тер­не­т у, по­сколь­к у

О
б­лач­ные вы­чис­ле­ния проч­но во­шли в ос­нов­ное ИТ- ва­ше имя от­сы­ла­ет­ся сис­те­ме ав­то­ри­за­ции Tonido, по­зво­ляю­щей
рус­ло, раз уж та­кие ком­па­нии, как Amazon, Google пе­ре­на­прав­лять тра­фик к ва­ше­му сер­ве­ру че­рез Ин­тер­нет.
и Microsoft, пре­дос­тав­ля­ют це­лый ряд об­лач­ных сер­ По­сле соз­да­ния про­фи­ля он ста­нет дос­т уп­ным в ок­не про­фи­
ви­сов. А те­перь и вы смо­же­те: на дан­ном уро­ке мы соз­да­дим об­ лей. Вы­бе­ри­те имя и вве­ди­те па­роль (а так­же от­вет, ес­ли вы под­
лач­ный сер­вер с по­мо­щью про­грам­мы под на­зва­ни­ем Tonido. Мы клю­чае­тесь с дру­гой ма­ши­ны се­ти), за­тем на­жми­те кноп­к у Login
вы­пол­ним на­чаль­ную на­строй­к у для обес­пе­че­ния дос­т у­па к раз­ [Вход] для пе­ре­хо­да на глав­ную па­нель управ­ле­ния Tonido. Вы
Наш лич­ным служ­бам из на­шей до­маш­ней се­ти и из Ин­тер­не­та, что­бы уви­ди­те не­боль­шую икон­к у в ви­де солн­ца в сис­тем­ном лот­ке ра­
эксперт бо­че­го сто­ла. Ее мож­но ис­поль­зо­вать для бы­ст­рой на­строй­ки сер­
Энди Ченнел ве­ра – на­при­мер, вклю­че­ния web-дос­т у­па, а так­же для вы­к лю­че­
Эн­ди, ви­ди­мо, бу­ ния сер­ве­ра.
дет де­лать Пер­вые
ша­ги в Linux веч­но,
а тех­но­ло­гия­ми он
На­страи­ва­ем сер­ви­сы
за­ин­те­ре­со­вал­ся, В стан­дарт­ном Tonido име­ет­ся на­бор ус­та­нов­лен­ных при­ло­же­ний,
от­крыв для се­бя ко­то­рые при­ве­де­ны в спи­ске по ле­вой сто­ро­не эк­ра­на. На­стро­им
Dragon 32. не­ко­то­рые из них, а за­тем до­ба­вим не­сколь­ко до­пол­ни­тель­ных,
все это в ин­тер­фей­се брау­зе­ра.
Music В про­шлый раз мы ис­поль­зо­ва­ли Sockso для пе­ре­да­чи
му­зы­ки с сер­ве­ра на лю­бой ПК до­маш­ней се­ти. Та же за­да­ча ре­
ша­ет­ся в Tonido с по­мо­щью при­ло­же­ния Jukebox. Щел­чок на нем
при­ве­дет к за­пус­к у мас­те­ра, ко­то­рый по­зво­ля­ет до­бав­лять тре­
ки MP3 на сер­вер. На­жми­те Select [Вы­брать] и пе­рей­ди­те в ме­сто
рас­по­ло­же­ния ва­шей биб­лио­те­ки MP3-фай­лов. Tonido все­го лишь
Tonido ра­бо­та­ет на всех трех ос­нов­ных плат­фор­мах аб­со­лют­но про­ин­дек­си­ру­ет ва­шу кол­лек­цию, а са­ми фай­лы не бу­дут пе­ре­ме­
оди­на­ко­во, нев­взи­рая на ОС. ще­ны, по­это­му ес­ли что-то из биб­лио­те­ки бу­дет уда­ле­но, или вы

Месяц назад Мы ра­бо­та­ли с му­зы­кой че­рез Sockso и ор­га­ни­зо­ва­ли Basket.


48      Linux Format Сентябрь 2009
 Первые шаги Учебник

сер­вер для вас


от­мон­ти­руе­те внеш­ний диск, со­дер­жа­щий кол­лек­цию, то она бо­ Фо­то­гра­фии мо­
лее не бу­дет дос­т уп­на для по­то­ко­во­го вос­про­из­ве­де­ния. гут ис­поль­зо­вать­ся
По за­вер­ше­нии ин­дек­са­ции, у ле­во­го края ок­на долж­но поя­ со­вме­ст­но от­дель­
ны­ми людь­ми или
вить­ся дре­во фай­лов, со­дер­жа­щее всю ва­шу му­зы­к у. Прой­ди­тесь
груп­па­ми лю­дей.
по не­му до тех пор, по­ка не уви­ди­те от­дель­ные ком­по­зи­ции, за­тем
вы­бе­ри­те пес­ню, на­жми­те кноп­к у Play [Вос­про­из­ве­де­ние] и на­
сла­ж ­дай­тесь лю­би­мы­ми ме­ло­дия­ми. Кро­ме то­го, мож­но ис­поль­
зо­вать оп­цию Playlist (под ок­ном Collection) для соз­да­ния но­во­го
спи­ска вос­про­из­ве­де­ния, за­тем пе­ре­та­щить пес­ни из кол­лек­ции
и бро­сить на имя спи­ска. Как и в Sockso, спи­сок вос­про­из­ве­де­
ния мож­но от­кры­вать и ре­дак­ти­ро­вать на ло­каль­ной и уда­лен­ной
ма­ши­нах. Про­иг­ры­ва­тель мо­жет вос­про­из­во­дить спи­сок в слу­чай­
ном по­ряд­ке и вдо­ба­вок по­зво­ля­ет вы­би­рать ка­че­ст­во по­то­ка (по­
лез­но при ис­поль­зо­ва­нии в мед­лен­ной се­ти) – при­ло­же­ние пе­ре­
ко­ди­ру­ет звук на ле­т у.
Photos Мож­но соз­дать га­ле­рею фо­то­гра­фий, что­бы по­де­лить­
ся с друзь­я­ми. Для на­ча­ла в при­ло­же­нии Photos сле­ду­ет соз­дать лю­бых ка­та­ло­гов в ло­каль­ной се­ти или в Ин­тер­не­те, то есть пол­
груп­пу, к ко­то­рой бу­дет от­не­сен раз­де­ляе­мый ре­сурс [Share], ный дос­т уп воз­мо­жен с лю­бо­го ком­пь­ю­те­ра. Скорая
помощь
то есть са­ми фо­то­гра­фии. В раз­де­ле Shared Folders [Об­щие ка­ Notes Сис­те­ма Thots в Tonido – это лич­ный блог/жур­нал, ко­то­
та­ло­ги] сле­ва, вы­бе­ри­те Manage [Управ­ле­ние], а за­тем на­жми­те рый мо­жет ис­поль­зо­вать­ся для за­ме­ток, дос­т уп­ных с лю­бо­го ком­
При­ло­же­ние
Create Group [Соз­дать груп­пу]. За­дай­те имя груп­пы и ука­жи­те, бу­ пь­ю­те­ра. Thots хра­нит­ся ло­каль­но на ва­шей ма­ши­не, для до­бав­ Jukebox ис­поль­зу­
дет ли она от­кры­той [open] – в этом слу­чае все поль­зо­ва­те­ли ва­ ле­ния под­держ­ки Twitter мож­но вос­поль­зо­вать­ся ме­ню Settings ет Flash Player 10,
шей се­ти бу­дут иметь дос­т уп к ней – или за­кры­той [closed], то есть [На­строй­ки] у ле­во­го края эк­ра­на, то есть мож­но об­щать­ся на­пря­ по­это­му не­об­
не­об­хо­ди­мо бу­дет от­прав­лять при­гла­ше­ния. мую с ра­бо­че­го сто­ла и со­хра­нять ва­ши со­об­ще­ния. Что­бы вос­ хо­ди­мо обес­пе­
чить на всех кли­
Соз­дав груп­пу, на па­не­ли ин­ст­ру­мен­тов глав­но­го ок­на на­жми­ поль­зо­вать­ся этим, про­сто на­жми­те кноп­к у Add Thot [До­ба­вить
ен­тах об­нов­ле­ние
те Add New Share [До­ба­вить но­вый ре­сурс] и пе­рей­ди­те в ка­та­лог, Thot] и нач­ни­те ввод. По­сле на­жа­тия Submit [Ото­слать], ваш текст до этой вер­сии.
где рас­по­ло­же­ны фо­то­гра­фии, ко­то­ры­ми вы хо­ти­те по­де­лить­ бу­дет со­хра­нен служ­бой и ото­бра­жен в сти­ле лен­ты бло­га, где ка­
ся. Вы­бе­ри­те их, до­бавь­те в груп­пу, соз­дан­ную ра­нее, и на­жми­ ж­дое со­об­ще­ние со­про­во­ж ­да­ет­ся икон­ка­ми, ис­поль­зуе­мы­ми для
те Finish [За­вер­шить]. Те­перь в оп­ции Manage Shares [Управ­ле­ние ре­дак­ти­ро­ва­ния, уда­ле­ния или от­прав­ки со­об­ще­ния на Twitter.
ре­сур­са­ми] мож­но ви­деть до­бав­лен­ный ка­та­лог, а га­ле­рею изо­ Име­ет­ся да­же рас­ши­ре­ние Firefox для при­кре­п­ле­ния к Thot со­дер­
бра­же­ний мож­но от­крыть, вы­брав Browse [Про­смотр]. Щелк­ни­те жи­мо­го лю­бо­го web-сай­та. По­сле ус­та­нов­ки это­го мо­д у­ля и за­
на изо­бра­же­нии, что­бы про­смот­реть его в уве­ли­чен­ном ва­ри­ан­ пус­ка Tonido мож­но щелк­нуть на web-стра­ни­це пра­вой кноп­кой
те, или на­жми­те кноп­к у Slideshow, что­бы про­смот­реть ав­то­ма­ти­ мы­ши и при­кре­пить вы­де­лен­ную часть URL сай­та к Thot для ис­
че­ское слайд-шоу, ко­то­рое поя­вит­ся в цен­тре ок­на. Пре­иму­ще­ст­ поль­зо­ва­ния позд­нее. Ес­ли вы при­кре­п­ляе­те вы­де­ле­ние, то к не­
вом при­ло­же­ния для фо­то­гра­фий яв­ля­ет­ся то, что оно со­дер­жит му так­же до­бав­ля­ет­ся URL сай­та в ви­де ссыл­ки – весь­ма по­лез­
те ин­ст­ру­мен­ты, ко­то­рые вы мо­же­те ожи­дать от служб вро­де ное до­бав­ле­ние.
Flickr, вклю­чая тэ­ги, рей­тинг, ком­мен­та­рии и из­ме­не­ние раз­ме­ра
изо­бра­же­ния на ле­т у. Ес­ли зай­ти не­мно­го даль­ше, мож­но вы­пол­ Ра­бо­чее про­стран­ст­во
нять то же са­мое в web-при­ло­же­нии и пуб­ли­ко­вать со­дер­жи­мое На­пос­ле­док рас­смот­рим Workspace [Ра­бо­чее про­стран­ст­во], пре­
дос­тав­ляю­щее ка­лен­дарь, спи­сок за­дач, кон­так­ты, за­мет­ки и
фай­лы – все в од­ном мес­те; иде­а ль­ная штука, ес­ли вы ра­бо­тае­
те на не­сколь­ких ком­пь­ю­те­рах. Ра­бо­чее про­стран­ст­во име­ет свою
па­нель управ­ле­ния, пре­дос­тав­ляю­щ ую хо­ро­ший об­зор те­к у­ще­го
со­стоя­ния и имею­щ ую раз­дел, где мож­но до­бав­лять но­вые эле­ Скорая
помощь
мен­ты. Все они ра­бо­та­ют оди­на­ко­во, по­это­му до­бав­ле­ние со­бы­тия
ка­лен­да­ря про­ис­хо­дит по­доб­но пуб­ли­ка­ции фай­лов. Ес­ли вы хо­ти­
На­при­мер, что­бы до­ба­вить за­да­чу, пе­рей­ди­те в со­от­вет­ст­вую­ те иметь дос­т уп
щий раз­дел, на­жми­те кноп­к у Add [До­ба­вить], а за­тем вве­ди­те опи­ к Tonido из се­ти,
са­ние за­да­чи. Схо­жим об­ра­зом до­бав­ля­ет­ся эле­мент ка­лен­да­ря – то убе­ди­тесь, что
в раз­де­ле Settings
пе­рей­ди­те в его раз­дел, на­жми­те Add и вве­ди­те вре­мя, да­т у и те­му
> Network [На­
со­бы­тия. Оно поя­вит­ся в ка­лен­да­ре. строй­ка > Сеть]
В лю­бой мо­мент мож­но вер­нуть­ся об­рат­но к па­не­ли управ­ вклю­чен web-дос­
ле­ния и уви­деть об­щ ую кар­ти­ну то­го, чем вы за­ни­мае­тесь, или туп и что порт
взгля­нуть на вклад­к у Timeline [Вре­мен­ная шка­ла], что­бы уви­деть 10001 пе­ре­на­прав­
лен на кор­рект­ный
Из па­не­ли управ­ле­ния Tonido мож­но управ­лять сер­ве­ром свои дей­ст­вия в ви­де ре­ки ин­фор­ма­ции, по ко­то­рой мож­но пе­ре­ IP (см. стр. 50).
и его служ­ба­ми. ме­щать­ся и ко­то­рую мож­но усе­кать при по­мо­щи фильт­ра.

Сентябрь 2009 Linux Format      49


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

Firestarter: Пуск
Дер­жи­те пло­хих парней на рас­стоянии, пра­виль­но ис­поль­зуя свой бранд­мау­эр.

К
то недав­но пе­ре­шел с Windows, тот в кур­се, что су­ще­
ству­ют пло­хие парни, имею­щие свои ви­ды на ваш ком­
пь­ю­тер. Ис­поль­зо­вание Linux да­ет некую генети­че­скую
за­щи­т у от атак, но ис­поль­зо­вание бранд­мау­эра все еще важ­но.
Скорая Это при­ло­жение помещается ме­ж ­д у ком­пь­ю­те­ром или се­тью
помощь
и джунг­ля­ми Ин­тернета. Оно сле­дит за вхо­д я­щим и ис­хо­д я­щим
тра­фи­ком, обес­пе­чи­вая вы­яв­ление и пре­се­чение неже­ла­тель­ных
Да­же ес­ли вы ис­
поль­зуе­те в сво­ем или неав­то­ри­зо­ван­ных со­единений рань­ше, чем они соз­да­д ут
мар­шру­ти­за­то­ре про­бле­мы. На дан­ном уро­ке мы уста­но­вим Firestarter, про­ве­рим,
ап­па­рат­ный бранд­ что он ра­бо­та­ет эф­фек­тив­но, а за­тем до­ба­вим несколь­ко пра­вил,
мау­эр, не вред­но
что­бы та­кие при­ло­жения, как Tonido, Sockso (см. пре­ды­д у­щий но­
за­пус­тить еще
и про­грамм­ный. мер) или ваш кли­ент BitTorrent мог­ли соз­да­вать со­единения, необ­
хо­ди­мые им для ра­бо­ты. Кро­ме то­го, мы крат­ко рас­смот­рим вы­
полнение этих дей­ствий в боль­шин­стве по­пу­ляр­ных ап­па­рат­ных
бранд­мау­эров.
Firestarter досту­пен для Ubuntu, Fedora и Debian в обыч­ном
менед­же­ре па­ке­тов. (SUSE и Mandriva пред­ла­га­ют соб­ствен­ный Брандмауэр в OpenSUSE чуть-чуть от­ли­ча­ет­ся по ви­ду
Скорая гра­фи­че­ский ме­тод на­строй­ки встро­ен­но­го бранд­мау­эра Linux, от Firestarter, но ра­бо­та­ет так же.
помощь
доступ­ные в Yast и Цен­тре управ­ления Mandriva со­от­вет­ствен­
Ис­поль­зуй­те кноп­ но). Хо­тя ре­а ль­ные па­ра­мет­ры на­строй­ки бу­д ут от­ли­чать­ся, сам те­вое уст­рой­ство, по­сред­ством ко­то­ро­го вы под­к лю­чае­тесь
ку Lock Firewall про­цесс бу­дет та­ким же, по­сколь­к у все гра­фи­че­ские ин­ст­ру­мен­ к Ин­тернету. При­ло­жение долж­но вы­брать вер­ное уст­рой­ство ав­
[За­пе­реть бранд­ ты ра­бо­та­ют с одним и тем же ин­ст­ру­мен­том Linux под на­званием то­ма­ти­че­ски. Ско­рее все­го, IP-ад­рес при­сваи­ва­ет­ся вам по DHCP,
мау­эр] на па­не­
iptables. Это осо­бен­но вер­но для по­следней части уро­ка, где рас­ так что вы­бе­ри­те эту оп­цию и, ес­ли у вас со­единение по те­ле­фон­
ли ин­ст­ру­мен­тов
Firestarter, что­бы смат­ри­ва­ет­ся наи­бо­лее важ­ная кон­цеп­ция, да­же ес­ли ме­то­ды, ной линии, за­ставь­те бранд­мау­эр при­сту­пить к на­бо­ру но­ме­ра. На­
за­пре­тить дру­ в за­ви­си­мо­сти от ди­ст­ри­бу­ти­ва, немно­го раз­ли­ча­ют­ся. жми­те Да­лее, что­бы про­дол­жить.
гим поль­зо­ва­те­ На сле­д ую­щем эк­ране мож­но ука­зать, сле­д у­ет ли вклю­чить
лям от­к лю­чать
бранд­мау­эр.
Уста­нов­ка и за­пуск со­вме­ст­ное ис­поль­зо­вание ин­тернет-со­единения. Ес­ли вы соз­
Для на­ча­ла от­крой­те ваш менед­жер па­ке­тов и по­ищи­те по сло­ву дае­те локаль­ную сеть для до­ма, то важ­но уста­но­вить бранд­мау­эр
'firewall'. Вы­бе­ри­те из спи­ска доступ­ных при­ло­жений Firestarter на ком­пь­ю­те­ре, имею­щем пря­мой доступ к мо­де­му, а осталь­ные
и пре­доставь­те менед­же­ру па­ке­тов вы­полнить свою ра­бо­т у. Файл ком­пь­ю­те­ры се­ти смо­г ут под­к лю­чать­ся че­рез него (он дей­ству­ет
неве­лик, и за­груз­ка отнимет лишь несколь­ко се­к унд. По­сле уста­ как мар­шру­ти­за­тор) и бу­д ут за­щи­ще­ны бранд­мау­эром. На дан­ный
нов­ки вы об­на­ру­жи­те в ме­ню Ин­тернет панели При­ло­жения мо­мент для про­сто­ты мы про­иг­но­ри­ру­ем это, по­это­му вновь на­
но­вый пункт с именем Firestarter. Вы­бе­ри­те его для за­пуска при­ жми­те Forward [Да­лее], а за­тем Save [Со­хранить], что­бы со­хранить
Мас­тер Firestarter ло­жения и от­кры­тия масте­ра Firestarter, ко­то­рый про­ве­дет вас на­строй­ки и за­пустить бранд­мау­эр.
уп­ро­ща­ет бы­ст­рую че­рез про­цесс на­чаль­ной на­строй­ки. Что­бы при­сту­пить, на­
на­строй­ку бранд­
мау­эра.
жми­те Forward [Да­лее]. На пер­вом ша­ге на­до бу­дет ука­зать се­ За­пустил и за­был
В об­ласти уве­дом­лений ва­ше­го ра­бо­че­го сто­ла те­перь долж­
на поя­вить­ся неболь­шая яр­кая икон­ка с пра­вой стрел­кой, по­ка­
зы­ваю­щая, что бранд­мау­эр за­пу­щен, а так­же от­кро­ет­ся ок­но
для дальней­шей на­строй­ки или монито­рин­га. Мо­же­те щелк­нуть
на икон­ке пра­вой кноп­кой мы­ши, что­бы вы­вести ути­ли­т у на­строй­
ки или за­крыть бранд­мау­эр. Се­те­вая ак­тив­ность – на­при­мер, по­
пыт­ки со­единения – так­же влия­ют на пик­то­грам­му.
Во мно­гих слу­ча­ях те­перь вы мо­же­те пол­но­стью за­быть о том,
что бранд­мау­эр за­пу­щен. Он бу­дет пе­ре­хва­ты­вать все вхо­д я­
щие и ис­хо­д я­щие со­единения, что­бы убе­дить­ся в том, что про­
хо­д ят толь­ко ав­то­ри­зо­ван­ные под­к лю­чения. Стан­дарт­ная уста­
нов­ка под­хо­дит для са­мых обыч­ных нужд: Firestarter за­пуска­ет­ся
при за­груз­ке ком­пь­ю­те­ра и ис­поль­зу­ет наи­бо­лее па­ра­нои­даль­
ные на­строй­ки. Од­на­ко да­лее сле­д у­ет вы­полнить неболь­шие из­
менения в его ра­бо­те, что­бы раз­ре­шить некий из­бран­ный тра­фик.

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


50      Linux Format Сентябрь 2009
 Первые шаги Учебник

бранд­мау­эра Firestarter 1.0.3

Шаг за шагом: Про­дви­ну­тая на­строй­ка бранд­мау­эра

1 Ак­тив­ные со­единения 2 От­сле­жи­ва­ем со­бы­тия 3 За­да­ем пра­ви­ло со­единения


Стрел­ка внизу ок­на Firestarter, при щелч­ке на ней, Щелкните на вклад­ке Events [Со­бы­тия], что­бы Иногда нам необ­хо­ди­мо раз­ре­шить доступ
ото­бра­жа­ет раз­лич­ные ак­тив­ные со­единения. Ес­ уви­деть спи­сок всех бло­ки­ро­ван­ных по­пы­ток со­ в сеть дру­гим служ­бам – на­при­мер, BitTorrent или
ли у вас за­пу­щен Firefox, вы (ве­ро­ят­но) уви­ди­те по единения с ком­пь­ю­те­ром. Неко­то­рые из них – Tonido – а для это­го по­тре­бу­ет­ся пра­ви­ло безо­пас­
од­но­му со­единению для ка­ж ­дой вклад­ки. Source внут­ренние со­единения (их источник – 192.168.х.х), но­сти. Вы­бе­ри­те вклад­к у Policy [По­ли­ти­ки], убе­
[Источник] – это ваш IP-ад­рес, а Destination [На­ и мы мо­жем раз­бло­ки­ро­вать их, щелк­нув пра­вой ди­тесь, что ре­дак­ти­руе­те по­ли­ти­к у вхо­д я­ще­го
зна­чение] – сер­вер, к ко­то­ро­му вы под­к лю­чи­ кноп­кой мы­ши и вы­брав Allow Connections from тра­фи­ка [Inbound], и на­жми­те кноп­к у Add Rule [До­
лись. Web-со­единения идут че­рез порт 80. Source [Раз­ре­шить со­единения с источником]. ба­вить пра­ви­ло]. За­пустит­ся ути­ли­та на­строй­ки.

4 Оп­ре­де­ля­ем пра­ви­ла 5 Про­бра­сы­ва­ем пор­ты 6 Про­брос пор­тов в Linksys


Да­вай­те до­ба­вим пра­ви­ло, раз­ре­шаю­щее ра­бо­ Что­бы по­зво­лить ком­пь­ю­те­рам под­к лю­чать­ся Поль­зо­ва­те­ли мар­шру­ти­за­то­ров Linksys мо­
ту кли­ен­та BitTorrent. В имени служ­бы, вве­ди­ к оп­ре­де­лен­ным ма­ши­нам в ва­шей се­ти, щелкни- гут раз­ре­шить доступ в сеть при­ло­жениям ти­па
те на­звание пра­ви­ла, а за­тем до­бавь­те диа­па­зон те в раз­де­ле Forward в нижней части ок­на, вы­бе­ри­ Tonido или BitTorrent в раз­де­лах web-ин­тер­фей­са
пор­тов, по ко­то­рым раз­ре­ше­ны со­единения. Наш те Add [До­ба­вить] и вве­ди­те тре­буе­мую ин­фор­ма­ Applications [При­ло­жения] и Gaming [Иг­ры]. Вве­
кли­ент ра­бо­та­ет в диа­па­зоне 6881–6889, так что цию. В на­шем при­ме­ре, со­единения из Ин­тернета, ди­те имя, диа­па­зон пор­тов и IP-ад­рес пе­ре­на­прав­
до­ба­вим их, а за­тем убе­дим­ся, что со­единения при­хо­д я­щие на порт 8080 по­сред­ством HTTP, бу­д ут ления, за­тем на­жми­те Save Settings [Со­хранить
доступ­ны для всех поль­зо­ва­те­лей. На­жми­те Add на­прав­лять­ся ма­шине с IP-ад­ре­сом 192.168.1.103. на­строй­ки] для при­менения из­менений. При­ве­
[До­ба­вить], за­тем на панели ин­ст­ру­мен­тов на­жми­ ден­ный при­мер да­ет нам доступ к на­ше­му сер­ве­
те Apply Policy [При­менить по­ли­ти­к у]. ру Tonido из Ин­тернета.

Че­рез ме­сяц Мы опи­шем раз­де­ле­ние ре­сур­сов и ра­бо­т у в Ин­тер­не­те.


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

GIMP: Око­ло­све­
Хо­ти­те ис­сле­до­вать при­чуд­ли­вые но­вые ми­ры в по­исках вдох­но­вения?
Майкл Дж. Хэм­мел по­мо­жет со­вер­шить меж­звезд­ный пры­жок из GIMP.

ко сло­ев, и эта ра­бо­та не пе­ре­гру­зит мед­лен­ные систе­мы или


ма­лень­кие монито­ры. А глав­ное, это про­ект из ка­те­го­рии «сде­
лай сам», по­это­му охо­ты за сто­ко­вы­ми изо­бра­жения­ми на сей
раз не бу­дет. Я так­же опи­шу все бо­лее под­роб­но, чем обыч­
но, на слу­чай, ес­ли вы толь­ко что ста­ли про­дви­гать­ся к уров­ню
«на­чи­наю­щий».

Го­то­вим­ся в путь
От­кро­ем но­вое ок­но изо­бра­жения с бе­лым фо­ном и раз­ме­ра­ми
1250 × 1250 пик­се­лей – оно долж­но быть квад­рат­ным из-за вра­
щений, ко­то­рые мы сде­ла­ем поч­ти в са­мом кон­це про­цес­са; ес­ли
та­кой раз­мер ока­жет­ся тя­же­ло­ват для ва­шей систе­мы, про­сто по­
де­ли­те все раз­ме­ры по­по­лам. Конеч­ный ре­зуль­тат дол­жен по­лу­
чить­ся та­ким же, хо­тя и в по­ло­вин­ном мас­шта­бе.
Вы­бе­рем пря­мо­уголь­ное вы­де­ление на панели ин­ст­ру­мен­тов
и при­меним его в лю­бой точ­ке ок­на изо­бра­жения. Раз­мер и рас­по­
ло­жение ро­ли не иг­ра­ют: сей­час мы про­ста­вим их вруч­ную. В диа­
ло­ге па­ра­мет­ров ин­ст­ру­мен­та вы­бе­рем раз­мер 1250 × 40 пик­се­лей
и рас­по­ло­жение 0 × 605. Это даст нам вы­де­ление в 40 пик­се­лей
вы­со­той, пе­ре­кры­ваю­щее ши­ри­ну изо­бра­жения и рас­по­ло­жен­ное
по цен­тру хол­ста.
За­вер­шим вы­де­ление, на­жав Enter. Ско­пи­ру­ем (Ctrl+C) и вста­
вим (Ctrl+V) его в но­вый слой, ко­то­рый на­зо­вем «Шум». От­кро­ем
фильтр Бро­сок (Фильт­ры > Шум > Бро­сок) и уста­но­вим зна­чение

Д
ва пре­ды­ду­щих уро­ка вы тер­пе­ли­во пе­ре­жи­да­ли мой Слу­чай­ное зер­но на 10, Слу­чай­ность на 1 %, а По­вто­ров – на 2.
твор­че­ский взрыв; сей­час на­ста­ло вре­мя для ре­цеп­та Кликнем OK, что­бы при­менить из­менения к слою «Шум». За­меть­
менее слож­но­го и бо­лее при­год­но­го для точ­но­го вос­
про­из­ве­дения. Ес­ли вы про­во­ди­ли это ле­то где угод­но, кро­ме
за­са­ды за коль­цом Са­т ур­на, то на­вер­ня­ка знае­те, что по за­ко­ну
Наш меж­звезд­но­го пе­ре­се­ления душ омо­ло­жен­ный «Стар Трек» вновь
эксперт в про­ка­те. В его честь на уро­ке это­го ме­ся­ца я нау­чу вас до­бав­лять
Майкл эф­фект сверх­ско­ро­сти в ва­ши изо­бра­жения.
Дж. Хэммел На­ша цель в дан­ной ра­бо­те – по­лу­чить ре­зуль­тат, по­хо­жий
Уча­стник раз­ра­
на ви­ден­ный ва­ми в том са­мом «Звезд­ном Пу­ти» («Star Trek:
бот­ки GIMP и ав­
тор трех книг по The Motion Picture»), вы­шед­шем мно­го лет на­зад. Для всех, кто
дан­ной те­ма­ти­ке, не мо­жет, как Дей­та, в мгно­вение ока сдуть пыль заб­вения с бло­
вклю­чая са­мую но­ ка па­мя­ти, на­по­ми­на­ем: звез­до­лет «Эн­тер­прайз» вру­ба­ет све­
вую – «Эф­фек­ты
то­вую ско­рость и за­тя­ги­ва­ет вме­сте с со­бой асте­ро­ид, пре­вра­
в GIMP: ру­ко­
вод­ство для щая по­ле иска­жений в «кро­то­вую но­ру». На неко­то­рое вре­мя
ху­дожников». кадр раз­мы­ва­ет­ся, а по­том они раз­ру­ша­ют ка­мень. За­тем Кирк
отыг­ры­ва­ет­ся на сво­ем за­мести­те­ле за то, что тот вы­ста­вил его
в невы­год­ном све­те. В дан­ной ра­бо­те мы по­сле­д у­ем за на­ши­ми
бое­вы­ми то­ва­ри­щ а­ми че­рез про­стран­ство и оста­вим «кро­то­вую
но­ру» на штур­ма­на.

Для са­мых ма­лень­ких


Хо­тя ша­гов на этом уро­ке пре­доста­точ­но, ни один из них не пред­
став­ля­ет осо­бой труд­но­сти и не тре­бу­ет функ­ций сверх за­ло­жен­ Ес­ли Шот­лан­дец бу­дет жа­ло­вать­ся, что «GIMP’у на борт боль­ше
ных в по­след­нюю вер­сию GIMP (2.6). Мы соз­д а­дим все­го несколь­ од­но­го ка­пи­та­на не вле­зет» — не верь­те ему.

Месяц назад Мы над­да­ли жа­ру и соз­да­ли пре­крас­ную бо­ги­ню ог­ня.


52      Linux Format Сентябрь 2009
 GIMP Учебник

то­вая ско­рость
бра­жения немед­лен­но влия­ет на ши­ри­ну (и на­обо­рот). Но нам-
то нуж­но из­менить толь­ко вы­со­т у, так что щелкните по икон­ке Скорая
помощь
с це­поч­кой, спра­ва от этих двух по­лей, что­бы ра­зо­рвать связь ме­
ж­д у ними. Те­перь вы­со­та и ши­ри­на мас­шта­би­руе­мо­го объ­ек­та бу­
Ко­ли­че­ст­во штри­
дут ме­нять­ся неза­ви­си­мо друг от дру­га. хов пол­но­стью
По­сколь­к у слой, с ко­то­рым мы ра­бо­та­ем, по­на­ча­лу рас­по­ла­гал­ за­ви­сит от ве­ли­
ся по цен­тру, то при мас­шта­би­ро­вании он сов­па­дет с фо­ном. Ес­ли чи­ны шу­ма в слое
это­го не по­лу­чит­ся, при­мените ин­ст­ру­мент Вы­равнивание. Он тре­ «Шум». Хо­ти­те
боль­ше штри­
бу­ет щелк­нуть по оче­ре­ди на ка­ж ­дом из сло­ев в окне изо­бра­
хов – уве­личь­те
жения, по­это­му, что­бы слой «Шум» сов­пал с фо­ном, сна­ча­ла щел­ зна­че­ние.
ка­ем по слою фо­на, за­тем по слою Шум, за­тем при­ме­ня­ем оп­цию
Ори­ен­тир. Так как этот про­цесс мо­жет не по­на­до­бить­ся, остав­ляю
его как уп­ражнение для лю­бо­зна­тель­но­го чи­та­те­ля.
Ак­ти­ви­ро­вав слой «Шум» в диа­ло­ге сло­ев, объ­е­дините его
со сло­ем фо­на (Слой > Объ­е­динить с пре­ды­д у­щим). По­гло­щен­
ный слой по­лу­чит имя нижнего из объ­е­ди­няе­мых сло­ев, в дан­ном
слу­чае – «Фон».
На­стал мо­мент для ин­вер­ти­ро­вания цве­тов (Цвет > Ин­вер­
ти­ро­вать). Внезап­но ра­бо­та об­ре­та­ет фор­му, но штри­хи долж­
ны на­прав­лять­ся от внешней сто­ро­ны изо­бра­жения к цен­
тру. Пер­вый шаг здесь – пре­об­ра­зо­вать ко­ор­ди­на­ты изо­бра­жения
в полярные.
От­кры­ва­ем фильтр По­ляр­ные ко­ор­ди­на­ты (Фильт­ры > Иска­
Не ду­май­те, что от­пу­щен­ное нам про­стран­ст­во рас­хо­ду­ет­ся жения > По­ляр­ные ко­ор­ди­на­ты). Уста­нав­ли­ва­ем зна­чение Глу­би­на
вхо­ло­стую: ско­ро тут поя­вит­ся штри­хо­ван­ное по­ле ис­ка­же­ний. кру­га и Угол сме­

те, что зна­чения Зер­на и По­вто­ров мож­но из­ме­нять в со­от­вет­ствии


щения на ноль. Ес­
ли пер­вое зна­чение
«Изменение мас­шта­ба
с ва­ши­ми пред­поч­тения­ми, а уве­ли­чение шу­ма даст в ито­ге боль­
ше штри­хов. Тем не менее, из­ли­шек шу­ма за­гро­моз­дит окон­ча­
не бу­дет вы­став­
ле­но в ноль, иска­
пре­вра­тит шумовые
тель­ный ре­зуль­тат, по­это­му не пе­реусерд­ствуй­те. жение на­ло­жит­ся точ­ки в штрихи.»
Вы, воз­мож­но, за­ме­ти­ли, что фильтр Бро­сок по су­ти раски­ не на весь квад­рат
дал раз­но­цвет­ные точ­ки по те­к у­ще­му слою в пре­де­лах вы­де­ ок­на. Вто­рое зна­чение мож­но сде­лать, стро­го го­во­ря, ка­ким угод­
ления. Но для про­ек­та нам ну­жен не цвет, а толь­ко точ­ки. Обес­ но, и я вы­брал ноль: так бу­дет про­ще за­помнить. Внизу это­го диа­
цветь­те (Цвет > Обес­цве­тить) слой «Шум» с по­мо­щью на­с трой­ки
Све­ти­мость. Она вы­яв­ля­ет точ­ки луч­ше, чем Свет­ло­та и Среднее,
но вы воль­ны вы­брать дру­г ую функ­цию обес­цве­чи­вания, ес­ли
по­же­лае­те.
Кон­траст ме­ж ­ду точ­ка­ми и про­стран­ством мож­но уси­лить
с по­мо­щью диа­ло­га Уровни. Уста­но­ви­те точ­ки и Чер­но­го, и Бе­ло­
го, пред­став­лен­ные знач­ка­ми пи­пе­ток ме­ж ­д у гра­фи­ка­ми уровней
вво­да и уровней вы­во­да, в зна­чение 180. Щелкните OK для при­ня­
тия из­менений.

Точ­ки ста­но­вят­ся штри­ха­ми


По­ка что на­ши цве­та ин­вер­ти­ро­ва­ны для по­лу­чения эф­фек­
та сверх­ско­ро­сти (точ­ки – чер­ные, а фон бе­лый), но вско­ре
мы с этим раз­бе­рем­ся. А пре­ж ­де от­мас­шта­би­ру­ем слой Шум
до раз­ме­ров ок­на изо­бра­жения. Это пре­вра­тит точ­ки шу­ма в вер­
тикаль­ные штри­хи.
Из­меним раз­мер слоя Шум (Слой > Раз­мер слоя) По сним­кам вид­но, что на­строй­ка уров­ней сде­ла­ла шум тем­нее
до 1250 × 1250 пик­се­лей. На­строй­ки диа­ло­га мас­шта­би­ро­вания (до при­ме­не­ния уров­ней — сле­ва ввер­ху, по­сле — спра­ва вни­зу),
по умол­чанию вы­дер­жи­ва­ют про­пор­ции: из­менение вы­со­ты изо­ что впоследствии сде­ла­ет на­ши штри­хи бо­лее за­мет­ны­ми.

Сентябрь 2009 Linux Format      53


Учебник GIMP

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

ло­га есть три флаж­ка: Раз­вер­нуть, Ото­бра­зить свер­х у и В по­ляр­ в за­ви­си­мо­сти от ва­ших систем­ных ре­сур­сов, ок­но пред­про­смот­
ное, от­ме­тить нуж­но толь­ко по­следний. Две дру­гие оп­ции в этом ра мо­жет об­нов­лять­ся не сра­зу, так что на­бе­ри­тесь тер­пения. Вы­
при­ме­ре нам не нуж­ны, но их на­строй­ка не долж­на как-то силь­но ставь­те Тип раз­мы­вания на На­езд ка­ме­рой и от­цен­три­руй­те эф­
по­вли­ять на окон­ча­тель­ный ре­зуль­тат. фект, взяв зна­чения X = 625 и Y = 625 (фла­жок Раз­мыть на­ру­ж у
В за­ви­си­мо­сти от ва­ших пре­ды­ду­щих манипу­ля­ций со сло­ем дол­жен быть снят). Па­ра­метр дли­ны дол­жен ле­жать в диа­па­зоне
«Шум», штри­хи мо­г ут быть слиш­ком яр­ки­ми или слиш­ком туск­ от 50 до 100: боль­шие зна­чения сде­ла­ют штри­хи длиннее, но так­
лы­ми. Ес­ли они слиш­ком туск­лые, ско­пи­руй­те слой Фон и вы­ же мо­г ут и сде­лать их слиш­ком туск­лы­ми. В на­шем при­ме­ре дли­
ставь­те ре­жим слоя-ко­пии на Эк­ран. Ес­ли же штри­хов слиш­ком на рав­ня­ет­ся 100.
мно­го, вы­ставь­те ре­жим на Пе­ре­кры­тие. За­тем объ­е­дините эти На дан­ном эта­пе мож­но кое-что сде­лать для улуч­шения штри­
два слоя в один. хов. Ес­ли они туск­ло­ва­ты, дуб­ли­руй­те слой и вы­ставь­те ре­жим
слоя-ко­пии на Эк­ран, за­тем объ­е­дините эти два слоя. Ес­ли в ре­
Растя­ги­ва­ем по­ле зуль­та­те поя­вят­ся слиш­ком мно­го но­вых штри­хов, это мож­но под­
На­ше изо­бра­жение те­перь долж­но вы­гля­деть сла­бым по­до­бием пра­вить с по­мо­щью диа­ло­гов Кри­вые или Уровни. В мо­ей ра­бо­те
Скорая эф­фек­та сверх­ско­ро­сти. К сча­стью, GIMP да­ет нам ин­ст­ру­мен­ я при­менил Кри­вые и на­стро­ил ка­нал Зна­чения так, как по­ка­за­
помощь
ты для его улуч­шения. При­менение фильт­ра По­ляр­ные ко­ор­ди­на­ но на эк­ран­ном сним­ке вы­ше, что уси­ли­ло яр­кость близ­ле­жа­щих
По срав­не­нию ты слег­ка растя­ги­ва­ет штри­хи, но их нуж­но вы­тя­нуть еще даль­ штри­хов и вы­ве­ло из по­ля зрения бо­лее туск­лые.
с чер­ным фо­ном, ше. Сде­ла­ем это с по­мо­щью фильт­ра Раз­мы­вание дви­жением
в са­мом изо­
бра­же­нии цве­
(Фильт­ры > Раз­мы­вание > Раз­мы­вание дви­жением). Уч­ти­те, что, Ок­ра­ши­ва­ем по­ле
тов ма­ло­ва­то. Пре­ж ­де чем пе­рей­ти к фи­наль­ным дей­стви­ям, ок­ра­сим бе­
Ис­поль­зо­ва­ние лые штри­хи, что­бы они боль­ше по­хо­ди­ли на эф­фект из филь­
боль­шин­ст­ва ре­ ма. Сна­ча­ла убе­ди­тесь, что у вас в на­ли­чии все­го один слой,
жи­мов сло­ев то есть Фон. Ес­ли сло­ев боль­ше, объ­е­дините их все, оста­вив толь­
здесь не име­ет
ко фон. Ско­пи­руй­те фо­но­вый слой. От­крой­те диа­лог Тониро­вать
смыс­ла, по­сколь­
ку мно­гие из них (Цвет > Тониро­вать), вы­ставь­те зна­чения 220, 90 и -40 для то­на,
бу­д ут вы­чи­тать на­сы­щен­но­сти и осве­щен­но­сти со­от­вет­ствен­но. За­тем при­мените
штри­хи пря­мо эти на­строй­ки к слою. На­зо­ви­те его «Синий» (на­строй­ки ок­ра­сят
из кар­тин­ки.
штри­хи в синий цвет). Те­перь вы­ста­вим ре­жим слоя на Эк­ран и по­
вернем его на 90 гра­д у­сов по ча­со­вой стрел­ке (Слой > Пре­об­ра­зо­
вания > По­вер­нуть на 90 гра­д у­сов по ча­со­вой стрел­ке).
По­кон­чив с синим цве­том, до­ба­вим крас­ных штри­хов. Для это­
го сно­ва вы­бе­рем в диа­ло­ге сло­ев слой Фон, сно­ва от­кро­ем диа­
лог Тониро­вать и на сей раз вы­ста­вим зна­чения 360, 60 и -40 для
то­на, на­сы­щен­но­сти и осве­щен­но­сти со­от­вет­ствен­но. Слой от­
тенит­ся крас­ным. От­ме­чу, что крас­ные штри­хи де­ла­ют­ся ви­ди­
мы­ми бла­го­да­ря то­му, что ре­жим синего слоя вы­став­лен на зна­
чение Эк­ран. В изо­бра­жениях по­доб­но­го ти­па – то есть сде­лан­ных
на осно­ве чер­но­го и ка­ко­го-то дру­го­го цве­та – ре­жим Эк­ран дей­
ству­ет ана­ло­гич­но ре­жи­му До­бав­ление: пик­се­ли слоя в ре­жи­ме
Эк­ран при­бав­ля­ют­ся к пик­се­лям ниже­ле­жа­ще­го слоя. Впро­чем,
При­ме­нив фильтр По­ляр­ные ко­ор­ди­на­ты к ин­вер­ти­ро­ван­ным чер­ные пик­се­ли в слое, на­хо­д я­щем­ся в ре­жи­ме Эк­ран, не из­ме­нят
штри­хам, мы соз­да­ли ос­но­ву для на­ше­го эф­фек­та сверх­ско­ро­сти. внешний вид пик­се­лей в ниже­ле­жа­щем слое.

54      Linux Format Сентябрь 2009


 GIMP Учебник

По­во­рот верх­не­го слоя сме­ща­ет штри­хи, а ре­жим Эк­ран де­ла­ет


ви­ди­мы­ми крас­ные штри­хи ниж­не­го слоя.

Несколь­ко пра­вок Начнем с но­во­го про­зрач­но­го слоя. На­зо­вем его «Гра­ди­ент­ная


С по­мо­щью на­
стро­ек в диа­ло­
Мы уже близ­ки к окон­ча­тель­но­му про­д ук­т у, но ин­тен­сив­ность вспыш­ка». Вы­зо­вем фильтр из ме­ню Фильт­ры > Свет и тень > Гра­ ге Гра­ди­ент­ной
штри­хов мож­но еще уси­лить. Вы­бе­ри­те слой «Фон» и от­крой­ ди­ент­ная вспыш­ка и щелкнем по пунк­т у Distant_Sun во вклад­ке вспыш­ки мы по­лу­
те диа­лог Уровней. В по­ле зна­чений ука­жи­те 25 и 170 для Чер­ной Тип вспыш­ки. В нижней части ок­на диа­ло­га на­жмем кноп­к у Ко­пи­ чи­ли да­ле­кую звез­
и Бе­лой точ­ки со­от­вет­ствен­но. Те­перь вы­бе­рем Синий слой и сно­ ро­вать и на­зо­вем ко­пию «Сверх­ско­рость». Вы­де­лив ее в спи­ске, ду в цен­тре по­ля
ва от­кро­ем диа­лог. На этот раз вы­ста­вим зна­чение 170 для Бе­лой кликнем по кноп­ке Из­менить для за­пуска диа­ло­га ре­дак­то­ра Гра­ ис­ка­же­ний.
точ­ки и 0 – для Чер­ной. ди­ент­ной вспыш­ки.
Во вклад­ке Об­щий вид уста­но­вим ре­жим Ри­со­вания све­чения
Соз­да­ем звез­ду в цен­тре на Обыч­ный, Непро­зрач­ность на 100, ре­жим Ри­со­вания лу­чей
На этом эта­пе изо­бра­жение в основ­ном го­то­во, но по­че­му бы на Обыч­ный, Непро­зрач­ность на 90, а ре­жим Вто­рой вспыш­
не до­ба­вить изю­мин­к у: са­мое вре­мя по­местить звез­д у в цен­тре ки – на Обыч­ный с непро­зрач­но­стью 0: в этом гра­ди­ен­те
по­ля иска­жений. мы не бу­дем ее ис­поль­зо­вать.
На это имеется несколь­
ко спо­со­бов. К при­ме­ру, мож­
«Чер­ные пик­се­ли в ре­ Те­перь вы­бе­рем вклад­к у Све­
чение. На­стро­им Ра­ди­а ль­ный
но ис­поль­зо­вать мяг­к ую кисть
нуж­но­го раз­ме­ра. Так­же по­
жи­ме Эк­ран не ме­ня- гра­ди­ент на %white_grd, Уг­
ло­вой гра­ди­ент – на %white,
мог бы фильтр Сверх­но­вая, ют вид ниж­не­го слоя.» а Гра­ди­ент уг­ло­вой про­тя­жен­
или же, ес­ли мы хо­тим по­лу­ но­сти – на %white. В па­ра­мет­
чить звез­д у выс­ше­го ка­че­ства, мож­но бы­ло бы по­ра­бо­тать с на­ рах вы­ста­вим Раз­мер 10%, Вра­щение мож­но оста­вить на ну­ле,
строй­ка­ми фильт­ра Соз­дание сфе­ры. Но для этой ра­бо­ты я вы­ а Вра­щение то­на оста­вим 55.0.
брал все-та­ки фильтр Гра­ди­ент­ная вспыш­ка. Во вклад­ке Лу­чи вы­ста­вим ра­ди­а ль­ный гра­ди­ент
на %white_grd, Уг­ло­вой гра­ди­ент – на %Flare Glow Angular 1, а Гра­ Скорая
помощь
ди­ент уг­ло­вой про­тя­жен­но­сти – на %random. В па­ра­мет­рах ука­
жем 104 для Раз­ме­ра, 140 – для Вра­щения, -12 для Вра­щения то­ Уда­лен­ное звезд­
на, 63 для Чис­ла пя­тен и 90 для Тол­щи­ны пя­тен. ное не­бо за по­лем
На­конец, щелкнем по икон­ке OK для при­ня­тия из­менений, за­ ис­ка­же­ний – это
тем сно­ва OK в диа­ло­ге Гра­ди­ент­ной вспыш­ки для при­менения на­ еще од­на воз­
мож­ная до­пол­ни­
стро­ек к про­зрач­но­му слою, соз­дан­но­му ранее. Вспыш­к у мож­но
тель­ная де­таль.
ок­ра­сить с по­мо­щью диа­ло­га Тониро­вать. В мо­ей ра­бо­те я ок­ра­ Соз­д ай­те слой
сил ее жел­тым. с шу­мом, обес­
цветь­те его и по­
По­следние штри­хи мес­ти­те на са­мый
верх стоп­ки сло­ев.
По­следнее дей­ствие в на­шем ри­сун­ке оп­цио­наль­но – по­про­буй­ Что­бы спря­тать
те и по­смот­ри­те, улуч­шится ли он от этого. За­кон­чив свою ра­бо­ звез­ды за штри­
ту, я уви­дел, что при про­смот­ре ри­сун­ка в пол­ном раз­ме­ре штри­ ха­ми, до­бавь­те
хи до­воль­но силь­но раз­ла­га­ют­ся на со­став­ные пик­се­ли (как мас­к у слоя и ско­
пи­руй­те ту­д а все
пра­ви­ло, я ра­бо­таю, немно­го умень­шив мас­штаб изо­бра­жения).
слои со штри­ха­ми.
Для кор­рекции данного эф­фекта я при­менил к ка­ж ­до­му слою
По­сле не­ко­то­рых на­стро­ек на кон­цах штри­хов долж­ны поя­вить­ся Гауссо­во раз­мы­вание раз­ме­ром в три пик­се­ля. Однако это слег­
си­не­ва­тые и бо­лее яр­кие про­жил­ки, по­сте­пен­но ис­че­заю­щие ка осветля­ет изо­бра­жение, так что мо­г ут по­надо­бить­ся дальней­-
в про­стран­ст­ве. шие на­строй­ки с по­мо­щью диа­ло­гов Уровни и Кри­вые.

Через месяц Ищем сто­ко­вые объ­ек­ты в по­все­днев­но­сти во­круг нас.


Сентябрь 2009 Linux Format      55
Циф­ро­вой не­га­тив Как из­влечь мак­си­мум
из воз­мож­но­стей ва­шей фо­то­ка­ме­ры

Raw: В чем его


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

С
е­го­дня мы по­го­во­рим не про­сто о циф­ро­вой фо­то­гра­ при несколь­ких лам­пах раз­ной мощ­но­сти. Ав­то­ма­ти­че­ский ба­
фии, а о циф­ро­вых нега­ти­вах, ко­то­рые так­же на­зы­ва­ ланс бе­ло­го в фо­то­ка­ме­рах часто оши­ба­ет­ся: в та­ких слу­ча­ях
ют­ся RAW-сним­ка­ми. RAW – это спе­ци­а ль­ный фор­мат на по­мощь при­хо­дит RAW.
(а точнее, се­мей­ство фор­ма­тов) для хранения необ­ра­бо­тан­ных
дан­ных, по­лу­чен­ных с сен­со­ра циф­ро­вой фо­то­ка­ме­ры. Тер­мин Бе­лее бе­ло­го
Наш «циф­ро­вой нега­тив» был пред­ло­жен Adobe (и до­полнен ее соб­ Фор­мат RAW обес­пе­чи­ва­ет не столь­ко боль­шую сво­бо­д у дей­
эксперт ствен­ным стан­дар­том DNG – Digital Negative) и при­зван под­черк­ ствий со сним­ком, сколь­ко бо­лее точ­ный кон­троль над цве­том
Алек­сандр нуть со­хранение наи­бо­лее пол­ной ин­фор­ма­ции о сним­ке и, од­но­ и де­та­ли­за­ци­ей. На­при­мер, для кор­рек­ти­ров­ки невер­но­го ба­
Тол­стой вре­мен­но, необ­хо­ди­мость его до­полнитель­ной «про­яв­ки» – как лан­са бе­ло­го в GIMP пре­д у­смот­ре­ны пунк­ты Цве­то­вой ба­ланс
Ре­д ак­ти­ро­вал
и пе­ре­во­дил LXF пра­ви­ло, при по­мо­щи спе­ци­а ль­ных RAW-кон­вер­то­ров. и Ав­то­под­строй­ка ба­лан­са, ко­то­рые по­зво­ля­ют ра­бо­тать лишь
на пер­вых по­рах Вы мо­же­те часто слы­шать от фо­то­гра­фов мнение о том, что «на глаз». В RAW-ре­д ак­то­рах, та­ких как RAW Therapee, мож­но
его су­ще­ст­во­ва­ RAW – бо­лее «про­фес­сио­наль­ный» фор­мат, чем, ска­жем, JPEG; спе­ци­а ль­ной пи­пет­кой ткнуть в об­ласть сним­ка, ко­то­рая долж­на
ния, а те­перь по­ од­на­ко ма­ло кто спо­со­бен ука­зать на кон­крет­ные пре­иму­ще­ быть бе­лой (на­при­мер, лист бу­ма­ги, блик), и ба­ланс бе­ло­го бу­дет
свя­щ а­ет сво­бод­ное
ства. Все зна­ют, что RAW хранит боль­ше дан­ных, но как ими ав­то­ма­ти­че­ски восста­нов­лен. В слу­чае, ес­ли в кад­ре нет пред­ме­
вре­мя циф­ро­вой
фо­то­гра­фии. восполь­зо­вать­ся? Ниже бу­дет при­ве­де­на как об­щ ая ин­фор­ма­ тов бе­ло­го цве­та, про­бле­му мож­но ре­шить ука­занием наи­бо­лее
ция, так и кон­крет­ные при­ме­ры удач­ной «про­яв­ки» циф­ро­вых прав­до­по­доб­но­го се­ро­го от­тен­ка или за­д ать цве­то­вую тем­пе­ра­
нега­ти­вов. ту­ру вруч­ную.
Что­бы из­влечь поль­зу от RAW, нуж­но знать сле­д ую­щее: Для тех, кто при­вык оценивать рас­пре­де­ление цве­тов в сним­ке
RAW-снимок не об­ра­ба­ты­ва­ет­ся про­цес­со­ром фо­то­ка­ме­ры, по гисто­грам­ме, съем­ка в RAW по­зво­ля­ет уст­ранить недоста­ток,
и это хо­ро­шо! Встро­ен­ные в ка­ме­ры мик­ро­про­цес­со­ры про­сто при­сут­ствую­щий у всех циф­ро­вых ка­мер: де­ло в том, что чув­стви­
обя­за­ны пре­об­ра­зо­вы­вать дан­ные с сен­со­ра в ито­го­вый JPEG бы­ тель­ность мат­ри­цы к зе­ле­но­му цве­т у вы­ше, чем к синему и крас­
ст­ро, за 1‑2 се­к ун­ды, и это за­частую пло­хо влия­ет на де­та­ли­за­ но­му. Для ком­пен­са­ции это­го эф­фек­та элек­троника ка­ме­ры вы­
цию сним­ка. став­ля­ет раз­ные ко­эф­фи­ци­ен­ты ба­лан­са бе­ло­го для ка­на­лов
Цве­то­вой ох­ват RAW все­гда боль­ше, чем у JPEG (ис­поль­зу­ет­ RGB, из-за че­го очень часто слу­ча­ет­ся клип­пинг (об­рез­ка) зе­ле­
ся про­стран­ство sRGB). Это зна­чит, что при об­ра­бот­ке сним­ка фо­ но­го цве­та. При этом стан­дарт­ная гисто­грам­ма не от­ра­жа­ет дан­
то­ка­ме­ра вы­ре­за­ет часть цве­тов – иногда это мо­жет ока­зать­ся ный де­фект. RAW (но не JPEG!) по­зво­ля­ет обой­ти эту про­бле­му
су­ще­ствен­ным. и уст­ранить зна­чи­тель­ное ко­ли­че­ство пе­ре­све­чен­ных и недосве­
Рис. 1. Блед­но- Для RAW не име­ет зна­чения вы­став­лен­ный при съем­ке ба­ чен­ных об­ластей. Для это­го нуж­но вруч­ную вы­ста­вить ба­ланс
пур­пур­ная ми­шень ланс бе­ло­го – его мож­но за­дать на ком­пь­ю­те­ре. Это очень важ­ бе­ло­го по блед­но-пур­пур­ной ми­шени (рис. 1) так, что­бы ка­ме­ра
вы­гля­дит при­мер­ но при съем­ке в слож­ных усло­ви­ях осве­щения – на­при­мер, воспринима­ла ее как се­рый цвет, со­хранить на­строй­ки ба­лан­са
но так.

Рис. 2. RAW-сним­
ки ох­ва­ты­ва­ют
боль­ший цве­то­вой
диа­па­зон и обес­пе­
чи­ва­ют мяг­кость
пе­ре­хо­дов.

56      Linux Format Сентябрь 2009


 Об­ра­бот­ка сним­ков Учебник

си­ла?

Рис. 3. Не­удач­ное ос­ве­ще­ние при­во­дит


к шу­му в по­лу­то­нах прак­ти­че­ски для всех
от­тен­ков.

бе­ло­го в ка­ме­ре в ви­де пре­дуста­нов­ки и при­сту­пить соб­ствен­но ствен­ной по­те­ри де­та­лей. При этом сте­пень сжа­тия внут­ри JPEG
к съем­ке. Есте­ствен­но, пред­ва­ри­тель­ный про­смотр бу­дет по­ка­зы­ ре­шаю­ще­го зна­чения не име­ет: в ка­че­стве при­ме­ра на ри­сун­ке
вать «зе­ле­ное» изо­бра­жение; именно это в дан­ном слу­чае и нуж­ был ис­поль­зо­ван файл с ко­эф­фи­ци­ен­том сжа­тия 85 – в боль­шин­
но. Сле­ду­ет от­ме­тить, что нуж­но снимать в «чистом» RAW – JPEG стве фо­то­ка­мер это счи­та­ет­ся стан­дарт­ным или да­же минималь­
и да­же RAW+JPEG не го­д ят­ся, так как в де­ло вме­ша­ет­ся ав­то­ма­ти­ ным сжа­ти­ем. Но да­же при ко­эф­фи­ци­ен­те 100 снимок в JPEG
ка ка­ме­ры, что в на­шем слу­чае про­ти­во­по­ка­за­но. уже «за­мы­лен» в де­та­лях, что косвен­но под­твер­ж да­ет­ся раз­ме­
Для на­гляд­но­сти по­смот­ри­те на рис. 2. Снимок был сде­лан ром фай­ла (4,1 МБ про­тив 18 МБ для несжа­то­го TIFF). По­это­му
в двух ва­ри­ан­тах: с пе­ре­зе­ленением и по­сле­дую­щей кор­рек­ти­ров­ занимать­ся уда­лением шу­ма же­ла­тель­но с несжа­тым сним­ком –
кой ба­лан­са бе­ло­го в пер­вом слу­чае и с ав­то­ма­ти­че­ским ба­лан­ то есть в фор­ма­те RAW или TIFF (по­следний под­дер­жи­ва­ет­ся
сом бе­ло­го во вто­ром. Внешне сним­ки оди­на­ко­вы, но по­смот­рим ма­лым чис­лом лю­би­тель­ских фо­то­к а­мер).
на гисто­грам­му зе­ле­но­го цве­та: у пер­во­го она ох­ва­ты­ва­ет за­мет­но Для уда­ления шу­ма из это­го сним­ка я восполь­зу­юсь встро­
боль­ший цве­то­вой диа­па­зон и от­ра­жа­ет бо­лее мяг­кие цве­то­вые ен­ным в RAW Therapee «шу­мо­да­вом» – Luminance Noise
пе­ре­хо­ды, без кон­тра­ст­ных скач­ков. Reduction. Здесь есть два пол­зун­ка: один от­ве­ча­ет за ра­диус шу­
На де­ле, ис­поль­зуя опи­сан­ную вы­ше технику, вы по­лу­чи­те мо­вых бло­ков (от 0,5 до 2,5 пик­се­ля), а вто­рой – за со­хранение
сним­ки с бо­лее ши­ро­ким цве­то­вым ох­ва­том и ди­на­ми­че­ским диа­ кра­ев и рез­ких очер­таний. Од­на­ко мой снимок доста­точ­но тем­
па­зо­ном – как раз в этом циф­ро­вая фо­то­гра­фия немно­го усту­па­ет
пле­ноч­ной. Как ви­ди­те, раз­рыв мож­но со­кра­тить.

Не шу­меть!
Ра­зо­брав­шись с ба­лан­сом бе­ло­го, пе­рей­дем к шу­мам. На рис. 3
пред­став­лен снимок, сня­тый при искусствен­ном осве­щении и вы­
со­ком зна­чении ISO.
Несмот­ря на то, что ис­поль­зо­ва­лась непло­хая зеркаль­ная ка­
ме­ра Canon EOS 300D, сен­сор ко­то­рой «шу­мит» несиль­но, нетруд­
но уви­деть шум в по­лу­то­нах прак­ти­че­ски всех от­тен­ков. Конеч­
но, его мож­но уда­лить и с по­мо­щью рас­ши­рений GIMP (LXF112),
но есть спо­соб луч­ше. Де­ло в том, что снимок в фор­ма­те JPEG со­
дер­жит уже об­ра­бо­тан­ные про­цес­со­ром фо­то­ка­ме­ры пик­сель-­
ные бло­ки, ко­то­рые яв­ля­ют­ся след­стви­ем при­ме­няе­мо­го в нем
ал­го­рит­ма сжа­тия. Шум, ко­то­рый пред­став­ля­ет со­бой цве­то­вые
бло­ки раз­ме­ром в 1‑2 пик­се­ля, ока­зы­ва­ет­ся «пе­ре­ме­шан» ал­го­
рит­мом сжа­тия JPEG (рис. 4).
Нетруд­но до­га­дать­ся, что лю­бой про­грамм­ный «шу­мо­дав» уже
Рис. 4. Так вы­гля­дит уве­ли­чен­ный фраг­мент изо­бра­же­ния в раз­ных фор­ма­тах.
не смо­жет эф­фек­тив­но уда­лить шум из фай­ла JPEG без су­ще­

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


Сентябрь 2009 Linux Format      57
Учебник Об­ра­бот­ка сним­ков

Со­ве­ты по ис­поль­зо­ва­нию
Raw в Linux
Что­бы вам ра­бо­та­лось с Raw  За­пусти­те gnome-system-mo­
удобней и при­ятней, доста­точ­но nitor или KSysGuard, что­бы убе­
сле­до­вать неслож­ным ре­ко­мен­ дить­ся, что об­ра­бот­ка Raw
да­ци­ям. за­гру­жа­ет про­цес­сор под за­вяз­
 Для под­дер­жи­вае­мых Raw- ку. Пе­ре­со­бе­ри­те яд­ро Linux, оп­
фай­лов мож­но на­ла­дить ото­ ти­ми­зи­ро­вав его под ва­шу ар­хи­
бра­жение миниа­тюр в Nautilus. тек­т у­ру и с оп­ци­ей Low latency
Убе­ди­тесь, что у вас уста­нов­ desktop (по­вы­ша­ет про­из­во­ди­
лен gnome-raw-thumbnailer (его тель­ность при мно­го­за­д ач­но­сти).
мож­но по­лу­чить с од­но­имен­­- При ис­поль­зо­вании от­кры­то­го
но­го сай­та). Поль­зо­ва­те­ли KDE Raw-ре­дак­то­ра ти­па RawStudio
могут про­сматривать миниа­тюры есть смысл со­брать его са­мо­
в DigiKam. стоя­тель­но из ис­ходников, ис­
 Не храните ито­го­вые вер­сии поль­зо­вав фла­ги оп­ти­ми­за­
сним­ков в JPEG. Все­гда луч­ше ции GCC.
со­хранить циф­ро­вой нега­тив, ко­  Ес­ли у вас мно­го Raw-фай­
то­рый при необ­хо­ди­мо­с ти мож­ лов, то са­мым на­деж­ным спо­со­
но за­ар­хи­ви­ро­вать. Ко­эф­фи­ци­ бом хранения их на вин­че­сте­ре
ент сжа­тия обыч­но неве­лик, но бу­дет соз­дание от­дель­но­го раз­
(по мо­ему опы­т у) эф­фек­тивнее де­ла ext2. От­сут­ствие жур­на­ли­
все­го ис­поль­зо­вать RAR с мак­ ро­вания пре­крас­но до­пол­ня­ет
си­маль­ным уровнем ком­прес­сии спе­ци­фи­к у Raw: нега­тив дол­жен
(rar a -m5 ар­хив.rar фай­лы). быть неиз­менен.

изо­бра­жение яв­ля­ет­ся 12‑ или 14‑бит­ным (а JPEG – толь­ко 8‑бит­


ным), а это зна­чит, что на ка­ж ­дый из ка­на­лов RGB при­хо­дит­ся по
несколь­к у до­полнитель­ных би­тов дан­ных. На прак­ти­ке этим мож­
но восполь­зо­вать­ся при об­ра­бот­ке за­темнен­ных сним­ков, сде­
лан­ных но­чью или при сла­бом све­те. Ин­фор­ма­ция в тем­ной части
сним­ка, как пра­ви­ло, не по­те­ря­на пол­но­стью – ее мож­но восста­
но­вить. Для это­го в RAW-ре­дак­то­рах пре­д у­смот­ре­на функ­ция
кор­рек­ции вы­держ­ки. В фо­то­ка­ме­ре, вы­держ­ка (или экс­по­зи-
­ция) оп­ре­де­ля­ет ко­ли­че­ство све­та, ко­то­рое успе­ва­ет по­пасть
Рис. 5. За­све­чен­ные об­лас­ти до и по­сле при­ме­не­ния «шу­мо­да­ва».
на сен­сор, а при ра­бо­те с фай­лом RAW этот па­ра­метр мож­но из­
ме­нять. Вы­держ­ка – не то же са­мое, что уровни, яр­кость или осве­
ный, и вы­ста­вить па­ра­мет­ры «на глаз» труд­но. Что­бы ре­шить про­ щен­ность в GIMP. Ес­ли не вда­вать­ся в под­роб­но­сти, основ­ное
бле­му, нуж­но вклю­чить ото­бра­жение про­бо­ев чер­но­го и бе­ло­го от­ли­чие со­сто­ит в том, что при уве­ли­чении вы­держ­ки снимок ста­
цве­та. Щелкнем по пик­то­грам­мам в ви­де зна­ка «Про­чие опас­но­ но­вит­ся свет­лее, но без про­би­вания бе­лых «дыр» на месте свет­
сти» – на сним­ке бу­д ут по­ка­за­ны об­ласти, за­ли­тые чистым чер­ лых уча­ст­ков (от­ли­чие от Brightness) и с со­хранением есте­ствен­
ным и чистым бе­лым, то есть те, в ко­то­рых нет по­лу­то­нов. По­сле ной кон­тра­ст­но­сти (от­ли­чие от Lightness).
это­го, ре­г у­ли­руя па­ра­мет­ры шу­мо­да­ва, мож­но от­сле­дить, в ка­кой По­смот­ри­те на при­мер сним­ка с про­грамм­но уве­ли­чен­ной вы­
мо­мент вме­сте с шу­мом на­чи­на­ют ис­че­зать и де­та­ли (рис. 5). держ­кой, пред­став­лен­ный на рис.  6. Важ­но понимать, что кни-
Те­перь снимок мож­но окон­ча­тель­но «про­явить» – то есть со­ га в ле­вой части в лю­бом слу­чае бу­дет «шум­ной» – во­прос лишь
хранить как JPEG. в том, как миними­зи­ро­вать этот шум.
Те­перь рас­смот­рим дру­г ую сто­ро­ну про­бле­мы: бе­лые «дыр­
Со все­ми под­роб­но­стя­ми ки», возник­шие из-за пе­ре­экс­по­зи­ции. В про­грам­ме RAW Therapee
Еще од­но за­ме­ча­тель­ное свой­ство фор­ма­та RAW – это спо­соб­ име­ет­ся функ­ция восста­нов­ления пе­ре­све­чен­ных об­ластей –
ность со­хра­нять об­шир­ную ин­фор­ма­цию о цве­те на сним­ке. RAW- Highlight Recovery. На за­све­чен­ной об­ласти мо­жет не быть ника­кой

Рис. 6. Ре­зуль­тат
про­грамм­но­го уве­
ли­че­ния яр­ко­сти:
бли­ки ста­ли яр­ко-
бе­лы­ми.

58      Linux Format Сентябрь 2009


 Об­ра­бот­ка сним­ков Учебник

Рис. 7. Ин­ст­ру­
ин­фор­ма­ции о цве­те, ли­бо есть об­рыв­ки зна­чений в от­дель­ных све­чен­ный кадр. Для JPEG это бу­дет брак, но RAW – со­всем дру­
мент Highlight
ка­на­лах R, G и B. Эта функ­ция са­ма под­став­ля­ет свет­лые от­тен­ гое де­ло. При дальней­шей об­ра­бот­ке сним­ка экс­по­зи­цию мож­но Recovery в дей­
ки, осно­вы­ва­ясь на цве­те со­седних неза­све­чен­ных пик­се­лей. Вме­ понизить на ком­пь­ю­те­ре, шу­мов же в ито­ге бу­дет мень­ше. Это ствии: до и по­сле.
сте с тон­кой под­строй­кой экс­по­зи­ции это да­ет от­лич­ный ре­зуль­ про­ис­хо­дит бла­го­да­ря то­му, что цве­та на гисто­грам­ме при пе­ре-
тат. За­чем это нуж­но? Во-пер­вых, на­ли­чие хоть ка­ко­го-то цве­та ­экс­по­зи­ции при­жи­ма­ют­ся впра­во и при экс­по­кор­рек­ции вниз
там, где рань­ше был чистый бе­лый, су­ще­ствен­но смяг­ча­ет изо­ (умень­шении) восста­нав­ли­ва­ют­ся по стар­шим би­там ка­на­лов, что
бра­жение и по­вы­ша­ет его ди­на­ми­че­ский диа­па­зон (это лег­ко за­ ав­то­ма­ти­че­ски вы­ре­за­ет часть шу­мов. Это мож­но ви­деть на рис. 8:
ме­тить на гисто­грам­ме). Во-вто­рых, уст­ранение бе­лых про­бо­ оба сним­ка сде­ла­ны с ISO 1600, но разница при этом оче­вид­на.
ев по­вы­ша­ет ка­че­ство сним­ка при его рас­пе­чат­ке на фо­то­бу­ма­ге,
так как пе­ре­хо­ды от свет­лых от­тен­ков к бе­ло­му ста­но­вят­ся мяг­ Вре­мя тво­рить
че. Для при­ме­ра удоб­но при­вести все тот же снимок, вклю­чив за­ Ка­кое от­но­шение име­ет RAW к фо­то­гра­фу-лю­би­те­лю? Са­мое
свет­к у бе­лых об­ластей. пря­мое! На­чи­ная при­мер­но с 2007 го­да, боль­шин­ство лю­би­тель­
ских фо­то­ка­мер клас­са «ульт­ра­зум» по­зво­ля­ют со­хра­нять сним­
Техника съем­ки ки не толь­ко в JPEG, но и в ви­де циф­ро­вых нега­ти­вов. Из фор­
Как уже го­во­ри­лось вы­ше, боль­шин­ство RAW-ре­дак­то­ров уме­ ма­та для неболь­шо­го чис­ла про­фес­сио­на­лов RAW пре­вра­ща­ет­ся
ют вы­тя­ги­вать свет­лые от­тен­ки из за­све­чен­ных об­ластей: час- в бо­лее доступ­ную мас­со­вую тех­но­ло­гию, и этим сле­д у­ет поль­зо­
то бе­лый цвет по­лу­ча­ет­ся сум­мой ка­на­лов RGB, тогда как по от­ вать­ся. Мат­ри­цы боль­шин­ства ульт­ра­зу­мов силь­но «шу­мят» уже
дель­но­сти в этих ка­на­лах мо­жет быть ин­фор­ма­ция о цве­те. Этим при ISO 400 и вы­ше, и, как мы вы­яснили на дан­ном уро­ке, про­бле­
мож­но восполь­зо­вать­ся на эта­пе съем­ки кад­ра. Ес­ли вам нуж­ му мож­но частич­но ре­шить.
но сде­лать снимок с вы­со­ким зна­чением ISO (800 или 1600), Кро­ме это­го, при­ход RAW «в мас­сы» ско­рее все­го за­ста­вит
но при этом миними­зи­ро­вать шу­мы, тогда есть смысл уве­ли­чить мно­гих лю­би­те­лей внима­тельнее от­но­сить­ся к ка­че­ству сним­ков
на фо­то­ка­ме­ре экс­по­зи­цию, ины­ми сло­ва­ми – снять немно­го за­ и уме­ло из­бе­гать «за­мы­лен­ных» сжа­ти­ем кад­ров.

По­лез­ные ссыл­ки
За­чем ну­жен Raw?
http://fotoclub.mgsu.ru/index.php?option=
com_content&task=view&id=50&Itemid=46
Ру­ко­во­дство по сбор­ке DCRaw
http://www.mutaku.com/geeklog/article.php?story=20080814165040314
Экс­пе­ри­мент с пе­ре­хо­дом на Linux с Mac OS X для об­ра­бот­ки Raw
http://www.ubuntuproductivity.com/journal/ubuntu/07/2008/ubuntu-
photo-manager-experiment/
Ин­ст­ру­мен­ты для циф­ро­во­го фо­то в Linux, вклю­чая Raw
http://www.galacticslacker.com/Linux_RAW.shtml
Под­роб­нее о цве­то­вой ка­либ­ров­ке
http://blog.lexa.ru/2008/01/16/balans_belogo_dlja_snimajuschix_v_
raw_chinim_gisto.html
Сай­ты Raw-ре­дак­то­ров для Linux
(как сво­бод­ных, так и про­прие­тар­ных):
http://rawstudio.org/
http://ufraw.sourceforge.net/
http://www.rawtherapee.com/
http://bibblelabs.com/
http://www.lightcrafts.com/lightzone/
http://qtpfsgui.sourceforge.net/
Мно­гие из них мож­но так­же най­ти в ме­нед­же­ре па­ке­тов ва­ше­го
Рис. 8. Ин­ст­ру­мент Highlight Recovery в дей­ст­вии: до и по­сле. ди­ст­ри­бу­ти­ва Linux.

Сентябрь 2009 Linux Format      59


OpenDocument Рас­кры­ва­ем
по­тен­ци­ал OpenOffice.org

ODF: Вы­тя­нем
Мар­ко Фио­рет­ти за­про­сто об­ра­бо­та­ет ин­фор­ма­цию в фор­ма­те OpenDocument:
элек­трон­ные таб­ли­цы, тек­сто­вые до­ку­мен­ты и про­чее, а ко­да – все­го ни­че­го...

Мы уже зна­ем, как генери­ро­вать элек­трон­ные таб­ли­цы, текст


и пре­зен­та­ции ODF, и в этом ме­ся­це рас­смот­рим дру­г ую про­бле­
му: как ра­бо­тать с уже су­ще­ствую­щи­ми ODF-фай­ла­ми? А имен­но,
как из­влечь и ис­поль­зо­вать со­дер­жа­щ ую­ся в них ин­фор­ма­цию?
Код при­ме­ров Ну, и за­чем вам мо­жет по­на­до­бить­ся де­лать нечто по­доб­ное? Что­
ста­тьи бы най­ти от­ве­ты, про­дол­жай­те чи­тать.
Не удив­ляй­тесь, это пред­на­зна­че­но не для систем­ных ад­ми-
нист­ра­то­ров или су­пер-ха­ке­ров. Вы уз­нае­те, как иг­рать в та­кие
иг­ры, да­же ес­ли вы все­го лишь обыч­ный поль­зо­ва­тель, счи­таю­
щий, что ком­пь­ю­те­ры долж­ны об­лег­чать жизнь лю­д ям, а не на­
обо­рот. Име­ет­ся мно­же­ство си­т уа­ций, когда по­лезнее и про­ще
от­крыть ODF-файл и по­ра­бо­тать с его со­дер­жи­мым. Три са­мых ти­
пич­ных из них – об­ра­бот­ка изо­бра­жений, по­иск или ана­лиз тек­
ста и из­вле­чение ме­та­дан­ных. До кон­ца это­го уро­ка мы рас­смот­
рим их все.

Уп­лот­ня­ем ODF
Пер­вый прак­ти­че­ский при­мер об­ра­бот­ки дан­но­го ти­па – это сни-
жение об­ще­го раз­ме­ра ODF-фай­ла бла­го­да­ря сжа­тию ка­ж ­до­го
со­дер­жа­ще­го­ся в нем изо­бра­жения в от­дель­но­сти. Это не то же,
что сжа­тие са­мо­го ODF-фай­ла, и по­тен­ци­а ль­но бо­лее эф­фек­тив­
но: ведь пол­ный ODF-файл уже сжат, и при­менение к нему zip,
bzip2 или лю­бо­го дру­го­го ал­го­рит­ма ком­прес­сии ма­ло что даст.
По­доб­ные дей­ствия очень при­го­д ят­ся, ес­ли необ­хо­ди­мо пе­ре­

Н
а пре­ды­д у­щих уро­ках этой се­рии мы по­ка­за­ли, как да­вать боль­шие фай­лы при мед­лен­ном со­единении, или в ка­че­
Наш ав­то­ма­ти­че­ски генери­ро­вать раз­лич­ные фай­лы стве вло­жений элек­трон­ной поч­ты. Мень­шие по раз­ме­ру фай­лы
эксперт OpenDocument при по­мо­щи несколь­ких очень про­стых так­же важ­ны, ес­ли вы же­лае­те опуб­ли­ко­вать как мож­но боль­
Мар­ко Фио­рет­ти скрип­тов. Эти фай­лы, ко­то­рые мо­г ут быть тек­стом, элек­трон­ны­ ше ма­те­риа­лов на ка­кой-нибудь бес­плат­ной учет­ной запи­си web
ав­тор кни­ги The ми таб­ли­ца­ми или пре­зен­та­ция­ми, сра­зу же мож­но ре­дак­ти­ро­ с ог­раничен­ным про­стран­ством.
Family Guide to вать в OpenOffice.org или дру­гом ODF-со­вмести­мом офис­ном па­ На www.OOOforum.org уже есть скрипт, умень­шаю­щий раз­мер
Digital Freedom,
а к то­му же ак­ти­
ке­те. Сре­ди про­че­го в данную ка­те­го­рию по­па­да­ет и по­след­няя ODF-фай­лов дан­ным спо­со­бом. Его ав­тор со­об­ща­ет, что вер­сия
вист сво­бод­но­го вер­сия Microsoft Office, с уста­нов­лен­ным со­от­вет­ствую­щим рас­ 1.23 со­кра­ща­ет раз­мер ру­ко­во­дства по уста­нов­ке OOo 2.0 на 22 %,
ПО и про­грам­мист. ши­рением (да­же при том, что име­ют­ся неко­то­рые про­ко­лы, осо­ но вы­иг­рыш для слайд-шоу со мно­же­ством боль­ших фо­то­гра­фий
бен­но при ра­бо­те с элек­трон­ны­ми таб­ли­ца­ми). бу­дет яв­но боль­ше.
Основ­ная идея объ­ясняется на www.oooforum.org/forum/
viewtopic.phtml?t=27339, а сам скрипт опуб­ли­ко­ван и про­ком­
ODF: что внут­ри? мен­ти­ро­ван на www.oooforum.org/forum/viewtopic.phtml?t=27452.
По­сколь­к у эти две вет­ки со­дер­жат мно­же­ство де­та­лей, а ба­зо-
Ес­ли вы про­пус­ти­ли пре­ды­д у­щие вы­пус­ки го лег­ко из­влечь и об­ра­бо­тать, по­то­му что они вая реа­ли­за­ция скрип­та та же, что опи­са­на ниже, мы про­сто при­
этой се­рии, то вот крат­кое со­дер­жа­ние. Фор­ ак­к у­рат­но хра­нят­ся в отдель­ных мес­тах. Тек­ гла­ша­ем вас по­про­бо­вать его и пе­рей­ти к глав­ной части уро­ка.
мат фай­лов OpenDocument (ODF) – это стан­ сто­вое со­дер­жи­мое, фор­ма­ти­ро­ва­ние, ме­та­
дарт ISO для до­к у­мен­тов с фор­ма­ти­ро­ван­ным
тек­стом, элек­трон­ных таб­лиц и пре­зен­та­ций,
дан­ные и дру­гая ин­фор­ма­ция – все это хра­
нит­ся в раз­лич­ных тек­сто­вых XML-фай­лах, Об­ра­бот­ка изо­бра­жений
пред­став­ляю­щий един­ст­вен­ную ре­а ль­ную а изо­бра­же­ния и дру­гие дво­ич­ные объ­ек­ты Струк­т у­ра ODF-фай­ла та­ко­ва (см. ODF: что внут­ри? сле­ва), что
аль­тер­на­ти­ву фор­ма­там, раз­ра­бо­тан­ным для име­ют соб­ст­вен­ные ка­та­ло­ги. При этом очень манипу­ли­ро­вать изо­бра­жения­ми, со­дер­жа­щи­ми­ся в нем, очень
MS Office. про­сто най­ти или из­ме­нить толь­ко те час­ лег­ко. Пре­ж ­де чем пе­рей­ти к ре­а ль­ным при­ме­рам, об­су­дим ба­
Пре­лесть ODF в том, что это про­сто сжа­ ти со­дер­жи­мо­го, ко­то­рые дей­ст­ви­тель­но нас
тый Zip-ар­хив, где ка­ж ­д ую часть со­дер­жи­мо­ ин­те­ре­су­ют.
зо­вую струк­т у­ру, ко­то­рую мо­жет иметь сце­на­рий дан­но­го ти­
па. Его код по­ка­зан на Листин­ге 1:

Месяц назад Мы сооруди­ли в OOo Writer тест с вы­бо­ром ва­ри­ан­та от­ве­та.


60      Linux Format Сентябрь 2009
 Ана­лиз до­ку­мен­тов Учебник

дан­ные из OOo
пре­ж ­дение и, по­сле уда­ления вре­мен­ных фай­лов (стро­ки 27–28),
Создайте временный за­вер­ша­ет­ся. Ес­ли ка­та­лог Pictures су­ще­ству­ет, то пе­ре­хо­дим туда
рабочий каталог Как из­влечь
и об­ра­бо­тать для об­ра­бот­ки всех гра­фи­че­ских фай­лов в нем. Это един­ствен­ная
изо­бра­же­ния часть скрип­та, ко­то­рую вам сле­д у­ет пе­репи­сать в со­от­вет­ствии
Распакуйте копию ODF-файла из ODF-фай­лов.
с ва­ши­ми ну­ж ­да­ми, вста­вив вме­сто стро­ки-ком­мен­та­рия 17 со­от­
вет­ствую­щие коман­ды (см. при­ме­ры ниже). Сле­д ую­щие ша­ги уда­
Для каждого файла ля­ют локаль­ную ко­пию ODF-фай­ла и опять упа­ко­вы­ва­ют все в но­
в каталоге изображений вый ODF-файл с пре­фик­сом new_ (стро­ки 19–21).
По­след­няя стро­ка-ком­мен­та­рий 30 на­ме­ка­ет на дру­гой ва­ри­
Обработайте так, ант ис­поль­зо­вания скрип­та – то есть при­менение изо­бра­жений,
как вам необходимо
най­ден­ных в ODF-фай­ле, где-то еще. Дру­ги­ми сло­ва­ми, в стро­
ке 17 вы мо­же­те напи­сать:
Вновь сожмите результат Zip cp $ODF_PIC $SOME_OTHER_DIRECTORY/$ODF_PIC
а за­тем до­ба­вить в конец скрип­та дру­гие коман­ды, для об­ра­бот­
ки кар­ти­нок, ко­то­рые из­на­чаль­но бы­ли за­пря­та­ны в пре­зен­та­ции
Лис­т инг 1: odf_image_processing.sh или тек­сто­вом до­к у­мен­те. В ка­че­стве прак­ти­че­ски по­лез­но­го при­
1 #! /bin/bash ме­ра ниже бу­дет рас­смот­ре­но соз­дание web-га­ле­реи.
2 START_DIR=`pwd`
3 FILENAME=`basename $1` Дру­гие спо­со­бы об­ра­бот­ки
4 По­ми­мо из­менения раз­ме­ра, над ODF-фай­ла­ми мож­но вы­пол­нять
5 #Соз­д ай­те вре­мен­ный ра­бо­чий ка­т а­лог еще мно­же­ство дру­гих опе­ра­ций. Луч­ший ин­ст­ру­мент для этих це­
6 mkdir tmp_odf_work_dir лей – па­кет про­грамм для об­ра­бот­ки изо­бра­жений в команд­ной
7 cp $1 tmp_odf_work_dir/odf_file.zip стро­ке ImageMagick (LXF116–117). На сайте www.imagemagick.
8 cd tmp_odf_work_dir org/Usage при­ве­де­ны тон­ны при­ме­ров то­го, что мо­жет сде­лать
9 ImageMagick. Наи­бо­лее частая опе­ра­ция с ODF-фай­ла­ми, ско­рее
10 unzip odf_file.zip > /dev/null все­го, до­бав­ление рам­ки или уве­дом­ление о пра­вах на ко­пи­ро­
11 if [ -d Pictures ] вание к ка­ж ­дой кар­тин­ке, но един­ствен­ное ог­раничение здесь –
12 then лишь ва­ши за­про­сы. Про­сто по­се­ти­те эту страницу и по­смот­ри­
13 cd Pictures те, что мо­жет ImageMagick: ес­ли вы вдруг по­д у­мае­те: «Эй, я хо­чу
14 for ODF_PIC in `ls` сде­лать это со все­ми кар­тин­ка­ми в мо­ем слайд-шоу или док­ла­де,
15 do не тра­тя вре­мени», то спо­соб оче­ви­ден и прост. Пол­но­стью ско­
16 echo “Об­ра­ба­т ы­ва­ем $ODF_PIC” пи­руй­те с web-страницы коман­д у ImageMagick, вы­пол­няю­щ ую то,
17 #### Вы­пол­ни­те то, что же­лае­те, с те­к у­щим что вы хо­ти­те, в стро­к у 17 при­ве­ден­но­го вы­ше скрип­та, за­тем изу­
изо­бра­же­ни­ем чи­те ее man-страницу (до­к у­мен­та­ция ImageMagick яс­на и ис­чер­
18 done пы­ваю­ща), что­бы из­менить или до­ба­вить клю­чи команд­ной стро­
19 cd .. ки, удов­ле­тво­ряю­щие ва­шим по­треб­но­стям.
20 rm odf_file.zip Неза­ви­си­мо от про­грам­мы, ко­то­рую вы при­мените в по­ка­
21 find . -type f -print0 | xargs -0 zip ../ зан­ном скрип­те для ра­бо­ты с кар­тин­ка­ми ODF, не за­бы­вай­те
new_$FILENAME > /dev/null оче­вид­ную, но лег­ко опускае­мую де­таль: при дан­ном под­хо­де
22 из­ме­ня­ет­ся ис­ход­ное изо­бра­жение. Лю­бой до­бав­ляе­мый текст
23 else (как во­д я­ной знак) бу­дет нанесен пря­мо на ис­ход­ный PNG-файл,
24 echo “В $1 нет изо­бра­же­ний” при­сут­ствую­щий в пре­зен­та­ции. Вы мо­же­те достичь то­го же эф­
25 fi фек­та пу­тем до­бав­ления тек­сто­вой встав­ки по­верх изо­бра­жения,
26 но це­ли тут аб­со­лют­но раз­ные.
27 cd $START_DIR Дан­ное от­ли­чие ста­но­вит­ся еще бо­лее важ­ным в элек­трон­
28 rm -rf tmp_odf_work_dir ных таб­ли­цах. Как по­ка­за­но на уро­ке ра­бо­ты с таб­ли­ца­ми ODF
29 в LXF120, диа­грам­мы на ра­бо­чих листах ODF – это диа­грам­мы,
30 ### Здесь на­чи­на­ет­ся пост-об­ра­бот­к а а не изо­бра­жения: они пред­став­ля­ют со­бой куски XML-ко­да, ко­
Пер­вая часть скрип­та (стро­ки 1–8) должна быть знакома лю­ то­рый про­грам­мы, со­вмести­мые с ODF, ис­поль­зу­ют для от­ри­
бо­му, кто чи­тал пре­ды­ду­щие уро­ки этой се­рии про ODF, по­сколь­к у сов­ки гра­фи­ки на ра­бо­чем листе в ре­а ль­ном вре­мени при ка­ж­
там ис­поль­зо­вал­ся тот же ба­зо­вый под­ход. Все на­чи­на­ет­ся с ко­ дом из­менении дан­ных. Из это­го сле­д у­ет, что наш скрипт никак
пи­ро­вания ODF-фай­ла, пе­ре­дан­но­го в ка­че­стве пер­во­го ар­г у­мен­ не влия­ет на диа­грам­мы, по­то­му что он про­смат­ри­ва­ет толь­ко ка­
та, с рас­ши­рением .zip, во вре­мен­ный ка­та­лог (tmp_odf_work_dir), та­лог Pictures.
соз­дан­ный лишь для ра­бо­ты в чистом ок­ру­жении. За­тем мы рас­ Из­менения изо­бра­жений не обя­за­тель­но ка­са­ют­ся их внеш-
па­ко­вы­ва­ем ар­хив и про­ве­ря­ем, есть ли в нем ди­рек­то­рия с име- него ви­да. Все циф­ро­вые ка­ме­ры ис­поль­зу­ют фор­мат Exif
нем Pictures (стро­ки 10–11). Ес­ли ее нет, то скрипт вы­да­ет пре­д у­ (Exchangeable Image File Format), для запи­си ме­та­дан­ных в свои

Сентябрь 2009 Linux Format      61


Учебник Ана­лиз до­ку­мен­тов

JPEG-изо­бра­жения. Про­стой спо­соб чи­тать и запи­сы­вать эти дан­ По­иск тек­ста


ные в Linux – че­рез exiftool, кон­соль­ный ин­тер­фейс для мо­д у­лей Те­перь пе­рей­дем к со­вер­шен­но дру­гой об­ласти: бу­дем искать, ка­
Perl Image-ExifTool (http://cpan. uwInnipeg.ca/dist/Image-ExifTool). кой файл со­дер­жит некую стро­к у. Для про­стых тек­сто­вых фай­
Вклю­чение в наш скрипт exiftool оз­на­ча­ет воз­мож­ность из­ лов это очень про­сто. Linux, бла­го­да­ря сво­ей Unix-при­ро­де, все­
вле­кать вре­мен­ные мет­ки, ком­мен­та­рии, тэ­ги, гео­гра­фи­че­ские гда имел мно­же­ство ути­лит для фильт­ра­ции, по­иска и об­ра­бот­ки
ко­ор­ди­на­ты или лю­бые дру­гие дан­ные из всех JPEG-фо­то­гра­ тек­сто­вых фай­лов. Бы­ло бы очень удоб­но де­лать то же са­мое для
фий лю­бо­го ODF-фай­ла. Столь же про­с то бу­дет до­ба­вить ком­ ODF-фай­лов, не так ли? Как вы­яс­ня­ет­ся, это не очень-то и слож­
мен­та­рии или дру­г ую ин­фор­ма­цию в Exif-фор­мат внут­ри са­мих но. Во-пер­вых, нам необ­хо­дим ин­ст­ру­мент для из­вле­чения тек­
JPEG-файлов. ста из zip-ар­хи­ва. Листинг 2 со­дер­жит ODF-эк­ви­ва­лент тра­ди­ци­
И по­следнее за­ме­чание к это­му ме­то­д у об­ра­бот­ки изо­бра­ он­ной коман­ды cat:
же-ний OpenDocument: изо­бра­жения­ми он не ог­раничи­ва­ет­ся. Лис­т инг 2: odf_cat.sh, ко­ман­д а cat для ODF фай­лов:
В Linux име­ет­ся масса кон­соль­ных ути­лит, спо­соб­ных вы­пол- 1 #! /bin/bash
­нять все что угод­но с муль­ти­ме­диа-фай­ла­ми или дво­ичны­ми 2
объ­ек­та­ми. Ав­то­ма­ти­че­ское сканиро­вание мак­ро­сов, для про­- 3 mkdir tmp_odt_cat
вер­ки на ви­ру­сы или дру­гой вре­до­носный код, мо­жет ра­бо­тать 4 cp $1 tmp_odt_cat/odf_file.zip
та­ким же об­ра­зом. Об­ра­бот­ка воз­мож­на, да­же ес­ли ва­ше ау­ 5
дио- и ви­деосо­дер­жи­мое раз­ме­ще­но в слайд-шоу или тек­сто­вом 6 cd tmp_odt_cat
фай­ле. На­при­мер, мож­но за­менить все зву­ко­вые ком­по­зи­ции 7 unzip odf_file.zip > /dev/null
пре­зен­та­ции дру­ги­ми, с бо­лее низ­кой часто­той дискре­ти­за­ции 8
(что снизит раз­мер фай­ла), или пре­об­ра­зо­вать внедрен­ное ви­део 9 tr “<” “\012” < content.xml | \
в о­ткрытые фор­ма­ты, или умень­шить раз­ре­шение. 10 grep -i ^text | \
11 cut ‘-d>’ -f2- | \
Соз­да­ем га­ле­рею изо­бра­жений 12 perl -e “while (<>) {s/&apos;/’/g; print }”
Да­вай­те рас­смот­рим при­мер внешнего ис­поль­зо­вания изо­бра­ 13 cd ..
жений из ODF-фай­ла. Помните, мы от­ме­ча­ли ранее, что стро­ 14 \rm -rf tmp_odt_cat
ка 30 листин­га 1 – то ме­сто, где мож­но ра­бо­тать с изо­бра­жения­ 15 exit
ми вне ис­ход­но­го ODF-фай­ла? Наи­бо­лее частый слу­чай – пе­ре­нос Об­щая струк­т у­ра Листин­га 2 та же, что мы ви­де­ли в пре­ды­
их в web-га­ле­рею. По­лез­ным ин­ст­ру­мен­том для это­го яв­ля­ет­ся ду­щих при­ме­рах, по­это­му со­сре­до­то­чим­ся на стро­ках 9–12; спер­
shalbum (http://sourceforge.net/projects/shalbum) – сце­на­рий обо­ ва, за­ме­няя сим­во­лы > на конец стро­ки, мы раз­ме­ща­ем ка­ж ­дый
лоч­ки, ис­поль­зую­щий ImageMagick для соз­дания на­бо­ра HTML XML-эле­мент на от­дель­ной стро­ке, уп­ро­стив се­бе фильт­ра­цию
страниц с миниа­тю­ра­ми и на­ви­га­ци­он­ны­ми ссыл­ка­ми. чисто тек­сто­вых эле­мен­тов. А в стро­ке 11 уда­ля­ет­ся все, кро­ме ре­
Ри­су­нок ниже по­ка­зы­ва­ет web-аль­бом, реа­ги­рую­щий на щелч­ аль­но­го со­дер­жи­мо­го. Вы­зов Perl в стро­ке 12 пре­об­ра­зу­ет HTML-
ки мы­ши, по­лу­чен­ный за­ме­ной стро­ки 30 листин­га 1 на коман­д у запись, со­от­вет­ствую­щ ую оди­ноч­ной ка­выч­ке, в обыч­ный вид.
cd $SOME_OTHER_DIRECTORY/; shalbum и по­сле­д ую­щей об­ра­бот­ Вот и все! Да-да, эти несколь­ко строк ко­да – все, что нуж­
кой слайд-шоу ODF, по­ка­зан­но­го в пра­вом верхнем уг­лу сле­д ую­ но для полного переноса со­дер­жи­мого тек­сто­во­го ODF фай­ла
щей страницы. По­сколь­к у shalbum под­дер­жи­ва­ет так­же и подпи­ в тер­ми­на­л или в лю­бую дру­г ую про­грам­му, ко­то­рой оно мо­жет
От­ку­да взя­лась си к ри­сун­кам, то бу­дет от­но­си­тель­но про­сто так­же из­влечь их по­на­до­бить­ся. В ка­че­стве до­ка­за­тель­ства, по­смот­ри­те на дру­
эта га­ле­рея изо­ из ODF-фай­ла и опуб­ли­ко­вать эту ин­фор­ма­цию в се­ти. Вви­д у гой фраг­мент bash-скрип­та:
бра­же­ний в се­ти? ог­раничен­но­сти объ­е­ма ста­тьи остав­ляю это дей­ствие в каче- Лис­т инг 3: find_in_odf.sh
Ес­те­ст­вен­но, стве уп­ражнения для чи­та­те­ля. 1 for FILE in `find $1 -type f -name “*odt”`
из до­ку­мен­та ODF!
2 do
3 /home/marco/PROJECTS/_Archive/LXF/
ODF_Scripting/Part_3_processing/scripts/odf_cat.sh $FILE >
tmp_odf_find
4 grep -q -i “$2” tmp_odf_find && echo $FILE
5 rm tmp_odf_find
6 done
Он на­хо­дит все тек­сто­вые фай­лы ODF в ка­та­ло­ге, пе­ре­да­
вае­мом как пер­вый ар­г у­мент, и со­хра­ня­ет со­дер­жи­мое ка­ж ­до­
го из них во вре­мен­ном фай­ле. Ес­ли файл со­дер­жит вто­рой ар­
гу­мент ($2), то имя со­от­вет­ствую­ще­го ODF-до­к у­мен­та вы­во­дит­ся
в стан­дарт­ный по­ток вы­во­да. Вот как ваш ав­тор на­шел, в ка­кой
из его ста­тей LXF упо­ми­на­ет­ся брау­зер Konqueror:
[marco@polaris LXF]$ ODF_Scripting/Part_3_processing/
scripts/find_in_odf.sh . konqueror
./KONQUEROR_TIPS/konqi.odt
./LIVE_CD_ROUNDUP_2008/live_cd_roundup_2008.odt
Конеч­но же, при­ве­де­ны толь­ко про­стей­шие при­ме­ры; смысл
в том, что­бы по­ка­зать вам, как лег­ко это де­ла­ет­ся. Бо­лее слож­ным
ин­ст­ру­мен­том команд­ной стро­ки для из­вле­чения и со­хранения
бо­лее-менее фор­ма­ти­ро­ван­но­го тек­ста из ODF-фай­ла яв­ля­ет­ся
odt2txt. На web-странице www.verimag.imag.fr/~moy/opendocument
опи­са­но, как он ра­бо­та­ет и как его мож­но ис­поль­зо­вать
в дру­гих про­грам­мах для по­иска от­ли­чий ме­ж ­д у ODF-фай­ла­ми
или ин­тег­ри­ро­вать его в систе­м у управ­ления вер­сия­ми.

62      Linux Format Сентябрь 2009


 Ана­лиз до­ку­мен­тов Учебник

Ме­тадан­ные meta:document-statistic
За­кон­чим дан­ную се­рию по об­ра­бот­ке ODF опи­санием неко­то­рых meta:tablecount=
вспо­мо­га­тель­ных ком­понен­тов. Кро­ме фай­ла, за­ре­зер­ви­ро­ван­ ”0” meta:image-count=”0”
но­го для ре­а ль­но­го со­дер­жи­мо­го, внут­ри до­к у­мен­та ODF име­ет­ meta:object-count=”0” meta:pagecount=
ся еще по крайней ме­ре два XML-фай­ла, с ко­то­ры­ми так­же сто­ит ”7” meta:paragraph-count=”208”
по­ра­бо­тать. Пер­вый – это styles.xml. Ис­поль­зуя опи­сан­ные здесь meta:word-count=”4565”
прие­мы, мож­но ав­то­ма­ти­че­ски мо­ди­фи­ци­ро­вать сти­ли всех ва­ meta:charactercount=”
ших ODF-фай­лов или за­менить их но­вы­ми. 27064”/>
Вто­рой ин­те­рес­ный файл на­зы­ва­ет­ся meta.xml, он со­дер­жит – В ре­зуль­та­те по­лу­чил­ся упо­ря­до­чен­ный
уга­да­ли! – ме­та­дан­ные. Они де­лят­ся на фик­си­ро­ван­ные и оп­ре­ спи­сок ме­та­дан­ных, ко­то­рые мож­но от­
де­ляе­мые поль­зо­ва­те­лем: пер­вая ка­те­го­рия вклю­ча­ет па­ра­мет­ры фильт­ро­вать, как и лю­бой систем­ный жур­
ти­па да­ты по­следней рас­пе­чат­ки или чис­ла цик­лов ре­дак­ти­ро­ нал или обыч­ный тек­сто­вый файл. Ме­та­
вания, слов и сим­во­лов для ка­ж ­до­го до­к у­мен­та. Из­вле­чение этих дан­ные, оп­ре­де­ляе­мые поль­зо­ва­те­лем,
чи­сел при­го­дит­ся для сбо­ра ста­ти­сти­ки о ра­бо­те, по­строения ин­те­рес­ны по двум при­чи­нам. Во-пер­
пол­но­го ка­та­ло­га или про­сто ин­дек­си­ро­вания. Он­лайн-книга вых, они са­ми, как и их на­звания, мо­г ут
OpenDocument Essentials (http://books.evc-cit.info/odbook/ch02. быть чем угод­но: тэ­га­ми, ком­мен­та­рия­
html#meta-casestudy-section) Дэ­ви­да Дж. Ай­зен­бер­га [J David ми, име­на­ми за­каз­чи­ков – что толь­ко мож­
Eisenberg] со­дер­жит от­ла­жен­ный Perl-скрипт для вы­полнения из­ но вы­ра­зить тек­стом. Да­лее, по­сколь­к у
вле­чения имен­но та­ко­го ти­па. Как все­гда, су­ще­ству­ет бо­лее про­ ме­та­дан­ные рас­по­ло­же­ны в обыч­ном XML-
стое, хо­тя и менее гиб­кое, ре­шение, пред­став­ляю­щее со­бой скрипт фай­ле, вы мо­же­те из­ме­нять их при по­мо­
обо­лоч­ки в несколь­ко строк. щи тех же скрип­тов и со­ве­тов, что опи­са­ны
Лис­т инг 4: cat_odf_metadata.sh в этой се­рии для ав­то­ма­ти­че­ской генера­
Ис­ход­ное слайд-
1 #! /bin/bash ции ODF-тек­ста! Вот син­так­сис для по­лей дан­но­го ти­па:
шоу ODF со­дер­жит
2 <meta:user-defined meta:name=”имя”>зна­че­ние</meta:user- изо­бра­же­ния, по­ка­
3 mkdir tmp_odt_cat defined> зан­ные в фор­ма­те
4 cp $1 tmp_odt_cat/odf_file.zip Итак, для из­ме­не­ния скрип­тов, пред­став­лен­ных в этой се­рии, для га­ле­реи на пре­ды­
5 по­ме­ток и клас­си­фи­ка­ции всех ва­ших ODF до­к у­мен­тов тре­бу­ет­ся ду­щей стра­ни­це.
6 cd tmp_odt_cat дей­ст­ви­тель­но ма­ло уси­лий – раз­ве нет?
7 unzip odf_file.zip > /dev/null
8 А за­чем все это нуж­но?
9 tr “<” “\012” < meta.xml | \ Фор­мат OpenDocument – это ме­ж ­д у­на­род­ный стан­дарт, сво­бод­
10 grep ^meta ный от пра­во­вых ог­раничений; он по­зво­ля­ет конеч­но­му поль­зо­
11 exit ва­те­лю без опы­та про­грам­ми­ро­вания соз­да­вать фор­ма­ти­ро­ван­
Вот ре­зуль­тат за­пус­ка cat_odf_metadata.sh для обыч­но­го тек­ ные тек­сто­вые до­к у­мен­ты, слайд-шоу и пре­зен­та­ции в пол­но­стью
сто­во­го ODF-фай­ла: гра­фи­че­ском ин­тер­фей­се. В то же вре­мя, ес­ли толь­ко у вас
meta:generator>OpenOffice.org/2.4$Unix OpenOffice.org_ не слиш­ком спе­ци­фич­ные тре­бо­вания, это фор­мат, весь­ма про­
project/680m18$Build-9364 стой для ав­то­ма­ти­че­ской об­ра­бот­ки при по­мо­щи неслож­ных про­
meta:print-date>2008-12-04T03:39:41 грамм, напи­сание ко­то­рых не занима­ет мно­го вре­мени. Все это
meta:editing-cycles>1053 де­ла­ет OpenDocument пре­крас­ным, ес­ли не един­ствен­ным на се­
meta:editing-duration>P1DT20H34M6S го­дняшний день, вы­бо­ром для соз­дания, об­ра­бот­ки и об­ме­на раз­
meta:user-defined meta:name=”Info 1”/> лич­ны­ми офис­ны­ми до­к у­мен­та­ми, при минималь­но воз­мож­ных
meta:user-defined meta:name=”Info 2”/> уси­ли­ях и без стра­ха быть при­ко­ван­ным к един­ствен­но­му при­ло­
meta:user-defined meta:name=”Info 3”/> жению. Мы на­де­ем­ся, что все опи­сан­ные в дан­ной се­рии прие­мы
meta:user-defined meta:name=”Info 4”/> по­мо­г ут вам вы­пол­нять имен­но это. На­сла­ж ­дай­тесь ODF!

Взаи­мо­дей­ст­вие с ODF
Мы го­во­ри­ли ра­нее и по­в то­ря­ем, что ODF – ко­ва­ны к ка­ко­му-ли­бо кон­крет­но­му при­ло­
един­с т­вен­ная су­ще­с т­вую­щ ая аль­тер­на­т и­в а же­нию, ес­ли бу­де­те про­дол­жать ис­поль­зо­
про­прие­т ар­ным фор­ма­т ам фай­лов, ско­вы­ вать свои до­к у­мен­ты. В на­с тоя­щий мо­мент
ваю­щ им мил­ли­а р­д ы су­ще­с т­вую­щ их до­к у­ си­т уа­ция вы­гля­дит бла­го­при­ят­ной для тек­
мен­тов, в том чис­ле при­над­ле­ж а­щ их на­ло­ ста и пре­зен­та­ций до тех пор, по­ка вы не вне­
го­п ла­тель­щ и­к ам. дри­те изо­бра­же­ния или дру­гие дво­ич­ные
Вы мо­же­те убе­дить­ся на www.open­ объ­ек­ты в про­прие­тар­ных фор­ма­тах. Для
document­fellowship.org, что мно­гие пра­ви­ элек­трон­ных таб­лиц со­дер­жи­мое мо­жет от­
тель­с т­ва уже из­ме­ни­ли свои пред­поч­те­ния ли­чать­ся зна­чи­тель­но: име­ет­ся пре­крас­ное
в поль­зу это­го фор­ма­та; вплоть до то­го, что опи­са­ние этой те­мы на www.robweir.com/
в 2008 Microsoft зая­ви­ла: «Оче­вид­но, ODF blog/2009/05/update-on-odf-spreadsheet.html.
по­бе­дил». По­это­му сме­ло со­ве­т уй­те друзь­ Од­на­ко все вы­гля­дит мно­го луч­ше, чем год-
ям, все еще пред­по­чи­таю­щим MS Office, ус­ два на­зад. Се­го­дня ODF – это един­с т­вен­ная
та­но­вить мо­д уль рас­ши­ре­ния ODF для это­ спе­ци­фи­ка­ция фор­ма­та фай­лов, о ко­то­рой
го па­ке­та. К со­жа­ле­нию, ODF все-та­ки не да­ет го­во­рит вся про­мыш­лен­ность; и она пре­вос­
Из­вле­че­ние тек­ста из ODF-фай­ла — пер­вый шаг 100% га­ран­тии в том, что вы не бу­де­те при­ ход­на и от­кры­та.
для его ис­поль­зо­ва­ния ты­ся­ча­ми раз­лич­ных спо­со­бов.

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


Сентябрь 2009 Linux Format      63
EOEC Про­стой спо­соб соз­да­вать
рас­ши­ре­ния OpenOffice.org на Python

OOo: Соз­да­дим
По­ла­гае­те, что раз­ра­бот­ка рас­ши­ре­ний для OpenOffice.org –
не­про­стая за­да­ча? Так оно и есть, но Сер­гей Ба­чу­рин зна­ет,
как сде­лать ее чу­точ­ку лег­че.

В
оз­мож­но­сти офис­но­го па­ке­та OpenOffice.org лег­ко рас­ зо­вания сбор­ки из со­ста­ва OpenOffice.org
EuroOffice Extension
ши­рить, напи­сав мак­рос, реа­ли­зую­щий недостаю­щий мож­но соз­дать сим­воль­ную ссыл­к у в ка­
Creator 0.3
функ­цио­нал. Это мож­но сде­лать, воо­ру­жив­шись API та­ло­ге /usr/bin (це­ле­вой файл – путь_к_ Extension Translator 1.1
OpenOffice.org и вы­брав язык про­грам­ми­ро­вания: OOBasic (встро­ ooo/program/python). Ес­ли у вас уста­нов­ Ис­ход­ные тек­сты
CurConverter
ен­ный в OOo), Java, JavaScript или Python. В слу­чае, ес­ли напи­сан­ лен OOo без Python, мож­но по­про­бо­вать
ный код бу­дет ис­поль­зо­вать­ся на од­ной ма­шине, мож­но до­ба­вить на­стро­ить его на ис­поль­зо­вание внеш-
Наш пункт ме­ню или панель ин­ст­ру­мен­тов вруч­ную. Ес­ли же необ­хо­ди­ него ин­тер­пре­та­то­ра (см. http://udk.openoffice.org/python/python-
эксперт мо уста­но­вить мак­рос на несколь­ких ком­пь­ю­те­рах, луч­шим спо­ bridge.html#replacing). В ка­че­стве IDE я бу­ду ис­поль­зо­вать Geany.
Сер­гей Ба­чу­рин со­бом его рас­про­странения бу­дет упа­ков­ка в рас­ши­рение. В этом Идем на страницу EOEC: https://launchpad.net/eoec и ска­чи­ва­
Опыт­ный уча­ст­ слу­чае нуж­ны ин­ст­ру­мен­ты для удоб­но­го соз­дания рас­ши­рений. ем по­след­нюю вер­сию (на мо­мент напи­сания ста­тьи – 0.3, ее же
ник рус­скоя­зыч­ Для OOBasic это, на­при­мер, BasicAddonBuilder (под­роб­но­сти мож­но най­ти на LXFDVD). Рас­па­ко­вав по­лу­чен­ный ар­хив, вы уви­
но­го со­об­ще­ст­
ищи­те по ад­ре­су http://myooo.ru/content/view/137/32/). Для Java ди­те ка­та­лог с тре­мя пап­ка­ми, тре­мя скрип­та­ми и PDF-фай­лом
ва OpenOffice.org,
раз­ра­бот­чик по­пу­ мож­но ис­поль­зо­вать Eclipse или NetBeans – до­полнения к ним для с до­к у­мен­та­ци­ей. Вер­сия 0.3 за­мет­но уве­ли­чи­лась по сравне-
ляр­ных рас­ши­ре­ ра­бо­ты с OOo уже дав­но и успеш­но ис­поль­зу­ют­ся. Рас­ши­рения нию с пре­ды­д у­щи­ми – в ар­хи­ве те­перь со­дер­жит­ся шесть рас­
ний Pager и Alba. на Python ранее нуж­но бы­ло со­би­рать вруч­ную, вы­иски­вая до­к у­ ши­рений, соз­дан­ных с по­мо­щью EOEC. На­хо­д ят­ся они в ка­та­ло­ге
мен­та­цию по раз­ным сай­там. Се­го­дня нам на по­мощь при­хо­дит examples. На­стоя­тель­но ре­ко­мен­д ую оз­на­ко­мить­ся с их ис­ход­
мо­ло­дой про­дукт – EuroOffice Extension Creator (EOEC). Он прост ным ко­дом по­сле изу­чения до­к у­мен­та­ции. В рас­ши­рениях Lookup
в ис­поль­зо­вании, хо­ро­шо до­к у­мен­ти­ро­ван, со­дер­жит несколь­ко и Sharpen ис­поль­зо­ва­ны функ­ции встраи­вания в кон­тек­ст­ное
ин­те­рес­ных при­ме­ров в ви­де го­то­вых рас­ши­рений и рас­про­стра­ ме­ню OOo и на­зна­чения ком­би­на­ций кла­виш.
ня­ет­ся под сво­бод­ной ли­цен­зи­ей.
Для оз­на­ком­ления с EOEC соз­да­дим рас­ши­рение «Кон­вер­ Но­вое рас­ши­рение
тор ва­лют», за­гру­жаю­щее с сай­та Цен­тро­бан­ка РФ кур­сы ва­лют Для соз­дания соб­ствен­но­го рас­ши­рения необ­хо­ди­мо от­крыть
на те­к у­щ ую да­т у и пе­ре­во­д я­щее сум­мы из од­ной ва­лю­ты в дру­ тер­ми­нал и за­пустить скрипт create.py, на­хо­д я­щий­ся в ка­та­ло­
гую. Так­же рас­ши­рение бу­дет пы­тать­ся брать сум­му из от­кры­то­го ге EOEC, с ар­г у­мен­та­ми:
до­к у­мен­та и встав­лять ре­зуль­тат об­рат­но в до­к у­мент. python create.py --vendor=VENDOR project-name
Здесь project-name – на­зва­ние на­ше­го но­во­го рас­ши­ре­ния,
Под­го­тов­ка к ра­бо­те VENDOR – имя его раз­ра­бот­чи­ка. Справ­к у по ис­поль­зо­ва­нию
Что­бы раз­ра­бо­тать рас­ши­рение с по­мо­щью EuroOffice Extension скрип­тов create.py, pack.py и update.py мож­но по­лу­чить, за­пус­тив
Creator, необ­хо­ди­мы: хо­ро­шая ОС, све­жий OpenOffice.org, ин­тер­ их из тер­ми­на­ла с клю­чом --help.
пре­та­тор язы­ка Python и ар­хив с EOEC. Так­же крайне же­ла­тель­на Вы­пол­ним ко­ман­д у:
удоб­ная IDE для Python. python create.py --vendor=OOoCoder CurConverter
Пер­во­му тре­бо­ванию удов­ле­тво­ря­ет прак­ти­че­ски лю­бой со­ В ре­зуль­та­те скрипт create.py соз­даст ка­та­лог но­во­го рас­ши­
вре­мен­ный ди­ст­ри­бу­тив Linux (в мо­ем слу­чае – Debian Lenny). ре­ния CurConverter на ос­но­ве ди­рек­то­рии template с ис­поль­зо­-
По­следний офи­ци­а ль­ный русскоя­зыч­ный вы­пуск OpenOffice.org ва­ни­ем вве­ден­ных ва­ми дан­ных.
досту­пен на сай­те ru.openoffice.org; при напи­сании ста­тьи ис­поль­ Те­перь нуж­но соз­дать вер­сию рас­ши­ре­ния для раз­ра­бот­ки.
зо­ва­лась «ваниль­ная» вер­сия 3.1. Ин­тер­пре­та­тор Python мож­но Для это­го нам по­тре­бу­ет­ся скрипт pack.py с клю­чом -D. Син­так­
взять систем­ный или же тот, что идет в ком­плек­те с OOo. В OOo 3.1 сис та­ков:
это Python 2.6.1, в бо­лее ранних вер­си­ях – Python 2.3. В слу­чае, ес­ли python pack.py -D project-name
Python от­сут­ству­ет в ва­шей систе­ме, для бо­лее удоб­но­го ис­поль­ В на­шем слу­чае это зна­чит:

EuroOffice Extension Creator


Это кон­ст­рук­тор рас­ши­рений на Python, рас­ Раз­ра­бот­чик EuroOffice���������������
Extension�����
��������������
Cre-
����
про­стра­няе­мый под ли­цен­зи­ей GNU GPl. Про­ ator – вен­гер­ская ком­пания MultiRacio Ltd
дукт был пред­став­лен в но­яб­ре 2008 го­д а (www.multiracio.com). Фир­ма вы­пуска­ет соб­
на OpenOffice.org Conference (OOoCon 2008). ствен­ную сбор­к у OpenOffice.org – EuroOffice
Так как рас­ши­рения, соз­д а­вае­мые при по­ и мно­же­ство рас­ши­рений: кли­пар­ты, сло­ва­ри,
мо­щи EOEC, вклю­ча­ют его ис­ход­ный код, они па­кет Solver для Calc и мно­го дру­гих ин­те­рес­
так­же долж­ны быть ли­цен­зи­ро­ва­ны по GPL ных ре­шений, ко­то­рые мож­но най­ти на сай­
v3. Для соз­дания ком­мер­че­ских про­д ук­тов те extensions.services.openoffice.org. Про­д ук­
на сай­те раз­ра­бот­чи­ка пред­ла­га­ет­ся ком­мер­ ты доступ­ны под GNU/GPL или ком­мер­че­ской
че­ская вер­сия. ли­цен­зи­ей.
Рис. 1. CurConverter в спи­ске ус­та­нов­лен­ных рас­ши­ре­ний.

64      Linux Format Сентябрь 2009


 OpenOffice.org Учебник

кон­вер­тор ва­лют
рей­ди­те на вклад­к у Биб­лио­те­ки, вы­бе­ри­
те OOoCoderCurConverterDialogs и на­жми­те
на кноп­к у Из­менить (рис. 3).
В от­кры­том окне на панели на­жми­те
кноп­к у Управ­ление язы­ка­ми > До­ба­вить
> Русский > За­крыть (при необ­хо­ди­мо­сти
сде­лай­те язы­ко­вую панель ви­ди­мой че­рез
ме­ню Вид). Со­храните из­менения.
Для бо­лее удоб­но­го пе­ре­во­да эле­мен­
Рис. 3. Диа­лог
тов управ­ления и пунк­тов ме­ню во­зьм­ем рас­ши­рение Extension
управ­ле­ния
Translator, доступ­ное по ад­ре­су http://extensions.services.openoffice. биб­лио­те­ка­ми OOo.
org/project/extension-translator. Уста­но­ви­те его, опять пе­ре­за­пусти­
те OOo и вы­зо­ви­те Сер­вис > Extension Translator. Вы­бе­ри­те в спи­
ске CurConverter, и в Calc от­кро­ют­ся имею­щие­ся лока­ли­за­ции – en
и ru. Здесь бу­дут пе­ре­чис­ле­ны все эле­мен­ты форм и на­звания пунк­
Рис. 2. Ок­но от­лад­чи­ка CurConverter.
тов ме­ню, ис­поль­зуе­мые на­шим рас­ши­рением. Пе­ре­ве­ди­те все, что
нуж­но, на род­ной язык. При­ду­май­те на­звание для пунк­та ме­ню, ко­
python pack.py -D CurConverter то­рый бу­дет за­пускать на­ше рас­ши­рение. Пусть по­ле с на­званием
В ре­зуль­та­те по­лу­чим вер­сию рас­ши­рения CurConverter_ пунк­та ме­ню (пер­вый стол­бец) име­ет имя title. По-анг­лий­ски им бу­
Debug.oxt «для раз­ра­бот­чи­ка». Она не пред­на­зна­че­на для рас­про­ дет «CurConverter», а по-русски – «Кон­вер­тор ва­лют». На­жми­те Сер­
странения конеч­ным поль­зо­ва­те­лям! Ско­пи­ро­ван­ное на дру­гой вис > Save Localizations и за­крой­те файл с лока­ли­за­ция­ми, не со­
ком­пь­ю­тер, та­кое рас­ши­рение не бу­дет ра­бо­тать. хра­няя его. Пе­рей­ди­те в ме­ню Справ­ка > About CurConverter > Debug
Да­вай­те до­ба­вим CurConverter к OOo че­рез ме­ню Сер­вис > > Save Dialogs. Из­менения в диа­ло­гах бу­дут ско­пи­ро­ва­ны из про­
Управ­ление рас­ши­рения­ми. Он поя­вит­ся в спи­ске уста­нов­лен­ных фи­ля OOo (ка­та­ло­га с поль­зо­ва­тель­ски­ми на­строй­ка­ми, шаб­ло­
рас­ши­рений (рис. 1). на­ми и скрип­та­ми – ~/.openoffice.org) в ра­бо­чую ди­рек­то­рию рас­
Икон­к у рас­ши­рения мож­но из­менить на свою, пе­репи­сав со­от­ ши­рения. Эту кноп­к у необ­хо­ди­мо ис­поль­зо­вать ка­ж ­дый раз по­сле
вет­ствую­щие гра­фи­че­ские фай­лы в ка­та­ло­ге рас­ши­рения. Текст из­менений диа­ло­гов. Что­бы в русскоя­зыч­ном диа­ло­ге, вы­зы­вае­
опи­сания из­ме­ня­ет­ся в фай­ле description.txt. мом при вы­бо­ре пунк­та ме­ню Справ­ка > About CurConverter, ото­бра­
Пе­ре­за­пусти­те OpenOffice.org: в треть­ей вер­сии OOo это необ­ жал­ся ло­го­тип CurConverter, соз­да­дим файл logo_ru.gif в ка­та­ло­ге
хо­ди­мо де­лать по­сле уста­нов­ки лю­бо­го рас­ши­рения. Вой­ди­ рас­ши­рения. Для ка­ж ­до­го язы­ка мож­но соз­дать от­дель­ный ло­го­
те в ме­ню Справ­ка > About CurConverter > Debug и по­смот­ри­те тип, со­хранив его в фай­ле с именем logo_<двух­бу­к­вен­ный_код_
на по­ле под мет­кой Debug output. Ес­ли вы уви­ди­те та­кой же текст, язы­ка>.gif.
как на рис. 2, зна­чит, в ва­шей систе­ме со­об­щения от­лад­чи­ка Здесь и да­лее мы бу­дем ра­бо­тать с мо­ду­лем CurConverter/
идут в стан­дарт­ный вы­вод (в про­тив­ном слу­чае их сле­д у­ет ис- curconverter/curconverter.py. До­ба­вим под­держ­к у русско­го языка –
кать в окне Debug, ко­то­рое вы сей­час ви­ди­те). Оно и к луч­ше­му – #-*- coding:utf-8 -*-
тер­ми­нал (в от­ли­чие от диа­ло­га Debug) все­гда у вас пе­ред гла­за­ и в стро­ке
ми. За­крой­те OOo и за­пусти­те его из тер­ми­на­ла – те­перь вы бу­де­ SUPPORTED_LANGUAGES = (‘en’,’ru’)
те ви­деть в нем все от­ла­доч­ные со­об­щения. оп­ре­де­лим рас­ши­ре­нию ме­сто для за­пус­ка: по­мес­тим его в ме­
Тре­тий скрипт, update.py, пред­на­зна­чен для об­нов­ления ранее ню Сер­вис за пунк­том Рас­сыл­ка пи­сем. Для это­го нам нуж­но уз­
соз­дан­но­го рас­ши­рения при вы­хо­де но­вой вер­сии EOEC. Пред­ва­ нать иден­ти­фи­ка­тор по­след­не­го пунк­та. Вы­зо­ви­те диа­лог Справ­
ри­тель­но про­чти­те до­к у­мен­та­цию – раз­ра­бот­чи­ки пре­ду­пре­ж ­да­ ка > About CurConverter и на­жми­те кноп­к у Debug. В от­крыв­шем­ся
ют о воз­мож­ной по­те­ре дан­ных. Ста­рая, как мир, исти­на: не за­бы­ ок­не вве­ди­те сле­д ую­щий текст:
вай­те ре­г у­ляр­но де­лать ре­зерв­ные ко­пии ка­та­ло­га рас­ши­рения! self.dumpMenus('com.sun.star.text.TextDocument')
и по­смот­ри­те вы­вод в тер­ми­на­ле. Не­об­хо­ди­мые нам име­на пунк­
Пункт в ме­ню тов ме­ню на­хо­д ят­ся по­сле «(u'- CommandURL:». При ми­ни­маль­ном
Пре­ж ­де чем при­сту­пать к напи­санию соб­ствен­но­го рас­ши­ зна­нии анг­лий­ско­го язы­ка най­ти не­об­хо­ди­мую по­зи­цию не со­ста­
рения, необ­хо­ди­мо оз­на­ко­мить­ся с гла­ва­ми 3 и 5 до­к у­мен­та­ции вит боль­шо­го тру­да: в на­шем слу­чае это '.uno:MailMergeWizard'.
EOEC для понимания фай­ло­вой струк­т у­ры рас­ши­рения и ме­то­ Вве­ди­те в ок­не от­лад­ки
дов EOEC. Же­ла­тель­но так­же про­смот­реть при­ме­ры рас­ши­рений, self.addMenuItem( 'com.sun.star.text.TextDocument’,
иду­щих в со­ста­ве EOEC, и до­к у­мен­та­цию по API OpenOffice.org ‘.uno:MailMergeWizard’, self.localize( ‘title’ ), ‘curconverter’ )
(http://api.openoffice.org). Ска­чать SDK OpenOffice.org мож­но и на­жми­те кноп­к у Execute code. Эту же стро­к у на­до до­ба­вить в ме­
со страницы http://api.openoffice.org/SDK/index.html. тод firstrun клас­са CurConverter.
Для на­ча­ла обес­пе­чим ин­тер­на­цио­на­ли­за­цию рас­ши­ Несмот­ря на то, что при до­бав­лении рас­ши­рений в OpenOffice.
рения. От­крой­те Сер­вис > Мак­ро­сы > Управ­ление диа­ло­га­ми, пе­ org все фай­лы уста­нав­ли­ва­ют­ся в про­филь OOo в до­машнем ка­

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


Сентябрь 2009 Linux Format      65
Учебник OpenOffice.org

та­ло­ге поль­зо­ва­те­ля (для вер­сии 3.x это ~/.openoffice.org/3/user/ [Global]


uno_packages/cache/uno_packages), мы бу­дем вно­сить из­менения URL = http://www.cbr.ru/scripts/XML_daily.asp
в файл curconverter.py, рас­по­ло­жен­ный в ди­рек­то­рии EOEC. Ины­ Ско­пи­руй­те файл на­с тро­ек в ка­та­лог рас­ши­рения. Внимание!
ми сло­ва­ми, при за­пуске рас­ши­рения из OpenOffice.org бу­дет вы­ В слу­чае, ес­ли в рас­ши­рение нуж­но до­ба­вить ка­кие-ли­бо фай­
пол­нять­ся код, рас­по­ло­жен­ный в ка­та­ло­ге EOEC. лы, на­при­мер, изо­бра­жения, на­с трой­ки и т. д., необ­хо­ди­мо де­
Для уда­ления пунк­та ме­ню в ме­тод uninstall по­сле try: до­бав­ лать это од­но­вре­мен­но в два места: в ра­бо­чий ка­та­лог рас­ши­
ля­ем стро­к у рения и его пап­к у в про­фи­ле. Все кри­ти­че­ские из­менения в них
self.removeMenuItem( 'com.sun.star.text.TextDocument', вно­сят­ся син­хрон­но, так как в про­фи­ле OOo ле­жат фай­лы, ко­то­
'curconverter' ) рые за­пуска­ют­ся при от­лад­ке на­ше­го dev-рас­ши­рения, а в ра­бо­
С уста­нов­кой/уда­лением пунк­тов ме­ню мы оп­ре­де­ли­лись; са­мое чем ка­та­ло­ге – фай­лы, ко­то­рые бу­д ут упа­ко­ва­ны для от­прав­ки
вре­мя «ожи­вить» их. В ко­де ме­то­да firstrun мы ука­за­ли, что при вы­ поль­зо­ва­те­лям.
бо­ре пунк­та ме­ню бу­дет вы­зван ме­тод curconverter. Соз­да­дим его: От­крой­те curconverter.py (в ра­бо­чем ка­та­ло­ге) и до­бавь­те им­
def curconverter( self ): порт мо­д у­лей:
self.box(u'Работает!') from xml.dom import minidom
Со­храните код и по­про­буй­те вы­брать пункт ме­ню Сер­вис > from urlparse import urlparse
Кон­вер­тор ва­лют. Как мож­но ви­деть, все дей­стви­тель­но ра­бо­та­ет. import urllib
import os, ConfigParser
До­ба­вим ин­тер­фейс Ви­до­из­ме­ни­те ме­тод curconverter:
При напи­сании рас­ши­рений для OOo с по­мо­щью EOEC не нуж­но def curconverter( self ):
под­к лю­чать сто­ронние гра­фи­че­ские биб­лио­те­ки – сгодятся «род­ self.dlgMain = dlgMain = self.createdialog( ‘Main’ )
ные» ин­тер­фейс­ные эле­мен­ты OpenOffice.org. EOEC по умол­чанию dlgMain.execute()
соз­да­ет два диа­ло­га – ок­на About и Debug. Со­хра­ни­те файл и за­пус­ти­те рас­ши­ре­ние че­рез ме­ню. Дол­
Вы­бе­ри­те в ме­ню Сер­вис > Мак­ро­сы > Управ­ление диа­ло­га­ми, жен поя­вить­ся соз­дан­ный на­ми диа­лог. Кноп­ки еще не ра­бо­та­ют,
вы­де­ли­те OOoCoderCurConverterDialogs и на­жми­те кноп­к у Но­вый но вско­ре мы это ис­пра­вим.
диа­лог. При­ду­май­те имя – скажем, Main, и на­жми­те Прав­ка. От­кро­ В ка­та­ло­ге util EOEC со­дер­жат­ся не­сколь­ко мо­д у­лей с не­ко­то­
ет­ся но­вый пустой диа­лог. До­ба­вим в него сле­дую­щие вид­жеты: ры­ми по­лез­ны­ми функ­ция­ми. В writer.py это функ­ция getWord().
Два эле­мен­та «Чи­сло­вое по­ле» ValuteNum1 и ValuteNum2 – Вос­поль­зу­ем­ся ею для счи­ты­ва­ния сум­мы из до­к у­мен­та.
для ото­бра­жения сумм. import util.writer
Два эле­мен­та «Спи­сок» ValuteName1 и ValuteName2 – для вы­бо­ ...
ра ва­лют. Свой­ство «Раскры­вае­мый» уста­но­вим в «Да». self.summa=util.writer.getWord(self.getcontroller()).String
Фла­жок chkInsert с надпи­сью «Вста­вить ре­зуль­тат в текст до­ self.cursor=self.getcontroller().getViewCursor()
ку­мен­та». За­пол­ним по­ле ValuteNum1:
Кноп­к у btnCalculate с надпи­сью «Рас­счи­тать». try:
Кноп­к у btnClear с надпи­сью «Очи­стить». eval(self.summa)
Кноп­к у btnClose с надпи­сью «За­крыть», тип кноп­ки – «От­ме­на» self.dlgMain.ValuteNum1.Value=self.summa
При­мер­ный вид диа­ло­га, ко­то­рый дол­жен по­лу­чить­ся, по­ка­ except:
зан на рис. 4. self.dlgMain.ValuteNum1.Value=100.00
Че­рез свой­ства эле­мен­тов мож­но вы­ста­вить их раз­ме­ры, по­ Как вид­но, об­ра­ще­ние к эле­мен­там управ­ле­ния диа­ло­га про­
ло­жение и т. д.; за­тем на­жми­те кноп­к у Со­хранить. Вид и текст ис­хо­дит как к объ­ек­там, яв­ляю­щим­ся ат­ри­бу­та­ми self.dlgMain,
диа­ло­га About CurConverter из­ме­ня­ет­ся здесь же, во вклад­ке по име­нам.
About. Те­перь необ­хо­ди­мо пе­рей­ти из обо­лоч­ки OOBasic в дру­ Да­лее об­ра­бо­та­ем кон­фи­г у­ра­ци­он­ный файл, счи­тав из не­го
гой эле­мент ООО, на­при­мер, Writer (по умол­чанию рас­ши­рение URL:
встраи­ва­ет­ся в ме­ню Справ­ка всех ком­понен­тов, кро­ме сре­ды self.config = ConfigParser.ConfigParser()
про­грам­ми­ро­вания). Вы­бе­ри­те Справ­ка > About CurConverter > self.config.read(os.path.join(self.path, 'settings'))
Debug > Save Dialogs. if not(self.config.has_option('Global','URL')):
self.config.set('Global','URL',
Вре­мя ко­ди­ро­вать 'http://www.cbr.ru/scripts/XML_daily.asp')
Соз­дай­те кон­фи­г у­ра­ци­он­ный файл settings, в ко­то­ром бу­дет self.BANK_URL = self.config.get('Global','URL')
хранить­ся URL сер­ви­са, пре­достав­ляю­ще­го кур­сы ва­лют. Пусть self.path – свой­ст­во, со­дер­жа­щее путь к ус­та­нов­лен­но­му рас­ши­ре­
его со­дер­жи­мое бу­дет та­ким: нию. Вы­зы­ва­ем ме­тод по­лу­че­ния кур­са ва­лют
self.getKurs()
ко­то­рый оп­ре­де­лят­ся сле­д ую­щим об­ра­зом:
def getKurs(self):
dom=minidom.parse(urllib.urlopen(self.BANK_URL))
self.kurses=[]
for node in dom.getElementsByTagName('Valute'):
self.kurses.append({'CharCode':
node.getElementsByTagName('CharCode')[0].childNodes[0].
nodeValue,
'Nominal': node.
getElementsByTagName('Nominal')
[0].childNodes[0].nodeValue,
Рис. 4.
Кон­ст­рук­тор диа­ло­ 'Name': node.
гов OpenOffice.org getElementsByTagName('Name')
в дей­ст­вии. [0].childNodes[0].nodeValue,

66      Linux Format Сентябрь 2009


 OpenOffice.org Учебник

'Value': node. for i in range(0, len(self.kurses)):


getElementsByTagName('Value') self.dlgMain.ValuteName1.addItem(self.
[0].childNodes[0].nodeValue}) kurses[i][‘Name’],i)
self.kurses.append({'CharCode': 'RUR', self.dlgMain.ValuteName2.
'Nominal': '1', addItem(self.kurses[i][‘Name’],i)
'Name': u'Российских руб­лей', В ито­ге у нас дол­жен по­лу­чить­ся та­кой ме­тод curconverter:
'Value': '1'}) def curconverter( self ):
В ито­ге по­лу­ча­ем кур­сы ва­лют в ви­де спи­ска сло­ва­рей и спи­ self.summa=util.writer.getWord(self.getcontroller()). Скорая
помощь
сок на­име­но­ва­ний ва­лют для под­ста­нов­ки в вы­па­даю­щие ме­ню String
ValuteName1 и ValuteName2. self.cursor=self.getcontroller().getViewCursor() В случае, если вам
До­бав­ля­ем «слу­ша­те­лей» на­жа­тий на кноп­ки: self.dlgMain = dlgMain = self.createdialog( 'Main' ) нужно просмот-
self.dlgMain.btnCalculate.addActionListener( self ) self.dlgMain.btnCalculate.addActionListener( self ) реть содержимое
какого-либо объ-
self.dlgMain.btnClear.addActionListener( self ) self.dlgMain.btnClear.addActionListener( self )
екта во время вы-
Ос­та­лось соз­дать об­ра­бот­чи­ки на­жа­тий – ме­то­ды, вы­зы­ва­ try: полнения про-
емые при ак­ти­ва­ции со­от­вет­ст­вую­щих эле­мен­тов управ­ле­ния. eval(self.summa) граммы, можно
Име­ну­ют­ся они сле­дую­щим об­ра­зом: on_action_<имя_эле­мен­та>. self.dlgMain.ValuteNum1.Value=self.summa воспользоваться
Кноп­ка btnClear сбра­сы­ва­ет зна­че­ния эле­мен­тов управ­ле­ния except: встроенной функ-
цией debug
на на­чаль­ные: self.dlgMain.ValuteNum1.Value=100.00
(<Expression>).
def on_action_btnClear(self): self.config = ConfigParser.ConfigParser() Для вывода сооб-
self.dlgMain.ValuteNum1.Value=100.00 self.config.read(os.path.join(self.path, 'settings')) щений во всплы-
self.dlgMain.ValuteNum2.Value=0 if not(self.config.has_option('Global','URL')): вающих окнах
служит метод self.
self.dlgMain.ValuteName1.selectItemPos(4,True) self.config.set('Global','URL', 'http://www.
box(“Сообщение”).
self.dlgMain.ValuteName2.selectItemPos(self.dlgMain. cbr.ru/scripts/XML_daily.asp')
ValuteName2.ItemCount-1,True) self.BANK_URL = self.config.get('Global','URL')
Кноп­ка btnCalculate вы­чис­ля­ет курс пер­вой ва­лю­ты от­но­си­ self.getKurs()
тель­но дру­гой, под­счи­ты­ва­ет сум­му в дру­гой ва­лю­те и, в за­ви­си­ self.fillList()
мо­сти от со­стоя­ния флаж­ка, встав­ля­ет ре­зуль­тат в до­к у­мент. self.dlgMain.ValuteName1.selectItemPos(4,True)
def on_action_btnCalculate(self): self.dlgMain.ValuteName2.selectItemPos(self.dlgMain.
if (self.dlgMain.ValuteName1.getSelectedItemPos()>-1) ValuteName2.ItemCount-1,True)
and dlgMain.execute()
(self.dlgMain.ValuteName2.getSelectedItemPos()>-1): Ре­зуль­та­ты на­ших тру­дов мож­но ви­деть на рис. 5.
valuteID1=self.dlgMain.ValuteName1.
getSelectedItemPos() Фи­наль­ный штрих
valuteID2=self.dlgMain.ValuteName2. На­ше рас­ши­ре­ние го­то­во. На вся­кий слу­чай еще раз со­хра­ним
getSelectedItemPos() диа­ло­ги че­рез ок­но О рас­ши­ре­нии. За­тем вой­ди­те в ка­та­лог EOEC
self.kursnode1=self.kurses[valuteID1] и со­бе­ри­те го­то­вое рас­ши­ре­ние.
self.kursnode2=self.kurses[valuteID2] python pack.py CurConverter
v1=eval(self.kursnode1['Value'].replace(',','.')) Что­бы из­ме­нить но­мер вер­сии рас­ши­ре­ния, не­об­хо­ди­мо от­ре­
/eval(self.kursnode1['Nominal']) дак­ти­ро­вать файл description.xml. В стро­ке
v2=eval(self.kursnode2['Value']. <version value=”1.0”></version>
replace(',','.')) вме­сто 1.0 нуж­но уста­но­вить тре­буе­мый но­мер. Фор­мат фай­
/eval(self.kursnode2['Nominal']) ла description.xml под­роб­но опи­сан в ру­ко­во­дстве раз­ра­бот­чи­ка:
sum1=self.dlgMain.ValuteNum1.Value http://api.openoffice.org/docs/DevelopersGuide/Extensions/Extensions.
val1to2=v1/v2 xhtml#1_5_description.xml
self.dlgMain.ValuteNum2. Поя­вив­шее­ся в ка­та­ло­ге рас­ши­рение CurConverter.oxt вер­
Value=sum1*val1to2 сии 1.0 го­то­во для рас­про­странения. Раз­местить его для об­
if (self.dlgMain.chkInsert.State): ще­го досту­па мож­но на сай­те рас­ши­рений для OpenOffice.org:
if self.cursor.isCollapsed(): extensions.services.openoffice.org. Ин­ст­рук­цию о том, как пра­виль­
self.cursor. но это сде­лать, мож­но най­ти по сле­д ую­ще­му ад­ре­су: http://wiki.
String=round(self.dlgMain.ValuteNum2.Value,2) services.openoffice.org/wiki/Extensions/website/submission
else:
self.cursor.
collapseToEnd()
self.cursor.
String=round(self.dlgMain.ValuteNum2.Value,2)
Для кнопки За­крыть об­ра­бот­чик не ну­жен.
Наконец, добавим метод заполнения списков наименований
валют и добьемся, чтобы пункты «Доллар США» и «Российских
рублей» были выбраны по умолчанию:
self.fillList()
self.dlgMain.ValuteName1.selectItemPos(4,True)
self.dlgMain.ValuteName2.selectItemPos(self.dlgMain.
ValuteName2.ItemCount-1,True) Рис. 5. Рас­ши­ре­
Ме­тод fillList вы­гля­дит так: ние CurConverter
def fillList(self): го­то­во к ра­бо­те.

Сентябрь 2009 Linux Format      67


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

VPN: Рас­ши­ря­ем
Часть 9: Ну­жен пол­ный дос­туп к се­ти че­рез Ин­тер­нет? При­сое­ди­няй­тесь
к Ней­лу Бот­ви­ку, ко­то­рый возь­мет­ся за вир­ту­аль­ную ча­ст­ную сеть (VPN).

мо­жет при­ме­нять­ся ком­панией для то­го, что­бы обес­пе­чить разъ­


езд­ным со­трудникам доступ к се­ти, как ес­ли бы они на­хо­ди­лись
на ра­бо­чих местах. Един­ствен­ным за­мет­ным от­ли­чи­ем здесь бу­
дет умень­шение ско­ро­сти, по­сколь­к у она ог­раничи­ва­ет­ся воз­
мож­но­стя­ми ин­тернет-со­единения, а не ги­га­бит­ной внут­ренней
OpenVPN 2.0.9 се­ти ком­пании.
На­до ска­зать, что вир­т у­а ль­ная ча­ст­ная сеть – ско­рее кон­цеп­
ция, чем стан­дарт, и од­ной той же це­ли мож­но до­бить­ся раз­ны­
ми спо­со­ба­ми, ка­ж ­дый из ко­то­рых име­ет свои за и про­тив. Да­же
SSH-туннель, ко­то­рый мы рас­смот­ре­ли в LXF119 – од­на из раз­но­
вид­но­стей VPN, хо­тя и ог­раничен­ная одним се­те­вым со­единением
за раз.
Рас­смот­рим два раз­лич­ных под­хо­да к VPN: OpenVPN
(http://openvpn.net/index.php/opensource.html) и Openswan (www.
openswan.org). Обе про­грам­мы доступ­ны и для Windows, но здесь
мы зай­мем­ся толь­ко вер­сия­ми для Linux. Под­роб­но­сти ра­бо­ты
с ними в Windows мож­но най­ти на сай­тах про­ек­тов.

На­чи­на­ем ра­бо­тать с OpenVPN


OpenVPN – кросс-плат­фор­мен­ная про­грам­ма, умею­щая соз­да­вать
се­ти ти­па «точ­ка–точ­ка» или обес­пе­чи­вать под­к лю­чение к сер­ве­ру
несколь­ким кли­ен­там. Она так­же про­зрач­но ра­бо­та­ет с мар­шру­ти­
за­то­ра­ми и NAT-бранд­мау­эра­ми, что де­ла­ет ее иде­а ль­ным ва­ри­
ан­том для под­к лю­чения так на­зы­вае­мых мо­биль­ных со­трудников

О
све­жи­те в па­мя­ти шестую часть это­го ру­ко­во­дства к офис­ной се­ти из­вне.
(см. LXF119), и, на­де­юсь, вы вспомните, что мы го­во­ В ка­че­стве при­ме­ра пред­по­ло­жим, что у вас есть но­у т­бук, ко­то­
ри­ли об уда­лен­ном досту­пе. Ес­ли вы про­пусти­ли ее или рый под­к лю­ча­ет­ся к до­машнему ком­пь­ю­те­ру или ма­шине в офи­
хо­ти­те бы­ст­ро вспомнить, о чем шла речь, ска­ж у, что мы со­сре­ се по мо­биль­но­му ши­ро­ко­по­лосно­му со­единению или Wi-Fi. Да­
до­то­чи­лись на SSH и рас­смот­ре­ли туннели­ро­вание, при ко­то­ром дим этим ком­пь­ю­те­рам изо­бре­та­тель­ные име­на laptop.example.
SSH-со­единение ис­поль­зо­ва­лось для за­щи­щен­ной пе­ре­да­чи дан­ com и gateway.example.com.
ных на сер­вер на дру­гом ком­пь­ю­те­ре или в дру­гой се­ти. OpenVPN ис­поль­зу­ет для свя­зи уст­рой­ства tun, по­это­му сна­
Наш Иногда это удоб­но; ну, а ес­ли нуж­но пре­доста­вить бо­лее ча­ла нуж­но убе­дить­ся, что они су­ще­ству­ют. В боль­шин­стве ди­
эксперт пол­ный доступ к се­ти по неза­щи­щен­но­му со­единению? От­ ст­ри­бу­ти­вов они есть, но не ме­ша­ет про­ве­рить на­ли­чие фай­ла
Нейл Ботвик вет – восполь­зуй­тесь вир­т у­а ль­ной ча­ст­ной се­тью, или ���������
VPN������
(����
Vir- /dev/net/tun. Ес­ли его нет, за­гру­зи­те мо­д уль коман­дой
У Нейла Ботвика tual Private Network). Это схе­ма, в ко­то­рой часть се­ти от­де­ле­на modprobe -v tun
по компьютеру и под­к лю­че­на к основ­ной се­ти че­рез за­щи­щен­ное со­единение по и по­про­буй­те еще раз. Ес­ли он опять не соз­да­ст­ся, сде­лай­те это
в каждой комнате. обыч­но­му неза­щи­щен­но­му ка­на­лу (чи­тай – че­рез Ин­тернет). са­ми, коман­дой
Но по соображени-
ям безопасности
mknod /dev/net/tun c 10 200
он никогда не ска- Свя­зан­ные вме­сте Так­же нуж­но убе­дить­ся, что порт 1194 (UDP) пе­ре­на­прав­ля­ет­ся
жет вам, где цент- Су­ще­ству­ет два основ­ных ти­па се­те­вой то­по­ло­гии VPN. Один с мар­шру­ти­за­то­ра на ком­пь­ю­тер, с ко­то­рым вы хо­ти­те со­единить­
ральный сервер. из них ис­поль­зу­ет­ся для со­единения двух се­тей – точнее, для под­ ся. Для на­ча­ла вы­полним ба­зо­вую уста­нов­к у, а уж по­том по­смот­
клю­чения друг к дру­г у их шлю­зов. Та­кая кон­фи­г у­ра­ция по­дой­дет, рим, как она ра­бо­та­ет и что де­лать даль­ше. Во-пер­вых, вы­полните
ес­ли у вас два офи­са и нуж­но объ­е­динить их в од­ну сеть. Вто­ на ком­пь­ю­те­ре шлю­за коман­д у
рой спо­соб, ко­то­рый часто на­зы­ва­ют «на­строй­кой мо­биль­но­ OpenVPN --remote laptop.example.com --dev tun1 --ifconfig
го со­трудника» [���������������������������������������������������
road�����������������������������������������������
warrior���������������������������������������
����������������������������������������������
configuration�������������������������
��������������������������������������
] – это для слу­чая, ког- 10.0.1.1 10.0.1.2
да один или несколь­ко от­дель­ных ком­пь­ю­те­ров под­к лю­ча­ют­ся а эту – на но­у т­бу­ке:
к цен­траль­ной се­ти: на­при­мер, но­у т­бук – к се­ти офи­са по Wi-Fi openvpn --remote gateway.example.com --dev tun1 --ifconfig
или ши­ро­ко­по­лосно­му мо­биль­но­му со­единению. Та­кой спо­соб 10.0.1.2 10.0.1.1

Месяц назад Мы ус­та­но­ви­ли SMTP-сер­вер, чтоб чи­тал и ска­ни­ро­вал поч­т у.


68      Linux Format Сентябрь 2009
 Сети Учебник

ва­шу сеть
Па­ра­метр оп­ции --remote мо­жет быть ли­бо име­нем хос­та, ли­ Пе­ред за­пус­ком
бо IP-ад­ре­сом. По­том на ка­ж ­дом из ком­пь­ю­те­ров вы долж­ны уви­ скрип­тов нуж­но
деть не­сколь­ко строк вы­во­да, за­кан­чи­ваю­щих­ся от­ре­дак­ти­ро­вать
файл vars
Initialization Sequence Completed
и изме­нить по­ля
Тем са­мым мы ве­ле­ли OpenVPN под­к лю­чить­ся к дру­го­му сер­тифи­ка­та.
ком­пь­ю­те­ру с ис­поль­зо­ванием уст­рой­ства tun1 (вы это уви­ди­
те, за­пустив ifconfig) и за­да­ли ад­ре­са обе­их конеч­ных то­чек со­
единения. Они долж­ны вхо­дить в од­ну из стан­дарт­ных ча­ст­ных
се­тей – 10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16 – но не долж­ны
сов­па­дать с ад­ре­са­ми ва­шей локаль­ной се­ти. Об­ра­ти­те внимание,
что при вы­полнении коман­ды с дру­го­го ком­пь­ю­те­ра ад­ре­са ме­ня­
ют­ся места­ми, так что в ка­ж ­дом слу­чае пер­вый ад­рес – это ад­рес
ком­пь­ю­те­ра, где вы­пол­ня­ет­ся коман­да. По­про­буй­те про­пин­го­вать
вто­рой ад­рес, что­бы убе­дить­ся, что вы мо­же­те об­щать­ся со вто­
рым ком­пь­ю­те­ром.
За­пускать коман­ду на обо­их ком­пь­ю­те­рах для соз­дания ка­на­ла ся в ка­та­ло­ге /usr/share/openvpn/easy-rsa. Ес­ли вам по­на­до­бит­ся
неудоб­но, так как в этом слу­чае вам по­тре­бу­ет­ся ли­бо по­мощник за­дать в них ка­кие-ли­бо па­ра­мет­ры, ско­пи­руй­те ка­та­лог це­ли­ком
на дру­гой сто­роне, ли­бо за­щи­щен­ное SSH-со­единение ме­ж ­ду ма­ в /etc/openvpn, что­бы при об­нов­лении на­строй­ки не за­тер­лись.
ши­на­ми. Ука­зы­вать все оп­ции ка­ж ­дый раз то­же неудоб­но, по­это­ По­том пе­рей­ди­те (cd) в ди­рек­то­рию /etc/openvpn/easy-rsa и от­
му мы мо­жем запи­сать их в кон­фи­г у­ра­ци­он­ный файл и за­пускать ре­дак­ти­руй­те файл vars. По­сле это­го бу­дет нуж­но за­дать под­хо­
OpenVPN на ком­пь­ю­те­ре шлю­за во вре­мя за­груз­ки систе­мы. дя­щие зна­чения для па­ра­мет­ров KEY_COUNTRY, KEY_PROVINCE, Скорая
помощь
Для это­го занеси­те все тре­буе­мые па­ра­мет­ры в файл по од­ KEY_CITY, KEY_ORG и KEY_EMAIL – ни один из них не дол­жен
но­му на стро­к у и без на­чаль­ных --. На­при­мер, файл шлю­за мо­ остать­ся пустым. На­конец, соз­да­дим глав­ный центр сер­ти­фи­ка­ Со­еди­не­ние 3G
жет вы­гля­деть так: ции (Certificate Authority, CA) коман­да­ми (мо­биль­ное ши­
dev tun1 source ./vars/ ро­ко­по­лос­ное) –
remote laptop.example.com #или IP-ад­рес ./clean-all хо­ро­ший спо­соб
про­тес­ти­ро­вать
ifconfig 10.0.1.1 10.0.1.2 ./build-ca уда­лен­ное под­
а ко­ман­да: По­сле­д у­ет се­рия во­про­сов, но обыч­но мож­но про­сто на­ клю­че­ние, не от­
openvpn /путь/к/на­с трой­к ам жи­мать Enter для ка­ж ­до­го, по­то­му что от­ве­ты на них за­ранее хо­д я от ком­пь­
ор­га­ни­зу­ет ка­нал на сто­ро­не шлю­за. запи­са­ны в фай­ле vars. Эти коман­ды соз­да­д ут в ка­та­ло­ге keys ю­те­ра, ко­то­рый
вы пы­тае­тесь на­
клю­чи, ко­то­ры­ми мы бу­дем подпи­сы­вать все соз­да­вае­мые кли­ент­-
Безо­пас­ность – это ключ ские и сер­вер­ные сер­ти­фи­ка­ты. Соз­да­дим сер­ти­фи­кат сер­ве­
стро­ить.

Здесь есть од­на оче­вид­ная про­бле­ма: дан­ный ме­тод пред­по­ла­га­ ра коман­дой


ет, что из­вестен IP-ад­рес ком­пь­ю­те­ра, с ко­то­ро­го вы под­к лю­чае­ ./build-key-server server
тесь. Ес­ли вы со­еди­няе­те шлю­зы двух офи­сов друг с дру­гом – все При­ми­те на­строй­ки по умол­чанию, но уста­но­ви­те Common
пре­крас­но: у ка­ж ­до­го из них есть из­вест­ный ста­ти­че­ский IP-ад­ Name в server, по­том от­веть­те y на во­прос, хо­ти­те ли вы подпи­сать
рес. Но в слу­чае с мо­биль­ны­ и ут­вер­дить сер­ти­фи­кат. Те­
ми со­трудника­ми по­сто­ян­ный
IP-ад­рес есть толь­ко у офи­са,
«Сер­ти­фи­ка­ты обес­пе­ перь на ка­ж ­дом кли­ен­те, ко­то­
рый вы хо­ти­те под­к лю­чить, вы­
а но­у т­бук по­лу­ча­ет свой ад­
рес че­рез DHCP, и он бу­дет за­
чат вход только ле­галь­ полните сле­д ую­щ ую коман­д у,
ука­зав оди­на­ко­вые имя кли­ен­
ви­сеть от се­ти, где мо­биль­ный ным поль­зо­ва­те­лям.» та в команд­ной стро­ке и в от­вет
со­трудник на­хо­дит­ся в те­к у­ на за­прос Common Name:
щий мо­мент. По­это­му нам нуж­но раз­ре­шить под­к лю­чение с лю­бо­ ./build-key clientname
го ад­ре­са или, по крайней ме­ре, с диа­па­зо­на ад­ре­сов мо­биль­но­го Скрипт соз­даст ключ для под­к лю­чения к VPN, ко­то­рым мо­жет
про­вай­де­ра, что мож­но сде­лать пу­тем на­строй­ки OpenVPN в кон­ восполь­зо­вать­ся ка­ж ­дый, у ко­го есть доступ к ком­пь­ю­те­ру. Ес­ли
фи­г у­ра­ции кли­ен­та/сер­ве­ра. это но­у т­бук, то ис­поль­зуй­те коман­д у buildkey-pass вме­сто build-
Тут возника­ет важ­ный во­прос, ка­саю­щий­ся безо­пас­но­сти: как key. Бу­дет соз­дан ключ, за­щи­щен­ный па­ро­лем: это за­щи­тит вас,
га­ран­ти­ро­вать под­к лю­чение к се­ти толь­ко ав­то­ри­зо­ван­ных поль­ ес­ли ком­пь­ю­тер ук­ра­д ут. Те­перь вы­полните коман­д у
зо­ва­те­лей, ес­ли раз­ре­ше­ны со­единения ото­всю­д у? Нуж­но дать ./build-dh
кли­ен­там и сер­ве­рам циф­ро­вые сер­ти­фи­ка­ты, ко­то­рые по­зво­лят что­бы соз­д ать еще один файл, тре­буе­мый для про­цес­са ау­тен­
им при­знать друг дру­га. Мы соз­да­дим их на сер­ве­ре, и у OpenVPN ти­фи­ка­ции. Те­перь в ка­та­ло­ге keys бу­дет несколь­ко фай­лов CRT
есть на­бор скрип­тов для ра­бо­ты с клю­ча­ми, он обыч­но на­хо­дит­ и KEY: один для цен­тра сер­ти­фи­ка­ции, вто­рой – для сер­ве­ра, и по

Сентябрь 2009 Linux Format      69


Учебник Сети

од­но­му для ка­ж ­до­го из кли­ен­тов. Есть так­же несколь­ко фай­лов


SR (за­прос на подпись сер­ти­фи­ка­та), на ко­то­рые мож­но не об­ра­
щать внимания. Вам нуж­но ско­пи­ро­вать в ка­та­лог /etc/openvpn
ка­ж ­до­го ком­пь­ю­те­ра че­ты­ре фай­ла – два фай­ла CA, файл CRT
и соб­с твен­ный файл KEY для ма­ши­ны. На сер­ве­ре так­же нуж­
но ско­пи­ро­вать файл dh1024.pem, соз­д ан­ный коман­дой build-
dh. Де­лать это нуж­но безо­пас­но – ли­бо на фи­зи­че­ском но­си­
те­ле, ли­бо по SSH, по­то­му что ка­ж ­дый, у ко­го есть эти фай­лы,
смо­жет под­к лю­чить­ся к ва­шей се­ти. Убе­ди­тесь, что пра­ва досту­
па на сек­рет­ный файл KEY уста­нов­ле­ны в rw-------; так как USB-
брел­ки фор­ма­ти­ру­ют­ся в FAT, файл при ко­пи­ро­вании по­лу­чит
боль­шие пра­ва досту­па.
Те­перь нуж­но соз­дать кон­фи­г у­ра­ци­он­ные фай­лы для сер­
ве­ра и кли­ен­тов на осно­ве при­ме­ров из ка­та­ло­га /usr/share/doc/
openvpn/examples/sample-config-files/ или по­доб­ных. Ско­пи­руй­
те server.conf в /etc/openvpn/openvpn.conf на ком­пь­ю­те­ре шлю­за Убе­ди­тесь, что мар­шру­ти­за­тор пе­ре­на­прав­ля­ет не­об­хо­ди­мые
и за­гру­зи­те его в свой ре­дак­тор. Файл боль­шой, но в основ­ном это пор­ты на сер­вер — 1194 для OpenVPN, 500 и 4500 для Openswan —
ком­мен­та­рии. С на­стро­ек по умол­чанию на­чать вполне мож­но, но все они дос­туп­ны по UDP.
убе­ди­тесь, что па­ра­мет­ры ca, cert, key и dh со­от­вет­ству­ют фай­лам,
соз­дан­ным ва­ми ранее. Для их за­дания ис­поль­зуй­те пол­ные пу­ а за­пуск ifconfig на ка­ж ­дом из ком­пь­ю­те­ров по­ка­жет уст­рой­ство
ти, ина­че вы смо­же­те за­пускать OpenVPN, толь­ко ес­ли он на­хо­дит­ tun с IP-ад­ре­сом в диа­па­зоне от 10.8.0.1 до 10.8.0.254, где сер­вер
ся в од­ном ка­та­ло­ге с клю­ча­ми. Раском­мен­ти­ро­вание строк user ис­поль­зу­ет пер­вый ад­рес. Те­перь ком­пь­ю­те­ры долж­ны пин­го­вать­
и group мо­жет по­вы­сить безо­пас­ность, но де­лай­те это, толь­ко убе­ ся по но­вым IP-ад­ре­сам. Ес­ли вы ви­ди­те со­об­щение Initialization
див­шись, что под­ Sequence Completed, но пинг не ра­бо­та­ет, про­верь­те бранд­мау­эры

«Бранд­мау­эры не дол­ клю­чения ра­бо­та­


ют. На ка­ж ­дом из
на сер­ве­ре и кли­ен­те. Ни один из них не дол­жен бло­ки­ро­вать тра­
фик че­рез ин­тер­фейс tun0.
жны бло­ки­ро­вать кли­ен­тов ско­пи­руй­
те файл client.conf
Ну вот, все ра­бо­та­ет; мож­но на­стро­ить за­пуск OpenVPN
при стар­те сер­ве­ра с по­мо­щью менед­же­ра па­ке­тов, и он бу­дет ти­
тра­фик че­рез tun0.» из ка­та­ло­га при­ме­ хо си­деть в ожи­дании за­про­сов на со­единение. Когда вы за­хо­ти­
ров в /etc/openvpn/ те под­к лю­чить­ся с но­у т­бу­ка, на­бе­ри­те на нем коман­ду openvpn
openvpn.conf и от­крой­те его на ре­дак­ти­ро­вание. В remote ука­жи­ или за­пусти­те сер­вис.
те IP-ад­рес (или имя хоста) сер­ве­ра и порт, ко­то­рый он слу­ша­ет
(по умол­чанию 1194). В фай­ле мо­жет быть боль­ше од­ной стро­ки Под­клю­ча­ем­ся ко всей се­ти
remote; они бу­д ут пе­ре­би­рать­ся по оче­ре­ди, по­ка не уста­нов­ится По­ка мы лишь по­зво­ли­ли ва­ше­му но­у т­бу­к у со­еди­нять­ся со шлю­
со­единение. зом се­ти. OpenVPN из­менил таб­ли­ц у мар­шру­ти­за­ции та­ким об­
remote gateway.example.com 1194 ра­зом, что­бы че­рез VPN-со­единение про­пускал­ся лю­бой тра­фик
remote 123.124.125.126 1194 на ад­ре­са 10.8.0.*, но к осталь­ной части уда­лен­ной се­ти досту­па
Ес­ли шлюз на­хо­дит­ся за мар­шру­ти­за­то­ром, восполь­зуй­тесь еще нет. На­строй­те его, до­ба­вив стро­к у
его пуб­лич­ным IP-ад­ре­сом и пе­ре­на­правь­те порт 1194 на сер­вер push “route 192.168.1.0 255.255.255.0”
шлю­за в на­строй­ках сво­его мар­шру­ти­за­то­ра. Вставь­те в стро­ки в кон­фи­г у­ра­ци­он­ный файл сер­ве­ра. То­гда при под­к лю­че­нии кли­
cert и key име­на фай­лов кли­ент­ско­го сер­ти­фи­ка­та и клю­ча. Ме­няя ен­та его таб­ли­ца мар­шру­ти­за­ции из­ме­нит­ся та­ким об­ра­зом, что­
Ус­пеш­ный за­пуск
сер­ве­ра OpenVPN. лю­бую из на­стро­ек по умол­чанию в фай­ле server.conf, убе­ди­тесь, бы весь тра­фик в эту сеть от­прав­лял­ся че­рез VPN-со­еди­не­ние.
Лю­бой вы­вод, что все со­пут­ствую­щие па­ра­мет­ры из­менены и здесь. Про­верь­те Ес­ли, от­крыв VPN-со­еди­не­ние на кли­ен­те, вы­пол­нить ко­ман­д у
за­кан­чи­ваю­щий­ся кон­фи­г у­ра­цию, вы­полнив коман­ду “route -n”, вы уви­ди­те при­мер­но сле­д ую­щее:
на ‘Initialization openvpn /etc/openvpn.conf Destination Gateway Genmask Flags Metric Ref Use Iface
Sequence на сер­ве­ре и за­тем на но­у т­бу­ке. Вы долж­ны уви­деть 192.168.1.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
Completed’ — Initialization Sequence Completed Это ра­бо­та­ет хо­ро­шо при усло­вии, что сер­вер OpenVPN так­же
хо­ро­ший знак.
яв­ля­ет­ся и шлю­зом, то есть дру­гие ком­пь­ю­те­ры уда­лен­ной се­ти
бу­д ут в лю­бом слу­чае от­прав­лять че­рез него весь внешний тра­
фик. Ес­ли нет, име­ют­ся два ва­ри­ан­та. Мож­но из­менить таб­ли­цы
мар­шру­ти­за­ции всех ком­пь­ю­те­ров се­ти, ко­то­рые долж­ны быть
доступ­ны че­рез VPN, вы­полнив сле­д ую­щ ую коман­д у
route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.1.1
или из­ме­нить на­строй­ки мар­шру­ти­за­то­ра так что­бы весь тра­фик
на сеть 10.8.0.0 шел че­рез сер­вер, ад­рес ко­то­ро­го в этом при­ме­
ре 192.168.1.1.
Ес­ли вы хо­ти­те со­единить че­рез VPN две се­ти, у них долж­
ны быть раз­ные ад­ре­са, ина­че систе­ма не смо­жет оп­ре­де­лить,
нуж­но ли от­прав­лять па­кет по обыч­но­му Ethernet, бес­про­вод­
но­му ин­тер­фей­су или че­рез уст­рой­ство tun. То же са­мое мо­жет
про­изой­ти и в кон­фи­г у­ра­ции мо­биль­но­го со­трудника, ес­ли сеть,
к ко­то­рой вы под­к лю­че­ны, ис­поль­зу­ет ту же маску под­се­ти, что
и ва­ша соб­ствен­ная. Вряд ли вам уда­ст­ся убе­дить Starbucks по­
ме­нять их се­те­вые на­строй­ки, и ес­ли вы планируе­те ис­поль­зо­
вать их часто, хо­ро­шо бы пе­ре­местить ва­шу сеть в менее по­пу­

70      Linux Format Сентябрь 2009


 Сети Учебник

ляр­ную под­сеть по сравнению с рас­про­странен­ны­ми 192.168.0.0, Те­перь ско­пи­руй­те этот файл на ком­пь­ю­тер шлю­за. Так как
192.168.1.0 или 10.0.0.0. Мы со­ве­т у­ем ис­поль­зо­вать что-нибудь обе сто­ро­ны со­единения оста­ют­ся те­ми же, на них мож­но ис­поль­ Скорая
помощь
ти­па 192.168.137.0 или го­раз­до менее рас­про­странен­ный (на­вер­ зо­вать один и тот же файл. Впро­чем, есть од­но исклю­чение – IP-
ное, по­то­му, что эти чис­ла никак не упомнить) диа­па­зон ад­ре­сов ад­ре­са долж­ны да­вать­ся так, как их ви­дит эта ма­ши­на, и ес­ли
Что­бы фай­лы
с 172.16.0.0 до 172.31.255.255. шлюз на­хо­дит­ся в ча­ст­ной се­ти за мар­шру­ти­за­то­ром, за­пи­ши­ жур­на­лов не за­
Вир­т у­а ль­ные ча­ст­ные се­ти – боль­шая и слож­ная те­ма. И хо­ те «се­рый» ад­рес в его кон­фи­г у­ра­ци­он­ный файл и пре­доставь­те пол­ня­лись ре­зуль­
тя здесь нель­зя опи­сать все, на­де­юсь, рас­ска­зан­но­го доста­точ­но, но­у т­бу­к у пуб­лич­ный ад­рес мар­шру­ти­за­то­ра. та­та­ми не­удач­ных
по­пы­ток атак бо­
что­бы на­чать. На сай­тах OpenVPN и Openswan есть под­робней­шие
раз­де­лы с до­к у­мен­та­ци­ей, и при же­лании копнуть поглубже мо­ Про­вер­ка, про­вер­ка... тов, из­ме­ни­те порт
OpenVPN по умол­
же­те на­чать с них. Те­перь не ху­до убедиться, что все ра­бо­та­ет. Восполь­зуй­тесь ча­нию в его фай­
коман­дой ле кон­фи­г у­ра­ции.
Займемся IPsec ipsec verify Ес­ли мар­шру­ти­
за­тор мо­жет пе­ре­
Хо­тя здесь в основ­ном го­во­ри­лось об OpenVPN, вы мо­же­ для проверки доступ­но­сти важ­ных фай­лов, про­грамм и мо­ду­лей
на­прав­лять внеш­
те пред­по­честь ей VPN на осно­ве IPsec; тогда мы ре­ко­мен­ду­ем яд­ра. Мо­г ут поя­вить­ся со­об­щения об ошиб­ках, так как раз­ре­ше­ны ний порт на дру­гой
Openswan. Хо­тя Openswan – на­бор про­грамм по боль­шей части для пе­ре­на­прав­ления ICMP. В Openswan есть при­мер фай­ла sysctl.conf – внут­рен­ний порт,
Linux, он раз­ра­ба­ты­ва­ет­ся на дру­гих от­кры­тых плат­фор­мах и мо­ обыч­но он на­хо­дит­ся в ка­та­ло­ге /etc/ipsec.d/examples, по­это­му до­ файл кон­фи­г у­ра­
ции не тро­гай­те,
жет ра­бо­тать с реа­ли­за­ция­ми �����������������������������������
IPsec������������������������������
мно­гих опе­ра­ци­он­ных сис- бавь­те его со­дер­жи­мое в /etc/sysctl.conf, и по­сле пе­ре­за­груз­ки там
а из­ме­ни­те пуб­
тем. Не бу­дем уг­луб­лять­ся в де­та­ли, но ес­ли вас за­ин­те­ре­со­вал ока­ж ут­ся вер­ные на­строй­ки. При­мените их сей­час коман­дой лич­ный порт.
Openswan, то сей­час мы рас­смот­рим осно­вы соз­дания со­единения sysctl -p
для кон­фи­г у­ра­ции мо­биль­но­го со­трудника. Так­же нуж­но раз­ре­шить мар­шру­ти­за­цию па­ке­тов, до­ба­вив
Сна­ча­ла для ка­ж ­до­го ком­пь­ю­те­ра соз­да­ет­ся сек­рет­ный ключ. стро­к у
Сде­лать это мож­но так: net.ipv4.ip_forward = 1
ipsec newhostkey --verbose --hostname laptop.example.com в /etc/sysctl.conf. В при­ме­ре sysctl.conf она есть, и вы уви­ди­те со­
--output /etc/ipsec.secrets об­ще­ние об ошиб­ке, по­то­му что не за­пу­щен Pluto, де­мон со­еди­не­
chmod 600 /etc/ipsec.secrets ния. Это мож­но ис­пра­вить, за­пус­тив сер­вис IPsec с по­мо­щью ме­
Про­цесс мож­но уско­рить, по­ше­ве­ли­вая мыш­кой: тем самым нед­же­ра па­ке­тов. Те­перь сно­ва на­бе­ри­те ко­ман­д у:
вы обес­пе­чите по­сто­ян­ное на­ли­чие дан­ных в /dev/random. Вы­ ipsec verify
полните коман­ду chmod, и имей­те в ви­ду, что IPsec от­ка­жет­ся ра­ и все ре­зуль­та­ты про­ве­рок долж­ны быть OK или N/A. Про­пус­ти­те
бо­тать с фай­лом, ко­то­рый мо­жет чи­тать кто-то кро­ме ������������
root��������
. Не за- две стро­ки по­сле Opportunistic Encryption DNS checks и про­верь­те
будьте под­ста­вить вме­сто hostname соб­ствен­ное имя хоста. Те­перь на­строй­ки ко­ман­дой:
на но­у т­бу­ке мож­но вы­полнить сле­дую­щую коман­ду: ipsec auto --status
ipsec showhostkey --left Стро­ки, ко­то­рые на­чи­на­ют­ся с чи­сел, от­лич­ных от 000 – это
что­бы про­смот­реть ключ. По­вто­ри­те ко­ман­д у на шлю­зе, за­ме­нив ошиб­ки, но в Ин­тер­не­те лег­ко най­ти ин­фор­ма­цию о том, как их
--left на --right. Вкрат­це по­яс­ним, что у со­еди­не­ния IPsec есть две ис­пра­вить. На­ко­нец, соз­дай­те со­еди­не­ние с но­у т­бу­ка, вы­пол­нив
сто­ро­ны, ле­вая и пра­вая, и в слу­чае со­еди­не­ния по ти­пу мо­биль­ ко­ман­д у:
но­го со­труд­ни­ка его ком­пь­ю­тер счи­та­ет­ся ле­вой сто­ро­ной. ipsec auto --up laptop
Она соз­даст уст­рой­ст­во ipsec0, ко­то­рое свя­зы­ва­ет­ся с дру­гой На сай­тах обе­их
Ба­зо­вая на­строй­ка се­тью, поч­ти так же, как уст­рой­ст­во tun в OpenVPN. Ес­ли ваш сер­ про­грамм есть
На но­у т­бу­ке от­крой­те файл кон­фи­г у­ра­ции Ipsec – обыч­но это /etc/ вер на­хо­дит­ся за мар­шру­ти­за­то­ром, нуж­но так­же пе­ре­пра­вить на обиль­ная до­ку­мен­
ipsec.conf – и до­бавь­те в не­го сле­д ую­щие стро­ки: та­ция и при­ме­ры
не­го UDP-пор­ты 500 и 4500.
на­стро­ек.
conn laptop
left=%defaultroute
leftid=@laptop.example.com
leftrsasigkey=0sAQNoJVpgKtOM...
right=192.168.1.1
rightsubnet=192.168.1.0/24
rightid=@gateway.example.com
rightrsasigkey=0sAQPp2+LvORyzRYaI7...
auto=add
Пер­вая стро­ка соз­да­ет со­единение под на­званием laptop.
Осталь­ные стро­ки со­дер­жат его на­строй­ки и долж­ны на­чи­нать­ся
с про­бе­ла или зна­ка та­бу­ля­ции. Вме­сто %defaultroute при за­пуске
бу­дет под­став­лен IP-ад­рес, по­лу­чен­ный от систе­мы, где вы­пол­
ня­ет­ся IPsec – это удоб­но при на­строй­ке мо­биль­но­го ком­пь­ю­те­
ра по DHCP в раз­лич­ных се­тях. Ка­ж ­дая из сто­рон мо­жет ис­поль­
зо­вать %defaultroute, но не обе сра­зу. Па­ра­мет­ры id ис­поль­зу­ют­ся
для ау­тен­ти­фи­ка­ции, и здесь про­ще все­го впи­сать имя ком­пь­ю­
те­ра, пред­ва­рив его @. Зна­чения rsasigkey — это те, что вы по­лу­
чи­ли от showhostkey. Для пра­вой сто­ро­ны мож­но так­же ука­зать
маску под­се­ти, за­даю­щую диа­па­зон ад­ре­сов, к ко­то­рым она мо­
жет под­к лю­чать­ся, имея за­дан­ный IP-ад­рес. Без это­го вы уви­ди­
те толь­ко сер­вер.

Через месяц Сде­ла­ем web-proxy – сэ­ко­но­мим тра­фик и от­фильт­ру­ем сай­ты.


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

Python: Про­чту
Часть 3: Ник Вейч про­дол­жа­ет web-экс­пе­ри­мен­ты а-ля док­тор Мо­ро, на сей раз
соз­да­вая гиб­рид, умею­щий го­во­рить – по­лу-Python, по­лу-Twitter.

Пе­ре­рыв
Так, те­перь приоста­но­вим урок, что­бы дать вам вы­бор. Вы когда-
нибудь слы­ша­ли об Identi.ca? Он, э-э, вы­ли­тый Twitter, бо­лее или
менее, но ра­бо­та­ет на сво­бод­ном ПО под ли­цен­зи­ей GPl. Его со-
­дер­жание доступ­но на усло­ви­ях Creative Commons, а зна­чит,
в це­лом он убе­ди­тельнее и кра­си­вее, чем Twitter. Че­ст­но.
Все еще тут? Тогда за­од­но рас­ска­жем, как все ра­бо­та­ет
в Identi.ca. Спе­ци­а ль­но­го мо­д у­ля Python для это­го сер­ви­са нет,
но по­сколь­к у API схож с Twitter, мы про­сто сменим на­строй­ки под­
клю­чения к сер­ве­ру в фай­ле twitter.py. Во­об­ще-то это уже сде­ла­
но за нас – по­смот­ри­те файл по ад­ре­су www.dilella.org/foo/twitter.
py_new. И это на са­мом де­ле по­зво­ля­ет пе­ре­да­вать дан­ные на сер­
вер – по­это­му те­перь, уви­дев
client = twitter.Api(username=”foo”,password=”bar”)
мо­же­те сде­лать сле­д ую­щ ую за­ме­ну:
client = twitter.Api(username=”foo”, password=”bar”,
twitterserver=”identi.ca”)
Ес­ли хо­ти­те ис­поль­зо­вать эту рас­ши­рен­ную биб­лио­те­к у,
про­сто ска­чай­те файл по ссыл­ке. По­на­до­бит­ся за­менить уста­
нов­лен­ную биб­лио­те­к у, свя­зан­ную с Twitter (для бо­лее глад­кой
ра­бо­ты систе­мы, луч­ше спер­ва уста­но­вить ис­ход­ный па­кет Python-
Twitter). В за­ви­си­мо­сти от ва­ших вер­сий Linux и Python, он на­хо­
дит­ся в /usr/lib/python2.5/site-packages или где-то еще. Про­сто за­
мените файл twitter.py на но­вый.

Со­единение
Что­бы от систе­мы Twitter был прок, соз­да­дим учет­ную запись. Как
и в пре­ды­д у­щих про­ек­тах, для этих це­лей мож­но напи­сать скрипт,

О
д­на­ж ­ды нек­то ре­шил, что лю­д ям нуж­но боль­ше от­ но го­раз­до лег­че про­сто пе­рей­ти на web-страницу, за­ре­ги­ст­ри­ро­
вле­кать­ся от ра­бо­ты – и при­д у­мал Twitter. Воз­мож­ вать­ся и за­помнить де­та­ли, ко­то­рые вы бу­де­те ис­поль­зо­вать. Вы,
но, в штаб-квар­ти­ре Twitter эту исто­рию из­ло­жи­ли бы на­вер­ное, так­же за­хо­ти­те до­ба­вить дру­зей (в про­тив­ном слу­чае
не со­всем так – ско­рее все­го по­то­му, что она соз­д а­ет не слиш­ бу­дет скуч­но­ва­то), а мож­но и ис­поль­зо­вать имею­щ ую­ся учет­
ком гла­мур­ный имидж (ну да, да, это еще и ди­ко неточ­но). Так
Наш или ина­че, Twitter осед­лал вол­ну по­пу­ляр­но­с ти. Ес­ли вы хо­ти­
эксперт те уз­нать, в ка­кой точ­ке планеты сей­час на­хо­дит­ся Сти­вен Фрай,
Ник Вейч что ка­ж ­дый жи­тель США ел на ланч или как са­мо­до­воль­но бах­
Ник Вейч запустил ва­лит­ся о сво­ем ве­ли­чии Джо­на­тан Росс се­го­дня, про­ще все­го
Linux Format об­ра­тить­ся туда.
и редактировал
его первые восемь
Вы уди­ви­тесь, но Twitter спо­со­бен и на по­лез­ные шту­ки. По на­
лет. А потом устал шим пре­ды­ду­щим уро­кам мы по­ня­ли, что сек­рет по­бе­ды над тех­
и ушел. но­ло­ги­ей – уз­нать, как ра­бо­та­ет сер­вис, а за­тем вы­яснить де­та­ли
его ин­тер­фей­са при­к лад­но­го про­грам­ми­ро­вания (API, Application
Programming Interface). Ока­зы­ва­ет­ся, API Twitter за­кру­чен до­воль­
но ли­хо: вся­кие ве­щи в нем ра­бо­та­ют са­мы­ми раз­ны­ми спо­со­ба­
ми. Но не бу­дем рас­страи­вать­ся, ведь в Python для него су­ще­
ству­ет мас­са обер­ток. Боль­ше все­го нам по­дой­дет стан­дарт­ный
Python-Twitter, доступ­ный во мно­же­стве ре­по­зи­то­ри­ев, а так­же по Хм. Ес­ли кар­тин­ка сто­ит ты­ся­чи слов, по­че­му я ни­че­го не слы­шу?
ад­ре­су http://code.google.com/p/python-twitter. Верь­те нам, это уме­ет раз­го­ва­ри­вать.

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


72      Linux Format Сентябрь 2009
 Python Учебник

вам тви­ты Код при­ме­ров


статьи

ную запись. Для це­лей на­ше­го уро­ка, мы соз­да­ли про­филь для


evilbotx и ре­ши­ли сле­до­вать по Twitter за оча­ро­ва­тель­ной Бритни Identi.ca
Спирс. Те­перь за­пусти­те Python в окне тер­ми­на­ла (на­брав python),
и при­сту­пим к соз­данию мик­ро­бло­га: Identi.ca – это сво­бод­ная плат­фор­ма Twitter. Но, мо­жет, оно и к луч­ше­му – все
>>> import twitter мик­ро­блог­гин­га с от­кры­тым ко­дом. же мень­ше шу­ма. Ос­но­вы это­го уро­ка
>>> client = twitter. Ее со­дер­ж и­мое дос­т уп­но по ли­цен­ мож­но при­ме­нить к Identi.ca та­ким же
Api(username=”evilbotx”, password=”mypassword”) зии Creative Commons, и, на­вер­ное, это об­ра­зом, как и к Twitter, по­то­му что API
ми­ло по от­но­ше­нию к пра­ро­ди­тель­ни­це. Identi.ca по­до­бен API Twitter (до­воль­но
>>> client.PostUpdate(“Hello World!”)
Увы, она да­ле­ко не так по­пу­ляр­на, как стран­но­му) на низ­ком уров­не.
<twitter.Status object at 0xb7c2f44c>
Эти стро­ки за­вер­ша­ют ри­т у­а л са­мо­про­воз­гла­шения на­
ше­го при­ло­жения. Сна­ча­ла мы соз­да­ли объ­ект под на­званием >>> userlist = client.GetFriends()
client, ко­то­рый со­единил­ся с сер­ве­ром Twitter и иден­ти­фи­ци­ро­ >>> for username in userlist:
вал­ся, а в сле­дую­щей стро­ке при­менили его ме­тод для пуб­ли­ка­ ... print username.screen_name, username.status.text
ции со­об­щения (в тер­ми­но­ло­гии Twitter это на­зы­ва­ет­ся «об­но­вить ...evilnick @tweeny4 it’s hard to beat a poached egg
ста­т ус»). serenajwilliams @celebsdontreply. Of course, I reply.
Ес­ли вы соз­дае­те чисто ав­то­ном­ную систе­му, боль­ше вам britneyspears The Circus is coming back to the states
знать и не на­до – вы мо­же­те вста­вить дан­ный ку­сок ко­д а в свой -Britney
скрипт и от­прав­лять тви­ты ку­д а за­хо­ти­те. Но мы хо­тим боль­ Из это­го ко­да вид­но, что ме­тод GetFriends() воз­вра­ща­ет спи­сок
ше­го. Сле­д ую­щим ша­гом бу­дет спи­сок лю­дей, за об­нов­ления­ объ­ек­тов user. User – это класс в мо­д у­ле Twitter с раз­лич­ны­ми
ми ко­то­рых вы же­лае­те сле­дить и уз­на­вать их ста­т у­сы. Про­цесс ат­ри­бу­та­ми: опи­сание поль­зо­ва­те­ля, псев­доним и т. д. Мо­д уль по­
не сло­жен, по­то­му что для боль­шин­ства за­дач су­ще­ству­ют го­то­ лу­ча­ет эти дан­ные от Twitter при соз­дании объ­ек­тов, и их мож­но
вые ме­то­ды: из­влечь. Рассмотрим неко­то­рые по­лез­ные свой­ства.

Скорая
помощь

О функ­ци­ях лю­бо­
го мо­д у­ля Python
мож­но ра­зуз­нать
в под­роб­но­стях,
им­пор­ти­ро­вав его
в обо­лоч­ке Python
и на­брав ‘help
(имя­мо­д у­ля)’.

В Identi.ca все то
же, что и в Twitter;
ну, кро­ме псев­до-
зна­ме­ни­то­стей,
«гу­ру се­те­во­го
мар­ке­тин­га» и бо­
тов. По край­ней ме­
ре, по­ка вы ту­да
не до­б­ра­лись.

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


Сентябрь 2009 Linux Format      73
Учебник Python

User.id Уникаль­ный иден­ти­фи­ка­ци­он­ный но­мер, присваивае- espeak «Hello World!” в команд­ную стро­к у. Итак, наш кли­ент бу­дет
мый поль­зо­ва­те­лю сер­ви­са Twitter. вы­гля­деть наподобие
User.name Ре­а ль­ное имя поль­зо­ва­те­ля. * import twitter, subprocess, time
User.screen_name Его псев­доним в Twitter. client = twitter.Api(“evilbotx”, “evilbot”)
User.description Неболь­шое опи­сание, вве­ден­ное while True :
пользователем. * list = client.GetFriends()
User. Profile_image_url Ссыл­ка на кар­тин­к у про­фи­ля for name in list:
пользователя. print name.screen_name, name.status.text, name.
User.url URL, вве­ден­ный поль­зо­ва­те­лем, часто – до­маш­няя status.id
страница. * texty = name.screen_name + name.status.text
User.status По­следний объ­ект status это­го поль­зо­ва­те­ля. time.sleep(2)
* Эти по­ля мо­г ут оста­вать­ся пусты­ми, ес­ли поль­зо­ва­тель не ука­ subprocess.call([“espeak”, texty])
зал ин­фор­ма­цию. time.sleep(60)
При же­лании мож­но ис­поль­зо­вать все это про­грамм­но – Здесь мы уста­нав­ли­ва­ем со­единение, вхо­дим в бесконеч­ный
на­при­мер, под­гру­жая изо­бра­жения для гра­фи­че­ско­го кли­ен­та цикл и по­лу­ча­ем спи­сок дру­зей. Внут­ренний цикл об­ра­ба­ты­ва­ет
Twitter или объ­е­ди­няя поль­зо­ва­те­лей в груп­пы по ин­те­ре­сам. ста­т у­сы и вы­да­ет их, кон­вер­ти­ру­ет ин­фор­ма­цию в стро­к у и за­тем
Как бы­ло бы здо­ро­во иметь кли­ент Twitter с под­держ­кой ау­дио! ис­поль­зу­ет subprocess.call для ее пе­ре­во­да в речь. Time.sleep(60)
Вме­сто то­го, что­бы пя­лить­ся в ду­рац­кий эк­ран, от­ры­ва­ясь от напи­ инициа­ли­зи­ру­ет за­держ­к у, что­бы не до­са­ж ­дать сер­ве­ру слиш­
сания цен­но­го ко­да, мож­но про­сто вклю­чить свои уши и про­слу­ ком часто.
ши­вать об­нов­ления ста­т у­сов. Для Linux су­ще­ству­ет несколь­ко Вы мо­же­те уди­вить­ся, по­че­му мы об­ра­щ а­ем­ся к спи­ску дру­
ути­лит пре­об­ра­зо­вания тек­ста в речь и да­же рас­по­зна­вания го­ло­ зей внут­ри глав­но­го цик­ла. Но так бу­дет про­ще, по двум при­
са (LXF116–117). В ва­шем ди­ст­ри­бу­ти­ве, воз­мож­но, уже уста­нов­ чи­нам. Во-пер­вых, все объ­ек­ты User из спи­ска ав­то­ма­ти­че­ски
ле­ны Festival или Espeak, а ес­ли нет, па­ке­ты лег­ко най­ти в обыч­ных снаб­жа­ют­ся по­следними ста­т у­са­ми. За­гру­зив спи­сок дру­зей
ре­по­зи­то­ри­ях. Мы возь­мем Espeak, но вы мо­же­те ис­поль­зо­вать еди­но­ж ды, мы все рав­но в ка­ж ­дом цик­ле справ­ля­лись бы
и дру­гие, по­то­му что код поч­ти оди­на­ко­вый. Для вы­полнения та­ со ста­т у­са­ми, что за­гро­моз­ди­ло бы код и (толь­ко не на­до ме­ня
ко­го лег­ко­го за­дания не бу­дем гнать­ся за слож­ны­ми ре­шения­ здесь ци­ти­ро­вать: до­ка­за­тельств у ме­ня ника­ких, одни смут­ные
ми – при­меним наш ста­рый лю­би­мый мо­дуль subprocess. Он, ес­ли по­доз­рения), воз­мож­но, уве­ли­чи­ло бы за­тра­ты на взаи­мо­дей­
вы помните, вы­зы­ва­ет обо­лоч­к у из Python. Восполь­зу­ем­ся ме­то­ ствие кли­ен­та с сер­ве­ром. Вто­рая при­чи­на за­к лю­ча­ет­ся в том,
дом call, ко­то­рый про­сто бе­рет спи­сок ар­г у­мен­тов, ко­то­рые вы хо­ что мы мо­жем спо­кой­но за­пускать и его, и дру­гой кли­ент Twitter,
ти­те ис­поль­зо­вать. Про­стой при­мер: или за­хо­дить на сай­ты. Лю­бые из­менения в спи­ске дру­зей
>>> import subprocess сра­зу от­ра­зят­ся в скрип­те.
>>> subprocess.call([‘espeak’,’”Hello World!”]) На этом эта­пе все ра­бо­та­ет, но есть про­бле­ма: ста­т у­сы ог­
ла­ша­ют­ся неза­ви­си­мо от то­го, бы­ли ли они об­нов­ле­ны за дан­
По­лу­чи­те ва­ши на­строй­ки ный пе­ри­од. Не ме­ша­ет про­ве­рить вре­мя, когда бы­ло соз­д а­но
Вы бу­де­те дру­же­люб­но (ес­ли вам по вку­су син­те­ти­че­ские го­ ста­т усное со­об­щение, и сравнить с на­с тоя­щим. Ес­ли со­об­щение
ло­са) по­при­вет­ство­ва­ны го­ло­сом. В слу­чае син­так­си­че­ской соз­д а­но бо­лее чем 60 се­к унд на­зад (или, до­пустим, 61 – да­дим
ошиб­ки тща­тель­но про­верь­те пра­виль­ность рас­ста­нов­ки ка­вы­ до­ра­бо­тать остат­к у ко­д а), то его нуж­но ска­зать вслух. На бе­
чек. По­следний эле­мент в спи­ске – тек­сто­вая стро­ка, за­к лю­чен­ ду, вре­мя от­но­си­тель­но. Вре­мен­ной мо­д уль Python вы­д а­ет вре­
ная в двой­ные ка­выч­ки, а за­тем в про­стые ка­выч­ки. Она пе­ре­да­ет мя как сме­щение от на­ча­ла эпо­хи (се­к ун­ды с мо­мен­та соз­д ания

Пол­ное объ­яс­не­
ние мо­ду­ля Pyton-
Twitter име­ет­ся
на сай­те http://
static.unto.net/
python-twitter/0.6/
doc/twitter.html.

74      Linux Format Сентябрь 2009


 Python Учебник

все­лен­ной – со­глас­но Unix, это бы­ла пол­ночь 1 ян­ва­ря 1970 г.),


а Twitter вы­д а­ет вре­мя соз­д ания ста­т усно­го со­об­щения в тек­с то­ Один ста­тус за все
вом фор­ма­те.
Что­бы сравнить эти вре­ме­на, на­до при­вести их к од­но­му ви­
Кто чи­тал пре­ды­ду­щий вы­пуск, про чат-бо­тов, воз­мож­но, пом­нит, что ста­т ус­ное со­об­ще­
ду. По­хо­же, мо­д уль Twitter-Python в про­цес­се транс­ля­ции де­ла­ ние лег­ко ус­та­но­вить про­грамм­но. А как на­счет ав­то­ма­ти­че­ской ус­та­нов­ки ва­ше­го ста­т у­са
ет оши­боч­ное до­пу­щение, по­то­му что его ме­то­ды оп­ре­де­ления в ча­те по ва­ше­му по­след­не­му об­нов­ле­нию в Twitter? По-про­сто­му, мож­но по­сту­пить так:
вре­мени по­лу­чения ста­т усно­го со­об­щения и вре­мени, когда оно import xmpp, twitter
бы­ло опуб­ли­ко­ва­но, да­ют раз­лич­ные ре­зуль­та­ты. Это услож­ twituser=”foo1”
ня­ет си­т уа­цию, но не де­ла­ет невоз­мож­ным ее ис­пра­вление. API twitpass=”foo2”
Twitter воз­вра­щ а­ет да­ты и вре­мя в ви­де тек­сто­вых строк в фор­ jabberuser=”bar1@something”
ма­те Mon Jun 8 11:46:34 +0000 2009. Тут все в по­ряд­ке, по­то­ jabberpass=”bar2”
му что Python уме­ет кон­вер­ти­ро­вать их в нор­маль­ный чи­сло­вой twit=twitter.Api(username=twituser,password=twitpass)
text=twit.GetUser(twituser).status.text
фор­мат и за­тем в чис­ло се­к унд от на­ча­ла эпо­хи. Един­ствен­ный
jid=xmpp.protocol.JID(jabberuser)
неболь­шой про­кол – Twitter не вклю­ча­ет в фор­мат да­ты ча­со­вой
jab=xmpp.Client(jid.getDomain(),debug=[])
по­яс. Од­на­ко экс­пе­ри­мен­ты по­ка­ж ут вам, что вре­мя, как и сле­ jab.connect()
до­ва­ло ожи­дать, в UTC (или GMT, ес­ли вы помните, что вре­мя jab.auth(jid.getNode(),jabberpass)
изо­бре­ли в Бри­тании). Те­перь мож­но про­сто до­ба­вить UTC в ко- jab.sendInitPresence()
нец стро­ки, и пусть Python пре­об­ра­зу­ет это в бо­лее удоб­ный чи­ jab.send(xmpp.Presence(status = text , show = “chat”, priority = ‘1’)
с­ло­вой фор­мат. Объ­ект status со­хра­ня­ет вре­мя пря­мо из Twitter Вставь­те все это в цикл с под­хо­д я­щей за­держ­кой, и по­лу­чи­те два в од­ном – толь­ко
в ви­де свой­ства created-at, и мы мо­жем ис­поль­зо­вать его безо не за­будь­те под­ста­вить в на­ча­ле свой на­стоя­щий ID и па­роль.
вся­ких про­блем. Функ­ция time.strptime пре­об­ра­зу­ет имею­щ ую­ся
стро­к у в на­бор чи­сло­вых ве­ли­чин стан­дарт­ной фор­мы. Для по­
лу­чения ре­зуль­та­та, нуж­но пе­ре­дать са­му стро­к у и стро­к у-опи­ Те­перь у вас есть функ­ционирую­щий ау­дио-кли­ент Twitter все­
сание ее фор­ма­та, ко­то­рая со­дер­жит ука­зания или опи­сания го из 13 строк ко­да. Непло­хо; един­ствен­ная про­бле­ма возникнет,
в со­от­вет­ствии со спи­ском зна­чений, под­дер­жи­вае­мых мо­д у­лем. ес­ли в ва­шем спи­ске ак­тив­ных дру­зей бо­лее дю­жи­ны че­ло­век –
Для нас они та­ко­вы: %а – аб­бре­виа­т у­ра для на­звания дня, %b – тогда скрипт вам бу­дет не за­ткнуть. В этом слу­чае, ог­раничь­тесь
для на­звания ме­ся­ца, %d – для обо­зна­чения чис­ла, %H – ча­сы, те­ми поль­зо­ва­те­ля­ми, за об­нов­ления­ми ко­то­рых вы хо­ти­те сле­
%m – ми­ну­ты, %S – се­к ун­ды, %Y – год, и %Z – трех­бу­к­вен­ное обо­ дить, а за­тем по­лу­чай­те ста­т ус ка­ж ­до­го из ва­ше­го спи­ска, и для
зна­чение ча­со­во­го поя­са. это­го нуж­но по­ме­нять все­го лишь несколь­ко строк ко­да:
import twitter, subprocess, time
Когда был твит? client = twitter.Api(“evilbotx”, “password”)
Как вы мо­же­те за­ме­тить, мы до­ба­ви­ли по­след­нюю ве­ли­чи­ну са­ list = [‘evilnick’, ‘evilbottester’, ‘tweeny4’]
ми, что­бы она уча­ство­ва­ла в об­ра­бот­ке вре­мени в Python. Внут­ while True :
ренний чи­сло­вой фор­мат, ис­поль­зуе­мый в Python, про­сто ука­зы­ for item in list:
ва­ет все да­ты в чис­лах, что лег­ко уви­деть, пре­об­ра­зо­вав вре­мя name=client.GetUser(item)
вруч­ную: texty= name.screen_name + name.status.text
>>> time.strptime(‘Mon Jun 8 10:51:32 +0000 2009 UTC’, now = time.mktime(time.gmtime())
‘%a %b %d %H:%M:%S +0000 %Y %Z’) stringmsgtime =name.status.created_at + ‘ UTC’
(2009, 6, 8, 10, 51, 32, 0, 159, 0) msgtime=time.mktime(time.strptime(stringmsgtime,
Эти чис­ла, со­от­вет­ствен­но, год, ме­сяц, чис­ло, ча­сы, ми­ну­ты, ‘%a %b %d %H:%M:%S +0000 %Y %Z’))
се­к ун­ды, день неде­ли (понедельнику со­от­вет­ству­ет 0), день в го­д у if ((msgtime+61)>now):
и от­мет­ка о летнем вре­мени. По­это­му-то и важ­но ука­зать ча­со­вой subprocess.call([“espeak”, texty])
по­яс, ведь при от­сут­ствии дан­ной от­мет­ки Python по­пы­та­ет­ся time.sleep(60)
вве­сти свою, что мо­жет при­вести к непо­нят­ным ре­зуль­та­там. В но­вой вер­сии на­ше­го скрип­та внут­ренний цикл про­хо­дит че­рез
Вре­мя мож­но за­тем пе­ре­вести в при­выч­ные для Unix се­к ун­ды спи­сок и за­дей­ству­ет ме­тод GetUser() для ка­ж ­до­го псев­донима
от на­ча­ла эпо­хи, ис­поль­зуя time.mktime(). Вы мо­же­те най­ти бо­лее поль­зо­ва­те­ля. Он воз­вра­ща­ет­ся как объ­ект User со свой­ства­ми,
под­роб­ную ин­фор­ма­цию о мо­ду­ле time и раз­лич­ных ме­то­дах, от­ вклю­чаю­щи­ми по­следнее об­нов­ление. Те­перь вы по­лу­чи­те го­ло­
крыв в сво­ем брау­зе­ре http://docs.python.org/library/time.html. со­вое уве­дом­ление, толь­ко ес­ли ста­т ус об­но­вит кто-то из из­бран­
Наш пре­об­ра­зо­ван­ный код при­нял сле­д ую­щий вид: ных кон­так­тов.
import twitter, subprocess, time
client = twitter.Api(“evilbotx”, “password”) Идем даль­ше
while True : По­лез­ным до­полнением к скрип­т у мо­жет быть GUI для бы­ст­ро­
list = client.GetFriends() го об­нов­ления ва­ше­го соб­ствен­но­го ста­т у­са. Для это­го доста­
for name in list: точ­но соз­дать по­ле вво­да (не бо­лее 140 зна­ков), ис­поль­зуя PyQt,
texty= name.screen_name + name.status.text wxWidgets или дру­гой лю­без­ный вам GUI, и под­сое­динить ме­тод
now = time.mktime(time.gmtime()) для пуб­ли­ка­ции об­нов­лений ста­т у­сов по на­жа­тию Enter. А мож­
stringmsgtime =name.status.created_at + ‘ UTC’ но упот­ре­бить ва­ши знания ме­то­дов Twitter для до­бав­ления его
msgtime=time.mktime(time.strptime(stringmsgtime, функ­ций к дру­гим сер­ви­сам. Пусть ва­ши сер­ве­ры со­об­ща­ют
‘%a %b %d %H:%M:%S +0000 %Y %Z’)) о сте­пени сво­ей за­груз­ки и остат­ке сво­бод­но­го про­стран­ства;
if ((msgtime+61)>now): или до­бавь­те скрипт в Amarok для соз­дания уве­дом­лений
subprocess.call([“espeak”, texty]) о про­иг­ры­вае­мых тре­ках; или за­про­грам­ми­руй­те про­из­воль­ные
time.sleep(60) вы­кри­ки про Май­ка. Все в ва­ших ру­ках.

Че­рез ме­сяц За­ка­пы­ва­ем­ся в скрип­ты – Python пе­ре­хо­дит к Digg.


Сентябрь 2009 Linux Format      75
Lua Язык про­грам­ми­ро­ва­ния сце­на­ри­ев,
встраи­вае­мый в ва­ши при­ло­же­ния

Lua: Что в нем


Часть 1: Сто­ит ли изу­чать но­вый язык про­грам­ми­ро­ва­ния сце­на­ри­ев,
ес­ли уже есть Python? Да, счи­та­ет Ан­д­рей Бо­ров­ский, и он мо­жет
обос­но­вать свою точ­ку зре­ния.

З
нае­те, что об­ще­го у иг­р SimCity, World of Warcraft, Far Cry, Встро­ен­ный язык бес­по­ле­
при­ло­жения Adobe Lightroom, web-сервера Apache и «же­ зен, ес­ли он не спо­со­бен об­
лез­ного» ро­бо­та Crazy Ivan? Все эти про­грам­мы и уст­рой­ менивать­ся дан­ны­ми с про­грам­
ства, та­кие боль­шие и та­кие раз­ные, ис­поль­зу­ют Lua в ка­че­стве мой-хо­зяи­ном. И, конеч­но, в Lua
встро­ен­но­го язы­ка сце­на­ри­ев. пре­д у­смот­ре­на воз­мож­ность пе­
Lua (что в пе­ре­во­де с пор­т у­галь­ско­го оз­на­ча­ет «Лу­на») раз­ра­ ре­да­чи ин­фор­ма­ции к «ро­ди­те­лю»
Наш ба­ты­ва­ет­ся на фа­к уль­те­те ком­пь­ю­тер­ных на­ук Епи­ско­паль­но­го и от него, а так­же вы­зов оп­ре­де­лен­
эксперт ка­то­ли­че­ско­го универ­си­те­та Рио-де-Жаней­ро (Pontifical Catholic ных в нем функ­ций.
Андрей University of Rio de Janeiro). Ко­вар­ные про­грам­ми­сты-ка­то­ли­ Пе­ре­мен­ные объ­яв­ля­ют­ся без
Боровский ки, пы­таю­щие­ся за­хва­тить мир с по­мо­щью язы­ка про­грам­ми­ро-­ ука­зания ти­па (он уста­нав­ли­ва­ет­
За по­след­ние че­
Ло­ г о­
т ип Lua. Нет ли здесь
ты­ре го­д а на­пи­сал вания сце­на­ри­ев – чем не те­ма для оче­ред­ной нетлен­ки Дэ­на скры­то­го под­тек­ста? ся ди­на­ми­че­ски в мо­мент при­сваи­
для LXF столь­ко Брау­на? Да­рю ему эту идею, а мы с ва­ми зай­мем­ся ве­ща­ми вания зна­чения). Все­го в Lua на­счи-
раз­ных про­грамм, ку­да менее мисти­че­ски­ми. ­ты­ва­ет­ся во­семь ти­пов: ло­ги­че­ский, стро­ка, чис­ло, функ­ция, по­
что за­д у­мал­ся ток, поль­зо­ва­тель­ские дан­ные, таб­ли­ца и тип nil (ука­зы­ва­ет, что
о вклю­че­нии в них
средств ав­то­ма­ти­
По­зна­ко­мим­ся бли­же пе­ре­мен­ной не при­свое­но ника­кое зна­чение; эк­ви­ва­лен­тен false
за­ции. Тот факт, что Lua пред­на­зна­чен для встраи­вания в дру­гие про-­ в ло­ги­че­ских вы­ра­жениях).
грам­мы, серь­ез­но по­вли­ял на струк­т у­ру са­мо­го язы­ка. Здесь Чис­лен­ный тип в Lua ам­би­ва­лен­тен. Чис­ло мо­жет быть це­лым,
нет по­ня­тий глав­ной функ­ции вро­де main() и основ­ной про­грам­ с пла­ваю­щей точ­кой и ше­ст­на­дца­те­рич­ным. По умол­чанию для
мы, вме­сто это­го го­во­рят о «сре­де», где хранит­ся то, что долж­ внут­реннего пред­став­ления чи­сел применя­ет­ся double, но при же­
но быть доступ­но гло­баль­но. Ба­зо­вой струк­т ур­ной единицей Lua лании нетруд­но за­менить его на лю­бой дру­гой тип (гиб­кость под­
яв­ля­ет­ся на­бор опе­ра­то­ров – chunk (для ясности, бу­дем го­во­рить строй­ки – од­на из очень по­лез­ных от­ли­чи­тель­ных ха­рак­те­ри­стик
«фраг­мент»), ко­то­рый пред­став­ля­ет со­бой... про­сто на­бор опе­ра­ Lua). Стро­ки в Lua пред­став­ля­ют со­бой мас­си­вы вось­ми­би­то­вых
то­ров. Фраг­мент Lua не име­ет спе­ци­а ль­но­го оформ­ления на­ча­ла сим­во­лов про­из­воль­ной дли­ны; '\0' не име­ет спе­ци­а ль­но­го зна­
и кон­ца. Он на­чи­на­ет­ся с пер­ чения и мо­жет встре­чать­ся
вым опе­ра­то­ром и о­кан­чи­ва­ет­
ся с по­следним. При этом фраг­
«Lua предназначен в лю­бом месте стро­ки.
Тип «функ­ция» – это поч­
мент мо­жет вво­дить локаль­ные
пе­ре­мен­ные и воз­вра­щать зна­
для встраивания ти то же са­мое, что и ука­за­
тель на функ­цию в C. По­то­ки
чения с по­мо­щью опе­ра­то­ра в другие программы.» ис­поль­зу­ют­ся для реа­ли­за­ции
return. Ка­ким же об­ра­зом один так на­зы­вае­мых со-про­це­дур,
фраг­мент от­де­ля­ет­ся от дру­го­го? Есте­ствен­ным раз­де­ли­те­лем ко­то­рые мо­г ут вы­пол­нят­ся па­рал­лель­но. Сле­д у­ет сра­зу от­ме­тить,
слу­жит са­ма про­грам­ма-хо­зя­ин. На­при­мер, сце­на­рии, за­гру­жае­ что мно­го­за­дач­ность со-про­це­д ур в Lua но­сит доб­ро­воль­ный
мые ею в от­вет на дей­ствия поль­зо­ва­те­ля, мо­г ут быть оформ­ле­ (кор­по­ра­тив­ный) ха­рак­тер, то есть пе­ре­к лю­чение с од­ной про­це­
ны как фраг­мен­ты Lua. ду­ры на дру­г ую осу­ще­ств­ля­ет­ся яв­ным об­ра­зом, с по­мо­щью вы­
По­ми­мо фраг­мен­та, в Lua есть по­ня­тие бло­ка [block]. Блок – зо­ва спе­ци­а ль­ной функ­ции yield. Фи­зи­че­ски код Lua вы­пол­ня­ет­ся
это фраг­мент, границы ко­то­ро­го вы­де­ле­ны спе­ци­а ль­ны­ми опе­ра­ в од­ном по­то­ке (так, по крайней ме­ре, об­сто­ит де­ло в реа­ли­за­ции
то­ра­ми, на­при­мер, do и end. Бло­ки ис­поль­зу­ют­ся там, где тре­бу­ет­ по умол­чанию). Ничто, од­на­ко, не ме­ша­ет за­пустить па­рал­лель­но
ся вло­жить один фраг­мент Lua в дру­гой, и управ­ля­ют ви­ди­мо­стью несколь­ко ин­тер­пре­та­то­ров Lua в од­ной про­грам­ме-хо­зяине.
локаль­ных пе­ре­мен­ных, а так­же дей­стви­ем опе­ра­то­ров вро­де Поль­зо­ва­тель­ский тип дан­ных пред­на­зна­чен для об­ме­на ин­
break. Опе­ра­то­ры ветв­ления и цик­ла то­же ис­поль­зу­ют бло­ки. фор­ма­ци­ей с «ро­ди­те­лем». Обыч­но дан­ные это­го ти­па име­
ют смысл толь­ко для про­грам­мы-хо­зяи­на и непро­зрач­ны для
Lua. Над ними мож­но вы­пол­нять толь­ко две опе­ра­ции: при­сваи­
По­че­му иг­ры? вание и про­вер­к у то­ж ­де­ства.
На таб­ли­цы сле­д у­ет об­ра­тить осо­бое внимание, по­сколь­к у это
Иг­ро­вые про­ек­ты уже дав­но дос­тиг­ли той сте­ рот, под­вер­же­на час­тым из­ме­не­ни­ям. И ес­ли един­ствен­ный доступ­ный в Lua слож­ный тип дан­ных. Таб­ли­цы Lua
пе­ни слож­но­сти, ко­гда тре­бу­ет­ся раз­де­ле­ние оп­ре­де­лять пра­ви­ла с по­мо­щью язы­ка про­
пред­став­ля­ют со­бой ас­со­циа­тив­ные мас­си­вы (то есть в ка­че­стве
«ба­зи­са» и «над­строй­ки» – движ­ка, оп­ре­де­ грам­ми­ро­ва­ния сце­на­ри­ев, раз­ра­бот­чи­кам
ляю­ще­го свой­ст­ва иг­ро­во­го ми­ра, и пра­вил, не при­дет­ся пе­ре­де­лы­вать дви­жок при ка­ж­ ин­дек­са в них мож­но ис­поль­зо­вать лю­бые зна­чения). Учи­ты­вая
ко­то­рым под­чи­ня­ют­ся его эле­мен­ты. Обыч­ дом из­ме­не­нии пра­вил по­ве­де­ния пер­со­на­ аб­со­лют­ный по­ли­мор­физм пе­ре­мен­ных Lua, эле­мен­ты ас­со­циа­
но дви­жок яв­ля­ет­ся наи­бо­лее ста­биль­ной ча­ жа или свойств ар­те­фак­та. Эти же ар­г у­мен­ты тив­ных мас­си­вов так­же мо­г ут со­дер­жать лю­бые зна­чения. Все это
стью иг­ры, а сис­те­ма, опи­сы­ваю­щ ая пра­ви­ла при­ме­ни­мы и к ро­бо­там, при­чем не обя­за­ де­ла­ет таб­ли­цы Lua чрез­вы­чай­но мощ­ным сред­ством для эму­ля­
по­ве­де­ния пер­со­на­жей и пред­ме­тов, на­обо­ тель­но к боль­шим и че­ло­ве­ко­по­доб­ным.
ции та­ких ме­та­ти­пов, как струк­т у­ры и объ­ек­ты.

76      Linux Format Сентябрь 2009


 Lua Учебник

та­ко­го?
лио­те­ка Canvas Draw по­зво­ля­ет ра­бо­тать с двумер­ной гра­фи­кой
По­че­му Lua? на лю­бой из под­дер­жи­вае­мых плат­форм. Для об­ра­бот­ки растро­
вых изо­бра­жений в по­пу­ляр­ных фор­ма­тах слу­жит биб­лио­те­ка
Хо­тя Lua мо­жет ис­поль­зо­вать­ся как обыч­ный ин­тер­пре­ти­руе­мый IM. LuaCURL, как под­ска­зы­ва­ет на­звание, яв­ля­ет­ся оберт­кой Lua
язык про­грам­ми­ро­ва­ния, он соз­д а­вал­ся имен­но для встраи­ва­ния для CURL (curl.haxx.se). С ее по­мо­щью про­грам­мы, напи­сан­ные
в при­ло­же­ния C/C++. Не­уди­ви­тель­но, что мно­гие раз­ра­бот­чи­ки вы­
на ����������������������������������������������������������������
Lua�������������������������������������������������������������
, мож­но без тру­да на­де­лить под­держ­кой кли­ент­ской час-
бра­ли его для реа­ли­за­ции сис­те­мы сце­на­ри­ев в сво­их про­ек­тах.
От дру­гих ана­ло­гич­ных язы­ков (на­при­мер, Python) Lua от­ли­ча­ет­- ти по­пу­ляр­ных ин­тернет-про­то­ко­лов, а с по­мо­щью Copas про­грам­
ся ком­пакт­но­стью и вы­со­ким бы­ст­ро­дей­ст­ви­ем ин­тер­пре­та­то­ра му Lua мож­но пре­вра­тить и в TCP/IP-сер­вер. Биб­лио­те­ка LuaSQL
и ком­пи­ля­то­ра вре­ме­ни вы­пол­не­ния. Еще од­но пре­иму­ще­ст­во Lua – пред­на­зна­че­на для взаи­мо­дей­ствия с рас­про­странен­ны­ми СУБД,
про­сто­та, с ко­то­рой к про­грам­ме мож­но «при­це­пить» сто­рон­ние а LPeg по­зво­ля­ет вы­пол­нять сравнение с об­раз­цом, ис­поль­зуя
биб­лио­те­ки, на­пи­сан­ные на C/C++.
спе­ци­а ль­ный язык опи­сания син­так­си­са.
Бо­гат­ство биб­лио­тек Lua не ис­чер­пы­ва­ет­ся пе­ре­чис­лен­
Пра­ви­ла вы­полнения опе­ра­ций с дан­ны­ми оп­ре­де­ля­ют­ся в Lua ны­ми. Осо­бо­го внимания за­слу­жи­ва­ет так­же Alien, пред­на­
с по­мо­щью ме­та­таб­лиц. Вы мо­же­те соз­да­вать ме­та­таб­ли­цы для зна­чен­ная для взаи­мо­дей­ствия со сто­ронними раз­де­ляе­мы­
оп­ре­де­лен­ных ва­ми таб­лиц, но не мо­же­те ме­нять ме­та­таб­ли­цы, ми биб­лио­те­ка­ми.
оп­ре­де­лен­ные для про­стых ти­пов дан­ных Lua (из­менить пра­ви­ла В ин­тер­пре­ти­руе­мых язы­ках про­грам­ма «Hello World» мо­жет
об­ра­щения с по­следними мож­но че­рез C API). со­сто­ять из од­ной-един­ствен­ной строч­ки; Lua здесь не яв­ля­ет­ся
Все вы­ше­ска­зан­ное при­во­дит нас к еще од­ной важ­ной осо­бен­ исклю­чением:
но­сти Lua – гиб­ко­му, рас­ши­ряе­мо­му син­так­си­су язы­ка. print (“Hello World!”)
Един­ствен­ны­ми пе­ре­чис­ляе­мы­ми ти­па­ми в стан­дарт­ном Lua Со­хра­ни­те этот текст в фай­ле helloworld.lua и ско­ман­д уй­те
яв­ля­ют­ся чис­лен­ный и ло­ги­че­ский; char здесь от­сут­ству­ет. Вы­ lua helloworld.lua
ра­жение «A» – это стро­ка из од­но­го сим­во­ла, а не зна­чение ти­ В ре­зуль­та­те на эк­ра­не кон­со­ли вы уви­ди­те то, что и ожи­да­ли.
па «сим­вол». Эти ог­раничения не яв­ля­ют­ся фа­таль­ны­ми, но ес­ли Ме­ж ­д у про­чим, в Unix-сис­те­мах ин­тер­пре­та­тор lua мож­но ак­
вы при­вык­ли пи­сать про­грам­мы на C/C++, вам при­дет­ся несколь­ко ти­ви­ро­вать с по­мо­щью #!-стро­ки. Ес­ли пе­ре­пи­сать про­грам­му
из­менить стиль про­грам­ми­ро­вания. «Hello World» в ви­де
#!/usr/bin/lua
На­ша пер­вая про­грам­ма print (“Hello World!”)
При­шла по­ра взгля­нуть на Lua в дей­ствии. Лю­бой ди­ст­ри­бу­тив то файл helloworld.lua мож­но от­ме­тить как ис­пол­няе­мый и за­пус­
Lua – это, пре­ж ­де все­го, на­бор биб­лио­тек, под­к лю­чив ко­то­рые кать са­мо­стоя­тель­но.
к сво­ему при­ло­жению, вы по­лу­чае­те воз­мож­ность ис­поль­зо­вать Рас­смот­рим бо­лее слож­ный при­мер:
в нем сце­на­рии Lua. В ди­ст­ри­бу­тив так­же вхо­дит про­грам­ма lua, io.write (“Как вас зо­вут? “)
ко­то­рую мож­но рас­смат­ри­вать как ин­тер­пре­та­тор Lua (хо­тя, стро­ name = io.read ()
го го­во­ря, она ничем не от­ли­ча­ет­ся от дру­гих про­грамм, ис­поль­ io.write ('Привет, ' .. name .. “!”)
зую­щих Lua как встро­ен­ный язык), и luac – ком­пи­ля­тор Lua, но его Про­грам­ма сна­ча­ла про­сит вас вве­сти свое имя, а по­том веж­
мы по­ка рас­смат­ри­вать не бу­дем. ли­во здо­ро­ва­ет­ся. Раз­бе­рем ее по­строч­но. Функ­ция write(), объ­
Биб­лио­тек в ди­ст­ри­бу­ти­ве обыч­но ве­ли­кое мно­же­ство. У Lua яв­лен­ная в стан­дарт­ной биб­лио­те­ке io (имя биб­лио­те­ки ука­зы­
есть своя систе­ма для соз­дания гра­фи­че­ско­го ин­тер­фей­са IUP, ва­ет­ся как пре­фикс, от­де­лен­ный точ­кой), по­доб­на print(). Од­но
ис­поль­зую­щая (в за­ви­си­мо­сти от ОС) Motif, GTK+ или GDI+. Биб­ из от­ли­чий за­к лю­ча­ет­ся в том, что write() не вы­пол­ня­ет ав­то­ма­ти­
че­ский пе­ре­вод стро­ки по окон­чании вы­во­да. Функ­ция read() счи­
ты­ва­ет дан­ные из стан­дарт­но­го по­то­ка вво­да. Об­ра­ти­те внимание:
мы ниче­го не го­во­рим read() о ти­пе дан­ных, ко­то­рые она долж­
на счи­тать. Ее за­да­ча – по­лу­чить сим­во­лы, а ин­тер­пре­та­тор Lua
раз­би­ра­ет­ся с тем, что они оз­на­ча­ют. Вве­ден­ная стро­ка со­хра­ня­
ет­ся в пе­ре­мен­ной name. Для объ­яв­ления пе­ре­мен­ной доста­точ­но
про­сто вве­сти ее имя в со­от­вет­ствую­щем кон­тек­сте. Как бы­ло от­
ме­че­но вы­ше, тип пе­ре­мен­ной не ука­зы­ва­ет­ся. По­доб­но C, име­на
пе­ре­мен­ных в Lua ре­ги­ст­ро-за­ви­си­мы (name и Name – раз­ные ве­
щи); то же са­мое от­но­сит­ся и к дру­гим син­так­си­че­ским эле­мен­там
язы­ка. Опе­ра­тор.. по­зво­ля­ет объ­е­динить две стро­ки или стро­к у
и чис­ло в од­ну. Об­ра­ти­те внимание, что при за­дании стро­ки мож­
Lua при­вет­ст­ву­ет нас.
но ис­поль­зо­вать как двой­ные, так и оди­ноч­ные ка­выч­ки. Стро­ки

Сентябрь 2009 Linux Format      77


Учебник Lua

Lua под­дер­жи­ва­ют тот же на­бор спец­сим­во­лов (\n и так да­лее), в по­ряд­ке их пе­ре­чис­ле­ния), а за­тем про­из­во­дит­ся при­сваи­ва­
что и C. Как вы мог­ли за­ме­тить, сим­во­лы, раз­де­ляю­щие вы­ра­ ние зна­че­ний. Из это­го сле­д у­ет, что при об­ме­не зна­че­ний ме­ж­
жения Lua, необя­за­тель­ны, но мож­но ис­поль­зо­вать опе­ра­тор ;, как ду пе­ре­мен­ны­ми
это де­ла­ет­ся в C: a, b = b, a
io.write (“Как вас зо­вут? “); на са­мом де­ле ис­поль­зу­ет­ся две скры­тых пе­ре­мен­ных для хра­не­
name = io.read (); ния пра­вых зна­че­ний (а не од­на яв­ная, как в клас­си­че­ском ал­го­
io.write ('Привет, ' .. name .. “!”); рит­ме). Од­но­вре­мен­ное при­сваи­ва­ние – не та­кое уж од­но­вре­мен­
Пус­той опе­ра­тор ;; здесь не­до­пус­тим. Да­вай­те сра­зу до­го­во­ ное! На са­мом де­ле это про­сто син­так­си­че­ское удоб­ст­во. Кста­ти,
рим­ся не ис­поль­зо­вать ; в стать­ях этой се­рии. в Lua нет ана­ло­гов опе­ра­то­ров C, ++ и --.
По­нра­ви­лось? Вот вам не­мно­го син­так­си­че­ско­го са­ха­ра Ино­гда по­ли­мор­физм пе­ре­мен­ных Lua спо­со­бен при­вес­ти
на за­к ус­к у: к не­ожи­дан­ным и не­при­ят­ным ре­зуль­та­там. Рас­смот­рим та­кой
a, b, c = 1, 2, 3 фраг­мент про­грам­мы:
print(a) x = “ab”
print(b) print(#x)
print(c) Опе­ра­тор # по­зво­ля­ет уз­нать раз­мер пе­ре­мен­ной, ко­то­рой мо­жет
В ре­зуль­та­те вы­пол­не­ния этой про­грам­мы бу­д ут на­пе­ча­та­ны быть при­свое­но зна­че­ние про­из­воль­ной дли­ны (на­при­мер, стро­
чис­ла ка). В на­шем слу­чае фраг­мент про­грам­мы на­пе­ча­та­ет чис­ло 2
1 (дли­на стро­ки, при­сво­ен­ной пе­ре­мен­ной x). Ес­ли по ана­ло­гии
2 мы на­пи­шем
3 x = “1”
Мно­же­ст­вен­ное при­сваи­ва­ние, ко­гда сле­ва от опе­ра­то­ра = пе­ print(#x)
ре­чис­ле­но не­сколь­ко имен пе­ре­мен­ных, а спра­ва – не­сколь­ко зна­ ин­тер­пре­та­тор вы­даст со­об­щение об ошиб­ке – по­пыт­ке вы­чис­лить
че­ний, од­на из ха­рак­тер­ных «фи­шек» Lua. Од­но­вре­мен­ное при­ дли­ну чис­ловой пе­ре­мен­ной. Все де­ло в том, что стро­ка, со­стоя­
сваи­ва­ние сде­ла­но не ра­ди пус­то­го ори­ги­наль­ни­ча­ния. Вот как щая из одних цифр, ав­то­ма­ти­че­ски пре­об­ра­зу­ет­ся в про­цес­се при­
в Lua мож­но вы­пол­нить об­мен зна­че­ния­ми ме­ж ­д у дву­мя пе­ре­- сваи­вания в чис­ло, а к пе­ре­мен­ным, со­дер­жа­щим чис­ла, опе­ра­тор
мен­ны­ми (дру­гие язы­ки в об- # непри­меним. С ним нуж­но об­
­щем слу­чае тре­буют для это­го
тре­тью, вре­мен­ную):
«Иногда полиморфизм ра­щать­ся осто­рож­но и не при­
ме­нять его в том слу­чае, ес­ли
a, b = b, a
Число пе­ре­мен­ных сле­ва
Lua способен привести вы не уве­ре­ны, ка­кое зна­чение
со­дер­жит пе­ре­мен­ная. Ес­ли
от опе­ра­то­ра = и чис­ло зна­че­ к неприятностям.» по­доб­ное по­ве­дение опе­ра­то­ра
ний спра­ва от не­го мо­г ут раз­ # пред­став­ля­ет­ся вам нело­гич­
ли­чать­ся. Ес­ли пе­ре­мен­ных сле­ва боль­ше, «лиш­ним» бу­дет при­ ным, на­бе­ри­тесь тер­пения. Да­лее мы по­ка­жем вам, как, по­гру­зив­
свое­но зна­че­ние nil; ес­ли спра­ва боль­ше зна­че­ний, «лиш­ние» шись в деб­ри C, вы смо­же­те из­менить его (при этом, конеч­но, у вас
бу­д ут про­иг­но­ри­ро­ва­ны. В от­ли­чие от C, опе­ра­ция при­сваи­ва­ния поя­вит­ся своя соб­ствен­ная вер­сия язы­ка Lua, не со­всем со­вмести­
в Lua не воз­вра­ща­ет зна­че­ний, ина­че го­во­ря, нель­зя ис­поль­зо­вать мая с дру­ги­ми). Вот еще при­мер:
кон­ст­рук­цию x =”1”
if (c = a + b) == x then... y = “2”
print(x..y, x+y);
Не­мно­го ма­те­ма­ти­ки В ре­зуль­та­те вы­полнения это­го фраг­мен­та бу­д ут вы­да­ны два зна­
По­смот­рим те­перь, как мож­но на­пи­сать на Lua мою лю­би­мую чения: 12 и 3. Пер­вое пред­став­ля­ет со­бой ре­зуль­тат кон­ка­те­на­ции
про­грам­му для вы­чис­ле­ния чи­сел Фи­бо­нач­чи: двух пе­ре­мен­ных (на­пом­ню, что опе­ра­тор .. оди­на­ко­во ра­бо­та­ет
i=0 со стро­ка­ми и чис­ла­ми), вто­рое – их сум­му. Ес­ли же вме­сто это­
a=1 го мы на­пи­шем
b=0 x =”a”
print('fib('..i..')='..a) y = “2”
while i < 10 do print(x..y, x+y);
a, b = a+b, a то по­пыт­ка вы­чис­лить вы­ра­жение x+y при­ве­дет к ошиб­ке «при­
i = i+1 менение ариф­ме­ти­че­ско­го опе­ра­то­ра к стро­ко­вым зна­чениям».
print('fib('..i..')='..a) Все пе­ре­мен­ные, ко­то­рые мы объ­яв­ля­ли до сих пор, бы­ли гло­
end баль­ны­ми, то есть ви­ди­мы­ми во всех фраг­мен­тах про­грам­мы,
С по­ни­ма­ни­ем цик­ла while не долж­но воз­ник­нуть про­блем (ес­ вы­пол­няе­мой дан­ным эк­зем­п­ля­ром ин­тер­пре­та­то­ра. С по­мо­щью
ли, ко­неч­но, Lua – не ваш пер­вый язык про­грам­ми­ро­ва­ния). Фраг­ клю­че­во­го сло­ва local мож­но объ­яв­лять локаль­ные пе­ре­мен­ные,
мент про­грам­мы, за­к лю­чен­ный ме­ж ­ду опе­ра­то­ра­ми do и end (на­ доступ­ные толь­ко внут­ри те­к у­ще­го фраг­мен­та или бло­ка.
пом­ню, он на­зы­ва­ет­ся бло­ком), бу­дет по­вто­рять­ся до тех пор, по­ка
ис­тин­но про­ве­роч­ное ус­ло­вие цик­ла. Спо­соб­ность Lua вы­пол­нять Де­ла таб­лич­ные
од­но­вре­мен­но не­сколь­ко при­сваи­ва­ний по­зво­ли­ла нам за­пи­сать Те­перь по­зна­ко­мим­ся с са­мым ин­те­рес­ным ти­пом дан­ных – таб­
ре­к ур­рент­ную фор­му­лу вы­чис­ле­ния оче­ред­но­го чис­ла Фи­бо­нач­чи ли­ца­ми. Во­об­ще-то мы зай­мем­ся ими вплот­ную в сле­д ую­щей
в од­ну стро­к у. Мож­но сде­лать это еще ла­ко­нич­нее: ста­тье, а се­го­дня рас­смот­рим, как с их по­мо­щью объ­яв­лять про­
a, b, i = a+b, a, i + 1 стые мас­си­вы. Пе­ре­пи­шем про­грам­му вы­чис­ления чи­сел Фи­бо­
Лю­бо­пыт­но, что стро­ка нач­чи сле­д ую­щим об­ра­зом:
b, a, i = a, a+b, i + 1 fib = {[0] = 1; [1] = 1 }
даст тот же са­мый ре­зуль­тат. То есть од­но­вре­мен­ное при­сваи­ for i = 2, 10, 1 do
ва­ние в Lua вы­пол­ня­ет­ся сле­д ую­щим об­ра­зом: сна­ча­ла вы­чис­ fib[i] = fib[i-1] + fib[i-2]
ля­ют­ся все вы­ра­же­ния, стоя­щие спра­ва от = (это про­ис­хо­дит print(fib[i])

78      Linux Format Сентябрь 2009


 Lua Учебник

end
Кон­ст­рук­ция fib = {} со­об­ща­ет, что пе­ре­мен­ная fib пред­став­ля­ет со­
бой таб­ли­цу, то есть ас­со­циа­тив­ный мас­сив. Объ­яв­ляя ее, мы сра­
зу же за­да­ем две па­ры «ключ–зна­чение» – fib[0] = 1, fib[1] = 1.
В объ­яв­лении пе­ре­мен­ной fib ничто не ука­зы­ва­ет ни дли­ну мас­си­
ва, ни тип хранимых клю­чей и зна­чений (он мо­жет быть лю­бым).
Тот факт, что при объ­яв­лении мы при­свои­ли пе­ре­мен­ной fib ка­кие-
то дан­ные, никак не ог­раничи­ва­ет на­шей сво­бо­ды в дальней­ших
манипу­ля­ци­ях с fib, что мы сей­час и по­ка­жем.
Но сна­ча­ла несколь­ко слов об опе­ра­то­ре for. Как вы уже по­
ня­ли, это еще од­на раз­но­вид­ность опе­ра­то­ров цик­ла, ис­поль­зуе­
мых в Lua. В на­шем при­ме­ре i – пе­ре­мен­ная-ите­ра­тор, 2 – на­чаль­
ное зна­чение пе­ре­мен­ной, 10 – конеч­ное зна­чение, 1 – ин­кре­мент.
Та­ким об­ра­зом, сле­дую­щий за опе­ра­то­ром for блок опе­ра­то­ров
бу­дет по­вто­рен 9 раз. В пред­став­лен­ной вы­ше фор­ме опе­ра­то­
ра for пе­ре­мен­ная-ите­ра­тор мо­жет быть толь­ко чис­лом. В Lua су­
ще­ству­ет и дру­гой ва­ри­ант опе­ра­то­ра for, ко­то­рый по­зво­ля­ет ра­
бо­тать с про­из­воль­ны­ми ите­ра­то­ра­ми с по­мо­щью спе­ци­а ль­ных
функ­ций. Мы рас­смот­рим его поз­же.
Стро­ка
fib[i] = fib[i-1] + fib[i-2]
де­ла­ет две ве­щи: соз­да­ет но­вый эле­мент ас­со­циа­тив­но­го мас­си­
ва с клю­чом i и при­сваи­ва­ет ему зна­чение (та­ким об­ра­зом, до вы­
Сре­да раз­ра­бот­ки
полнения цик­ла for мас­сив fib со­сто­ит из 2‑х эле­мен­тов, а по­сле но их очень лю­бят ав­то­ры все­воз­мож­ных тестов на знание язы­
wxLua.
вы­полнения цик­ла – из 11‑ти). Это очень важ­ная осо­бен­ность таб­ ка. Пусть u и v – две таб­ли­цы. Как бу­дет вы­пол­нять­ся при­сваи­
лиц Lua. Ес­ли пе­ре­мен­ная var со­дер­жит зна­чение ти­па «таб­ли­ца», вание в сле­д ую­щем при­ме­ре?
то лю­бая кон­ст­рук­ция ви­да var[exp] (где exp – вы­ра­жение, ре­ i=0
зуль­та­том ко­то­ро­го яв­ля­ет­ся зна­чение од­но­го из про­стых ти­пов) i, u[i+1] = i+1, v[i]
яв­ля­ет­ся ле­галь­ной, неза­ви­си­мо от то­го, су­ще­ству­ет со­от­вет­ст­ Ка­вер­за в том, что, как мы зна­ем, сна­ча­ла вы­чис­ля­ют­ся вы­ра­
вую­щий эле­мент мас­си­ва или нет. Вы­ра­жение жения, рас­по­ло­жен­ные спра­ва от опе­ра­то­ра при­сваи­вания – из че­
fib[‘bignumber’]=1000000000000 го мож­но сде­лать вы­вод, что зна­чение ин­дек­са при пе­ре­мен­ной
соз­даст но­вую па­ру «ключ–зна­че­ние», а вы­ра­же­ние fib[3.14] вер­ u бу­дет рав­но 2; но это не так. При­сваи­вание пе­ре­мен­ным но­вых
нет зна­че­ние nil, ес­ли, ко­неч­но, с этим клю­чом не бы­ло уже свя­за­ зна­чений про­ис­хо­дит по­сле вы­чис­ления всех вы­ра­жений, в том
но ка­кое-то зна­че­ние. Ес­ли ключ дан­но­го эле­мен­та мас­си­ва яв­ля­ чис­ле и вы­ра­жений ин­дек­сов (как сле­ва, так и спра­ва от опе­ра­то­ра
ет­ся стро­ко­вым зна­че­ни­ем, то вме­сто =), по­это­му на мо­мент вы­чис­ления ин­дек­са u[i+1] зна­чение i рав­
print(fib['bignumber']) но 0. Та­ким об­ра­зом, по­сле вы­полнения при­ве­ден­ной вы­ше опе­
мы мо­жем за­пи­сать ра­ции эле­мен­т у u[1] бу­дет при­свое­но зна­чение v[0], а пе­ре­мен­ная
print(fib.bignumber) i по­лу­чит зна­чение 1.
Та­кой син­так­сис ши­ро­ко при­ме­ня­ет­ся в тех слу­ча­ях, когда
таб­ли­ца ис­поль­зу­ет­ся в ро­ли струк­т у­ры или объ­ек­та. На за­куску
Вы­ше я уже жа­ло­вал­ся вам на по­ве­дение встро­ен­но­го опе­ра­ Да­бы у вас не скла­ды­ва­лось впе­чат­ление, что Lua – скуч­ный
то­ра #. По­жа­лу­юсь еще раз: он при­меним к таб­ли­цам, но ра­бо­та­ет и свое­нрав­ный язык про­грам­ми­ро­вания, рас­смот­рим неко­то­
с ними по несколь­ко стран­ным пра­ви­лам. Ес­ли t – пе­ре­мен­ная, со­ рые его серь­ез­ные воз­мож­но­сти. При та­кой лег­ко­сти ин­те­гра­ции
дер­жа­щая таб­ли­цу, опе­ра­ция #t воз­вра­ща­ет це­ло­чис­лен­ное зна­ с C/C++ неуди­ви­тель­но, что для Lua сде­ла­но мно­же­ство обер­ток
чение i, та­кое, что t[i] не рав­но nil, а t[i+1] рав­но nil. Пе­ре­бор под­хо­ и при­вя­зок. Про­грам­мы, напи­сан­ные на Lua, мо­г ут ис­поль­зо­вать
дя­щих зна­чений на­чи­на­ет­ся с единицы. Для таб­ли­цы для по­строения ин­тер­фей­са wxWidgets, GTK+ (на­пря­мую, ми­нуя
t = {[1] = x; [2] = y; [3] = z} IUP), Qt (сле­ду­ет осо­бо от­ме­тить биб­лио­те­к у QtLua, ко­то­рая мо­жет
вы­ра­же­ние #t вер­нет зна­че­ние 3, что со­от­вет­ст­ву­ет чис­лу эле­мен­ ис­поль­зо­вать­ся как аль­тер­на­ти­ва QtScript с его JavaScript-по­доб­
тов мас­си­ва. А вот для таб­ли­цы ным язы­ком ECMAScript), FLTK, FOX и да­же ncurses. Этим на­бо­ром
t = {[0] = x; [1] = y; [300] = z} ин­тер­фей­сы Lua от­нюдь не ог­раничи­ва­ют­ся. Бо­лее под­роб­ную ин­
это же вы­ра­жение вернет зна­чение 1, то есть по­счи­тан бу­дет фор­ма­цию о до­полнениях и рас­ши­рениях стан­дарт­ной по­став­ки Каль­ку­ля­тор
толь­ко эле­мент t[1], хо­тя все три эле­мен­та таб­ли­цы су­ще­ству­ на Lua счи­та­ет
Lua вы най­де­те на сай­те lua-users.org. В ка­че­стве при­ме­ра при­ве­
без оши­бок.
ют. Эле­мен­ты с неце­ло­чис­лен­ны­ми клю­ча­ми то­же, есте­ствен­но, дем рас­ши­рение Lua для wxWidgets – wxLua
иг­но­ри­ру­ют­ся. (wxlua.sourceforge.net). В со­став па­ке­та wx-
Ес­ли таб­ли­цы мо­г ут ди­на­ми­че­ски уве­ли­чи­вать­ся, то, на­вер­ Lua вхо­дит ин­тег­ри­ро­ван­ная сре­да раз­ра­
ное, мо­г ут и умень­шать­ся? Ра­зу­ме­ет­ся. Что­бы уда­лить эле­мент бот­ки для Lua и мно­же­ство при­ме­ров про­
таб­ли­цы, доста­точ­но при­сво­ить зна­чение nil со­от­вет­ствую­ще­му грамм с ин­тер­фей­сом wxWidgets. Ре­зуль­тат
клю­чу: его ра­бо­ты мож­но ви­деть на ри­сун­ках.
fib[bignumber] = nil -- удаляем элемент “bignumber” Хо­тя в осно­ве сво­ей Lua не яв­ля­ет­ся
В за­к лю­чение зна­ком­ства с мас­си­ва­ми рас­смот­рим один объ­ект­но-ори­ен­ти­ро­ван­ным язы­ком, взаи­
«ка­верз­ный» при­мер. Та­кие кон­ст­рук­ции ед­ва ли встре­ча­ют­ся мо­дей­ствие с объ­ек­та­ми wxWidgets по­лу­
в ре­а ль­ном ко­де, по крайней ме­ре, у вме­няе­мых про­грам­ми­стов, ча­ет­ся у него от­лич­но.

Че­рез ме­сяц Таб­ли­цы как струк­т у­ры дан­ных, функ­ции и стан­дарт­ные биб­лио­те­ки.
Сентябрь 2009 Linux Format      79
Scilab Соз­да­дим для не­го па­кет рас­ши­ре­ний
и обо­га­тим но­вы­ми воз­мож­но­стя­ми

Scilab: Соз­да­ем
Ес­ли воз­мож­но­стей, встро­ен­ных в Scilab, не­дос­та­точ­но для ва­ших це­лей,
Алек­сандр Бик­ме­ев по­ка­жет, как обу­чить его но­вым трю­кам (ко все­об­щей
поль­зе, ра­зу­ме­ет­ся).

С
е­го­дня мно­гие уже понима­ют, что сво­бод­ное ПО часто Кро­ме опи­сан­ных под­ка­та­ло­гов, в корневом ка­та­ло­ге обыч­но
мо­жет за­менить про­прие­тар­ное без осо­бо­го ущер­ба для рас­по­ла­га­ют­ся 4 фай­ла:
функ­цио­наль­но­сти. На­при­мер, сво­бод­ные ма­те­ма­ти­че­ readme.txt Опи­сание са­мо­го па­ке­та рас­ши­рений, а так­же
ские па­ке­ты проч­но обосно­ва­лись на же­ст­ких дисках не толь­ко про­цес­са его уста­нов­ки.
за­ру­беж­ных, но и россий­ских поль­зо­ва­те­лей. Но... ока­зы­ва­ет­ся, builder.sce Основ­ной скрипт сбор­ки па­ке­та...
что для ре­шения неко­то­рых за­дач их воз­мож­но­стей не хва­та­ет. loader.sce...и основ­ной скрипт его за­груз­ки в Scilab
Наш Что же де­лать? На­вер­ное, сле­ду­ет дей­ство­вать в луч­ших тра­ди­ license.txt Ли­цен­зия.
эксперт ци­ях ми­ра Open Source – ес­ли че­го-то недоста­ет, то это сле­д у­ет Сле­д у­ет от­ме­тить, что дан­ная струк­т у­ра не все­гда реа­ли­зу­ет­ся
Алек­сандр соз­дать са­мо­му! Тем бо­лее, что в про­грам­ме Google Summer Code пол­но­стью. На­при­мер, ес­ли в па­ке­те нет функ­ций, реа­ли­зо­ван­ных
Бик­ме­ев все ча­ще по­яв­ля­ют­ся за­да­чи по соз­данию рас­ши­рений для сво­ на C/C++, мож­но обой­тись без src; в от­сут­ствие при­ме­ров не ну­жен
фи­зик-тео­ре­тик
и дав­ний сто­рон­ бод­ных ма­те­ма­ти­че­ских па­ке­тов. ка­та­лог demos. В ре­по­зи­то­рии па­ке­тов рас­ши­рений на сай­те Scilab
ник сво­бод­но­го На дан­ном уро­ке мы по­зна­ко­мим­ся со стан­дарт­ной про­це­ встре­ча­ют­ся эк­зем­п­ля­ры, со­стоя­щие из од­но­го фай­ла с функ­ция­
ПО; в на­стоя­щее ду­рой соз­дания па­ке­та рас­ши­рений (Toolbox) для СКА Scilab ми, без ка­ких-ли­бо скрип­тов сбор­ки и уста­нов­ки. Но нам ка­жет­ся,
вре­мя пы­та­ет­ся (LXF106–109) при по­мо­щи мак­ро­сов на встро­ен­ном язы­ке про­ что со­блю­дение пра­вил, оп­ре­де­лен­ных раз­ра­бот­чи­ка­ми – это вер­
соз­дать для Scilab
грам­ми­ро­вания. Анг­лоя­зыч­ное ру­ко­во­дство по напи­санию па­ке­ ный путь к без­оши­боч­ной ра­бо­те конеч­но­го про­д ук­та.
ана­лог AeroSpace
Toolbox. тов рас­ши­рений мож­но най­ти на офи­ци­а ль­ной ви­ки: http://wiki. В ка­та­ло­ге са­мо­го Scilab име­ет­ся шаб­лон но­во­го па­ке­та, ко­
scilab.org/howto/Create_a_toolbox. то­рый вы мо­же­те взять в ка­че­стве осно­вы. Ес­ли вы ис­поль­зуе­те
дво­ич­ную вер­сию Scilab, за­гру­жен­ную вруч­ную, то па­кет-шаб­лон
Ка­та­ло­ги рас­по­ла­га­ет­ся в ка­та­ло­ге scilab/contrib/toolbox_skeleton; ес­ли же
Ес­ли мы соз­да­ем ка­кой-то па­кет, со­дер­жа­щий функ­ции, то все Scilab уста­нов­лен при по­мо­щи менед­же­ра па­ке­тов, то ищи­те в ка­
его фай­лы долж­ны на­хо­дить­ся в од­ном ка­та­ло­ге. Имя корнево­ та­ло­гах /opt или /usr. Я поль­зу­юсь Mandriva 2009.1, и у ме­ня он на­
го ка­та­ло­га долж­но сов­па­дать с на­званием са­мо­го па­ке­та. Внут­ри хо­дит­ся в /usr/share/scilab/contrib/toolbox_skeleton.
корнево­го ка­та­ло­га мо­жет на­хо­дить­ся 8 под­ка­та­ло­гов:
macros Здесь рас­по­ло­же­ны мак­ро­сы Scilab, то есть фай­лы- До­ба­вим функ­ции
функ­ции с рас­ши­рением.sci, напи­сан­ные на встро­ен­ном язы­ке, Да­вай­те соз­да­дим па­кет (на­зо­вем его Ballistic), в ко­то­ром бу­д ут
а так­же скрипт сбор­ки мак­ро­сов buildmacros.sce. три функ­ции, вы­чис­ляю­щие па­ра­мет­ры дви­жения те­ла, бро­шен­
src Ес­ли функ­ции па­ке­та пред­став­ля­ют со­бой под­про­грам­мы, но­го под уг­лом к го­ри­зон­т у, в за­ви­си­мо­сти от вре­мени:
напи­сан­ные на C/C++ или Fortran, то в этом ка­та­ло­ге долж­ны на­ blst_height – вы­со­та те­ла,
хо­дить­ся фай­лы с их ис­ход­ным ко­дом (с рас­ши­рения­ми .c и .f) blst_length – даль­ность по­ле­та,
и сце­на­рий сбор­ки buildsrc.sce. blst_speed – вер­тикаль­ная и го­ри­зон­таль­ной ско­ро­сти те­ла,
sci_gateway Здесь рас­по­ла­га­ют­ся про­грам­мы-ин­тер­фей­сы для а так­же справ­ка по ра­бо­те с ними. Все функ­ции бу­д ут реа­ли­зо­ва­
функ­ций, напи­сан­ных на сто­ронних язы­ках про­грам­ми­ро­вания ны на встро­ен­ном язы­ке Scilab.
(C/C++, Fortran). На­помним (LXF107), что код внешних функ­ций в Scilab вво­
help В этом ка­та­ло­ге на­хо­дит­ся текст справ­ки, пред­став­ляю­ дит­ся в ре­дак­то­ре, а опи­сание функ­ции име­ет вид:
щий со­бой со­во­к уп­ность XML-фай­лов, на анг­лий­ском и фран­ function [<спи­сок вы­ход­ных па­ра­мет­ров>] =
цуз­ском язы­ках, в под­ка­та­ло­гах с со­от­вет­ствую­щи­ми име­на­ми <Имя Функ­ции>(<спи­сок вход­ных па­ра­мет­ров>)
eng и fr, и тра­ди­ци­он­ный скрипт сбор­ки спра­воч­но­го ма­те­риа­ла: <те­ло функ­ции>
builder_help.sce. endfunction
etc Ес­ли для па­ке­та нуж­ны еще ка­кие-ли­бо фай­лы (.html, .pdf, Соз­да­дим в до­машнем ка­та­ло­ге но­вый, с именем Scilab_
.txt, .jpeg, …), то они раз­ме­ща­ют­ся здесь. Кро­ме то­го, тут рас­ Toolbox: здесь бу­д ут раз­ме­щать­ся все па­ке­ты рас­ши­рений, за­гру­
по­ло­же­ны скрип­ты под­го­тов­ки за­груз­ки и вы­груз­ки па­ке­та жен­ные из се­ти или соз­дан­ные лич­но на­ми. Ор­ганизу­ем в нем под­
из систе­мы. ка­та­лог для на­ше­го па­ке­та (ballistic). В со­от­вет­ствии с вы­бран­ным
unit tests В этом ка­та­ло­ге рас­по­ло­же­ны фай­лы с рас­ши­рением со­дер­жи­мым соз­да­дим под­ка­та­ло­ги macros и help.
.tst, пред­став­ляю­щие со­бой скрип­ты для тести­ро­вания па­ке­та За­пуска­ем Scilab, от­кры­ва­ем ре­дак­тор ли­бо коман­дой scipad,
рас­ши­рений. ли­бо при по­мо­щи ме­ню Ин­ст­ру­мен­ты > Ре­дак­тор и вво­дим код, по­
demos В этот ка­та­лог по­ме­ща­ют­ся раз­лич­ные при­ме­ры, ил­лю­ ка­зан­ный на рис. 1 (он есть и на LXFDVD). В са­мом тек­сте при­ве­де­
ст­ри­рую­щие ра­бо­т у па­ке­та. но доста­точ­но ком­мен­та­ри­ев, что­бы не вда­вать­ся в его де­таль­ное
includes Здесь рас­по­ла­га­ют­ся за­го­ло­воч­ные фай­лы (с рас­ши­ объ­яснение. По­ясним толь­ко один мо­мент, ко­то­рый не со­всем оче­
рением .h) для ис­ход­ных тек­стов C/C++. ви­ден, а имен­но – для че­го в тек­сте функ­ции ис­поль­зу­ет­ся цикл.

80      Linux Format Сентябрь 2009


 Рас­ши­ре­ние Scilab Учебник

Toolbox Код па­ке­та Ballistic


Шаб­лон Scilab
для XMLmind

По­сколь­к у мы бро­са­ем те­ло с по­верх­но­сти Зем­ли, ко­то­ Рис. 2. Тра­ек­то­рии


рую по­ла­га­ем пло­ской, то от­ри­ца­тель­ная вы­со­та не име­ет смыс­ дви­же­ния те­ла
ла. В свя­зи с этим в код до­бав­ле­на про­вер­ка рас­счи­тан­но­го зна­ по­сле бро­ска
на Зем­ле и на Лу­не.
чения, и ес­ли оно ока­зы­ва­ет­ся от­ри­ца­тель­ным, мы при­ну­ди­тель­но
уста­нав­ли­ва­ем его в ноль. Од­на­ко про­бле­ма в том, что в ка­че­стве
вход­ных па­ра­мет­ров функ­ций Scilab мо­жет ис­поль­зо­вать­ся не од­
но зна­чение, а мас­сив. Ес­ли оста­вить толь­ко один опе­ра­тор срав-
нения, то оно бу­дет вы­полнено толь­ко для пер­во­го эле­мен­та мас­
си­ва. В ре­зуль­та­те мы по­лу­чим или мас­сив ну­ле­вых зна­чений
(ес­ли пер­вый эле­мент бу­дет от­ри­ца­тель­ным), или мас­сив, в ко­то­
ром име­ют­ся и от­ри­ца­тель­ные, и по­ло­жи­тель­ные эле­мен­ты.
Эта ошиб­ка весь­ма ти­пич­на для на­чи­наю­щих про­грам­ми­
ро­вать в Scilab, по­сколь­к у они часто за­бы­ва­ют, что лю­бая пе­ре­
мен­ная в этой систе­ме рас­смат­ри­ва­ет­ся пре­ж ­де все­го как мат­ри­
ца. Та­ким об­ра­зом, сравнение необ­хо­ди­мо вы­полнить для всех
эле­мен­тов мас­си­ва-ре­зуль­та­та, а для это­го необ­хо­дим цикл.
Со­храним дан­ный код в ка­та­ло­ге macros под именем blst_
height.sci. За­тем соз­да­дим фай­лы blst_length.sci и blst_speed.
sci, ко­то­рые бу­дут вы­чис­лять даль­ность по­ле­та те­ла и ком­понен­
ты ско­ро­сти со­от­вет­ствен­но. В ка­че­стве вход­ных па­ра­мет­ров
всех трех функ­ций вы­сту­па­ют g – уско­рение сво­бод­но­го па­дения,
v0 – аб­со­лют­ная ве­ли­чи­на на­чаль­ной ско­ро­сти, alpha – угол на­
кло­на к го­ри­зон­т у, t – вре­мя, про­шед­шее с мо­мен­та на­ча­ла дви­ Scilab. По­сле это­го в основ­ном окне Scilab мож­но бу­дет вы­полнить
жения. Эти функ­ции длиннее, так что мы не бу­дем при­во­дить тесто­вые вы­чис­ления с функ­ция­ми бу­д у­ще­го па­ке­та. Скорая
помощь
их текст в жур­на­ле: восполь­зуй­тесь фай­ла­ми с LXFDVD. За­гру­зи­те функ­цию blst_height в Scilab, как ука­за­но вы­ше,
Конеч­но же, тек­сты этих мак­ро­сов мож­но на­брать в про­стом и по­про­буй­те сле­д ую­щие коман­ды: Не за­бы­вай­те
тек­сто­вом ре­дак­то­ре ти­па Kate, но ис­поль­зо­вание Scipad по­зво­ -->t=0:0.1:3; встав­лять в ко­д
ля­ет про­ве­рить ра­бо­т у функ­ции сра­зу по­сле вво­да. Для это­го сле­ -->h1=blst_height(9.81,10,45,t); ком­мен­та­рии! На­
ду­ет вы­брать по­сле­до­ва­тель­но пунк­ты ме­ню Execute > Load into -->h2=blst_height(1.62,10,45,t); пом­ним, что стро­
ка-ком­мен­та­рий
-->plot2d(t,[h1 h2],[color(0,255,0) color(255,128,0)]); на­чи­на­ет­ся с двой­
-->hl=legend([‘Земля’;’Луна’],2); но­го слэ­ша (//),
В ре­зуль­та­те по­лу­чит­ся гра­фик, по­ка­зан­ный на рис. 2. На нем и Scilab5 впол­не
ото­бра­жа­ют­ся тра­ек­то­рии пер­вых трех се­к унд по­ле­та те­ла с оди­ тер­пи­мо от­но­сит­
ся к ки­рил­ли­че­
на­ко­вы­ми ис­ход­ны­ми па­ра­мет­ра­ми, но на раз­ных небес­ных те­лах:
ско­му тек­сту.
на Зем­ле и на Луне (мо­жет, про­ве­рим, бы­ли ли там аме­ри­кан­цы?).
Вид­но, что на Луне те­ло ле­тит вы­ше, чем на Зем­ле. Сле­до­ва­тель­
но, функ­ция ра­бо­та­ет. Мы ре­ко­мен­д у­ем вам раз­ра­бо­тать тесто­вые
при­ме­ры для ка­ж ­дой функ­ции, что­бы впо­след­ствии по­сле лю­бых
из­менений мож­но бы­ло убе­дить­ся, что но­вая вер­сия функ­ции да­

Име­но­ва­ние мак­ро­сов
Текст ка­ж ­дой функ­ц ии сле­д у­е т хранить при­с ут­с тву­е т несколь­ко функ­ц ий, они ста­
в от­дель­ном фай­ле, на­звание ко­то­ро­го нут доступ­ны толь­ко по­с ле вы­зо­в а функ­
долж­но сов­па­д ать с именем са­мой функ­ ции func1. Ес­ли же в фай­ле func1.sci функ­
ции. Де­ло в том, что по­с ле за­г руз­к и па­ке­т а ции func1 не ока­жет­с я, то все функ­ц ии это­г о
рас­ши­рений в ра­бо­ч ую сре­д у систе­м а ищет фай­ла бу­д ут недоступ­ны.
в ка­ж ­дом фай­ле па­ке­т а функ­ц ию, имя ко­ Раз­ме­щение функ­ций в от­дель­ных фай­
то­рой сов­па­д а­е т с именем фай­ла. То есть, лах по­зво­ля­ет бы­ст­рее на­хо­дить ис­ход­ный
ес­ли есть файл мак­ро­с а с именем func1. текст необ­хо­ди­мой функ­ции, уп­ро­щ а­ет тести­
sci, то систе­ма бу­дет искать в нем функ­ ро­вание, а впо­след­ствии – и мо­дерниза­цию
Рис. 1. Текст пер­вой функ­ции бу­ду­ще­го па­ке­та рас­ши­ре­ний цию с именем func1. Ес­ли в этом фай­ле па­ке­та.
Ballistic.

Сентябрь 2009 Linux Format      81


Учебник Рас­ши­ре­ние Scilab

ет тот же ре­зуль­тат, что и ста­рая. Соб­ствен­но, для это­го и нуж­ны ду но­во­го па­ке­та рас­ши­рений, его спра­воч­ное ру­ко­во­дство – ес­ли
сце­на­рии в под­ка­та­ло­ге unit tests на­ше­го па­ке­та. оно име­ет­ся – по­яв­ля­ет­ся в основ­ном де­ре­ве ру­ко­во­дства по все­
По­сле то­го, как все мак­ро­сы соз­да­ны, необ­хо­ди­мо напи­ му пакету.
сать скрипт их сбор­ки и за­груз­ки. Это обыч­но де­ла­ет­ся вруч­ную. Для соз­дания спра­воч­ных ма­те­риа­лов необ­хо­ди­мо, что­бы
В Scilab5 поя­ви­лись спе­ци­а ль­ные коман­ды, уп­ро­щаю­щие вы- в систе­ме был уста­нов­лен XML-ана­ли­за­тор sabcmd, яв­ляю­щий­ся
­полнение дан­ной опе­ра­ции. От­крой­те ка­та­лог с мак­ро­са­ми и соз­ ча­стью па­ке­та Sablotron, ко­то­рый мож­но най­ти в менед­же­ре па­
дай­те в нем про­стой тек­сто­вый до­к у­мент с именем buildmacros. ке­тов ва­ше­го ди­ст­ри­бу­ти­ва. Ес­ли же там его не ока­за­лось, то ска­
sce. Внут­ри него раз­мести­те сле­д ую­щий текст: чай­те Sablotron здесь: http://www.gingerall.org/downloads.html.
pathMB = get_absolute_file_path('buildmacros.sce'); Впро­чем, XML-струк­т у­ра фай­ла справ­ки доста­точ­но про­ста,
tbx_build_macros('Ballistic', pathMB); и его мож­но соз­дать в лю­бом тек­сто­вом ре­дак­то­ре. На­чи­на­ет­ся
clear pathMB; все со стро­ки, в ко­то­рой ука­зы­ва­ет­ся вер­сия XML и ис­поль­зуе­мая
и со­храните файл. Пер­вая стро­ка скрип­та за­но­сит во вре­мен­ную ко­ди­ров­ка:
пе­ре­мен­ную pathMB ка­та­лог, где рас­по­ло­же­ны мак­ро­сы. Вто­рая <?xml version=”1.0” encoding=”UTF-8”?>
стро­ка со­дер­жит коман­ду, вы­пол­няю­щ ую сбор­к у всех мак­ро­сов, За­тем идет «шап­ка» для Scilab. Здесь ука­зы­ва­ет­ся вер­сия
рас­по­ло­жен­ных в дан­ном ка­та­ло­ге. В ка­че­стве па­ра­мет­ров ука­ Scilab, на­зва­ние функ­ции, язык спра­воч­но­го ма­те­риа­ла, а так­же
зы­ва­ют­ся на­звание па­ке­та и путь к ка­та­ло­г у с мак­ро­са­ми. Тре­тья оп­ре­де­ля­ют­ся не­ко­то­рые про­стран­ст­ва имен.
стро­ка уда­ля­ет из па­мя­ти вре­мен­ную пе­ре­мен­ную. <refentry version=”5.0-subset Scilab” xml:id=”blst_height”
В ре­зуль­та­те дей­ствия дан­ной коман­ды соз­да­ет­ся и скрипт xml:lang=”en”
за­груз­ки мак­ро­сов. Ранее его при­хо­ди­лось пи­сать вруч­ную, xmlns=”http://docbook.org/ns/docbook”
да и сбо­роч­ный скрипт имел чуть бо­лее слож­ный вид. xmlns:xlink=”http://www.w3.org/1999/xlink”
xmlns:svg=”http://www.w3.org/2000/svg”
Соз­да­ем опи­сание xmlns:ns3=”http://www.w3.org/1999/xhtml”
Функ­ции напи­са­ны, но ес­ли мы не со­про­во­дим их по­яс­няю­щим xmlns:mml=”http://www.w3.org/1998/Math/MathML”
тек­стом, то вряд ли кто-то станет раз­би­рать­ся, как с ними ра­бо­ xmlns:db=”http://docbook.org/ns/docbook”>
тать. Одним из ва­ри­ан­тов яв­ля­ет­ся ис­поль­зо­вание ком­мен­та­ри­ Да­лее идет крат­кое опи­са­ние са­мой функ­ции:
ев; од­на­ко, что­бы про­смот­реть их, поль­зо­ва­те­лю при­дет­ся лезть <refnamediv>
в ис­ход­ный код. Конеч­но же, есть лю­ди, ко­то­рые по­ле­зут в него <refname>blst_height</refname>
в лю­бом слу­чае, но ес­ли поль­зо­ва­те­лю необ­хо­ди­мы по­яснения, <refpurpose> calculate height of body's trajectory, that was
он обыч­но от­кры­ва­ет спра­воч­ное ру­ко­во­дство. thrown from earth </refpurpose>
Спра­воч­ная систе­ма Scilab об­ла­да­ет за­ме­ча­тель­ным свой­ </refnamediv>
ством – она ди­на­ми­че­ская. То есть при за­груз­ке в ра­бо­чую сре­ За­тем ука­зы­ва­ет­ся стан­дарт вы­зо­ва:
<refsynopsisdiv>
<title>Calling Sequence</title>
Ре­дак­тор справ­ки <synopsis>a = blst_height(g, v0, alpha, t)</synopsis>
</refsynopsisdiv>
На офи­ци­а ль­ном сай­те Scilab для соз­д а­ сле это­го по­яв­ля­ет­ся спи­сок дос­т уп­ных шаб­ Сле­д ую­щая сек­ция опи­сы­ва­ет па­ра­мет­ры, пе­ре­да­вае­мые на­
ния тек­ста справ­ки ре­ко­мен­д у­ют ис­поль­ ло­нов, сре­ди ко­то­рых при­сут­ст­ву­ет раз­дел шей функ­ции:
зо­вать ви­зу­а ль­ный XML-ре­д ак­тор XMLmind Scilab. Вы­би­ра­ем не­об­хо­ди­мый шаб­лон (для <refsection>
(http://www.xmlmind.com/xmleditor/) вме­сте опи­са­ния функ­ции ис­поль­зу­ет­ся Refentry) <title>Parameters</title>
с шаб­ло­ном (http://www.scilab.org/download/ и на­жи­ма­ем кноп­к у OK (см. рис. внизу слева).
<variablelist>
xxe_scilab_config-1.1.0.tar.gz). В поя­вив­шем­ся пус­том шаб­ло­не за­пол­ня­
Ска­чи­ва­ем XMLmind и рас­па­ко­вы­ва­ем ем все ме­сто­за­пол­ни­те­ли. Ес­ли не­об­хо­ди­мо <varlistentry>
в до­маш­ний ка­та­лог. За­хо­дим в ди­рек­то­рию вста­вить до­пол­ни­тель­ный аб­зац или эле­мент <term>g</term>
про­грам­мы, да­лее в под­ка­та­лог bin, и за­пус­ спи­ска, на­жи­ма­ем со­от­вет­ст­вую­щ ую кноп­ <listitem>
ка­ем скрипт xxe. ку на па­не­ли ин­ст­ру­мен­тов. В дан­ном слу­чае,
<para>gravitational acceleration</para>
Ска­чи­ва­ем шаб­лон и рас­па­ко­вы­ва­ем его для опи­са­ния до­пол­ни­тель­но­го па­ра­мет­ра
в ка­та­лог $HOME/.xxe4/addon (что­бы об­на­ру­ нам нуж­на Add listitem or varlistentry [До­ба­ </listitem>
жить ка­та­лог .xxe4, не­об­хо­ди­мо вклю­чить ре­ вить эле­мент спи­ска или эле­мент спи­ска пе­ </varlistentry>
жим ото­бра­же­ния скры­тых фай­лов). ре­мен­ных] (см. рис. внизу справа). ...
Пе­ре­за­пус­ка­ем ре­дак­тор, вы­би­ра­ем по­ По за­вер­ше­нии, со­хра­ня­ем файл в ка­та­ </variablelist>
сле­до­ва­тель­но пунк­ты ме­ню File > New. По­ ло­ге на­зва­ние_па­ке­та/help/en_US и да­ем ему
</refsection>
имя, сов­па­д аю­щее с на­зва­ни­ем опи­сы­вае­
мой функ­ции. В ка­че­ст­ве рас­ши­ре­ния ос­тав­ Да­лее идет раз­дел опи­са­ния: в нем со­об­ща­ет­ся, что это
ля­ем .xml. за функ­ция, для че­го она нуж­на и так да­лее. Ка­ж ­дый па­ра­граф за­
клю­ча­ет­ся в тэг para.
<refsection>
<title>Description</title>
<para>calculate height of body’s trajectory, that was thrown
from earth from given gravitational acceleration, initial speed and
angle between the speed and horizon, and time since trow.</para>
</refsection>
Сле­д ую­щий раз­дел пред­ла­га­ет при­ме­ры ис­поль­зо­ва­ния дан­
ной функ­ции.
<refsection>
<title>Examples</title>
<programlisting role=”example”>blst_height(9.81, 15,30, 3)</
programlisting>
Refentry — шаблон для справки. Нужная кнопка обведена красным.
</refsection>

82      Linux Format Сентябрь 2009


 Рас­ши­ре­ние Scilab Учебник

В кон­це мо­г ут быть ука­за­ны не­обя­за­тель­ные раз­де­лы, та­кие как Рис. 3. Спра­воч­ная
«Ав­тор» и «Смот­ри так­же». сис­те­ма Scilab, со­
<refsection> дер­жа­щая гла­ву по
на­ше­му па­ке­ту рас­
<title>Authors</title>
ши­ре­ний Ballistic.
<simplelist type=”vert”>
<member>Alexander</member>
</simplelist>
</refsection>
По­сле это­го файл за­кры­ва­ет­ся:
</refentry>
Соз­дай­те в ка­та­ло­ге help под­ка­та­лог en_US (к со­жа­ле­нию,
Scilab под­дер­жи­ва­ет справ­к у толь­ко на двух язы­ках: анг­лий­ском
и фран­цуз­ском). За­тем соз­дай­те в help/en_US три фай­ла с опи­са­
ни­ем функ­ций с рас­ши­ре­ни­ем .xml.
Ос­та­лось соз­дать там же сце­на­рий сбор­ки анг­лоя­зыч­но­го спра­
воч­но­го ма­те­риа­ла (build_help.sce) со сле­дую­щим со­дер­жа­ни­ем:
pathHB = get_absolute_file_path('build_help.sce');
tbx_build_help('Ballistic', pathHB);
clear pathHB; //За­г ру­ж а­ем функ­ции па­ке­т а
Так же, как и в пре­ды­д у­щем слу­чае, в пер­вой стро­ке оп­ре­де­ Ballisticlib = lib(pathmacros);
ля­ет­ся путь к те­к у­ще­му ка­та­ло­г у с фай­ла­ми справ­ки, за­тем вы­ //Вос­с та­нав­ли­ва­ем ре­ж им вы­во­д а пре­д у­пре­ж ­де­ний
зы­ва­ет­ся ко­ман­да сбор­ки, а в треть­ей стро­ке уда­ля­ет­ся вре­мен­ warning(warning_mode);
ная пе­ре­мен­ная. //До­бав­ля­ем но­вую гла­ву в спра­воч­ное ру­ко­во­дство Scilab
Да­лее, пе­рей­ди­те на один уро­вень вы­ше в ка­та­лог help. Здесь path_addchapter = root_tlbx + “/jar/”;
сле­д у­ет соз­дать скрипт сбор­ки всех спра­воч­ных ма­те­риа­лов if ( fileinfo(path_addchapter) <> [] ) then
builder_help.sce: add_help_chapter('Ballistic', path_addchapter, %F);
pathH = get_absolute_file_path('builder_help.sce'); clear add_help_chapter;
tbx_builder_help_lang(“en_US”, pathH); end
clear pathH; //Уда­ля­ем все вре­мен­ные пе­ре­мен­ные
clear warning_mode;
Управ­ляю­щие скрип­ты clear path_addchapter;
Ос­нов­ное со­дер­жи­мое го­то­во. Те­перь не­об­хо­ди­мо соз­дать три ос­ clear root_tlbx;
нов­ных скрип­та, без ко­то­рых ни­че­го ра­бо­тать не бу­дет: clear etc_tlbx;
builder.sce Это глав­ный сце­на­рий сбор­ки па­ке­та. Он рас­по­ла­га­ clear pathmacros;
ет­ся в его кор­не­вом ка­та­ло­ге и со­дер­жит сле­д ую­щие стро­ки: clear pathconvert;
mode(-1) etc/Ballistic.quit Сце­на­рий, оп­ре­де­ляю­щий, что сле­д у­ет вы­пол­ Скорая
помощь
pathB = get_absolute_file_path('builder.sce'); нить при вы­груз­ке па­ке­та. Обыч­но он ос­та­ет­ся пус­тым.
tbx_builder_macros(pathB); Итак, все го­то­во! За­пус­ка­ем Scilab и вво­дим ко­ман­д у
Же­ла­тель­но иметь
tbx_builder_help(pathB); на сбор­к у на­ше­го па­ке­та, то есть вы­зы­ва­ем ос­нов­ной сбо­роч­ный два ка­та­ло­га с ис­
tbx_build_loader('Ballistic', pathB); сце­на­рий: ход­ны­ми тек­ста­
clear pathB; exec('~/Scilab_Toolbox/ballistic/builder.sce’); ми ва­ше­го па­ке­та:
В пер­вой стро­ке от­к лю­ча­ет­ся вы­вод со­об­ще­ний. В про­цес­се раз­ Ес­ли он от­ра­бо­та­ет без оши­бок, в кор­не­вом ка­та­ло­ге па­ке­та поя­ один для хра­не­ния
толь­ко ис­ход­ных
ра­бот­ки ее же­ла­тель­но за­ком­мен­ти­ро­вать, ина­че при воз­ник­но­ве­ вит­ся скрипт его за­груз­ки в сис­те­му. Вы­пол­ним ко­ман­д у за­груз­ки
тек­стов, а вто­рой –
нии оши­бок вы мо­же­те о них не уз­нать. В сле­д ую­щих стро­ках во па­ке­та рас­ши­ре­ний: для сбор­ки. В этом
вре­мен­ную пе­ре­мен­ную за­пи­сы­ва­ет­ся путь к ка­та­ло­г у па­ке­та рас­ e