• Как обойти словарь в Python?

    Вы бы привели пример структуры данных. Что-то типа такого, только как это выглядит в вашей задаче:
    article = {
        'key_1': {
            'key_2': {
                'content': {},
                'attachment': {
                    'file': 'val_1',
                    'key_4': 'some_value',
                },
            },
        },
    }

    А то мозги с утра не хотят додумывать...) Вы пишите про многоуровневый словарь, но не закрался ли туда список словарей в 'key_2'?
  • Как обойти словарь в Python?

    Viktor T2, от None нельзя брать get()
    d = {'a': {'b': None}}
    d.get('a').get('b').get('c')
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        d.get('a').get('b').get('c')
    AttributeError: 'NoneType' object has no attribute 'get'
  • Как перенаправлять трафик через iptables?

    @BaldUser Автор вопроса
    iptables в ubuntu 22.04 действительно работают поверх nf_tables.
    Поудалял старые правила, установил nftables, пробовал такие варианты:
    nft insert rule nat PREROUTING iif ens3 udp dport 2055 counter dnat to 10.15.0.2

    nft insert rule nat PREROUTING ip daddr #имя сервера от хостера#.fvds.ru udp dport 2055 counter dnat to 10.15.0.2

    nft insert rule nat PREROUTING ip daddr #ip сервера# udp dport 2055 counter dnat to 10.15.0.2

    Masquerade не делал, т.к. трафик односторонний, соответственно возвращать ответ от клиента мне не нужно.
    Но толку ноль. Больше всего удивляет, что счётчики стоят на нуле, хотя данные на порт сыпятся почти каждую секунду.
    nft list ruleset

    table ip nat {
    chain DOCKER {
    iifname "docker0" counter packets 0 bytes 0 return
    }

    chain POSTROUTING {
    type nat hook postrouting priority srcnat; policy accept;
    oifname != "docker0" ip saddr 172.17.0.0/16 counter packets 0 bytes 0 masquerade
    }

    chain PREROUTING {
    type nat hook prerouting priority dstnat; policy accept;
    ip daddr #ip сервера# udp dport 2055 counter packets 0 bytes 0 dnat to 10.15.0.2
    fib daddr type local counter packets 140 bytes 9238 jump DOCKER
    }

    chain OUTPUT {
    type nat hook output priority -100; policy accept;
    ip daddr != 127.0.0.0/8 fib daddr type local counter packets 0 bytes 0 jump DOCKER
    }
    }
    table ip filter {
    chain DOCKER {
    }

    chain DOCKER-ISOLATION-STAGE-1 {
    iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-2
    counter packets 0 bytes 0 return
    }

    chain DOCKER-ISOLATION-STAGE-2 {
    oifname "docker0" counter packets 0 bytes 0 drop
    counter packets 0 bytes 0 return
    }

    chain FORWARD {
    type filter hook forward priority filter; policy accept;
    counter packets 0 bytes 0 jump DOCKER-USER
    counter packets 0 bytes 0 jump DOCKER-ISOLATION-STAGE-1
    oifname "docker0" ct state related,established counter packets 0 bytes 0 accept
    oifname "docker0" counter packets 0 bytes 0 jump DOCKER
    iifname "docker0" oifname != "docker0" counter packets 0 bytes 0 accept
    iifname "docker0" oifname "docker0" counter packets 0 bytes 0 accept
    }

    chain DOCKER-USER {
    counter packets 0 bytes 0 return
    }
    }


    Так и не понял, почему счётчики пустые, хотя tcpdump прекрасно видит приходящие на порт 2055 пакеты:
    13:47:47.879454 IP #ip микротика#.2055 > #имя сервера от хостера#.fvds.ru.2055: UDP, length 1464
  • Как перенаправлять трафик через iptables?

    @BaldUser Автор вопроса
    Спасибо, завтра смогу проверить, не опечатался ли с ens0/ens3. Хотя я считал, что система не дала бы добавить правило с несуществующим интерфейсом.
    По поводу проверки: когда писал добавленные правила с ключём -C вместо -A, iptables подтверждало существование правила.
  • OpenVPN. Не подымается tun. Не создаётся файл лога?

    Я затупил, нужно было перезагрузить сервер....
  • Как сделать класс с добавляемыми методами?

    @BaldUser Автор вопроса
    Извините, но я совсем не понял, что вас смущает в методе __eq__(), а также, зачем все эти сложности, которые вы предложили...
  • Как из обычной мышки сделать беспроводную?

    @BaldUser Автор вопроса
    Aison, нет, тогда знаний не хватило, а сейчас уже нет на такое времени, да и желания.
  • Как разобраться с многопоточностью и асинхронностью в веб-приложении?

    @BaldUser Автор вопроса
    Огромное спасибо. Действительно, как оказалось, можно запустить тестовый сервер командой flask run --host=0.0.0.0 --without-threads, но работает это похуже, страницы иногда грузятся секунд по 40, хотя загрузка процессора процессом python3 на прежнем уровне - около 3%. Видимо, это из-за того, что картинка в коде страницы является ссылкой на этот-же сервер типа "/graph&a=XXX&b=YYY&c=ZZZ", и однопоточный режим здесь не справляется.
  • Как разобраться с многопоточностью и асинхронностью в веб-приложении?

    @BaldUser Автор вопроса
    Потоками я до последнего вообще не интересовался, у меня в коде их нет. Кода у меня там куча простыней, тащить их сюда смысла немного.
    Есть потоки только в библиотеке sqlite3worker - но проблема появилась до применения sql3w, а с началом применения этой библиотеки как раз пропала. Странно, тут https://ru.stackoverflow.com/questions/786465/pyth... и вот тут https://stackoverflow.com/questions/26629080/pytho... говорят, что это из-за многопоточности.

    "В каком режиме работает приложение на Фласк определяется wsgi сервером." Учту на будущее, спасибо. В принципе логично, но я об этом пока не думал, запускал тестовый сервер с помощью flask run --host=0.0.0.0, предварительно экспортировав
    export FLASK_DEBUG=1
    и
    export FLASK_APP=appname

    Ну то есть я согласен, что мой код очень далёк от идеала. Но многозадачности там нет.
  • Существуют ли аналоги remote.it (облачный cli) для linux?

    @BaldUser Автор вопроса
    Каждый раз разный домен и порт - в принципе это не пугает. Но если бы это было реализовано нормально, как например у remote.it: посмотрел ip и порт на сайте приложения у себя в аккаунте и вбиваешь их в putty. А здесь всё как-то сделано наполовину - скачиваешь файл и всё.
    Запускаешь ./ngrok tcp 22
    Удобно, не спорю. Но установку как службу надо проводить вручную.
    Выдал он ip/порт для подключения, а если он простоит час, день, неделю, что будет? ip поменяется или ngrok схлопнется? Непонятно. А если перезагрузка?
    Зарезервировать ip только в оплаченной версии, а это
    $5 / MONTH
    $60 billed annually, per user
    (not available monthly)
  • Существуют ли аналоги remote.it (облачный cli) для linux?

    @BaldUser Автор вопроса
    Ну это вариант, но хотелось бы попроще. Програмулька тут, програмулька там. Запустил, вбил пару команд, посмотрел, ок, закрыл.
  • Как из обычной мышки сделать беспроводную?

    @BaldUser Автор вопроса
    Спасибо за содержательный ответ! Очень интересная ссылка! Я уже купил HC-05 для экспериментов)
  • Как из обычной мышки сделать беспроводную?

    @BaldUser Автор вопроса
    Спасибо за поддержку! Это действительно беда бедовая. По логике этих господ, права на вождение тоже легче купить, чем учиться на автокурсах. Но что потом на дороге-то делать?!?