вторник, 21 февраля 2017 г.

вторник, 7 февраля 2017 г.

четверг, 19 января 2017 г.

Правим звук в фильмах.

Как и большая часть населения нашей необъятной родины и нашей бывшей необъятной родины, я конечно же, качаю фильмы из интернета. И далеко не всегда они там выложены хорошего качества. И речь даже не о видео, а о звуке: порой приходится прислушиваться к словам, при этом спецэффекты бомбят по ушам - хоть убавляй. :( Задрало меня это, решил написать небольшой скрипт.

пятница, 25 ноября 2016 г.

bluetooth гарнитура, pulseaudio и нерабочий профиль a2dp

Пишу больше для себя, но может кому ещё пригодится.
Преамбула: имеем некую bt-гарнитуру, в моём случае LG HSB 900, купленную на ali. Подключается к ноуту в качестве наушников и гарнитуры проодит без проблем. Но проигрывание любого контента идёт через профайл HSF. Для скайпа и ему подобны это приемлемо, для музыки - увы нет. :(

среда, 4 мая 2016 г.

rsync вместо cp

Ещё одна заметка в стиле "хозяйке на заметку". ;) Пишу больше для себя, что бы не забыть, но может и кому ещё пригодится.
Не интересующимся консолью и *nix системами смело можно дальше не читать.

четверг, 25 февраля 2016 г.

Java и неоканчивающийся процесс.

Так уж вышло, что мне приходится использовать SAP GUI по работе. Написан он на java, который я очень сильно недолюбливаю, хотя это уже совсем другая история. ;) Всё бы ничего и с мелкими багами SAPGUI мириться вполне можно, но одна вещь меня очень сильно раздражала: когда я выхожу из этих долбаных gui, процесс java остаётся висеть в памяти. :( В один прекрасный момент меня это крепко достало.

Первым был сделан очень простой костыль: после запуска запоминался PID процесса и выкидывалось окошко (я использовал zenity, можно в принципе что угодно применить). После выхода из SAP всё что нужно было сделать - это нажать в этом окошке OK. Не самое лучшее решение, но простое и работающее:

_JAVA_AWT_WM_NONREPARENTING=1; export _JAVA_AWT_WM_NONREPARENTING
AWT_TOOLKIT=MToolkit; export AWT_TOOLKIT

sapguistart /H/xxxxx/H/xxxxx/S/3262$LOGSTRING > /dev/null 2>&1 &
PID=$$
zenity --info --text="Press OK to exit from SAP"
pkill -P $PID; exit

trap "pkill -P $PID; exit" SIGINT
trap "pkill -P $PID; exit" SIGTERM
trap "pkill -P $PID; exit" EXIT

Потом я решил всё же разобраться в чём проблема. strace рассказал, конечно, много чего, но в целом все поиски по инету не привели ни к чему хорошему, кроме как к срачу между разрабами java и всеми остальными: первые кричат что это не проблема java, вторые очень с ними не согласны. Срач тянется года с 2004, а воз и ныне там.
Сие обстоятельство конечно сильно огорчило, так как всё же пришлось делать костыли. Но как и любые костыли во всех unix и unix like системах они работают и работают отлично! ;) Всё что требуется помимо стандартного шела - это xdotool:

_JAVA_AWT_WM_NONREPARENTING=1; export _JAVA_AWT_WM_NONREPARENTING
AWT_TOOLKIT=MToolkit; export AWT_TOOLKIT

sapguistart /H/xxxxx/H/xxxxx/S/3262$LOGSTRING > /dev/null 2>&1 &
PID=$$

while true
do
    sleep 5
    xdotool search "SAPGUI" > /dev/null 2>&1 ; ERR=$?
    if [ $ERR -ne 0 ]; then
        pkill -P $PID; exit
    fi
done

trap "pkill -P $PID; exit" SIGINT
trap "pkill -P $PID; exit" SIGTERM
trap "pkill -P $PID; exit" EXIT

Такой метод в принципе позволяет убивать любые зависающие процессы, окна которых закрываются, но сам процесс остаётся висеть в памяти.

В общем писал как обычно для себя, но если кому пригодится - буду только рад. ;)