Openkinect+linux: поддержка звука
Есть такая демка во openkinect - micview. Для её использования нужна прошивка из состава kinect sdk или та, которая идет с Xbox360.
Подробнее можно глянуть официальный мануал.
А тут немного о том, где же эту прошивку взять (вики шлет в разные списки рассылки или гугл).
Если мы в linux, то нам нужен audios.bin из состава обновления xbox360. В windows нам нужен тот, который идет в составе kinect sdk (из-за ограничения стека usb в винде прошивка от xbox360 нормально работает только в linux).
- скачиваем обновление
- скачиваем скрипт extract360.py для распаковки ресурсов xbox
- вытаскиваем из скачанного архива файл FFFE07DF00000001
- натравливаем
$ extract360.py FFFE07DF00000001
- кладем audios.bin в ~/.libfreenect
Fedora+Nvidia=CUDA
Итак. Мы хотим получить рабочую инсталляцию на Fedora (в моем случае - RFRemix и с этим связано несколько багов).
Для этого нам надо:
- видеокарту nvidia :)
- установленный репозитарий cuda (отсюда)
- заметку о том, как восстановить plymouth после установки драйвером nvidia
1 - Ставим
# yum install cuda
Этот метапакет поставит все, что должно идти в комплекте (включая свежие дрова)
2 - Удаляем kmod-nvidia
Если у вас уже были проинсталены дрова невидии, то нужно удалить имеющийся kmod. Так как он может содержать несовместимую с текущими библиотеками версию модуля
# yum remove kmod-nvidia
3 - Пересобираем akmod
# akmod -kernel $(uname -r)
Тут может потребоваться доставить kernel-headers
4 - Пересобираем initrd
Для этого воспользуемся dracut
# dracut --force
5 - Ребут :)
6 - Можно собрать семплы
Замечу, что делать это надо под рутом или проставив соотвествующие права на папки. Так как мейкфайлы сильно завязаны на относительные пути.
# cd /usr/local/cuda-6.5/samples/5_Simulations/fluidsGL
# make
7 - А вот тут нас поджидает облом (RFRemix)
>>> WARNING - libGL.so not found, refer to CUDA Samples release notes for how to find and install them. <<<
>>> WARNING - libGLU.so not found, refer to CUDA Samples release notes for how to find and install them. <<<
>>> WARNING - libX11.so not found, refer to CUDA Samples release notes for how to find and install them. <<<
>>> WARNING - libXi.so not found, refer to CUDA Samples release notes for how to find and install them. <<<
>>> WARNING - libXmu.so not found, refer to CUDA Samples release notes for how to find and install them. <<<
Ага!
Смотрим в findgllib.mk
ifeq ("$(OSLOWER)","linux")
# first search lsb_release
DISTRO = $(shell lsb_release -i -s 2>/dev/null | tr "[:upper:]" "[:lower:]")
DISTVER = $(shell lsb_release -r -s 2>/dev/null)
ifeq ("$(DISTRO)","")
# second search and parse /etc/issue
DISTRO = $(shell more /etc/issue | awk '{print $$1}' | sed '1!d' | sed -e "/^$$/d" 2>/dev/null | tr "[:upper:]" "[:lower:]")
DISTVER= $(shell more /etc/issue | awk '{print $$2}' | sed '1!d' 2>/dev/null
endif
ifeq ("$(DISTRO)","")
# third, we can search in /etc/os-release or /etc/{distro}-release
DISTRO = $(shell awk '/ID/' /etc/*-release | sed 's/ID=//' | grep -v "VERSION" | grep -v "ID" | grep -v "DISTRIB")
DISTVER= $(shell awk '/DISTRIB_RELEASE/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | grep -v "DISTRIB_RELEASE")
endif
endif
ifeq ("$(OSUPPER)","LINUX")
# $(info) >> findgllib.mk -> LINUX path <<<)
# Each set of Linux Distros have different paths for where to find their OpenGL libraries reside
UBUNTU_PKG_NAME = "nvidia-340"
UBUNTU = $(shell echo $(DISTRO) | grep -i ubuntu >/dev/null 2>&1; echo $$?)
FEDORA = $(shell echo $(DISTRO) | grep -i rfremix >/dev/null 2>&1; echo $$?)
RHEL = $(shell echo $(DISTRO) | grep -i red >/dev/null 2>&1; echo $$?)
CENTOS = $(shell echo $(DISTRO) | grep -i centos >/dev/null 2>&1; echo $$?)
SUSE = $(shell echo $(DISTRO) | grep -i suse >/dev/null 2>&1; echo $$?)
Еще раз ага!
Смотрим как определяется тип дистрибутива.
Это команда
awk '/ID/' /etc/*-release | sed 's/ID=//' | grep -v "VERSION" | grep -v "ID" | grep -v "DISTRIB"
А у меня она выдает rfremix. А значит такого таргета ни разу нет в списке. :)
Ну что делать-то? меняем fedora на rfremix в findgllib.mk и радуемся.
Собралось! Но…
8 - А что у нас с библиотеками?
$ ./fluidsGL
./fluidsGL: error while loading shared libraries: libcufft.so.6.5: cannot open shared object file: No such file or directory
Еще раз. У нас для ldconfig не заданы пути, где лежит libcufft.so.6.5
$ find /usr/ -name libcufft.so.6.5
/usr/local/cuda-6.5/targets/x86_64-linux/lib/libcufft.so.6.5
$ grep -R /usr/local/cuda-6.5/targets/x86_64-linux/lib /etc/ld.so.conf.d/
Пусто.
# echo "/usr/local/cuda-6.5/targets/x86_64-linux/lib" > /etc/ld.so.conf.d/cuda-lib64.conf
# ldconfig
9 - Наслаждаемся
Firefox+Linux+MiddleButton
Есть такая особенность у сборки Firefox в Linux (как под виндой - не знаю) - если нажать среднюю кнопку (не на ссылке, а просто в пределах страницы), то в адресную строку будет вставлено содержимое буфера обмена.
Очень и очень раздражающая фича.
Но отключается она очень просто.
- Идем в about:config.
- Находим настройку middlemouse.contentLoadURL и выставляем ее в false (или создаем - это параметр “логическое”)
Вопреки советам в сети за подобное поведение параметр middlemouse.paste не отвечает.
PostgreSQL: insert on duplicate key
Да-да. Постгрес не умеет делать
insert * on duplicate key ...
Но это легко эмулируется последовательностью запросов.
UPDATE table SET field='C', field2='Z' WHERE id=3;
INSERT INTO table (id, field, field2)
SELECT 3, 'C', 'Z'
WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);
Интересное в сети
Алгоритмы
- Neural Networks and Deep Learning
- Алгоритм поиска наименьшего по мощности покрытия конечного множества его подмножествами
- Книга: введение в распределенные вычисления
- Сравнение алгоритмов распозавания аудио
- Интересная задача по переводам текста с несуществующего языка
- Каскад Хаара в OpenCV
JavaScript
- Eloquent JavaScript
- Рисование красивых графов в js и немножко физики
- Timbre.js - библиотека для синтеза звука
- Синтезируем молнию
- Реализация методов для симуляции стохастических процессов
- Поиск кода по JavaScript библиотекам
- Детектируем темп аудио при помощи Web Audio API
Ruby
Python
Инструменты
- Поисковик кода
- Еще один поисковик кода, но только на Java
- Маленькая виртуальная машина на C
- 16-битная forth-машина на VHDL
- Окружение для построения системы анализа сложных данных
- Распознавание речи для чайников
Linux
- A Visual Expedition Inside the Linux File Systems
- The Hercules System/370, ESA/390, and z/Architecture Emulator
- x86 assembler in Bash
- Дебаты Торвальдса и Таненбаума
- Визуальное погружение в дебри файловой системы никсов
Всякое
- Сборник оправданий для разработчика
- Несколько мифов о функциональном программировании
- Смотрим с помощью wi-fi сквозь стену
- Логгирование статистики с помощью e-mail
- Позитывный рассказ о том, как начать конструировать дронов
- Перевод руководства по фреймворку GStreamer
- 64 миллисекунды после нажатия
- Автодополнение на стероидах: redis, lua и nginx
- Объединяем все скидочные карты в одну (и как оно разрабатывалось)
- Ось для калькуляторов Tizen
- Симпсоны на CSS
- Реверс-инжиниринг алгоритмов хранения данных в nand-памяти