LINUX.ORG.RU

Сообщения question4

 

Растянуть окно 640x480 на весь экран

 , , ,

Старая программа запускается под Вайном в очень маленьком окне. Растянуть невозможно. Можно ли средствами композитора увеличить окно со всем содержимым в 2 раза? Или лучше в нецелое число раз, чтобы заняло весь экран хотя бы в одном измерении.

Для определённости: КДЕ 5, игра Tone Rebellion, экран 1920x1080.

Когда-то давно я читал, что это несложно сделать средствами OpenGL, но в X Window нет возможности перенаправлять нажатия мыши из смасштабированных координат. Это так? Тогда что может предложить Wayland?

question4
()

«Чекбокс „Запомнить пароль” — лучший способ потерять пароль.»

 ,

Без всяких видимых причин — даже не апдейтил КДЕ — при очередном логине KRDC запросил пароль для первого подключения ко KWallet, которым я пользовался уже полгода. Пароли — генерированные, по 12 букв, запомнить нереально, в целях безопасности не записывал.

Вызваниваю админов…

question4
()

Внезапно отключается мышь

 

Оптическая мышь Genius время от времени перестаёт работать.

В dmesg вижу только usb 3-3: USB disconnect, device number 2

Если её выдернуть и вставить, работает дальше. В dmesg:

[65657.064508] usb 3-3: USB disconnect, device number 2
[65842.769295] usb 3-3: new low-speed USB device number 3 using ohci-pci
[65842.934317] usb 3-3: New USB device found, idVendor=0458, idProduct=0186, bcdDevice=24.58
[65842.934327] usb 3-3: New USB device strings: Mfr=4, Product=40, SerialNumber=0
[65842.934333] usb 3-3: Product: Wired Mouse
[65842.934336] usb 3-3: Manufacturer: KYE SYSTEMS CORP.
[65842.941930] input: KYE SYSTEMS CORP. Wired Mouse as /devices/pci0000:00/0000:00:12.0/usb3/3-3/3-3:1.0/0003:0458:0186.0002/input/input10
[65842.942123] hid-generic 0003:0458:0186.0002: input,hidraw0: USB HID v1.11 Mouse [KYE SYSTEMS CORP. Wired Mouse] on usb-0000:00:12.0-3/input0
[65842.942279] usbhid 3-3:1.1: couldn't find an input interrupt endpoint

При включении то же самое:

[    1.354229] usb 3-3: New USB device found, idVendor=0458, idProduct=0186, bcdDevice=24.58
[    1.354288] usb 3-3: New USB device strings: Mfr=4, Product=40, SerialNumber=0
[    1.354338] usb 3-3: Product: Wired Mouse
[    1.354385] usb 3-3: Manufacturer: KYE SYSTEMS CORP.
[    1.361868] input: KYE SYSTEMS CORP. Wired Mouse as /devices/pci0000:00/0000:00:12.0/usb3/3-3/3-3:1.0/0003:0458:0186.0001/input/input3
[    1.362185] hid-generic 0003:0458:0186.0001: input,hidraw0: USB HID v1.11 Mouse [KYE SYSTEMS CORP. Wired Mouse] on usb-0000:00:12.0-3/input0
[    1.362381] usbhid 3-3:1.1: couldn't find an input interrupt endpoint

Из-за чего происходят такие отключения?

question4
()

Кто говорил, что в JSON невозможно добавлять комментарии?

 , ,

https://github.com/mikf/gallery-dl/blob/master/docs/gallery-dl-example.conf

Если парсить средствами Питона (и не только его), можно добавлять повторяющиеся ключи. Значения ключей "#" — комментарии.

Не идеальное решение, но если этот JSON не пишется машиной, а только читается, всё нормально.

question4
()

Можно открыть тему для правки?

 

В теме Coub закрывается истекло время для правки стартового поста, но я хотел бы добавить абзац, что информация устарела. Вы не могли бы разрешить его правку?

Если это невозможно, добавьте, пожалуйста, в него следующий текст:

«UPDATE: В итоге сайт решили не закрывать. Обсуждение скриптов для скачивания — ниже.»

question4
()

Как экранировать пробелы во вложенных командах?

 ,

Есть однострочник:

for f in oldpath/*.png; do convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp"; done

Он работает в 1 поток. Можно запускать каждую команду отдельным процессом:

for f in oldpath/*.png; do convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp" & done

Но памяти хватает файлов на 300, если больше — всё прибивается по OOM.

Я хотел использовать GNU parallel, точнее sem:

for f in oldpath/*.png; do sem -j8 convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp" & done

Но как выяснилось, если в $f есть пробелы, convert получит его без кавычек и не сможет работать.

Вопрос: как принято передавать имена с пробелами пробелы таким утилитам, как sem?

Ответ: У sem и parallel есть параметр --quote или -q.

for f in oldpath/*.png; do sem -q -j8 convert "$f" $PARAMETERS "newpath/`basename "$f" .png`.webp" & done

Но я всё ещё жду ответов о возможности более общего решения. Например, утилиты вроде tr или sed, автоматически экранирующей строки.

question4
()

Почему boost так любит ломать обратную совместимость?

 , ,

Первые года 3 на нынешнем месте работы половину рабочего времени я вылавливал баги в сторонних библиотеках, зависевших от Буста. Мы регулярно их обновляли, менялись версии в boost*.dll, старые баги исчезали, появлялись новые… Потом Буст из дистрибутива исчез, и новые баги появляться перестали.

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

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

Только что скачал исходники программы, не обновлявшейся лет 7, но точно собиравшейся с версией 1.60. Попробовал собрать. Не нашло какой-то метод. Погуглил. В 1.60 этот метод deprecated, рекомендуют заменить, в 1.66 его совсем убрали, а в 1.81 исчезло и то, на что рекомендовали заменять.

Почему в других библиотеках таких проблем нет, а в Бусте есть?

question4
()

Файл *.torrent из ссылки magnet

 ,

Если доступны пиры, по magnet-ссылке клиент может получить всю информацию, содержащуюся в торрент-файле. Захотелось её сохранить на диск в torrent-файл, не скачивая большие файлы. В сети нашёл только сайт magnet2torrent.com и совет выкачать все файлы и создать торрент. Потом сообразил поискать в ~/.local и ~/.cache (например ~/.local/share/data/qBittorrent/BT_backup). Но вопрос остался. Почему интерфейс распространённых клиентов не имеет функции «сохранить торрент»?

question4
()

KDE виснет, куда копать?

 , ,

Внезапно интерфейс становится всё менее отзывчивым и через несколько минут вообще прекращает реагировать на нажатия клавиш и клики мышью. Перерисовка окна может застрять на середине. Переключиться в консоль по Ctrl-Alt-F2 можно. Нагрузка в htop — гораздо ниже 50% (и CPU, и память), в iotop-с и xrestop тоже ничего страшного. Своп может отсутствовать.

Помогает Alt-SysRq-REI с повторным запуском иксов. Или DISPLAY=:0 kwin_x11 --replace из консоли.

В dmesg ничего, metalog был отключён. Как выяснилось, /var/log/Xorg.0.log не используется уже много месяцев.

Gentoo с OpenRC (без systemd), xorg-server-21.1.6, версии компонентов КДЕ 5.25.5, 5.99.0 или 22.08.3. Началось после апдейта на 5.25.4 с чего-то существенно более старого, полугодовой давности. Когда виснет, всегда одновременно запущены Firefox, Konsole, GoldenDict (форк на qtwebengine-5.15.8), KRDC, нередко что-то ещё.

Что это может быть, как определить? И как включить лог иксов?

Дополнение: Кто-нибудь сталкивался с багом dri_is_thread_safe в Mesa? https://gitlab.freedesktop.org/mesa/mesa/-/commit/b111e8aa4940e8b155f38b5ef238c295ded8a6b4 Оно?

question4
()

Перезапустить иксы, не останавливая гуёвое приложение

 , ,

Под X Window под KDE5/Plasma запущено графическое приложение. Avidemux. Отработал уже сутки и будет работать ещё двое. Но кеды/плазма повисли. Можно двигать мышью, но ни клики, ни нажатия клавиш ничего не делают. Можно переключиться в tty2 (по Ctrl-Alt-F2) и что-то сделать оттуда. Как перезапустить КДЕ?

fg, bg, Ctrl-Z, screen, disown бесполезны, так как avidemux был запущен из недоступного окна Konsole.

Поможет ли DISPLAY=:0 killall plasmashell && kstart5 plasmashell --replace ? Или так закроет все работающие гуёвые программы?

Меня устроит вариант, когда окно avidemux станет невидимым, но программа продолжит работать.

Ответ: DISPLAY=:0 kwin_x11 --replace & из tty3 перезапустило зависшую графику. Окна Konsole и Avidemux продолжили работать нормально. После этого я закрыл сессию tty3, и всё продолжило работать. А plasmashell понадобилось запустить, чтобы заработала панель.

question4
()

Как запустить FreeCiv без людей?

 

В некоторых играх Civilization при помощи читов можно было сделать, чтобы все игроки управлялись компьютером. И смотреть мультфильм. А как сделать то же во FreeCiv?

Ответ: Сделать всех игроков AI, сделать себя глобальным наблюдателем, выставить положительный таймаут хода. Можно при генерации мира, можно на любом ходу. Соответствующие консольные команды: /o, /aitoggle <имя>, /set timeout 10.

question4
()

В уведомлениях неверное время без JS

 

Если отключён джаваскрипт, в уведомлениях к моим темам показывается неверное время для комментариев, не являющихся ответами на мои комментарии. Пример: для pic4a.ru всё? последний комментарий от 15.01.23 12:06:25, а показывает «вчера».

question4
()

avidemux использует только 2 потока

 ,

Перекодирую видео avidemux-ом, поставил число threads по числу ядер процессора, а используются только 2 из 8. В чём проблема, куда копать?

Avidemux 2.7.8, ffmpeg 4.4.3, перекодирую из MP4 в Webm, задал уменьшение объёма с ~15M до 10M. Процессор — AMD FX-8300, видеокарта не задействуется, вроде. Gentoo.

question4
()

pic4a.ru всё?

 

@pi11, на главной странице 404. Сайт не может продолжать работу?

Спасибо, что старые картинки остаются доступны.

question4
()

Заблокировали почту на Mail.ru

 , ,

С формулировкой, что какой-то подозрительный IP. IP был рабочий, белый, но я с него туда логинился раз в год-два. С домашних динамических тоже прекратило пускать. Переписка с техподдержкой ничего не дала, так как я не помнил, под каким именем регистрировался. Но очень упорно выпрашивали телефон. Ладно, купил симку с тарифом 2 рубля в 3 месяца, ещё раз попробовал залогиниться, вбил свежекупленый номер. И ещё попытался вспомнить дату рождения и контрольный вопрос — очень сомневаюсь, что угадал.

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

question4
()

Словарь синонимов

 

Искал анекдоты про девопсов, наткнулся на https://github.com/griever-gf/korni_russkogo/blob/master/data/korni_dictionary.csv

Более 14 тысяч заимствованных слов с русскими синонимами. Полезная иногда вещь. Или просто поржать. «Мокроступы» есть. Абсорбция есть, адсорбции нет.

question4
()

Как сравнить гистограммы?

 ,

Захотелось попробовать расшифровать шифр из «Жангады» Жюля Верна. Там был текст из 252 букв: message = 'СГУЧПВЭЛЛЗЙРТЕПНЛНФГИНБОРГЙУГЛЧДКОТХЖГУУМЗДХРЪСГСЮДТПЪАРВЙГГИЩВЧЭЕЦСТУЖВСЕВХАХЯФБЬБЕТФЗСЭФТХЖЗБЗЪГФБЩИХХРИПЖТЗВТЖЙТГОЙБНТФФЕОИХТТЕГИИОКЗПТФЛЕУГСФИПТЬМОФОКСХМГБТЖФЫГУЧОЮНФНШЗГЭЛЛШРУДЕНКОЛГГНСБКССЕУПНФЦЕЕЕГГСЖНОЕЫИОНРСИТКЦЬЕДБУБТЕТЛОТБФЦСБЮЙПМПЗТЖПТУФКДГ' и N-значное число, задававшее кольцевые сдвиги. В романе шифр описывался как принципиально невзламываемый из-за большой вычислительной сложности, но к моменту публикации его уже научились вскрывать. Для этого берут срезы (или какой принят термин?) message[0::N], message[1::N] … message[N-1::N], для каждого строят гистограмму вероятностей букв и сравнивают с эталонной, насколько нужно сдвинуть.

Вопрос: как это сравнение гистограмм реализовать программно?

Я попробовал сравнивать суммы квадратов разностей, перебирая сдвиги для каждой длины ключа, и это позволило найти сдвиги, угадав длину ключа. Но для разных длин ключа сравнивать эти суммы напрямую нельзя — наименьшая сумма вышла для 1-значного ключа. Как их сравнивать?

Для определённости — код:

message = 'СГУЧПВЭЛЛЗЙРТЕПНЛНФГИНБОРГЙУГЛЧДКОТХЖГУУМЗДХРЪСГСЮДТПЪАРВЙГГИЩВЧЭЕЦСТУЖВСЕВХАХЯФБЬБЕТФЗСЭФТХЖЗБЗЪГФБЩИХХРИПЖТЗВТЖЙТГОЙБНТФФЕОИХТТЕГИИОКЗПТФЛЕУГСФИПТЬМОФОКСХМГБТЖФЫГУЧОЮНФНШЗГЭЛЛШРУДЕНКОЛГГНСБКССЕУПНФЦЕЕЕГГСЖНОЕЫИОНРСИТКЦЬЕДБУБТЕТЛОТБФЦСБЮЙПМПЗТЖПТУФКДГ'

alph32 = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
def rln32(letter):
    '''Номер буквы 32-буквенного русского алфавита.'''
    return alph32.index(letter);

def letter_frequencies(text):
    '''Частоты букв в тексте.'''
    return [ text.count(letter) / len(text) for letter in alph32 ]

etalon = letter_frequencies(sample_text) # эталонная гистограмма вероятностей букв

def shiftmatch(a1, a2, shift):
    '''Сумма квадратов разностей элементов списков для сдвига shift.'''
    return sum((val - a2[ (pos + shift) % 32 ])**2  for pos, val in enumerate(a1))

for razr in range(1,13): # длина ключа
    shifts = [0] * razr
    for place in range(razr): # позиция в ключе
        probs = letter_frequencies(message[place::razr]) # гистограмма для позиции
        match = [ shiftmatch(etalon, probs, s)*100 for s in range(32) ]
        mm = min(match)
        shifts[place] = match.index(mm);
        print(razr, place, shifts[place], mm, sep = '\t');
    print(''.join(alph32[(rln32(l) - shifts[p % razr]) % 32] for p,l in enumerate(message)))

Для 6-значного ключа скрипт подобрал верное значение [4, 3, 2, 5, 1, 3], но как численно обосновать, что ключ 6-разрядный?

question4
()

PR_IO_TIMEOUT_ERROR

 

У меня одного сайт через раз открывается? Постоянно «Время ожидания соединения истекло» «При соединении с www.linux.org.ru произошла ошибка. PR_IO_TIMEOUT_ERROR»

Мегафон, Московская область.

23:03 — заработало нормально, вроде.

question4
()

Проблема с ключевым кадром(?) при склейке файлов

 

Скачал фильм в виде полутора десятков видеофайлов (не помню, откуда). Склеил их в один командой ffmpeg -f concat -i список.txt -c copy имя.mp4. На стыке файлов 13 и 14 — ошибка. В mplayer в этом месте изображение на несколько секунд замирает, в mpv перескакивает на несколько секунд вперёд и рассинхронизируется со звуком. Если смотреть 14-й файл, потерянные кадры там присутствуют в самом начале.

Можете скачать и убедиться: 13.cache.flv, 14.cache.flv, list2.txt, склеивать командой
ffmpeg -f concat -i list2.txt -c copy 13-14.flv
или
ffmpeg -f concat -i list2.txt -c copy 13-14.mp4
Глюк в районе 0:06:42.

В чём проблема? Лечится?

Да, я знаю, что этот фильм можно скачать в другом месте. Но интересно, как детектировать такую проблему, если она возникнет снова, и как с ней бороться?

question4
()

Поддержка CUDA на Radeon

 , ,

https://market.yandex.ru/product--videokarta-peladn-amd-radeon-rx580-rx580-8g-d5/1766176049/question--razve-u-amd-byvaet-podderzhka-cuda/7294130

Какой-то ушлый ИП перепродаёт видеокарты AMD и ставит в свойствах поддержку CUDA. Мотивировка:

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

:)

P.S. Похоже pleer.ru занимается тем же.

question4
()

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