LINUX.ORG.RU

Сообщения Xintrea

 

Обновился до Debian 11 - отвалилось проигрывание видео

 , , ,

Привет народ!

Пришлось мне тут вчера обновиться до Debian 11. Я, конечно, был готов к появлению различных галлюнов, и они таки появились.

Например, перестало воспроизводиться видео. Я обычно пользуюсь VLC и Mplayer.


VLC тупит вот так:

$ vlc 0001-0240.avi
VLC media player 3.0.16 Vetinari (revision 3.0.13-8-g41878ff4f2)
Этот источник не открывается:
VLC не может открыть MRL 'file:///home/xi/work/develop/blender/lampa/0001-0240.avi'. Ищите более подробную информацию в лог-файле.

Где находится лог-файл, нигде не говорится. Я перерыл /var/log, но единственно что нашел, это вот это:
Mar 29 10:24:23 hp450 zeitgeist-fts[2096]: Unable to get info on application://vlc.desktop

Я попытался запустить VLC с подробным уровнем отладки. Увидел только одно сообщение, которое ранее не показывалось. Пробовал по-разному, согласно документации:
$ VLC_VERBOSE=3 vlc 0001-0240.avi
VLC media player 3.0.16 Vetinari (revision 3.0.13-8-g41878ff4f2)
QObject::~QObject: Timers cannot be stopped from another thread

$ vlc -v 3 0001-0240.avi
VLC media player 3.0.16 Vetinari (revision 3.0.13-8-g41878ff4f2)
QObject::~QObject: Timers cannot be stopped from another thread

Причем сообщение Timers cannot be stopped from another thread появляется не в момент ошибки, а в момент закрытия окна VLC уже после того, как VLC ругнулся что не может показать видео. Так что наверно это другая ошибка, возможно в неправильной деинициализации GUI-интерфейса, ее пока можно не рассматривать.

Тогда я попробовал посмотреть через mplayer.


Mplayer тупит так:
$ mplayer 0001-0240.avi 
Failed to read /etc/mplayer/mplayer.conf.local: No such file or directory
Warning unknown option include at line 177
MPlayer 1.4~svn38192 (C) 2000-2020 MPlayer Team
do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing 0001-0240.avi.
libavformat version 58.76.100 (internal)
AVI file format detected.
[aviheader] Video stream found, -vid 0
AVI: No audio stream found -> no sound.
VIDEO:  [MJPG]  1000x1000  24bpp  24.000 fps  14909.2 kbps (1820.0 kbyte/s)
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
open: No such file or directory
[MGA] Couldn't open: /dev/mga_vid
[VO_TDFXFB] This driver only supports the 3Dfx Banshee, Voodoo3 and Voodoo 5.
s3fb: Couldn't map S3 registers: Operation not permitted
libva info: VA-API version 1.10.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_10
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_8
libva info: va_openDriver() returns 0
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 58.134.100 (internal)
[mjpeg @ 0x563b9aa2d480]Requested frame threading with a custom get_buffer2() implementation which is not marked as thread safe. This is not supported anymore, make your callback thread-safe.
Selected video codec: [ffmjpeg] vfm: ffmpeg (FFmpeg MJPEG)
==========================================================================
Load subtitles in ./
Audio: no sound
Starting playback...
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Movie-Aspect is undefined - no prescaling applied.
[swscaler @ 0x563b9aa41ac0]bicubic scaler, from yuv422p to yuyv422 using MMXEXT
[swscaler @ 0x563b9aa41ac0]using unscaled yuv422p -> yuyv422 special converter
VO: [vdpau] 1000x1000 => 1000x1000 Packed YUY2
Movie-Aspect is undefined - no prescaling applied.
VO: [vdpau] 1000x1000 => 1000x1000 Packed YUY2
libvdpau-va-gl: VideoSurface::PutBitsYCbCr_glsl(): not implemented source YCbCr format 'VDP_YCBCR_FORMAT_YUYV'
[vdpau] Error when calling vdp_video_surface_put_bits_y_cb_cr: VDP_STATUS_INVALID_Y_CB_CR_FORMAT


MPlayer interrupted by signal 11 in module: filter_video
- MPlayer crashed by bad usage of CPU/FPU/RAM.
  Recompile MPlayer with --enable-debug and make a 'gdb' backtrace and
  disassembly. Details in DOCS/HTML/en/bugreports_what.html#bugreports_crash.
- MPlayer crashed. This shouldn't happen.
  It can be a bug in the MPlayer code _or_ in your drivers _or_ in your
  gcc version. If you think it's MPlayer's fault, please read
  DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and
  won't help unless you provide this information when reporting a possible bug.
Ошибка сегментирования


Вопрос: что где надо теперь крутить, чтобы иметь возможность смотреть видео в Debian Linux 11 ?

Xintrea
()

Как настроить HEX-просмотр в Midnight Commander, чтобы он отображал только 16 кодов на строку?

 , ,

Привет, народ.

Обратил сейчас внимание на то, что просмоторщик MC в HEX-режиме отображает 24 кода на строку вместо 16 кодов. Что жутко неудобно.

Найти настройку которая указывала бы что MC должен отображать только 16 кодов, я не смог. Где куда тыкнуть, чтобы просмотрщик нормально показывал HEX-дамп в 16 кодов на строку?

Xintrea
()

Каким образом можно узнать, что открытый SSH-ключ уже скопирован?

 , ,

Привет, народ.

Что-то туплю я. Мне нужно каким-то образом узнать в BASH-скрипте, что открытый SSH-сертификат уже был скопирован на противоположную сторону.

Ну, то есть, для копирования сертификата выполнялись команды:

ssh-keygen -t rsa -q -N ''
ssh-copy-id -i ~/.ssh/id_rsa.pub ouruser@ourserver.lo

Теперь перед этими командами надо сделать проверку, что сертификат уже был передан, чтобы их повторно не вызывать без необходимости.

Вопрос: каким способом наиболее просто можно проверить, что сертификат скопирован? Я так понимаю, надо как-то установить SSH-соединение, если оно установится, то сертификат есть. Но как его установить, как его разорвать внутри bash-скрипта что-то не могу сообразить.

Xintrea
()

Создать Ethernt-соединение через COM-порт между двумя компьютерами

 , ,

Привет, народ!

Нужно мне сделать очень странную вещь: пробросить Ethernet-соединение через COM-порт. Да, я знаю что это дичь, что такое никому не нужно, что будет медленно работать. Но таковы нынешние реалии.

Итак, имеется две машины, на одной стоит Linux, на второй Windows. Они находятся в физически разных Ethernet-сетях. Между ними нужно сделать иногда включаемое Ethernet-соединение. Из дополнительного оборудования - только шнур для соединения по COM-порту компьютер-компьютер (DTE-DTE DB9). Шнур проверен, соединение между терминалами lin+minicom <-> win+putty работает без вопросов.

То есть, еще раз: нужна Ethernet-сеть через физический COM-порт. Весь интернет забит решением совершенно противоположной задачи - как сделать проброс COM-порта через Ethernt-сеть. А вот как пробросить Ethernet через COM-порт - такого не нашел ни в рунете, ни в англонете.

Насколько я понял, возможно, под Linux можно будет обойтись одним только socat (а возможно и нет, я не специалист в этих делах). Вроде как socat умеет создавать виртуальное сетевое TUN-устройство, которое можно связать с COM-портом. Но у меня это сделать не получилось.

Что делать на стороне Windows - вообще ума не приложу, но вроде имеется socat for windows.

У меня есть подозрение, что одним только socat обойтись не получится, и в Linux придется еще крутить что-то наподобе ip net tap, а на стороне Windows брать кусок OpenVPN, через который создастся виртуальные сетевой интерфейс, и на него завернуть COM-порт через socat for Windows.

Чтобы это сделать мне нужно понять как действовать глобально (какую схему применить) и какими командами все это пытаться собрать вместе. Возможно, что вообще есть другое готовое opensource решение, а я о нем просто не знаю.

И еще, я все никак не могу понять синтаксис socat: что указывается в качестве первого и второго адреса в параметрах? Для стороны Linux надо первым указать сетевое устройство, вторым - COM-порт или наоборот? А на стороне Windows как?

Xintrea
()

Имеет ли смысл сейчас покупать 4G телефон в России?

 , , ,

В связи с ростом цен и общей обстановкой, плюс еще и старенький телефон с 12Gb основной памяти не хочет нормально работать с Gmail в котором 15Gb одной только почты и фотографий накопилось, да и аккумулятор на холоде на восьмом году стал плохо держать заряд, решил рассмотреть возможность заменить мобильник.

Сейчас распродают везде всякие Poco M4 Pro 4G 8/128GB по ~25 тонн. Имеет ли смысл брать такое устройство? С учетом что оно будет пользоваться в России, а в связи с санкциями 5G видится под большим вопросом.

Да и вообще кто что посоветует взять в качестве смартфона в это нелегкое время cуток?

Ограничения: до 25 тонн, IPS, 4GB ОЗУ минимум.

Xintrea
()

Через браузер и консоль отдается разный сертификат. Это что за?

 , , , ,

Имеется хост https://webhamster.ru. На нем используются сертификаты Lets Encrypt. Если в браузере посмотреть информацию о сертификате, то будут видны следующие даты:

Действителен с ‎30 ‎декабря ‎2021 ‎г. 8:15:11
Действителен по ‎30 ‎марта ‎2022 ‎г. 8:15:10

То есть, сертификат действителен, не просрочен.

Если же залогиниться в консоль этого хоста, и попробовать получить главную страницу через wget, то будет ошибка:
> wget https://webhamster.ru
--2022-01-11 14:16:46--  https://webhamster.ru/
Распознаётся webhamster.ru (webhamster.ru)… 193.124.188.214
Подключение к webhamster.ru (webhamster.ru)|193.124.188.214|:443... соединение установлено.
ОШИБКА: Нет доверия сертификату для «webhamster.ru».
ОШИБКА: Срок действия сертификата «webhamster.ru» истёк.

Хм, что за дичь, надо посмотреть через openssl:
> openssl s_client -showcerts -connect webhamster.ru:443
CONNECTED(00000003)
depth=3 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=10:certificate has expired
notAfter=Sep 30 14:01:15 2021 GMT
verify return:0

А тут показывается, что сертификат заканчивает действие 30 сентября 2021, то есть сертификат уже недействительный.

Я аж полез в конфиг nginx, посмотрел какой файл прописан в опции ssl_certificate, посмотрел информацию по нему:
> openssl x509 -in *****.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:0d:58:dc:36:10:f7:40:f8:73:0c:19:ae:fc:d5:38:f0:00
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=R3
        Validity
            Not Before: Dec 30 05:15:11 2021 GMT
            Not After : Mar 30 05:15:10 2022 GMT

А тут все нормально, даты правильные. В Nginx прописан один server для протокола HTTPS, у него одна опция ssl_certificate, никакой путанницы быть не может. Именно этот сертификат и отдается в браузер.

Но почему при запросе через wget и openssl отдается какой-то странный сертификат, с закончившейся датой действия?

Xintrea
()

Проверить объект на принадлежность NoneType в Python3

 , pytnon, ,

Никак не могу понять. У меня есть переменная неопределенного типа (ее возвращает Popen.communicate() в кортеже). Поэтому использовать эту переменную без проверки я не могу, ибо будет ошибка:

stdErrData.decode()
AttributeError: 'NoneType' object has no attribute 'decode'

Вроде как в Python3 есть функция проверки на принадлежность типу. Использую ее:
    errData=""
    if not isinstance(stdErrData, NoneType) :
      errData=stdErrData.decode()

Но и эта конструкция выдает ошибку:
line 25, in run 
   if not isinstance(stdOutData, NoneType) : 
NameError: name 'NoneType' is not defined

Как же блин проверить тип переменной в Python3?

Xintrea
()

Почему функция str() возвращает байтовый массив в Python3 ?

 ,

Возникла необходимость написать пару скриптов на Python3 (если быть точным, 3.5.3 ибо дистр старенький, но его менять нельзя). До этого Питон щупал когда он был еще 2-й версии.

Есть следующий код:

    p=Popen(cmd, stdout=PIPE, shell=True)

    stdOutData, stdErrData = p.communicate()
    errCode=p.returncode

    print( "Std out data: "+str(stdOutData) )

В результате его работы в консоль выводится:
Std out data: b'/home/x/work/develop/python/lissage/step0000-showUserInfo.py\n'

Вроде как функция str() должна возвращать строку, а она возвращает, судя по выводу, байтовый массив.

Операционная система имеет кодировку UTF-8, файлы тоже в кодировке UTF-8.

Как получить строку в Python3 в этом коде?

Xintrea
()

Не могу использовать функцию IF() в Libre Office

 ,

Засовываю в ячейку следующую формулу:

=IF(0=1; 100; 250)

Но вместо 250 в ячейке пишется ошибка: «#ИМЯ?»

Вопрос: как правильно писать функцию IF чтобы она работала?

Xintrea
()

Проблема с группой в регулярке

 

Есть текст:

static void OutClass::OurMethod(int a)
static void OurFunction(int b)

Надо получить:
OutClass::OurMethod(int a)
OurFunction(int b)

То есть, надо оставить имя C++ метода или функции и все что правее, а возвращаемый тип пропустить.

Я использую регулярку https://regex101.com/r/oax6bm/1:
\w+(::)?.*\(.*\)

И она не работает. Она матчит весь текст.

Проблема в кванторе вопроса ? для группы (::). Если его убрать, то для строки с OutMethod матчинг сработает правильно. Но двойное двоеточие может либо быть, либо не быть, поэтому я использую квантор ?. И с ним все ломается.

Как исправить?

Xintrea
()

Кино и космос

 ,

Смотрю сейчас трансляцию полета Союза на МКС с киноделами на борту с сайта NASA. При стыковке отказали оба аппарата управления сближением КУРС 1 и 2, стыковка произведена в ручном режиме.

При подготовке к открытию люка тренированная актриса прямым текстом говорит: «Я сейчас у вас тут сейчас уписаюсь, не могу больше терпеть». Тетка из NASA переводит что актриса роскосмоса собирается juice, и надо что-то делать.

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

В общем сейчас на орбите по-настоящему жарко.

https://www.youtube.com/watch?v=21X5lGlDOfg

Xintrea
()

Команда экспорта *.svg в *.png в Inkscape: как отключить окно «png bitmap image import»?

 , , , ,

Использую Inkscape 1.1.

Нужно мне сделать команду экспорта *.svg в *.png с помощью консольных опций Inkscape.

Картинка svg содержит растровые картинки, они интергрированы в svg-файл.

Я написал такую команду:

inkscape --export-width=1920 --export-type=png "page-01.png" "page-01.svg"

Проблема в том, что при запуске этой команды почему-то открывается окно «png bitmap image import», в котором спрашиваются Image Import Type, Image DPI, Image rendering mode. Такое окно обычно появляется, когда растровая картинка вставляется в svg-файл и интерфейсе Inkscape. В этом окне можно нажать Отмена, и консольная команда продолжит свою работу, png-файл будет сгенерирован правильно.

Вопрос: как подавить появление этого диалога, чтобы была только консоль? Пробовал в команду добавить:
--shell
--actions="quit"
--verb="quit"

и всякие подобные комбинации, но окно импорта все равно появляется.

Вопрос: как сделать чтобы это окно не появлялось и работал экспорт в консоли?

Xintrea
()

Видеокарта Intel HD Graphics 4000 с Linux-драйверами i915 криво считает функцию арктангенса

 atan, , , ,

Linux в очередной раз меня подвел.

На моем ноуте HP450 стоит карточка Intel HD Graphics 4000. Информация о чипсете и драйверах:

Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
        Kernel driver in use: i915
        Kernel modules: i915
filename:       /lib/modules/4.9.0-4-amd64/kernel/drivers/gpu/drm/i915/i915.ko
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.
vermagic:       4.9.0-4-amd64

Так вот, наткнулся я на проблему в шейдерах GLSL локально в Bonzomatic, а потом увидел ее же в браузере в ShaderToy. Проблема в том, что функция atan() выдает дикую дичь.

Ссылка на пример: https://www.shadertoy.com/view/NljSzV

В телеграмканале «Newskool demomakers' chat» мне подтвердили, что на карточках других производителей такой проблемы не наблюдается.

Вначале думал, что проблема аппаратная. Но заморочился и на этом же оборудовании запустил Windows. И что я вижу? Все прекрасно работает, atan() считается как положено.

Пока что сделал workaround через арксинус, хорошо что хоть он вычисляется правильно:
float arctangens(float a)
{
    return asin(a/sqrt(1.0+a*a));
}

Но вообще прошу владельцев Intel-серии заглянуть по вышеуказанной ссылке и сказать, как двигается верхняя линия, с указанием модели своей карты и версии драйвера. Если atan() считается правильно, то линия должна плавно двигаться справа-налево. Если неправильно, то будет двигаться в разные стороны, иногда пропадать с экрана.

Возможно, в более новых модулях ядра эту проблему пофиксили. Но перед тем как заморачиваться с обновленем системы, хотелось бы понять, как обстоят дела с более свежими дровами.

Xintrea
()

Как дать доступ пользователю монтировать сетевой каталог, прописанный в /etc/fstab ?

 , , , ,

У меня в /etc/fstab прописана такая строчка:

//server.lo/pub /media/OurServer/pub cifs rw,file_mode=0777,dir_mode=0777,username=xintrea,user=xintrea,cruid=xintrea,vers=1.0,sec=krb5 0 0

Если я от пользователя root даю команду:
mount /media/OurServer/pub
то происходит монтирование сетевого каталога. Размонтирую.

Далее пробую от пользователя xintrea дать ту же самую команду. В ответ получается ошибка:
mount: only root can mount //server.lo/pub on /media/OurServer/pub

На просторах Интернета я нахожу утверждение, что если в опциях в файле /etc/fstab написано user=xintrea, то данному пользователю должно даваться разрешение на монтирование сего ресурса. Но на деле этого не происходит.

Вопрос: где что еще надо крутить, чтобы дать возможность пользователю примонтировать сетевой диск? pam_mount пока не рассматриваю, вначале надо разобраться что не так при обычном монтировании.

Xintrea
()

Останавливается видео в Blender 2.93 после 1 секунды проигрывания

 , ,

Стоит значит у меня Blender 2.93 на Debian Linux.


Открываю я Video Editing Workspace. Перетягиваю на Timeline видеоролик. Пытаюсь его проиграть. Для этого нажимаю клавишу Пробел или кнопку внизу с названием Play Animation (треугольная такая). Видео проигрывается ровно 1 секунду и останавливается.

Причем, кнопка Play Animationиз треугольничка превращается в кнопку паузы. Типа все в порядке, видео проигрыватеся, ты можешь нажать паузу. Но видео стоит на месте, номер текущего кадра тоже стоит на месте.

Что самое интересное, если нажать соседнюю кнопку проигрывания назад (треугольничек в другую сторону), то видео прекрасно проигрывается в обратной последовательности. А просто проиграть видео невозможно.


Что это за дичь? Может быть, где-нибудь есть какая-то настройка, которая ограничивает проигрывание вперед одной секундой? Я ничего не нашел.

Xintrea
()

Qt. Как проще сделать виджет, сильно похожий на заданный?

 , , отрисовка

Имеется следующий виджет-меню:

http://i.piccy.info/i9/c7c16510d27ba4873ffec2e649009df0/1626854321/67618/1436...

Нужно сделать такой же на Qt5 (обычные виджеты, не QML), всеми пикселями похожий на заданный.

Стиль Windows для QToolButton или для QFrame, в принципе, подходит. Я бы мог понапихать слева-направо или кнопки или фреймы, чтобы составить такое меню. Но если присмотреться, то между секциями вертикальные разделители не «на полную глубину» а как бы «в половину глубины».

Вот я и думаю, каким макаром проще всего сделать меню с такими разделителями секций?

Xintrea
()

Куда должен пойти ученик, чтобы купить книгу про Гарри Поттера?

 , mystery,

Ребенку задали задание по английскому, чтобы он лучше ориентировался в Linux, естественно.

Сидим все и думаем, каков правильный ответ, и в каких загадочных местах продаются книжки про Гарри. Рассмотрели даже вариант «в стене», но такого варианта нет.

Что думает коллективный разум?

Задание: http://i.piccy.info/i9/5cbb7534eeea4c8f11ca5b5b2edee6e4/1618855970/139100/142...

Xintrea
()

Как правильно запустить очередь в Laravel с именованными очередями?

 , ,

Восстанавливаю сейчас к работе проект двухлетней давности.

В нем используется Laravel 5.5.45.

Сам забыл уже и PHP, и Laravel, и что там где там надо крутить.

Проблема вот в чем. Очереди в проекте настроены на драйвер database, используется MySQL (MariaDB). Таблицы jobs и failed_jobs созданы. Задания очереди успешно создаются, и появляются в таблице jobs. Для заданий предусмотрено 3 очереди:

- email
- phone
- telegram

В таблице jobs в поле queue видно соответствующее имя очереди.

Если согласно документации запустить очередь командой:

php artisan queue:work

то задания выполняться не будут, и поле attempt (количество попыток запуска) для всех заданий будет содержать значение 0.

В какой-то момент я нащупал, что если запустить команду:
php artisan queue:work --queue=telegram,default

то задания из очереди telegram таки выполнятся.

Но в документации я не нашел описания того, что для работы обработчика очереди требуется обязательно указывать имя очереди. Вроде как команда php artisan queue:work должна обрабатывать все очереди, но этого не происходит.

Вопрос: а какой командой таки можно запустить обработку всех именованных очередей? Я ее пропишу в Supervisor.

Xintrea
()

А у меня одного в Firefox 86.0.1 не работают ссылки на сообщения из уведомлений ЛОР-а?

 

Поставил Firefox 86.0.1, и обнаружил что при нажатии ссылок на сообщения в уведомлениях происходит переход на страницу, но прокрутка на этой странице не проматывается до нужного сообщения, а останавливается на совершенно случайных местах. Так и должно быть?

Xintrea
()

Почему не работает monospace в font-family?

 ,

Привет, народ.

Есть, к примеру, такая страничка:

Как разобраться, почему некоторые каталоги в DropBox не синхронизируются под Linux

На ней есть следующий HTML-код:

<p style=" margin-top:0px; 
           margin-bottom:0px; 
           margin-left:20px; 
           margin-right:0px; 
           -qt-block-indent:0; 
           text-indent:0px;">
  <span style=" font-family:'monospace'; color:#6a1009;">
    chmod 755 ./dropbox.py
  </span>
</p>

Проблема в том, что несмотря на указание monospace в качестве семейства шрифтов, надпись выполняется немоноширинным шрифтом с засечками.

Вопрос: почему не применяется monospace для вывода текста?

Проблема есть в Crome 89.0.4389.72 (Официальная сборка), (64 бит).

Xintrea
()