среда, 8 октября 2008 г.

Анатомия журналируемых файловых систем Linux

Анатомия журналируемых файловых систем Linux


developerWorks Россия > Linux >

Настоящее и будущее журналирования

developerWorks
Опции документа
PDF format - Fits A4 and Letter

PDF - Fits A4 and Letter
48KB (9 страница)

Загрузить Adobe® Reader®


Опции документа, требующие включения JavaScript, не отображаются

Обсудить


Выскажите мнение об этой странице

Помогите нам улучшить содержание


Уровень сложности: средний

М. Тим Джонс, инженер-консультант, Emulex

07.10.2008

Были времена, когда журналируемые файловые системы рассматривались как нечто избыточное, годное лишь для исследовательских целей. Но сегодня журналируемая файловая система ext3 выбирается в Linux® по умолчанию. В этой статье вы узнаете об идеях, приведших к появлению такого рода систем, а также о том, почему эти системы обеспечивают лучшую целостность данных в случае сбоя питания или краха системы. Узнайте о различных современных журналируемых файловых системах и загляните в будущее файловых систем нового поколения.

Существует множество определений журналируемых файловых систем, однако давайте приведем формулировку, понятную каждому: журналируемая файловая система - это систем для тех, кому надоела программа проверки fsck во время загрузки. Также это система для тех, кому близка идея устойчивых к сбоям систем. Если некорректно отключить питание в обычной системе, где отсутствует журналирование, то ОС обнаруживает этот факт и запускает утилиту проверки целостности диска fsck при следующей загрузке. Эта утилита сканирует файловую систему и пытается устранить проблемы, не нанося вреда данным. Процесс проверки может занять довольно много времени. Иногда файловая система повреждается настолько сильно, что ОС загружается только в однопользовательском режиме и предлагает пользователю провести дальнейшее восстановление.

Скажи fsck

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

Итак, теперь вы знаете, кто нуждается в журналируемых файловых системах, однако почему таким системам не нужны проверки fsck? Вкратце - потому, что в них ведется специальный журнал. Журнал - это файл, представляющий собой кольцевой буфер, в который заносятся все действия, связанные с изменением файловой системы. Периодически эти изменения применяются к файловой системе. В случае сбоя, журнал может быть использован в качестве отправной точки для восстановления несохраненных данных и для предотвращения повреждения метаданных.

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

Что такое метаданные?

Метаданными называются служебные структуры данных, необходимые для хранения основных данных. Такие операции, как создание и удаление файла и каталога, увеличение файла, усечение файла и.т.д., затрагивают метаданные.


Рисунок 1. Типичная журналируемая файловая система.
Обычная журналируемая файловая система

История журналируемых файловых систем Linux

IBM® первой разработала журналируемую файловую систему, которая называлась JFS (Journaled File System). Первая версия JFS была представлена в 1990 году, а современная версия поддерживается в Linux как JFS2, разработанная позже. В 1994 году компания Silicon Graphics представила высокопроизводительную файловую систему XFS для ОС IRIX. В 2001 году XFS была портирована для Linux. В 1998 году для систем Amiga была разработана файловая система Smart File System (SFS), которая впоследствии выпускалась под лицензией GNU Lesser General Public License (LGPL) и получила поддержку в Linux 2005 году. Наибольшее распространение получила файловая система ext3fs (от англ. third extended file system), которая является расширением системы ext2 с добавлением журналирования. Поддержка ext3fs появилась в Linux в 2001 году. И наконец, получившая широкое распространение журналируемая файловая система ReiserFS открыла много новых путей и возможностей для развития. Однако развитие этой системы замедлилось в связи с юридическими проблемами ее автора.



В начало


Разновидности журналирования

Еще материалы developerWorks из серии Анатомия... от Тима Джонса

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

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

Правила применения изменений, зафиксированных в журнале, также могут быть разными в разных подходах. Например, когда следует применять изменения? Когда журнал полон? Или когда истекает некий таймаут?



В начало


Журналируемые файловые системы сегодня

На сегодняшний день активно используется несколько журналируемых файловых систем, каждая из которых имеет свои преимущества и недостатки. Ниже представлена четверка самых популярных журналируемых файловых систем.

JFS2

JFS2 (также известная как улучшенная журналируемая файловая система) является первой журналируемой файловой системой и долгое время применялась в ОС IBM AIX®, прежде чем была перенесена в Linux. JFS2 - это 64-разрядная файловая система, которая, имея корни оригинальной JFS, была заметно усовершенствована в плане масштабируемости и поддержки многопроцессорных архитектур.

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

JFS2 также использует B+-деревья как для эффективного поиска по каталогам, так и для управления дескрипторами экстентов. JFS2 не имеет собственной политики переноса изменений на диск, - вместо этого она основывается на таймауте демона kupdate.

XFS

XFS - еще одна из ранних журналируемых файловых систем, первоначально разработанная Silicon Graphics в 1995 году для ОС IRIX. В 2001 году XFS была реализована в Linux, уже будучи на тот момент продуманной и надежной файловой системой.

XFS использует полноценную 64-разрядную адресацию и обеспечивает очень высокую производительность за счет применения B+-деревьев для размещения каталогов и файлов. XFS хранит данные в виде экстентов, поддерживая переменный размер экстентов (от 512 байт до 64 килобайт). Наряду с экстентами в XFS применяется отложенное размещение, при котором размещение блоков задерживается до тех пор, пока не наступит время их записи на диск. Такая особенность повышает вероятность заполнения подряд нескольких дисковых блоков, поскольку на момент записи будет известно их количество.

Другие интересные свойства XFS - это гарантированная скорость ввода/вывода, когда пользователям файловой системы выделяется резерв пропускной способности для операций ввода/вывода, и прямой ввод/вывод, при котором данные копируются напрямую между диском и буфером приложения (вместо того чтобы проходить несколько буферов). Журналирование в XFS ведется методом обратной записи.

Третья расширенная файловая система (ext3fs)

Третья расширенная файловая система (ext3fs) - наиболее популярная журналируемая файловая система, возникшая как эволюция известной файловой системы ext2. На самом деле она совместима с ext2, так как оперирует идентичными структурами, но с добавлением журнала. Более того, возможно смонтировать раздел ext3 как ext2 либо преобразовать ext2 в ext3, используя утилиту tune2fs.

В ext3fs поддерживаются все три стратегии журналирования (обратная запись, упорядочивание и режим данных), однако по умолчанию используется режим упорядочивания. Политику переноса данных журнала на диск можно настраивать, но изначально она такова, что перенос происходит либо по заполнении 1/4 журнала, либо по истечении одного из таймеров переноса.

Один из главных недостатков ext3fs происходит из того, что она изначально не задумывалась как именно журналируемая файловая система. Поскольку она основана на ext2fs, в ней отсутствуют многие прогрессивные нововведения, имеющиеся в других файловых системах (например, экстенты). Также она обычно показывает слабую производительность по сравнению с ReiserFs, JFS и XFS, однако меньше нагружает процессор и потребляет памяти, чем многие другие файловые системы.

ReiserFS

Что такое уплотнение хвостов?

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

Файловая система ReiserFS с самого начала создавалась как журналируемая. В 2001 году она была добавлена в главную ветку ядра 2.4 и стала первой журналируемой файловой системой, появившейся в Linux. Основной метод журналирования - упорядочивание. Поддерживается увеличение размера файловой системы "на лету". ReiserFS также поддерживает уплотнение хвостов для динамического уменьшения фрагментации, что позволяет ей обгонять по скорости ext3fs при работе с маленькими файлами.

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

Репутация ReiserFS была несколько раз подпорчена: последний раз - проблемами автора системы с законом (подробную информацию см. в разделе Ресурсы).



В начало


Будущее журналируемых файловых систем

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

Reiser4

После успешного внедрения ReiserFS в ядро и применения во многих дистрибутивах Linux компания Namesys (которая стоит за ReiserFS) начала работу над новой журналируемой файловой системой, Reiser4, которая была создана полностью с нуля и включает в себя множество передовых возможностей.

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

После вынесения обвинения владельцу Namesys и одновременно автору ReiserFS вся коммерческая деятельность вокруг Reiser4 была приостановлена.

Четвертая расширенная файловая система

Четвертая расширенная файловая система (ext4fs) - это дальнейшее развитие ext3fs. Ext4fs была задумана как замена ext3fs, имеющая с ней прямую и обратную совместимость, но включающая в себя множество улучшений (некоторые из которых нарушают эту совместимость). На практике можно монтировать раздел ext4 как ext3 и наоборот.

Во-первых, ext4fs - это 64-разрядная файловая система с поддержкой томов огромного размера (до 1 эксабайта). Она также может использовать экстенты, но в этом случае теряется совместимость с ext3fs. Аналогично XFS и Reiser4, в ext4fs размещение блоков на диске задерживается и происходит по необходимости (что уменьшает фрагментацию). Журнал также хранит контрольные суммы содержимого для большей надежности. Вместо B+- или B*-деревьев применяется специальная разновидность B-дерева, т.н. H-дерево, что позволяет поддиректориям иметь намного больший размер (в ext3 он ограничен 32Кб).

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

Еще одно интересное отличие ext4fs от ext3fs заключается в точности временной метки файлов. В ext3 размерность временной метки - одна секунда. Ext4fs смотрит в будущее: при непрекращающемся росте скоростей процессора и интерфейсов требуется более точное измерение. Поэтому в качестве размерности времени была взята одна наносекунда.

Хотя ext4fs включена в ядро Linux в версии 2.6.19, она уже может считаться стабильной. Эта система, разработка которой продолжается, является отправной точкой для создания журналируемой файловой системой будущего в Linux.



В начало


Двигаясь дальше

Журналируемые файловые системы обеспечивают надежность и защиту от повреждения данных при крахе системы или потере питания. Помимо этого, время восстановления в таких системах намного меньше, чем в традиционных файловых системах (например таких в которых применяется fsck). Разработка новых методов журналирования основывается как на прошлом опыте, идущем от JFS и XFS, так и на поиске новых алгоритмов и структур. Не совсем ясно, как будут развиваться журналируемые файловые системы в будущем, однако их полезность очевидна, и они уже стали новым стандартом файловых систем.



Ресурсы

Научиться

Получить продукты и технологии
  • Закажите SEK для Linux (EN) - набор из двух DVD-дисков с новейшими ознакомительными версиями ПО от IBM: DB2®, Lotus®, Rational®, Tivoli® и WebSphere®.

  • Разработайте ваш следующий Linux-проект с помощью пробного ПО от IBM (EN).


Обсудить


Об авторе


M. Тим Джонс (M. Tim Jones) является архитектором встраиваимого программного обеспечения и автором работ: Программирование Приложений под GNU/Linux, Программирование AI-приложений и Использование BSD-сокетов в различных языках программирования. Он имеет опыт разработки процессоров для геостационарных космических летательных аппаратов, а также разработки архитектуры встраиваемых систем и сетевых протоколов. Сейчас Тим работает инженером-консультантом в корпорации Эмулекс (Emulex Corp.) в г.Лонгмонт, Колорадо.

Вышел ALT Linux 4.1

Новости - Linux General - Вышел ALT Linux 4.1

Компания ALT Linux выпустила дистрибутив Linux для офисного и домашнего применения - ALT Linux 4.1 Desktop под кодовым названием Thymus (Тимьян).

Система снабжена дружественной программой установки и приложением ALTerator � интуитивно понятным инструментом настройки и управления. Традиционной особенностью продуктов ALT Linux является высокая безопасность и надёжность в работе, а также поддержка широкого спектра новейшего оборудования, в том числе беспроводных сетей связи.

Основные компоненты:
  • Kernel: 2.6.25
  • Glibc: 2.5.1
  • Gcc: 4.1.2
  • Xorg: 7.4
  • KDE: 3.5.10 (в репозиториях есть 4.1.1)
  • GNOME: 2.22
  • XFCE: 4.4.2

>>> Подробности.

вторник, 7 октября 2008 г.

Вышла бэта-версия Picasa 3

Недавно вышла бэта-версия Picasa 3 для Linux. На мой взгляд прекрасная программа для просмотра, каталогизации и небольшого редактирования графических файлов. Вот ссылки для закачки.

Picasa 3 for Linux: Free download from Google:

* rpm, for Red Hat/Fedora/Suse/Mandriva i386 or x86_64:
http://dl.google.com/linux/rpm/testing/i386/picasa-3.0.5719-02.i386.rpm
* deb, for Debian/Ubuntu i386:
http://dl.google.com/linux/deb/pool/non-free/p/picasa/picasa_3.0.5719-02_i386.deb
* deb, for Debian/Ubuntu amd64:
http://dl.google.com/linux/deb/pool/non-free/p/picasa/picasa_3.0.5719-02_amd64.deb

All downloads are approximately 30 MB: Picasa software (13 MB), Wine (11 MB) and Gecko engine (6 MB).

четверг, 2 октября 2008 г.

Обзор GIMP 2.6.0

Огромное спасибо автору приведенного ниже обзора Александру Прокудину. Очень занимательно!!!

linuxgraphics.ru

Самые важные изменения

GEGL

В этой версии GIMP наконец начинает понемногу использовать GEGL — новый «движок» программы. В кавычки стоило бы поставить и слово «новый», поскольку работа над этим проектом началась еще в 2000 году. Но так уж вышло, что GEGL в GIMP появился только сейчас.

Говоря занудным техническим языком, GEGL — фреймворк для обработки изображений на основе графов. Проиллюстрировать это можно Компоновщиком из расширения MathMap:

Компоновщик в MathMap

К GEGL это расширение отношения не имеет, зато сразу видно, на что будет похожа обработка изображений: каждое изменение исходного слоя (группы слоев и т.д.) записывается в отдельный узел компоновки, а исходные данные физически не меняются. Причем изменения не ограничиваются цветокоррекцией, как в Photoshop: гауссово размывание, полярные координаты, разностные облака, генератор фракталов — параметры любого примененного фильтра можно будет в дальнейшем изменить.

Добавьте к этому работу в цветовом пространстве scRGB (через 32-разрядный линейный RGBA) и поддержку YCbCr, YUV и LAB. Добавьте к этому поддержку SVG и фильтров SVG... Добавьте к этому аналог записи макросов (скопировать все узлы между этим и этим и применить полученную цепочку обработки к вот этой картинке)... Уже интересно? Но в GIMP 2.6.0 всего это пока нет. О том, когда будет — чуть позже. А пока о том, на каком уровне сейчас интегрирован GEGL.

Во-первых, инструменты цветокоррекции по желанию пользователя могут использовать GEGL. По умолчанию это отключено, поскольку GEGL сейчас работает достаточно медленно.

Это в меню «Цвет»

Во-вторых, в новую версию добавлен экспериментальный инструмент GEGL, позволяющий производить над изображением/выделением те или иные операции и просматривать изменения прямо на холсте. Некоторые из операций в «чистом» GIMP отсутствуют:

По мере дальнейшей интеграции существующие расширения в комплекте поставки будут переписываться как операции GEGL.

Cairo

В этой версии GIMP начинает использовать Cairo для различных частей интерфейса — от незаметных, вроде миниатюр слоев, до весьма очевидных, вроде диалога кривых или панели навигации.

Диалог навигации до и после вмешательства каирских хирургов

В дальнейшем планируется перенести на Cairo все остальное — кривые, инструменты трансформации...

Инструменты

Кадрирование и выделение

Как вы помните, в версии 2.4 инструменты выделения и кадрирования претерпели существенные изменения. В новой версии программы работа над ними продолжена. Упрощено создание узких выделений: как только оно становится настолько маленьким, что активные зоны внутри не помещаются, эти зоны переносятся наружу.

Таким образом инструменты прямоугольного и эллиптического выделения (а также кадрирования) прекрасно справляются с задачами, для решения которых в том же Photoshop пришлось сделать два отдельных инструмента (Single Row Marquee и Single Column Marquee).

Многоугольное выделение

Инструмент свободного выделения теперь может создавать многоугольные выделения:

Они создаются очень просто: щелкаете курсором в одной точке, перетаскиваете его в другую точку, щелкаете еще раз, ну и так далее. Для создания обычного выделения от руки нужно нажать клавишу мыши (или прижать стилус планшета) и, не отпуская ее, перетащить. В одном выделении можно легко комбинировать многоугольные выделения и выделения от руки:

При создании многоугольного выделения клавиша Ctrl работает ограничителем перемещения с шагом в 15 градусов.

Трансформация

Еще одно новшество, которое упростит работу с многослойными изображениями вроде — полупрозрачность, позволяющая одновременно видеть исходный объект и получаемый вариант:

Текст

Размер текстового блока теперь можно изменить, перетаскивая его за активные зоны, уже знакомые по инструментам выделения.

Убедитесь, что у вас достаточно свежая (не меньше 1.20.1) версия Pango. Иначе пробелы перед словами будут оказываться в начале новой строки, а не в конце предыдущей, как это с сожалением проиллюстрировано выше :)

Цветокоррекция

Параметры применяемых инструментов цветокоррекции теперь автоматически запоминаются. При желании им даже можно дать имя.

Раскрывающийся список с сохраненными параметрами (предустановками) находится в верхней части диалога каждого инструмента цветокоррекции:

Параметры можно сохранять во внешний файл и передавать другим людям, которые смогут их импортировать, а также (что неудивительно) удалять их.

Кроме того, измененные значения яркости-контраста можно сразу отредактировать в диалоге уровней, а последние — в диалоге коррекции кривых. Вот как это выглядит.

Открываем диалог «Яркость-Контраст» и меняем значение:

Нажимаем кнопку «Изменить эти параметры как уровни» и получаем:

Еще немного меняем параметры, нажимаем кнопку «Изменить эти параметры как кривые» и получаем:

Кстати, обратите внимание на внешний вид кривой: вот он, результат кейрофикации — красивая сглаженная кривая.

Наконец, последнее изменение, не требующее снимка экрана — обесцвечивание стало полноправным инструментом цветокоррекции, и результат обработки можно просматривать прямо на холсте.

Кистевые инструменты

В кистевых инструментах улучшена реакция на динамику при использовании графических планшетов. Кроме того, выбор параметров теперь везде делается через вот такую удобную матрицу:

Динамика опционально может имитироваться и при обводке выделения.

Пользовательский интерфейс

В новой версии программы произошел ряд изменений, затронувших интерфейс. Некоторые из них ждали своего часа годами.

Наиболее заметное новшество — появление «пустого окна изображения». В это окно вы можете перетащить существующий файл. Здесь же, по всей видимости, со временем появится переключатель окон через вкладки (как в браузерах). Вы также заметите, что меню панели инструментов исчезло: его содержимое было раскидано по меню нового пустого окна. Теперь окна панели инструментов и все паркующихся панелей являются вспомогательными, т.е. всегда находятся вверху и могут быть временно спрятаны по нажатию клавиши Tab.

Разработчики склоняются к дальнейшему переходу к интерфейсу с использованием вкладок. Что, фактически, означает обоюдное сближение интерфейсов GIMP и Photoshop (CS4).

Некоторые изменения коснулись и паркующихся панелей. Если вы случайно закрыли нужную панель, ее можно вернуть, выбрав соответствующий пункт во вложенном меню «Окна → Недавние панели». Кроме того, вы теперь можете заблокировать положение вкладки панели, чтобы случайно не перетащить ее куда не надо (что порой случается при использовании графического планшета).

Новое меню «Окно» заменило собой меню «Диалоги» и теперь дополнительно перечисляет все открытые изображения. При наведении курсора на любое из них всплывает увеличенная миниатюра

Еще одно новшество сделает счастливыми практически всех: теперь изображение можно прокручивать за его пределами. Оно будет прокручиваться до тех пор, пока угол изображения не достигнет центральной точки окна. Это означает, что, к примеру, рисовать кистью по маске на краях стало гораздо удобнее:

Расширения

Изменения в этой части не очень существенные, их можно перечислить тезисно:

  • разные расширения могут применяться к разным слоям одновременно (гип-гип-ура распараллеливанию задач);
  • более широкий угол завихрения в расширении «Вихрь»;
  • 22 новых вариации в расширении «Пламя»;

Поддержка форматов файлов

  • загрузчик файлов PSD переписан заново и поддерживает больше возможностей этого формата (например, читает связанные ICC-профили)
  • открываются 16-разрядные файлы DICOM (поддержка третьей версии формата пока отсутствует).

Установка

В связи с постепенным переходом на GEGL необходимы свежие версии GEGL и babl. О Pango все уже сказано выше.

Что дальше

В рамках цикла разработки версии 2.8 планируется сделать следующее:

  • переписать проекцию (все, что вы видите, глядя на стопку слоев сверху) на GEGL, что должно автоматически повлечь за собой ускорение работы GEGL;
  • включить уже готовый код набора текста прямо на холсте, разработанный в рамках программы Google Summer of Code;
  • включить уже готовый код категоризации ресурсов (градиентов, кистей и текстур), разработанный в рамках программы Google Summer of Code;
  • включить уже готовые улучшения в программировании расширений на Python, подготовленные в рамках программы Google Summer of Code;
  • по возможности объединить все инструменты трансформации в один интерактивный инструмент, сразу с использованием Cairo.

В свете расползающихся слухов следует большими жирными буквами написать следующее:

В GIMP 2.8 НЕ БУДЕТ ПОЛНОЙ ИНТЕГРАЦИИ С GEGL И СКОРЕЕ ВСЕГО НЕ БУДЕТ ПОЛНОЦЕННОЙ ПОДДЕРЖКИ CMYK/LAB И 16 РАЗРЯДОВ НА ЦВЕТОВОЙ КАНАЛ.

Теперь по пунктам:

  1. Полная интеграция GEGL означает окончательный переход на новый формат, который пока еще только разрабатывается (см. OpenRaster и вокруг).
  2. Полноценная поддержка CMYK не интересна никому из нынешних активных разработчиков, в отличие от, скажем, HSB, YUV и LAB (лидер GEGL раньше занимался видеоинсталляциями). Если в команде появится человек, имеющий соответствующую квалификацию, дело пойдет куда как быстрее.
  3. Высокая разрядность разработчикам GIMP интересна. Но дом начинают строить с фундамента, а фундамент этот (GEGL) пока еще не на месте.
  4. Активных разработчиков GIMP сейчас фактически трое. ТРОЕ. Плюс несколько подключающихся сейчас к разработке новичков (привет, Алексия и Ауримас :)). Прежде чем вы начнете высказывать претензии или учить их жизни, подумайте об этом как следует.

И небольшой анонс: в ближайшее время вас ждет новая версия UFRaw с упрощенным преобразованием в ч/б (по яркости, светимости, значению или через микшер каналов), упрощенным сохранением проявляемых цифровых негативов, автокоррекцией геометрических и прочих искажений (интеграция с LensFun).

Тизер


Обзор подготовил Александр Прокудин
Лицензия: GNU FDL без инвариантных разделов (дорогой progimp.ru, не забудь указать ее)


Опубликовал prokoudine 02/10/2008 17:48:46

среда, 1 октября 2008 г.

Преобразование файлов в другие форматы в Linux

Linuxoid - все что знаю о Туксе » Архив блога » Преобразование файлов в другие форматы в Linux

28.09.2008 от grinder

Нашел на http://www.computerra.ru/softerra/freeos/22068/print.html старую статью почему бы не выложить у себя.

Очень часто при работе с файлами приходится преобразовывать их в другой формат. Особенно этот вопрос актуален для пользователей Linux, потому что в этой системе еще со времен первых Unix'ов сложились свои форматы файлов и при переносе их на компьютеры работающие под управлением Windows возникает проблема работы с файлами этих форматов, которая решается как правилом путем поиска соответствующих программ просмотра. Как вы понимаете, данный вариант не всегда приемлем, так как нужную программу еще надо найти, и еще не будешь же таскать все эти программы с собой и устанавливать на каждом компьютере. Самый простой вариант решения этой проблемы это преобразовать файлы к требуемому формату, который может быть прочитан на нужном компьютере.

В данной статье будут рассмотрены варианты преобразования только текстовых файлов из одного формата в другой, не будет затронуты вопросы преобразования графических, звуковых файлов и варианты преобразования с одного языка программирования на другой. Хочу еще предупредить, что все эти программы консольные. Что, отстой! Кричат некоторые пользователи. Да, я в принципе согласен, недостатки на лицо. Необходимо помнить не только название программы (впрочем, не совсем так, автодополнение в bash еще ни кто не отменял), но и различные параметры и опции. Но, есть и положительные стороны. К ним относится малый размер программ, малое время загрузки в оперативную память, отсюда и меньшее время выполнения, отсюда и меньшие требования к системным ресурсам (не у всех же Атлоны и четвертые пеньки).

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

Итак, по порядку. С первой проблемой с которой я столкнулся была необходимость перенести документ в формате PostScript на компьютер работающий под Windows с этого пожалуй и начнем. Итак, первая программа вызывается gs. Просто набрав данную команду с названием файла с расширением ps вы можете просто просмотреть указанный файл, а добавив опцию sDEVICE=<devname> можно преобразовать в другой формат или подготовить файл для выдачи на принтер определенной марки, а с помощью опции sOutputFile= , как вы поняли можно указать имя выходного файла. Вот так можно конвертировать файл PostScript в рисунок с расширением bmp. gs -sDEVICE=bmp16m -sOutputFile=test.bmp test.ps . Для преобразования из ps в pdf формат существуют программы специально для этого предназначенные. Они так и вызываются ps2pdf. Причем существуют несколько программ. ps2pdf – по умолчанию преобразует в формат pdf 1.3 который можно сменить используя опцию -dCompatibility=1.x. Если сразу захотите задать формат, то можно воспользоваться программами ps2pdf12 или ps2pdf13. Формат вызова программы такой ps2pdf13 input.ps output.pdf, если вместо имени файла используется тире «-» то в качестве входного (выходного) файла используется стандартный ввод (вывод). Кроме этого существует множество аналогичных программ для конвертирования в другие форматы, например ps2ascii.

Следующий формат с которым часто придется сталкиваться в Linux это SGML. Для того чтобы вы могли его преобразовать необходимо установить пакет linuxdoc. Так как сам формат наиболее близок к HTML, то к нему и будем по началу преобразовывать. Формат вызова команды такой:

$ linuxdoc –bakend=format(html, rtf, text …) –papersize=size –language=ru file_name.sgml

Я думаю, что приведенные параметры очевидны. Чтобы упростить жизнь юзеру и здесь есть отдельные команды для преобразования к тому или иному формату. Например, следующая команда конвертирует из SGML в HTML.

sgml2html file_name.sgml

А с помощью опции -I – в создаваемые файлы, можно добавить ссылку на файлы изображения (next, prev, toc), которые копируются с каталога /usr/share/linuxdoc-tools/icons/ в текущий. А чтобы преобразовать в формат pdf выполните следующую команду:
sgml2latex –output=pdf file_name.sgml

причем в образованном файле будут работать все имеющиеся гиперссылки. Следующие программы предназначены для конвертирования документов набранных в формате MS Word (.doc) в другие форматы. Они будут доступны если у вас установлен пакет wv. После установки пакета будут доступны несколько программ предназначенных для преобразования в разные форматы. Набрав в командной строке wvVersion file_name.doc можно узнать к какой версии Word принадлежит документ. Команда
wv Html –charset=koi8-r test.doc test.html
, как вы уже поняли, перегоняет документ Word в html-файл и устанавливает для него кодировку koi8-r. Причем программа вполне корректно переносит таблицы и в некоторых файлах генерирует не так уж много мусора. Добавив опцию –password=password, можно преобразовывать файлы закрытые паролем.

Работу с другими форматами я думаю, разберете сами. Следующая программа немного выпадает из общего плана, но полезность ее очевидна. Это программа iconv, входящая в пакет glibs любого дистрибутива, назначение которой перекодирования текстовых файлов с одной кодировки в другую. Формат вызова программы такой

iconv -f исходная_кодировка -t необходимая_кодировка old_file < new_file , где возможные варианты кодировок можно узнать запустив программу с опцией –list. Например самая популярная задача по перекодировке выглядит так
iconv -f WINDOWS-1251 -t KOI8R cp1251.txt > koi8r.txt

Cледующая программа antiword предназначена для преобразования документов в формате Word 6, 7, 97 и 2000 в текстовый или файл формата PostScript. После установки программы (make all, make install) создайте в домашнем каталоге подкаталог .antiword (именно с точкой) и перенесите в него все файлы из каталога Resources который находится в каталоге в котором вы распаковали исходные тексты программы. Теперь с помощью вызова

antiword -t -m cp1251.txt test.doc

можно вывести на терминал содержимое файла test.doc, причем программа вполне корректно (как это вообще возможно на терминале) отображает как содержимое самого файла со всеми элементами форматирования так и таблицы. Если файл находится в кодировке koi8-r то опцией -m необходимо подключить файл koi8-r.txt. Если есть необходимость конвертировать Word'овский файл в формат PostScript воспользуйтесь следующей командой

antiword -p a4 -m koi8-r.txt text.doc > 1.ps

т.е. добавили размер страницы (доступны еще форматы letter и legal). Кстати при использовании данной программы вам нечего боятся макровирусов они попросту не будут работать.

И напоследок вкратце упомяну об очень мощной утилите a2ps с помощью которой можно подготовить документ к выводу на печать в формате PostScript или в файл. Опций у программы большое количество о некоторых я расскажу. Представьте себе такую ситуацию вы как прогрессивный человек написали себе шпору на экзамен (заметки на лекцию) на компьютере, но естественно в формате А4 нести ее с собой я бы сказал не совсем удобно. Для этого надо уменьшить шрифт и разбить на маленькие части. Для этого выполняем такую команду
a2ps –columns=4 –font-size=10 -j -encoding=koi8 shpora.txt -o shpora.ps
что мы сделали, установили количество колонок текста равным четырем, размер шрифта – 10, параметр -j означает рамку вокруг текста, указали необходимую кодировку, исходный файл и с помощью флага выходной, результат посмотрите на рисунке. Опций как я уже говорил много и с помощью них с исходным файлом можно проделать практически все чего душа пожелает.

Вот мы кратко рассмотрели некоторые программы для работы с текстовыми файлами в Linux. Сразу скажу я не старался рассказать обо всех подобных программах по причине их большого разнообразия, а только о наиболее часто мной используемых. Более подробную информацию можно узнать запустив соответствующий man или команду с опцией –help, а лучше оба варианта, я заметил, что информация, выводимая при этом, иногда может отличаться. Успехов.