• Как отправить разные изображения для сообщений с одинаковым содержанием в Telebot?

    Vindicar
    @Vindicar
    RTFM!
    Тебе нужен автомат состояний (finite state machine, FSM). Не знаю, есть ли его реализация в комплекте с telebot, но идея простая: нужно помнить, что пользователь делал раньше, т.е. иметь хранилище ключ-значение вида "id пользователя -> состояние+доп. инфа". В простейшем варианте хватит и словаря (если тебе не критично, чтобы сведения переживали перезагрузку бота).
    Ответ написан
    Комментировать
  • Как запустить несколько фреймворков одновременно?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Никак, не надо смешивать мягкое с тёплым. Если хотите сделать два интерфейса, то делаете ядро приложения с API, web-приложение и gui-приложение, использующие API ядра. И все три запускаться должны отдельно.
    Ответ написан
    Комментировать
  • На вход программе поступает строка, как удалить из нее все символы "w" и "t"?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    v = ''.join([x for x in a if x not in 'wt'])
    Ответ написан
    Комментировать
  • Почему телеграмм бот не реагирует на часть кода?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Потому что первым отрабатывает функция get_text_messages. Зачем вы сделали a_task, которая тоже должна реагировать на текст не понятно. Оставляйте одну функцию и в ней делайте ветвление в зависимости от введенного текста.
    Ответ написан
    Комментировать
  • Непонятные символы и как они получаются?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    https://www.w3schools.com/tags/ref_urlencode.ASP
    Update: для тех, кто в танке (https://www.ascii.ca/cp1251.htm):
    %C3 → Г
    %E5 → е 
    %EE → о
    %F0 → р
    %E3 → г
    %E8 → и
    %E9 → й
    Ответ написан
    2 комментария
  • Как обмануть провайдера под видом спидтеста?

    vabka
    @vabka
    Токсичный шарпист
    Исходя из вашего прошлого вопроса - никак.
    Ответ написан
    Комментировать
  • Почему проходят первые тесты, но не проходят вторые на Codewars?

    Vindicar
    @Vindicar
    RTFM!
    Тормозит, потому что ты брутфорсишь перебор простых чисел. Используй решето Эратосфена.
    Иными словами, тебе не нужно перебирать все числа меньшие N, чтобы найти делители - достаточно проверить все простые числа, меньшие или равные N/2. А так как ты находишь простые числа по возрастанию, то все эти числа ты уже знаешь.
    До кучи, 2 всегда простое, а вот другие чётные числа - нет. Можешь добавить 2 в список заранее, а цикл по i делать от 3 с шагом 2.

    Ну и да, не называй переменную list. Это сбивает с толку.
    Ответ написан
    Комментировать
  • Авторизация из чата через telegram?

    @q2digger
    никого не трогаю, починяю примус
    Ответ написан
    Комментировать
  • Можете посоветовать видео блогеров обучающие программированию на Python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Видео нужно тогда, когда ты прочёл книгу, вроде всё понял, но куда тыкать пока не понял. В видео можно посмотреть чисто практические приемы работы с IDE, с консолью, с системой. То, что слабо отражено в книгах. Чтоб не тыкаться как кутёнок в незнакомый интерфейс.
    А собственно язык лучше по хорошей книге и затем кодить, кодить, читать исходники других проектов, вникать, дебажить.

    Самое главное - понять, что язык программирования - это как лопата у агронома. Лопатой надо владеть? Надо. Достаточно ли агроному лопаты? Нет. Ему надо знать и уметь много чего - сорта, почвы, технологии, химию, а лопатой он делает только некоторую часть операций.
    Программисту надо знать в той или иной степени информатику, алгоритмы, структуры данных, языки программирования, базовые библиотеки, БД и СУБД, API, ООП, фреймворки, сети, протоколы, ИБ, тестирование (в части, касающейся программеров), да много чего. Язык там не на первом месте.

    Видосиками это не изучишь, как ни старайся.

    Из более-менее полезного видео поищи «алгоритмы и структуры на Python» от МФТИ, там десятка полтора лекций Хирьянова. Но это лучше после книги «Изучаем Python» М.Лутца.
    Ответ написан
    1 комментарий
  • Как пишут обмен данными (сетевой движок) для компьютерных игр?

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

    Сервер принимает сообщения от игроков. Некоторые тут же форвардит остальным подключённым к нему. Некоторые вызывают серверное событие, и уже оно рассылает всем какое-то сообщение.

    Т.к. один серв держит ограниченное число подключений (около 30 тыс в нашем случае), серверов несколько. Каждый напрямую отвечает за подключённых к нему игроков. И идёт меж-нодовая коммуникация: каждая нода шлёт остальным, например, сообщение для всех подключённых игроков. Или в конце консолидируется счёт и рейтинг.

    С зажатой клавишей, наверное, достаточно события нажатия, и события снятия. Вычисление позиции на карте при таком управлении не тяжёлая вычислительная задача – можно параллельно считать на сервере, наверное. Раз в пару секунд синхронизируя координаты между сервером и игроком.

    Время должно быть точно синхронизировано между каждым игроком и сервером. Несмотря на сетевые задержки, эта задача решается протоколом NTP. Общее время позволяет сопровождать важные события отметками времени.

    Можно добавить предиктивность: если игрок сейчас бежит прямо и прямо нет стены, то с бОльшей вероятностью в следующие пол-секунды он продолжит бежать.
    Ответ написан
    Комментировать
  • Как пишут обмен данными (сетевой движок) для компьютерных игр?

    twobomb
    @twobomb
    Какие известны хитрости, чтобы передавать меньше данных, не рискуя рассинхроном?

    Чем меньше тик рейт сервера, тем меньше данных. Одно дело динамичный шутер(батла на 130 человек), а другое дело кооп игра на 4 человек. В одних случая критичен высокий тик рейт в других нет. Хотя... умереть в батле через секунду после того как ты забежал за стену благое дело...
    Какие рассинхроны не критичны?

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

    Ну почитайте какие нибудь статьи вот например на хабре
    Мультиплеер в быстрых играх (части I, II)
    Мультиплеер в быстрых играх (Часть III: появление ...
    Мультиплеер в быстрых играх (Часть IV: Хэдшот! Пут...

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну что вы как дети?
    Каждый раз этот вечнозелёный вопрос обрастает гроздьями любопытных.
    Спарсить весь интернет мы хочем, а научиться пользоваться одним поисковым сервисом - не можем.
    Ответ написан
    Комментировать
  • Как преобразовать значение при использовании dataclass?

    Vindicar
    @Vindicar
    RTFM!
    Я в таких случаях создаю фабричный метод.
    @dataclass
    class Person:
        first_name: str
        last_name: str
        bdate: date
    
        @classmethod
        def make(cls, first_name: str, last_name: str, bdate: str) -> 'Person':
            _bdate = datetime.strptime(bdate, '%Y%m%d').date()
            return cls(first_name=first_name, last_name=last_name, bdate=_bdate)
    
    data = {
        'first_name': 'Adam', 
        'last_name': 'Smith', 
        'bdate': '20220617'
    }
    person = Person.make(**data)

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

    Но вообще это неправильное распределение обязанностей. Обязанность датакласса - хранить данные, а не менять их представление. За смену представления пусть отвечает тот код, который получает значение строки.
    Ответ написан
    Комментировать
  • Зачем задавать приватный модификатор доступа для свойств класса?

    Adamos
    @Adamos
    class VeryOpenOne
    {
    public $property;
    }
    $voo = new VeryOpenOne();
    $name = 'pro' . 'perty';
    $voo->$name = 'Пытаясь отрефакторить тот класс, ' .
      'ты хрен найдешь, что в этой строчке меняется эта переменная. ' .
      'Никакое самое умное IDE не поможет';
    Ответ написан
    1 комментарий
  • Как постоянно проверять бд на изменения, Flask?

    NeiroNx
    @NeiroNx
    Программист
    В бэкэнде пишите то что будет отдавать вам записи новее чем определеннная запись или дата-время. Во фронтэнде SetInterval и fetch на этот бэкэнд, и последняя запись в какой либо переменной. В бэк энде также должно быть ограничение по числу записей, отдаваемых впервые, чтобы всю базу не отдавать.
    Ответ написан
    1 комментарий
  • Как избавиться от слежки СМС?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Ну, начать надо с бессмертной фразы "какие ваши доказательства?" Ну то есть, пусть продемонстрирует, что кто-то может что-то читать, а не просто блаблакать.
    Разумеется, такие возможности есть, причем вполне себе легитимные. Например "МТС.Поиск" - сервис такой. В базовой версии отслеживает передвижение по городу, при установке агента на телефон - позволяет полностью удалено управлять им (в том числе прослушивать окружение через микрофон телефона). Для подключения к сервису достаточно бросить незаблокированный телефон - придет смс с запросом на согласие, ответить да - и вуаля :)
    Как проверить? Посмотреть, нет ли на телефоне агента. Если агента вроде нет, а доступ есть - сделать полный сброс телефона. Если не было рута, этого будет достаточно. Если рут был - лучше его перешить.
    Ответ написан
    4 комментария
  • Разница в доходах AdMob на iOS и Android?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Не смотрю видео. Не монетизирую через AdMob. Не публикую в App Store.
    Просто анализирую статистику из разных источников.

    Попробуйте загуглить
    1) Ios vs Android доля рынка по странам
    2) Toп стран по покупкам в сторах
    3) На каждый год можно найти статьи сколько всего денежек потрачено в сторах

    Подключить здравый смысл. Андроид - все ищут бесплатные (с рекламой)
    Яблоко - программы в основном платные
    Ответ написан
    1 комментарий
  • Как ограничить частоту нажатий кнопки?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Очевидно, запоминать куда-нибудь время последнего нажатия на кнопку и сравнивать его при очередном нажатии. Можно также при нажатии на кнопку убирать/изменять клавиатуру, но пользователь может успевать иногда нажать на кнопку 2-3 раза до исчезновения/изменения кнопки.
    Ответ написан
    6 комментариев
  • Калькулятор на Python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    У вас несколько раз повторяется одинаковая строка. Подумайте, как сделать, чтобы она не повторялась.
    Также надо добавить обработку неверного ввода (не чисел и не мат.операторов) и обработку деления на нуль.
    Ответ написан
    Комментировать
  • Как можно узнать типы данных которые может кушать класс?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Открыть документацию к классу и прочитать в ней. Если документации нет - открыть исходный код и посмотреть в нём.
    Ответ написан
    Комментировать