Инструменты пользователя

Инструменты сайта



// Как проще проиграть звук с нескольких источников в ffplay?

Я делаю так:

ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:1 -c:v copy -c:a copy -f matroska - | ffplay -autoexit -f matroska -

matroska может запаковать RAW/YUV/RGB данные, поэтому она. MPEG-TS не может, поэтому не подходит.

Или не менее наркоманский вариант, используя только FFMPEG:

ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:1 -vcodec rawvideo -pix_fmt yuv420p -c:a copy -f sdl2 default -f alsa default

Конвертация в yuv420p нужна для SDL2.

// C++: операторы сравнения для структур

Памятка:

Т.е. используя std::tie() вполне, без труда и пыли, можно сделать операторы сравнения для сложных структур. Сложности могут возникнуть, если нужно переопределить операторы сравнения для отдельных элементов (например: критерии сравнения строк).

Почему tie, а не напрямую tuple? tie захватывает аргументы по ссылке - экономия на копировании.

// Совместное использование ALSA и PulseAudio

Когда PulseAudio стартует, оно захватывает устройства и если пробуем запустить какое-то приложение, которое может только ALSA, то получим сообщение о невозможности открыть устройство, так как оно уже занято.

Что бы решить проблему нужна пара простых (по факту, но не по пути, которым к ним пришёл) шагов. Но для начала нужно посмотреть соответствующий раздел в вики Арчика: https://wiki.archlinux.org/index.php/PulseAudio#ALSA.2Fdmix_without_grabbing_hardware_device

Идея проста: сказать пульсе работать через dmix для воспроизведения и через dsnoop для записи.

// С днём программиста!

Собственно - сабж!

// Pacman: информация по пакетам, установленным как зависимости...

…и не нужные никакому пакету.

На случай, если что-то удалялось как pacman -R пакет вместо pacman -Rs пакет:
<ДЕЛ>

pacman -Qd | awk '{print $1}' | xargs -I{} bash -c 'cnt=$(LANG=C pacman -Qi {} | grep "Required By\|Optional For" | grep None | wc -l); (test $cnt -eq 2 && echo "{}")' | xargs -I{} bash -c '(pacman -Qi {};pacaur -Sii {};echo =================)' 2>&1 | less -R

</ДЕЛ>

Спасибо Романычу, просто список пакетов:

pacman -Qtdq

и с описанием, как в уродстве выше (без запроса к Sync базе или AUR можно просто: pacman -Qtdqi):

pacman -Qtdq | xargs -I{} bash -c '(pacman -Qi {};pacaur -Sii {};echo =================)' 2>&1 | less -R

pacaur используется, что бы запросить информацию для AUR пакетов.

Если какой-то пакет в этом списке уже нужен как самостоятельная единица, то можно снять пометку:

  pacman -S --asexplicit пакет

Теперь вопрос: а как проще?

ЗЫ пакеты, которые не требуются никаким другим пакетом можно получить просто выполнив pacman -Qt

// Bioshock 1, 2 Localization reverse

Вроде не делал анонс…

Серия старых скринкастов, описывающая процесс разбора формата файлов локализации игр Boishock 1 и 2, создания библиотеки для распаковки/паковки и графического кросс-платформенного архиватора.

Залито на ютуб, что бы не занимало место на диске. Плюс ценность сомнительная, что бы делать более правильный бекап ;-)

Ссыль: https://www.youtube.com/playlist?list=PLUrplWzJ_-EupzIVpgfRlarNjN0zcarpr

// Мемориз: зубчатый шпатель

Используется для распределения и контроля количества клея по поверхности плитки. Хотя можно и для распределения других смесей использовать.

Хорошая статья которая описывает нюансы:

// Qt Creator, Baremetal и связка GDB>=7.7.1+OpenOCD

Если коротко, то эта связка криво работает. Поймано на ARM GDB 8.0, но воспроизводится и на 7.12.1. При наличии на борту устройства какой-либо RTOS. У меня это ThreadX. Хотя, возможно, для других всё отработает нормально. Но это мало что меняет: на старом GDB 7.7.1 тот же OpenOCD работает.

Суть проблемы и способ её решения без вмешивания в код под катом.

// Проблема с зависанием при выходе из сна

Проблема на ядрах 4.12 и 4.13 в Manjaro. На ядре 4.11 проблема не наблюдается. Засыпание в память, не на диск.

Пока окончательного решения не найдено. Ниже ссылки, которые будут определять направление движения:

    • название говорит само за себя:
      • отказ от blk-mq
      • замена bfq-mq на bfq-sq
      • отказ от bfq в пользу deadline или cfq

После пары перезагрузок, включения bfq-mq на HDD вместо mq-deadline и установки не-DKMS версии virtualbox host, проблему не получается решить.

Для отладки использую следующую методику:

  1. логин на первой консоли и:
    while true; do dmesg | tail -n 30; sleep 1; done
  2. логин на второй консоли и:
    sudo tail -f /var/log/everything | grep -v 'Tor\['
  3. логин на третьей консоли, ничего не вводим, используем как дисплей, но SysRq командой повышаем уровень логирования до максимального: Alt+SysRq+9 (для T530: Alt+Fn[press]+S[press]+S[release]+Fn[release]+9)

После чего работает в обычном режиме.

Прочее полезное:

// Онлайн парсер для USB дескрипторов и запросов

Собственно полезно при отладке и разборе:

Запросов - подразумевается SETUP. Разбирает только стандартные запросы. Специфичные для интерфейсов, даже стандартных функций - нет.

Умеет:

  • разбор дескрипторов
  • разбор SETUP запросов
  • разбор HID дескрипторов (не проверял)

Чумовой особенностью этого парсера является:

The page uses Javascript, so it must be enabled. This page can be downloaded and used offline, because it does not depend on any external or online resources.

Так что…

// OpenRC и русский в консоли

Чисто декларативная заметка.

  1. Добавляем в загрузку сервисы:
    sudo rc-update add consolefont boot
    sudo rc-update add keymaps boot
  2. Для настройки шрифта правим /etc/conf.d/consolefont, устанавливаем параметр consolefont=, остальное не трогаем:
    consolefont="UniCyr_8x16"
    • Прочие варианты шрифтов можно посмотреть:
      ls /usr/share/kbd/consolefonts
    • Поиграться с установкой шрифта можно при помощи команды sudo setfont <FontName>.
  3. Для настройки раскладки и переключателя правим /etc/conf.d/keymaps, устанавливаем параметр keymap=, остальное - по желанию:
    keymap="ruwin_cplk-UTF-8"
    • Прочие варианты раскладки можно посмотреть:
      ls /usr/share/kbd/keymaps/i386/qwerty
    • Поиграться с установкой раскладки можно при помощи команды sudo loadkeys <KeymapName>

Опционально можно перезагрузиться или запустить сервисы вручную:

sudo service consolefont restart
sudo service keymaps restart

// Тюнинг перьевой ручки

Недавно случилась беда: грохнул о бетонный пол свою Platinum Balance F. Пером. Которое сломалось. Осталась такая же ручка с пером M, которая, вроде, всем хороша, но сильно большая подача у неё.

На момент покупки превалировало желание попробовать F перо этого производителя, так как перья F того же Pilot показались слишком уж тонкими и цепкими к бумаге, поэтому вариантов ответа на вопрос: «как уменьшить подачу чернил?» особо не искал. Плюс в голове упорно витала мысль, что таких способов нет.

Но когда не стало ручки, чьё письмо меня более чем устраивало, пришлось выводить из резерва M-ку. И вопрос уменьшения подачи чернил стал очень остро.

// AUR helpers и отладочные данные

Спека PKGBUILD позволяет сделать финт ушами и автоматически сгенерировать пакет с отладочной информацией, которую можно ставить, а можно и не ставить (занимает приличное количество места в распакованном виде).

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

Всё это становится очень интересным в контексте использования с AUR. Когда я ушёл с Arch Linux, разделённые (split) пакеты в нём были роскошью. Сейчас они поддерживаются. А вот как обстоят дела с помощниками (helpers, далее по тексту: хелперы), которые собирают и устанавливают в систему?

// [Memo] Manjaro OpenRC: персистентные сетевые настройки

Можно сделать при помощи Netifrc:

Три шага:

  1. правим /etc/conf.d/net, настраиваем свой интерфейс IFACE.
  2. для нужного сетевого интерфейса (IFACE) делаем симлинк:
    ln -s /etc/init.d/net.lo /etc/init.d/net.IFACE
  3. если нужно стартовать автоматом:
    rc-update add net.IFACE default
    • вручную:
      service net.IFACE start/stop/restart

// Manjaro OpenRC: обновление elogind ломает Network Manager после выхода из сна [FIXED]

Собственно вот такое обновление:

[2017-05-28 10:33] [ALPM] upgraded libelogind (228.3-1 -> 229.3-1)
[2017-05-28 10:34] [ALPM] upgraded elogind (227.2-1 -> 229.3-1)

Самый простой вариант: откатиться. Прочие смотрятся тут:

Прицепом:

UPD: Последнее обновление (2017-06-20) починило проблему:

  • elogind → 229.6-1
  • libelogind → 229.6-1