суббота, июля 01, 2006

Об уникальных возможностях свободного софта

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


Древовидная отмена в Vim 7

Про это я уже писал в статье "новые возможности Vim 7". Позволю себе процитировать себя любимого ;) :

Мы уже привыкли представлять себе последовательность действий в редакторе как обычный линейный список. Движение назад по нему возможно только с помощью отмены последнего действия. А если мы сделали действия 1, 2, 3, 4, 5, потом отменили действия 4 и 5 и сделали 6 и 7, то действия 4 и 5 безнадежно забыты.

Vim 7 изменяет это представление. Теперь действия в редакторе образуют не список, а дерево. И в упомянутой только что ситуации мы можем вернуться к состоянию, когда сделаны действия 1, 2, 3 и 4, одной командой :undo 4. А потом можем передумать и сказать :undo 7.

Разберем более наглядный примерчик. Пусть в файле у нас есть слово one. Мы добавляем к нему слово too. Потом исправляем слово too на two. Потом отменяем последнее действие, снова получаем one too. Теперь меняем слово one на me и получаем me too. Добавляем восклицательный знак. Эту последовательность действий можно представить такой диаграммой:

          'one'
|
change 1
|
'one too'
/ \
change 2 change 3
| |
'one two' 'me too'
|
change 4
|
'me too!'

Хотите теперь вернуться к ситуации, когда у вас было one two? Пожалуйста - наберите :undo 2. Передумали и хотите получить me too - наберите :undo 3.

Команда :undo с числовым аргументом полезна, когда вы помните номер изменения, к которому вы хотите вернуться. Посмотреть список последних операций с их номерами можно по команде :undolist. А можно двигаться вперед-назад по дереву отмен, нажимая g+ и g-.

Vim 7 запоминает время, когда было произведено каждое действие. И благодаря этому появляется еще одна инновационная возможность - отмена и отмена отмены по времени. Скажем, вы редактируете большой файл. Например, пишете статью. И вдруг решаете, что все, что вы изменили в ней за последние 30 минут, было сделано неправильно. Наберите :earlier 30m - и получите текст, который был у вас полчаса назад. Решили, что все-таки первые несколько правок за эти 30 минут были правильными - наберите :later 5m.


Пообъектная отмена в Scribus

Для тех, кто еще не в курсе - Scribus - это свободная Desktop Publishing System (настольная издательская система), которая в Европе сейчас соревнуется на равных с монстрами типа QuarkXPress, InDesign, PageMaker. Так вот, в новой версии Scribus - 1.3.x - появилась возможность, которой нет в его коммерческих (и недешевых) конкурентах. Именно, история отмен теперь своя у каждого объекта! Пусть, например, на листе у нас - круг и квадрат, оба синие. Меняем кругу заливку на красную. Теперь меняем квадрату заливку на зеленую. Теперь выделяем круг и жмем "отмена" - и получаем синий круг с зеленым квадратом.


Встроенный трассировщик в Inkscape

Трассировщик - это программа, преобразующая растровое изображение к векторному виду. У Corel, например, есть Corel Trace. А в Inkscape интегрирован portrace - свободный трассировщик. Единственный, кроме Inkscape, векторный редактор со своим трассировщиком - Xara X. Но, во-первых, там он менее эффективен, а во-вторых, Xara LX теперь свободная софтина. Я работал с несколькими коммерческими трассировщиками - Corel Trace, Adobe Streamline и еще двумя-тремя подешевле ;) - ни один из них не может сравниться по скорости и эффективности с встроенным в Inkscape portrace. Кроме того, интегрированный трассировщик Inkscape содержит уникальную возможность - SIOX, то есть выделение нужных объектов. Импортируем растровую картинку с изображенной на ней ящерицей, поверх картинки обводим ящерицу замкнутым закрашенным контуром, выделяем картинку и контур, в трассировщике ставим галочку SIOX и жмем Ок. В результате векторизованная картинка содержтит одну ящерицу, без окружающего фона.


Inkboard в Inkscape

Другая уникальная возможность Inkscape - Inkboard. Это протокол, работающий поверх Jabber и позволяющий многим людям одновременно работать над одним документом Inkscape (параллельно обсуждая работу в другой комнате Jabber). Документ располагается на Jabber-сервере, каждый правит локальную копию, при сохранении копии синхронизируются. Единственный реально альтернативный способ организовать такую работу - работать с чем-нибудь типа CorelDraw, а документ сохранять на сервере Subversion (коммерческие системы контроля версий, умеющие работать с бинарными файлами, стоят столько, что Corel-у и не снилось). При этом автоматически теряем интегрированность решения.


Лепка узлов в Inkscape

И еще одна уникальная возможность Inkscape - лепка узлов. Если вы знаете, что такое "Мягкое выделение" в 3DSMax или "пропорциональное редактирование" в Blender, то вы знаете что такое лепка узлов в Inkscape. Остальным поясню. Берем кривую со множеством узлов. Выделяем десяток узлов и тащим один из них с нажатым Alt. Сам этот узел тащится куда скажут, те, которые рядом с ним, перемещаются, но чуть на меньшее расстояние, а те, которые дальше, перемещаются только чуть-чуть. Таким образом, если изначально все узлы были выстроены по прямой, после перетаскивания получим колоколообразную кривую. Эта возможность позволяет гибко изменять форму сложных кривых, не занимаясь при этом перетаскиванием каждого из сотен узлов.


Физический движок Blender

Blender - это система трехмерной анимации, свободный аналог 3DSMax и Maya. Может быть, чего-то ему по сравнению с конкурентами пока что и не хватает, но есть у него особенность, выгодно отличающая от коммерческих аналогов. Это - физический движок. Изначально физический движок в Blender предназначен для создания игр, однако сейчас он развивается в направлении все большей интеграции с режимом моделирования и анимации. Например, делаем шарик, висящий в воздухе, и плоскость пола. Назначаем шарик Actor-ом и запускаем режим игры. Шарик под действием силы тяжести падает на пол и несколько раз отскакивает. Другая возможность физического движка Blender-а - имитация мягких тел. Делаем вертикальную плоскость со многими узлами, некоторые из узлов на верхнем краю помечаем как закрепленные, добавляем "ветер", настраиваем параметры, запускаем анимацию - и наблюдаем тряпочку, колышащуюся на ветру. Наконец, Blender может имитировать жидкость, которая льется, плещется и брызгается. Все эти возможности - расчет механических взаимодействий, мягких тел, жидкостей - есть в виде плагинов (каждый не дешевле $1000) к 3DSMax и Maya, но в самих этих пакетах таких возможностей нет.


Цвет высокой разрядности в Cinepaint, Krita, [Gimp]

Adobe Photoshop CS2 поддерживает в качестве родного режима 8 бит на канал, почти родного - 16 бит на канал и немножко поддерживает 32 бита на канал. У других коммерческих растровых редакторов общего назначения с этим еще хуже. Cinepaint и Krita (используя библиотеку OpenEXR) (а в скорости и Gimp с помощью библиотеки GEGL) поддерживают в качестве родных форматов 8, 16, 32 бита на канал, включая режим floating point, дающий гораздо большую точность при сложных манипуляциях с цветом. Из коммерческих редакторов такой режим поддерживает только узкоспециализированный, обычно заказной софт стоимостью во многие тысячи долларов. Мало того, в новой версии Cinepaint аннонсирована поддержка режима 64 бита на канал!


Заключение

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


Last updated 01-Jul-2006 21:06:58 YEKST

Комментариев нет:

Отправить комментарий