• Как избегать блокировки BD?

    @acwartz
    Тут должна быть ваша реклама.
    Как осуществляется доступ к базе данных? Потоки есть? как они работают с БД?
    SQLite это однопользовательская БД с одной точкой доступа. У неё нет понятия сессий и доступа к ней из разных потоков и тем более под разными учетными записями. Считайте что наливаете тысячи литров воды в бассеин через угольное ушко, используя сифон (воронку).
    и где весь стэк? хотяб по внутренностям пакета sqlite чтобы видеть что вы дергаете и с чем оно падает.
    Ответ написан
    Комментировать
  • Python как определить правильный падеж?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Вот выжимка из pytils-safe 0.3.2.

    Зачем ставить целую библиотеку (которая еще и написана через одно место)?

    def get_plural(amount, variants, absence=None):
        assert len(variants) == 3
        amount = abs(amount)
    
        if amount % 10 == 1 and amount % 100 != 11:
            variant = 0
        elif 2 <= amount % 10 <= 4 and (amount % 100 < 10 or amount % 100 >= 20):
            variant = 1
        else:
            variant = 2
    
        plural = variants[variant]
    
        if amount or absence is None:
            return "%d %s" % (amount, plural)
        else:
            return absence
    Ответ написан
    Комментировать
  • Как объединить aiogram и pyrogram?

    InternetMaster
    @InternetMaster
    Интернет
    Насчет использования pyrogram для бота и как клиент уже подсказали, но если все же нужно - то советую смотреть в сторону синхронных версий pyrogram. В текущих версиях - такое не поддерживается. Нужно либо использователь telethon (sync версию) либо pyrogram прошлых версий, когда он ещё не был асинхронным
    Ответ написан
    Комментировать
  • Как осуществить проверку подписки на канал?

    @Nikita235 Автор вопроса
    Решил, на AIOgram 3 моя проблема решается так:

    @router.callback_query(Text(text=['subscription_check_but_pressed']))
    async def check_subs(callback: CallbackQuery, bot: Bot):
        user_channel_status = await bot.get_chat_member(chat_id='@eqwe12eqw1qw', user_id=callback.from_user.id)
    
        if user_channel_status.status != 'left':
            await callback.answer('Спасибо за подписку!')
        else:
            await callback.answer('Для начала подпишись на наш канал')
    Ответ написан
    Комментировать
  • В каком месте программисту реально понадобиться знания дискретной математике?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Если пишите что-то посложнее формочек, то может и пригодится.

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

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

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

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

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

    А уж если вы разработчик компилятора или какого-нибудь медиа кодека, то там дискретка лезет из всех щелей (теория языков, формальные парсеры, дискретное преобразование Фурье).
    Ответ написан
    Комментировать
  • Что из себя представляет программист 3д графики?

    @McBernar
    Gl — это адская смесь из линейной алгебры и тригонометрии.

    При этом концепция работы с шейдерами невероятно проста — вы получаете на вход пиксель и должны вернуть его цвет обратно. Но есть одна особенность — эта функция знает только об одном пикселе, но ничего не знает о соседних. И вот эта особенность и создает то безумие, что творится внутри шейдера.

    Попробуйте, это как минимум интересно.
    Ответ написан
    Комментировать