27 Ноябрь 2006

Принтеры в Linux, или Как настроить принтеры для печати в Linux с помощью CUPS

Задача: установка принтера в Linux и печать в Linux с помощью CUPS, выводить на печать документы через локально подключённые принтеры.

Решение: требуется установить систему печати CUPS и добавить принтер, на что требуется не больше минуты - после этого принтер в Linux будет печатать.


Няня, где же кружка... или Ставим CUPS
На самом деле CUPS - это Общая Система Печати в UNIX (Common Unix Printing System), так что с кружками и спиртным он ничего общего не имеет. Перед тем, как его ставить, хорошо бы посмотреть на поддержку ваших принтеров, начав отсюда. Если с поддержкой полный порядок, ставим следующие пакеты:

aptitude install cupsys gs-esp foomatic-bin foo2zjs
вместе со всеми зависимостями. Важно поставить не только сам CUPS, но и программы, которые он использует, имеющие не вполне очевидные названия.

Кстати, весьма распространённая ошибка: ставят только cupsys, или забывают foo2zjs, в результате чего при отправке задания на печать из принтера ничего не вылезает, а в логах вот такие записи:
I [23/Aug/2005:14:41:46 +0400] Adding end banner page "none" to job 7.
I [23/Aug/2005:14:41:46 +0400] Job 7 queued on 'HPDeskJet930C' by 'penta4'.
E [23/Aug/2005:14:41:46 +0400] Unable to convert file 0 to printable format for job 7!
I [23/Aug/2005:14:41:46 +0400] Hint: Do you have ESP Ghostscript installed?
I [23/Aug/2005:14:41:46 +0400] Hint: Try setting the LogLevel to "debug".

Это может отхватить мегабайт 10-20, смотря сколько и чего уже поставлено в системе. Всё поставится, распакуется и настроится - теперь осталось добавить принтер и начать печатать.

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

localhost:631

Примечание: поскольку не во всех браузерах (например, Kazehakase) ставится по умолчанию http-протокол, то лучше указать явно: http://localhost:631

Через некоторое время должна появиться страница с настройками, что-то вроде показанного на скриншоте:


Страница CUPS может долго загружаться, если указаны много других сетевых подключений или неправильно настроен DNS. Если машина локальная, и CUPS очень долго загружается, попробуйте на время вырубить сетевой интерфейс
ifconfig eth0 down
Например, как я подключал свой принтер HP DeskJet 930C в CUPS на Debian 3.1 Sarge. Тыкаем в Printers - если принтеров нет, CUPS так об этом и скажет, No Printers и всё. Добавляем новый - CUPS попросит рутовый пароль для подобных ответственных операций:

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

Далее, выбираем из списка поддерживаемых принтеров свой:

Ещё пара кликов - и всё готово, теперь принтер установлен и настроен. Если теперь зайти в Printers, он появится и доложит о своей готовности к печати (для чего его хорошо бы ещё и включить :-))

Соответствующими кнопками можно настроить доступные параметры печати: разрешение, размер бумаги и прочее. Всё, после этого принтер у вас появится в пользовательских приложениях. Например, в ОпенОфисе - и на него можно сразу чего-нибудь напечатать.


Печать из GiMP

Для этого потребуется установить ещё несколько пакетов и пожертвовать несколько мегабайт дискового пространства:

aptitude install cupsys-driver-gimpprint gimp-print

поставится и настроится. Теперь запускаем GiMP, открываем любое изображение и жмём Файл - Печать. После этого появится солидных размеров диалог, в котором можно настроить что угодно, относящееся к печати изображений.

Тут есть одни грабельки: по умолчанию gimp-print полагает, что ваш принтер сто пудов postscript-совместимый, что, конечно же, далеко не всегда так. Поэтому не спешите радостно печатать фотографии, иначе вместо них из принтера может поползти многостраничная греко-латинско-французская ересь вместо изображения. Для того, чтобы это не произошло, указываем gimp-print наш принтер явно:

То есть жмём "Настроить принтер", выбираем модель принтера, подтверждаем и сохраняем настройки. Теперь всё должно пойти нормально.

Ссылки
Признаться, когда я ещё на Debian Woody настраивал принтер в Linux, я удивлялся руководствам в сети на эту тему (да-да, я читал руководства, поставляющиеся с CUPS, но читать их стоит после того, как всё работает). Либо это решение уж слишком конкретной проблемы, либо попытка объять необъятное и в итоге мануал ни о чём. Есть общее руководство по установке принтеров, но оно жутко устарело, а это, хотя и свежее, но обзорное. Неплохое руководство здесь и у меня по настройке печати через Samba. Очень хороший перевод документации к CUPS тут, о настройке можно ещё почитать здесь.

читать далее...

а если копируете статью - поставьте ссылку на оригинал!

22 Ноябрь 2006

Сканер в Linux и настройка SANE: scanner in linux

Задача: установить сканер в Linux и настроить его.
Решение: для работы со сканнерами в Linux нужно установить SANE и связанные с ним утилиты.

Установка и настройка сканеров в Linux вообще и в Debian в особенности проблем не вызывает: если производитель не закрывает спецификаций на оборудование, то сканер должен поддерживаться и будет работать с помощью SANE - Scanner Access Now Easy.

Установка сканера
Всё очень и очень просто: для установки сканера в линукс нужно поставить подсистему SANE, которая расшифровывается как Scanner Access Now Easy, и, надо сказать, оправдывает своё название. Для того, чтобы сканировать в консоли (или скриптами), нам нужен только пакет sane, а если хочется ещё и в графических программах сканировать, то ставим ещё и xsane. Итак, ставим:
aptitude install sane xsane
Всё должно поставиться и настроиться - теперь осталось поискать сканер. Включаем его в сеть и в соответствующий порт, после чего от рута пишем:
# sane-find-scanner
Эта утилита должна выдать что-то вроде:
# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x04b8 [EPSON], product=0x011b [EPSON Scanner]) at libusb:001:089
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.
Полужирным выделено искомое - наш сканер опознан, нашёлся и готов радовать нас отличными изображениями. Теперь можете смело запускать из окна компакт-диски с огромным и глупым софтом (написанным кривыми индусокитайскими ручонками) под РедмондОС.

Сканировать может только root?
Есть такая неприятность: по умолчанию только root имеет доступ к сканеру, но это легко исправить. Для этого нужно внести пользователя, под которым хочется сканировать, в группу scanner. Делается это (с рутовыми привилегиями) так:
# gpasswd -a имя_пользователя scanner
заменяя имя_пользователя на логин пользователя. Для того, чтобы изменения вступили в силу, нужно перелогиниться. После этого в консольке (от имени того пользователя, которому хочется сканировать) для проверки пишем:
$ groups
При этом будет выдан список всех групп, в которых пользователь состоит. Например, вот что пишет эта утилита для меня
penta4 dialout cdrom floppy audio video plugdev scanner
Последняя строчка говорит о том, что пользователь penta4 имет право сканировать. Всё, теперь можно запускать GiMP или любую другую программу и сканировать там.

Махмуд, зажигай!

Теперь можно легко и просто сканировать в Гимп. Идём в меню Файл - Захватить - Xsane и видим простой интерфейс сканирования.
Я бы отметил чрезвычайно продуманный и, следовательно, простой интерфейс XSANE.

Можно так же запустить его отдельно, просто набрав в консольке (или добавив в меню своей графической оболочки) xsane. Полупрозрачным показано первое окно выбора устройства, а дальше появляется окно с параметрами сканирования.
Его следует прокомментировать потому, что в нём масса интересных и нужных настроек. Например, если вы вместо режима "Просмотр" выберете "Файл", то можно сканировать в файлы с постоянно меняющимися названиями: например, file0001.tif, file0002.tif и так далее. Можно прибавлять или отнимать по 1 или 2. И ничего при этом не надо делать руками.

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

Примечание:
Некоторые сканеры по умолчанию выставляют размер сканируемой области равной 0, в частности, Umax Astra 2200U. Поэтому
бывает полезно посмотреть доступные параметры сканирования их значения по умолчанию для конкретного сканера (например, --resolution, -x, -y, --gray, --lamp-off ) командой
scanimage --help -d DEVICE
где DEVICE - название сканера, или группы сканеров, поддерживаемых sane. Найти подходящий DEVICE (e.g. umax1220u) можно в разделе BACKENDS FOR SCANNERS руководства $ man sane.

Ссылки:
Про то, как дать возможность сканировать в Linux другим пользователям (кроме рута), сказано здесь и здесь.

читать далее...

а если копируете статью - поставьте ссылку на оригинал!

20 Ноябрь 2006

Открытые системы автоматизированного проектирования CAD в Linux: open CAD in Linux

Частые вопросы - есть ли системы CADв Linux? Есть, конечно, и многие из них бесплатные и с открытым кодом. Часть проектов брошены, большая часть - всё-таки развиваются и есть надежда на то, что они перерастут в большие проекты. Хотя создание САПР силами энтузиастов - это, конечно, подвиг, и до уровня Autocad и Solidworks им ещё далеко, но признаемся честно: а многим ли из спрашивающих нужны все возможности Autocad?

Очень часто на форумах спрашивают: есть ли аналог AutoCAD в Линукс? Причём спрашивают явно другое: есть ли версия AutoCAD или SolidWorks в Linux? Это два разных вопроса, между прочим. CAD-системы в Линукс есть, разумеется, и ниже приведён их обзор. Версии AutoCAD в Linux нет - это продукт закрытый и, между прочим, очень недешёвый.
Но хватит лирики: вот обзор открытых, свободных CAD-систем по состоянию на ноябрь 2006 года.

Открытые CAD-системы под Линукс Есть большой каталог ссылок на CAD-софт, но большая часть из него представляет собой кладбище погибших кораблей. Дело это сложное, неблагодарное и очень трудно конкурировать с раскрученными и навороченными CAD-системами. Ниже приводятся ссылка на живые проекты.

BlenderCAD http://www.blender.org/ --- скрипт на внутреннем скриптовом языке Blender для него же, который расширяет функциональные возможности Blender, так что он может быть использован как CAD-система. Больше можно узнать на release of BlenderCAD и форуме Blender discussion forum. Страница проекта BlenderCAD project page.

BRL-CAD http://brlcad.org/ --- В 1979 года U.S. Army Ballistic Research Laboratory (BRL) проспонсировала разработку компьютерных программ, которые могут помочь в моделировании и имитации задач инженерного анализа боевых систем и окружений. Начиналось всё с отображение и редактирование геометрических моделей. Теперь проект называется BRL-CAD.

Fandango http://www.soffernet.com/jaime/fandango/ --- Скриптовый движок описания 3D-объектов. Написан на C++ но до сих пор не обеспечивает полной работы с CAD-задачами, последняя версия 0.2.6, обновление в 2003 году. Недоделано, и, скорее всего, не будет.

freeCAD http://askoh.com/freecad/ --- Базовая система 3D CAD с продвинутыми возможностями по имитации движения (Motion Simulation). Больше для обучения, чем для реальной работы: изучение и освоение работы с геометрией, кинематикой, вибрацией и механизмами. Последнее обновление - 2005 год.

gCAD3D http://www.cadcam.co.at/freiter/gCAD3D.htm --- 3D - CAD/CAM - система. Довольно мощная, есть впечатляющие скриншоты, упор на архитектуру. Обновляется регулярно, проект живёт и понемногу развивается.

GnuCAD http://directory.fsf.org/gnuCAD.html --- попытка создания полнофункциональной CAD-системы с открытыми исходниками для Линукс систем. Текущая версия - 0.00, планируются скриптовые возможности и так далее.

IDOL http://balder.prohosting.com/~projidol/ --- IDOL создавался для целей обобщённого дизайна с использованием библиотек OpenGL. Проект так же хотел создать хорошую трёхмерную 3-D CAD систему для Линукс. Последнее обновление - декабрь 2000. Очень ранняя стадия разработки.

LeoCAD http://leocad.gerf.org/ --- CAD-система, использующая для создания объёмных фигур подход Лего (игрушечный конструктор). Использует OpenGL, позволяет создавать крупные и сложные модели. Последнее обновление 2004 год.

oCADis http://www.nocrew.org/software/ocadis/ --- Плоская двухмерная система CAD для Линукс. Написан под GTK1, последнее обновление 2003 год. Реализованы основные инструменты рисования: линии, круги, дуги и прочие. Поддерживает HPGL (экспорт), DXF (импорт и экспорт), PostScript вывод. Обновлялся в 2003 году.

OCTREE http://www.octree.de/ --- законченная система черчения, моделирования и визуализации, фокусируется на проектировании архитектурных решений. Подаёт признаки жизни.

QCad http://www.qcad.org/ --- достаточно мощная CAD-система, пригодная для несложного 2D-черчения. Есть недоработки и глюки, но пока что является, пожалуй, лучшей открытой и бесплатной CAD-системой в Линукс. Присутствует в Debian. Использует в качестве стандартного формата DXF и имеется поддержка HPGL. Интерфейс очень простой и понятный, чем-то похожий на сильно упрощённый AutoCAD. Пригоден для использования полными чайниками :-)

SagCAD http://sagcad.sourceforge.jp/ --- простая двухмерная CAD/CAM система с импортом\экспортом dxf, реализовано рисование полилиний, эллипсов, линий, сплайнов и проч. Бета-версия, последнее обновление - ноябрь 2003.

Sailcut CAD http://sailcut.sourceforge.net/ --- CAD-система заточенная под проектирование яхт, создание и визуализация чертежей парусных судов. Разрабатывается с 1978 года, проект активен и развивается.

ThanCAD http://thancad.sourceforge.net/ --- 2-D CAD-система, заточенная под инженерное черчение и способная внедрять в документ растровую графику. Написана на Python и использует библиотеку wxPython, должна быть платформонезависимой. Последнее обновление - ноябрь 2004 года, признаков жизнедеятельности нет.

VARKON http://www.tech.oru.se/cad/varkon/ --- полностью открытая CAD-система общего назначения для интерактивного моделирования, но вообще это больше язык описания и программирования. Весьма нетривиальный программный продукт, хотя присутствует в Debian. По утверждениям авторов, полностью поддерживается параметрическое описание 2D и 3D-объектов.

читать далее...

а если копируете статью - поставьте ссылку на оригинал!

16 Ноябрь 2006

Как проверить CD и DVD диск после записи

Задача: диск записан - нужно проверить правильность записанных данных.
Решение: для этого есть простые средства, типа dd и md5sum. Реализация в виде скриптов.
Для этого нам нужен md5sum и несколько утилит, входящих в любой уважающий себя дистрибутив. Есть несколько способов, приведу известные мне ниже (если кто предложит ещё - с удовольствием добавлю).

Подсчёт контрольной суммы файла
Для того, чтобы просто подсчитать MD5-сумму уже имеющегося iso-образа, пишем в консольке

md5sum my.iso
Через некоторое время вы увидите что-то вроде этого:
e941bb0ecac20a2043c9f8e69fbab63a my.iso
А можно и так:
cat my.iso | md5sum
Увидите то же самое:
e941bb0ecac20a2043c9f8e69fbab63a
Для скачиваемых из Интернета iso-образов обязательно рядом с ним лежит либо файл MD5SUMS, или такой же по имени файл, только с расширением md5 - не забывайте их скачивать. Так можно будет всегда проверить, правильно ли вы скачали образ диска.
Кстати говоря, кроме метода MD5 встречается SHA1 - его особенно любят федоровцы. Синтаксис тот же, что и у md5sum, только утилита называется соответственно sha1sum.

Товарищ jankkhvej даже провёл исследование по этому поводу и выяснил, что MD% гораздо быстрее SHA1:
Честно говоря, не знаю, что там сечас используют для шифрования банковских транзакций, но то, что дистфайлы во фре имеют две контрольные суммы, MD5 и SHA256 - факт. И потом я тут тесты сделал простые:

CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz (2992.72-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0xf49 Stepping = 9
AMD Features=0x20100000
AMD Features2=0x1
Logical CPUs per core: 2
real memory = 1073676288 (1023 MB)
avail memory = 1037393920 (989 MB)

solik@solik$ md5 -t
MD5 time trial. Digesting 100000 10000-byte blocks ... done
Digest = 766a2bb5d24bddae466c572bcabca3ee
Time = 4.021527 seconds
Speed = 248661776.079997 bytes/second
solik@solik$ sha256 -t
SHA256 time trial. Digesting 100000 10000-byte blocks ... done
Digest = 3f7daf2b36997b6eb269f63176e09fee8f6daa13202d87e020da63d262c6a4ca
Time = 15.460602 seconds
Speed = 64680535.240904 bytes/second

Разница 4 и 16 секунд, особенно если считать суммы образов iso. Но если подсчёт идёт непосредственно с DVD/CD - смысл одинаков, скорость всё равно ограничена железом.


Проверка правильности записи на CD и DVD диск
Есть несколько способов сделать это, и большинство из них основано на подсчёте контрольной md5-суммы исходного образа и записанного на диск. Их совпадение гарантирует правильность записи и то, что файлы на диске не повреждены.

Способ #1: утилита dd Эта утилита входит в состав любого дистрибутива и является чрезвычайно полезной во многих случаях - здесь мы тоже будем её использовать. Однако в случае с CD и DVD дисками есть свои тонкие моменты, которые необходимо учитывать, иначе вы получите неправильные результаты.

Для CD-дисков

Вставляем пропаленный диск, и, не монтируя его, пишем в консольке:
dd if=/dev/cdrom | md5sum
Если у вас другое устройство для чтения/записи дисков (не /dev/cdrom) - измените команду соответственно.
После выполнения этой команды вы увидите:
$ dd if=/dev/cdrom bs=2048 | md5sum 355562+0 входных записей 355562+0 выходных записей 728190976 bytes transferred in 299,413377 seconds (2432059 bytes/sec)
e941bb0ecac20a2043c9f8e69fbab63a -
Если у вас есть файл MD5SUMS или my.iso.md5 - проверьте, совпадают ли контрольные суммы. Если у вас такого файла нет, но есть образ диска - просто подсчитайте его контрольную сумму, как говорилось выше: md5sum my.iso

Для DVD-дисков
Здесь всё немного сложнее: дело в том, что при записи на DVD пишется так же и служебная информация, поэтому для проверки DVD-дисков утилитой dd нужно точно указывать размер и количество блоков. Для того, чтобы узнать, сколько значимых блоков (extents) имеется в iso-образе, выполняем команду (вводите именно так, как написано, меняя тольк имя образа):
echo $(( $(ls -l my.iso | awk '{ print $5 }') / 2048 ))
Результатом будет число блоков - это число нам потребуется для команды dd:
169383
Теперь, зная, что размер блока равен 2048 байт и количество блоков на DVD-диске, даём команду:
dd if=/dev/cdrom bs=2048 count=169383 | md5sum
Результатом её выполнения будет вывод:
$ dd if=/dev/cdrom bs=2048 count=169383 | md5sum 169383+0 records in
169383+0 records out e941bb0ecac20a2043c9f8e69fbab63a -
Как видно, что записанный на DVD образ и isoшник на жёстком диске совпадают, так что запись прошла успешно.

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

Пример неправильного подсчёта контрольной суммы:
Взяли iso-образ, пропалили его:
growisofs -Z /dev/cdrom=my.iso
Утилита напишет:
builtin_dd: 169392*2KB out @ average 4.4x1385KBps
А теперь считаем данные
dd if=/dev/cdrom | md5sum
169392+0 records in
169392+0 records out
1188f67d48c9f11afb8572977ef74c5e -

Сверяем:
md5sum my.iso:
e941bb0ecac20a2043c9f8e69fbab63a my.iso
Оп-па! Не сходится! А всё почему? Потому, что утилита dd считали все блоки (169392), как вы её и просили. Но это неправильно: значащих блоков там меньше (169383), поэтому контрольная сумма совсем другая. Всегда указывайте количество и размер блоков при проверке DVD-дисков!
Способ #2: утилита diff
Другой способ, не требующий наличия программы md5sum, был предложен здесь же, в комментариях. Заключается он в остроумном использовании команды diff, которая выдаёт информацию обо всех файлах, в которых совпадает содержимое. Для этого нужно смонтировать только что записанный диск:
mount -t iso9660 /dev/cdrom /mnt/cdrom
и (в другую точку монтирования, на петлевое устройство) имеющийся iso-образ.
sudo mount -t iso9660 my.iso /mnt/flash/ -o loop
Затем напишите
diff -urN /mnt/cdrom /mnt/flash
Если утилита ничего не напишет - значит, все файлы совпадают и запись диска проведена правильно. Это работает и для CD, и для DVD-дисков.


Способ #3: утилита readcd (только для CD-дисков) Эта утилита входит в комплект cdrtools и производит посекторное чтение данных с диска. Очень удобно как для проверки, так и для сдирания образа с какого-нибудь принесённого диска. По этому поводу мной написан простенький скрипт на баше:

#! /bin/sh
if [ -z $1 ]; then
echo "Скорость считывания?"
read kmvISOspeed;
else
kmvISOspeed=$1;
fi
readcd dev=ATAPI:0,0,0 speed=$kmvISOspeed f=temp.raw;
md5sum temp.raw
Некоторые пояснения к скрипту. Для того, чтобы выяснить адрес для ATAPI, запускаем
sudo cdrecord -scanbus dev=ATAPI
Выдаст он нам что-то вроде:

Cdrecord-Clone 2.01.01a01 (i686-pc-linux-gnu) Copyright (C) 1995-2004 Joerg Schilling NOTE: this version of cdrecord is an inofficial (modified) release of cdrecord and thus may have bugs that are not present in the original version. Please send bug reports and support requests to . The original author should not be bothered with problems of this version. cdrecord: Warning: Running on Linux-2.6.15.7 cdrecord: There are unsettled issues with Linux-2.5 and newer. cdrecord: If you have unexpected problems, please try Linux-2.4 or Solaris. scsidev: 'ATAPI' devname: 'ATAPI' scsibus: -2 target: -2 lun: -2 Warning: Using ATA Packet interface. Warning: The related Linux kernel interface code seems to be unmaintained. Warning: There is absolutely NO DMA, operations thus are slow. Using libscg version 'ubuntu-0.8ubuntu1'. cdrecord: Warning: using inofficial version of libscg (ubuntu-0.8ubuntu1 '@(#)scsitransp.c 1.91 04/06/17 Copyright 1988,1995,2000-2004 J. Schilling').
scsibus0:

0,0,0 0) '_NEC ' 'DVD_RW ND-3550A ' '1.05' Removable CD-ROM

0,1,0 1) *

0,2,0 2) *

0,3,0 3) *

0,4,0 4) *

0,5,0 5) *

0,6,0 6) *

0,7,0 7) *
Выделенные полужирным цифры и подставляем в качестве цели для записи - это наш привод.

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

читать далее...

а если копируете статью - поставьте ссылку на оригинал!

13 Ноябрь 2006

SquashFS против архиваторов в Linux: плюсы и минусы

Задача: сравнить степень и скорость сжатия файловой системы SquashFS и распространённых архиваторов под Linux, а так же ещё раз упомянуть, где и когда можно (и нужно) использовать сжатые файловые системы.

Преамбула
Здесь я писал о том, что такое SquashFS и зачем оно надо. Иногда удобно использовать такие файловые системы вместо архиваторов, и не столько из-за степени сжатия (которая у архиваторов выше), а за большую скорость доступа и возможность работы с данными без разархивации. Например, вы скачали какой-нибудь сайт целиком wget-ом. Это куча html-ек и графических файлов, но они занимают много места, менять вы их не собираетесь, а хотите только просматривать время от времени. Легко и просто: сжимаем каталог с сайтом:

mksquashfs www.vasya.ru www.vasya.ru.sq
Расширение можно указать любое, которое понравится. Потом, когда захотите посмотреть на этот сайт и побродить по нему, просто прикручиваете на петлевое устройство файл - и вперёд. Распаковка "на лету" происходит незаметно - для современных процессоров это семечки. Посмотрели, открутили - и забыли. Удобно, просто и легко.
Вариант: есть много ISOшников, которые не так часто используются. Сжимаем их тоже в SquashFS, а когда надо, например, погонять их в эмуляторе, просто прикручиваем на петлю и указываем эмулятору на iso-файл, который виден в точке монтирования. И никакой утомительной разархивации.

Тестирование SquashFS в Linux
Проводилось тестирование на скорость и степень сжатия по шести видам файлов (которые у меня чаще всего попадаются). Красным выделялся архиватор с наибольшей степенью сжатия. Участие в тестировании приняли архиваторы, наличествующие в Debian GNU/Linux (и кое-какие, в нём по религиозным лицензионным соображениям отсутствующие, но установленные), как то: bzip2, p7zip (многопоточный), gzip, arj, rar (проприетарный, полнофункциональная trial-версия, после тестирования удалён), mksquashfs v3.0, mksquashfs v3.1 (многопоточный).
Тестирование проводилось на машине следующей конфигурации: P4 630 (3GHz, 2Mb cache, HyperThreading), Intel i915 PGNL Motherboard, 2Gb DDRAM, HDD 36Gb WD Raptor + 250Gb WD 250JB, ATi X200 VideoCard. OS Debian GNU/Linux v3.1 "Sarge" с оптимизированным ядром Linux версии 2.6.15.7 \#1 SMP PREEMPT i686. На момент тестирования время непрерывной работы машины составляло 95 дней.
При архивировании утилитам передавались параметры:
  • mksquashfs
  • rar a -m5
  • bzip2 --best -z
  • p7zip
  • gzip --best
  • arj a -m4
Запуск проводился скриптом на bash, в консоли, графический сервер был выключен. Никаких ресурсоёмких процессов на фоне запущено не было.

1. Много больших несжатых полутоновых видеофайлов
Тест несколько искусственный, так как эти "фильмы" сделаны из простых полутоновых BMP-файлов. В свободном виде они занимают просто чудовищный объём, а нужны для оптических экспериментов (эксперимент MotionScreen, кому надо, тот знает). В чистом виде занимают 1.5Гб, а вот что с ними стало после архивирования:


Архиватор Время Компрессия



squashfs 3.0 61 175,07



squashfs 3.1 83 175,07



rar 114 508,66



bzip2 140 2900,95



p7zip 307 5017,85



gzip 101 191,5



arj 31 53,24




Архиватор p7zip показал самую высокую степень сжатия, однако, несмотря на то, что он работал в многопоточном режиме (ядро с активированной поддержкой HyperThreading), сжимал дольше всех. Хвалёный и тем более несвободный rar порядком проигрывает свободному bzip2 при сравнимой скорости сжатия. Сжатие squashfs несколько в стороне, хотя и довольно быстрое. Занятно, что многопоточное исполнение для утилиты сжатия squashfs даже снизило её быстродействие (тест запускался трижды, значения те же).

2. Цветные RAW-файлы
Фотографии в формате "прямо с камеры" объёмом в 90 Мб были сжаты теми же архиваторами - посмотрим, что из этого вышло:


Архиватор
Время
Компрессия



squashfs 3.0
14
1,06



squashfs 3.1
13
1,06



rar
61
1,1



bzip2
37
1,14



p7zip
72
1,12



gzip
12
1,06



arj
1
1



Здесь с незначительным перевесом по степени сжатия, но почти вдвое по скорости обскакав конкурентов, лидирует bzip2. В этой программе squashfs выглядит уже не так бледно, находясь так же на уровне gzip.

3. Офисные документы
Здесь я вытащил find-ом всё, что имело расширение doc, odt, xls и ods. Получилось немного, на 30Мб, но тем не менее:

Архиватор
Время Компрессия








squashfs 3.0
4 1,07








squashfs 3.1
4 1,07








rar
20 1,07








bzip2
15 1,07








p7zip
19 1,13








gzip
4 1,07








arj
0 1,05





















Здесь свободный p7zip снова делает проприетарный rar, причём не только по степени сжатия, но и по скорости (а вот тут, быть может, HyperThreading и сыграл, а rar его не держит - проприетарщина, а ещё денег просит). SquashFS очень шустрый, и компрессия неплохая, очень похожая по результатам на gzip (в этом тесте размер архива gzip и sq просто совпали байт-в-байт, что наводит на мысль о том, что в squashFS сжатие если не zip, то во всяком случае очень похожее).

4. Полутоновые графические файлы TIF
Много экспериментальных результатов приходится хранить в tif-файлах, так что интерес к тому, кто круче их жмёт (не обязательно быстро) неслучаен. Сжато файлов на 82Мб, вот результаты:


Архиватор
Время
Компрессия





squashfs 3.0
20
1,81





squashfs 3.1
18
1,81





rar
48
1,97





bzip2
25
2,4





p7zip
132
2,23





gzip
19
1,86





arj
6
1,51





Первое место вновь за свободной программой: bzip2 очень лихо жмёт tif-файлы, а кроме того очень быстро. Чуть меньше степень сжатия у p7zip. SquashFS при той же компрессии в многопоточном режиме жмёт немного быстрее, но тоже на уровне gzip - как по скорости, так и по сжатию (здесь разница между ними была ровно 200 байт).

5. Скачанный сайт
Мой любимый тест - сайтов я качаю много, так что очень и очень актуально. Здесь пожат портал www.teatips.ru, где находится всё, что можно и нужно узнать о чае. Всего 460Мб, немного терпения и результат:


Архиватор
Время
Компрессия




squashfs 3.0
38
3,49




squashfs 3.1
30
3,49




rar
167
3,03




bzip2
257
4,41




p7zip
188
4,59




gzip
22
4,26




arj
19
2,68





Картина маслом: rar сливает squashfs по всем статьям! Очень радостно видеть первые три места за свободными программами. Впрочем, результат по времени p7zip можно оспорить: здесь скорее всего заиграл снова гипертреадинг, что видно и по squashFS (та же степень сжатия, но быстрее на 21%, что неплохо коррелирует с заверениями Интел про прибавку до 30% производительности на некоторых задачах). Это подтверждается и визуально: многопоточные архиваторы на глаз быстрее при включённом гипертреадинге при пожатии множества мелких файлов.

6. ISO-образ
Пожат первый iso-образ диска с Дебианом Сарж, 650Мб:


Архиватор
Время
Компрессия



squashfs 3.0
74
1,03



squashfs 3.1
75
1,03



rar
718
1,05



bzip2
297
1,03



p7zip
411
1,05



gzip
65
1,03



arj
16
1



Rar таки обошёл p7zip, но на сколько? Не поверите, но аж на 0,0039% - я уверен, что это стоит тех денег, которые Рошаль с вас потребует за консольную версию своего чудотворного архиватора.
В общем, сжимать iso-шники здорово простым gzip, быстро и примерно так же по компрессии, как и все другие. А ещё лучше isoшники пожимать в squashFS, ибо их можно пропаливать на болванки и гонять в эмуляторах, даже не распаковывая.

Итоги
Ну вот, пока тесты закончились и заметка написана, и в комнате теплее стало. :-)
Здесь хотелось бы отметить важный момент: открытые архиваторы почти всегда уделывают проприетарные, либо по скорости, либо по компрессии. Так что для того, чтобы эффективно сжимать свои данные, вовсе не обязательно платить за это деньги, так как p7zip и bzip2 есть под распространённые платформы и распространяются под GPL-совместимыми лицензиями.
SquashFS по компрессии и скорости близка к gzip, что вовсе не так плохо: в ряде случаев её применение более чем оправдано, особенно если вы часто имеете дело со скачанными сайтами или большим количеством редко изменяемых офисных документов.
читать далее...

а если копируете статью - поставьте ссылку на оригинал!

09 Ноябрь 2006

Запись CD и DVD дисков в Linux: Как записать CD/DVD диск под Linux

Задача: нужно записывать CD и DVD диски с данными в Linux без графических утилит. Чем прожигать диски в Linux?
Решение: все программы записи дисков под Linux есть просто графические оболочки к базовым утилитам cdrecord/wodim и growisofs. В некоторых случаях эти оболочки вносят свои дополнительные проблемы в процесс записи дисков, так что я их никогда не использовал. Чтобы не забыть самому и если кому интересно - ниже описание процесса.
В этом посте приводятся только основные команды и параметры утилит, которыми я пользуюсь постоянно - пост ни в коем случае не отменяет чтение man mkisofs cdrecord growisofs и других.

Как узнать адрес привода
Запись на привод проводится через ATAPI, а не эмуляцию SCSI, как когда-то делали. Для этого пишем в консольке:

sudo cdrecord -scanbus dev=ATAPI
Выдаст он нам что-то вроде:

Cdrecord-Clone 2.01.01a01 (i686-pc-linux-gnu) Copyright (C) 1995-2004 Joerg Schilling NOTE: this version of cdrecord is an inofficial (modified) release of cdrecord
and thus may have bugs that are not present in the original version.

Please send bug reports and support requests to .
The original author should not be bothered with problems of this version. cdrecord: Warning: Running on Linux-2.6.15.7 cdrecord: There are unsettled issues with Linux-2.5 and newer. cdrecord: If you have unexpected problems, please try Linux-2.4 or Solaris. scsidev: 'ATAPI' devname: 'ATAPI' scsibus: -2 target: -2 lun: -2 Warning: Using ATA Packet interface. Warning: The related Linux kernel interface code seems to be unmaintained. Warning: There is absolutely NO DMA, operations thus are slow. Using libscg version 'ubuntu-0.8ubuntu1'. cdrecord: Warning: using inofficial version of libscg (ubuntu-0.8ubuntu1
'@(#)scsitransp.c 1.91 04/06/17 Copyright 1988,1995,2000-2004 J. Schilling').

scsibus0:
0,0,0 0) '_NEC ' 'DVD_RW ND-3550A ' '1.05' Removable CD-ROM

0,1,0 1) *

0,2,0 2) *

0,3,0 3) *

0,4,0 4) *

0,5,0 5) *

0,6,0 6) *

0,7,0 7) *

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

Запись CD-R/RW дисков
Для этого нужно установить либо сторонние пакеты cdrtools, либо пакты из Etch, которые называются cdrkit (свободная версия cdrtools). Тогда в вашем распоряжении окажутся утилиты cdrecord для записи/очистки дисков, mkisofs для создания ISO-образов из файлов, cdda2wav для сдирания с образа аудиотреков. Всё это нам понадобится для создания и пропаливания дисков.

Создание ISO-образа
Если нужно создать сперва ISO-образ для пропаливания, пользуемся утилитой mkisofs. Тут есть некоторые тонкости, например, под ЗломХР и другими версиями Зла не воспринимаются права файлов, что принято в *nix-системах. Так же, если требуется пропалить диск для юниксоида с правами доступа, то нужно использовать опцию -r, которая включает расширение RockRidge стандартной iso9660. Если нужны длинные имена файлов и русские их названия, то включаем расширение Joliet (кстати, единственная хоть сколько-нибудь полезная вещь, сделанная в мелко$офт). Короче говоря, чтобы из каталога /home/vasya/stuff сделать iso-образ под названием disk.iso, пишем в консольке следующее:
mkisofs -joliet-long -r -o disk.iso /home/vasya/stuff
После этого в каталоге, из которого вызывалась программа, появится disk.iso, который теперь можно пропаливать на болванку.

Запись CD-R дисков
Если уже есть ISO-образ и его надо просто пропалить, то надо вызвать cdrecord и указать ему скорость пропаливания, адрес устройства и непосредственно сам образ. Делается это так:
cdrecord -v speed=40 dev=ATAPI:0,0,0 my.iso
То есть записать с подробным выводом сообщений на скорости 40 на устройство ATAPI:0,0,0, (Primary Master 1-ого IDE-канала) образ my.iso - всё логично и понятно. Пока пропаливается диск - сворачиваем окошко консоли и занимаемся другими делами.

Можно поступить и так: чтобы не задавать руками скорость и завернуть команду в полностью автоматический скрипт, укажите speed=0, тогда программа сама выберет подходящую скорость, на которой болванка будет гарантированно читаться и привод её не запортит. Чтобы вообще не вспоминать потом про параметры, можно их прописать в /etc/cdrecord/cdrecord, в котором можно "определить" устройство, на которое будет производиться запись - то есть, прописать его ATAPI адрес, размер буфера FIFO, назначить имя этому устройству, и в дальнейшем обращаться к этому устройству по имени, при записи.

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

Запись CD-RW дисков
Здесь немного поинтереснее, так как если на диске что-то есть, то вариантов становится больше: дописать информацию или снести оттуда всё и записать снова. Для того, чтобы очистить болванку, есть несколько методов, реализованных в cdrecord: быстрая очистка, только указанная сессия, полная очистка и другие. Например, для быстрой очистки пишем:
cdrecord -v blank=fast dev=ATAPI:0,0,0
и через пару секунд на него уже можно писать новые данные.
Запись CD-RW дисков ничем не отличается от записи обычных однократных болванок, и команда:
cdrecord -v speed=40 dev=ATAPI:0,0,0 my.iso
пропаливает диск точно так же. Только следите за указанием скорости пропаливания - для перезаписываемых болванок она ниже, чем для однократных.

Кстати, о скоростях. Утилита cdrecord поступает очень грамотно, на мой взгляд, что начинает запись с маленькой скорости, и постепенно подбирается к указанной максимальной, если это возможно. А не как некоторые безмозглые проприетарные громилы, которые сразу пытаются писать на большой скорости, а если не удаётся - скидывают скорость вдвое и на ней пишут весь диск. Скорость записи болванки может варьироваться в зависимости от производителя и нагруженности системы в данный момент. Для CD болванок 1х = 150 Кб/сек, при записи Audio-CD 1х = 172 Кб/сек, для DVD 1х = 1385 Кб/сек.

Запись DVD-R/RW дисков
Для этого нужно поставить утилиты dvd+rw-tools, которые входят в дистрибутив и включают в себя программы для записи и форматирования DVD-дисков. После этого, помимо других утилит, в нашем распоряжении будет growisofs для создания и записи образов на DVD, а так же dvd+rw-format для предварительного форматирования перезаписываемых DVD+RW. Запись DVD немного отличается от записи простых CD-болванок, так что ниже приведу команды для этого.

Запись DVD-/+R дисков

Для этого нам потребуется утилита growisofs, которая входит к комплект dvd+rw-tools, и объединяющая в себе mkisofs и cdrecord в одном флаконе. Для того, чтобы пропалить на DVD-болванку (без разницы - это DVD+R или DVD-R) файлы из каталога /home/vasya/something, пишем в консольке:
growisofs -Z /dev/cdrom -R -J /home/vasya/something
где после -Z идёт устройство, которое является резаком. Даже если оно называет /dev/cdrom, не надо удивляться: утилите всё равно, так что пишем, будет работать. Скорость утилита подберёт сама, ту, на которой болванка гарантированно пропалится без ошибок, так что форсировать процесс не стоит.
Если уж так хочется прожечь болванку побыстрее, можно рекомендовать growispfs скорость ключом -speed=N так:
growisofs -speed=8 -Z /dev/cdrom -R -J /home/vasya/something
Помним, что для DVD скорость 1х = 1385 Кб/сек.
Если нужно пропалить уже готовый ISO-образ, команда изменится так:
growisofs -Z /dev/cdrom=image.iso
В процессе записи будет постоянно выводиться информация о текущей скорости записи, прогрессе и оставшемся до конца пропаливания времени. Процесс пропаливания DVD-болванок довольно ресурсоёмкий, так что небольшие притормаживания, особенно на системах не первой свежести, нормальны.

Запись DVD-/+RW дисков
Для начала болванку нужно отформатировать, это делается так:
dvd+rw-format -f /dev/cdrom
Если у вас другое устройство для записи, отличное от /dev/cdrom, замените его на своё. После этого запись на диск идёт так же, как и для обычных DVD-болванок:
growisofs -Z /dev/cdrom=image.iso
После этого начнётся запись, а мы можем заняться чем-то более полезным, чем созерцание процентов записываемого образа.

Возможность использования DVD-/+RW как дискеты
Есть возможность использования пакетной записи и файловой системы udf (должна быть скомпилирована поддержка ядре), чтобы работать с перезаписываемым DVD-диском как с большой дискетой. Как мне любезно написал в комментариях ув.тов. Anonymous, выглядит это так:
dvd+rw-format -f /dev/cdrom
mkudffs /dev/cdrom

После чего работаем как с простым RW сменным носителем типа дискетки или флешки:
mount -t udf /dev/cdrom /mnt/cdrom
cp /etc/* /mnt/cdrom/
rm /mnt/cdrom/shadow
eject
Просто и удобно.

Ссылки
Помимо мануалов к утилитам, которые написаны очень толково, можно почитать о записи на разных ресурсах, перечисленных ниже.
CD:
Замечательная статья по записи через ATAPI здесь. На английском хорошая есть статья, в которой почти обо всём и толково. Теоретический, но уже немного устаревший, обзор тут, а здесь совсем зубодробильный обзор возможностей CD-приводов.
DVD:
Очень хорошая и информативная статья по записи болванок DVD здесь. На английском, но довольно просто и толково про это же есть тут. Много интересного можно почерпнуть отсюда.
читать далее...

а если копируете статью - поставьте ссылку на оригинал!

06 Ноябрь 2006

Библиография в LaTeX, BiBTeX и JabRef

Этот пост является частью большой статьи
"Как оформить диплом в LaTeX?",
которую написал virens,
ведущий блога "Записки дебианщика"

Проблема: библиографический список документов LaTeX разросся и перевалил за несколько десятков источников литературы. Требуется быстро и просто оперировать с библиографическими ссылками в научных документах.
Решение: есть кроссплатформенные системы ведения баз данных библиографических ссылок в LaTeX, одна из них - JabRef.

При написании объёмных научных трудов часто возникает проблема работы с библиографией в LaTeX. Обычно на начальном уровне освоения LaTeXники применяют для указания ссылок на литературу такую конструкцию, помещая её в конец своего tex-файла:

\addcontentsline{toc}{chapter}{Литература}
\begin{thebibliography}{99}

\bibitem{catheydowskinewparadigm} W.T. Cathey and E.R. Dowski, ``New paradigm for imaging systems'', Appl. Opt. 41, pp. 6080-6092, 2002.
Это значит буквально то, что написано: добавить главу "Литература" в конец списка, а ссылки (bibitem) указать в порядке перечисления их ниже. Вот тут-то и лежат грабли для начинающих TeXников - в тексте ссылки пронумеруются в том порядке, в котором они тут указаны, а не в порядке упоминания.

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

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

Таким образом, вы избавлены от забот с библиографией - теперь вы будете добавлять источники литературы не в сам LaTeX-документ, а в bib-файл при помощи удобной графической программы. Эту библиографическую базу вы сможете использовать для многих документов, что имеет свои преимущества:
  1. если в описание ссылки на литературу вкралась ошибка, её можно исправить в базе - и это будет изменено во всех документах, ссылающихся на неё;
  2. ссылки появляются по мере упоминания и нумеруются правильно;
  3. простой поиск в базе для выяснения ключа цитирования (подставляемый в \cite{});
  4. возможность использования одной базы во многих документах;
  5. импорт и экспорт в другие библиографические форматы.
Так что всё это стоит некоторых усилий - вы сможете просто писать \cite{источник} и не думать, в каком порядке и как отображается ссылка - лишь бы она была в базе. Всё просто и легко.


Как это работает
Для того, чтобы начать работу с BiBTeX, надо установить какую-нибудь оболочку к нему, создать новую библиографическую базу, заполнить её теми ссылками, которые у вас уже имеются в созданных LaTeXовских документах и слегка подправить в конце упоминание о библиографии. Если раньше вы писали в конце документа:
\addcontentsline{toc}{chapter}{Литература}
\begin{thebibliography}{99}
то теперь следует писать (не указывая расширения bib):
\bibliography{путь/к/файлу/библиографии}
например,
\bibliography{biblio/my}
и кроме того указать, какой стиль библиографических ссылок вы хотите использовать - чаще всего используется не сортированный (т.е. в порядке упоминания в тексте):
\bibliographystyle{unsrt}
Эту строчку ставим в шапке LaTeXовского документа, после разного рода \usepackage но до \begin{document}. Вот и все дела.

Здесь следует использовать возможности операционной системы, которые здорово облегчают жизнь. Например, у вас есть два LaTeX-файла в разных каталогах (скажем, две статьи). При этом они используют одну и ту же библиографическую базу, которая находится в другом каталоге - как её использовать в разных документах!? Очень просто: Linux и *BSD системы давно умеют создавать символические ссылки на файлы и каталоги. Предположим, что библиографическая база my.bib находится в каталоге ~/docs/matlab/docus/topics/biblio/ и в латеховском документе указывается как \bibliography{biblio/my} - поэтому нужно просто сделать символическую ссылку (симлинк) на каталог, в котором база хранится:
ln -s ~/docs/matlab/docus/topics/biblio/ biblio
и перекопировать симлинк в нужные каталоги, в которых находятся ваши латеховские документы. Всё, теперь все они будут работать с одной и той же базой. Легко и просто.

Надеюсь, я вас убедил и теперь осталось только всё это установить.


Приступаем к установке
Для того, чтобы всеми этими чудесами воспользоваться, нужно поставить программу-оболочку для работы с BibTeXом. Можно и руками набивать базу - пожалуйста, можно воспользоваться программами, уже имеющимися в дистрибутиве. Например, для Debian v3.1 Sarge, если поискать в репозитории:
# apt-cache search bibtex | grep tool bibtool - A tool for manipulating BibTeX data bases. bibview - X11 Bibliography database tool pybliographer - tool for manipulating bibliographic databases bibtool-dev - A library providing functions to deal with BibTeX files. search-ccsb - BibTeX search tool search-citeseer - BibTeX search tool
то можно найти приличное количество таких программ.

Однако в плане удобства использования они сильно проигрывают JabRef, о которой и пойдёт речь дальше. Эта программа написана на Java, бесплатна и лицензирована под GPL - однако из-за того, что Java-машина в основную ветку дистрибутива Debian не входит (по лицензионным причинам), JabRef в Дебиане нет. Однако для неё есть дебиановский пакет, который можно скачать с сайта разработчиков, а пакет с Java-машиной - из non-free ветки дистрибутива Debian.

Ставим!
Итак, нам нужно скачать из Интернета пакеты j2re*.deb (у меня, например, jpre1.4_1.4.2.03-1_i386.deb), jabref*_all.deb (у меня установлен jabref_2.0.1-1_all.deb) и взять первый DVD-диск, на котором есть пакет java-common, входящий в стандартную поставку Дебиана.

Сначала ставим java-common из дистрибутива:
#apt-get install java-common
Далее ставим отдельно пакет с Java-машиной (если у вас более свежая версия - поправьте имя пакета):
#dpkg -i jpre1.4_1.4.2.03-1_i386.deb
Конфигуратор этого пакета может задать вопросы - типа согласны ли мы с лицензией (выбирать не приходится), и прочее. Отвечаем утвердительно - согласны с лицензией SUN и принимаем все остальные вопросы. Теперь ставим собственно JabRef - так же отдельно пакет (если у вас более свежая версия - поправьте имя пакета):
#dpkg -i jabref_2.0.1-1_all.deb
Всё - теперь добавляем JabRef в меню своего любимого оконного менеджера или графической среды и запускаем:
jabref
Так как программа на джаве, запускается она не быстро - это нормально. Интерфейс у неё простой и понятный.

Осталось только вбить литературные источники в этой программе в новую базу, сохранить, поставить во всех документах упоминание о том, что мы теперь используем BiBTex:
\bibliography{путь/к/файлу/библиографии}
и работать, как всегда - ставить ссылки на литературу, а уж BiBTeX сам разберётся, как её указать. И в конце вашего LaTeXовского файла всегда будет аккуратный список литературы по всем правилам хорошего тона.


Несколько советов

Во-первых, не забываем про архивирование данных - и особенно библиографической базы данных. Это теперь наше всё. Её можно экспортировать в HTML или просто скопировать куда-нибудь в другое место.

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

Для любопытных
Физически теперь ваши ссылки будут одним файлом с расширением bib, который, если его открыть текстовым редактором, будет похож на:
This file was created with JabRef 2.0.1.
Encoding: KOI8-R

@ARTICLE{catheydowskinewparadigm,
author = {W.T. Cathey and E.R. Dowski},
title = {New paradigm for imaging systems},
journal = {Appl. Opt.},
year = {2002},
volume = {41},
pages = {6080-6092},
owner = {penta4},
timestamp = {2006.05.12},
}

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

читать далее...

а если копируете статью - поставьте ссылку на оригинал!

03 Ноябрь 2006

Использование пакетов расширения LaTeX: LaTeX usepackage

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

Вот пример такой шапки с описанием действия пакетов. Шапка написана с сильным физико-математическим уклоном: для вёрстки статей и отчётов с обильным использованием формул, рисунков, таблиц и ссылок на литературу.

\documentclass[a4paper,12pt]{article}
\usepackage[T2A]{fontenc} %поддержка кириллицы в ЛаТеХ
\addtolength{\hoffset}{-1.7mm} % горизонтальное смещение всего текста как целого
\usepackage[koi8-r]{inputenc} %По умолчанию кодировка KOI8 для *nix-систем
и cp1251 для винды
\usepackage[english,russian]{babel} %определение языков в документе
\usepackage{amssymb,amsmath,amsfonts,latexsym,mathtext} %расширенные наборы
математических символов
\usepackage{cite} %"умные" библиографические ссылки
(сортировка и сжатие)
\usepackage{indentfirst} %делать отступ в начале параграфа
\usepackage{enumerate} %создание и автоматическая нумерация списков
\usepackage{tabularx} %продвинутые таблицы
% \usepackage{showkeys} %раскомментируйте, чтобы в документе были видны
ссылки на литературу, рисунки и таблицы
\usepackage[labelsep=period]{caption} %заменить умолчальное разделение ':' на '.'
в подписях к рисункам и таблицам
\usepackage[onehalfspacing]{setspace} %"умное" расстояние между строк - установить
1.5 интервала от нормального, эквивалентно
\renewcommand{\baselinestretch}{1.24}
\usepackage[dvips]{graphicx} %разрешить включение PostScript-графики
\graphicspath{{edgeimages/}} %относительный путь к каталогу с рисунками,
это может быть мягкая ссылка

\usepackage{geometry} %способ ручной установки полей
\geometry{top=2cm} %поле сверху
\geometry{bottom=2.5cm} %поле снизу
\geometry{left=2.5cm} %поле справа
\geometry{right=2cm} %поле слева

\makeatletter
\bibliographystyle
{unsrt} %Стиль библиографических ссылок БибТеХа - нумеровать
в порядке упоминания в тексте
%Заменяем библиографию с квадратных скобок на точку в списке литературы
\renewcommand{\@biblabel}[1]{#1.}
\makeatother

% Меняем везде перечисления на цифра.цифра
\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\labelenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}.}
\renewcommand{\theenumiii}{\arabic{enumiii}}
\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.}

\righthyphenmin=2 % Минимальное число символов при переносе - 2.

читать далее...

а если копируете статью - поставьте ссылку на оригинал!

02 Ноябрь 2006

Работа с огромными растровыми изображениями в Linux: графический редактор nip2

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

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

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


Помимо служебных форматов, программа знает TIFF, PPM, PNG и JPEG. Немного, но этого хватает для нормальной работы с графикой.

Что есть и чего нет в nip2
Так как программа изначально заточена под работу с плоской графикой, нет функций работы со слоями - это не её профиль. Зато есть много очень продвинутых техник обработки изображений, реализованных в виде быстрых алгоритмов (следует отметить, что обработка изображений проходит намного быстрее, чем в аналогичных растровых графических редакторах, например, в GiMP).

Что есть:

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

Чего нет:
- нет работы со слоями;
- нет возможности воспользоваться инструментами рисования (только обработка изображения фильтрами);

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


Зачем нужен nip2
На самом деле, как говорится здесь, nip2 - это лишь графический пользовательский интерфейс на Gtk2 к библиотеке VIPS. Эта библиотека на С спроектирована для обработки очень больших изображений, главным образом, для исследований картин в музеях. Оцифрованные изображения произведений искусства - это огромные файлы, и обработка их в обычных графических редакторах просто немыслима. Кроме того, многие цифровые фильтры в графических редакторах применяют медленные алгоритмы обработки, так как их проще реализовать и не возникает специфических проблем.
У nip2 много преимуществ, помимо работы с очень большими изображениями, так что надеюсь, что программа будет полезна и вам.

Ссылки
Замечательная статьятут её английский источник)по библиотекам обработки изображений в Линукс - там говорится и о VIPS, на которой основан nip2.

читать далее...

а если копируете статью - поставьте ссылку на оригинал!

Поиск по сайту

Архивы блога

Новостная лента


Читать новости блога удобнее, подписавшись на
-ленту.
краткая лента новостей.
Блокнот интересных ссылок в Twitter
Получать на E-mail Записки дебианщика rss2email.ru

Последние новости

Все записки дебианщика

Скачать локальную версию блога "Записки дебианщика" для offline-просмотра можно здесь. Архив 7z занимает ~120Мб, в распакованном виде ~2Гб.

Постоянные читатели

Экипаж

Автор
My Photo
Михаил Конник
Инженер-физик, занимаюсь оптикой и цифровой обработкой изображений. Профиль
Главный редактор
Моя фотография
Programmaster, в полный рост

Кнопки