Ugolnik's Family blog

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

Browsing Posts in Software

Не предполагал, что Cubic Player все еще жив. Ведь времена DOS’а давно прошли. Ан нет, есть версия и для Windows, и для UNIX-подобных систем. По скришотам на сайте это все тот же Cubic Player.

UNIX-версия Open Cubic Player – все еще имеет баги и нереализованные возможности. На сайте шаги по сборке плеера под разные дистрибутивы.

Форматы, которые поддерживает Open Cubic Player:

* 669 – 669 Composer module;
* AMS – Velvet Studio module;
* BPA – Death Ralley archive;
* CDA – compact disk CD audio track;
* DMF – X Tracker module;
* IT – Impulse Tracker module;
* MDL – Digi Tracker module;
* MID – standard midi file;
* MOD – amiga ProTracker 1.1b module and variants;
* MP3 – MPEG audio format level 1-3;
* MTM – Multi Tracker module;
* MXM – Mxmplay module;
* OKT – Oktalyzer module;
* PLS – playlist, works also with M3U and PLT playlist files;
* PTM – Poly Tracker module;
* S3M – Sream Tracker 3 module;
* SID – PSID sid file;
* UMX – Unreal module file;
* ULT – Ultra Tracker module;
* WAV – Microsoft RIFF wave file;
* WOW – WOW Tracker module;
* XM – Fast Tracker 2 module;

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.

Сайт ProGIMP. Краткое содержание (скопипастил с сайта):
- История, возможности, сравнение с Фотошопом
- Скачать GIMP, плагины, градиенты
- Релизы GIMP, новости проекта
- Настройка интерфейса, горячих клавиш
- Разнообразные кисти для GIMP
- Цели и задачи, которые мы ставим
- Уроки по GIMP
- Статьи, заметки, приемы
- Примеры работ, выполненных в GIMP
- Полезные ресурсы по теме GIMP

Перейдя с OSS на ALSA одновременное проигрывание звука с нескольких источников стало невозможным. Оно и понятно, в моей HDA Intel (Realtek ALC861) нет аппаратного микшера. Все советы настроить ALSA в ~/.asoundrc ни к чему не приводили. Кроме того, свежая (относительно, конечно) версия ALSA просит удалить этот файл вообще.
Сегодня наткнулся на статью ALSA Software mixing – и этот конфиг решил мою проблему. Во всяком случае MPD и MPLAYER научились одновременно воспроизводить звук ;)

ion3 Свершилось, я окончательно переехал на Ion3, благополучно забыв Awesome. А все из-за того, что новые версии (начиная с 3.2.x) Awesome стали одна хуже другой. Борьба с разработчиками и глюками меня утомила. Пришлось вспомнить слова нескольких LOR’овцев – “брось Awesome, переходи на Ion3″.

Первое, что бросилось в глаза – комбинации клавиш по умолчанию сделали не для людей. Ладно, потерпим.
Из своего предыдущего опыта я решил изучать Ion3 сразу же в рабочем режиме, и уже к вечеру я был очень им доволен.

Плюсы расписывать не буду – их очень много, просто поверьте мне на слово – Ion3 на голову выше Awesome.

Еще пару часов спустя я написал парочку нужных мне модулей для статус-бара. Хоть это и был для меня вновь, но обработчик ошибок в LUA-скриптах Ion3 не валился, как это делает Awesome, а сообщал об ошибке.
Далее настроил META и ALTMETA. В качестве META выбрал Left_Windows_Key и Right_ContextMenu_Key в качестве ALTMETA.

Доработал тему оформления ios и статус бар на свой вкус.

Настройку META-клавиш делал так:

$ xmodmap -e "keycode 117 = Super_R"
$ xmodmap -e "add mod3 = Super_R"
$ xmodmap -e "remove mod4 = Super_L"
$ xmodmap -e "add mod4 = Super_L"

Значение “keycode 117″ выяснил с помощью xev.
Выбрал “Super_R”, поскольку в моем случае он был свободным (у меня только одна Left_Windows_Key).

UPD (06.05.2009):
Мой конфиг Ion3.

UPD (15.05.2009):
Статья по настройке мультимедийной клавиатуры.

UPD (17.08.2009):
Тут можно взять Ion3.ebuild.

К сожалению регрессия awesome продолжается. В awesome-3.2.1 поломали еще больше полезных вещей. Вроде все это мелочи, но проблемы доставляют. Надоело прыгать между версиями 3.1.x и 3.2.x, обновил конфиг awesome. В архиве присутствует и конфиг для awesome-3.1.x.

World of Goo
Просто чумовая игра – World of Goo. Детей не оторвать, сам оторвался только после того, как прошел все, что возможно.
Жанр игры однозначно определить сложно – это и аркада, и логика. Игра завязана на законах физически. Сейчас вообще стало очень модно использовать физику в играх. Но в этой игре и реализация, и дизайн, и дух просто непередаваемы.

Игра доступна для Windows, Mac OS X, Wii, и, с недавнего времени, Linux.

Очень рекомендую!

Мой новый awesome-конфиг вместе с темой и иконками.

Особенности:
– в комплекте иконки для статус-бара и тема;
– sound: текущая громкость, вкл/выкл, обновление только по событию;
– wifi: essid, уровень сигнала;
– питание: сеть или аккумулятор, оставшаяся ёмкость, обновление по событию и по таймеру;
– текущая температура ядер;
– почистил скрипт от лишнего мусора.

Для отображения громкости в строке статуса я регистрировал функцию в таймере, которая читает текущее значение каждую секунду: wicked.register(volumewidget, my_volume, “$1″, 1)

Это накладно. Кто то на LOR обратил мое внимание на данную проблему и я решил исправить сей недостаток.
В комплекте с awesome идет утилита awesome-client, вот ее я и решил использовать.

Итак алгоритм:

  • В ~/.config/awesome/rc.lua пишем функцию, которая читает состояние громкости и обновляет информацию в статусе.
  • При изменении громкости по хоткею (я использую x11-misc/xhkeys) вызываем нашу функцию: echo “my_volume()” | awesome-client

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

Выгода от данного способа:

  1. Информация в статусе обновляется сразу, как только произошло событие.
  2. Считывание информации о громкости происходит только после прихода события, а не каждые n секунд.