Новые возможности dcraw



14 коммент.
Как уже отмечалось здесь, в Линукс достаточно приложений по обработке RAW-файлов. Этот пост посвящён более глубокому описанию dcraw - лучшей утилиты для конвертирования RAW-файлов. Её возможностей хватит и фотографам, и даже таким специфическим пользователям, как физики-оптики.

Предисловие
RAW-формат это оцифрованные данные прямо с матрицы фотоприёмника, ещё не прошедшие через многочисленные (и часто нежелательные) фильтры улучшения изображений. Эта чрезвычайно полезная возможность будет оценена по достоинству продвинутыми фотографами и другими специалистами: можно компенсировать пересветы или недоэкспонированные участки фотографии, менять баланс белого и цветовую температуру. Более того, RAW-файл содержит ещё не интерполированные данные - то есть просто полутоновую матрицу отсчётов на каждый пиксель - и вы можете использовать эти данные для точных экспериментов. Например, можно записать на матрицу фотоприёмника цифровую голограмму и потом математически восстановить её.


Возможности dcraw
Описание соответствует dcraw версии 8.64 (последняя версия утилиты тут) и выше (пост будет периодически обновляться), в значительной степени основанное на руководстве (русская версия и оригинал на английском). Скажу сразу: программа консольная и не предназначена для интерактивного использования, для этого есть несколько графических обёрток, например UFRaw. Параметры программы сгруппированы по типу операций, для наглядности будут приведены рисунки.

Вызов программы стандартный:
dcraw [ПАРАМЕТРЫ]... [ИМЯ_ФАЙЛА]
Если параметров несколько, они разделяются пробелами.


Диагностика и вспомогательные операции
Параметр
Описание

-v
Заставляет программу выводить больше диагностических сообщений в процессе конвертирования. По умолчанию программа будет "молча" конвертировать файлы (и это правильно, и это unix way).

Пример:
dcraw -4 -v img_1981.cr2
Loading Canon EOS 400D DIGITAL image from img_1981.cr2 ...
Scaling with black 256, multipliers 2.630775 1.000000 1.249379 1.000000
AHD interpolation...
Converting to sRGB colorspace...
Writing data to img_1981.ppm ...

-e

Позволяет выделить из RAW-файла миниатюру для предварительного просмотра. Полученное изображение будет иметь прибавку к имени вида .thumb.jpg

Пример:
dcraw -4 -v -e img_1981.cr2
Writing data to img_1981.thumb.jpg ...


-i
Получить информацию о RAW-файле без конвертирования.

-i -v
Получить не только информацию о файле, но и показать метаданные, записанные при съёмке.

Пример:
dcraw -v -i img_1981.cr2

Filename: img_1981.cr2
Timestamp: Sun Mar 18 22:27:38 2007
Camera: Canon EOS 400D DIGITAL
ISO speed: 100
Shutter: 30.0 sec
Aperture: f/5.6
Focal length: 55.0 mm
Secondary pixels: yes
Embedded ICC profile: no
Decodable with dcraw: yes
Thumb size: 1936 x 1288
Full size: 3948 x 2622
Image size: 3906 x 2602
Output size: 3906 x 2602
Raw colors: 3
Filter pattern: RGGBRGGBRGGBRGGB
Daylight multipliers: 2.423860 0.921348 1.151113
Camera multipliers: 1813.000000 1133.000000 2229.000000 1133.000000

-z
Изменить время доступа и модификации на AVI, JPG или RAW файлах на время, когда фотографии были сняты. Предполагается, что формат времени установлен по Гринвичу (UTC).
Пример:
До применения команды

$ ls -lh | grep cr2
-rwxr-xr-x 1 penta4 penta4 8,0M 2007-03-18 22:28 img_1981.cr2
После применения команды$ dcraw -z img_1981.cr2 $ ls -lh | grep cr2-rwxr-xr-x 1 penta4 penta4 8,0M 2007-03-19 01:27 img_1981.cr2


Шумоподавление
Параметр

Описание

-n
Установить порог для вейвлет-метода подавления шумов. Лучшие результаты при n=100...1000.
С версии 8.60 до 8.63 в dcraw использовался метод шумоподавления Daubechies 9/7 из стандарта сжатия изображений JPEG2000. С версии 8.64 используется алгоритм "A trous" с вейвлетом типа "Мексиканская шляпа" (Mexican Hat) с параметрами (-0.25 0.5 -.025). Из частных сообщений с автором программы, Дэйвом Коффином.


-K темновой_кадр.pgm
Вычитание темнового кадра из изображения для уменьшения влияния шумов фотоприёмника. Чтобы получить такой кадр, следует сделать снимок в RAW при закрытой крышке объектива и дать команду dcraw -D -4 -j -t 0 имятемногокадра



Дополнительные параметры изображения
Параметр

Описание

-s [0-99]
Выбрать другое изображение из RAW-файла, если их там несколько. Число указывает номер изображения внутри файла. Например, камера Fuji Super CCD SR генерирует второе недоэкспонированное изображение для того, чтобы показать тонкие детали в светлых областях.

-j
Показывает изображение, повёрнутое на 45 градусов для камер Fuji Super CCD. Относится к камерам Fuji Super CCD и другим с пикселями не квадратной формы. Опция гарантирует, что каждый выходной пиксель соответствует одному RAW-пикселю. Если к вашей камере это не относится, опция будет проигнорирована.

-t [0-7]
Повернуть изображение (по умолчанию поворота нет, t 0). Поворот на 90, 180 и 270 градусов по часовой стрелке это t 1 2 и 3 соответственно; против часовой стрелки t 4 5 и 6 на те же углы.


Работа с цветом
Параметр

Описание

-b
Позволяет настроить яркость изображения. По умолчанию запись в 8-битный формат идёт в соответствии с телевизионным стандартом ITU-R BT.709. Это означает, в частности, что цветовая температура устанавливается как 6702К. Если результат слишком светлый или тёмный, следует воспользоваться ключом -b для корректировки. Как выяснилось из частного общения с автором программы, указание параметра приводит к простому умножению данных на значение параметра, до применения гамма-коррекции. По умолчанию -b 1.0


-a
Использовать автоматический баланс белого: по умолчанию это фиксированный баланс белого, основанный на фотографии белого листа бумаги в солнечном свете.

-A отступ_слева отступ_сверху ширина высота
Рассчитывает баланс белого, используя прямоугольную область изображения. Вначале выполните dcraw -j -t 0 и выберите область с нейтрально-серым цветом.

-C множ_увеличения_красного множ_увеличения_синего
Эта опция позволяет компенсировать хроматические аберрации изображения, увеличивая красный и синий цветовые слои в заданное множителями количество раз (обычно от 0.999 до 1.001) для устранения хроматической аберрации.

-w
Использовать баланс белого, определённый настройками камеры. Если сведений о балансе белого нет, будет использовано умолчание (солнечный свет).


-r
множR множG множB множG
Коэффициенты цветового масштабирования, colour scaling. Они применяются к изображению потому, что на матрице камеры стоят светофильтры и специальный IR-блокирующий фильтр. Чтобы вернуть правильное соотношение интенсивностей цветовых каналов, электроника камеры рассчитывает цветовые множители для данного снимка - это четыре числа, соответствующие пикселям под светофильтрами R G B G. Важно отметить, что эти множители от кадра к кадру меняются. Для зелёного коэффициентов два, и чаще всего они совпадают - но не всегда. Очень важно для получения цветных линейных изображений из RAW-файла.


-k
число
Установить уровень чёрного - это значит, что все отсчёты по уровню ниже, чем число, будут объявлены нулём, то есть чёрным (потому что ниже этого уровня, как правило, шумы). Эта опция очень важна для профессионального применения: дело в том, что установив параметр "-k 0" можно получить реальный уровень шумов фотокамеры. По умолчанию зависит от уровня постоянного шума камеры, который умеет свойство увеличиваться с возрастанием экспозиции.


-H [0-9]

Обработка светлых областей.
-H 0 - срезать пересвеченные области до сплошного белого цвета, режим по умолчанию.
-H 1 - не срезать пересвеченные пиксели, отображать оттенками розового (позволяет сохранить детали изображения).
-H 2-9 - восстанавливать пересветы. Меньшие цифры лучше подходят для белых областей, высокие - для цветных областей.
-H 5
приводится Дэйвом Коффином как компромиссный вариант.
Пример на рисунке ниже, -H 0 (слева) -H 1, -H 2, -H 5 -H 9 (справа)


-o [0-5]
Цветовое пространство выходного изображения:
0 Собственное цветовое пространство камеры;
1 sRGB D65 (по умолчанию);
2 Adobe RGB (1998) D65;
3 Wide Gamut RGB D65;
4 Kodak ProPhoto RGB D65;
5 XYZ;

Пример на рисунке ниже, от -o 0 (слева) до -о 5 (справа)



-p camera.icm [ -o output.icm ]
Возможность использования специфических цветовых профилей. По умолчанию используется sRGB.


-p embed

Использование цветового профиля, указанного в RAW-файле.


Интерполяция баеровского массива
Параметр
Описание

-q [0-3]
Управление качеством интерполяции, применение методов:
-q 0 билинейная интерполяция (высокая скорость, но плохое качество).
При визуальном наблюдении заметны артефакты на контрастных участках.
-q 1 алгоритм по Переменному Числу Градиентов (Variable Number of Gradients, VNG)
Артефактов, по сравнению с билинейной интерполяцией, заметно меньше.

-q 2 алгоритм по Группировка Пикселей по Шаблону (Patterned Pixel Grouping, PPG)
-q 3 (по умолчанию) алгоритм использования Адаптивной Гомогенно-Ориентированной интерполяции (Adaptive Homogeneity-Directed, AHD)
Артефакты визуально не заметны, мелкие детали отрисованы хорошо.

-d
Документальный режим - без цветов, без интерполяции. На выходе - полутоновое изображение, к которому применены коэффициенты цветового масштабирования и срезание постоянной составляющей шума. Изображение не интерполировано, однако разогнано на весь диапазон значений 8 или 16 бит.

-D

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

Пример: отличие -d (слева) и -D (справа)



При этом в консоли даётся пояснение - никаких множителей цветов не применяется:
$ dcraw -v -d IMG_0065.CR2
Loading Canon EOS 400D DIGITAL image from IMG_0065.CR2 ...
Scaling with black 256, multipliers 2.630775 1.000000 1.249379 1.000000
Building histograms...
Writing data to IMG_0065.pgm ...

$ dcraw -v -D IMG_0065.CR2
Loading Canon EOS 400D DIGITAL image from IMG_0065.CR2 ...
Building histograms...
Writing data to IMG_0065.pgm ...

-h
Параметр позволяет получить изображение половинного размера очень быстро (вдвое быстрее, чем -q 0)
Пример: изображение по умолчанию (слева) и с ключом -h (справа)



-f
Интерполировать баеровский массив RGGB как четыре цвета.Эта опция полезна, когда выходное изображение содержит артефакты при интерполяции 2х2 как VNG алгоритмом, так и AHD.


Запись полученных изображений
Параметр
Описание

-4
Запись в 16-битный формат PPM с линейной гаммой. По умолчанию пишется в 8-битный формат с гаммой 0.45

-T
Запись в формат TIFF вместо PPM.

-c
Выдача результата в стандартных выход (в консоль) вместо записи в файл.

Заключение
Этот замечательный конвертор даёт очень много интересных возможностей для обработки изображений с фотоприёмников. Важно, что dcraw, в отличие от разного рода проприетарных поделий, гарантирует, что на выходе будет ровно то, что вы ожидаете, а не то, чем вводят в заблуждение изготовители цифровых камер.
Более того, у dcraw есть просто уникальные возможности по вытаскиванию чистых RAW-снимков - то есть буквально того, что видела матрица. Это критично для научных приложений: ни о каком применении гаммы, а тем более всяких повышающих резкость фильтров, не может быть и речи.
Таким образом, в наших руках, благодаря Дейву Коффину, есть замечательный, открытый и свободный конвертор, позволяющий использовать возможности цифровых камер на полную мощность.
Читать далее

Тонкости эмулятора QEMU и хитрости ускорителя kqemu



4 коммент.
Некоторое время назад я уже писал о найденных финтах QEMU - но со времён версии 0.7.2 эти финты несколько "заржавели", и к ним добавились новые. Так, в версиях QEMU 0.8 и далее есть поддержка USB и многопроцессорности, а ещё добавилось возможностей у kqemu. Об этом я расскажу ниже в посте.

Ускоритель kqemu
У него прибавилось возможностей, которые позволяют ещё более ускорить работу эмулируемой ОС. Основная изюминка нового kqemu - возможность полной виртуализации: не только пользовательского кода ОС, но и кода ядра. Это существенно ускоряет дисковые операции и отрисовку интерфейса.

Полная виртуализация
Для этого нужно добавить ключ -kernel-kqemu в вызов эмулятора. Сие существенно ускоряет эмуляцию некоторых ОС. Фабрис Беллард для простых смертных в общих чертах объясняет тут, что ускорение от этого ключа будет для гостевых ОС на базе Linux 2.4.* максимальным, меньше для Linux 2.6.*, а так же для Зла2000 и ЗлаХП (но это нельзя использовать при инсталляции).

Здесь углублённая техническая документация по ускорителю kqemu - так как я мало что из неё понял (ибо не программист), просто дам ссылку.

Поэтому при вызове эмулятора:

'-no-kqemu' пишем, если эмулируем экзотические ОС (типа ReactOS, Haiku, MenuetOS и тому подобное). Это позволит нормально запуститься гостевой ОС и работать устойчиво. Но это существенно снижает скорость работы гостевой ОС и повышает нагрузку на вентилятор процессора :-)

'-kernel-kqemu'
- пишем, чтобы включить полную виртуализацию для Linux 2.4, Linux 2.6, Зла2000 и ЗлаХП. Это приводит к заметному ускорению эмуляции (1.5-2 раза) гостевых ОС без потери точности эмуляции. При этом, если запросить у эмулятора (CTRL+ALT+ цифра 2) info kqemu, он должен написать kqemu support: enabled for user and kernel code

- если не писать ничего, то только пользовательский код выполняется на процессоре хост-системы, а код ядра динамически транслируется. При этом (CTRL+ALT+ цифра 2) info kqemu будет писать kqemu support: enabled for user code

Поддержка полной виртуализации есть для 32-разрядных систем - для 64-разрядных только в экспериментальной стадии. В случае Зла2000/Хп нельзя использовать полную виртуализацию при установке!

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

Распараллеливание эмуляции
Для этого существует ключ '-smp n', где n - число процессоров (по умолчанию 1). Странно, но у меня при тестировании это привело не к ускорению, а к замедлению эмуляции: тот же Кноппикс опознавал систему как двухпроцессорную, но при этом работал медленнее, чем при однопроцессорном режиме.

Заключение
Это, конечно же, не все возможности QEMU и kqemu - в этом посте упор делается на описание возможностей kqemu по части полной виртуализации и ускорения тем самым эмулируемых ОС. При этом использовалась информация отсюда хотя и на английском.
Читать далее

Обновление dcraw в Дебиане



20 коммент.
В дистрибутиве есть dcraw, но старый. В backports новой версии нет, из Etch ставить - просит снести и обновить несколько системных пакетов. Ниже - маленькая заметка о сборке dcraw. Не debian way, но что поделать....

Против Истинного Пути Дебиан
При попытке установить новую версию из пакетов получил от APT такое вот предложение:
# apt-get install dcraw
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Будут установлены следующие дополнительные пакеты:
libc6 libc6-dev locales tzdata
Настойчиво рекомендуемые пакеты:
gphoto2 glibc-doc manpages-dev
Пакеты, которые будут УДАЛЕНЫ:
base-config initrd-tools kernel-image-2.6.8-2-386
НОВЫЕ пакеты, которые будут установлены:
tzdata
Пакеты, которые будут обновлены:
dcraw libc6 libc6-dev locales
обновлено 4, установлено 1 новых пакетов, для удаления отмечено 3 пакетов, и 588 пакетов не обновлено.
Необходимо скачать 11,9MБ архивов.
После распаковки объем занятого дискового пространства уменьшится на 41,1MB.
Хотите продолжить? [Д/н] n
Как говорил почтальон Печкин: "и не надо меня из фоторужья щёлкать: я, может, только жить начинаю - на пенсию перехожу!" :-)
Поэтому скачал dcraw.c с сайта Дэйва Коффина и попытался собрать. На сайте есть несколько рекомендаций относительно сборки - для не особо искушённых. При попытке собрать так:
gcc -o dcraw -O4 dcraw.c -lm -ljpeg -llcms
посыпалась ругань вида:
dcraw.c:45:21: jpeglib.h: No such file or directory
dcraw.c:48:18: lcms.h: No such file or directory
dcraw.c:1920: error: syntax error before "fill_input_buffer"
dcraw.c:1920: error: syntax error before "cinfo"
dcraw.c: In function `fill_input_buffer':
dcraw.c:1927: error: `cinfo' undeclared (first use in this function)
dcraw.c:1927: error: (Each undeclared identifier is reported only once
dcraw.c:1927: error: for each function it appears in.)
dcraw.c:1929: error: `TRUE' undeclared (first use in this function)
dcraw.c: In function `kodak_jpeg_load_raw':
dcraw.c:1934: error: storage size of `cinfo' isn't known
dcraw.c:1935: error: storage size of `jerr' isn't known
dcraw.c:1936: error: `JSAMPARRAY' undeclared (first use in this function)
dcraw.c:1936: error: syntax error before "buf"
dcraw.c:1937: error: `pixel' undeclared (first use in this function)
dcraw.c:1937: error: subscripted value is neither array nor pointer
dcraw.c:1944: error: `TRUE' undeclared (first use in this function)
dcraw.c:1953: error: `buf' undeclared (first use in this function)
dcraw.c:1954: error: `j_common_ptr' undeclared (first use in this function)
dcraw.c:1954: error: `JPOOL_IMAGE' undeclared (first use in this function)
dcraw.c:1959: error: syntax error before ')' token
dcraw.c:1959: error: syntax error before ')' token
dcraw.c: In function `apply_profile':
dcraw.c:6746: error: `cmsHPROFILE' undeclared (first use in this function)
dcraw.c:6746: error: syntax error before "hInProfile"
dcraw.c:6747: error: `cmsHTRANSFORM' undeclared (first use in this function)
dcraw.c:6751: error: `LCMS_ERROR_SHOW' undeclared (first use in this function)
dcraw.c:6753: error: `hInProfile' undeclared (first use in this function)
dcraw.c:6765: error: `hOutProfile' undeclared (first use in this function)
dcraw.c:6782: error: `hTransform' undeclared (first use in this function)
dcraw.c:6782: error: `TYPE_RGBA_16' undeclared (first use in this function)
dcraw.c:6783: error: `INTENT_PERCEPTUAL' undeclared (first use in this function)

Сборка с параметрами
gcc -o dcraw -O4 dcraw.c -lm -DNO_JPEG -DNO_LCMS
прошла куда успешнее: всё собралось и в том же каталоге появился dcraw. После этого я скопировал его в /usr/bin от sudo и теперь в системе стоит последняя версия этого замечательного конвертора raw-формата.
Читать далее

Перевод документов из Word / OpenOffice.org в LaTeX



19 коммент.
Задача: чтобы перейти на прогрессивный ЛаТеХ с ЗлоВорда / другого форматированного текста, нужно перевести набранные там документы в формат LaTeX. Как это сделать в открытых системах?
Решение: есть несколько свободных утилит, позволяющих это делать.

Введение
Обычно теме перевода научных документов из неправильных форматов в ЛаТеХ уделяют не так много внимания - дескать, кто вкусил ЛаТеХа и пользуется им, у того нет неправильных документов. Но что делать, если вы решили переходить к использованию ЛаТеХа и не хочется снова перенабирать формулы? Есть несколько утилит для перевода документов в ЛаТеХ, в том числе и открытых. Ниже приводятся примеры конвертации документа с формулами и рисунками:



OpenOffice.org -> SXW -> writer2latex + Java = LaTeX
Вот такая хитрая цепочка, дающая очень приличный результат. Да, скрипты writer2latex встроены в ОпенОфис, начиная с версии 2.0.4, но работают они там пока как-то странно. Посему проще всего просто скачать эти утилиты, распаковать в домашнем каталоге (чтобы не править конфиг внутри скрипта) и дать права на исполнение.

Реализация
Для конвертации нужна Java (у меня работает с java 1.4), которую можно установить из репозитория. После этого открываем вордовый документ, сохраняем его в формат SXW в каталог writer2latex04. Теперь осталось зайти в этот каталог и набрать:
~/writer2latex04$ ./w2l имя_документа
На что вам ответят:
This is Writer2LaTeX, Version 0.4 (2005-07-01)

Starting conversion...
Done!
Всё, в каталоге появится такой же файл с расширением имя_документа.tex - его можно открыть, например, в Kile и скомпилировать.

Результат
Формулы набираются почти без нареканий, оформление передаётся прекрасно, и на рисунки вставляются ссылки. Проблему кодировок создатели этих скриптов обошли просто: кириллические символы набираются тэгами:
{\centering\selectlanguage{russian}\bfseries
{\textquotedbl}{\CYRC}{\cyri}{\cyrf}{\cyrr}{\cyro}{\cyrv}{\cyro}{\cyre}
{\cyrv}{\cyro}{\cyrs}{\cyrs}{\cyrt}{\cyra}{\cyrn}{\cyro}{\cyrv}{\cyrl}{\cyre}{\cyrn}{\cyri}{\cyre}
{\cyri}{\cyrz}{\cyro}{\cyrb}{\cyrr}{\cyra}{\cyrzh}{\cyre}{\cyrn}{\cyri}{\cyrishrt},
{\cyrz}{\cyra}{\cyrk}{\cyro}{\cyrd}{\cyri}{\cyrr}{\cyro}{\cyrv}{\cyra}{\cyrn}{\cyrn}{\cyrery}{\cyrh}
{\cyro}{\cyrp}{\cyrt}{\cyri}{\cyrch}{\cyre}{\cyrs}{\cyrk}{\cyri}{\cyrm}
{\cyrm}{\cyre}{\cyrt}{\cyro}{\cyrd}{\cyro}{\cyrm}{\textquotedbl}
\par}
Выглядит жутко, но при компиляции документа всё смотрится хорошо, что видно на рисунке:


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

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

Минусы:
- Кириллица в тэгах, для редактирования текста придётся переконвертировать в текст текущей кодировки.


OpenOffice.org -> HTML -> gnuhtml2latex = LaTeX
Вариант проще и с несколько иной "заточкой", предназначенный прежде всего для перевода в ЛаТеХ форматированного текста. Утилита gnuhtml2latex входит в дистрибутив Дебиан и представляет собой перловый скрипт, который переводит форматирование HTML в ЛаТеХ 2е.

Реализация
Для работы этого скрипта Java не нужна, но нужен Perl - который должен быть в системе любого линуксоида. Скрипт имеет мало параметров
$ gnuhtml2latex имя_документа
В текущем каталоге появится теховский файл. Но качество перевода математических документов, конечно, ниже среднего: текст есть, не в тэгах, но формулы не набраны (даже рисунками), часть текста может быть в другой кодировке, код ужасен и требует напильника крупного калибра. Всё-таки, справедливости ради, скрипт писался не для того: прежде всего, целью программы был перевод форматированных документов в ЛаТеХ. С текстами типа блоггерских записей он справляется прекрасно, но математика, конечно, выше его сил.

Результат
Говоря кратко, для перевода математических документов gnuhtml2latex просто непригоден. Только форматированный текст, и то после этого код нуждается в напильнике.


Вот что осталось от математики: одни обломки.

Плюсы:
+ Хорошее сохранение форматирования, пригоден для текстов несложного оформления.

Минусы:
- Математические тексты не переводит, часть текста может запросто оказаться в другой кодировке.
- Выдаваемый код довольно жуткий, потребуется крупный напильник.


AbiWord -> LaTeX
Чуть не забыли старика-Абиворда, и очень зря. В былые годы это был чуть ли не единственный текстовый процессор, способный читать и конвертировать много форматов, в том числе ЗлоВорд. AbiWord имеет свои конвертеры для многих форматов, в том числе для злоВорда, ЛаТеХа и ОпенОфиса (в версии 2.2.7, что в Сарже) формата SXW. Так что при совсем безысходных случаях можно и АбиВорд использовать.

Реализация
Это графическое приложение, так что как тыкать по кнопкам, думаю, объяснять не надо. Просто открываем документ (SXW, HTML или даже вордовый), ищем в перечне типов файлов latex и сохраняем.

Результат
Мягко говоря, результат страшноват, но лучше того, что сделал с математикой gnuhtml2latex. AbiWord даже набрал греческие символы, но длинные формулы всё-таки запорол: во всяком случае, индексы он набирает отступами и точным позиционированием текста.


Результат не впечатляет, и по коду после этого придётся елозить напильником.

Плюсы:
+ Графическое приложение, кнопочки.
+ Вменяемо сохраняет форматирование и греческие буквы.

Минусы:
- Код страшен и "в лоб" не скомпилируется, требует применения напильника, паяльника и мощной кувалды.


catdoc -> LaTeX
Эта небольшая, но очень полезная утилита способна читать и декодировать форматы ЗлоВорда, вплоть до ЗлоВорда2000. Очень маленькая, но позволяет сохранять файл ворда либо в простом тексте, либо (с небольшими добавками) формат ЛаТеХ.

Реализация
После установки приложения apt-get install catdoc можно выполнять команду конвертации:
catdoc -t PredDiplomPractice.doc > PredDiplomPracticeCAT.tex
Утилита имеет несколько параметров, но всё-таки больше пригодна не для перевода в ЛаТеХ документов (так как математика в этом случае почти в полном объёме уходит лесом), а для включения в скрипты и анализа документов.


Результат
Только текст с некоторыми примесями тэгов ЛаТеХа. Почти нет форматирования, не говоря уже о формулах и рисунках. Только в крайнем случае при очень простых текстах.



Результат - только текст с небольшими вкраплениями формул.

Плюсы:
+ Маленькая и быстрая утилита.

Минусы:
- Всё остальное: нет формул, картинок, сносок и прочего. Только слегка отформатированный текст.


wv -> LaTeX
Группа утилит, которые по мере своих скромных сил справляются с засильем документов ЗлоВорда: с 6 до 200 версии включительно. Входит в Дебиан, тянет за собой tetex-base и ImageMagick. Утилит много

wvAbw wvDVI wvPDF wvText
wvCleanLatex wvHtml wvPS wvVersion
wvConvert wvLatex wvRTF wvWare
wvDocBook wvMime wvSummary wvWml

Реализация
После установки apt-get install wv выполняем команду конвертации:
wvLatex PredDiplomPractice.doc PredDiplomPracticeWV.tex
Утилита имеет несколько параметров, но всё-таки больше пригодна не для перевода в ЛаТеХ документов (так как математика в этом случае почти
в полном объёме уходит лесом), а для включения в скрипты и анализа
документов.


Результат
Только текст с некоторыми примесями тэгов ЛаТеХа. Почти нет форматирования, не говоря уже о формулах и рисунках. Только в крайнем случае при очень простых текстах.



Результат - только текст с небольшими вкраплениями формул.

Плюсы:
+ Маленькая и быстрая утилита.

Минусы:
- Всё остальное: мало формул, картинок, сносок и прочего. Только слегка отформатированный текст.


Заключение
При том количестве свободных утилит, которые способны переводить документы из закрытого, проприетарного и патентованного формата ЗлоВорд в формат LaTeX, конвертация осуществима и практически без потерь форматирования, формул и денег.
Читать далее

Внешнее подключение внутреннего винчестера



18 коммент.
Задача: скопировать данные с IDE-шного винчестера в походных условиях без возможности подключить его к другому компьютеру.
Решение: это позволяют сделать внешние кейсы.

Будучи вдохновлён постом gluek, я вспомнил о том, что у меня на работе стоит машина с умершей материнской платой и 250Гб винчестером на Ext3, на котором много фильмов. Подключение к местным подоконным машинам исключено: там почему-то начинаются глюки от втыкания ещё одного винчестера - запретили трогать машины под угрозой физической расправы. Побродив по Царицынскому радиорынку в Москве, я нашёл безродное китайское устройство, позволяющее проводить такие операции. На коробке было написано: поддерживается Зло 98/2000/ХП и МакОС с 8 и дальше. Ни слова о Линукс, конечно, дядюшка Ляо не написал. Будет ли оно работать?

Чудеса поднебесной
За продукцию с гордыми названиями типа Gembirde просили тысячу рублей и не меньше, и я отправился искать что-нибудь подешевле. И нашёл:



Надпись на коробке обещала, что лежащее внутри устройство будет читать винчестеры легко и просто, без драйверов, с высокой скоростью и сдувающей со стула производительностью (в переводе с китайского это значит USB2.0). За это чудо китайской промышленности попросили всего 500 рублей - то, что нужно. Принеся его домой и распаковав, я нашёл внутри вот что:



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



Внутри - маленькая схемка, несколько конденсаторов, на соплях (впрочем, добротных) припаянные выводы к переключателям, на меня смотрит один светодиод, вывод питания и USB-штекер... Ну да, а чего я, спрашивается, хотел за 500 рублей? Их эстетических соображений, вид лицевой панели приводить не буду :-)

Чудо в работе
Ну да ладно, китайскому коню в пайку не смотрят. Вскрыл один из своих домашних компьютеров, подключил винчестер к этой вершине инженерно-китайского искусства. Включил тумблер в положение "ВКЛ" - винчестер загудел и, пошуршав головками, обозначил свою готовность к работе. Втыкание USB-шнура привело к перемене цвета светодиода с зелёного на красный и слышимому снижению оборотов двигателя харда, но он быстро вышел на обычный режим. Воткнул в USB-порт ноутбука и напряжённо начал вглядываться в выводы dmesg свежесамосборного ядра 2.6.20 - и через некоторое время увидел вот что:

usb 1-5: new high speed USB device using ehci_hcd and address 6
usb 1-5: configuration #1 chosen from 1 choice
scsi1 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 6
usb-storage: waiting for device to settle before scanning
scsi 1:0:0:0: Direct-Access WDC WD12 00JB-00EVA0 15.0 PQ: 0 ANSI: 0
SCSI device sda: 234441648 512-byte hdwr sectors (120034 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 234441648 512-byte hdwr sectors (120034 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
sda1 sda2
sd 1:0:0:0: Attached scsi disk sda
sd 1:0:0:0: Attached scsi generic sg0 type 0
usb-storage: device scan complete

Есть контакт! Это мой 120Гб винчестер на резервной машине: на первой партиции ReiserFS с ситемой, на второй - Ext3, там архивы. Пробую монтировать, всё нормально:

kjournald starting. Commit interval 5 seconds
EXT3 FS on sda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.

Посмотрел на данные, прочитал оттуда один файл, записал - всё прекрасно. Теперь буду качать фильмы с рабочего компьютера - благо есть чем. К слову о скорости: очень даже порядочная, 20-30Мб/сек. Так что перегнать коллекцию фильмов стало быстрее и проще.

Заключение
Ещё раз убедился в справедливости слов Грега Кроа-Хартмана: "Линукс из коробки поддерживает больше устройств, чем любая другая ОС, которая когда-либо разрабатывалась прежде". Такие же устройства есть для дисков SATA и ноутбучных винчестеров.
Читать далее