Ugolnik's Family blog

Различные заметки обо всем.

Browsing Posts tagged Linux

Сегодня совершенно случайно наткнулся на весьма полезную утилиту app-misc/grc – она позволяет раскрасить вывод консольных команд.
В комплекте с программой идет несколько regexp’ов для раскраски (размещены в /usr/share/grc/): conf.irclog, conf.diff, conf.ldap, conf.ping, conf.traceroute, conf.cvs, conf.gcc, conf.log, conf.netstat, conf.esperanto, conf.configure, conf.wdiff, conf.proftpd
В файле /etc/grc.conf прописываются соответствия команд конфигурационным файлам.

Остается только прописать альясы в ~/.bashrc

[[ -f /usr/bin/grc ]] && {
 alias configure="grc --colour=auto configure"
 alias make="grc --colour=auto make"
 alias gcc="grc --colour=auto gcc"
 alias diff="grc --colour=auto diff"
 alias cvs="grc --colour=auto cvs"
 alias ping="grc --colour=auto ping"
 alias traceroute="grc --colour=auto traceroute"
 alias netstat="grc --colour=auto netstat"
}

Simple Viewer GL Сегодня ночью взялся за доработку вьювера изображений – Simple Viewer. Давно хотелось отказаться от использования Gfl SDK. Эта библиотека является частью проекта XnView. Библиотека хорошая и удобная, хорошо документированная. Поддерживает более 100 графических форматов. Но она проприетарная.
Перейти от непосредственной работы с Xlib к OpenGL, что повысило бы скорость работы вьювера за счет аппаратного ускорения. Так же добавил возможность скроллинга и изменения масштаба с помощью мышки.
На данный момент использую Imlib2 для загрузки и декодирования изображений. Но т.к. Imlib2 не смог загрузить тестовый jpeg, созданный в GIMP, то мой выбор остановился на libjpeg. Для анимированных gif использую giflib.

Итак, что получилось в итоге, плюсы:

  • создание списка файлов и поиск позиции, с которой начался просмотр;
  • отказ от Gfl SDK в пользу Imlib2, libjpeg, libpng, giflib, libtiff;
  • поддержка JPEG через libjpeg;
  • поддержка PNG через libjpng;
  • поддержка GIF через giflib;
  • поддержка TIFF через libtiff;
  • поддержка PSD (еще не все фичи формата реализовал);
  • поддержка ICO (реализовал так же поддержку фреймов в формате PNG);
  • использование OpenGL;
  • отображение координаты и цвета пикселя под курсором (ключ командной строки -p или клавиша P);
  • разбиение больших изображений по нескольким текстурам;
  • быстрое скролирование изображения с помощью клавиатуры или мышки;
  • произвольное масштабирование изображения с помощью клавиатуры (- / +) или колеса мышки;
  • корректное автоматическое масштабирование изображений, не вмещающихся в окно вьювера;
  • отображение прогресса загрузки больших изображений;
  • возможность просмотра многостраничных изображений (клавиши PgUp / PgDn)

 
К сожалению есть и минусы:

  • анимированные GIF все еще не поддерживаются (но есть возможность просмотра отдельных фреймов);
  • нет поддержки многостраничных изображений сделана поддержка для TIFF, GIF, ICO;
  • нет никакой поддержки PSD; есть, сегодня ночью написал первую реализацию;
  • нельзя посмотреть EXIF (планирую сделать);
  • нет возможности переназначить “горячие” клавиши (планирую сделать);
  • нет информации о количестве бит на канал изображения изображения загруженные с помощью Imlib2 не имеют информации о кол-ве бит на пиксель;
  • нет возможности повернуть изображение (планирую сделать);
  • у меня есть изображение в формате jpeg (созданное для теста в GIMP), которое Imlib2 не может загрузить, хотя libjpeg спокойно его грузил; перешел на libjpeg – теперь проблем с JPEG нет;
  • не реализована загрузка огромных изображений маленькими блоками (это должно позволить быстро грузить огромные изображения и сильно экономить память);

 


В данный момент исходные коды Simple Viewer GL доступны на SourceForge.net в SVN. Забрать последнюю версию исходных кодов можно следующей командой:

svn co https://simpleviewer.svn.sourceforge.net/svnroot/simpleviewer simpleviewer

 


Добрый человек с LOR скрывающийся под ником AnDoR сделал ebuild для вьювера – simpleviewer-gl-9999.ebuild. Большое ему за это спасибо.

 


Предыдущая версия Simple Viewer.

Вот так “работает у меня Chromium. Сборка бинарная. Некоторые сайты он отображает, большинство нет.
В динамике это выглядит так – вводим адрес, грузится страница, рендерится, через секунду-пол она перекрывается этой фигней. Если нажать Ctrl + T (открыть новую закладку), то сразу получаем эту страницу.
Раньше Хром “радовал” меня падениями при попытке открыть локально картинку в формате JPEG. В консоль и лог ничего не писал. Просто тихо падал. С другими форматами у него проблем я не замечал.
За приличное время использования Chromium (тогда он еще работал, хотя периодически и доставал сообщениями о недоступности страницы) я не нашел ничего сильно выдающегося относительно других браузеров.

Так что теперь я снова пересел на “тормозной” Firefox + Vimperator + NoScript + Flashblock.

Я использую утилиту xhkeys для обработки мультимедийных клавиш. Иногда “залипает” клавиша и начинается запуск процесса без до тех пор, пока ядро не прибьет “лишние” процессы при нехватке памяти.

Что бы не запускались лишние копии процесса, я написал такой скрипт:

ps -ef | grep PROGRAM | grep -v grep >/dev/null ; if [ $? -eq 1 ] ; then PROGRAM; fi

Пример настройки корпоративного почтового сервера на базе Postfix в Ubuntu Linux.

Коротко о статье:

  • ОС Ubuntu 9.10
  • БД MySQL
  • Почтовый сервер Postfix
  • Антивирус ClamAV
  • Web-интерфейс PostfixAdmin
  • Антиспам Spamassassin, Razor, Pyzor и стандартные средства самого Postfix.

При подключении дополнительных оверлеев с помощью утилиты layman в дереве появляется много не нужных пакетов/версий. Которые могут (и такое бывает не редко) мешать другим пакетам из других оверлеев, или просто не подходить под ваши требования.
Один из постоянных посетителей LOR под ником KRoN73 подсказал удобное и простое решение. В систему подключаются необходимые оверлеи, но не делаются доступными для emerge. А по мере необходимости нужный пакет добавляется в локальное дерево симлинком.

В /etc/make.conf добавляем путь к локальному оверлею:

PORTDIR_OVERLAY="/usr/local/portage"

В дальнейшем в него будем добавлять симлинки на нужные пакеты.

В /etc/eixrc добавляем:

source /usr/local/overlays/layman/make.conf

Теперь в переменной $PORTDIR_OVERLAY находится список оверлеев, которые были подключены с помощью layman.
Теперь туда же (/etc/eixrc) добавляем строки:

ADD_OVERLAY="
/PATH/TO/YOUR/OWN/OWERLAY
$PORTDIR_OVERLAY
"

После таких манипуляций eix будет знать о всех пакетах в дереве и оверлеях, а emerge будет видеть только те пакеты, которые вы подключили с помощью симлинка.

На локальной машине (та, с которой хотим получить доступ к серверу) создаем пару ключей:

andrey@localhost ~ $ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/andrey/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/andrey/.ssh/id_dsa.
Your public key has been saved in /home/andrey/.ssh/id_dsa.pub.
The key fingerprint is:
7a:aa:7a:3a:9a:ba:6a:4a:2a:da:2a:2a:8a:2a:4a:3a andrey@localhost

Поле passphrase оставляем пустым.

В итоге получим два файла:

andrey@localhost ~ $  ls -l ~/.ssh
-rw-------    1 andrey     users          526 Nov  10 01:00 id_dsa
-rw-r--r--    1 andrey     users          330 Sep  10 01:00 id_dsa.pub

Размещаем файл id_dsa.pub на сервере, на котором хотим авторизироваться используя ключ:

andrey@localhost ~ $ scp id_dsa.pub andrey@SERVER_ADDRESS:~/

Используйте любой удобный для вас способ.

Теперь логинимся на сервер под тем пользователем, для которого делаем авторизацию по ключу. И помешаем наш публичный ключ в ~/.ssh/authorized_keys:

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys2
$ chmod 600 ~/.ssh/authorized_keys2
$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys2
$ rm ~/id_dsa.pub

Готово, можно проверять:

andrey@localhost ~ $ ssh andrey@SERVER_ADDRESS

Если все правильно, то пароль запрошен не будет.

Статья с картинками и примерами PS1 для BASH – 8 Useful and Interesting Bash Prompts.

Статья Ивана Веселова xmonad: функциональный оконный менеджер очень доступно рассказывает о возможностях и настройке тайлового WM Xmonad.

Автор указывает следующие уникальные характеристики:

  • стабильный, быстрый, лёгкий и простой
  • написан на чисто функциональном языке Haskell
  • возможность работы без использования мыши
  • поддержка Xinerama (многоэкранные конфигурации)
  • поддержка плавающих окон, табов и декораций
  • интеграция со средами GNOME и KDE
  • индивидуальные компоновки окон на каждом рабочем столе
  • огромная и постоянно растущая библиотека расширений
  • развёрнутая и подробная документация
  • большая и активная команда разработчиков, дружелюбное сообщество

Как и обещал, выкладываю свой CPU-монитор, который я написал для Ion3. Естественно его можно использовать для любого WM.
Плюсы – он делает все то, что нужно было мне ;)
Минусы – конфигурация размера окна и цветов не вынесена в конфигурационный файл, но настоящего джедая это не должно отпугнуть.

Скачать CPU Statistic History, лицензия GPL v2.