В продолжение
post/2017/08/25/qt_creator_baremetal_i_svjazka_gdb_7.7.1_openocd. Снова косяк и снова QtC не имеет прямого отношения к нему. Судя по всему, в самом GDB какие-то гонки.
Проблема проявляется на этот раз в том, что подобные сообщения от отсутствующем контексте исполнения появляются после попытки останова исполнения кода (для отладки), при этом, какого-то чёрта, появляются сообщения об вновь образовавшемся и тут же умершем треде. GDB не может уже потом ничего сделать, а QtC следом тоже сходит с ума, не зная, в каком состоянии что находится.
В общем, пока откатился на GDB 7.8 от Linaro:
https://aur.archlinux.org/packages/arm-none-eabi-gdb-linaro, оно, по крайней мере, работает.
Связанные ссылки и обсуждения:
PS текущая связка: GDB 7.8 + OpenOCD 0.10.0
И не только.
Для начала выполняем шаги, описанные в руководстве:
Если коротко и коспективно:
- Создаём директорию
usershare
: mkdir -p /var/lib/samba/usershare
- Создаём группу
sambashare
: groupadd sambashare
- Правим права доступа к директории:```
chown root:sambashare /var/lib/samba/usershare
chmod 1770 /var/lib/samba/usershare
1. Проверяем конфигурацию `smb.conf`:```
...
[global]
usershare path = /var/lib/samba/usershare
usershare max shares = 100
usershare allow guests = yes
usershare owner only = yes
...
- Разрешаем вашему пользователю создавать шары:
usermod -a -G sambashare $USER
- Рестартуем демоны
smbd
и nmbd
- Перелогиниваемся в систему
Как минимум теперь вы сможете управлять пользовательскими шарами, используя командную строку:
Для использования этого функционала через Dolphin, потребуется поставить пакет kdenetwork-filesharing
:
pacman -S kdenetwork-filesharing
После чего в свойствах директории появится вкладка, ответственная за общий доступ к содержимому директории.
В qmmp есть плагин глобальных клавиш, который может обрабатывать кнопки переключения треков, паузы, проигрывания и остановки. Помимо этого он может перехватывать клавиши управления громкостью, выключения динамиков. И делает он это по умолчанию.
Так вот, это поведения очень нехорошо дружит с плазмоидом, который через трей выводит индикатор громкости. Точнее начинает глючить функционал, который собственно и обрабатывает мультимедийные кнопки управления громкостью и выводит OSD уведомление на экран.
Судя по всему qmmp умудряется переопределить глобальный хук и полностью получает управление этими кнопками. До плазмоида попросту не доходят события. А так как подписка происходит при старте плазмоида, то и после выхода из qmmp обработка не возвращается на свои места.
Лечение простое:
- в настройках qmmp для плагина глобальных клавиш убрать реакцию на кнопки управления громкостью.
- открыть настройки трея и выключить и снова включить индикатор громкости.
PS подобное наблюдается и при использовании kmix. Более того, управления перехватывает последний запущенный механизм: или плазмоид или kmix. При закрытии одного из них, рекомендую перезагрузить оставшийся.
На днях заметил, что часть приложений время от времени перестают рисовать свои иконки в трее. С одной стороны, xembed - deprecated, но, судя по всему, плазма как-то пытается его использовать и отображать иконки в трее для “устаревших” приложений. Но не всегда это получается (ниже чуть подробнее).
По сути, нормально работать будут только приложения, которые поддерживают appindicator api.
Я делаю так:
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.
Памятка:
Т.е. используя std::tie()
вполне, без труда и пыли, можно сделать операторы сравнения для сложных структур. Сложности могут возникнуть, если нужно переопределить операторы сравнения для отдельных элементов (например: критерии сравнения строк).
Почему tie
, а не напрямую tuple
? tie
захватывает аргументы по ссылке - экономия на копировании.
Когда PulseAudio стартует, оно захватывает устройства и если пробуем запустить какое-то приложение, которое может только ALSA, то получим сообщение о невозможности открыть устройство, так как оно уже занято.
Что бы решить проблему нужна пара простых (по факту, но не по пути, которым к ним пришёл) шагов. Но для начала нужно посмотреть соответствующий раздел в вики Арчика:
https://wiki.archlinux.org/index.php/PulseAudio#ALSA.2Fdmix_without_grabbing_hardware_device
Идея проста: сказать пульсе работать через dmix для воспроизведения и через dsnoop для записи.
Собственно - сабж!
…и не нужные никакому пакету.
На случай, если что-то удалялось как pacman -R пакет
вместо pacman -Rs пакет
:
DEL:
pacman -Qd | awk '{print $1}' | xargs -I{} bash -c 'cnt=$(LANG=C pacman -Qi {} | grep "Required By<br/>|Optional For" | grep None | wc -l); (test $cnt -eq 2 && echo "{}")' | xargs -I{} bash -c '(pacman -Qi {};pacaur -Sii {};echo ================:simple_smile:' 2>&1 | less -R
Спасибо Романычу, просто список пакетов:
и с описанием, как в уродстве выше (без запроса к Sync базе или AUR можно просто: pacman -Qtdqi
):
pacman -Qtdq | xargs -I{} bash -c '(pacman -Qi {};pacaur -Sii {};echo ================:simple_smile:' 2>&1 | less -R
pacaur используется, что бы запросить информацию для AUR пакетов.
Если какой-то пакет в этом списке уже нужен как самостоятельная единица, то можно снять пометку:
pacman -S --asexplicit пакет
Теперь вопрос: а как проще?
ЗЫ пакеты, которые не требуются никаким другим пакетом можно получить просто выполнив pacman -Qt
Вроде не делал анонс…
Серия старых скринкастов, описывающая процесс разбора формата файлов локализации игр Boishock 1 и 2, создания библиотеки для распаковки/паковки и графического кросс-платформенного архиватора.
Залито на ютуб, что бы не занимало место на диске. Плюс ценность сомнительная, что бы делать более правильный бекап :wink:
Ссыль:
https://www.youtube.com/playlist?list=PLUrplWzJ_-EupzIVpgfRlarNjN0zcarpr