LINUX.ORG.RU

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

Нормализация звука

Форум — Desktop

Всех приветствую. У меня вопрос по видео плееру mpv.

При просмотре фильмов звук спец эфектов(взрывы, скрежет и тд..), а так же музыка звучит очень громко. А вот диалоги героев наоборот тихо. Возможно ли нормализавать эти звуковые перепады. И ели да, то какую каманду вписать в конфиг mpv что бы превести звук (тихие голоса героев и громкую музыку) в одинаково звучашую по громкости

 ,

debian000
()

Как сделать подсказку для команды на bash

Форум — Admin

Нужно сделать строковым параметром проверки значений, только для bash

Есть команда, которая пишется ./команда.sh $значение $значение

Значения заменяются переменными в коде, которые задаются, когда пишется команда. Сам код не помню.

Но, когда пишу ./команда.sh и без значений или с не правильными, то скрипт всё равно выполняется.

Как поставить проверку в скрипт, чтобы было:
если значение пустое или не цифровое, тогда вылазит echo и правильный sintax, а скрипт не выполняется.

Подскажите, это как-то делается if else

 ,

Aeeioyqee
()

Каким OTP пользуетесь?

Форум — Talks

Нужен на телефон вместо гугловского. Любой другой, который можно забэкапить на нерутованом телефоне. Знаю от красношапки есть Free OTP в маркете, последнее обновление было в 2016 году. Каким сами пользуетесь, какой по-братски посоветуете?

 , ,

dnb
()

Автоскрытие панели awesome wm

Форум — Desktop

Привет! Не нашел как сделать автоскрытие «родными» средствами, набросал вот такие строчки в функции awful.screen.connect_for_each_screen файла rc.lua:

-- autohide panel
s.wibox_plug = awful.wibar({ position = "top",
                             height = 1,
                             opacity = 0,
                             visible = false,
                             screen = s })
local function make_panel_visible()
    s.mywibox.visible = true
    s.wibox_plug.visible = false
end
local function make_panel_hidden()
    s.mywibox.visible = false
    s.wibox_plug.visible = true
end
local function panel_autohide(focused_client)
    if focused_client.class == 'firefox' then
        make_panel_hidden()
        s.mywibox:connect_signal("mouse::leave", make_panel_hidden)
        s.wibox_plug:connect_signal("mouse::enter", make_panel_visible)
    else
        make_panel_visible()
        s.mywibox:disconnect_signal("mouse::leave", make_panel_hidden)
        s.wibox_plug:disconnect_signal("mouse::enter", make_panel_visible)
    end
end
client.connect_signal("focus", panel_autohide)

Не могу найти сигнал, посылаемый во время активации тега. Вообще, такой существует? Есть какой-то недокументированный request::select, но я не понял как им пользоваться.

Вопрос в том, что панель нормально восстанавливается, только если на следующем теге есть какой-нибудь клиент (окно). А мне нужно обработать исключение, когда на теге никаких окон нет.
Спасибо.

 

rmu
()

Firefox запоминает номер рабочего стола

Форум — General

Здравствуйте.

Использую awesome, естественно, с несколькими рабочими столами, и заметил, что мой firefox запоминает номер рабочего стола, поясняю:

Запустил сабж на определённом рабстоле, поработал в браузере, закрыл, перешёл на другой рабстол, снова запустил браузер - он открывается не на текущем рабстоле, а на том, на котором я его закрывал.

В конфиге WM ничего, относящегося конкретно к firefox, нет. Насколько я понимаю, это сам firefox как-то умничает, что-то в about:config...

Прошу совета, спасибо за внимание.

 ,

piyavking
()

Собрать ядро быстрее, чем за 30 секунд?

Форум — Linux-install

Платформа HP Gen10, два процессора Intel Xeon 6248R, 96 потоков, make defconfig && make -j100 собирает ядро за 32 секунды. В tmpfs.

Картинка.

Дистрибутив Gentoo, мир пересобран с -march=native.

Есть ли возможность как-то увеличить скорость сборки? Во что она может упираться?

 

Spoofing
()

Быстрые деревья

Форум — Development

Имеется структура данных: дерево из 100 тысяч узлов. Самая длинная ветвь — 50 тысяч. Число дочерних узлов не ограничено. Требуется быстро найти наинизшую общую вершину для примерно миллиарда пар узлов.

Для менее асимметричного дерева из 10 тысяч узлов и 20 миллионов пар я тупо построил список списков предков и сравнил для каждой пары. Но для большого дерева не хватит памяти.

Вопрос: есть ли готовая библиотека, способная быстро искать общую вершину?

 ,

question4
()

Взаимодействие adb и эмулятора

Форум — Mobile

Какую команду прописать в adb чтобы был клик не по координатам (adb shell input tap x y) ,а по XPath или Class’у ?

 ,

Pwn1z
()

Proton 5.0-4 — новая версия средства для запуска Windows-игр

Новости — Игры
Группа Игры

11 марта компания Valve опубликовала на страничке своего проекта на GitHub информацию о выпуске новой версии пакета для запуска Windows-игр Proton 5.0-4. В основе проекта лежит Wine 5.0, а основная задача — запуск игр, разработанных под ОС Windows и размещенных в каталогах Steam.

Основные изменения новой версии:

  • Исправлены ошибки в работе launcher’а Electronic Arts Origin.
  • Исправлена работа игры Jedi Fallen Order.
  • Grand Theft Auto V Online больше не падает при запуске.
  • Устранены проблемы с работой Denuvo DRM при запуске игр Just Cause 3 и Batman Arkham Knight.
  • Улучшена производительность Monster Hunter World.
  • В Ryse: Son of Rome устранены проблемы с курсором мыши.
  • Уменьшилось время запуска игр.
  • DXVK обновлен до версии 1.5.5.

>>> Исходный код проекта (лицензия BSD)

>>> Подробности

 ,

Zhbert
()

Софт для набрасывания интерфейсов, включая мобильные

Форум — Development

Есть такое? Вот чтобы просто запустить программулину, накидать на форму кнопок (на активность виджетов) и получить набор «скринов» экранов будущего приложения?

Нужно под андроид/яблоось в первую очередь, хотя не помешало бы и под десктоп.

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

 , ,

Zhbert
()

Как математически разбить диапазон hex?

Форум — Development
print(hex2part(num=1, part=3))

out:

[['0x0', '0x4'], ['0x5', '0x9'], ['0xa', '0xe']]

Сейчас это работает, но я применил range диапазона. Как можно догадаться, чем больше num, тем медленней это делается

print(hex2part(num=7, part=3))

out:

time ./test.py
[['0x0', '0x5555554'], ['0x5555555', '0xaaaaaa9'], ['0xaaaaaaa', '0xffffffe']]

real    0m9.491s
user    0m7.010s
sys     0m2.479s

Как бы всё это сделать на уровне математики, чтобы не прибегать к использованию range?

 , ,

serg002
()

разбить диапазон

Форум — Development

может кто нибудь сталкивался с таким.
пытаюсь реализовать алгоритм на python позволяющий делать следующее
есть диапазон номеров
от 1 000 000 до 2 192 999
нужно его разбить на под диапазоны
1)-1 000 000 по 1 999 999 префикс для диапазона 1
2)-2 000 000 по 2 099 999 префикс для диапазона 20
3)-2 100 000 по 2 189 999 префикс для диапазона 210, 211.. 218
4)-2 190 000 по 2 192 999 префикс 2190, 2191, 2192,


или 2 193 000 по 3 000 000
1)- 2 193 000 по 2 199 999 префикс 2193 ..2199
2)- 2 200 000 по 2 999 999 префикс 22, 23 .. 29
3) один номер 3 000 000 префикс 3000000
алгоритм находящий префикс из разбитого диапазона уже реализовал. а вот как находить диапазоны не понятно. подскажите в какую сторону думать ?

 ,

NimoLime
()

Быстро въехать в основы elisp

Форум — General

Всем привет. Ищу какой-нибудь нубигайд для того, чтобы быстро въехать в elisp. Въезжаю по одной причине - понравился emacs. Использую его как органайзер и для чтения rss. Хочу еще поднастроить для себя, но чтение чужих конфигов вызывает больше вопросов, чем ответов. Маны и доки суховаты, не хватает практичных примеров. Для меня язык первый (не считая баша и немного html/css). Синтаксис не прост для восприятия. Что почитать из рускоязычного для того, чтобы набраться основ и свободно писать свой конфиг и расширения?

Заодно спрошу по поводу э/почты. Какое расширение предпочтительнее и удобнее? Нашел gnus, mu4e, wanderlast. Нужно для работы с несколькими почтовиками по imap с обязательным сохранением всех писем локально.

 , , ,

em2x
()

Ищу древовидный todo-менеджер с «горячим» списком

Форум — General

Хочу заполучить себе в пользование софт для управления персональными вялотекущими проектами. Чтобы можно было расписать список дел с подзадачами, в виде нескольких деревьев, отдельные пункты из которых можно вручную добавлять в горячий список. Что такое горячий список? Это перечень задач, которые нужно выполнять сейчас. В тех to-do-приложениях, что я видел, список дел на сегодня обычно привязан к дате. День проходит, дела из списка пропадают. Мне же нужно, чтобы пункты оставались там до тех пор, пока я их не выброшу вручную. Ещё хочу генераторы задач, которые добавляют задачи в горячий список по расписанию. Например, каждую пятницу. Или каждые четыре дня. И чтобы эти задачи тоже не пропадали. Если я просрочил что-то регулярное, мне нужно хотя бы видеть, сколько раз. Хочу, чтобы с десктопа можно было редактировать задачи. Хочу, чтобы на Android была возможность задачи смотреть. Если на мобилке тоже можно ими управлять, то это неплохое дополнение. Если это онлайн решение, то хочу возможность хостить его у себя на VPS.

Итак, по пунктам:

  1. Древовидный todo-менеджер.
  2. Горячий список ссылок на отдельные пункты из деревьев задач.
  3. Ручное управление горячим списком: задачи не исчезают из списка сами по себе.
  4. Генераторы повторяющихся задач.
  5. Синхронизация с Android-приложением или мобильная версия сайта.

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

Объясните, пожалуйста, почему мне это не нужно.
Ну или посоветуйте какое-нибудь решение. Вдруг оно есть?

Самое близкое, что нашёл — Joplin. Там есть приложение для Android, есть приложение для десктопа, есть синхронизация. Но там нет горячего списка. Пытался эмулировать его с помощью тегов, но такое ощущение, будто я с ветряной мельницей воюю.


Upd: остановился на Orgzly (org-mode для Android) + org-mode на компьютере.

 , , ,

i-rinat
()

Просмотр веб-архивов MHT в браузере

Форум — Development

Аддон UnMHT помер, других средств просмотра MHT в новом Firefox Quantum нет (и, возможно, не будет), так что вот:

https://github.com/opennota/unmht

На моих файлах работает. Принимаю баг-репорты.

 

opennota
()

Flameshot - нескучная скриншотилка

Форум — Desktop

Пост для тех кто ни разу не слышал о Flameshot. Причина написания поста - вдруг еще есть люди в танке, такие как я, которые не знают об этой чудо программе.

Существует эталонная, но виндовая скриншотилка «lightshot». На линуксе она работает к сожелению только через Wine, и мне всегда не нравилось, что это как-то не православно. Был нереально рад когда узнал что есть нечто более юзабельное и нативное - Flameshot. Функций даже больше чем у виндового аналога.

Работает практически везде, и на иксах и на Wayland, есть AppImage и snap. Сейчас пытаются завернуть в flatpak и заставить работать в sway (wlroots). Пользоваться достаточно просто - забиндить горячие клавиши, например meta + PrtScrn на консольную команду flameshot gui.

Сам процесс: meta + PrtScrn. Выделяем, малюем. Потом жмем Ctrl + C и в любом мессенджере или соц сети Ctrl + V. Готово)))

Поделился. Рад. Всем спасибо!

 , , , ,

incker
()

Помогите придумать алгоритм нотификации об изменениях в чатике/треде

Форум — Development

В СУБД хранится тред/чатик. Физически хранится ПОЧТИ как массив языка Си (побитый на блоки, возможно, а блоки, возможно, лежат в других дата-центрах, но реализация не меняет сути). Логически как std::vector или как [] в js/python, скажем. Список не сортирован дополнительно никак, кроме порядка добавления в его конец. Там нет поля timestamp_nanosec и какого-то индекса по нему: кого раньше добавили в массив, тот и раньше. В объекте «сообщение» может быть конечно timestamp, но на него всем похрен и нужно оно только чтобы клиент видел какое-то время сообщения.

Из СУБД сообщения треда можно доставать по индексу (номеру от начала списка с нуля). Причём, индекс совершенно честный - как в тупом массиве на Си: если в треде было 1 млн сообщений, а потом модератор дропнул 100 с начала (0…99), то все индексы съехали на 100 вниз - называвшийся ранее 500 стал называться 400.

Данная СУБД отлично всех устраивает, особенно экономически, поддерживая сотни тысяч запросов/сек на самой дешёвой бомжатской виртуалке. Главное, чем она интересна, это как раз экономика и дубовая простота.

Опишем сценарий, когда это выходит боком.

Клиент залогинился в чатик, СУБД отдала ему 10 сообщений с конца. Причём, на каждом сообщении, при передаче на клиент, наклеен его индекс в массиве/списке - чтобы клиент знал в каком месте треда находится. Предположим, в треде было 1000 сообщений. На клиенте окажутся сообщения с индексами [989…999]. Клиент крутит чатик вверх, упирается в конец простыни и хочет подгрузить ещё штук 10 сверху. Шлёт серверу запрос R1: «дай [978…988]».

И тут наступает жепь-ебрилло:

Пока запрос R1 летел на сервер по сети, на сервере было дропнуто первых 2 сообщения и все индексы съехали. Клиент получит дубли пары сообщений (те, что у него уже были на сервере попадут в интервал R1 в результате съезда индексов). Это пережить можно - получил дубль - выкинул. Жепь-ебрилло похлеще: пока летел R1 на сервере дропнули сразу первых 100 сообщений. На клиент придёт ответ: «not found» вообще. Уже потом конечно до клиента долетит нотифайка про «drop 0…99» и клиент всё поймёт, но инфаркт в клиенте уже произошёл и всё умерло.

В общем, сгенерите какую-нибудь идею о борьбе с данным рассинхроном.

Если посмотреть на такую чатиковую систему как Slack, то там у каждой сообщеньки однозначный ID = «timestamp.timestamp_microsec» и дропание сообщений где-то в начале треда никак не затрагивает ID остальных сообщенек в этом треде. Я даже могу подумать, что у них в базе вообще все сообщеньки всех тредов лежат в одной таблице с этим адским primary_key (timestamp.timestamp_microsec) и это там ничему не противоречит, но я так не хочу чё-то пока.

 

igloev
()

DTO в Python

Форум — Development

Как можно запретить добавлять новые поля (кроме x и y в примере)?

class MyDTO:
    x: int
    y: str

    def __init__(self, **kwa):
        self.__dict__.update(kwa)

    def __repr__(self):
        return str(self.__dict__)


dto = MyDTO(x=2, z='22') # хотелось бы, чтобы интерпретатор не допустил z из-за отсуствия ее в явно выписанных полях
print(dto) # {'x': 2, 'z': '22'}

Делать

__init__ (self, x: int, y: str)
не хочу, т.к. полей будет очень много и с ними будет путаница.

 

scientistpython
()

Защищаем чистый кэш файлов при нехватке памяти для предотвращения пробуксовки и livelock

Форум — Talks

Во-первых, вышла новая линейка для этой самой защиты: https://github.com/hakavlad/le9-patch/tree/main/le9db_patches.

В описании патчей все написано.

Спрашивайте ответы, если еще остались вопросы.

 , , ,

hakavlad
()

Python3 попытка указать тип из numpy

Форум — Development

Можно ли в Python3 использовать не только базовые типы для типизирования параметров функции? Если да, то как?

import numpy as np

def my_funct(int: days, np.datetime64: date) -> (int, str):
  File "<ipython-input-48-27844e51a60c>", line 1
    def my_funct(int: days, np.datetime64: date) -> (int, str):
                              ^
SyntaxError: invalid syntax

 , ,

scientistpython
()