LINUX.ORG.RU

Сообщения Salieff

 

GUI fronend для mplayer под Meego Harmattan (Nokia N9)

Форум — Mobile

Немного утомил встроенный видео-плеер (и OVP тоже), во-первых - он на gstreamer'е со всеми вытекающими, во-вторых - интерфейс нелюдьми для нелюдей писанный.

Неплохой билд mplayer для harmattan давно существует, живет тут : https://garage.maemo.org/frs/?group_id=42 К сожалению, он не умеет аппаратно ускорять H.264, но жить можно и на CPU, зато встроенный не умеет почти все остальное :)

Консолька на N9, это ад, без GUI mplayer'ом толком не порулишь. Единственный найденный GUI - kmplayer, похоже заточен под тентакли. Причем примечателен именно QML-порт kmplayer'а (отсутствие паузы умиляет больше всего), оригинал под N900 вроде терпим, несмотря на фееричный прогон YUV-картинки по сокету, не в обиду г-ну Koos'у будет сказано.

Я тут накидал GUI на чистом Qt4 без фокусов (mplayer надо ставить отдельно из вышеуказанного источника), чтобы все минималистично, крупные контролы под сосиски, и базовый функционал «на кончиках пальцев». Сейчас оно умеет играть выбранный файл/последовательность по папке, рулить аудио-дорогами и субтитрами. Имеет претензии на юзабилити, полностью запоминает состояние при выключении, ходит по людской FS вместо tracker'а, имеет настраиваемые preferred alang/slang. В планах сделать переключение аспектов auto/4:3/16:9/pan&scan.

Исходники и дебка живут тут : http://sourceforge.net/projects/mplayer-n9 Кому интересно, просьба поставить, поюзать, и активно высказывать пожелания по функционалу, и багтречить баги.

 , , , ,

Salieff
()

Монтировалка дисков в трей

Форум — Desktop

После переезда на fluxbox не хватало гуевого монтера, наподобие того, что в KDE. Поискал-поискал, толком не нашел. Слабал велосипед, решил немного оформить, может быть кому-нибудь, кроме меня, пригодится :

http://yaudtray.sf.net/

Заодно интересно, может быть кто-нибудь все же встречал аналоги? Интересно бы было посмотреть.

Salieff
()

Aquaria: Русская версия от 1С/Snowball под Linux

Форум — Games

**** Предыстория ****

Однажды мне в руки попала русифицированная версия «Акварии» от 1С/Snowball, которой я весьма заинтересовался. Сама игра была достаточно привлекательна, а перевод субтитров и русская озвучка были очень качественными и приятными. По сравнению с ужасной неофициальной русификацией, которая встречалась мне раньше, эта была просто прекрасна.

В силу профессиональной специфики и личных предпочтений я использую в качестве десктопа Linux, и постоянно перезагружаться в Windows, чтобы поиграть часок-другой, мне совсем не улыбалось. Посему первое, что я сделал, это собрал клиент «Акварии» под Linux. К моему неприятному удивлению, ничего хорошего из этого не вышло, игра запустилась, но толком не работала - текста не было, половина игровой механики не функционировала. Обидевшись от такой несправедливости я сел разбираться, в чем засада.

Засада заключалась в нескольких моментах. Во-первых, родной клиент «Акварии» ни о каких символах, кроме ISO-Latin-1, ничего знать не знает. Посему клиент от 1С был доработан по части шрифтового движка, строковых и символьных операций, и прочих языковых моментов, чтобы поддерживать в ресурсах русский язык в кодировке CP-1251. Мне пришлось дописать все необходимые места в своей версии клиента до аналогичного функционала. Во-вторых, пришлось продублировать в коде английские имена объектов русскими, иначе не работали рецепты и еще кое-какие моменты. Ну а в-третьих, ребята из 1С провели, в некотором роде, обфускацию, применяя различные странные коэффициенты к параметрам ресурсов, вероятно, чтобы было неповадно эти ресурсы использовать с альтернативными сборками клиента. Коэффициенты пришлось вычислить и встроить в код.

В итоге у меня получился патч, который изменяет исходный код клиента «Акварии» до вида, позволяющего ему правильно работать с русскими ресурсами от версии 1С/Snowball. Ну а вследствие желания поделиться этим патчем и методологиями сборки с общественностью, я и пишу этот пост.

**** Подготовка ****

Сначала нужно добыть русские ресурсы от 1С. Можно установить игру в Windows, и скопировать получившийся каталог оттуда. А можно установить прямо в Linux с помощью wine, этот способ прекрасно работает :

mount /dev/sr0 /mnt/cdrom
cd /mnt/cdrom
wine setup.exe
Потом необходимо добыть исходники клиента по 97-му changeset'у. Более свежие версии брать не советую, т.к. не будут работать скрипты из ресурсов, плюс появятся различные глюки и тормоза :
hg clone http://hg.icculus.org/icculus/aquaria -r 633b2b55a667
Мой патч называется ones_snowball_rus_cp1251.diff, и добывается по адресу http://files.mail.ru/AX7GC3. А потом накладывается :
cd aquaria
patch -p1 < ../ones_snowball_rus_cp1251.diff

**** Сборка нормального клиента под свой дистрибутив ****

Для сборки нам понадобятся следующие зависимости :

freetype-devel
lua-devel
libogg-devel
libvorbis-devel
SDL-devel
openal-soft-devel
tinyxml-devel
libpng-devel
zlib-devel
Я привел названия пакетов из своей Fedor'ы, думаю, в других дистрибутивах они называются похоже. Чтобы клиент точно собирался с devel-пакетами из дистрибутива, а не со своими встроенными версиями, мы, на всякий случай, удалим лишнее :
rm -rf ExternalLibs/AL
rm -rf ExternalLibs/freetype2
rm -rf ExternalLibs/glpng/png
rm -rf ExternalLibs/glpng/zlib
rm -rf ExternalLibs/iprof
rm -rf ExternalLibs/libogg-1.2.0
rm -rf ExternalLibs/libvorbis-1.3.1
rm -rf ExternalLibs/lua-5.1.4
rm -rf ExternalLibs/SDL12
rm -rf BBGE/GL
rm -rf BBGE/glext
rm -f ExternalLibs/tinyxml*
Далее нужно скомпилировать клиент :
cmake CMakeLists.txt
make
Скопировать его в папочку с ресурсами :
strip aquaria-rus.cp1251
cp aquaria-rus.cp1251 /My/Aquaria/Installed/Dir/
И можно играть :
cd /My/Aquaria/Installed/Dir/
./aquaria-rus.cp1251

**** Сборка клиента с встроенными библиотеками ****

Если нет возможности, или желания использовать devel-пакеты своего дистрибутива, то можно использовать библиотеки, идущие с клиентом. Для этого не надо стирать соответствующий каталог, а для cmake нужно указать встраивание. К примеру, для использования встроенных версий freetype и libpng, это будет выглядеть так :

Не стираем ExternalLibs/freetype2 !
Не стираем ExternalLibs/glpng/png !
cmake -DAQUARIA_INTERNAL_FREETYPE=TRUE -DAQUARIA_INTERNAL_PNG=TRUE CmakeLists.txt
make
Определены следующие макросы :
AQUARIA_INTERNAL_FREETYPE
AQUARIA_INTERNAL_LUA
AQUARIA_INTERNAL_OGGVORBIS
AQUARIA_INTERNAL_TINYXML
AQUARIA_INTERNAL_PNG
AQUARIA_INTERNAL_ZLIB
А вот макросы AQUARIA_INTERNAL_SDL и AQUARIA_INTERNAL_OPENAL не работают, т.к. не имеют встроенных аналогов. Для них придется ставить devel-пакеты (или добывать библиотеки с заголовочными файлами другим, свойственным вашему дистрибутиву, методом) в любом случае.

**** Для тех, кому все вышеописанное - темный лес ****

Ну а для людей, далеких от репозиториев Mercurial, патчей и компиляции, я сделал универсальную бинарную сборку. Называется она aquaria-rus.cp1251_static.tar.bz2, и добывается по адресу http://files.mail.ru/0XSS4J. Эта сборка должна работать на любом дистрибутиве Linux с glibc >= 2.3.2 (это любой дистрибутив моложе 10 лет), и не требовать дополнительных зависимостей. Достаточно распаковать архив в папку с ресурсами и запустить обертку для клиента :

tar jxf aquaria-rus.cp1251_static.tar.bz2 -C /My/Aquaria/Installed/Dir/
cd /My/Aquaria/Installed/Dir/
./aquaria-rus.cp1251_static.exe

Вот и все. Захватывающего прохождения!

Salieff
()

Выделение процессу адресов выше 4х Гб

Форум — Development

Господа, здравствуйте!

Меня интересует такой вопрос - можно ли в 64х-битном Linux'е запустить процесс так, чтобы указатели, которые он получает, допустим, при аллокации памяти, гарантировано вылезали за 32 бита? Еще лучше, чтобы адресное пространство ниже 32х бит было защищено, т.е. при попытке обращения туда мы ловили сегфолт.

Зачем это надо : есть очень большой и разлапистый SDK, который разрабатывался под х86 и сейчас адаптируется под x64. Обрезание указателей до 32х бит в нем - common case. Т.к. ядро в основном грузит все это хозяйство и раздает адреса ниже 4х Гб, наверняка многие подобные обрезания остались незамеченными. Если сделать так, как я хочу, можно будет сразу отловить кучу ошибок.

Пока я пытаюсь перед запуском SDK съесть 4-5Гб посредством мелких malloc'ов по 4096 байт, и потом защитить это через mprotect, но не очень получается, ядро меня не спрашивает, где выделять память, да еще и mprotect требует страничного форматирования. С mmap'ом тоже пока не выгорает.

Наверняка это распространенный прием, и умные люди уже отработали подобную технологию. Любые предложения приветствуются, заранее спасибо!

Salieff
()

Openobex, русский язык и все-все-все...

Форум — Desktop

Достало меня, что полезный и востребованный, по большому счету, пакет софта openobex на практике неюзабельный из-за мелких глючков. Накатал я 3 патчика на SVN версии, они позволяют:

Нормально работать с файлами-папками названными по русски (или на любом другом неанглийском)

Возвращать таймстемпы файлов на большем числе устройств, и делать это правильно

Нормально работать через obexfs не затыкаясь на нераспарсенных спецсимволах в именах вроде &amp; &apos; и прочих

Надеюсь они скоро включат эти патчи, но кому надо уже сейчас можно брать здесь, думаю много народу хотело этого функционала:

http://dev.zuckschwerdt.org/openobex/ticket/23 (конкретно после этого нужно не забыть делать bootstrap для всяких autoconf/automake)

http://dev.zuckschwerdt.org/openobex/ticket/24

http://dev.zuckschwerdt.org/openobex/ticket/25

>>>

Salieff
()

Проблемы с сетевухой Marvell Yukon 2 88E8036 (sky2)

Форум — Linux-hardware

Случилось такое горе, первый раз воткнул в ноут езернетовский шнурок (до этого все как-то wi-fi обходился) и увидел что встроенная гигабитная сетевуха от Marvell мрет через определенное время, захлебываясь в TX errors :(

Выглядит это приблизительно так:

02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8036 PCI-E Fast Ethernet Controller (rev 10)

sky2 eth0: enabling interface

sky2 eth0: ram buffer 4K

sky2 eth0: Link is up at 10 Mbps, half duplex, flow control none

sky2 eth0: rx error, status 0x38c0002 length 908

sky2 eth0: rx error, status 0x1310002 length 305

sky2 eth0: rx error, status 0x5c10002 length 1473

sky2 eth0: rx error, status 0x1d00002 length 464

sky2 eth0: rx error, status 0x4350002 length 1077

sky2 eth0: rx error, status 0x38e0002 length 910

sky2 eth0: rx error, status 0x4690002 length 1129

sky2 eth0: rx error, status 0x4cc0002 length 1228

sky2 eth0: rx error, status 0x5a80002 length 1448

sky2 eth0: rx error, status 0x4e20002 length 1250

printk: 15 messages suppressed.

sky2 eth0: rx error, status 0x5e60002 length 1510

printk: 33 messages suppressed.

sky2 eth0: rx error, status 0x5590002 length 1369

printk: 2 messages suppressed.

sky2 eth0: rx error, status 0x5740002 length 1396

sky2 eth0: rx error, status 0x830002 length 131

...

И потом, через какое-то время флуда таких сообщений, все, ни ответа ни привета, трафик не бегает.

Фокус в виде rmmod sky2 && modprobe sky2 все восстанавливает, но на непродолжительное время, а потом все снова.

Пробовал грузить ядро с pci=nomsi, бесполезно, modprobe sky2 disable_msi=1 тоже не меняет ситуацию.

Скачал с сайта Marvell sk98lin v10.21.1.3, оно демонстрирует аналогичное поведение, только в логи ничего не пишет.

Модуль skge мою карту не видит.

Вот такие пироги. Никто ничего умного не подскажет?

Salieff
()

Отображение статусов неавторизованных ICQ-контактов в Pidgin

Новости — Open Source
Группа Open Source

Наверное многих, как и меня, нервирует то, что Pidgin не отображает статусы неавторизованных ICQ-контактов. Покопавшись в исходниках, я понял, что добавить эту возможность совсем несложно.

В архиве RPM-ка libpurple-2.0.2 с модифицированным мной OSCAR-протоколом для пользователей Fedora Core 6, SRPM-ка pidgin-2.0.2, содержащая те же изменения, и патч для сборки из исходников (этот же патч можно вытащить из SRPM-ки).

Патч я делал на базе pidgin-2.0.2, но на последний pidgin-2.1.0 он тоже вполне нормально ложится.

В графическом интерфейсе pidgin по прежнему отображаются статусы "Не авторизован" и красные иконки, не обращайте на это внимания - как только контакт выйдет из offline, его статус станет виден.

Архив: http://slil.ru/24723771

>>> Подробности

Salieff
()

Kaddressbook, MS Exchange, LDAP и русский язык

Форум — Desktop

День добрый, господа. У меня вот такая история:

Прикрутил я на работе kaddressbook к exchange-серверу через LDAP. И оно вроде даже заработало, к моему удивлению. Но заработало, да не совсем - запросы по русски не обрабатывает, а в результатах вместо русских букв - квадратики...

Опечалился я, посмотрел на это безобразие пару дней, потом взял снифер, SRPM'ку, и начал искать виноватых. Кто именно прав, а кто виноват, я точно не знаю, но ситуация такая, что kaddressbook, а точнее ldapclient из kdepim, которым он пользуется, обрабатывает запросы/ответы исходя из убеждения что они должны быть в utf-8, в то время как exchange-сервер принимает-отправляет их в CP-1251.

Я таки не выдержал и поправил kaddressbook сегодня, теперь у него в ldap search dialog появился культурный комбобокс с выбором кодировки для запросов/ответов ;) С ответами было относительно просто, а вот для запросов пришлось сделать грязный хак с искусственным сбиванием кодировки в нужной последовательности, чтобы не лезть в KURL, который, собственно говоря, запросы в utf-8 и переводит (и находится совсем уже не в kdepim).

Теперь сижу с этим добром и думаю, как бы поделиться с народом, чтобы не пропадало? Данные такие, Fedora Core 6, пакет kdepim-3.5.6-0.2.fc6, на него соответственно у меня теперь патчики имеются. Примет ли кто-нибудь такие косметические изменения? И если примет, то кто, Fedora Core, или KDE?

А как обстоят дела у LFS'ников и обладателей других дистрибутивов? Может это только у FC6 такие проблемы? Господа, попавшие в аналогичную ситуацию, расскажите, как у вас обстоит дело с этим?

Salieff
()

Уродские шрифты в меню OpenOffice 2.1 (Fedora Core 6)

Форум — Desktop

Вот тут человек писал про горе:

http://www.linux.org.ru/jump-message.jsp?msgid=1729450

Но там уже ответить не могу, топик закрыт. В FAQ ответа тоже нет. Я на это дело нарвался и видел эту проблему у многих, разобрался как чинить, может кому поможет.

Проблема в том что начиная с FC6 идет libfreetype.so.6.3.10 (2.2.*), и openoffice с этой версией библиотеки имеет проблемы в области хинтинга. Лечится это так - берем freetype 2.1.* (я взял srpm'ку от FC5) собираем классическим методом с включенным TT_CONFIG_OPTION_BYTECODE_INTERPRETER и всем чем нравится, в итоге получаем libfreetype.so.6.3.8 и складываем его в удобное место. После этого подсовываем полученную библиотеку в LD_PRELOAD перез запуском openoffice и вуаля.

Мой /usr/bin/openoffice.org-2.0 (/usr/bin/openoffice.org-1.9) выглядит так:

#!/bin/sh

LD_PRELOAD=/usr/lib/libfreetype.so.6.3.8

export LD_PRELOAD

exec /usr/lib/openoffice.org2.0/program/soffice "$@"

Иллюстрация: http://bozo.ru/salieff/OOO-lft.png

Salieff
()

Вышла libICQKid2 0.5.0

Новости — Open Source
Группа Open Source

В свое время я долго искал вменяемую библиотеку с высокоуровневым API для работы с протоколом OSCAR. К сожалению так и не нашел, пришлось писать самому. Так и родилась ICQKid2 library. Простой клиент на ее основе строится буквально в несколько строк кода. Функционал OSCAR'а реализован, конечно, далеко не весь, но большинство встребованных вещей присутствуют и замечательно работают.

Так сложилось что эта библиотека засветилась в BeOS-сообществе в лице клиента Romashka-ICQ, а мимо линуксоидов прошла стороной, хотя ко вторым я имею куда больше отношения, чем к первым, так что вот, исправляюсь.

Документация на русском и английском присутствует в покореженном виде (это не я, это на SF так принято) на сайте проекта, и во вменяемом - внутри архива. Пользуйтесь на здоровье ;)

Сайт проекта: http://icqkid2.sourceforge.net :)

>>> Проект на SourceForge

Salieff
()

FC4->FC5 yum update

Форум — Linux-install

Здравствуйте! У меня стояла FC4 (свежепроапдейченная), после чего я поставил ей пакеты fedora-release и yum от FC5, и сделал yum -y update. Я так делал на протяжении RH9->FC1->FC2->FC3->FC4 и проблем никогда не видел (правда конкретно на этой машине FC4 поставлена с нуля а не апдейтом). После того как все успешно заапдейтилось - ушел в ребут. Ядро грузится, стартует init, время синхронизируется с биосом, начинает стартовать udev и все намертво вешается. Никто не наступал на эти грабли и не подскажет убогому суть проблемы?

Salieff
()

RSS подписка на новые темы