LINUX.ORG.RU

Сообщения ados

 

Где достать образцовые ноты?

Как-то досталась мне акустическая гитара и я понемногу учусь играть. Всякая элементарщина на 2-3 струнах вроде получается, но я мечтаю научиться воспроизводить на слух.

Для этого набросал простенький скрипт, проигрывающий случайные ноты, и которые нужно отгадать. За образец нот скрипт, а точнее вызываемый им mpv, проигрывает аудиозаписи вышеупомянутой гитары.

Но вот теперь мне бы хотелось приобщаться к стандартам и, желательно, чтобы образцовые ноты проигрывались разными инструментами. Проблема в том что вне интернета мне посоветоваться не с кем - в моём окружении практически нет музыкантов. И не факт что гитара как надо настроена - спектры, полученные с программного спектрометра и микрофона android-смартфона, с несколькими пиками на 3-4 октавы определённость вносят плохо. В интернете пока нашёл это https://www.youtube.com/watch?v=Nr2Zh2um5SM - спектры ещё хуже, не говоря о комментариях к видео.

Где лучше всего достать образцовые ноты? И может ли GNU/Linux как-то их синтезировать?

 ,

ados ()

Arch -> NixOs для скриптомакаки

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

Насколько хорошо репозитории пакетов NixOs покрывают потребности? Часто ли нужно руками чинить при обновлениях и работе?

PS: ноут уже не новый и CPU (intel i3) довольно слабоват.

 , ,

ados ()

Мошенники на ведроиде

УМВД России по Зажопинской области ПРЕДУПРЕЖДАЕТ

ОСТОРОЖНО
ЭТО МОШЕННИКИ,
если ПРОСЯТ:
...
+ РЕКВИЗИТЫ КАРТЫ
+ CVC код или код из СМС сообщеения
...
ТЕБЯ ДОЛЖНО НАСТОРОЖИТЬ!
Сомневаешся,
ПОЗВОНИ
РОДСТВЕННИКАМ,
В ПОЛИЦИЮ 112, 02,
В БАНК

Если я правильно понимаю цитату, под категорию «МОШЕННИКИ» подпадает куча приложений на андроид - приложение от РЖД, например. Ладно там просят номер карты банковской - понять можно, но ещё ведь требуют и CVC. Стоит ли оформлять заяву в полицию? Кто-нибудь уже пробовал?

 , ,

ados ()

У кого-нибудь получалось собрать d2x-xl под онтопик?

Сабж вот отсюда https://www.descent2.de/index.html ?

 

ados ()

Поиск файла того же имени

С помощью Path(file).rglob(…) найден файл, надо найти с тем же именем, но немного другим суффиксом. Признаться довольно долго искал решение и всё же получилось такое:

import os

def find_ifo (path):
    name = os.path.splitext(path)[0]
    g = path.parent.glob('*.[iI][fF][oO]')
    return next(x for x in g if os.path.splitext(x)[0] == name)

ИМХО какое-то уродство получилось. Может среди обширного набора инструментов есть что-то попроще?

 , ,

ados ()

Законодательство и костыли

По сути своды законов в различных странах это код по которому работает общество. Такой код выдержан, обычно, в декларативном стиле и, местами, в процедурно-императивном, но это не суть. Как и в свободном софте там полно костылей и несуразностей. Причём мне часто приходится сталкиваться с мнением, что в России или ты находишь лазейку среди таких костылей и живёшь как человек, или гниёшь на шахте, заводе, галере, etc.

Хоть нагромождений костылей в СПО всё больше с годами, по ощущениям, тем не менее чувствуется внимание к такой проблеме, и, даже, кто-то вычищает код. Иногда даже сносят довольно полезные вещи при этом.

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

 ,

ados ()

Отдельный раздел для флуда

Известно что бремя модерирования на ЛОРе вносит определённую деформацию психики. В целях поддержания психологического здоровья модераторского состава предлагаю идею создания специального раздела на форуме с особым набором правил. А именно чтобы не было никаких правил: без запрета на нацпол, мат, оффтоп, оскорбления, анонимный постинг, жж и прочего тупака. Правил нет как для пользователей так и для модератора, т.е. модератор также может под любым надуманным предлогом и без объяснений (внятных) снести хоть все треды в разделе. Соответственно над входом в раздел должны висеть плашки об отказе от ответственности за нанесённый психологический ущерб входящему и за любую ценную информацию оставленную в темах раздела. В общем предлагаю создать раздел куда может сходить модератор и выпустить пар. ИМХО к разделу лучше всего подходит название «песочница».

Вот, правда, как ещё сделать так чтобы в таком разделе модератор мог банить по любому поводу, но так чтобы всех не перебанить? Разрешить постинг забаненым с перечёркнутыми никами?

 ,

ados ()

Производительность генераторов и операций со списками

Как можно ещё ускорить выполнение такого скрипта:

#!/usr/bin/env python

import sys, difflib, re, os
from pathlib import Path


def regexp_compile (r):
    return re.compile(r, re.IGNORECASE)

def words_generator (buff):
    length = len(buff)
    start = 0
    while start < length:
        x = buff.find(b'\x00', start)
        yield buff[start:x].decode('utf-8')
        start = x + 9 # 1 byte for \0 + 4 bytes * 2 
        ## 32 bit for word index and 32 bit for word length


class RegexAccumulator:
    def __init__ (self, regexp):
        self.collection = list()
        f = lambda s: re.fullmatch(regexp, s) and s not in self.collection
        self.filter = f

    def accumulate (self, words):
        self.collection += list(filter(self.filter, words))

    def result (self):
        self.collection.reverse()
        return self.collection


class UsualAccumulator:
    def __init__ (self, word):
        self.word = word
        self.list1 = list()
        self.mlist = list()

        w = re.escape(word)
        regex1 = regexp_compile(".*" + w)
        self.regex2 = regexp_compile(w)

        self.rfilter = lambda s: re.match(regex1, s) and s not in self.list1
        self.mfilter = lambda s: s not in self.list1 and s not in self.mlist


    def accumulate (self, words):
        self.list1 += list(filter(self.rfilter, words))
        mlist = difflib.get_close_matches(self.word,
                                          words,
                                          n=400,
                                          cutoff=0.7)

        self.mlist += list(filter(self.mfilter, mlist))

    def result (self):
        result = list()
        list2 = list(filter(lambda s: re.match(self.regex2, s),
                            self.list1))

        if self.word in list2:
            result.append(word)
            list2 = list(filter(lambda s: s != word, list2))

        result += list2
        result += list(filter(lambda s: s not in result,
                              self.list1))
        result += list(filter(lambda s: s not in result,
                              self.mlist))

        result.reverse()
        return result


if __name__ == "__main__":

    word = sys.argv[1]
    if word == "-r" and len(sys.argv) > 2:
        accumulator = RegexAccumulator(sys.argv[2])

    else:
        accumulator = UsualAccumulator(word)


    files = Path(os.environ['STARDICT_DATA_DIR']).rglob("*.[iI][dD][xX]")

    for name in files:
        with open(name, 'rb') as f:
            ## My biggest .idx file ~ 11Mb so ...
            buff = f.read()
        accumulator.accumulate(list(words_generator(buff)))

    for word in accumulator.result():
        print(word)

Скрипт ищет слова в stardict словарях http://stardict-4.sourceforge.net/StarDictFileFormat секция {3}.

Очевидно что бутылочное горлышко в методах accumulate. Ещё может вместо words_generator и метода result у UsualAccumulator можно что-то более производительное приделать.

 ,

ados ()

Картинки в w3m не работают

Захожу через w3m в termux на LOR и картинки не работают. w3m-img поставил.

 , ,

ados ()

Юридический раздел

ЛОРу уже давно пора бы обзавестись подобным разделом, т.к. уже давно на вполне технические вопросы здесь получают вполне логичные решение в стиле «пиши в прокуратуру», «смотри такие то пункты договора» или «перед работами оформляйте такой-то договор». Сама всеми уважаемая организация GNU активна по большей части именно в гуманитарной сфере.

Да и времена Луговского с его технофашизмом и прочими биореакторами уже давно в прошлом. Humanist live matters короче.

 , ,

ados ()

Настройка IP камеры

Вот «досталась» мне некая EVC-DB-SL20-P/A/C (BV). Хочу настроить запись на microsd и, желательно, поменять настройки подключения по IP. В инструкции такие варианты:

  1. Подключение через браузер IE с какой-то неведомой Active X. Рассматривать не стал, уж извините.
  2. iVMS320 из esocctv.ru. Что под wine, что на винде (правда, свежее WinXP ничего под рукой не нашлось) софтина работает одинаково - подключение и картинка есть, окно настройки падает. Проприетарщина использует Qt.
  3. Очередная проприетарная BitVision для андроида с гугломаркета. Похоже вообще не подключается.

Может быть есть чем свободным обойтись можно?

 ,

ados ()

Задачка про бумажку с паролями

Вот допустим я отправляюсь куда-то, что там меня ждёт непонятно. Есть у меня список аккаунтов с паролями, которые мне могут понадобиться. Этот список зашифрован и храниться на оборудовании, которому доверяю. С собой могу взять только оборудование, которому я не настолько доверяю чтобы хранить на нём этот список. Связи с надёжным оборудованием нет. Список довольно большой - все пароли запомнить не могу. Вижу 3 выхода:

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

Понятно что никакой способ 100% гарантий безопасности не даёт - интересуют насколько каждый способ ближе к 100%.

 

ados ()

Common lisp, GTK и лапшелогика

Вот есть код:

(let ((some (trick 'construct)))
  (if (very-bad? some)
      (trick 'good-bye)
      (progn (when (bad? some)
               (setf some
                     (trick 'fix some)))
             (trick 'show some))))

В данный момент код в теле функций и форма с trick - вызов функции с созданием gtk окна, работой в этом окне, закрытием и, уже после, trick возвращает значение.

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

(low-level-init-gtk)
(let ((window (build-...)))
  ;; Здесь создаём объекты и рассовываем лямбды для отрисовки
  ;; и обработки событий
  ...
  
  ;; ииии
  (gtk-main-loop))

Ещё хочу это обернуть в unwind-protect чтобы высвобождать систему звука, например. Тут уже мало того формы с trick перестают быть просто вызовами функций, так вообще всю логику из первого куска кода нужно раздробить и размазать по обработчикам. Без этого только продолжения использовать? Или есть другие практики описания такой логики?

 , ,

ados ()

А кто у нас самый некомпетентный «пятизвёздочник»?

И самый мощный генератор тупняка с пятью звёздами наперевес. Думаю, это интересно каждому посетителю ЛОРа.

 

ados ()

Задачка с чайником

Есть обыкновенный чайник с дугообразной ручкой, двумя концами которой та крепится к сосуду. Чайник цельнометаллический за исключением пластика поверх ручки чтобы металл не обжигал. Задача узнать конструкцию ручки - или это пластиковая ручка, к концам которой приделывается два металлических прута для крепления к сосуду или это цельный металлический прут покрытый пластиковым материалом посередине. Деструктивные действия к чайнику применять нельзя. Снять ручку, чтобы померить электропроводимость, нельзя. Рентгеновское излучение недоступно. Металл чайника не магнитится.

 

ados ()

Как укротить проприетарщину?

Или как выйти максимально сухим из воды?

Есть у меня аппарат с lineage os 16.0 на котором практически отсутствует что либо из несвободного ПО. Пока не жалуюсь - батарейка используется экономно, память непонятно чем не захламляется, root спокойно обеспечивается через magisk.

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

 , ,

ados ()

Кетчуп для линуксоида

https://i.postimg.cc/Tw6ZQSg9/IMG-20210331-150543.jpg

Кто пробовал? Какие подводные? Написано - произведено в Нижнем Новгороде.

 ,

ados ()

Где спам, alpha?

 

ados ()

Кто тут жалуется на артрит от дефолтной раскладки в Emacs?

Вы на гитаре играть пробовали что-нибудь сложнее кузнечика?

Перемещено leave из desktop

 

ados ()

Загадки со словами

Игры с ИИ и что-то по-интереснее городов - с ассоциациями, там, антиассоциациями. Возможно обучение ИИ в ходе игры. Существует ли такое?

 

ados ()

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