Задать вопрос
  • Как принять донат из Китая?

    вичат и тебе переоводит на вичат или алипей
    Ответ написан
    Комментировать
  • Как правильно спроектировать эту функцию?

    Vindicar
    @Vindicar
    RTFM!
    Ты неверно понимаешь, как работает overload. Это тупо подсказка для IDE - "эту функцию можно вызывать вот так, и она вернёт вот это, или же вот этак, и она вернёт вон то". Тело функции, завёрнутой в overload, игнорируется. А последнее объявление функции не должно иметь overload, и оно как раз и будет реализовывать все варианты. Так что итоговая реализация всё равно будет иметь if внутри. Да и в твоём случае overload никчему, так как другие-то параметры не отличаются.

    Ты мог бы, конечно, упороться, и сделать functools.singledispatch - при условии, что ты message переставишь первым параметром. Но, имхо, в этом нет практической необходимости, всё это делается в разы проще.

    async def show_cpanel(
        state: FSMContext,
        message_source: typing.Union[Message, CallbackQuery]  # значение одного из двух типов, но обязательное!
    ) -> None:
        '''
        Send control panel to current user
        '''
        this_user = message_source.from_user.id  # и Message, и CallbackQuery имеют from_user
        message = message if isinstance(message_source, Message) else message_source.message
    
        profile_is_visible = await req.check_profile_visible(this_user)
        message_id = (await message.answer(
            '<b>' + _('Панель управления') + '</b>',
            parse_mode='HTML',
            reply_markup=kb.control_panel(profile_visible=profile_is_visible)
        )).message_id
        await state.update_data(cpanel_message_id=message_id)
        logger.info(f'Admin #{this_user} opened control panel')

    Вот и всё. Твой вариант
    callback_query: Optional[CallbackQuery] = None,
        message: Optional[Message] = None,

    плох тем, что из него совершенно не очевидно, что хотя бы один из параметров не должен быть None.

    EDIT: Хотя я не вполне понял идею насчёт callback.message. Если я верно помню, этот атрибут хранит ссылку на сообщение от бота, содержащее кнопку, для которой был вызван callback. Поэтому его from_user по идее будет заведомо указывать на бота. Так что да, лучше последуй совету Everything_is_bad и переделай функцию так, чтобы она принимала пользователя и сообщение отдельными параметрами. А их значения определяй там, где ты функцию вызываешь.
    Ответ написан
    5 комментариев
  • Как правильно спроектировать эту функцию?

    @Everything_is_bad
    оба варианты неправильные (а второй вообще с тупой копипастой), а надо всего лишь вот это кусок
    if callback_query:
            this_user = callback_query.from_user.id
            message = message or callback_query.message
        else:
            this_user = message.from_user.id

    определять перед функцией, точнее выявлять message и передавать его в саму функцию, юзер же уже есть в этом message у CallbackQuery, да?
    Ответ написан
    1 комментарий
  • Как грамотно изначально сделать телеграмм бота на Python с помощью aiogram чтобы выдерживал как минимум 10к пользователи и можно было масштабировать?

    Daemon23RUS
    @Daemon23RUS
    Я знаю что нужно использовать библиотеку aiogram Для лучшей производительности. А также использовать для прода вебхуки, nginx, docker, redis ...... У меня есть vps сервер с 2 ядрами CPU, 2 GB RAM, 20gb

    1) Снять розовые очки.
    2) Посмотреть на задачу в свете отсутствия розовых очков.
    3) 10к пользователей в секунду ? - произвести расчет, а лучше обратится к документации Mistral api примет ли она от Вас 10к rps
    4) Произвести коррекцию своей хотелки.
    5) Имея на руках реальный план по RPS произвести предварительный расчет.

    P.S. И это я только подтолкнул Вас к правильной постановке вопроса, даже не рассматривая техническую сторону. Разобравшись в этом нюансе, у Вас будут другие (более технически правильные вопросы) на которые по возможности сообщество ответит.
    Ответ написан
    Комментировать
  • Как общаются микросервисы в реальных проектах?

    AleksejMsk
    @AleksejMsk
    Программирую от души за деньги
    Микросервисы ненужны.
    А если нужны (нужна аргументация их полезности игнорируя маркетинг коучей по микросервисам) то ненжны очереди так как и без них два процесса смогут общаться по любому удобному протоколу ... http grpc и т.д.
    Очереди нужны как удобный уровень абстракции от потребителя сообщения.
    На практике - rest как удобный и читаемый человеком протокол.
    Если просадки то переходим на уровень погеморойней grpc.
    В общем усложнять себе жизнь все предпочитают поэтапно, если такое позволительно.
    Ответ написан
  • Есть ли прога для фонового доступа к удаленному компьютеру?

    @Giperoglif
    это:
    1. нарушает закон;
    2. классифицируется как шпионское ПО;
    3. приводит к уголовной ответственности.
    Ответ написан
    9 комментариев
  • Какой ноутбук брать для разработки игр в 3D?

    @tukreb
    Если хотите, чтобы не умер через пару лет, то вам нужно искать переносимую станцию. Обычно их выпускает тайваньская фирма Clevo, но в Китае её маркируют как Hasee, в Европе Dream Machines, Saiger, XMG, а в Америке EUROCOM.
    Msi так же выпускает рабочие станции, линейка Titan называется (только не тонкая серия).
    Acer вроде раньше выпускал такие в линейке Predator, но вроде потом скатились в тонкий шлак с дохлым охлаждением.
    Такие машины стоят от 400к рублей минимум, весят до 5 кг, (вместе с блоками питания которые до 1-2 кг).
    Это единственный вариант, если вы хотите "ноутбук" и который не сгорит через пару лет из-за плохо охлаждения.
    В противном случае только ПК.

    P.S Так как Clevo - это OEM, то каждый маркирует их ноутбуки по своему, поэтому я не могу вам назвать что смотреть в Clevo. Смотрите по цене, премиальная линейка начинает от 350-400к, и чтобы были толстые.
    P.S2 Я тут глянул современные MSI Titan и все они тонкие, тогда вам остаётся искать только Clevo либо какие то очень лимитированные ноутбуки с крутым охлождением.
    Ответ написан
    1 комментарий
  • Как скачать видео с YouTube?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    yt-dlp?
    Ответ написан
    5 комментариев
  • В какой контейнер ставить сертификат Lent`Encrypt в NGINX-front или NGINX-backend?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Во первых для вашего определения того, что вы называете "фронт" есть официальный термин - реверс прокси.
    И конечно же сертификаты должны быть на нем.
    Ответ написан
    Комментировать
  • Расшифровать диск с Битлокером возможно ли?

    @xypharion
    DisLocker - если знаете ключ. Также ключ может быть в формате файла .BEK. Если ноутбук помер, то на другом компьютере он не расшифруется, если использовался TPM.

    Есть еще такие варианты, если не знаете ключ:

    Elcomsoft Forensic Disk Decryptor (платный, требует следов ключей в памяти).
    Passware Kit Forensic (анализирует дампы памяти).
    BitLocker Recovery Password Viewer (для поиска ключа в Active Directory).

    p.s. Первые 2 программы стоят как крыло от самолета. Проще ноутбук новый купить.

    Но без ключа или пароля расшифровка почти невозможна.

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

    Вы лучше расскажите, что конкретно сломалось. Если там банально умер экран, то можно попробовать подключить к внешнему монитору
    Ответ написан
    1 комментарий
  • Как могли узнать код для входа в Телеграм?

    @Refguser
    Решения для бизнеса: корп.сайты, ИМ, боты и пр.
    Скорее всего с ПК и был уведён.
    Вирусы, левый клиент и и тп.
    Ответ написан
  • Как определить свой уровень программирования?

    @Everything_is_bad
    твой уровень программирования "школьник 9го класса, изучающий полгода java"
    Ответ написан
    1 комментарий
  • Как определить свой уровень программирования?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Если твой код иногда работает, то поздравляю - ты Junior. Если понимаешь, почему не работает, то ты уже на пути в Middle'ы. А если уже ненавидишь себя за выбор пути и задумываешься о домике на берегу реки - добро пожаловать в Senior'ы
    Ответ написан
    8 комментариев
  • GUI для DeepSeek — есть ли?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    https://openrouter.ai/
    Можно этим пользоваться. Там сразу есть выбор - бесплатный вариант или платный от различных провайдеров. То есть сразу выбираешь модель и пользуешься UI через браузер.

    Вот платные варианты (видно, где больше перегруженность серверов):
    spoiler
    6800c5973a7f2069239369.png

    Добавить свой ключ вроде как
    можно
    6800c70c96331590000075.png
    Но лично я этого не делал, единый счёт на все нейронки удобнее.
    Ответ написан
    7 комментариев
  • Чем бэкапить файловую общую папку на Windows в 2025 году?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Чем бэкапить файловую общую папку на Windows в 2025 году?
    Тем же, чем и в 2024, и в 2023, и в 2020, и в 2015 (дальше продолжить тоже можно, но какие-то инструменты уже не в моде или устарели)
    Ответ написан
    Комментировать
  • Docker images -a. Надо ли удалять это?

    @IgorOhrimenko
    Так можно безопасно очистить:
    docker image prune
    WARNING! This will remove all dangling images.
    Are you sure you want to continue? [y/N]

    При этом будут удалены все и далеко не факт, что освободится место, т.к. наверняка вместо есть точно такие же образы, но с имеем.
    Для освобождения места можно воспользоваться командой `docker system prune --volumes`.
    Ответ написан
    Комментировать
  • Nexus 4: Пропал режим разработчика, как его снова включить?

    Попробуй в настройках "О телефоне" поклацать по "Номер сборки" раз 10-15
    Ответ написан
    2 комментария
  • Как умножать без периода в c#?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Типичный новичок в программировании, который не знает что такое числа с плавающей точкой
    Вот, читай и учись
    https://0.30000000000000004.com/
    Ответ написан
    Комментировать
  • Как перенсти ОС с HDD на SSD?

    hint000
    @hint000
    у админа три руки
    Можно ли из под Windows перенести
    Не надо из под Windows. Надо из самого Debian.
    1.1. через sfdisk выгрузить дамп таблицы разделов HDD в текстовый файл;
    1.2. поправить размеры разделов (если несколько разделов ext4, то с учетом их заполненности), чтобы суммарно влезло на 120 ГБ (на самом деле нужно через fdisk -l проверить точный размер SSD в мегабайтах; возможно, там чуть меньше, чем 120 ГБ);
    1.3. через sfdisk залить исправленную таблицу разделов на SSD;
    2. сделать обычное пофайловое копирование ext4-разделов с HDD на SSD, а лучше потоковое копирование через tar (dd не годится, потому что размеры разделов уменьшились);
    3. скопировать через dd первый сектор диска, в который обычно ставится grub;
    4. если есть раздел EFI, то его целиком скопировать через dd;
    5. PROFIT
    Когда у вас Linux, то для такого переноса даже не требуется cпециальное ПО, всё можно сделать стандартными средствами Linux.

    P.S. Не помешает перед копированием файлов перемонтировать файловые системы на HDD в режиме read-only.
    Ответ написан
    Комментировать
  • Есть ли хорошие погодные виджеты для Андроида не от Яндекса?

    @Drno
    yahoo
    Ответ написан
    Комментировать