29 Октябрь 2007

Программы для Linux: пользовательский софт в Linux

Вот поставили вы Debian GNU/Linux (или другой дистрибутив типа Ubuntu Linux) - какие программы в Linux за что отвечают? Какие программы для линукс стоит поставить в первую очередь для создания привычного рабочего окружения? Ответ на этот вопрос, а также на вопрос "есть ли аналоги программы в Linux?" приводится в этом посте.

Программы для линукс не надо искать на варёзных сайтах и взламывать - всё есть в репозиториях вашего дистрибутива. И устанавливаются программы для Linux очень просто, а чтобы знать, что ставить, ниже приводится описание программ по группам.

Для облегчения навигации: полужирным будут выделены приложения, которые стоит поставить в любом случае, курсивом - аналогичные по классу, обычным шрифтом - на которые стоит посмотреть. Зелёным отмечены программы, которые есть в составе дистрибутива, жёлтым - не свободные / требуется ставить из сторонних репозиториев.



Обработка изображений, графика

Редактирование фотографий, конвертирование из raw-формата, поточная обработка изображений, просмотрщики.

  • GIMP, krita, CinePaint - редактор изображений (аналог Adobe Photoshop в Linux, описание).
  • ImageMagick (консольный) - консольный графический редактор, полезен при поточной обработке изображений (описание).
  • Nip2 - специализированный графический редактор для изображений большого размера (описание).
  • Inkscape, Sodipodi - векторный графический редактор.
  • F-Spot, digiKam, gThumb, Google Picasa - приложение для управление вашими фотографиями
  • Gwenview, gqview, eog, pornview - просмотрщики изображений в Linux (аналог ACDSee в Linux).
  • UFraw, dcraw (консольный) - конверторы RAW-файлов для Linux (описание
Интернет
Веб-броузеры и почтовые клиенты, мгновенные сообщения и FTP-клиенты, интернет-телефония.
  • Mozilla Firefox / Iceweasel, Konqueror, Epiphany, Opera - веб-браузер (аналог Internet Exploder в Linux).
  • Mozilla Thunderbird / Icedove, Evolution, Sylpheed, KMail, mutt (консольный) - почтовый клиент (аналог Microsoft Outlook в Linux).
  • gFTP, ncftp, FileZilla - FTP клиенты в Linux.
  • aMule - приложение для работы в P2P сетях.
  • Azureus, Deluge, KTorrent, rtorrent (консольный) - Bittorrent клиент.
  • linuxdcpp, valknut, microdc - DC++ клиенты для Линукс.
  • Pidgin, Psi, SIM, Kopete, gajim, tkabber, mcabber (консольный) и centericq (консольный), QutIM (скачать) - клиент обмена мгновенными сообщениями (аналог ICQ в Linux).
  • Skype, wengophone, gizmo, Ekiga - интернет-телефония.
  • d4x, gwget, kget, wget (консольный) - менеджеры закачек файлов.
  • wget (консольный), aria, httrack (консольный) - оффлайн-броузеры, скачивают сайты для локального просмотра (аналог Teleport Pro для Linux).

Работа с текстом и таблицами
Визульные текстовые процессоры, системы вёрстки.
  • OpenOffice Writer - аналог Microsoft Word в Linux (часть пакета OpenOffice.org)
  • OpenOffice Calc - аналог Microsoft Excel в Linux (часть пакета OpenOffice.org)
  • OpenOffice Impress - аналог Microsoft PowerPoint (часть пакета OpenOffice.org)
  • OpenOffice Base - аналог Microsoft Access (часть пакета OpenOffice.org)
  • AbiWord, GNUmeric, KOffice, SiagOffice - другие офисные приложения для Линукс.
  • Adobe Reader, Evince, xpdf, okular, kpdf - чтение PDF-файлов под Линукс.
  • gnochm, kchmview, xChmCHM - чем прочитать CHM-файлы в Linux.
  • StarDict - словари в Линукс, аналог Lingvo.
  • GnuCash, kMyMoney - персональный финансовый менеджер (аналог Quicken).
  • Scribus - настольная издательская система (аналог QuarkXPress в Linux).
  • Kate, nEdit, gedit - текстовые редакторы с подсветкой синтаксиса.
  • vi, vim, emacs - продвинутые среды обработки текста.


Мультимедиа
Проигрыватели аудио и видеофайлов, звуковые редакторы, видеоредаторы и системы видеомонтажа, запись CD/DVD-дисков.

  • Amarok, Banshee, exaile - музыкальный проигрыватель и каталогизатор музыки.
  • XMMS, audacious, bmp - музыкальный проигрыватель, аналог знаменитого Winamp (описание)
  • Rhythmbox- музыкальный проигрыватель, аналог Apple's iTunes, с поддержкой iPods
  • Mocp (консольный) - консольный музыкальный проигрыватель с интерфейсом в стиле Нортон Командер.
  • Audacity - звуковой редактор

  • MPlayer, Xine, VLC Media Player, Totem, Real Player - проигрыватели видеофайлов и DVD в Линукс (видео/аудио)
  • Kino, Сinelerra - редактор цифрового видео

  • TVtime, zapper, xawtv, kdetv - приложение для просмотра телевизионных каналов

  • grip ("Звуковыжималка"), KAudioCreator, abcde (консольный) - копирование звуковых CD
  • GnomeBaker, graverman, Brasero, K3B - программа записи на CD/DVD

  • EasyTag - программа для конвертирования тэгов музыки в правильные кодировки (описание).

Системное
Приложения для расширения возможностей ОС: интерпретаторы языков программирования, виртуальные машины, эмуляторы.

  • WINE, Cedega, Crossover Office - средство запуска exe-файлов в Линукс.
  • QEMU (консольный), VirtualBox - полные эмуляторы, для запуска других ОС в Линукс (описание QEMU, описание VirtualBox)
  • Midnight Comander (MC), deco, gentoo - аналог Norton Сommander, файловый менеджер для консоли
  • torsmo, conky, gkrellm - индикация работы системы.

Научное
Программы для набора научных документов,
  • tetex / texlive - дистрибутив LaTeX для Линукс (как установить)
  • Kile / Lyx / texmaker - оболочка для создания латех-файлов (описание)
  • jabref (нужна Java) - ведение библиографической базы данных (описание)
  • sam2p - для перевода всего-чего-угодно в eps
Остальные программы можно найти тут: Аналоги Windows программ в Linux (Ubuntu)- таблица соответствий.
читать далее...

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

22 Октябрь 2007

Экспозиция более 30 секунд на цифровой камере: Long-time remote shooting

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


Исходные данные
Имеется цифровая фотокамера Canon EOS 400D, Debian-powered ноутбук и необходимость снимать фотографии с выдержкой более 30 секунд. Если немного погуглить, то можно найти замечательную схему, которую предлагает Michael A. Covington здесь. На всякий случай дублирую её тут:



Схема прекрасная, но она подходит для Canon EOS 300D, а для 400D нет - если её спаять и попробовать управлять 400D, то затвор будет только подниматься, но не опускаться. То есть нет возможности остановить экспозицию в нужный момент, кроме как выключить камеру.


Схема для Canon EOS 400D
Долго ли, коротко, однако я с коллегой, Алексеем Ропяным, экспериментальным путём выяснили, что закрывает затвор фотоаппарат по сигналу с другого контакта, и Алексей предложил схему изменить вот так:



И это сработало: наш лабораторный Canon EOS 400D стал открывать и закрывать затвор по команде с компьютера!


Необходимые компоненты
Для того, чтобы спаять шнурок управления камерой, требуется некоторое количество четырёхжильного кабеля (от аудиоаппаратуры или простой телефонный провод), jack на 2.5мм (он же 3/32 inch), указанные на схеме радиоэлементы (можно купить в Chip&Dip), 9-контактный COM-порт и соответственно переходник USB-COM (чтобы можно было использовать и на современных компьютерах, и на старых), а так же паяльник и немного терпения.

Переходник USB-COM лучше всего брать на чипе Profilic 2303 - это самый распространённый чип и в Линукс работает "из коробки".


Программное обеспечение
Для управления камерой требуется одна маленькая утилита, которую мне подсказали на Астрофоруме (обсуждение велось в теме "Выдержка более 30 сек. через комп?" тут и "Чем Linux полезен ЛА?" здесь).

Программа называется setSerialSignal и её исходник находится здесь. Скомпилировать её GCC, который входит в любой дистрибутив *nix-систем:

gcc -o setSerialSignal setSerialSignal.c
Проверялось на системе Debian GNU/Linux v4.0 r.0 "Etch", gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).

На всякий случай дублирую исходный код программы:

/*
* setSerialSignal v0.1 9/13/01
* www.embeddedlinuxinterfacing.com
*
*
* The original location of this source is
* http://www.embeddedlinuxinterfacing.com/chapters/06/setSerialSignal.c
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* setSerialSignal
* setSerialSignal sets the DTR and RTS serial port control signals.
* This program queries the serial port status then sets or clears
* the DTR or RTS bits based on user supplied command line setting.
*
* setSerialSignal clears the HUPCL bit. With the HUPCL bit set,
* when you close the serial port, the Linux serial port driver
* will drop DTR (assertion level 1, negative RS-232 voltage). By
* clearing the HUPCL bit, the serial port driver leaves the
* assertion level of DTR alone when the port is closed.
*/

/*
gcc -o setSerialSignal setSerialSignal.c
*/


#include
#include
#include

/* we need a termios structure to clear the HUPCL bit */
struct termios tio;

int main(int argc, char *argv[])
{
int fd;
int status;

if (argc != 4)
{
printf("Usage: setSerialSignal port DTR RTS\n");
printf("Usage: setSerialSignal /dev/ttyS0|/dev/ttyS1 0|1 0|1\n");
exit( 1 );
}

if ((fd = open(argv[1],O_RDWR)) < 0)
{
printf("Couldn't open %s\n",argv[1]);
exit(1);
}
tcgetattr(fd, &tio); /* get the termio information */
tio.c_cflag &= ~HUPCL; /* clear the HUPCL bit */
tcsetattr(fd, TCSANOW, &tio); /* set the termio information */

ioctl(fd, TIOCMGET, &status); /* get the serial port status */

if ( argv[2][0] == '1' ) /* set the DTR line */
status &= ~TIOCM_DTR;
else
status |= TIOCM_DTR;

if ( argv[3][0] == '1' ) /* set the RTS line */
status &= ~TIOCM_RTS;
else
status |= TIOCM_RTS;

ioctl(fd, TIOCMSET, &status); /* set the serial port status */

close(fd); /* close the device file */
}



Посылаемые сигналы
Программу собираем и даём ей необходимые права на выполнение, а ниже - сигналы, посылаемые в порт программой, и их передача setSetialSignal:

Сигнал DTR
setSerialSignal /dev/ttyS0 1 0



Сброс сигнала DTR
setSerialSignal /dev/ttyS0 0 0


Сигнал RTS
setSerialSignal /dev/ttyS0 0 1


Сброс сигнала RTS
setSerialSignal /dev/ttyS0 1 1


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


Скрипт управления камерой
Дальше удобно воспользоваться простым скриптом, который написал Евгений Ромас aka BrainBug, но для случая с 400D я скрипт немного поправил, и теперь он выглядит так:

#!/bin/bash

for i in `seq $3`; do
{
setSerialSignal /dev/ttyUSB0 0 0 &&
sleep $1 && setSerialSignal /dev/ttyUSB0 0 1 &&
sleep 0.3 && setSerialSignal /dev/ttyUSB0 0 0 &&
sleep $2 && setSerialSignal /dev/ttyUSB0 1 1 && echo "One more image captured!" &&
sleep $4;

}
done

echo "Done!"

Параметры скрипта:
1: задержка поднятия зеркала
2: время выдержки в секундах
3: количество кадров
4: задержка между кадрами

Пример:
make_captures 4 60 30 2

Скрипт расчитан на работу с переходником USB-COM, и если у вас другой номер порта - естественно, скрипт нужно немного поправить.


Как это работает
Итак, шнурок спаян, переходник USB-COM включён в USB или сам шнурок вставлен в COM-порт, софт скомпилирован и наделён необходимыми правами. Изложение ориентировано на любую *nix-систему, в данном случае это Debian GNU/Linux.
  • Включаем камеру, переводим её в режим BULB, выставляем значение диафрагмы и ISO, а так же другие параметры при необходимости.
  • Вставляем jack в разъём фотокамеры, а противоположный конец в COM-порт или COM-USB переходник и далее в USB-порт компьютера.
  • Убеждаемся (в случае USB), что переходник опознан и работает: dmesg должен выдать что-то вроде:
usb 2-1: new full speed USB device using uhci_hcd and address 2
usb 2-1: configuration #1 chosen from 1 choice
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
pl2303 2-1:1.0: pl2303 converter detected
usb 2-1: pl2303 converter now attached to ttyUSB0
usbcore: registered new interface driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
  • Всё готово, теперь снимаем при помощи команды:
    make_capture 1 5 2 3
В этом примере будет сделано 2 кадра с экспозицией 5 секунд, задержка между кадрами 3 секунды, задержка поднятия зеркала 1 секунда.
Следует так же отметить, что таким способом можно отсекать выдержки от 1 секунды и больше по Exif. Физически передавать сигнал можно и быстрее, однако в Exif при этом пишутся неправильные данные. Точно так же, выдержки в данном случае отсекаются с точностью 1 секунда. Впрочем, для установки, которая должна отсекать длинные выдержки, это приемлемо.

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

Работает на камерах по крайней мере с firmware 1.0.4, имеются частные сообщения, что оригинальная схема должна работать с 400D. Выясняется в настоящее время.

Благодарности
Эта статья появилась в результате усилий многих людей, которых мне хотелось бы поблагодарить за помощь:
  • Michael A. Covington for his original article "Building a Cable Release and Serial-Port Cable for the Canon EOS 300D Digital Rebel".
  • Евгению Ромасу aka BrainBug за ссылку на оригинальную статью по управлению фотоаппаратом при помощи COM-порта, а так же за ценные мысли, высказанные в частных сообщениях.
  • Антону aka NTRNO за то, что выискал ключевые посты в недрах Астрофорума и выдал идеи по управлению камерой в Linux.
  • Всем участникам Астрофорума, так или иначе участвовавших в темах управления фотокамерой при помощи компьютера.
  • Алексею Ропяному, который экспериментально выяснил особенность фотокамеры, предложил изменить схему и использовать сигнал DTR для закрывания затвора.
  • Леониду Серёжкину за реализацию схемы в железе.
А так же огромная благодарность сотрудникам кафедры Физики твёрдого тела №25 МИФИ за поддержку и понимание.

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

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

20 Октябрь 2007

Конференция в Санкт-Петербурге и не только

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


Понедельник
Прибыв на "Красной стреле" ранним утром в Санкт-Петербург, мы с коллегой отправились решать организационные вопросы в ИТМО - там не сразу, но достаточно быстро выяснилось, кто мы такие и зачем, собственно, прибыли. Далее нас отправили вселяться в общежитие.

Вот тут нам помогли яндекс-карты, закачанные в N800, которые я предупредительно заготовил перед поездкой, несмотря на клятвенные заверения моего коллеги, что "всё он помнит и знает". Заселились в общежитие, расположились, и я, прихватив с собою ноутбук и планшетку N800 с картами, отправился в ИТМО. Там в первый день были пленарные доклады, на одном из которых докладчик говорил долго и очень поучительно о том, что "оптика требует некоторых познаний общей физики и таки некоторых умений", и вообще говорил о том, что оптика - это увлекательно, и о том, почему ей стоит увлекаться и интересоваться. Говорил он это, как ни удивительно, профессиональным же оптикам, а так же аспирантам и людям с учёными степенями, которые оптикой занимаются, её любят и ценят. Не очень понятно, зачем - ведь если бы нам оптика не нравилась, мы бы здесь все не собрались...

Поняв, что ничего нового я от выступающего не узнаю, решил побродить по институту и позвонить товарищу Алексею aka Ingolmo, который на убунту-форуме решил организовать культурную встречу любителей Линукс в Питере. Неожиданно выяснилось, что Алексей - член Оргкомитета конференции "Оптика-2007", так что я уже немного испугался, подумав, что это какой-нибудь убелённый сединами старец решил тряхнуть-таки стариной и пропустить по чарке с молодёжью :-)

Алексей оказался значительно моложе - студент ИТМО. Узнав, что я в Питере никогда ранее не был, тут же предложил мне посетить окрестности и обсудить общие темы на свежем воздухе.

Неожиданная экскурсия
Вот тут я прочувствовал всю мощь гордости питерцев за свой город. Описывая достопримечательности и рассказывая увлекательные истории, Ingolmo провёл меня по значительной части города и показал столько, что я и половины не упомню.


Через некоторое время к нам присоединилась Ольга, знакомая Алексея, и узнав, что я гость из Москвы, так же присоединилась к Алексею в деле показа города. Рассказы, истории и легенды лились на меня сплошным потоком :-)



Помимо Адмиралтейства, Штаба, Площади восстания и других замечательных мест, мне показали совершенно изумительную плюшечную в советском стиле. То есть вот те самые пончики, в общепитовских тарелках, и горячий кофе с молоком, который обычно бывает в детских садах - давно знакомый вкус, но в такой атмосфере и в таком замечательном обществе...

Дело приближалось к вечеру, и обратно мы возвращались по освещённым фонарями улицам... Да, друзья, это я вам доложу просто фантастическое зрелище.



Наверное, мне стоило выложить фотографии - и некоторые я постараюсь опубликовать. Но я не смогу передать самого главного - впечатления. Оно ни за что не было бы таким глубоким без тех, кто решил показать мне Питер. Да, есть экскурсии, но это совсем не то, когда тебе показывают интересные места в городе те, кто его любит и кто искренне им гордится. Моя признательность Ольге и Алексею не имеет границ.

Старания моих друзей привели к ожидаемому результату - я остался покорён городом и уж точно буду сюда наведываться.


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




Меня потянуло на причал, и я не пожалел, что пошёл туда - там я увидел парусник "Мир", о котором давно читал. На фотографиях в книгах он кажется намного больше, но и в живую он весьма немаленький. Кроме того, было несколько барж и подводная лодка - для меня такое зрелище в диковинку :-)



Очарование Питером усилилось настолько, что мне уже и не хотелось уезжать обратно...


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

Был в ИТМОшном музее - там выставили всё, чем институт мог гордиться: рубиновые и неодимовые кристаллы для лазеров, голограммы, объективы.

После визита в ИТМО отправился обратно, готовиться к выступлению. И тут меня извещают, что встреча питерский пользователей Убунты будет в СПбБаре на Комендантском 17. Хотелось бы немного попенять питерским убунтовцам за организацию мероприятия - ребята, с местом проведения встреч уже надо как-то определиться, а не выискивать его каждый раз...


Четверг
Перечитал речь, всё с собой взял флешку, диск, N800 и ноутбук - в общем, при полной амуниции. Сдали доклады, сидим с Ingolmo слушаем. Секция по оптической информатике, почти всё - про обработку изображений. Отлично, скучать не придётся.

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

Второй доклад нас по началу обрадовал. Какой-то студент четвёртого курса приволок (на оптическую конференцию!) чисто программистский доклад, причём о том, как он лихо разработает универсальную среду для управления оптико-электронными приборами, какая гибкая и мощная она будет, вся на скриптах и модулях и проч. и проч.
Там появлялись правильные слова про открытые исходные тексты, про GNU GPL и даже произносились слова UNIX и Linux (в правильной транскрипции). После того, как руководитель секции спросил "Какие вопросы?" поднялась одна пафосная леди и начала наезжать на докладчика: "Ну, вот тут все в основном оптики собрались, а вы нам про программы рассказываете. Так чем ваша разработка лучше матлаба, который можно купить за 7 баксов?". Тут я с места даму поправляю - говорю, "Во-первых, не 7, а 60000 баксов, а во-вторых, есть ещё Октава - так она вообще бесплатная!" Паренёк такого видно не ждал и что-то стал напирать на модульность и скрипты. После того, как его ещё один орёл поклевал, паренёк сознался, что его "уникальная система" на самом деле Линукс и скрипты. Теперь встаю я и спрашиваю: "ну, а поподробнее насчёт скриптов - какие языки?". Отвечает - "Lua". Я сажусь в недоумении. И это уникальная разработка!? Управление оптическими приборами!? Ещё послышались какие-то всхлипы про Питон. От парня не отвязываются, допекают: "Так чем оно лучше матлаба?". Паренёк совсем раскис и заявил: "а что, вы сможете его на Юникс поставить?" Тут мы с Ingolmo громко вдвоём: "ДА!!! И он работает!" Паренёк смутился ещё больше и спрашивает: "Ну и что, нормально работает?". Встаю и говорю: "Да у меня вот он, матлаб, на ноутбуке стоит - хотите покажу!? На нём моя работа выполнена!"... В общем, председатель секции почуял, чем это пахнет, и молодых специалистов как-то попробовал утихомирить: "ну, это уже дискуссия, давайте вопросы".
Задал вопрос сам председатель секции: "Вот вы говорили в докладе, что программы в вашей системе могут думать. На каких эвристических методах вы хотите строить когнитивные модели?". Сам председатель - большой мыслитель, он хочет Фурье-голографией человеческое мышление описывать... В общем, дядя большой спец в таких вопросах. Парень смутился окончательно :-)

Третий доклад был мой. Быстро его проведя и уложившись в свои ритуальные 8 минут (из положенных 15), отвечал на вопросы. Их было не много, и на вопрос "а где найти вашу программу, которая из обычной камеры делает техническую" я ответил просто: "в любом дистрибутиве Линукс она идёт в комплекте" :-) Была ещё небольшая дискуссия между мной и одним со-руководителем секции по теме "как считать децибелы". Меня прямо на выступлении пытались убедить, что я наврал в расчётах - ничего себе, думаю, дела! Ладно, пояснил, рассказал. Мне говорят, что всё равно многовато. Давайте, говорю, в перерыве обсудим. Подхожу в перерыве к этому аксакалу и выясняю вопрос: мол, так и так, то мерил, это получил - так где я не прав? Аксакал начал вспоминать былую молодость и то, как и где он эти децибелы мерил... Кхм, подумал я, так если не знаешь - зачем прикалываешься? :-) В общем, сошлись на том, что мерил я всё правильно, а один из нас не в теме :-)

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

Последний, пятый, доклад - про моделирование ошибок при передаче данных по оптоволокну. Добротная студенческая работа, хотя до "международной конференции" далековато. Но всё равно неплохо.


Пятница
Немного побродив на прощание по городу и забрав свой командировочный лист из ИТМО, я вспомнил о встрече убунтовцев в Питере. И тут выясняется: Ingolmo не придёт, epsil0n и Sinkaiya тоже, форумчан там почти никого не будет и во всяком случае я их не знаю. Очень не понравилось объявление на ЛОРе - это совсем не то место, куда вообще следует сообщать о подобных вещах. Хабр имеет ещё меньшее отношение к Линукс и убунте тем более - я не понимаю, это что, способ набрать народ!? А зачем? Придут несколько человек - ну и хорошо. Большие сборища имеют обыкновение превращаться в пьянки без какого-то осмысленного общения. Тем более в баре. Тем более с людьми с ЛОРа...

И тем не менее, я туда поехал - до поезда было несколько часов, а сидеть одному в общаге - не очень весело. На выходе из метро меня ждал Fabian, за что ему большое спасибо. В общем, быстро добрались до места, где уже шло мероприятие, которое можно назвать "банкет" :-)



Взяв по 0.5 "Невского", мы с Fabian присоединились к местным поклонникам Дебиан, зашедшим по случаю на вечеринку. Увидели на ноутбуке новый Ubuntu 7.10, посмотрели, поигрались с ним. Я, конечно, сразу стал мучать GIMP и смотреть, полегчало ему или нет. Увы, искомого (16-бит на канал и цветовые пространства) я в нём не нашёл, хотя это был 2.4.0. Ну и ладно. К тому времени "Невское" кончилось и я решил "ещё по чарке" под совершенно умопомрачительные гренки с майонезом.



Время от времени посматривая на часы, я вспомнил, что меня на Московском вокзале поезд ждать не будет, и мы с Fabian где-то в десятом часу оттуда двинулись к метро. Я доехал, пришёл на вокзал, и тут "Невское" сыграло со мною шутку: в неверном свете питерских фонарей мне показалось, что "17" - это номер вагона, а "8" - это место. А на самом деле всё было как раз наоборот... А ведь 17 вагон был последним :-) Чуть на поезд не опоздал... Но доскакать до восьмого вагона я успел и буквально через минуту поезд отправился. В остальном без приключений - добрался до дома и понемногу привыкаю к прежней обстановке.


Итоги
Намеченный для выступления доклад сделан, вопросы отвечены, выводы из вопросов сделаны. Культурная программа перевыполнена на 250%, а так же принял участие во встрече питерских собратьев по никс-системам. В общем, поездка удалась!

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

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

15 Октябрь 2007

Растровый графический редактор в Linux: Krita

Если кто искал среди графических редакторов под Linux 16-битный цвет, работу в CMYK и графический интерфейс в одном флаконе - встречайте Krita, очень достойный редактор растровой графики.


Общие впечатления
Не только GiMP, nip2 и ImageMagick умеют обрабатывать растровые изображения в Линукс - есть ещё один замечательный графический редактор - это Krita. Здесь есть и 16-битный CMYK, и RGB, и L*a*b* и другие пространства цветов. И хотя редактор несколько сыроват, но довольно быстр и с приличной функциональностью.

Редактор больше походит на фотошоп лучших его дней, чем инопланетный GiMP.

Те же боковые панели, слои, кисти и набор инструментов рисования. Есть очень приличный собственный RAW-конвертор: не такой мощный, как dcraw, но вполне справляющийся со своей работой.


Цвета и разрядности
Реализованы средства работы в следующих цветовых пространствах:

  • RGB 8, 16 и 32-разрядные;
  • CMYK 8 и 16 разрядные;
  • L*a*b 16 разрядные;
  • YCbCr 8 и 16 разрядные;
и другие. В общем, разнообразие большое.



Перевод в другие цветовые пространства довольно быстрый, есть декомпозиция по цветовым слоям (как в GiMP).


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

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



Размытие по Гауссу, Нечёткая маска, простые методы выделения контуров, вейвлет-алгоритмы подавления шумов - в общем, довольно скромно, однако сомневаюсь, чтобы команда Krita на этом остановилась.


Итоги
Пока что Krita несколько сырая, но многие важные инструменты редактирования изображений есть, и весьма приличные. Есть работа с 16 и 32 разрядным цветом, перевод между цветовыми пространствами, небольшой набор алгоритмов обработки изображений.

Не стоит разводить религиозных войн на тему "Gimp vs Krita" - просто нужно использовать нужный инструмент для данной конкретной работы. Что-то есть в гимпе, что-то в крите. В любом случае, много места крита не займёт и кошелёк не опустошит.

Ссылки
Интересное сопоставление GiMP и Krita есть здесь, правда, на английском.
читать далее...

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

13 Октябрь 2007

Командировка в Питер

В полночь, в воскресенье 14 октября "Красная стрела" унесёт меня в северную столицу, где проводится конференция "Оптика-2007" в ИТМО, институте точной механики и оптики.
Помимо официальной части (доклад на конференции), запланирована культурная программа, в которую может войти участие во встрече питерских пользователей Ubuntu.

Надеюсь, что Билайн в Питере меня не подведёт и я смогу скачивать почту. Так что если кто хотел заказывать диски или что-то спросить - пишите, постараюсь ответить.

Вернусь 19 октября, в субботу. Оставайтесь на нашей волне. :-)

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

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

08 Октябрь 2007

Настройка conky: Индикация состояния системы в Linux

Весьма удобно следить за состоянием своей системы, не слишком отрываясь от других задач. Здорово бросить взгляд на информативную панельку - и сразу получить всю информацию о работы системы, которая нужна. Именно для этих целей есть системные мониторы, например conky. Настроить conky в Linux очень просто, о чём и будет этот пост.


Умолчания, стиль и необходимость настройки conky
По умолчанию, установленный conky выглядит жутковато. Это такой тонкий намёк на то, что программу нужно подгонять под себя и свои представления об удобстве. Дело это до некоторой степени кропотливое, но сделав это раз, потом много раз экономим время.

Настраивается conky через свой конфиг, который нужно скопировать из /usr/share/doc/conky/examples/ в свой домашний каталог и переименовать в .conkyrc
Теперь открываем конфиг в своём любимом текстовом редакторе и начинаем его смотреть. Делится конфиг на две части: первая часть отвечает за то, как будет выглядеть системный монитор, а вторая - что он, собственно, будет отображать. Деление не строгое, и открыв конфиг, можно понять, почему.


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

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

Во-вторых, процесс это исключительно интерактивный: меняете настройку - прибиваете текущий процесс conky - запускаете новый - смотрите - меняете настройку... и так далее. Лучше руководствоваться Первой Заповедью Радиотехники - "Не крути две ручки сразу". Иначе потом трудно ловить ошибки в конфиге и думать, что привело к нежелательным последствиям.

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

# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=9
Время обновления, если в этом нет насущной необходимости, лучше ставить 1-2 секунды, хотя можно и меньше (тогда возрастает потребление ресурсов):

# Update interval in seconds
update_interval 2.0
Расположение по углам экрана, что тоже хорошо прокомментировано и потому понятно:
# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right
Ещё подробностей можно прочитать в официальном FAQ conky или, пользуясь своими знаниями английского, догадаться :-)

Это всё довольно просто - главное развлечение начинается при настройке переменных, которые и будут отображаться. Лучше всего за основу взять какой-нибудь образцовый конфиг отсюда и брать понравившиеся элементы. В этой замечательной статье (на русском!) есть много интересных идей - только читать её нужно с конца (пропуская философские отвлечения).
Короче говоря: вторая часть конфига выглядит примерно так
${переменная параметры}
$элемент оформления
${color цветтекста}
${переменная параметры}
...

Назначение переменных в основном понятно из их названий:
  • exec выводит на экран текст, возвращаемый вызываемой программой;
  • execbar и execgraph визуализируют вывод исполняемой команды в виде диаграммы или графика (выводимое значение должно лежать в пределах 0..100);
  • execi и texeci запускают команду циклически с интервалом (texeci — с интервалом, заведомо большим времени исполнения). execibar и execigraph полностью аналогичны execbar и execgraph, но для циклического выполнения команд;
  • if_running, if_existing и if_mounted — выводят всё вплоть до endif, если выполняется процесс, существует файл и монтирована точка монтирования, соответственно;
  • else — выводить, если ложны все вышестоящие выражения.

Надо сказать, что применение execi особенно для скриптов - дело довольно затратное, и скрипты лучше отрабатывать таким образом не часто (раз в несколько секунд).

Ниже - несколько наиболее интересных решений для отображения данных в conky.

Показывать текущее время в формате часы:минуты:секунды
${time %k:%M:%S}

Отображение занимаемой приложениями памяти
$mem/$memmax
Вот тут у меня был лёгкий конфуз: часто значения отображаемой памяти были неприлично маленькими - это происходит оттого, что не учитывается память, занятая кэшем.

Вывести три самых охочих до процессора приложения:
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
Несколько более сложным является отображение ACPI-данных о процессоре или питании системы. В этом нам помогут замечательные программы cat и cut. Вот как, например, вывести информацию о температуре на процессоре и включения троттлинга:

${color lightgrey} Core: $color ${
execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}

Для удобства я подсветил цветом: красным - команды conky, серым - текст, который будет выведен, синим - системные команды, которые дают необходимые значения, зелёным - пути до данных ACPI (у вас они будут, скорее всего, другими).

Более навороченные трюки, типа отображения степени зарядки батареи ноутбука, описываются опять-таки здесь ближе к концу статьи. Напоследок - скриншот моего conky и текст его конфига.



И текст конфига .conkyrc который это обеспечивает (внимание, для отображения заряда батарей используется обращение к скрипту, которого у вас может не быть). Вот образец конфигурационного файла conky
# Conky advanced configuration
background yes

# Use Xft?
use_xft yes

# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=9

# Text alpha when using Xft
xftalpha 0.8

# Update interval in seconds
update_interval 2.0

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window no

# If own_window is yes, you may use type normal, desktop or override
own_window_type normal

# Use pseudo transparency with own_window?
own_window_transparent yes

# If own_window is yes, these window manager hints may be used
#own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 300 5

# Draw shades?
draw_shades yes

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders no

# Draw borders around graphs
draw_graph_borders no

# Stippled borders?
stippled_borders 8

# border margins
border_margin 40

# border width
border_width 1

# Default colors and also border colors
default_color white
default_shade_color black
default_outline_color black

# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right
#alignment none

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 12
gap_y 12

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale no

# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer no

# Maximum size of buffer for user text, i.e. below TEXT line.
#max_user_text 16384

# Allow for the creation of at least this number of port monitors (if 0 or not set, default is 16)
#min_port_monitors 16

# Allow each port monitor to track at least this many connections (if 0 or not set, default is 256)
#min_port_monitor_connections 256

# variable is given either in format $variable or in ${variable}. Latter
# allows characters right after the variable and must be used in network
# stuff because of an argument

# stuff after 'TEXT' will be formatted on screen

TEXT
$nodename - $sysname $kernel on $machine
$stippled_hr
${color lightgrey}Current time: $color ${time %k:%M:%S} - ${color lightgrey}Uptime:$color $uptime ${color lightgrey}- Load:$color $loadavg
${color lightgrey}CPU Usage:${color #cc2222} $cpu% ${cpubar}
${color blue}${cpugraph 0000ff 00ff00}
${color lightgrey}RAM Usage:$color $mem/$memmax - Swap Usage:$color $swap/$swapmax - $swapperc%
${color lightgrey}File systems: $color${fs_free /}/${fs_size /} ${fs_bar /}
${color lightgrey}Processes:$color $processes ${color grey}Running:$color $running_processes
$stippled_hr
${color}Name PID CPU% MEM%
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color}Mem usage
${color #ddaa00} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1}
${color lightgrey} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2}
${color lightgrey} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3}
$stippled_hr
${color blue}System health ${color lightgrey}
${color lightgrey} Core: $color ${execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}
${color lightgrey} Core clock: $color ${execi 2 cat /proc/cpuinfo | grep 'cpu MHz' | cut -c12-}
$stippled_hr
${color red}Energy subsystem:
${color lightgrey}Power: $color${execi 2 cat /proc/acpi/ac_adapter/AC0/state | cut -c26-} - ${color lightgrey}Charging state:$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep charging | cut -c26-}
${color lightgrey}Present rate :$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep 'present rate' | cut -c26-} - ${color lightgrey}Battery energy:${color green} ${execi 2 /usr/bin/myscript/kmvbatterystate}%
$color $stippled_hr
${color #ddaa00}Port(s)${alignr}#Connections
$color Inbound: ${tcp_portmon 1 32767 count} Outbound: ${tcp_portmon 32768 61000 count}${alignr}ALL: ${tcp_portmon 1 65535 count}
${color #ddaa00}Inbound Connection ${alignr} Local Service/Port$color
${tcp_portmon 1 32767 rhost 0} ${alignr} ${tcp_portmon 1 32767 lservice 0}
${tcp_portmon 1 32767 rhost 1} ${alignr} ${tcp_portmon 1 32767 lservice 1}
${tcp_portmon 1 32767 rhost 2} ${alignr} ${tcp_portmon 1 32767 lservice 2}
${color #ddaa00}Outbound Connection ${alignr} Remote Service/Port$color
${tcp_portmon 32768 61000 rhost 0} ${alignr} ${tcp_portmon 32768 61000 rservice 0}
${tcp_portmon 32768 61000 rhost 1} ${alignr} ${tcp_portmon 32768 61000 rservice 1}
${tcp_portmon 32768 61000 rhost 2} ${alignr} ${tcp_portmon 32768 61000 rservice 2}

Скрипт для отображения заряда батареи /usr/bin/myscript/kmvbatterystate

#!/bin/sh
MAX=`cat /proc/acpi/battery/BAT0/info | grep 'design capacity:' | cut -b26-30`
CUR=`cat /proc/acpi/battery/BAT0/state | grep remaining | cut -d':' -f2 | cut -d' ' -f7`
PRC=$(( $CUR * 100 / $MAX ))
echo $PRC
Ещё раз напомню, что у вас пути в /proc к информации об ACPI могут быть другими.

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

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

01 Октябрь 2007

Выводим Nokia N800 в Интернет через ноутбук с WiFi

Задача: требуется вывести Nokia N800 (или аналогичное устройство) в Интернет через компьютер с беспроводной сетью. Предполагается, что интернет проводной или ADSL\модем.
Решение: требуется выполнить простые настройки на стороне настольной машины и N800.

На стороне машины, подключённой к Интернет
Нужно создать простую одноранговую ad-hoc сеть и дать статический IP-адрес сетевому беспроводному интерфейсу. После этого делаем NAT и всё работает. Для беспроводного интерфейса eth3 и сети с идентификатором virens команда выглядит так (от рута):

# iwconfig eth3 mode Ad-Hoc channel 1 essid virens
В /etc/network/interfaces пишем что-то вроде:

auto eth3
iface eth3 inet static
address 10.106.146.1
netmask 255.255.255.0
wireless-mode ad-hoc
wireless-channel 1
wireless-rate auto
wireless-essid virens

Теперь делаем NAT:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE
При этом eth1 это интерфейс, который подключён к Интернету. Соединение не шифруется - нужно сначала проверить, что всё работает, а потом городить огород с шифрованием.


На стороне Nokia N800
Заходим в меню "Инструменты" --- "Панель управления", ищем там "Соединения", запускаем. Жмём в открывшемся окне на кнопку "Соединения", "Создать".

Даём соединению любое имя, отмечаем галку WLAN, жмём Дальше.

Здесь задаём essid - такой же, какой дали в iwconfig, в моём примере это virens. Шифрование отсутствует, тип сети - одноранговая ad-hoc. Далее.

Здесь нас поздравят, но радоваться рано - тыкаем по кнопке "Дополнительно". Откроется диалоговое окно, выбираем вкладку IP-адреса.

Здесь снимаем галку "Получать IP-адрес автоматически" и вводим адреса:
IP-адрес: 10.106.146.2
Маска подсети: 255.255.255.0
Маршрутизатор: 10.106.146.1

Адрес DNS должен быть от того интерфейса, который обеспечивает выход в сеть - иначе говоря, содержимое /etc/resolv.conf

Основной адрес DNS: 10.106.255.199
Это всё настройки моей сети, подключённой к Корвету. У вас они будут \ могут быть другими.
Весь процесс настройки таблетки показан на комбинированном скриншоте:



По большому счёту всё. Некоторые применяют фильтрацию по мак-адресу, но у меня после этого возник забавный глюк: Kate, KDVI, KPDF и Kile стартуют через 1.5-2 минуты, а потом так и иксы начинают делать при их перезапуске - до перезагрузки системы. Поэтому на мак-фильтрацию я плюнул, благо у меня в районе нет никого с WiFi в радиусе 500 метров в любую сторону :-)

Ссылки
Собственно, статья является сокращённым переводом этого замечательного поста заокеанского коллеги-блоггера, за что ему большое человеческое спасибо.
читать далее...

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

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

Архивы блога

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


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

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

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

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

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

Экипаж

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

Кнопки