LINUX.ORG.RU

Сообщения shylent

 

[sound-processing][jack] Работа со звуком и Linux

Что есть: jackd, гитарный процессор (умеет USB-audio), встроенная звуковая карта Intel (да-да).

Что хочу: получать сигнал с процессора, «слышать себя» (т.е. заводить этот сигнал на выход звуковой карты), слышать другие приложения, все это записывать.

Надо сказать, что подключаться к line in звуковой карты - не вариант, т.к. она реально искажает звук (не хочется такого даже на записях, сделанных «для себя»). Когда процессор подключен по USB, то он виден, как еще одна звуковая карта, таким образом в jack его просто так не включить никуда (jackd «из коробки» умеет работать только с одной звуковой картой). Про alsa_in знаю - к сожалению, очень слышны артефакты ресемплирования / рассинхронизации внутренней звуковой карты и процессора.

Была идея купить внешнюю звуковую карту, подключающуюся по FireWire (у alsa, я слышал, проблемы с поддержкой USB 2.0), например Echo AudioFire 4 или что-то типа того, и гнать все через нее.

Есть ли у кого-нибудь «истории успеха» работы с такого рода сетапами? Спрашивал на #jackaudio@freenode, там сказали, что, в принципе, вариант с FireWire звуковой картой весьма неплох, - jack использует FFADO для работы с FireWire, а он, вроде бы, неплохо поддерживает те же Echo.

 

shylent
()

[RPM][RHEL][deployment] perl+модули версии, отличной от системной

Собственно, следующая задача: есть система RHEL 5.5 или аналогичный CentOS. Системная версия perl (представленная пакетом «perl») на этих системах - 5.8.8. Есть некая система, которой нужен perl 5.10.0 и некоторое количество модулей под него (mod_perl и всякие мелочи).

Посмотрите, пожалуйста, верный ли выбран подход, - может быть я что-то «недогуглил»?

Собственно, проапгрейдить системный perl нельзя, т.к. у него стоит «Provides: perl(:MODULE_COMPAT_5.8.8)», а у модулей, зависящих от него (не у всех, но..) - «Requires: perl(:MODULE_COMPAT_5.8.8.)». У perl 5.10.0, соответственно, стоит «Provides: perl(:MODULE_COMPAT_5.10.0)». Если проапгрейдить - все сломается (практически все, зависящие от системного perl, пакеты ставиться не будут).

Насколько я понимаю, единственный выход - взять за основу RPM perl-5.10.0 откуда-нибудь из Федоры и сделать так, чтобы он ставился «отдельно» от всего остального. Беру RPM и перепиливаю spec-файл следующим образом:

  • переименовываю пакет perl в, допустим, perl510. Тогда все остальные пакеты, собираемые из него, будут иметь имя типа perl510-libs, perl510-core и т.п. В том числе и модули, а не только мета-пакеты.
  • соответствующим образом меняю все Provides / Requires (в том числе и определяемые автоматически) так, чтобы пакет perl510 «предоставлял» perl510, а не «perl» и т.п.
  • Все файлы, - библиотеки, бинарники, маны, ставятся под отдельный, отличный от системного (/usr), префикс, допустим /opt.

Аналогичным образом «обрабатываются» необходимые модули - имя меняется с perl-Foo-Bar на perl510-Foo-Bar, Requires / Provides тоже подменяются, чтобы не зависеть от «perl».

Этот процесс, естетственно, можно (попытаться) автоматизировать. Однако, остается нерешенным такой вопрос - что делать с «Provides» типа «libperl.so»? Оставлять, как есть?

Хотелось бы знать - «верной дорогой» ли я иду? Perl и пару модулей (в том числе и mod_perl) я пересобрал и, кажется, все работает и не конфликтует, - устанавливается / удаляется через yum.

Может быть есть какой-нибудь более «бескровный» способ? К сожалению, варианты, типа «использовать другой дистрибутив» (ах, если бы!) или «плюнуть на RPM», не подходят. Надо, чтобы все ставилось «честно».

P.S. Тысяча извинений, если ошибся с разделом.

 , ,

shylent
()

[Linux+Laptop] Посоветуйте ноутбук

В общем, нужен ноутбук, на котором предполагается запускать, в числе остального, последний стабильный RHEL. Я не знаю, как у него с поддержкой ноутбучного железа (никак?), так что скорее всего все сведется к тому, что RHEL будет запускаться через, допустим, Virtualbox или VMWare.

Таким образом вопрос сводится просто к выбору ноута, на котором можно будет без особых проблем работать с каким-нибудь мейнстрим-дистрибутивом (ну, Дебиан, к примеру).

Цена - до или не сильно больше 30к. Играть я на нем не собираюсь.

Сам я думал о чем-то вроде Lenovo ThinkPad Edge (15", Intel), хотя готов, в общем-то, к любым предложениям.

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

shylent
()

[python][twisted] Веб-интерфейс на twisted.web

Для работы с сетью, да и, впрочем, практически для любых i/o-ориентированных задач использую twisted.

Соответственно, к написанному на twisted функционалу нужен интерфейс. Нередко - веб-интерфейс, и не просто REST или, там, RPC-служба, а полноценный, так сказать, человеческий интерфейс с формочками, рюшечками, и т.п.

Надо сказать, что twisted.web, сам по себе - просто web-сервер, а не web-фреймворк, - ничем, кроме url-роутинга, он жизнь не упрощает, то есть такие вещи, как обработку форм, шаблонизацию и т.п. нужно прикручивать сторонние. Кстати, twisted.web умеет быть WSGI-контейнером, а значит из-под него можно запустить фреймворк типа django или pylons. Но только вот эти фреймворки ничего на знают про Deferred, коллбэки и прочая, то есть к асинхронному API из них напрямую обращаться нельзя.

В общем, с тем или иным успехом были испробованы следующие подходы:

  • сборная солянка из компонентов: для форм WTForms (кстати, очень удобная, как мне кажется, библиотека), для шаблонов Jinja2, ну и другие мелочи, в том числе и самопальные. Кроме этих библиотек, есть, конечно, и куча других, просто я все достаточно известные/активные перепробовал и остановился именно на этих (из-за фич и удобства использования).
  • nevow - фреймворк, специально сделанный под twisted. Насколько мне известно, разработка его остановлена. Документации почти нет.
  • использование blockingCallFromThread из django (или любого другого фреймворка), запущенного из-под WSGI-контейнера twisted.web. blockingCallFromThread для треда, из которого он вызван, выглядит, как нормальный синхронный вызов, так что можно обратиться к асинхронному API, подготовить данные и вернуть их в WSGI-тред, а потом продолжать с ними работать внутри django как обычно, то есть рисовать/обрабатывать формы и т.п.

Занимается ли кто-нибудь из присутствующих подобным? Может быть, есть библиотеки, о которых я почему-то не знаю, которые могут упростить такого рода задачу?

 

shylent
()

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