LINUX.ORG.RU

Избранные сообщения teod0r

Атрибуты в /dev

Форум — Talks

Наберите от рута lsattr -al /dev/ только на всякий случай на некритичном компе - что произойдёт?

Добавлю что получилось у меня, по /var/log/messages

Nov 28 02:38:39 nb2 kernel: [4438721.540616] NET: Registered protocol family 40
Nov 28 02:38:39 nb2 kernel: [4438721.613867] tun: Universal TUN/TAP device driver, 1.6
Nov 28 02:38:39 nb2 kernel: [4438721.683373] Non-volatile memory driver v1.3
Nov 28 02:38:39 nb2 kernel: [4438721.877780] Btrfs loaded, crc32c=crc32c-intel
Nov 28 02:38:39 nb2 kernel: [4438721.935117] serial 00:02: LSR safety check engaged!
Nov 28 02:42:14 nb2 kernel: [    0.000000] Linux version 5.10.0-26-amd64 (debian-kernel@lists.debian.org) (gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 SMP Debian 5.10.197-1 (2023-09-29)
Nov 28 02:42:14 nb2 kernel: [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.10.0-26-amd64 root=UUID=b595a138-37e4-4775-8edd-27e7455d14a1 ro acpi_backlight=vendor "acpi_osi=!Windows 2012" module_blacklist=echi_pci,ehci_hcd quiet

Как видно, lsattr подгрузил пачку каких-то ненужных модулей. А через некоторое время (секунд 15?) ноут молча ребутнулся, похоронив открытые окна за полтора месяца :(.

Корень причины понятен: в отличие от нормальных людей, у которых файловые флаги отдаются через stat(2), в линуксе чтоб их получить надо делать какое-то ioctl на открытый файловый дескриптор (и открывание с O_PATH не годится). Отсюда последствия: 1) на симлинках не работает, 2) попытка чтения их из chr/blkdev или pipe может иметь побочные эффекты т.к. открывание таких файлов их имеет (но в итоге всё равно фейлится, по крайней мере для файлов устройств). Тут кстати, неустранимый race получается - невозможно пытаться прочитать флаги, будучи уверенным что не откроешь случайно файл какого-нить устройства. Хорошо хоть следовать по симлинкам можно запретить через O_NOFOLLOW, а то было бы совсем печально.

Механизм конкретно моего сценария - точно не пойму, но есть два предположения: 1) грузится какой-то забагованный модуль (не обязательно из тех четырёх, ведь они могут и молча грузиться не отправляя ничего в dmesg) который спустя недолгое время роняет ядро 2) активируется какой-то hw watchdog, который допустим надо после этого оповещать раз в 10 секунд для избежания аварийных ребутов

 lsattr

firkax
()

Падение скорости чтения/записи с HDD

Форум — General

Собственно значительно падает скорость чтения/записи с HDD/SSD (предположительно после скачивания торрентов), до 1000 килобайт/с.

И ещё примечательно неприличное замедление последнего этапа команды «apt-get update», когда после скачивания происходит какое-то подкапотное перемалывания индексов, в нормальном случае занимающее меньше секунды, но во время этого замедления операций чтения записи с HDD/SSD оно может длиться больше 20 минут (больше я не терпел и прерывал процесс). И так до перезагрузки все дисковые операции приобретают лимит в 1000 килобайт/с.

Но вот ещё странность: висит вот этот процесс (последний этап работы «apt-get update», после скачивания индексов):

/usr/bin/perl -w /usr/bin/apt-show-versions -i

Даже если скорость всего 1000 килобайт/с, этот процесс не должен читать и молотить индексы более 20 минут. После перезагрузки «apt-get update» работает как и положено, быстро скачивает, быстро обновляет индексы.

Было и на старом ядре и на новом из бекпортов. Графическая оболочка при этом замечательно работает, никаких фризов в интерфейсе, можно даже тяжёлые BD-рипы смотреть, музыку слушать. На 12309 вроде и похоже, а вроде и нет.

Система Debian 8.4 + бекпорты, i686 Linux 4.5.0-0.bpo.2-686-pae (32-bit), 16ГБ ОЗУ, система на SSD, tmp в tmpfs, /var на HDD через опцию bind в fstab, процессор core2duo, чипсет P45/ICH10R, KDE 4.14 вместо менеджера рабочего стола.

Где/что можно покрутить, сбросить, погладить чтобы вернуть дисковой системе былой задор и прыть или хотя бы понять после чего точно она начинает так себя вести?

UPD: возможно это KDE-проблема(!), разлогинился из графической сессии и перезапустил иксы и всё вновь наладилось. Торренты качаю qBittorrent'ом.

 

Exmor_RS
()

FreeBSD 14.4

Новости — BSD
FreeBSD 14.4
Группа BSD

10 марта 2026 года проект FreeBSD объявил о выходе новой стабильной версии операционной системы – 14.4-RELEASE. Этот релиз, доступный на официальном сайте, продолжает развитие ветки 14-STABLE и включает в себя исправления безопасности, обновления компонентов, новые драйверы и улучшения для облачных сред.

( читать дальше... )

>>> freebsd

 , ,

splinter
()

Как разогнать монитор на Linux с Wayland [AMD/nVidia/Intel]

Статьи — Desktop

Рассматривается прежде всего портирование существующей конфигурации, потому что разгон монитора на Linux без готовой конфигурации - это боль. Моя система: nVidia, Wayland, KDE, Arch-based дистрибутив (CachyOS).

( читать дальше... )

 , , , ,

mndtr0
()

Механическая полноразмерная клавиатура с подсветкой для ПК

Форум — Linux-hardware

Привет, ЛОР.

На Яндекс.Мракете нашёл чудо под названием PANTEON T15 PRO RS HS.

Интересно, 1) (обязательно) будет ли там в линуксе подсветка и 2) (опционально) возможно ли её в линуксе настраивать? А то там фирменным софтом пугают, который, скорее всего, под винду…

Или какую другую модель порекомендуете? Собственно, RGB и программируемость для меня, возможно, излишние. Мне нужно, чтобы клавиши светились (для работы в темноте), чтобы клавиатура была механическая и полноразмерная. Но товаров попроще с таким сочетанием я не нахожу.

 , ,

hobbit
()

Изучить С

Форум — Talks

Всем привет! Надоели мне эти скриптовые аркадные языки, повесточка, докеро-голанги и тп, решил заняться изучением С. Тем более что вспомнил о том, что по факту это единственный язык который доставлял удовольствие.

Посоветуйте пожалуйста книгу, которую можно почитать и порешать оттуда заодно задачи если есть.

 , ,

NorthernBlow
()

Выпуск VPN Lanemu 0.13

Новости — Интернет
Выпуск VPN Lanemu 0.13
Группа Интернет

Состоялся выпуск Lanemu P2P VPN 0.13 — реализации децентрализованной виртуальной частной сети, работающей по принципу Peer-To-Peer, при котором участники подключены друг к другу, а не через центральный сервер. Участники сети могут находить друг друга через BitTorrent-трекеры или BitTorrent DHT, либо через других участников сети при обмене таблиц адресов (peer exchange). Приложение является бесплатным и открытым аналогом таких приложений как Hamachi, Radmin, Zerotier, написано на языке Java (c отдельными драйверными компонентами на языке Си) и распространяется под лицензией GNU LGPL 3.0. Поддерживается запуск в Windows, GNU/Linux, FreeBSD и macOS.

( читать дальше... )

>>> Ссылка на выпуск

 , , , ,

Skullnet
()

Разработчики САПР KiCad раскритиковали Wayland и рекомендовали использовать X11

Новости — Open Source
Группа Open Source

Разработчики свободной системы автоматизированного проектирования печатных плат KiCad рассказали о состоянии реализации поддержки Wayland и обобщили проблемы, мешающие полноценному использованию данного протокола. Пользователям, профессионально проектирующим печатные платы в KiCad или желающим получить стабильное и полнофункциональное окружение, рекомендовано запускать KiCad в средах рабочего стола на базе протокола X11, таких как Xfce, MATE или X11-сеанс KDE Plasma.

Тем кто намерен использовать KiCad в окружениях с Wayland следует быть готовым к возможным зависаниям и аварийным завершениям, невозможности восстановить желаемую раскладку окон и ограничению функциональности интерфейса. Утверждается, что ограничения в функциональности вызваны отсутствием в Wayland возможностей, давно применяемых в приложениях для X11, Windows и macOS, таких как поддержка позиционирования окон и мгновенного перемещения указателя мыши (cursor warp).

Что касается возникающих сбоев, то они связываются с большой фрагментацией композитных серверов для Wayland. GNOME, KDE и обособленные композитные менеджеры по-своему интерпретируют протоколы Wayland, поэтому полагаться при разработке на единую целостную реализацию протоколов Wayland и экспериментальные расширения проблематично. Разработчикам приложений приходится учитывать особенности каждого окружения и применять костыли для обхода проблем, специфичных для разных композитных менеджеров.

Фрагментация композитных серверов существенно увеличивает трудозатраты на реализацию поддержки Wayland. Отмечается, что самое неприятное в том, что разработчики KiCad не имеют возможности исправить возникающие проблемы своими силами, так как проблемы присутствуют не в KiСad, а в протоколах, оконных менеджерах и композитных серверах.

Учитывая, что Linux применяет лишь небольшая часть пользователей KiCad, решено избегать добавления в кодовую базу проекта костылей для обхода проблем, специфичных для оконных менеджеров, но при этом продолжать собирать KiCad для Wayland и тестировать сборки на совместимость. Все выявляемые проблемы и ограничения планируют документировать и доводить до сведения пользователей.

В системе отслеживания ошибок решено не разбирать жалобы от пользователей Wayland, связанные с позиционированием и размером окон, установкой фокуса, а также зависаниями, аварийными завершениями, повышенной нагрузке на CPU, проблемами с устройствами ввода и сбоями при отрисовке, не проявляющимися в сборке для X11.

Среди известных проблем, которые находятся вне зоны влияния разработчиков KiCad и которые не удаётся устранить на стороне KiCad:

  • Проблемы с управлением окнами: Невозможность управления позицией окон и панелей (при открытии KiCad нельзя запомнить и восстановить положение окон и панелей инструментов). Проблемы с координацией работы одновременно с несколькими окнами. Ограничение возможности перемещения вкладок и панелей между разными областями.
  • Проблемы с устройствами ввода: Возможность мгновенного перемещения курсора (cursor warping) завязана на необязательные экспериментальные расширения протокола, поддерживаемые лишь в отдельных композитных менеджерах. Непредсказуемое поведение при управлении фокусом ввода. Проблемы при использовании специализированных устройств ввода и при обработке горячих клавиш.
  • Проблемы со стабильностью и производительностью: Повышенное потребление ресурсов и высокая нагрузка на CPU/GPU по сравнению с использованием X11. Появление графических артефактов при отрисовке и нарушение нормального вывода. Зависания и аварийные завершения, проявляющиеся только при работе в окружениях на базе Wayland. Ненадёжная работа с буфером обмена.
  • Ограничения интерфейса пользователя: Проблемы с позиционированием, фокусом и взаимодействием в модальных диалогах. Проблемы с запуском внешних приложений и управления ими.

>>> Подробности (opennet)

 , ,

Ygor
()

Внутриканальные наушники

Форум — Talks

Я ищу невозможное: проводные внутриканальные наушники с идеальным (или хотя бы очень хорошим качеством звука), хорошими проводами, и при этом по доступной цене. Ещё и чтобы выглядели просто, классического форм-фактора, а не будто две пачки Тик-Така возле ушей (хотя я примерно понимаю, зачем так делается, но выглядит плохо).

Изучив некоторые интернет-материалы и ассортимент, сложилось впечатление, что такие наушники либо невозможны из-за физических ограничений, так как, насколько я понимаю, для разных частот нужны разные динамики и резонаторные камеры, либо такие вполне себе существуют, отвечают всем требованиям, маленькие-красивые, но цена одной пары в десять раз больше годового бюджета РФ.

Основной причиной поиска служит то, что мне надоели полноразмерные наушники: давят на голову, даже если подвижные амбушуры (с неподвижными вообще ужас), портят причёску и волосы, а ещё почти всегда делаются с каким-нибудь дишманским кожзамом, который быстро отслаивается и ищи потом его кусочки на голове, за ушами и на шее.

Удалось найти только такие, но они либо выглядят отстойно, либо провода у них это нитки или углеродные нано-трубки, при чём один провод короче другого, чтобы возле подбородка висела какая-то фигня и бесила, либо очень много подделок на эти наушники, либо они портятся за пару недель: • Moondrop Quarks • Sennheiser CX 300-II Precission Ещё не довелось купить и попробовать их, потому что боюсь потратить деньги на фигню.

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

По интернету ходят легенды про некие проводные затычки от Эппл, и те, кто видели цену на них - теряли рассудок.

Беспроводные наушники дают сильную задержку, она компенсируется только в медиаплеерах, и то не всех, в игры играть невозможно. Радиоканал получше, но только если есть хорошее шифрование, такие наверное вообще никто не делает. Так что ищу проводные.

Есть у кого-нибудь опыт по поиску и использованию современных внутриканальных наушников? Какие можно посоветовать, попадающие под такие критерии? Или идеальные ещё не скоро изобретут?

Перемещено dataman из linux-hardware

 

Linux-Music-Girl
()

Про mpv-0.40

Форум — Multimedia

Я вот попользовался этой версией с релиза, и определённо должен заметить - разрабы что-то накосолапили! Сначала думал, что мерещилось, но попереключал версии туда-и-обратно и понял, что не плацебо. Встреченные проблемы:

  • У консоли (~) шрифт стал гигантским и стало гораздо меньше всякого влезать. Зачем сделали так - хз. Пример: 0.39 и 0.40.

  • Кэш стал страннее работать - при удалении файла mpv может продолжать его проигрывать на любой современной версии плеера. Файл будет реально удалён при прекращении чтения (т.е. немедленно для небольших файлов или при переключении/завершении для видосов побольбше). Тут всё как и было, но разница начинается в плейлистах: в версиях <=0.39 при повторном открытии удалённого файла вхождение в плейлист пропускалось, а в 0.40 плеер открывает видео из кеша - хотя этого видео уже нет на диске. Для меня это поведение не критично, но ощущается странно всё равно и заставляет перепроверять, удалил ли я файл или нет.

  • При продолжительном проигрывании видосов отзывчивость стала немного хуже и памяти стал жрать больше - вангую, что это из-за кэша и нужно конфиг для него дописывать. Вот, например, на одном и том же плейлисте я дотопал до одного и того же ролика с одного и того же стартового вхождения через несколько других (чтобы они были загружено в кеш), оба раза на свежезапущенном инстансе: 0.39 и 0.40. Цифры консистентны при повторах теста.

  • Старт приложения замедлился существенно - на 0.39 при запуске в time цифры приблизительно такие (для одного и того же видео в одном и том же плейлисте, офк):

mpv   0.48s user 0.22s system 55% cpu 1.258 total
mpv   0.49s user 0.20s system 58% cpu 1.184 total
mpv   0.49s user 0.23s system 58% cpu 1.213 total

а вот на 0.40

mpv   0.90s user 0.35s system 93% cpu 1.336 total
mpv   0.89s user 0.40s system 109% cpu 1.178 total
mpv   0.89s user 0.36s system 95% cpu 1.310 total
  • Самая большая проблема - 0.40 может случайно зависнуть, просто на ровном месте. Происходит достаточно часто для моего колебания, мб раз в 2-3 часа. Такого не было никогда ни на одной из предыдущих версий. При зависании остаётся только убить приложение и попробовать запустить ещё раз. Перекомпилировать не помогло, случается для разных устройств.

UPD: если кто думает, что проблемы у меня в конфиге, то вот он:

profile = fast

# Gamepad controls
# input-gamepad = yes

cache = yes

osd-border-color = "#FF262626"
osd-border-size = 3.2
osd-color = "#CCFFFFFF"
osd-duration = 800
osd-font-size = 20
osd-font = "M+ 2p medium"
osd-shadow-color = "#33000000"
osd-shadow-offset = 1
osd-spacing = 0.5

audio-file-auto = fuzzy
sub-auto = fuzzy
slang = en
alang = en
sub-border-color = "#FF262626"
sub-border-size = 5
# sub-codepage = utf8:cp1251
sub-color = "#FFBBBB11"
sub-font-size = 40
sub-font = "M+ 2c"
sub-gauss = .75
sub-margin-y = 30
sub-shadow-color = "#77000000"
sub-shadow-offset = 3
sub-spacing = 0.8

audio-channels = stereo
ao = jack
volume = 100
volume-max = 200
jack-autostart = no
jack-connect = yes
jack-name = mpvclient
jack-std-channel-layout = any

user-agent = "Mozilla/5.0"
screenshot-format=png
input-ipc-server=/tmp/mpvsocket

blend-subtitles = no

# loop-file=inf
loop-playlist=inf
keep-open-pause=no
keep-open=yes

autofit-larger=100%x1000
autofit=1600x900
keepaspect=yes
screen=1

# vf-add=fps=60:round=near
af-add=lavfi=[dynaudnorm]
# af=lavfi=[loudnorm]

 

Bfgeshka
()

Какие в Линуксе есть средства поиска/ремапа бэдов на винтах?

Форум — Admin

Надеюсь здесь найдётся пруфлинк с описанием этой операции.
Можно конечно качнуть флэшку с виндой и Викторией. Но неужели это не исполнимо в Линукс? Или местные адепты начну топырить пальцы: «Если на винте попался бэд - ф памойку такой винт»?

P.S. Резюмирую, после пальцетопырчатого срача от «крутых» пацанов, благодаря комментариям порядочных гуру - решил проблему просто:

Для начала собрал список «битых» файлов:

find ./ -type f -exec cat '{}' \; |pv|dd of=/dev/null

Список файлов получил на консоль и скопировал в лог, выделив и скопипастив.
Предлагаю попробовать другой вариант:
find ./ -type f -exec cat '{}' \; >/dev/null 2>Errors.log

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

Далее сделал список плохих секторов командой:
badblocks -o badblocks.log /dev/sdX

В этом файле - плохие блоки были сериями. Для каждой серии сначала проверил:
badblocks -o 01set.log /dev/sdX <LastBlock> <FirstBlock>

Получал список блоков этого диапазона.
Далее затирал эти блоки нулями:
badblocks -f -w /dev/sdX <LastBlock> <FirstBlock>

Снова проверял:
badblocks -o 01set.log /dev/sdX <LastBlock> <FirstBlock>
Получал пустой список - т.е. блоки исправились.

Теперь запустил:
smartctl -t long и по его результатам допишу.

НИКАКОГО РЕМАПА! Просто перезаписал данные в нечитаемые сектора!
Ну и опять прогоню рекурсивное чтение файлов, данные конечно неправильные, но ошибок быть не должно.
И на этом диске zfs, посмотрю что скажет: zpool scrub

P.P.S. Результаты -t long:
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       40%     39752         3352487288

Проверяем:
badblocks -o 07-sdd-badblocks.log /dev/sdd 3352488289 3352487288

Но! Факир был пьян! SMART и BADBLOCKS видимо оперируют разными размерами сектора!
# badblocks -o 07-sdd-badblocks.log /dev/sdd 3352488289 3352487288
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek
badblocks: Недопустимый аргумент during seek

Придётся повторить badblocks и посмотреть его видение!

 , ,

n0mad
()

Сохранение BIOS

Форум — General

Hi, есть ли программа (не в самом BIOS материнской платы, а сторонняя программа ) для загрузки и записи существующего BIOS на диск, если до, то хотя бы напишите ее назвние

 

Chel2024
()

Подскажите модель роутера, чтобы памяти побольше и Openwrt

Форум — Linux-hardware

Всем здравия. Нужен роутер, чтобы памяти от 16мб, а лучше 32. Лан портов от 4, УСБ порт и чтобы Openwrt без проблем ставился. Цена на втором месте, накидайте вариантов моделей, пожалуйста.

 ,

burato
()

Программы для работы со звуком

Форум — Multimedia

Базовая система коммутации звуковых потоков:

  • Jack Audio Connection Kit - необходимый элемент системы для соединения разных звуковых устройств, музыкальных инструментов, микрофонов, программ для обработки звука.
  • QjackCtl - графический интерфейс для JACK на Qt4
  • Patchage - удобный графический инструмент для коммутации звуковых потоков и устройств, в частности MIDI.
  • KXStudio: Cadence - набор приложений для коммутации аудиопотоков и устройств, управления Jack-сервером, замера уровня сигнала...
  • KXStudio: Carla - хост аудиоплагинов, поддерживает LADSPA (включая LRDF), DSSI, LV2, VST2/3 и AU форматы плагинов,также поддерживаются файлы GIG, SF2 и SFZ. Работает с Jack и ALSA.

Программы для звукозаписи и обработки звука:

  • Audacity - достаточно простой, но удобный инструмент для записи и обработки звука.
  • Ardour - профессиональный инструмент для многоканальной, многодорожечной записи звука, поддерживает несколько разных источников.
  • Qtractor - многодорожечный аудио/MIDI секвенсор.

Гитарные процессоры:

  • Rakarrack - набор гитарных эффектов реального времени, комбиков, кабинетов, усилителей, множество предустановленных вариантов и возможность «накрутить» собственные
  • Guitarix - ещё один набор гитарных эффектов реального времени, комбиков, кабинетов, усилителей, множество предустановленных вариантов и возможность «накрутить» собственные.

Синтезаторы:

  • Amsynth - набор синтезаторов с множеством настроек и предустановок. Ввод нот осуществляется с MIDI-клавиатуры, которую удобно подключить при помощи Patchage
  • LMMS - мультимедийная студия с синтезаторами, секвенсорами, кольцами и эффектами.
  • ZynAddSubFX - набор синтезаторов: реального времени, полифонический, мультитембральный, микротональный. Также набор эффектов для обработки звука. Работает с Jack, поддерживает MIDI, в том числе и подключение MIDI-контроллеров.
  • Yoshimi - форк ZynAddSubFX с усовершенствованиями в направлении работы с Jack и MIDI.

Инструменты для создания трекерной музыки:

  • MilkyTracker - инструмент для создания трекерной музыки.
  • Schism Tracker - инструмент для создания трекерной музыки, основанный на модифицированной версии Modplug - OpenMPT

Драм-машины:

  • Hydrogen - удобная графическая драм-машина.
  • DrumGizmo - драм-машина в виде самостоятельно приложения, также и в виде плагина.

Наборы эффектов для обработки звука:

  • Linux Audio Developer's Simple Plugin API (LADSPA) - классический набор эффектов и алгоритмов для обработки звука, также язык для разработи музыкальных программ.
  • LV2 - следующее поколение LADSPA
  • Calf studio gear - набор эффектов и алгоримов для обработки звука.

Нотные редакторы:

  • TuxGuitar - графический нотный MIDI-редактор, есть возможность вбивать ноты на «гитарном грифе» и «пианино».
  • LilyPond - крайне минималистичный, но очень мощный текстовый «нотный компилятор», часть проекта GNU.
  • Frescobaldi - продвинутый графический интерфейс для LilyPond, удобен возможность работы с мышью
  • Denemo - ещё один продвинутый графический интерфейс для LilyPond
  • Rosegarden - графический нотный редактор и MIDI-секвенсор.
  • FluidSynth - MIDI-синтезатор реального времени без графического интерфейса, работающий по спецификациям SoundFont 2.
  • Qsynth - графический интерфейс для FluidSynth.
  • MidiEditor - простой MIDI-редактор.
  • Musescore - нотный MIDI-редактор с графическим интерфейсом.
  • MusE - MIDI-секвенсор.

Статья на LOR Wiki

 , , , ,

toney
()

DNS-Over-QUIC для блокировки рекламы и не только

Статьи — Администрирование
DNS-Over-QUIC для блокировки рекламы и не только

Протокол QUIC, в отличие от UDP поддерживает шифрование и работает быстрее чем TCP, который часто используется для шифрованных DNS-запросов. Данная инструкция актуальная, так как Google все-таки начал удаление поддержки блокировщиков рекламы из своего браузера. Кроме того, она пригодится тем, кто хочет скрыть свое пребывание в Интернете от тотальной слежки.

( читать дальше... )

 , , ,

rtxtxtrx
()

Хочу говорить про Bash

Форум — General

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

Решил попробовать написать программку, которая удаляет дубликаты строк из .bash_history (там более 7000 строк у меня). Мне это показалось достойной задачкой для начинающего башиста, хотя и (может быть) довольно бесполезной. Кстати, есть такая программа shell-history-cleaner (кажется на расте написана, давно себе собрал, работает, но видимо заброшена автором), я пользуюсь, но попробовать свои силы надо было.

В результате мне удалось сделать задуманное, но хочется поговорить и о «неудачных» вариантах, которые может быть были бы более удачными, если бы я больше знал о bash и linux вообще, так что категорически приветствуется критика и подсказки более правильных решений или каких-нибудь хитростей командной строки.

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

Программа рабочая, делает дело, но долго. Мой файл перемалывает за минуту с небольшим, при этом нагружая одно виртуальное ядро процессора на 100%. Зная лоровские нарративы об ущербности bash как языка программирования, я подумал, что вот и столкнулся с подобной ущербностью, поэтому просто искал возможность хоть как-то оптимизировать процесс.

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

file=$1
mapfile -t list < <(grep -v '^$' $file)
while ((${#list[*]})); do
    line=${list[-1]}
    unset list[-1\]
    for i in ${!list[*]}; do
        [[ $line == "${list[i]}" ]] &&
            unset list[i\]
    done
    final+=("$line")
done
printf '%s\n' "${final[@]}" | tac > $file

Для таких же любителей как я поясню идею кода. На его краткость отлично повлиял тот факт, что в истории командной строки надо сохранять последние уникальные строки, то есть работать надо с конца файла, а у индексированных массивов как раз есть стабильная ссылка на последний индекс: array[-1]. То есть не надо ничего переворачивать.

Как я понимаю, самое тугое место в скрипте — сравнение строк, и что-то более быстрых вариантов походу нет. Далее надо думать о многопоточности, но я пока до этого не дозрел.

Поскольку на данном этапе я застрял и вроде бы ясно, что тема с массивами как-то всё усложняет, то решил написать скриптик в стиле unix-way, и искренне полагал, что это будет правильным решением задачки, ведь утилиты все написаны суровыми дядьками на Си, и там всё без дураков — быстро и надёжно. Пришла идея отбросить всю эту возню с поиском и удалением, а просто взять всё — и отфильтровать.

file=$1
list=$(tac $file | grep -v '^$')
while [[ $list ]]; do
    read -r line <<< $list
    list=$(grep -Fxv "$line" <<< $list)
    echo "$line"
done | tac > $file

Чтобы уважаемый лорчанин не хельпал ключи -F -x, напомню: F — читает regex буквально, а x — помещает выражение между ^$, иначе пришлось бы использовать ключ -P (perlre) и выражение выглядело бы как говно: "^\Q$line\E$", а работало бы ещё медленней, возможно, но это не точно. (кстати, я был весьма разочарован узнать, что с sed такое вообще не провернуть — никак не заставить подстановку читать буквально).

Итак, на короткой дистанции (разумеется, у меня был короткий вариант файла для тестов) этот скрипт почти в два раза обогнал предыдущий, но — что было для меня полнейшим разочарованием! — он совершенно заткнулся даже на средней дистанции (нагружая процессор на четверть, но размазано по потокам), то есть я его тупо прервал на какой-то там 10-ой минуте, так что о проверке на полном файле речи уже не шло. Как это понимать — не знаю, поясните. 1000 строк он смолол где-то за секунду с небольшим, а 3000 — уже застрял.

Ладно, пока не было новых идей, прочитал главу про ассоциативные массивы и сразу почуял, что это походу то, что мне надо, но я не ожидал, что настолько! Свойство хеша не дублировать индексы как будто специально создано для решения этой задачки. Быстро стало понятно, что надо просто переложить строки из обыкновенного массива в индексы хеша, а в значения хеша — номера индексов строк из обыкновенного массива.

file=$1
mapfile -t list < <(grep -v '^$' $file)
declare -A hash
for i in ${!list[*]}; do
    hash[${list[i]}]=$i
done
for i in "${!hash[@]}"; do
    final[${hash[$i]}]="$i"
done
printf '%s\n' "${final[@]}" > $file

Это было круто! Нет смысла даже говорить о времени выполнения этой программы, она работает почти мгновенно, менее двух десятых секунды.

Получается на bash таки можно что-то программировать и оно может работать быстро.


UPD

Наконец подсказали, что во втором скрипте у меня ошибка: read -r очищает строку от пробельных символов по краям, поэтому grep её не находит и получается бесконечный цикл. Спасибо @mky: Хочу говорить про Bash (комментарий)
Теперь этот скрипт переваривает тот же файл за 15-16 секунд!

file=$1
list=$(tac $file | grep -v '^$')
while [[ $list ]]; do
    IFS=$'\n' read -r line <<< $list
    list=$(grep -Fxve "$line" <<< $list)
    echo "$line"
done | tac > $file

UPD2

Спасибо анону, подкинул идею отфильтровать хешем в один проход: Хочу говорить про Bash (комментарий)

file=$1
mapfile -t list < <(tac $file | grep -v '^$')
declare -A hash
for i in "${list[@]}"; do
    [[ ${hash[$i]} ]] && continue
    hash[$i]=added
    final+=("$i")
done
printf '%s\n' "${final[@]}" | tac > $file

UPD3

Продолжаю благодарить анона, что замотивировал таки раскурить sort. Итак, почти самый шустрый вариант:

file=$1
list=$(< $file \
    grep -vn '^$' |
    tac |
    sort -t: -k2 -u |
    sort -t: -k1,1n |
    cut -d: -f2-)
echo "$list" > $file

На моём компе меньше трёх сотых секунды!


UPD4

Дошли руки до AWK и это походу победитель на скорость в стиле unix-way (анон давал такой рецепт в треде).

file=$1
list=$(tac $file |
    grep -v '^$' |
    awk '!added[$0]++')
tac <<< $list > $file

На моём компе — девять тысячных секунды!

 

papin-aziat
()

zram с sysvinit

Статьи — Desktop

Если вам необходимо использовать zram с ядром не меньше, чем 5.19 и системой инициализации sysvinit...

( читать дальше... )

 ,

vbcnthfkmnth123
()

Какие моноширинные шрифты — ваши любимые?

Голосования — Голосования
  1. Terminus 135 (25%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. JetBrains Mono 105 (20%)

    ********************************************************************************************************************************************************************************************************************************************************

  3. Ubuntu Mono 86 (16%)

    ***********************************************************************************************************************************************************************************************************

  4. Iosevka 81 (15%)

    ************************************************************************************************************************************************************************************************

  5. DejaVu Sans Mono 76 (14%)

    ************************************************************************************************************************************************************************************

  6. FiraCode 68 (13%)

    *****************************************************************************************************************************************************************

  7. Consolas 61 (11%)

    ************************************************************************************************************************************************

  8. Другой шрифт 55 (10%)

    **********************************************************************************************************************************

  9. Liberation Mono 53 (10%)

    *****************************************************************************************************************************

  10. Hack 48 (9%)

    *****************************************************************************************************************

  11. Droid Sans Mono 40 (7%)

    **********************************************************************************************

  12. Roboto Mono 39 (7%)

    ********************************************************************************************

  13. Noto Sans Mono 39 (7%)

    ********************************************************************************************

  14. Source Code Pro 33 (6%)

    ******************************************************************************

  15. Courier New 33 (6%)

    ******************************************************************************

  16. PT Mono 28 (5%)

    ******************************************************************

  17. IBM Plex Mono 27 (5%)

    ****************************************************************

  18. Cascadia Code 24 (4%)

    ********************************************************

  19. Lucida Console 22 (4%)

    ****************************************************

  20. Monaco 16 (3%)

    *************************************

  21. Anonymous Pro 14 (3%)

    *********************************

  22. Inconsolata 13 (2%)

    ******************************

  23. Monoid 5 (1%)

    ***********

  24. Tewi 2 (0%)

    ****

  25. Monofur 1 (0%)

    **

  26. MonoLisa 0 (0%)

  27. CamingoCode 0 (0%)

Всего голосов: 1104, всего проголосовавших: 534

 

MrCookie
()

Есть ли 100% надежный способ, будучи на Линукс убедить все шпионящие и вредоносные трекеры, что у меня Windows 10?

Форум — General

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

 , ,

sbin
()

Нет клавиши SysReq

Форум — Admin

В общем старая клавиатура приказала долго жить, а на новой нет SysReq) Как-то не обратил на это внимание) Больше заботило как видны кириллические символы. Тут все отлично и даже ё есть)

Но как теперь вылезти из зависания?) Советы вроде PrintScrn не помогут. На PrintScrn нет функционала SysReq и даже там нет подписи SysReq. И потому и нет)

Можно как-то что-то переназначить?)

 sysreq

mirek
()