• Ошибка при отправке фото используя aiogram и демон для запуска бота?

    Ошибка возникает только тогда когда запускаю скрипт в виде демона .service


    Покажи свой сервис.
    Попробуй прописать в WorkingDirectory путь к папке, из которой ты запускаешь скрипт.
    Также проверь, какой у тебя в сервисе User. У другого пользователя может не быть прав на чтение чего-нибудь.
    Проверь, в не блокирует ли чтение selinux - от него в журнале будут специфичные сообщения с вариантами разблокировки (строк по 5-10 на сообщение).

    P.S.: я для питоньих скриптов делаю баш скрипт run.sh и запускаю его из сервиса. В нем пишу что-то типа:
    #!/bin/bash
    cd "$(dirname "$0")"
    exec python main.py

    Туда же можно прописать переменные окружения и путь к venv.
    Написано
  • Ноутбук не видит SSD именно после перезагрузки. Как можно решить данную проблему?

    Мое предложение:
    1. Вытащить HDD и поставить SSD
    2. Сбросить настройки BIOS
    3. Включить EFI загрузку
    4. Загрузиться в установщик Windows
    5. Зайти в командную строку (Shift+F10 или меню восстановления)
    6. discpart
    7. list disk
    8. sel disc НОМЕР
    9. clean
    10. convert gpt
    11. Перезагрузиться (чтобы установщик перечитал разделы)
    12. При установке не создавать разделы, просто выбрать свободное пространство


    Это правильная установка системы, так точно не будет проблем с ней. Но если проблема не в установке, то это не поможет. Также переход на EFI может решить проблему кривого биоса (некоторые современные материнки в legacy работают плохо, а производитель ничего не исправляет и советует переходить на EFI).

    После установки обновить биос (если есть обновления), возможно, проблема именно в нем. Если не поможет - можно поставить линукс - если проблема сохранится и в нем, значит биос не хочет работать с этим SSD и уже вряд ли что-то поможет.
    Написано
  • Как запустить Windows 10 и убрать GNU GRUB?

    chainloader +1


    В EFI системах (=все современные) используется
    chainloader (hd0,gpt1)/EFI/Microsoft/Boot/bootmgfw.efi
    , где hd0,gpt1 - номер ESP/EFI раздела (самый маленький FAT32 раздел).
    Написано
  • Ноутбук Acer TravelMate 2, свежий debian, второй раз слетает boot запись. Что это может быть?

    Геннадий Пастухов, еще можно переустановить grub с опцией --removable, тогда он сам поставится в /EFI/boot/bootx64.efi.
    Написано
  • Ноутбук Acer TravelMate 2, свежий debian, второй раз слетает boot запись. Что это может быть?

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

    А починить загрузчик (разово) можно через флешку с любым live линуксом (в efi, конечно) через efibootmgr. Примерно так:
    efibootmgr -c -L Grub -d /dev/sdX -p Y -l /EFI/grub/grubx64.efi
    (X и Y зависят от системы).
    Написано
  • Ноутбук Acer TravelMate 2, свежий debian, второй раз слетает boot запись. Что это может быть?

    Система установлена как bios (legacy) boot или uefi? Сам ноут uefi понимает?

    Если uefi, то скорее всего слетают записи в nvram (пзу мп) ноутбука. Такое может происходить если плохо держит батарейка (в современных ноутах роль батарейки cmos выполнят основной аккумулятор, если его разрядить "в ноль", то может быть то же самое). Можно сделать так, чтобы grub запускался без этих записей, в режиме "uefi removable", т.е. загрузочной флешки. Вроде бы достаточно скопировать grub.efi (grubx64.efi) в (ESP)/EFI/boot/bootx64.efi.
    Написано
  • Где найти документацию по исключениям в javascript?

    @Pasha13666 Автор вопроса
    Rsa97, ну например json из fetch https://developer.mozilla.org/en-US/docs/Web/API/R...
    Вроде очевидно, что он должен бросать какое-то исключение, если в ответе пришел не json, но какое конкретно - только проверять через консоль.
  • Как подкидывать рандомный прокси в цикл?

    from requests import Session
    from proxy_randomizer import RegisteredProviders
    
    rp = RegisteredProviders()
    rp.parse_providers()
    
    
    def get_session(proxy):
        session = Session()
        proxy = rp.get_random_proxy().get_proxy()
        session.proxies = {'http': 'http://' + proxy}
        return session
    
    
    for i in range(5):
        r = get_session(proxy)
        try:
            print("Request page with IP:", r.get("http://icanhazip.com", timeout=1.5).text.strip())
        except Exception as e:
            continue


    get_random_proxy уже возвращает случайный адрес прокси и нет никакого смысла складывать эти адреса, а потом выбирать рандомный из них. Да, документация proxy_randomizer-а ужасна, но всегда можно глянуть исходники.
  • Реализация вложенных атрибутов класса?

    mkone112, я понял о чем вы и да, вы правы. Если есть переменная (поле), которой присваивается одно из нескольких значений, то в современном коде на python используется Enum. Собственно, модуль enum был придуман именно для того, чтобы не делать константы. Но это все рекомендации. Если enum протит производительность, то использовать его не нужно. Хотя я считаю, что python и производительность не очень сочетаются.

    Если ответить на ваш изначальный вопрос: да, более чистый вариант есть - enum, но никто не заставляет вас всегда писать чистый код.
  • Реализация вложенных атрибутов класса?

    mkone112, ещё раз. Я не говорю ничего про количество классов. Я говорю как лучше разместить класс, если он нужен.

    При этом если класс расположен внутри другого, то классом быть он не перестаёт. И не надо считать, что больше классов == хуже. Enum достаточно легковесный, чтобы его использовать.
  • Реализация вложенных атрибутов класса?

    Михаил, в python приватность - это соглашение. Разработчики посовещались и согласились не использовать поля, методы и классы, начинающиеся с подчеркивания нигде, кроме объекта self.

    mkone112, socket - это стандартная библиотека (как и str, int, list и т. д.). В PEP 8 говорится, что в стандартной библиотеке это соглашение почти не используется.

    Не могут.

    Могут.

    Кстати в той же java приватность тоже обходится через рефлексию, но никто не говорит, что так надо делать.

    Короче твой вариант это по классу на каждый чих.

    Я говорю только про именование и расположение классов, а не про их количество.
  • Как настроить pip?

    Попробуйте
    pip3.8 install dnspython
  • Python, как сделать много запросов и получить ответ без ошибок?

    Кирилл Горелов, база одна на одном сервере. А так же на каждом сервере по одному воркеру. Сразу предупреждаю, sqlite так не умеет (там база - это файл, который должен лежать на той же машине, что и программа), зато mysql, например, так умеет:
    MySQLdb.connect(host="localhost", user="username", passwd="password", db="database")
    , чтобы подключиться к базе на другом устройстве меняете localhost на ip этого устройства (также подключения с других устройств надо разрешить в конфигах бд). Вообще почти все бд могут работать по сети с несколькими программами одновременно.

    Подробно:
    Сервер 1 - База данных + worker (host="localhost")
    Сервер 2 - worker (host="ip сервера 1")
    Сервер ... - worker (host="ip сервера 1")

    И как мне запустить несколько воркеров, если они будут выполняться по крону?

    Они могут быть запущены все время (если в базе нет адресов, то они просто ничего не делают). Поэтому запускать их надо через systemd или init.d-скрипт.
  • Python, как сделать много запросов и получить ответ без ошибок?

    Вот здесь есть хороший пример использования create_task.
    Вам нужно что-то вроде
    async def main():
        tasks = []
        while True:
            if len(tasks) < 10000:  # ограничение на кол-во одновременных запросов
                url = await get_url_from_db()  # можно использовать и синхронную бд, обычно запросы к ней не занимают много времени, но с async будет быстрее
                task = asyncio.create_task(make_request(url))
                tasks.append(task)
            else:
                await asyncio.sleep(10)  # наши задачи не работают, пока мы не делаем await, поэтому дадим запросам обработаться
    
            i = 0
            while i < len(tasks):  # во время for нельзя удалять элементы из массива, поэтому делаем так
                task = tasks[i]
                if task.done():
                    del tasks[i]
                    print(task.result())
                else:
                    i += 1
            # теперь в tasks лежат только те запросы, которые еще не завершились
  • Как исправить замедленную реакцию в разных программах (Video player, MS Word, MS Powerpoint)?

    Явно проблема с видеокартой или ее драйвером (офис для рендера документов использует видеокарту). Возможно используется базовый драйвер, который "не вывозит" нагрузку. Возможно видеокарта слишком старая и не тянет.
    Какой драйвер? Что с браузером? Ютуб работает? Dxdiag что пишет? Furmark работает (что пишет, сколько кадров)?
    UPD: увидел, что у вас моноблок (это же моноблок?) на встройке. Могу предположить перегрев проц/видео. Т.е. Греется одно, а частоты сбрасывают оба. Смотрите температуры.
  • Как отключить вызов контекстного меню через alt+space в Windows 10?

    Вроде большинство игр может блокировать Alt+Space. Попробуйте поменять режим окна (полный экран/окно без рамки).
    DisableHotKeys отключает некоторые сочетания клавиш с кнопкой Win, Alt+Space через него отключить невозможно.
  • Как окрасить строку python кодами цветов майнкрафта?

    Смотря куда вывести. Если в консоль, то надо преобразовать "§f" в "\x1B[0;37m" (обратите внимание, что \033 - это один символ, указанный с помощью восьмеричного кода. Питон не понимает восьмеричные коды символов, поэтому надо использовать шестнадцатеричный с префиксом \x. То есть OCT 033 = HEX 1B) и так далее (все коды цветов в майнкрафте). Заменять символы в строке может метод .replace().
    Если вам нужно сделать из bash-цветной строки сделать minecraft-цветную (наоборот), то делайте обратную замену.
    Если вывести цветной текст в окно, то это сложнее. Смотрите документацию к своей графической библиотеке.
    Вообще лучше покажите, что вы делаете, что у вас получается и что вы хотите получить.