LINUX.ORG.RU

Сообщения question4

 

В Python 3.13 перестают работать стрелки

Форум — Desktop

Регулярно сталкиваюсь с проблемой в интерактивном режиме в новом Питоне. После каких-то действий перестают работать кнопки курсора: стрелки, Home, End. И серые, и на цифровой клавиатуре. Ctrl-стрелки иногда работают, иногда тоже перестают. Ввод с клавиатуры обычно работает, Backspace работает. После нажатия на Enter или Ctrl-C стрелки начинают работать. Можно нажать F2 и q, тогда заработает и в текущей строке.

Когда это начинается, сказать затрудняюсь, но смог устойчиво воспроизводить следующим образом:
запустить в консоли Midnight Commander,
запустить в нём python3.13,
набрать что-нибудь в интерактивном режиме,
открыть панели MC по Ctrl-O, затем закрыть Ctrl-O,
после этого стрелки игнорируются.

В bash такой проблемы с MC не возникает.

В чём дело? Исправить это можно? Или как сбросить помимо F2, q?

Gentoo, KDE6, X.org-21.1.16, Konsole-24.12.3, Python-3.13.3, MC-4.8.33

 , ,

question4
()

Учебная задача: оптимизировать работу с очередью

Форум — Development

Учебная задача. Симулятор обработки сетевых пакетов. Дан буфер размера size и набор Npac пар чисел Ti-Di. В моменты Ti приходят пакеты, на обработку которых нужно Di времени. Di может быть 0. Несколько Ti подряд могут совпадать, но они гарантированно не убывают. Пришедший пакет добавляется в хвост буфера. Обрабатывается только пакет в голове, на 0-м месте, остальные ждут. Если подряд идут несколько пакетов длительностью 0, они обрабатываются в одном такте, в том же, когда первый из них дошёл до головы, и этот же такт засчитывается и в обработку следующего за ними ненулевого пакета. Когда буфер заполнен, приходящие пакеты сбрасываются.

Требуется выдать массив времён, когда началась обработка каждого пакета. Или «-1», если пакет был сброшен.

Я сделал предельно просто — счётчик тактов времени, на каждом такте пробегается вначале очередь, всем ждущим снижается время ожидания, если что-то доходит до головы — обрабатывается, затем пробегается массив пакетов от первого необработанного до первого со временем прибытия Ti больше текущего. Работает правильно, но долго.

Попробовал ускорить, двигать время не по 1 такту, а определять дельты до прихода ближайшего пакета или окончания обработки головы очереди, что раньше. Выигрыш получился несущественный. Оптимизации с заменой list на collections.deque и хранением длин массивов в отдельных переменных дали прирост 10-20%

Почитал советы — говорят, надо избавиться от цикла со счётчиком времени и работать с событиями. Какая принципиальная разница с дельтами? Попробовал, запутался в алгоритме, постоянно что-то теряется. Получилось гораздо быстрее, но возможно, потому, что неправильно.

Вариант с дельтами:

import time, sys, collections
ar = list(map(int, sys.stdin.read().split()))
size, npac = ar[0:2]
packets = [ar[lcv*2+2:lcv*2+4] for lcv in range(npac)]
packets = [{'arrival':arrival, 'duration':duration, 'start':-1, 'time':duration} for arrival, duration in packets]
maxtime = 1 + sum(p['arrival'] + p['duration'] for p in packets)
queue = collections.deque()
curp = 0 # номер первого необработанного пакета
t = 0
nextarrival = 0
nextqueue = 0
delta = 1

while t < maxtime:
    # обработать очередь
    if queue:
        queue[0]['time'] -= 1
        if queue[0]['time'] <= 0:
            queue.popleft()
            while queue and queue[0]['time'] <= 0:
                queue[0]['start'] = t
                queue.popleft()
            if queue:
                queue[0]['start'] = t
                nextqueue = queue[0]['time']
    # проверить прибытие пакетов
    for i in range(curp, npac):
        p = packets[i]
        if t < p['arrival']:
            nextarrival = p['arrival']
            break
        curp = i+1
        if t == p['arrival']:
            if not queue:
                    p['start'] = t
                    if p['duration'] > 0:
                        queue.append(p)
            elif len(queue) < size:
                    queue.append(p)
            else:
                p['start'] = -1
    # выход, всё закончилось
    if len(queue) < 2 and curp >= npac:
        break
    # время следующего события
    tlast = t
    t = max(min(nextarrival, nextqueue), t+1)
    delta = t - tlast

for p in packets:
    print(p['start'])

Что и как здесь можно ускорить?

Или как делать иначе? Цикл по массиву пакетов, где в ожидании очередного прибытия прокручивается очередь, у меня получился слишком запутанным. Другие варианты есть?

Ответ: Свёл к следующему:

import sys, collections
ar = list(map(int, sys.stdin.read().split()))
size, npac = ar[0:2]
packets = [ar[lcv*2+2:lcv*2+4] for lcv in range(npac)]
queue = collections.deque()
log = [-1 for _ in range(npac)]
t0 = 0 # tc = 0
for pn in range(npac):
    cparrival, cpduration = packets[pn]
    # tc <= cparrival
    while len(queue) > 0 and t0 + queue[0][0] <= cparrival :
        d0, pn0 = queue.popleft()
        t0 = t0 + d0 #tc
        if queue: 
            log[queue[0][1]] = t0
            #t0 = tc
    #tc = cparrival
    if len(queue) < size:
        queue.append([cpduration, pn])
        if len(queue) == 1:
            log[pn] = cparrival
            t0 = cparrival
#tc = t0
while queue:
    d0, pn0 = queue.popleft()
print(log)

Вычислительная часть работает вдвое быстрее.

 

question4
()

Выбор нового роутера и ремонт старого

Форум — Linux-hardware

После грозы с миганием света стал глючить интернет. ping 8.8.8.8 стал терять 20-40% пакетов, ping по имени домена вдобавок стал отказываться ресолвить домен (примерно 1 раз из 3). На звонки к провайдеру трое суток отвечал робот «в вашем районе ведутся ремонтные работы». Подключился через сотовый телефон. По окончании работ лучше не стало. По совету техподдержки перезагружал роутер и компьютер и шатал штекера в разъёмах — не помогло. Попробовал подключить кабель напрямую — те же потери 30%, и опять «в вашем районе ведутся ремонтные работы» на двое суток.

Когда сотрудник провайдера наконец до меня добрался, он смог меня убедить попробовать напрямую ещё раз. Почему-то в этот раз не заработало без подмены MAC-адреса, зато с подменой связь стала отличной. То есть, виноват роутер. По его мнению — помирает от старости (MikroTik hAP ac lite, куплен в 2019).

Собственно вопросы:

  1. Что сейчас стоит брать в Подмосковье? Требуются 3 выхода Ethernet и WiFi. Искать устройства с «OpenWRT» в описании?

  2. Что могло случиться со старым? Как определить, ремонтопригоден ли он, и что можно сделать? Если это надолго, возиться не буду, просто интересно.

 , ,

question4
()

Не извлекается символ из строки при генерации списка

Форум — Development

Требовалось произвести кое-какие преобразования строк в списке. Обнаружил, что при использовании list comprehension не могу взять i-й символ из строки, пишет «string index out of range». Вне генератора выражение работает нормально.

>>> ls1[0]
"#mkdir '1236'"
>>> line = ls1[0]
>>> line[0]
'#'
>>> [line[0] for line in ls1]
Traceback (most recent call last):
  File "<python-input-49>", line 1, in <module>
    [line[0] for line in ls1]
     ~~~~^^^
IndexError: string index out of range

Для других индексов — то же. В итоге сделал через регулярные выражения, но в чём проблема?
Python 3.13.3

P.S. Гуглить не получается, интернет в доме почти не работает, все ремонтники в отпуске. ЛОР кое-как грузится, с более навороченными сайтами — швах.

Ответ: Пустая строка в конце после str.split(‘\n’)

 

question4
()

Игнорировать разрывы строк при сравнении текстовых файлов

Форум — General

Есть 9-мегабайтный текстовый файл. Я в него добавил в разные места несколько килобайт, затем неправильно применил в FAR-е скрипт EditWrap.lua и по ошибке сохранил. Бэкап, сделанный до всех правок, есть.

Нужно сравнить этот файл с оригиналом, игнорируя разрывы строк, и перенести отличия из нового в старый. То есть при сравнении должны считаться одинаковыми фрагменты:

a bc d

и

a b
c d

Если при этом фрагменты окажутся одинаковыми с a b c d или abcd — значения не имеет, не проблема.

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

wdiff и dwdiff работают на уровне слов, поэтому разрывы строк, разрывающие слова, они игнорировать не смогут. Так?

Что ещё есть?

UPD: Сравнил их скриптом на Питоне в полуручном режиме, но вопрос о более универсальном решении остался.

 ,

question4
()

Кто-нибудь следит, что с Флибустой?

Форум — Talks

Знаю, что предыдущий владелец в прошлом году умер, но сайт кому-то передал, и сайт продолжил работу. И всё стихло.

Последние несколько дней сайт не открывается даже через адрес *.onion. Кто-нибудь что-нибудь знает, что там?

 

question4
()

USB-tethering работает на старом телефоне, но не работает на новом

Форум — Linux-hardware

Сабж. Куда копать?

Gentoo, AMD64, ядро 5.15.32, OpenRC.

Со старым телефоном:

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 018: ID 17ef:7ad6 Lenovo Android
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 0665:5161 Cypress Semiconductor USB to Serial
...
Bus 008 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

С новым то же, но

Bus 001 Device 010: ID 12d1:108a Huawei Technologies Co., Ltd. MNA-LX9

вместо Lenovo Android.

dmesg для старого:

[95942.121950] usb 1-4: new high-speed USB device number 18 using ehci-pci
[95942.251558] usb 1-4: New USB device found, idVendor=17ef, idProduct=7ad6, bcdDevice= 3.18
[95942.251570] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[95942.251576] usb 1-4: Product: Android
[95942.251580] usb 1-4: Manufacturer: Android
[95942.251584] usb 1-4: SerialNumber: 29f25081
[95942.253897] rndis_host 1-4:1.0 usb0: register 'rndis_host' at usb-0000:00:12.2-4, RNDIS device, 06:7d:55:2f:03:af
[95942.289292] rndis_host 1-4:1.0 enp0s18f2u4: renamed from usb0

для нового:

[48479.493890] usb 1-4: new high-speed USB device number 6 using ehci-pci
[48479.624851] usb 1-4: New USB device found, idVendor=12d1, idProduct=108a, bcdDevice= 5.10
[48479.624863] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[48479.624868] usb 1-4: Product: MNA-LX9
[48479.624872] usb 1-4: Manufacturer: HUAWEI
[48479.624875] usb 1-4: SerialNumber: JUP0224109002027
[48479.676635] usbcore: registered new interface driver cdc_ether
[48479.679944] rndis_host 1-4:1.0 usb0: register 'rndis_host' at usb-0000:00:12.2-4, RNDIS device, 66:8d:69:17:13:74
[48479.680007] usbcore: registered new interface driver rndis_host
[48479.711297] rndis_host 1-4:1.0 enp0s18f2u4: renamed from usb0
[48877.717711] usb 1-4: USB disconnect, device number 6
[48877.717794] rndis_host 1-4:1.0 enp0s18f2u4: unregister 'rndis_host' usb-0000:00:12.2-4, RNDIS device

(дополнение: последние 2 строки могут не появиться, но модем всё равно не работает)

Автоматическое подключение USB-модема не настроено. Я каждый раз беру имя из dmesg и создаю соответствующий линк на /etc/init.d/net.lo, в данном случае — /etc/init.d/net.enp0s18f2u4 и запускаю net.enp0s18f2u4 start. Для старого этого хватает, для нового — ничего не ресолвится и не пингуется.

При запуске net.enp0s18f2u4 с новым пишет:

# /etc/init.d/net.enp0s18f2u4 -v start
net.enp0s18f2u4           |net.enp0s18f2u4           | * Executing: /usr/libexec/rc/sh/openrc-run.sh /usr/libexec/rc/sh/openrc-run.sh /etc/init.d/net.enp0s18f2u4 start
net.enp0s18f2u4           | * Bringing up interface enp0s18f2u4
net.enp0s18f2u4           | *   Skipping module adsl due to missing program: adsl-start pppoe-start
net.enp0s18f2u4           | *   Skipping module br2684ctl due to missing program: br2684ctl
net.enp0s18f2u4           | *   Skipping module clip due to missing program: atmsigd
net.enp0s18f2u4           | *   Skipping module netplugd due to missing program: netplugd
net.enp0s18f2u4           | *   Skipping module ifplugd due to missing program: ifplugd
net.enp0s18f2u4           | *   Skipping module ipppd due to missing program: ipppd
net.enp0s18f2u4           | *   Skipping module iwconfig due to missing program: iwconfig
net.enp0s18f2u4           | *   Skipping module iwd due to missing program: /usr/libexec/iwd
net.enp0s18f2u4           | *   Skipping module iw due to missing program: iw
net.enp0s18f2u4           | *   Skipping module firewalld due to missing program: firewall-cmd
net.enp0s18f2u4           | *   Skipping module udhcpc due to missing program: busybox
net.enp0s18f2u4           | *   Skipping module dhclient due to missing program: dhclient
net.enp0s18f2u4           | *   Skipping module dhclientv6 due to missing program: dhclient
net.enp0s18f2u4           | *   Skipping module wireguard due to missing program: wg
net.enp0s18f2u4           | *   Loaded modules: apipa arping bonding l2tp tuntap bridge ccwgroup ethtool dummy hsr macvlan macchanger macnet qmi wpa_supplicant ssidnet iproute2 pppd system vlan dhcpcd ip6rd ip6to4 veth
net.enp0s18f2u4           | *   ip link set dev enp0s18f2u4 up
net.enp0s18f2u4           | *   Configuring enp0s18f2u4 for MAC address 9A:AF:12:F5:CB:8E ...                                                                         [ ok ]
net.enp0s18f2u4           | *   config_enp0s18f2u4 not specified; defaulting to DHCP
net.enp0s18f2u4           | *   dhcp ...
net.enp0s18f2u4           | *     Running dhcpcd ...
net.enp0s18f2u4           |dhcpcd-10.2.2 starting
net.enp0s18f2u4           |DUID 00:01:00:01:1a:ee:99:27:f4:6d:04:45:83:c4
net.enp0s18f2u4           |enp0s18f2u4: IAID 12:f5:cb:8e
net.enp0s18f2u4           |enp0s18f2u4: adding address fe80::387c:bdb6:1a53:efe9
net.enp0s18f2u4           |enp0s18f2u4: soliciting a DHCP lease
net.enp0s18f2u4           |enp0s18f2u4: soliciting an IPv6 router
net.enp0s18f2u4           |enp0s18f2u4: probing for an IPv4LL address
net.enp0s18f2u4           |enp0s18f2u4: using IPv4LL address 169.254.201.93
net.enp0s18f2u4           |enp0s18f2u4: adding route to 169.254.0.0/16
net.enp0s18f2u4           |enp0s18f2u4: adding default route                                                                                                          [ ok ]
net.enp0s18f2u4           | *     received address 169.254.201.93/16                                                                                                  [ ok ]
net.enp0s18f2u4           | *   ip -4 route flush table cache dev enp0s18f2u4
net.enp0s18f2u4           | *   ip -6 route flush table cache dev enp0s18f2u4

со старым:

# /etc/init.d/net.enp0s18f2u4 -v start
net.enp0s18f2u4           |net.enp0s18f2u4           | * Executing: /usr/libexec/rc/sh/openrc-run.sh /usr/libexec/rc/sh/openrc-run.sh /etc/init.d/net.enp0s18f2u4 start
net.enp0s18f2u4           | * Bringing up interface enp0s18f2u4
net.enp0s18f2u4           | *   Skipping module adsl due to missing program: adsl-start pppoe-start
net.enp0s18f2u4           | *   Skipping module br2684ctl due to missing program: br2684ctl
net.enp0s18f2u4           | *   Skipping module clip due to missing program: atmsigd
net.enp0s18f2u4           | *   Skipping module netplugd due to missing program: netplugd
net.enp0s18f2u4           | *   Skipping module ifplugd due to missing program: ifplugd
net.enp0s18f2u4           | *   Skipping module ipppd due to missing program: ipppd
net.enp0s18f2u4           | *   Skipping module iwconfig due to missing program: iwconfig
net.enp0s18f2u4           | *   Skipping module iwd due to missing program: /usr/libexec/iwd
net.enp0s18f2u4           | *   Skipping module iw due to missing program: iw
net.enp0s18f2u4           | *   Skipping module firewalld due to missing program: firewall-cmd
net.enp0s18f2u4           | *   Skipping module udhcpc due to missing program: busybox
net.enp0s18f2u4           | *   Skipping module dhclient due to missing program: dhclient
net.enp0s18f2u4           | *   Skipping module dhclientv6 due to missing program: dhclient
net.enp0s18f2u4           | *   Skipping module wireguard due to missing program: wg
net.enp0s18f2u4           | *   Loaded modules: apipa arping bonding l2tp tuntap bridge ccwgroup ethtool dummy hsr macvlan macchanger macnet qmi wpa_supplicant ssidnet iproute2 pppd system vlan dhcpcd ip6rd ip6to4 veth
net.enp0s18f2u4           | *   ip link set dev enp0s18f2u4 up
net.enp0s18f2u4           | *   Configuring enp0s18f2u4 for MAC address 9A:AF:12:F5:CB:8E ...                                                                         [ ok ]
net.enp0s18f2u4           | *   config_enp0s18f2u4 not specified; defaulting to DHCP
net.enp0s18f2u4           | *   dhcp ...
net.enp0s18f2u4           | *     Running dhcpcd ...
net.enp0s18f2u4           |dhcpcd-10.2.2 starting
net.enp0s18f2u4           |DUID 00:01:00:01:1a:ee:99:27:f4:6d:04:45:83:c4
net.enp0s18f2u4           |enp0s18f2u4: IAID 12:f5:cb:8e
net.enp0s18f2u4           |enp0s18f2u4: soliciting an IPv6 router
net.enp0s18f2u4           |enp0s18f2u4: soliciting a DHCP lease
net.enp0s18f2u4           |enp0s18f2u4: offered 192.168.42.39 from 192.168.42.129
net.enp0s18f2u4           |enp0s18f2u4: probing address 192.168.42.39/24
net.enp0s18f2u4           |enp0s18f2u4: leased 192.168.42.39 for 3600 seconds
net.enp0s18f2u4           |enp0s18f2u4: adding route to 192.168.42.0/24
net.enp0s18f2u4           |enp0s18f2u4: adding default route via 192.168.42.129                                                                                       [ ok ]
net.enp0s18f2u4           | *     received address 192.168.42.39/24                                                                                                   [ ok ]
net.enp0s18f2u4           | *   ip -4 route flush table cache dev enp0s18f2u4
net.enp0s18f2u4           | *   ip -6 route flush table cache dev enp0s18f2u4

В старом телефоне при подключении кабеля tethering не предлагает, нужно искать в настройках. В новом настройки RNDIS спрятали ещё глубже — «только для разработчиков».

Специально для анонимного параноика, у которого власти воруют DNS: до ресолвинга имён дело не доходит. Ничего не пингуется. При подключении не задаётся гейт. На старом телефоне всё работает, поэтому твоя бредовая конструкция о саботаже неприменима.

UPD: Не связана ли причина с usb 1-4: USB disconnect, device number 6 через 400с после подключения нового телефона? Что с этим делать? Самопроизвольное отключение прекратило воспроизводиться.

 , , , ,

question4
()

Глюк? Или новый инструмент модераторов?

Форум — Linux-org-ru

Мне пришло уведомление, что мой пост в теме X11Libre -- свободный и независимый форк X.Org Server удалили по 7.1. Но в режиме просмотра удалённых я не вижу, чтобы мои посты удаляли.

Глюк движка? Или модераторы теперь могут удалять посты бесследно?

 

question4
()

Знатоки ушераздирающего металла с тошнотворными текстами есть?

Форум — Talks

Есть один музыкальный фрагмент, который любят ставить в несерьёзные видеоролики. Не столь известный, как Yakety Sax, но узнаваемый. Наткнулся на него в N+1-й раз, под рукой был Шазам, который выдал несколько неожиданный результат, но я полистал дорожку вперёд и обнаружил резкую смену стиля. https://nullum1.bandcamp.com/track/--10

Вопрос: что в «Черной оспе» из «Лоботомии» авторства «Nullum» делает фрагмент с 1:20 и до конца, и откуда он изначально взялся?

P.S. Также натыкался на варианты «Чёрной оспы» длиной всего 1:20, то есть без этого фрагмента.

Oтвет: Happy Tree Friends.

P.P.S. Но всё ещё интересно, что они хотели этим сказать?

 

question4
()

Порядок переключения окон в KDE 6

Форум — Desktop

По какому принципу определяется этот порядок? У меня открыто несколько окон Firefox и Kate, Переключаюсь из Kate в Firefox, открываю ещё одно окно Firefox (информацию о странице), закрываю — переключает в Kate вместо предыдущего окна. Воспроизводится нестабильно: то несколько десятков раз подряд, то прекращает. Выключение и перезагрузка не помогли.

Gentoo; пакеты KDE и Plasma версий 6.3.4 или 24.12.3. В «Window Management > Task Switcher» выбрал «Sort order» = «Recently used» и отключил все чекбоксы в «Content» и «Filter».

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

 ,

question4
()

Загрузиться со старого диска через UEFI

Форум — Linux-hardware

Диск размечен в GPT, но использовался на машине без UEFI. 2 раздела: ext4 и загрузочный GRUB2. Материнская плата в новой машине не имеет legacy-режима. UEFI shell видит на этом диске 3 раздела BLK0:, BLK1: и BLK2:. Есть ли простой способ загрузитсься с этого диска?

 ,

question4
()

Berkeley Humanoid Lite

Форум — Talks

Удивляюсь, что до сих пор никто не притащил:
https://www.opennet.ru/opennews/art.shtml?num=63146
https://lite.berkeley-humanoid.org
https://github.com/HybridRobotics/Berkeley-Humanoid-Lite

Калифорнийский университет в Беркли опубликовал проект Berkeley Humanoid Lite … прост[ого] для изготовления человекоподобн[ого] робот[а] … с использованием открытого ПО и … Open Hardware. … из типовых компонентов … в свободной продаже, и деталей, изготовленных на 3D-принтере. Опубликованы модели машинного обучения, исходный код ПО, схемы, список компонентов (BOM), сборочный план и модели для 3D-печати … исходные тексты выполняемых на стороне робота прошивок … среда для разработки управляющих сценариев, окружение для симуляции, тренировки моделей движения и верификации … на базе фреймворков Isaac Lab, Isaac Sim и MuJoCo … модели машинного обучения

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

Для сборки не требуются особые навыки … [стоимость] 5000 долларов. Робот модульный и рассчитан на возможность доработки и адаптации для своих целей … может быть преобразован из прямоходящего в четвероногого или кентавроподобного. [Или колёсного.]

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

 , ,

question4
()

test -f с несколькими файлами

Форум — Multimedia

Есть ли простой бескостыльный способ проверить присутствие файлов по маске, помимо перебора в цикле?

Простым скриптом проверяю наличие файлов субтитров, если ничего нет — запускаю whisper. У уже имеющихся файлов в имени может быть указан или не указан язык. Файлов субтитров для одного видео может быть несколько. То есть могут быть $name.srt, $name.en.srt, $name.ru.srt, $name.fr.srt и т.п. в любых сочетаниях или не быть ничего.

for f in *.mp4 ; 
do
  name="`basename "$f" .mp4`" ; 
  if [ ! -f "$name"*.srt ] ; 
  then
    ffmpeg -i "$f" ... "$name"... && whisper-cpp ..."$name"... ; 
  fi ; 
done

[ ! -f "$name"*.srt ] работает, если файла нет, или есть только один. Если файлов несколько, test выдаёт ошибку, и ветка then не выполняется, что тоже приемлемо, но криво.

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

Перемещено hobbit из general

 ,

question4
()

ffmpeg и ключевые кадры

Форум — Multimedia

Какая разница между -skip_frame nokey и -discard nokey?

В мануале пример для вырезания ключевых кадров из видео использует -skip_frame. Cоветы, которые мне попадались в сети, — с -discard, поэтому я раньше пользовался им. Хотя судя по числу результатов в Гугле, -skip_frame популярнее.

Из-за чего возник вопрос. Вырезал ключевые кадры из 17-секундного видео, насоздавало 16 картинок для первых 3 секунд и 4 для остального. Полез смотреть в avidemux — он увидел всего 6 ключевых кадров: на 0, 3, 6, 9, 12 и 15 секунд. Но команды

ffmpeg -discard nokey -i арба.mp4 -vsync 0 -f image2 'frames-%04d.png'
ffmpeg -discard nokey -i арба.mp4 -codec libwebp -vsync 0 'frames-%04d.webp'

помимо требуемых 6 также сохраняют 14 кадров между 0 и 3 секундами. А команды

ffmpeg -skip_frame nokey -i арба.mp4 -vsync 0 -f image2 'frames-%04d.png'
ffmpeg -skip_frame nokey -i арба.mp4 -codec libwebp -vsync 0 'frames-%04d.webp'

создают ожидаемые 6 файлов.

Почему так происходит?

 ,

question4
()

Какой тут нужен корпус?

Форум — Linux-hardware

Купил новую видеокарту. Длиной 33 см. А она в старый корпус не лезет. Там от выступа, к которому видеокарта привинчивается, до креплений жёстких дисков только 30 см — см. фото: http://0x0.st/8O08.jpg

Как называется корпус, который тут нужен?

UPD: Спасибо, про фильтр «максимальная длина карты» сказали почти сразу. Нижняя корзина съёмная, но карта упирается в приклёпанную верхнюю часть или в блок питания. Резать не хочу, проще купить новый корпус. Райзер ставить не рискну – держать дорогущую видеокарту в опасной близости от тарелок с едой, чтобы сэкономить 2-3 тысячи рублей на корпусе. Блок питания на 1000 Вт уже есть. Видимая на проводах питания пыль накопилась за 5 недель – подозреваю, что дело в шоссе за окном. Поэтому сейчас можете высказываться о потоках воздуха в корпусе и преимуществах верхнего или нижнего БП.

 ,

question4
()

Content Security Policy: Couldn’t process unknown directive ‘report-to’

Форум — General

При заходе на сайт, защищённый Cloudflare получаю пустую страницу. В консоли браузера ошибки Content-Security-Policy: Не удалось обработать неизвестную директиву «report-to» Погуглив, обнаружил, что это было проблемой лет 8 назад, когда эта директива только появилась, но позже браузеры стали её поддерживать.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy/report-to

Firefox 128.9.0. Почему сейчас не работает?

 ,

question4
()

О конусе Маха

Форум — Science & Engineering

https://bigpicture.ru/adskij-kosilshhik-strashnoe-oruzhie-sssr-tak-i-ostavsheesya-proektom/

Утверждают, что в СССР спроектировали, но не стали строить сверхзвуковой самолёт, который должен был летать на высоте 50 м и убивать живую силу звуковой волной.

Перемещено hobbit из talks

 сверхзвук

question4
()

5 лет прошло. Что со стандартами?

Форум — Talks

О стандартах. Питания и не только.

Итак, кто что предсказывал про стандарты?

Юникод настолько распространился, что в браузерах убрали ручное переключение кодировок. Хотя ещё живы онлайн-библиотеки, в которых файлы выложены в архивах в легаси-кодировках. И некоторые популярные сайты продолжают пользоваться той же кодировкой, что и 15-20 лет назад, но правильно отдают charset.

USB использует преимущественно разъёмы A и C. USB3 — основной стандарт передачи данных. Разъём питания USB теснит всех остальных. Автоопределением мощности пользуются.

Несовместимый форм-фактор USB D до сих пор не появился. USB4 использует C.

Что с зоопарком удобных круглых разъёмов? Кто-нибудь видел новые приборы с такими разъёмами питания? Что насчёт штекеров 3,5 и 2,5 мм?

Что с мессенджерами? ICQ и Skype похоронили (хотя от Скайпа остался MS Teams). Значительная часть популярных мессенджеров (WhatsApp, Viber, Discord) уже открыто перлюстрируется ЦРУ/ФБР/АНБ. Насколько жив XMPP? Если не учитывать политические пристрастия и перспективы, который из них, по-вашему, технологически совершеннее? И который имеет больше шансов вытеснить остальных? (Имхо, для этого необходимы текстовые сообщения, аудио- и видео- послания и звонки, видеоконференции, соцсеть, возможность сдавать пользователей властям — чтобы не чинили препятствий, возможность поднимать свои защищённые сервера — для параноиков.)

Что с внедрением IPv6?

 ,

question4
()

Что такое gain?

Форум — Multimedia

Есть видео с тихим звуком. В Avidemux есть фильтры для постпроцессинга звука. Но мануал написан для людей, которые и так всё знают.

Как я понял, мне нужно «Gain» — усиление. Но в чём оно измеряется? В децибелах? В ручном режиме по умолчанию предлагает 1 dB — это увеличение громкости на 1 децибел, или мощности в 1,26 раз? Или это одно и то же?

И что значит «Maximum value = -3» в автоматическом режиме? -3 децибела означают увеличение в 0,5 раз, то есть снижение вдвое, но с таким параметром громкость увеличивается и бьёт по ушам. (Желаемый результат получился для -10.) Как оно считается?

 ,

question4
()

Отмазка

Форум — Talks

Предыстория. Ищу в интернете компьютерные комплектующие. Так как Яндекс-маркет перестал быть надёжным источником информации, я тупо открыл несколько десятков сайтов поиском по «компьютерный магазин».

Впечатления… Есть несколько гигантов уровня DNS. До сих пор живы немало знакомых с 1990-х имён. Ну, как живы… Например, фирма, где я купил большую часть предыдущего компа (который окончательно сжёг в ~2017-м), торгует старьём 10-летней давности. Иногда сайты ещё работают, но сертификаты истекли, а на главной странице первая новость — о временной приостановке торговли, или «мы скоро опять откроемся»… пару лет назад.

Собственно, что меня повеселило: https://comp-city.com/upload/iblock/064/7fa2ilt55znvq6ez6hn9aox5tshxp326.JPG

В связи с массовыми взрывами бытовой техники в Ливане, согласно указанию Роскомнадзора, магазин временно приостанавливает свою работу для проведения проверки товара на предмет наличия стороннего програмного обеспечения и непредусмотреных конструкцией комплектующих

 , ,

question4
()

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