LINUX.ORG.RU

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

Изучить С

Форум — 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
()

Как остановить вентиятор, пользуясь Linux-Libre?

Форум — General

Здравствуйте! Система: ноутбук Lenovo G50-30, Guix System, ядро linux-libre 5.1.15-gnu x86_64.

Установлены два пакета из репозитория guix: lmsensors и thinkfan. Нужно программно отключать вентилятор процессора.

sensors-detect нашел модуль coretemp, им пользуется sensors:

# sensors
soc_dts0-virtual-0
Adapter: Virtual device
temp1:        +41.0°C  

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +53.0°C  (crit = +90.0°C)

soc_dts1-virtual-0
Adapter: Virtual device
temp1:        +41.0°C  

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +43.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +43.0°C  (high = +105.0°C, crit = +105.0°C)
Core 2:       +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 3:       +46.0°C  (high = +105.0°C, crit = +105.0°C)

Управлять вентилятором не получается ни fancontrol, ни pwmconfig, ни thinkfan:


# fancontrol
Loading configuration from /etc/fancontrol ...
Error: Can't read configuration file


# pwmconfig 
# pwmconfig revision $Revision$ ($Date$)
This program will search your sensors for pulse width modulation (pwm)
controls, and test each one to see if it controls a fan on
your motherboard. Note that many motherboards do not have pwm
circuitry installed, even if your sensor chip supports pwm.

We will attempt to briefly stop each fan using the pwm controls.
The program will attempt to restore each fan to full speed
after testing. However, it is ** very important ** that you
physically verify that the fans have been to full speed
after the program has completed.

/root/.guix-profile/sbin/pwmconfig: There are no pwm-capable sensor modules installed


# thinkfan

ERROR: /etc/thinkfan.conf: No such file or directory

модули:

# lsmod
Module                  Size  Used by
hwmon_vid              16384  0
fuse                  114688  2
ccm                    20480  9
snd_hda_codec_hdmi     57344  1
snd_hda_codec_conexant    24576  1
snd_hda_codec_generic    77824  1 snd_hda_codec_conexant
ledtrig_audio          16384  2 snd_hda_codec_generic,snd_hda_codec_conexant
joydev                 24576  0
intel_rapl             24576  0
intel_soc_dts_thermal    20480  0
intel_soc_dts_iosf     20480  1 intel_soc_dts_thermal
intel_powerclamp       20480  0
coretemp               20480  0
kvm                   647168  0
irqbypass              16384  1 kvm
punit_atom_debug       16384  0
cmdlinepart            16384  0
rtsx_usb_ms            24576  0
rtsx_usb_sdmmc         32768  0
memstick               20480  1 rtsx_usb_ms
arc4                   16384  2
intel_spi_platform     16384  0
intel_spi              24576  1 intel_spi_platform
spi_nor                45056  1 intel_spi
crct10dif_pclmul       16384  1
mtd                    65536  3 cmdlinepart,intel_spi
iTCO_wdt               16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
uvcvideo               98304  0
crc32_pclmul           16384  0
ath9k                 155648  0
ath9k_common           24576  1 ath9k
ath9k_hw              479232  2 ath9k_common,ath9k
videobuf2_vmalloc      20480  1 uvcvideo
videobuf2_memops       20480  1 videobuf2_vmalloc
ath                    32768  3 ath9k_common,ath9k,ath9k_hw
rtsx_usb               24576  2 rtsx_usb_sdmmc,rtsx_usb_ms
videobuf2_v4l2         24576  1 uvcvideo
mac80211              843776  1 ath9k
videobuf2_common       45056  2 videobuf2_v4l2,uvcvideo
videodev              204800  3 videobuf2_v4l2,uvcvideo,videobuf2_common
media                  53248  4 videodev,videobuf2_v4l2,uvcvideo,videobuf2_common
usbmouse               16384  0
usbkbd                 16384  0
hci_uart              122880  0
ath3k                  24576  0
btqca                  20480  1 hci_uart
btusb                  49152  0
btrtl                  20480  2 hci_uart,btusb
btbcm                  16384  2 hci_uart,btusb
btintel                24576  2 hci_uart,btusb
ghash_clmulni_intel    16384  0
bluetooth             577536  7 btrtl,btqca,btintel,hci_uart,btbcm,ath3k,btusb
cryptd                 24576  1 ghash_clmulni_intel
cfg80211              704512  4 ath9k_common,ath9k,ath,mac80211
i915                 1540096  6
r8169                  81920  0
cec                    45056  1 i915
psmouse               151552  0
input_leds             16384  0
realtek                20480  1
snd_hda_intel          45056  3
drm_kms_helper        172032  1 i915
serio_raw              20480  0
lpc_ich                24576  0
i2c_i801               32768  0
snd_hda_codec         135168  4 snd_hda_codec_generic,snd_hda_codec_conexant,snd_hda_codec_hdmi,snd_hda_intel
drm                   421888  7 drm_kms_helper,i915
snd_hda_core           90112  5 snd_hda_codec_generic,snd_hda_codec_conexant,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
i2c_algo_bit           16384  1 i915
fb_sys_fops            16384  1 drm_kms_helper
snd_hwdep              20480  1 snd_hda_codec
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
snd_pcm               110592  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
video                  45056  1 i915
snd_timer              40960  1 snd_pcm
snd                    86016  14 snd_hda_codec_generic,snd_hda_codec_conexant,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_pcm
i2c_hid                28672  0
pwm_lpss_platform      16384  0
pwm_lpss               16384  1 pwm_lpss_platform
ecdh_generic           28672  1 bluetooth
soundcore              16384  1 snd
mac_hid                16384  0
rfkill_gpio            16384  0
virtio_rng             16384  0
virtio_console         32768  0
virtio_net             57344  0
virtio_blk             20480  0
virtio_balloon         24576  0
virtio_pci             24576  0
virtio                 16384  6 virtio_rng,virtio_console,virtio_balloon,virtio_pci,virtio_blk,virtio_net
virtio_ring            32768  6 virtio_rng,virtio_console,virtio_balloon,virtio_pci,virtio_blk,virtio_net
isci                  143360  0
libsas                 81920  1 isci
scsi_transport_sas     40960  2 isci,libsas
pata_atiixp            16384  0
pata_acpi              16384  0
nls_iso8859_1          16384  0
wp512                  36864  0
serpent_generic        32768  0
xts                    16384  0
dm_crypt               40960  0
hid_apple              16384  0
hid_generic            16384  0
usbhid                 53248  0
hid                   131072  4 i2c_hid,usbhid,hid_apple,hid_generic
uas                    24576  0
usb_storage            69632  1 uas
ahci                   40960  2
libahci                32768  1 ahci


# modinfo coretemp
filename:       /run/booted-system/kernel/lib/modules/5.1.15-gnu/kernel/drivers/hwmon/coretemp.ko
license:        GPL
description:    Intel Core temperature monitor
author:         Rudolf Marek <r.marek@assembler.cz>
srcversion:     88BD604D089FAF532B6A0EE
alias:          cpu:type:x86,ven0000fam*mod*:feature:*01C0*
depends:        
retpoline:      Y
intree:         Y
name:           coretemp
vermagic:       5.1.15-gnu SMP mod_unload modversions 
parm:           tjmax:TjMax value in degrees Celsius (int)

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

PS: по умолчанию данный ноут шёл с пассивным охлаждением, но вентилятор был вставлен руками.

 , ,

znavko
()

Альтернативные клиенты Telegram

Форум — Talks

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

Отсюда вопрос, какие альтернативы tg (не консольные) сейчас живы и годны для использования? Из того что нагуглилось, все тлен: либо заброшены, либо клон стандартного клиента без особых изменений. Требования у меня не большие: как минимум компактный список чатов, как максимум локальное хранение истории чтобы без доступа в интернет была доступна. Ну и удалить всякий мусор: premium, gifts, иконки у ников и пр.

 ,

Kolins
()

А шо у нас есть из безгеморных лазерных принтеров?

Форум — Linux-hardware

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

Понятное дело, что не хп. Но что?

В принципе удавалось завести даже чудо из закрепленной темы (lbp-2900) и он до сих пор работает.

Хотелось бы отзывов в плане запуска на лине.

По требованиям: печать нескольких страниц раз в пару месяцев.

 ,

ya-betmen
()

Винты какие сейчас брать? 8Тб

Форум — Linux-hardware

Хочу расширить своё хозяйство, взять винт на 8Тб или больше. Меня недавно упрекнули в том, что я не в курсе про SMR на современных винтах и знаете что? Да, не в курсе.

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

 

Aceler
()

Безмятежность

Галерея — Скриншоты

У нас в Красноярске в это время года пасмурно, погода портится, льют осенние дожди, серые тучи закрывают небо, отчего не хватает солнца, и вместе с ним нет и настроения. В Москве прохладно, но осенью, как у нас в Сибири, совсем не пахнет, а вместо этого светит солнце, днём даже пригревает. В общем, надо привыкать к новому климату.

Погода должна радовать, но старые привычки, что осенью всё серое и хочется чего-то светлого — не отпускают. Захотелось вернуться к светлым тонам в интерфейсе. На скриншоте закос под ACME (Plan9).

CRUX, FVWM с закосом под классику, — классику, по которой я уверен, уже тоскуют даже самые матёрые линуксоиды. URxvt, vim как IDE.

>>> Пустой рабочий стол

>>> Firefox, Telegram

Для разнообразия были выбраны чуть разные оттенки жёлтого в urxvt и vim. И, как можно увидеть, к использованию предлагается как тёмный (dark), так и светлый (light) стиль оформления.

~/.Xresources

URxvt.cursorColor: #a6dcf8
URxvt.scrollBar: true
URxvt.scrollBar_right: true
URxvt.scrollstyle: plain
URxvt.scrollColor: #999957

!URxvt.background: #ffffec
!URxvt.foreground: #424242

URxvt.background: #1a1a1a
URxvt.foreground: #ffffec

URxvt.color0: #424242
URxvt.color1: #b8261e
URxvt.color2: #3e8630
URxvt.color3: #7f8f29
URxvt.color4: #2a8dc5
URxvt.color5: #8888c7
URxvt.color6: #6aa7a8
URxvt.color7: #999957
URxvt.color8: #eeeea7
URxvt.color9: #f2acaa
URxvt.color10: #98ce8f
URxvt.color11: #b6b79c
URxvt.color12: #a6dcf8
URxvt.color13: #d0d1f7
URxvt.color14: #b0eced
URxvt.color15: #ffffec

~/.vim/colors/acme.vim

highlight clear 

highlight! Normal guibg=#ffffea guifg=#000000 ctermbg=230 ctermfg=232 
highlight! NonText guibg=bg guifg=#ffffea ctermbg=bg ctermfg=230
highlight! StatusLine guibg=#aeeeee guifg=#000000 gui=NONE ctermbg=159 ctermfg=232 cterm=NONE
highlight! StatusLineNC guibg=#eaffff guifg=#000000 gui=NONE ctermbg=194 ctermfg=232 cterm=NONE
highlight! WildMenu guibg=#000000 guifg=#eaffff gui=NONE ctermbg=black ctermfg=159 cterm=NONE
highlight! VertSplit guibg=#ffffea guifg=#000000 gui=NONE ctermbg=159 ctermfg=232 cterm=NONE
highlight! Folded guibg=#cccc7c guifg=fg gui=italic ctermbg=187 ctermfg=fg cterm=italic
highlight! FoldColumn guibg=#fcfcce guifg=fg ctermbg=229 ctermfg=fg
highlight! Conceal guibg=bg guifg=fg gui=NONE ctermbg=bg ctermfg=fg cterm=NONE
highlight! LineNr guibg=bg guifg=#505050 gui=italic ctermbg=bg ctermfg=239 cterm=italic
highlight! Visual guibg=fg guifg=bg ctermbg=fg ctermfg=bg
highlight! CursorLine guibg=#ffffca guifg=fg ctermbg=230 ctermfg=fg
highlight! Pmenu guibg=bg guifg=fg ctermbg=bg ctermfg=fg
highlight! PmenuSel guibg=fg guifg=bg ctermbg=fg ctermfg=bg

highlight! Statement guibg=bg guifg=fg gui=italic ctermbg=bg ctermfg=fg cterm=italic
highlight! Identifier guibg=bg guifg=fg gui=bold ctermbg=bg ctermfg=fg cterm=bold
highlight! Type guibg=bg guifg=fg gui=bold ctermbg=bg ctermfg=fg cterm=bold
highlight! PreProc guibg=bg guifg=fg gui=bold ctermbg=bg ctermfg=fg cterm=bold
highlight! Constant guibg=bg guifg=#101010 gui=bold ctermbg=bg ctermfg=233 cterm=italic
highlight! Comment guibg=bg guifg=#303030 gui=italic ctermbg=bg ctermfg=236 cterm=italic
highlight! Special guibg=bg guifg=fg gui=bold ctermbg=bg ctermfg=fg cterm=bold
highlight! SpecialKey guibg=bg guifg=fg gui=bold ctermbg=bg ctermfg=fg cterm=bold
highlight! NonText guibg=bg guifg=fg gui=bold ctermbg=bg ctermfg=fg cterm=bold
highlight! Directory guibg=bg guifg=fg gui=bold ctermbg=bg ctermfg=fg cterm=bold
highlight! link Title Directory
highlight! link MoreMsg Comment
highlight! link Question Comment

hi link vimFunction Identifier

let g:colors_name = "acme"

~/.fvwm/config

DestroyModuleConfig FvwmIconMan:*
*FvwmIconMan: UseWinList true
*FvwmIconMan: Resolution global
*FvwmIconMan: Sort id
*FvwmIconMan: Shape true
*FvwmIconMan: Tips always
*FvwmIconMan: TipsDelays 0
*FvwmIconMan: TipsFont "xft:Sans:size=8"
*FvwmIconMan: TipsFormat "%t"
*FvwmIconMan: ManagerGeometry 1x1
*FvwmIconMan: ButtonGeometry 180x25
*FvwmIconMan: MaxButtonWidth 180
*FvwmIconMan: DrawIcons always
*FvwmIconMan: ReliefThickness 1
*FvwmIconMan: Format "%t"
*FvwmIconMan: Font "xft:Sans:size=10"
*FvwmIconMan: Action Mouse 0 A ret
*FvwmIconMan: Action Mouse 1 A sendcommand IconManClick
*FvwmIconMan: Action Mouse 3 A sendcommand "Menu MenuIconOps"
*FvwmIconMan: Title ""

DestroyModuleConfig TaskBar:*
*TaskBar: Geometry $[vp.width]x32+0-0
*TaskBar: Font "xft:Sans:size=10:antialias=True"
*TaskBar: (Container)
*TaskBar: (Container(Rows 1 Columns $[vp.width]), Padding 2 2, Frame 2)
PipeRead 'echo "*TaskBar: ($(($[vp.width] - 50))x1, Container, Frame 0)"'
*TaskBar: (Swallow FvwmIconMan 'Module FvwmIconMan', Frame 0)
*TaskBar: (End)
*TaskBar: (50x1, Container, Frame 0)
*TaskBar: (Container, Frame -1)
*TaskBar: (Swallow DateTime 'Module FvwmScript FvwmScript-DateTime', Frame 0)
*TaskBar: (End)
*TaskBar: (End)
*TaskBar: (End)

 , ,

Spoofing
()